From ea1a8a7e360f7ed674f4718593fa8137833126cc Mon Sep 17 00:00:00 2001 From: support Date: Mon, 20 Jun 2022 13:51:57 +0000 Subject: [PATCH] Built motion from commit ff88c200.|2.6.11 --- apidoc/api_project.js | 2 +- apidoc/api_project.json | 2 +- server/api/action/action.attributes.js | 18 + server/api/action/action.controller.js | 18 + server/api/action/action.model.js | 18 + server/api/action/action.rpc.js | 18 + server/api/action/index.js | 18 + .../analyticCustomReport.attributes.js | 18 + .../analyticCustomReport.controller.js | 18 + .../analyticCustomReport.model.js | 18 + .../analyticCustomReport.rpc.js | 18 + server/api/analyticCustomReport/index.js | 18 + .../analyticDefaultReport.attributes.js | 18 + .../analyticDefaultReport.controller.js | 18 + .../analyticDefaultReport.model.js | 18 + .../analyticDefaultReport.rpc.js | 18 + server/api/analyticDefaultReport/index.js | 18 + .../analyticExtractedReport.attributes.js | 18 + .../analyticExtractedReport.controller.js | 18 + .../analyticExtractedReport.model.js | 18 + .../analyticExtractedReport.rpc.js | 18 + server/api/analyticExtractedReport/index.js | 18 + .../analyticFieldReport.attributes.js | 18 + .../analyticFieldReport.controller.js | 18 + .../analyticFieldReport.model.js | 18 + .../analyticFieldReport/analyticFieldReport.rpc.js | 18 + server/api/analyticFieldReport/index.js | 18 + .../analyticMetric/analyticMetric.attributes.js | 18 + .../analyticMetric/analyticMetric.controller.js | 18 + server/api/analyticMetric/analyticMetric.model.js | 18 + server/api/analyticMetric/analyticMetric.rpc.js | 18 + server/api/analyticMetric/index.js | 18 + .../analyticTreeReport.attributes.js | 18 + .../analyticTreeReport.controller.js | 18 + .../analyticTreeReport/analyticTreeReport.model.js | 18 + .../analyticTreeReport/analyticTreeReport.rpc.js | 18 + server/api/analyticTreeReport/index.js | 18 + server/api/attachment/attachment.attributes.js | 18 + server/api/attachment/attachment.controller.js | 18 + server/api/attachment/attachment.model.js | 18 + server/api/attachment/attachment.rpc.js | 18 + server/api/attachment/index.js | 18 + .../authActiveDirectory.controller.js | 18 + server/api/authActiveDirectory/index.js | 18 + server/api/authGoogle/authGoogle.controller.js | 18 + server/api/authGoogle/index.js | 18 + server/api/authLocal/authLocal.controller.js | 18 + server/api/authLocal/index.js | 18 + server/api/automation/automation.attributes.js | 18 + server/api/automation/automation.controller.js | 18 + server/api/automation/automation.model.js | 18 + server/api/automation/automation.rpc.js | 18 + server/api/automation/index.js | 18 + server/api/campaign/campaign.attributes.js | 18 + server/api/campaign/campaign.controller.js | 18 + server/api/campaign/campaign.model.js | 18 + server/api/campaign/campaign.rpc.js | 18 + server/api/campaign/index.js | 18 + server/api/cannedAnswer/cannedAnswer.attributes.js | 18 + server/api/cannedAnswer/cannedAnswer.controller.js | 18 + server/api/cannedAnswer/cannedAnswer.model.js | 18 + server/api/cannedAnswer/cannedAnswer.rpc.js | 18 + server/api/cannedAnswer/index.js | 18 + server/api/cdr/cdr.attributes.js | 18 + server/api/cdr/cdr.controller.js | 18 + server/api/cdr/cdr.model.js | 18 + server/api/cdr/cdr.rpc.js | 18 + server/api/cdr/index.js | 18 + .../chatApplication/chatApplication.attributes.js | 18 + .../chatApplication/chatApplication.controller.js | 18 + .../api/chatApplication/chatApplication.model.js | 18 + server/api/chatApplication/chatApplication.rpc.js | 18 + server/api/chatApplication/index.js | 18 + server/api/chatGroup/chatGroup.attributes.js | 18 + server/api/chatGroup/chatGroup.controller.js | 18 + server/api/chatGroup/chatGroup.events.js | 18 + server/api/chatGroup/chatGroup.model.js | 18 + server/api/chatGroup/chatGroup.rpc.js | 18 + server/api/chatGroup/chatGroup.socket.js | 18 + server/api/chatGroup/index.js | 18 + .../chatInteraction/chatInteraction.attributes.js | 18 + .../chatInteraction/chatInteraction.controller.js | 18 + .../api/chatInteraction/chatInteraction.events.js | 18 + .../api/chatInteraction/chatInteraction.model.js | 18 + server/api/chatInteraction/chatInteraction.rpc.js | 18 + .../api/chatInteraction/chatInteraction.socket.js | 18 + server/api/chatInteraction/index.js | 18 + .../chatInternalMessage.attributes.js | 18 + .../chatInternalMessage.controller.js | 18 + .../chatInternalMessage.events.js | 18 + .../chatInternalMessage.model.js | 18 + .../chatInternalMessage/chatInternalMessage.rpc.js | 18 + .../chatInternalMessage.socket.js | 18 + server/api/chatInternalMessage/index.js | 18 + server/api/chatMessage/chatMessage.attributes.js | 18 + server/api/chatMessage/chatMessage.controller.js | 18 + server/api/chatMessage/chatMessage.events.js | 18 + server/api/chatMessage/chatMessage.model.js | 18 + server/api/chatMessage/chatMessage.rpc.js | 18 + server/api/chatMessage/chatMessage.socket.js | 18 + server/api/chatMessage/index.js | 18 + .../chatOfflineMessage.attributes.js | 18 + .../chatOfflineMessage.controller.js | 18 + .../chatOfflineMessage.events.js | 18 + .../chatOfflineMessage/chatOfflineMessage.model.js | 18 + .../chatOfflineMessage/chatOfflineMessage.rpc.js | 18 + server/api/chatOfflineMessage/index.js | 18 + .../chatProactiveAction.attributes.js | 18 + .../chatProactiveAction.controller.js | 18 + .../chatProactiveAction.model.js | 18 + .../chatProactiveAction/chatProactiveAction.rpc.js | 18 + server/api/chatProactiveAction/index.js | 18 + server/api/chatQueue/chatQueue.attributes.js | 18 + server/api/chatQueue/chatQueue.controller.js | 18 + server/api/chatQueue/chatQueue.events.js | 18 + server/api/chatQueue/chatQueue.model.js | 18 + server/api/chatQueue/chatQueue.rpc.js | 18 + server/api/chatQueue/chatQueue.socket.js | 18 + server/api/chatQueue/index.js | 18 + .../chatQueueReport/chatQueueReport.attributes.js | 18 + .../chatQueueReport/chatQueueReport.controller.js | 18 + .../api/chatQueueReport/chatQueueReport.model.js | 18 + server/api/chatQueueReport/chatQueueReport.rpc.js | 18 + server/api/chatQueueReport/index.js | 18 + .../chatTransferReport.attributes.js | 18 + .../chatTransferReport.controller.js | 18 + .../chatTransferReport/chatTransferReport.model.js | 18 + .../chatTransferReport/chatTransferReport.rpc.js | 18 + server/api/chatTransferReport/index.js | 18 + server/api/chatWebsite/chatWebsite.attributes.js | 18 + server/api/chatWebsite/chatWebsite.controller.js | 18 + server/api/chatWebsite/chatWebsite.events.js | 18 + server/api/chatWebsite/chatWebsite.model.js | 18 + server/api/chatWebsite/chatWebsite.rpc.js | 18 + server/api/chatWebsite/chatWebsite.socket.js | 18 + server/api/chatWebsite/index.js | 18 + server/api/client-side-logs.js | 18 + .../api/cloudProvider/cloudProvider.attributes.js | 18 + .../api/cloudProvider/cloudProvider.controller.js | 18 + server/api/cloudProvider/cloudProvider.model.js | 18 + server/api/cloudProvider/cloudProvider.oauth.js | 18 + server/api/cloudProvider/cloudProvider.rpc.js | 18 + server/api/cloudProvider/index.js | 18 + server/api/cmCompany/cmCompany.attributes.js | 18 + server/api/cmCompany/cmCompany.controller.js | 18 + server/api/cmCompany/cmCompany.model.js | 18 + server/api/cmCompany/cmCompany.rpc.js | 18 + server/api/cmCompany/index.js | 18 + server/api/cmContact/cmContact.attributes.js | 18 + server/api/cmContact/cmContact.controller.js | 18 + server/api/cmContact/cmContact.events.js | 18 + server/api/cmContact/cmContact.model.js | 18 + server/api/cmContact/cmContact.rpc.js | 18 + server/api/cmContact/cmContact.socket.js | 18 + server/api/cmContact/index.js | 18 + .../cmContactHasItem.attributes.js | 18 + .../cmContactHasItem.controller.js | 18 + .../api/cmContactHasItem/cmContactHasItem.model.js | 18 + .../api/cmContactHasItem/cmContactHasItem.rpc.js | 18 + server/api/cmContactHasItem/index.js | 18 + .../api/cmCustomField/cmCustomField.attributes.js | 18 + .../api/cmCustomField/cmCustomField.controller.js | 18 + server/api/cmCustomField/cmCustomField.model.js | 18 + server/api/cmCustomField/cmCustomField.rpc.js | 18 + server/api/cmCustomField/index.js | 18 + server/api/cmHopper/cmHopper.attributes.js | 18 + server/api/cmHopper/cmHopper.controller.js | 18 + server/api/cmHopper/cmHopper.model.js | 18 + server/api/cmHopper/cmHopper.rpc.js | 18 + server/api/cmHopper/index.js | 18 + .../cmHopperAdditionalPhone.attributes.js | 18 + .../cmHopperAdditionalPhone.controller.js | 18 + .../cmHopperAdditionalPhone.model.js | 18 + .../cmHopperAdditionalPhone.rpc.js | 18 + server/api/cmHopperAdditionalPhone/index.js | 18 + .../api/cmHopperBlack/cmHopperBlack.attributes.js | 18 + .../api/cmHopperBlack/cmHopperBlack.controller.js | 18 + server/api/cmHopperBlack/cmHopperBlack.model.js | 18 + server/api/cmHopperBlack/cmHopperBlack.rpc.js | 18 + server/api/cmHopperBlack/index.js | 18 + .../api/cmHopperFinal/cmHopperFinal.attributes.js | 18 + .../api/cmHopperFinal/cmHopperFinal.controller.js | 18 + server/api/cmHopperFinal/cmHopperFinal.model.js | 18 + server/api/cmHopperFinal/cmHopperFinal.rpc.js | 18 + server/api/cmHopperFinal/index.js | 18 + .../cmHopperHistory/cmHopperHistory.attributes.js | 18 + .../cmHopperHistory/cmHopperHistory.controller.js | 18 + .../api/cmHopperHistory/cmHopperHistory.model.js | 18 + server/api/cmHopperHistory/cmHopperHistory.rpc.js | 18 + server/api/cmHopperHistory/index.js | 18 + server/api/cmList/cmList.attributes.js | 18 + server/api/cmList/cmList.controller.js | 18 + server/api/cmList/cmList.events.js | 18 + server/api/cmList/cmList.model.js | 18 + server/api/cmList/cmList.rpc.js | 18 + server/api/cmList/cmList.socket.js | 18 + server/api/cmList/index.js | 18 + server/api/condition/condition.attributes.js | 18 + server/api/condition/condition.controller.js | 18 + server/api/condition/condition.model.js | 18 + server/api/condition/condition.rpc.js | 18 + server/api/condition/index.js | 18 + .../contactItemType/contactItemType.attributes.js | 18 + .../contactItemType/contactItemType.controller.js | 18 + .../api/contactItemType/contactItemType.model.js | 18 + server/api/contactItemType/contactItemType.rpc.js | 18 + server/api/contactItemType/index.js | 18 + server/api/dashboard/dashboard.attributes.js | 18 + server/api/dashboard/dashboard.controller.js | 18 + server/api/dashboard/dashboard.events.js | 18 + server/api/dashboard/dashboard.model.js | 18 + server/api/dashboard/dashboard.rpc.js | 18 + server/api/dashboard/dashboard.socket.js | 18 + server/api/dashboard/index.js | 18 + .../api/dashboardItem/dashboardItem.attributes.js | 18 + .../api/dashboardItem/dashboardItem.controller.js | 18 + server/api/dashboardItem/dashboardItem.events.js | 18 + server/api/dashboardItem/dashboardItem.model.js | 18 + server/api/dashboardItem/dashboardItem.rpc.js | 18 + server/api/dashboardItem/dashboardItem.socket.js | 18 + server/api/dashboardItem/index.js | 18 + server/api/disposition/disposition.attributes.js | 18 + server/api/disposition/disposition.controller.js | 18 + server/api/disposition/disposition.model.js | 18 + server/api/disposition/disposition.rpc.js | 18 + server/api/disposition/index.js | 18 + server/api/faxAccount/faxAccount.attributes.js | 18 + server/api/faxAccount/faxAccount.controller.js | 18 + server/api/faxAccount/faxAccount.events.js | 18 + server/api/faxAccount/faxAccount.model.js | 18 + server/api/faxAccount/faxAccount.rpc.js | 18 + server/api/faxAccount/faxAccount.socket.js | 18 + server/api/faxAccount/index.js | 18 + .../faxApplication/faxApplication.attributes.js | 18 + .../faxApplication/faxApplication.controller.js | 18 + server/api/faxApplication/faxApplication.model.js | 18 + server/api/faxApplication/faxApplication.rpc.js | 18 + server/api/faxApplication/index.js | 18 + .../faxInteraction/faxInteraction.attributes.js | 18 + .../faxInteraction/faxInteraction.controller.js | 18 + server/api/faxInteraction/faxInteraction.events.js | 18 + server/api/faxInteraction/faxInteraction.model.js | 18 + server/api/faxInteraction/faxInteraction.rpc.js | 18 + server/api/faxInteraction/faxInteraction.socket.js | 18 + server/api/faxInteraction/index.js | 18 + server/api/faxMessage/faxMessage.attributes.js | 18 + server/api/faxMessage/faxMessage.controller.js | 18 + server/api/faxMessage/faxMessage.events.js | 18 + server/api/faxMessage/faxMessage.model.js | 18 + server/api/faxMessage/faxMessage.rpc.js | 18 + server/api/faxMessage/faxMessage.socket.js | 18 + server/api/faxMessage/index.js | 18 + server/api/faxQueue/faxQueue.attributes.js | 18 + server/api/faxQueue/faxQueue.controller.js | 18 + server/api/faxQueue/faxQueue.events.js | 18 + server/api/faxQueue/faxQueue.model.js | 18 + server/api/faxQueue/faxQueue.rpc.js | 18 + server/api/faxQueue/faxQueue.socket.js | 18 + server/api/faxQueue/index.js | 18 + .../faxQueueReport/faxQueueReport.attributes.js | 18 + .../faxQueueReport/faxQueueReport.controller.js | 18 + server/api/faxQueueReport/faxQueueReport.model.js | 18 + server/api/faxQueueReport/faxQueueReport.rpc.js | 18 + server/api/faxQueueReport/index.js | 18 + .../faxTransferReport.attributes.js | 18 + .../faxTransferReport.controller.js | 18 + .../faxTransferReport/faxTransferReport.model.js | 18 + .../api/faxTransferReport/faxTransferReport.rpc.js | 18 + server/api/faxTransferReport/index.js | 18 + server/api/intDeskAccount/index.js | 18 + .../intDeskAccount/intDeskAccount.attributes.js | 18 + .../intDeskAccount/intDeskAccount.controller.js | 18 + server/api/intDeskAccount/intDeskAccount.model.js | 18 + server/api/intDeskAccount/intDeskAccount.rpc.js | 18 + server/api/intDeskConfiguration/index.js | 18 + .../intDeskConfiguration.attributes.js | 18 + .../intDeskConfiguration.controller.js | 18 + .../intDeskConfiguration.model.js | 18 + .../intDeskConfiguration.rpc.js | 18 + server/api/intDeskField/index.js | 18 + server/api/intDeskField/intDeskField.attributes.js | 18 + server/api/intDeskField/intDeskField.controller.js | 18 + server/api/intDeskField/intDeskField.model.js | 18 + server/api/intDeskField/intDeskField.rpc.js | 18 + server/api/intDynamics365Account/index.js | 18 + .../intDynamics365Account.attributes.js | 18 + .../intDynamics365Account.controller.js | 18 + .../intDynamics365Account.model.js | 18 + .../intDynamics365Account.rpc.js | 18 + server/api/intDynamics365Configuration/index.js | 18 + .../intDynamics365Configuration.attributes.js | 18 + .../intDynamics365Configuration.controller.js | 18 + .../intDynamics365Configuration.model.js | 18 + .../intDynamics365Configuration.rpc.js | 18 + server/api/intDynamics365Field/index.js | 18 + .../intDynamics365Field.attributes.js | 18 + .../intDynamics365Field.controller.js | 18 + .../intDynamics365Field.model.js | 18 + .../intDynamics365Field/intDynamics365Field.rpc.js | 18 + server/api/intFreshdeskAccount/index.js | 18 + .../intFreshdeskAccount.attributes.js | 18 + .../intFreshdeskAccount.controller.js | 18 + .../intFreshdeskAccount.model.js | 18 + .../intFreshdeskAccount/intFreshdeskAccount.rpc.js | 18 + server/api/intFreshdeskConfiguration/index.js | 18 + .../intFreshdeskConfiguration.attributes.js | 18 + .../intFreshdeskConfiguration.controller.js | 18 + .../intFreshdeskConfiguration.model.js | 18 + .../intFreshdeskConfiguration.rpc.js | 18 + server/api/intFreshdeskField/index.js | 18 + .../intFreshdeskField.attributes.js | 18 + .../intFreshdeskField.controller.js | 18 + .../intFreshdeskField/intFreshdeskField.model.js | 18 + .../api/intFreshdeskField/intFreshdeskField.rpc.js | 18 + server/api/intFreshsalesAccount/index.js | 18 + .../intFreshsalesAccount.attributes.js | 18 + .../intFreshsalesAccount.controller.js | 18 + .../intFreshsalesAccount.model.js | 18 + .../intFreshsalesAccount.rpc.js | 18 + server/api/intFreshsalesConfiguration/index.js | 18 + .../intFreshsalesConfiguration.attributes.js | 18 + .../intFreshsalesConfiguration.controller.js | 18 + .../intFreshsalesConfiguration.model.js | 18 + .../intFreshsalesConfiguration.rpc.js | 18 + server/api/intFreshsalesField/index.js | 18 + .../intFreshsalesField.attributes.js | 18 + .../intFreshsalesField.controller.js | 18 + .../intFreshsalesField/intFreshsalesField.model.js | 18 + .../intFreshsalesField/intFreshsalesField.rpc.js | 18 + server/api/intSalesforceAccount/index.js | 18 + .../intSalesforceAccount.attributes.js | 18 + .../intSalesforceAccount.controller.js | 18 + .../intSalesforceAccount.model.js | 18 + .../intSalesforceAccount.rpc.js | 18 + server/api/intSalesforceConfiguration/index.js | 18 + .../intSalesforceConfiguration.attributes.js | 18 + .../intSalesforceConfiguration.controller.js | 18 + .../intSalesforceConfiguration.model.js | 18 + .../intSalesforceConfiguration.rpc.js | 18 + server/api/intSalesforceField/index.js | 18 + .../intSalesforceField.attributes.js | 18 + .../intSalesforceField.controller.js | 18 + .../intSalesforceField/intSalesforceField.model.js | 18 + .../intSalesforceField/intSalesforceField.rpc.js | 18 + server/api/intServicenowAccount/index.js | 18 + .../intServicenowAccount.attributes.js | 18 + .../intServicenowAccount.controller.js | 18 + .../intServicenowAccount.model.js | 18 + .../intServicenowAccount.rpc.js | 18 + server/api/intServicenowConfiguration/index.js | 18 + .../intServicenowConfiguration.attributes.js | 18 + .../intServicenowConfiguration.controller.js | 18 + .../intServicenowConfiguration.model.js | 18 + .../intServicenowConfiguration.rpc.js | 18 + server/api/intServicenowField/index.js | 18 + .../intServicenowField.attributes.js | 18 + .../intServicenowField.controller.js | 18 + .../intServicenowField/intServicenowField.model.js | 18 + .../intServicenowField/intServicenowField.rpc.js | 18 + server/api/intSugarcrmAccount/index.js | 18 + .../intSugarcrmAccount.attributes.js | 18 + .../intSugarcrmAccount.controller.js | 18 + .../intSugarcrmAccount/intSugarcrmAccount.model.js | 18 + .../intSugarcrmAccount/intSugarcrmAccount.rpc.js | 18 + server/api/intSugarcrmConfiguration/index.js | 18 + .../intSugarcrmConfiguration.attributes.js | 18 + .../intSugarcrmConfiguration.controller.js | 18 + .../intSugarcrmConfiguration.model.js | 18 + .../intSugarcrmConfiguration.rpc.js | 18 + server/api/intSugarcrmField/index.js | 18 + .../intSugarcrmField.attributes.js | 18 + .../intSugarcrmField.controller.js | 18 + .../api/intSugarcrmField/intSugarcrmField.model.js | 18 + .../api/intSugarcrmField/intSugarcrmField.rpc.js | 18 + server/api/intVtigerAccount/index.js | 18 + .../intVtigerAccount.attributes.js | 18 + .../intVtigerAccount.controller.js | 18 + .../api/intVtigerAccount/intVtigerAccount.model.js | 18 + .../api/intVtigerAccount/intVtigerAccount.rpc.js | 18 + server/api/intVtigerConfiguration/index.js | 18 + .../intVtigerConfiguration.attributes.js | 18 + .../intVtigerConfiguration.controller.js | 18 + .../intVtigerConfiguration.model.js | 18 + .../intVtigerConfiguration.rpc.js | 18 + server/api/intVtigerField/index.js | 18 + .../intVtigerField/intVtigerField.attributes.js | 18 + .../intVtigerField/intVtigerField.controller.js | 18 + server/api/intVtigerField/intVtigerField.model.js | 18 + server/api/intVtigerField/intVtigerField.rpc.js | 18 + server/api/intZendeskAccount/index.js | 18 + .../intZendeskAccount.attributes.js | 18 + .../intZendeskAccount.controller.js | 18 + .../intZendeskAccount/intZendeskAccount.model.js | 18 + .../api/intZendeskAccount/intZendeskAccount.rpc.js | 18 + server/api/intZendeskConfiguration/index.js | 18 + .../intZendeskConfiguration.attributes.js | 18 + .../intZendeskConfiguration.controller.js | 18 + .../intZendeskConfiguration.model.js | 18 + .../intZendeskConfiguration.rpc.js | 18 + server/api/intZendeskField/index.js | 18 + .../intZendeskField/intZendeskField.attributes.js | 18 + .../intZendeskField/intZendeskField.controller.js | 18 + .../api/intZendeskField/intZendeskField.model.js | 18 + server/api/intZendeskField/intZendeskField.rpc.js | 18 + server/api/intZohoAccount/index.js | 18 + .../intZohoAccount/intZohoAccount.attributes.js | 18 + .../intZohoAccount/intZohoAccount.controller.js | 18 + server/api/intZohoAccount/intZohoAccount.model.js | 18 + server/api/intZohoAccount/intZohoAccount.rpc.js | 18 + server/api/intZohoConfiguration/index.js | 18 + .../intZohoConfiguration.attributes.js | 18 + .../intZohoConfiguration.controller.js | 18 + .../intZohoConfiguration.model.js | 18 + .../intZohoConfiguration.rpc.js | 18 + server/api/intZohoField/index.js | 18 + server/api/intZohoField/intZohoField.attributes.js | 18 + server/api/intZohoField/intZohoField.controller.js | 18 + server/api/intZohoField/intZohoField.model.js | 18 + server/api/intZohoField/intZohoField.rpc.js | 18 + server/api/integration/index.js | 18 + server/api/integration/integration.attributes.js | 18 + server/api/integration/integration.controller.js | 18 + server/api/integration/integration.model.js | 18 + server/api/integration/integration.rpc.js | 18 + server/api/integrationReport/index.js | 18 + .../integrationReport.attributes.js | 18 + .../integrationReport.controller.js | 18 + .../integrationReport/integrationReport.model.js | 18 + .../api/integrationReport/integrationReport.rpc.js | 18 + server/api/interval/index.js | 18 + server/api/interval/interval.attributes.js | 18 + server/api/interval/interval.controller.js | 18 + server/api/interval/interval.model.js | 18 + server/api/interval/interval.rpc.js | 18 + server/api/jira/index.js | 18 + server/api/jira/jira.controller.js | 18 + server/api/jscriptyAnswerReport/index.js | 18 + .../jscriptyAnswerReport.attributes.js | 18 + .../jscriptyAnswerReport.controller.js | 18 + .../jscriptyAnswerReport.model.js | 18 + .../jscriptyAnswerReport.rpc.js | 18 + server/api/jscriptyProject/index.js | 18 + .../jscriptyProject/jscriptyProject.attributes.js | 18 + .../jscriptyProject/jscriptyProject.controller.js | 18 + .../api/jscriptyProject/jscriptyProject.model.js | 18 + server/api/jscriptyProject/jscriptyProject.rpc.js | 18 + server/api/jscriptyQuestionReport/index.js | 18 + .../jscriptyQuestionReport.attributes.js | 18 + .../jscriptyQuestionReport.controller.js | 18 + .../jscriptyQuestionReport.model.js | 18 + .../jscriptyQuestionReport.rpc.js | 18 + server/api/jscriptySessionReport/index.js | 18 + .../jscriptySessionReport.attributes.js | 18 + .../jscriptySessionReport.controller.js | 18 + .../jscriptySessionReport.model.js | 18 + .../jscriptySessionReport.rpc.js | 18 + server/api/license/index.js | 18 + server/api/license/license.attributes.js | 18 + server/api/license/license.controller.js | 18 + server/api/license/license.model.js | 18 + server/api/license/license.rpc.js | 18 + server/api/mailAccount/index.js | 18 + server/api/mailAccount/mailAccount.attributes.js | 18 + server/api/mailAccount/mailAccount.controller.js | 18 + server/api/mailAccount/mailAccount.events.js | 18 + server/api/mailAccount/mailAccount.model.js | 18 + server/api/mailAccount/mailAccount.rpc.js | 18 + server/api/mailAccount/mailAccount.socket.js | 18 + server/api/mailApplication/index.js | 18 + .../mailApplication/mailApplication.attributes.js | 18 + .../mailApplication/mailApplication.controller.js | 18 + .../api/mailApplication/mailApplication.model.js | 18 + server/api/mailApplication/mailApplication.rpc.js | 18 + server/api/mailInteraction/index.js | 18 + .../mailInteraction/mailInteraction.attributes.js | 18 + .../mailInteraction/mailInteraction.controller.js | 18 + .../api/mailInteraction/mailInteraction.events.js | 18 + .../api/mailInteraction/mailInteraction.model.js | 18 + server/api/mailInteraction/mailInteraction.rpc.js | 18 + .../api/mailInteraction/mailInteraction.socket.js | 18 + server/api/mailMessage/index.js | 18 + server/api/mailMessage/mailMessage.attributes.js | 18 + server/api/mailMessage/mailMessage.controller.js | 18 + server/api/mailMessage/mailMessage.events.js | 18 + server/api/mailMessage/mailMessage.model.js | 18 + server/api/mailMessage/mailMessage.rpc.js | 18 + server/api/mailMessage/mailMessage.socket.js | 18 + server/api/mailQueue/index.js | 18 + server/api/mailQueue/mailQueue.attributes.js | 18 + server/api/mailQueue/mailQueue.controller.js | 18 + server/api/mailQueue/mailQueue.events.js | 18 + server/api/mailQueue/mailQueue.model.js | 18 + server/api/mailQueue/mailQueue.rpc.js | 18 + server/api/mailQueue/mailQueue.socket.js | 18 + server/api/mailQueueReport/index.js | 18 + .../mailQueueReport/mailQueueReport.attributes.js | 18 + .../mailQueueReport/mailQueueReport.controller.js | 18 + .../api/mailQueueReport/mailQueueReport.model.js | 18 + server/api/mailQueueReport/mailQueueReport.rpc.js | 18 + server/api/mailServerIn/index.js | 18 + server/api/mailServerIn/mailServerIn.attributes.js | 18 + server/api/mailServerIn/mailServerIn.model.js | 18 + server/api/mailServerIn/mailServerIn.rpc.js | 18 + server/api/mailServerOut/index.js | 18 + .../api/mailServerOut/mailServerOut.attributes.js | 18 + .../api/mailServerOut/mailServerOut.controller.js | 18 + server/api/mailServerOut/mailServerOut.model.js | 18 + server/api/mailServerOut/mailServerOut.rpc.js | 18 + server/api/mailSubstatus/index.js | 18 + .../api/mailSubstatus/mailSubstatus.attributes.js | 18 + .../api/mailSubstatus/mailSubstatus.controller.js | 18 + server/api/mailSubstatus/mailSubstatus.events.js | 18 + server/api/mailSubstatus/mailSubstatus.model.js | 18 + server/api/mailSubstatus/mailSubstatus.rpc.js | 18 + server/api/mailTransferReport/index.js | 18 + .../mailTransferReport.attributes.js | 18 + .../mailTransferReport.controller.js | 18 + .../mailTransferReport/mailTransferReport.model.js | 18 + .../mailTransferReport/mailTransferReport.rpc.js | 18 + server/api/memberReport/index.js | 18 + server/api/memberReport/memberReport.attributes.js | 18 + server/api/memberReport/memberReport.controller.js | 18 + server/api/memberReport/memberReport.model.js | 18 + server/api/memberReport/memberReport.rpc.js | 18 + server/api/migration/index.js | 18 + server/api/migration/migration.attributes.js | 18 + server/api/migration/migration.controller.js | 18 + server/api/migration/migration.model.js | 18 + server/api/migration/migration.rpc.js | 18 + server/api/network/index.js | 18 + server/api/network/network.attributes.js | 18 + server/api/network/network.controller.js | 18 + server/api/network/network.model.js | 18 + server/api/network/network.rpc.js | 18 + server/api/openchannelAccount/index.js | 18 + .../openchannelAccount.attributes.js | 18 + .../openchannelAccount.controller.js | 18 + .../openchannelAccount.events.js | 18 + .../openchannelAccount/openchannelAccount.model.js | 18 + .../openchannelAccount/openchannelAccount.rpc.js | 18 + .../openchannelAccount.socket.js | 18 + server/api/openchannelApplication/index.js | 18 + .../openchannelApplication.attributes.js | 18 + .../openchannelApplication.controller.js | 18 + .../openchannelApplication.model.js | 18 + .../openchannelApplication.rpc.js | 18 + server/api/openchannelInteraction/index.js | 18 + .../openchannelInteraction.attributes.js | 18 + .../openchannelInteraction.controller.js | 18 + .../openchannelInteraction.events.js | 18 + .../openchannelInteraction.model.js | 18 + .../openchannelInteraction.rpc.js | 18 + .../openchannelInteraction.socket.js | 18 + server/api/openchannelMessage/index.js | 18 + .../openchannelMessage.attributes.js | 18 + .../openchannelMessage.controller.js | 18 + .../openchannelMessage.events.js | 18 + .../openchannelMessage/openchannelMessage.model.js | 18 + .../openchannelMessage/openchannelMessage.rpc.js | 18 + .../openchannelMessage.socket.js | 18 + server/api/openchannelQueue/index.js | 18 + .../openchannelQueue.attributes.js | 18 + .../openchannelQueue.controller.js | 18 + .../openchannelQueue/openchannelQueue.events.js | 18 + .../api/openchannelQueue/openchannelQueue.model.js | 18 + .../api/openchannelQueue/openchannelQueue.rpc.js | 18 + .../openchannelQueue/openchannelQueue.socket.js | 18 + server/api/openchannelQueueReport/index.js | 18 + .../openchannelQueueReport.attributes.js | 18 + .../openchannelQueueReport.controller.js | 18 + .../openchannelQueueReport.model.js | 18 + .../openchannelQueueReport.rpc.js | 18 + server/api/openchannelTransferReport/index.js | 18 + .../openchannelTransferReport.attributes.js | 18 + .../openchannelTransferReport.controller.js | 18 + .../openchannelTransferReport.model.js | 18 + .../openchannelTransferReport.rpc.js | 18 + server/api/pause/index.js | 18 + server/api/pause/pause.attributes.js | 18 + server/api/pause/pause.controller.js | 18 + server/api/pause/pause.model.js | 18 + server/api/pause/pause.rpc.js | 18 + server/api/plugin/index.js | 18 + server/api/plugin/plugin.attributes.js | 18 + server/api/plugin/plugin.controller.js | 18 + server/api/plugin/plugin.events.js | 18 + server/api/plugin/plugin.model.js | 18 + server/api/plugin/plugin.rpc.js | 18 + server/api/plugin/plugin.socket.js | 18 + server/api/pm2/index.js | 18 + server/api/pm2/pm2.controller.js | 18 + server/api/realtime/index.js | 18 + server/api/realtime/realtime.controller.js | 18 + server/api/reportAgentPreview/index.js | 18 + .../reportAgentPreview.attributes.js | 18 + .../reportAgentPreview/reportAgentPreview.model.js | 18 + .../reportAgentPreview/reportAgentPreview.rpc.js | 18 + server/api/rpc/index.js | 18 + server/api/rpc/rpc.controller.js | 18 + server/api/schedule/index.js | 18 + server/api/schedule/schedule.attributes.js | 18 + server/api/schedule/schedule.controller.js | 18 + server/api/schedule/schedule.model.js | 18 + server/api/schedule/schedule.rpc.js | 18 + server/api/screenRecording/index.js | 18 + .../screenRecording/screenRecording.attributes.js | 18 + .../screenRecording/screenRecording.controller.js | 18 + .../api/screenRecording/screenRecording.model.js | 18 + server/api/screenRecording/screenRecording.rpc.js | 18 + server/api/setting/index.js | 18 + server/api/setting/setting.attributes.js | 18 + server/api/setting/setting.controller.js | 18 + server/api/setting/setting.model.js | 18 + server/api/setting/setting.rpc.js | 18 + server/api/smsAccount/index.js | 18 + server/api/smsAccount/smsAccount.attributes.js | 18 + server/api/smsAccount/smsAccount.controller.js | 18 + server/api/smsAccount/smsAccount.events.js | 18 + server/api/smsAccount/smsAccount.model.js | 18 + server/api/smsAccount/smsAccount.rpc.js | 18 + server/api/smsAccount/smsAccount.socket.js | 18 + server/api/smsApplication/index.js | 18 + .../smsApplication/smsApplication.attributes.js | 18 + .../smsApplication/smsApplication.controller.js | 18 + server/api/smsApplication/smsApplication.model.js | 18 + server/api/smsApplication/smsApplication.rpc.js | 18 + server/api/smsInteraction/index.js | 18 + .../smsInteraction/smsInteraction.attributes.js | 18 + .../smsInteraction/smsInteraction.controller.js | 18 + server/api/smsInteraction/smsInteraction.events.js | 18 + server/api/smsInteraction/smsInteraction.model.js | 18 + server/api/smsInteraction/smsInteraction.rpc.js | 18 + server/api/smsInteraction/smsInteraction.socket.js | 18 + server/api/smsMessage/index.js | 18 + server/api/smsMessage/smsMessage.attributes.js | 18 + server/api/smsMessage/smsMessage.controller.js | 18 + server/api/smsMessage/smsMessage.events.js | 18 + server/api/smsMessage/smsMessage.model.js | 18 + server/api/smsMessage/smsMessage.rpc.js | 18 + server/api/smsMessage/smsMessage.socket.js | 18 + server/api/smsQueue/index.js | 18 + server/api/smsQueue/smsQueue.attributes.js | 18 + server/api/smsQueue/smsQueue.controller.js | 18 + server/api/smsQueue/smsQueue.events.js | 18 + server/api/smsQueue/smsQueue.model.js | 18 + server/api/smsQueue/smsQueue.rpc.js | 18 + server/api/smsQueue/smsQueue.socket.js | 18 + server/api/smsQueueReport/index.js | 18 + .../smsQueueReport/smsQueueReport.attributes.js | 18 + .../smsQueueReport/smsQueueReport.controller.js | 18 + server/api/smsQueueReport/smsQueueReport.model.js | 18 + server/api/smsQueueReport/smsQueueReport.rpc.js | 18 + server/api/smsTransferReport/index.js | 18 + .../smsTransferReport.attributes.js | 18 + .../smsTransferReport.controller.js | 18 + .../smsTransferReport/smsTransferReport.model.js | 18 + .../api/smsTransferReport/smsTransferReport.rpc.js | 18 + server/api/sound/index.js | 18 + server/api/sound/sound.attributes.js | 18 + server/api/sound/sound.controller.js | 18 + server/api/sound/sound.model.js | 18 + server/api/sound/sound.rpc.js | 18 + server/api/squareMessage/index.js | 18 + .../api/squareMessage/squareMessage.attributes.js | 18 + .../api/squareMessage/squareMessage.controller.js | 18 + server/api/squareMessage/squareMessage.model.js | 18 + server/api/squareMessage/squareMessage.rpc.js | 18 + server/api/squareOdbc/index.js | 18 + server/api/squareOdbc/squareOdbc.attributes.js | 18 + server/api/squareOdbc/squareOdbc.controller.js | 18 + server/api/squareOdbc/squareOdbc.model.js | 18 + server/api/squareOdbc/squareOdbc.rpc.js | 18 + server/api/squareProject/index.js | 18 + .../api/squareProject/squareProject.attributes.js | 18 + .../api/squareProject/squareProject.controller.js | 18 + server/api/squareProject/squareProject.events.js | 18 + server/api/squareProject/squareProject.model.js | 18 + server/api/squareProject/squareProject.rpc.js | 18 + server/api/squareProject/squareProject.socket.js | 18 + server/api/squareRecording/index.js | 18 + .../squareRecording/squareRecording.attributes.js | 18 + .../squareRecording/squareRecording.controller.js | 18 + .../api/squareRecording/squareRecording.model.js | 18 + server/api/squareRecording/squareRecording.rpc.js | 18 + server/api/squareReport/index.js | 18 + server/api/squareReport/squareReport.attributes.js | 18 + server/api/squareReport/squareReport.controller.js | 18 + server/api/squareReport/squareReport.model.js | 18 + server/api/squareReport/squareReport.rpc.js | 18 + server/api/squareReportDetail/index.js | 18 + .../squareReportDetail.attributes.js | 18 + .../squareReportDetail.controller.js | 18 + .../squareReportDetail/squareReportDetail.model.js | 18 + .../squareReportDetail/squareReportDetail.rpc.js | 18 + server/api/system/index.js | 18 + server/api/system/system.controller.js | 18 + server/api/tag/index.js | 18 + server/api/tag/tag.attributes.js | 18 + server/api/tag/tag.controller.js | 18 + server/api/tag/tag.model.js | 18 + server/api/tag/tag.rpc.js | 18 + server/api/team/index.js | 18 + server/api/team/team.attributes.js | 18 + server/api/team/team.controller.js | 18 + server/api/team/team.events.js | 18 + server/api/team/team.model.js | 18 + server/api/team/team.rpc.js | 18 + server/api/team/team.socket.js | 18 + .../teamVoicePrefix/teamVoicePrefix.attributes.js | 18 + .../api/teamVoicePrefix/teamVoicePrefix.model.js | 18 + server/api/teamVoiceQueue/index.js | 18 + .../teamVoiceQueue/teamVoiceQueue.attributes.js | 18 + server/api/teamVoiceQueue/teamVoiceQueue.model.js | 18 + server/api/teamVoiceQueue/teamVoiceQueue.rpc.js | 18 + server/api/template/index.js | 18 + server/api/template/template.attributes.js | 18 + server/api/template/template.controller.js | 18 + server/api/template/template.model.js | 18 + server/api/template/template.rpc.js | 18 + server/api/trigger/index.js | 18 + server/api/trigger/trigger.attributes.js | 18 + server/api/trigger/trigger.controller.js | 18 + server/api/trigger/trigger.model.js | 18 + server/api/trigger/trigger.rpc.js | 18 + server/api/trunk/index.js | 18 + server/api/trunk/trunk.attributes.js | 18 + server/api/trunk/trunk.controller.js | 18 + server/api/trunk/trunk.model.js | 18 + server/api/trunk/trunk.rpc.js | 18 + server/api/user-setting/index.js | 18 + server/api/user-setting/user-setting.attributes.js | 18 + server/api/user-setting/user-setting.controller.js | 18 + server/api/user-setting/user-setting.events.js | 18 + server/api/user-setting/user-setting.model.js | 18 + server/api/user-setting/user-setting.socket.js | 18 + server/api/user/index.js | 18 + server/api/user/user.attributes.js | 18 + server/api/user/user.controller.js | 18 + server/api/user/user.events.js | 18 + server/api/user/user.model.js | 18 + server/api/user/user.rpc.js | 18 + server/api/user/user.socket.js | 18 + server/api/userChatQueue/index.js | 18 + .../api/userChatQueue/userChatQueue.attributes.js | 18 + server/api/userChatQueue/userChatQueue.model.js | 18 + server/api/userChatQueue/userChatQueue.rpc.js | 18 + server/api/userFaxQueue/index.js | 18 + server/api/userFaxQueue/userFaxQueue.attributes.js | 18 + server/api/userFaxQueue/userFaxQueue.model.js | 18 + server/api/userFaxQueue/userFaxQueue.rpc.js | 18 + server/api/userMailQueue/index.js | 18 + .../api/userMailQueue/userMailQueue.attributes.js | 18 + server/api/userMailQueue/userMailQueue.model.js | 18 + server/api/userMailQueue/userMailQueue.rpc.js | 18 + server/api/userNotification/index.js | 18 + .../userNotification.attributes.js | 18 + .../userNotification.controller.js | 18 + .../userNotification/userNotification.events.js | 18 + .../api/userNotification/userNotification.model.js | 18 + .../api/userNotification/userNotification.rpc.js | 18 + .../userNotification/userNotification.socket.js | 18 + server/api/userOpenchannelQueue/index.js | 18 + .../userOpenchannelQueue.attributes.js | 18 + .../userOpenchannelQueue.model.js | 18 + .../userOpenchannelQueue.rpc.js | 18 + server/api/userProfile/index.js | 18 + server/api/userProfile/userProfile.attributes.js | 18 + server/api/userProfile/userProfile.controller.js | 18 + server/api/userProfile/userProfile.events.js | 18 + server/api/userProfile/userProfile.model.js | 18 + server/api/userProfile/userProfile.rpc.js | 18 + server/api/userProfile/userProfile.socket.js | 18 + server/api/userProfileResource/index.js | 18 + .../userProfileResource.attributes.js | 18 + .../userProfileResource.controller.js | 18 + .../userProfileResource.model.js | 18 + .../userProfileResource/userProfileResource.rpc.js | 18 + server/api/userProfileSection/index.js | 18 + .../userProfileSection.attributes.js | 18 + .../userProfileSection.controller.js | 18 + .../userProfileSection/userProfileSection.model.js | 18 + .../userProfileSection/userProfileSection.rpc.js | 18 + server/api/userSmsQueue/index.js | 18 + server/api/userSmsQueue/userSmsQueue.attributes.js | 18 + server/api/userSmsQueue/userSmsQueue.model.js | 18 + server/api/userSmsQueue/userSmsQueue.rpc.js | 18 + .../userVoicePrefix/userVoicePrefix.attributes.js | 18 + .../api/userVoicePrefix/userVoicePrefix.model.js | 18 + server/api/userVoiceQueue/index.js | 18 + .../userVoiceQueue/userVoiceQueue.attributes.js | 18 + server/api/userVoiceQueue/userVoiceQueue.model.js | 18 + server/api/userVoiceQueue/userVoiceQueue.rpc.js | 18 + server/api/userVoiceQueueRt/index.js | 18 + .../userVoiceQueueRt.attributes.js | 18 + .../userVoiceQueueRt/userVoiceQueueRt.events.js | 18 + .../api/userVoiceQueueRt/userVoiceQueueRt.model.js | 18 + .../api/userVoiceQueueRt/userVoiceQueueRt.rpc.js | 18 + .../userVoiceQueueRt/userVoiceQueueRt.socket.js | 18 + server/api/userWhatsappQueue/index.js | 18 + .../userWhatsappQueue.attributes.js | 18 + .../userWhatsappQueue/userWhatsappQueue.model.js | 18 + .../api/userWhatsappQueue/userWhatsappQueue.rpc.js | 18 + server/api/variable/index.js | 18 + server/api/variable/variable.attributes.js | 18 + server/api/variable/variable.controller.js | 18 + server/api/variable/variable.model.js | 18 + server/api/variable/variable.rpc.js | 18 + server/api/version/index.js | 18 + server/api/version/version.controller.js | 18 + server/api/voiceAgentReport/index.js | 18 + .../voiceAgentReport.attributes.js | 18 + .../voiceAgentReport.controller.js | 18 + .../api/voiceAgentReport/voiceAgentReport.model.js | 18 + .../api/voiceAgentReport/voiceAgentReport.rpc.js | 18 + server/api/voiceCallReport/index.js | 18 + .../voiceCallReport/voiceCallReport.attributes.js | 18 + .../voiceCallReport/voiceCallReport.controller.js | 18 + .../api/voiceCallReport/voiceCallReport.model.js | 18 + server/api/voiceCallReport/voiceCallReport.rpc.js | 18 + server/api/voiceChanSpy/index.js | 18 + server/api/voiceChanSpy/voiceChanSpy.attributes.js | 18 + server/api/voiceChanSpy/voiceChanSpy.controller.js | 18 + server/api/voiceChanSpy/voiceChanSpy.model.js | 18 + server/api/voiceChanSpy/voiceChanSpy.rpc.js | 18 + server/api/voiceContext/index.js | 18 + server/api/voiceContext/voiceContext.attributes.js | 18 + server/api/voiceContext/voiceContext.controller.js | 18 + server/api/voiceContext/voiceContext.model.js | 18 + server/api/voiceContext/voiceContext.rpc.js | 18 + server/api/voiceDialReport/index.js | 18 + .../voiceDialReport/voiceDialReport.attributes.js | 18 + .../voiceDialReport/voiceDialReport.controller.js | 18 + .../api/voiceDialReport/voiceDialReport.model.js | 18 + server/api/voiceDialReport/voiceDialReport.rpc.js | 18 + server/api/voiceExtension/index.js | 18 + .../voiceExtension/voiceExtension.attributes.js | 18 + .../voiceExtension/voiceExtension.controller.js | 18 + server/api/voiceExtension/voiceExtension.events.js | 18 + server/api/voiceExtension/voiceExtension.model.js | 18 + server/api/voiceExtension/voiceExtension.rpc.js | 18 + server/api/voiceExtension/voiceExtension.socket.js | 18 + server/api/voiceMail/index.js | 18 + server/api/voiceMail/voiceMail.attributes.js | 18 + server/api/voiceMail/voiceMail.controller.js | 18 + server/api/voiceMail/voiceMail.model.js | 18 + server/api/voiceMail/voiceMail.rpc.js | 18 + server/api/voiceMailMessage/index.js | 18 + .../voiceMailMessage.attributes.js | 18 + .../voiceMailMessage.controller.js | 18 + .../api/voiceMailMessage/voiceMailMessage.model.js | 18 + .../api/voiceMailMessage/voiceMailMessage.rpc.js | 18 + server/api/voiceMusicOnHold/index.js | 18 + .../voiceMusicOnHold.attributes.js | 18 + .../voiceMusicOnHold.controller.js | 18 + .../api/voiceMusicOnHold/voiceMusicOnHold.model.js | 18 + .../api/voiceMusicOnHold/voiceMusicOnHold.rpc.js | 18 + server/api/voicePrefix/index.js | 18 + server/api/voicePrefix/voicePrefix.attributes.js | 18 + server/api/voicePrefix/voicePrefix.controller.js | 18 + server/api/voicePrefix/voicePrefix.events.js | 18 + server/api/voicePrefix/voicePrefix.model.js | 18 + server/api/voicePrefix/voicePrefix.rpc.js | 18 + server/api/voicePrefix/voicePrefix.socket.js | 18 + server/api/voiceQueue/index.js | 18 + server/api/voiceQueue/voiceQueue.attributes.js | 18 + server/api/voiceQueue/voiceQueue.controller.js | 18 + server/api/voiceQueue/voiceQueue.events.js | 18 + server/api/voiceQueue/voiceQueue.model.js | 18 + server/api/voiceQueue/voiceQueue.rpc.js | 18 + server/api/voiceQueue/voiceQueue.socket.js | 18 + server/api/voiceQueueReport/index.js | 18 + .../voiceQueueReport.attributes.js | 18 + .../voiceQueueReport.controller.js | 18 + .../voiceQueueReport/voiceQueueReport.events.js | 18 + .../api/voiceQueueReport/voiceQueueReport.model.js | 18 + .../api/voiceQueueReport/voiceQueueReport.rpc.js | 18 + .../voiceQueueReport/voiceQueueReport.socket.js | 18 + server/api/voiceQueuesLog/index.js | 18 + .../voiceQueuesLog/voiceQueuesLog.attributes.js | 18 + .../voiceQueuesLog/voiceQueuesLog.controller.js | 18 + server/api/voiceQueuesLog/voiceQueuesLog.model.js | 18 + server/api/voiceQueuesLog/voiceQueuesLog.rpc.js | 18 + server/api/voiceRecording/index.js | 18 + .../voiceRecording/voiceRecording.attributes.js | 18 + .../voiceRecording/voiceRecording.controller.js | 18 + server/api/voiceRecording/voiceRecording.model.js | 18 + server/api/voiceRecording/voiceRecording.rpc.js | 18 + server/api/voiceTransferReport/index.js | 18 + .../voiceTransferReport.attributes.js | 18 + .../voiceTransferReport.controller.js | 18 + .../voiceTransferReport.model.js | 18 + .../voiceTransferReport/voiceTransferReport.rpc.js | 18 + server/api/webbar/index.js | 18 + server/api/webbar/webbar.controller.js | 18 + server/api/whatsappAccount/index.js | 18 + .../whatsappAccount/whatsappAccount.attributes.js | 18 + .../whatsappAccount/whatsappAccount.controller.js | 18 + .../api/whatsappAccount/whatsappAccount.events.js | 18 + .../api/whatsappAccount/whatsappAccount.model.js | 18 + server/api/whatsappAccount/whatsappAccount.rpc.js | 18 + .../api/whatsappAccount/whatsappAccount.socket.js | 18 + server/api/whatsappApplication/index.js | 18 + .../whatsappApplication.attributes.js | 18 + .../whatsappApplication.controller.js | 18 + .../whatsappApplication.model.js | 18 + .../whatsappApplication/whatsappApplication.rpc.js | 18 + server/api/whatsappInteraction/index.js | 18 + .../whatsappInteraction.attributes.js | 18 + .../whatsappInteraction.controller.js | 18 + .../whatsappInteraction.events.js | 18 + .../whatsappInteraction.model.js | 18 + .../whatsappInteraction/whatsappInteraction.rpc.js | 18 + .../whatsappInteraction.socket.js | 18 + server/api/whatsappMessage/index.js | 18 + .../whatsappMessage/whatsappMessage.attributes.js | 18 + .../whatsappMessage/whatsappMessage.controller.js | 18 + .../api/whatsappMessage/whatsappMessage.events.js | 18 + .../api/whatsappMessage/whatsappMessage.model.js | 18 + server/api/whatsappMessage/whatsappMessage.rpc.js | 18 + .../api/whatsappMessage/whatsappMessage.socket.js | 18 + server/api/whatsappQueue/index.js | 18 + .../api/whatsappQueue/whatsappQueue.attributes.js | 18 + .../api/whatsappQueue/whatsappQueue.controller.js | 18 + server/api/whatsappQueue/whatsappQueue.events.js | 18 + server/api/whatsappQueue/whatsappQueue.model.js | 18 + server/api/whatsappQueue/whatsappQueue.rpc.js | 18 + server/api/whatsappQueue/whatsappQueue.socket.js | 18 + server/api/whatsappQueueReport/index.js | 18 + .../whatsappQueueReport.attributes.js | 18 + .../whatsappQueueReport.controller.js | 18 + .../whatsappQueueReport.model.js | 18 + .../whatsappQueueReport/whatsappQueueReport.rpc.js | 18 + server/api/whatsappTransferReport/index.js | 18 + .../whatsappTransferReport.attributes.js | 18 + .../whatsappTransferReport.controller.js | 18 + .../whatsappTransferReport.model.js | 18 + .../whatsappTransferReport.rpc.js | 18 + server/app.js | 18 + server/components/auth/service.js | 18 + server/components/contacts/index.js | 18 + server/components/contacts/sql-utils.js | 18 + server/components/encryptor/index.js | 18 + server/components/export/csv.js | 18 + .../components/export/fonts/arial-bold-italic.ttf | Bin 0 -> 226748 bytes server/components/export/fonts/arial-bold.ttf | Bin 0 -> 352224 bytes server/components/export/fonts/arial-italic.ttf | Bin 0 -> 207808 bytes server/components/export/fonts/arial-regular.ttf | Bin 0 -> 23275812 bytes server/components/export/pdf.js | 18 + server/components/export/xlsx.js | 18 + server/components/extensions/rewrite.js | 18 + server/components/import/cm/csv.js | 18 + server/components/import/cm/csv2.js | 18 + server/components/import/cm/csvUpdates.js | 18 + server/components/integrations/configuration.js | 18 + server/components/interaction/service.js | 18 + server/components/interaction/sql-utils.js | 18 + .../components/interaction/update-interaction.js | 18 + server/components/interaction/utils.js | 18 + server/components/license/service.js | 18 + server/components/parsers/advancedSearch.js | 18 + server/components/parsers/qs.js | 18 + server/components/realtime/agents.js | 18 + server/components/realtime/queues.js | 18 + server/config/environment/development.js | 90 + server/config/environment/index.js | 49 + server/config/environment/shared.js | 2793 ++++++++++++++++++++ server/config/express.js | 18 + server/config/license/hardware.js | 18 + server/config/license/index.js | 18 + server/config/license/util.js | 18 + server/config/local.env.js | 18 + server/config/logger.js | 18 + server/config/pm2/config.js | 18 + server/config/pm2/index.js | 18 + server/config/schedule/chat.js | 18 + server/config/schedule/cloud-provider.js | 18 + server/config/schedule/index.js | 18 + server/config/schedule/transcribe.js | 18 + server/config/schedule/whatsapp.js | 18 + server/config/seedContact.js | 18 + server/config/seedDB/analyticReports.js | 67 + server/config/seedDB/analyticTreeReports.js | 50 + server/config/seedDB/chanspy.js | 44 + server/config/seedDB/companies.js | 35 + server/config/seedDB/contacts.js | 59 + server/config/seedDB/dispositions.js | 32 + server/config/seedDB/index.js | 70 + server/config/seedDB/intervals.js | 69 + .../seedDB/jscripty/customerSatisfation.json | 476 ++++ server/config/seedDB/jscriptyProjects.js | 34 + server/config/seedDB/lists.js | 32 + server/config/seedDB/mailAccounts.js | 73 + server/config/seedDB/mailSubstatuses.js | 26 + server/config/seedDB/migrations.js | 19 + server/config/seedDB/pauses.js | 28 + server/config/seedDB/report/default.js | 543 ++++ server/config/seedDB/report/fields.js | 2353 +++++++++++++++++ server/config/seedDB/report/index.js | 6 + server/config/seedDB/sounds.js | 118 + server/config/seedDB/squareOdbc.js | 25 + server/config/seedDB/squareProjects.js | 59 + server/config/seedDB/tags.js | 46 + server/config/seedDB/teams.js | 29 + server/config/seedDB/tree/index.js | 128 + server/config/seedDB/trunks.js | 26 + server/config/seedDB/userProfiles.js | 25 + server/config/seedDB/users.js | 49 + server/config/seedDB/variables.js | 108 + server/config/seedDB/voiceContexts.js | 51 + server/config/seedDB/voiceExtensions.js | 444 ++++ server/config/seedDB/voiceMusicOnHold.js | 47 + server/config/seedDB/voiceQueues.js | 98 + server/config/seedDB/xml/AgentManagement.xml | 136 + server/config/seedDB/xml/AutoAttendant.xml | 65 + server/config/seedDB/xml/CSI.xml | 35 + server/config/seedDB/xml/Orders.xml | 70 + server/config/seedDB/xml/Survey.xml | 51 + server/config/seedUsers.js | 18 + server/config/socketio.js | 18 + server/config/triggers/index.js | 18 + server/config/utils.js | 18 + server/errors/api.js | 18 + server/errors/index.js | 18 + server/files/chat/iframe.ejs | 390 +++ server/files/images/avatars/customer_avatar.png | Bin 0 -> 3439 bytes server/files/images/avatars/default_avatar.png | Bin 0 -> 5172 bytes server/files/images/avatars/system_avatar.png | Bin 0 -> 3252 bytes server/files/images/logos/default_favicon.ico | Bin 0 -> 15086 bytes server/files/images/logos/default_loginlogo.svg | 71 + server/files/images/logos/default_logo.svg | 32 + server/files/images/logos/default_preferred.png | Bin 0 -> 28558 bytes server/files/images/logos/default_profile.png | Bin 0 -> 12999 bytes server/files/moh/noice/noice.wav | Bin 0 -> 891690 bytes server/files/moh/wait/wait.wav | Bin 0 -> 730244 bytes .../converted/agentmanagement-action-failure.wav | Bin 0 -> 100924 bytes .../sounds/converted/agentmanagement-login.wav | Bin 0 -> 24704 bytes .../sounds/converted/agentmanagement-logout.wav | Bin 0 -> 28048 bytes .../sounds/converted/agentmanagement-menu.wav | Bin 0 -> 120292 bytes .../sounds/converted/agentmanagement-pause.wav | Bin 0 -> 25540 bytes .../sounds/converted/agentmanagement-unpause.wav | Bin 0 -> 28466 bytes server/files/sounds/converted/order-elaborated.wav | Bin 0 -> 82990 bytes server/files/sounds/converted/order-number.wav | Bin 0 -> 89494 bytes server/files/sounds/converted/order-shipped.wav | Bin 0 -> 26376 bytes server/files/sounds/converted/rate-call.wav | Bin 0 -> 119216 bytes server/files/sounds/converted/thanx.wav | Bin 0 -> 26070 bytes server/files/sounds/converted/welcome-acme.wav | Bin 0 -> 126280 bytes .../original/agentmanagement-action-failure.wav | Bin 0 -> 100924 bytes .../sounds/original/agentmanagement-login.mp3 | Bin 0 -> 11930 bytes .../sounds/original/agentmanagement-logout.mp3 | Bin 0 -> 12975 bytes .../files/sounds/original/agentmanagement-menu.wav | Bin 0 -> 120292 bytes .../sounds/original/agentmanagement-pause.mp3 | Bin 0 -> 12191 bytes .../sounds/original/agentmanagement-unpause.mp3 | Bin 0 -> 13106 bytes server/files/sounds/original/order-elaborated.wav | Bin 0 -> 82990 bytes server/files/sounds/original/order-number.wav | Bin 0 -> 89494 bytes server/files/sounds/original/order-shipped.wav | Bin 0 -> 26376 bytes server/files/sounds/original/rate-call.wav | Bin 0 -> 119216 bytes server/files/sounds/original/thanx.wav | Bin 0 -> 26070 bytes server/files/sounds/original/welcome-acme.wav | Bin 0 -> 126280 bytes server/files/templates/chatOfflineMessage.ejs | 16 + server/files/templates/context.ejs | 5 + server/files/templates/network.ejs | 3 + server/files/templates/registry.ejs | 5 + server/files/templates/stun_multiple.ejs | 8 + server/files/templates/trunk.ejs | 30 + server/files/templates/turn_multiple.ejs | 14 + server/migrations/2.0.12.js | 8 + server/migrations/2.0.13.js | 70 + server/migrations/2.0.14.js | 8 + server/migrations/2.0.15.js | 8 + server/migrations/2.0.16.js | 8 + server/migrations/2.0.17.js | 8 + server/migrations/2.0.18.js | 8 + server/migrations/2.0.19.js | 8 + server/migrations/2.0.20.js | 70 + server/migrations/2.0.21.js | 81 + server/migrations/2.0.22.js | 78 + server/migrations/2.0.23.js | 97 + server/migrations/2.0.24.js | 69 + server/migrations/2.0.25.js | 76 + server/migrations/2.0.26.js | 92 + server/migrations/2.0.27.js | 8 + server/migrations/2.0.28.js | 8 + server/migrations/2.0.29.js | 380 +++ server/migrations/2.0.30.js | 141 + server/migrations/2.0.31.js | 194 ++ server/migrations/2.0.32.js | 8 + server/migrations/2.0.33.js | 243 ++ server/migrations/2.0.34.js | 412 +++ server/migrations/2.0.35.js | 326 +++ server/migrations/2.0.36.js | 140 + server/migrations/2.0.37.js | 149 ++ server/migrations/2.0.38.js | 171 ++ server/migrations/2.0.39.js | 236 ++ server/migrations/2.0.40.js | 8 + server/migrations/2.0.41.js | 167 ++ server/migrations/2.0.42.js | 192 ++ server/migrations/2.0.43.js | 135 + server/migrations/2.0.44.js | 247 ++ server/migrations/2.0.45.js | 8 + server/migrations/2.0.46.js | 165 ++ server/migrations/2.0.47.js | 176 ++ server/migrations/2.0.48.js | 211 ++ server/migrations/2.0.49.js | 210 ++ server/migrations/2.0.50.js | 154 ++ server/migrations/2.0.51.js | 276 ++ server/migrations/2.0.52.js | 243 ++ server/migrations/2.0.53.js | 165 ++ server/migrations/2.0.54.js | 209 ++ server/migrations/2.0.55.js | 166 ++ server/migrations/2.0.56.js | 240 ++ server/migrations/2.0.57.js | 168 ++ server/migrations/2.0.58.js | 181 ++ server/migrations/2.0.59.js | 244 ++ server/migrations/2.0.60.js | 240 ++ server/migrations/2.0.61.js | 143 + server/migrations/2.0.62.js | 176 ++ server/migrations/2.0.63.js | 253 ++ server/migrations/2.0.64.js | 188 ++ server/migrations/2.0.65.js | 235 ++ server/migrations/2.0.66.js | 246 ++ server/migrations/2.0.67.js | 298 +++ server/migrations/2.0.68.js | 183 ++ server/migrations/2.0.69.js | 242 ++ server/migrations/2.0.70.js | 174 ++ server/migrations/2.0.71.js | 300 +++ server/migrations/2.0.72.js | 166 ++ server/migrations/2.0.73.js | 189 ++ server/migrations/2.0.74.js | 156 ++ server/migrations/2.0.75.js | 156 ++ server/migrations/2.0.76.js | 176 ++ server/migrations/2.0.77.js | 177 ++ server/migrations/2.0.78.js | 160 ++ server/migrations/2.0.79.js | 171 ++ server/migrations/2.0.80.js | 176 ++ server/migrations/2.0.81.js | 199 ++ server/migrations/2.0.82.js | 175 ++ server/migrations/2.0.83.js | 195 ++ server/migrations/2.0.84.js | 165 ++ server/migrations/2.1.0.js | 776 ++++++ server/migrations/2.2.0.js | 178 ++ server/migrations/2.2.1.js | 165 ++ server/migrations/2.2.2.js | 165 ++ server/migrations/2.2.3.js | 175 ++ server/migrations/2.2.4.js | 175 ++ server/migrations/2.2.5.js | 165 ++ server/migrations/2.2.6.js | 270 ++ server/migrations/2.3.0.js | 178 ++ server/migrations/2.3.1.js | 165 ++ server/migrations/2.3.10.js | 171 ++ server/migrations/2.3.2.js | 180 ++ server/migrations/2.3.3.js | 199 ++ server/migrations/2.3.4.js | 165 ++ server/migrations/2.3.5.js | 166 ++ server/migrations/2.3.6.js | 166 ++ server/migrations/2.3.7.js | 198 ++ server/migrations/2.3.8.js | 165 ++ server/migrations/2.3.9.js | 166 ++ server/migrations/2.3.91.js | 171 ++ server/migrations/2.3.92.js | 165 ++ server/migrations/2.3.93.js | 165 ++ server/migrations/2.3.94.js | 165 ++ server/migrations/2.3.95.js | 165 ++ server/migrations/2.3.96.js | 171 ++ server/migrations/2.3.97.js | 184 ++ server/migrations/2.3.98.js | 165 ++ server/migrations/2.4.0.js | 244 ++ server/migrations/2.4.1.js | 166 ++ server/migrations/2.4.10.js | 184 ++ server/migrations/2.4.11.js | 167 ++ server/migrations/2.4.12.js | 178 ++ server/migrations/2.4.13.js | 174 ++ server/migrations/2.4.14.js | 167 ++ server/migrations/2.4.15.js | 171 ++ server/migrations/2.4.16.js | 174 ++ server/migrations/2.4.17.js | 167 ++ server/migrations/2.4.18.js | 173 ++ server/migrations/2.4.19.js | 203 ++ server/migrations/2.4.2.js | 201 ++ server/migrations/2.4.20.js | 176 ++ server/migrations/2.4.21.js | 167 ++ server/migrations/2.4.3.js | 166 ++ server/migrations/2.4.4.js | 191 ++ server/migrations/2.4.5.js | 166 ++ server/migrations/2.4.6.js | 168 ++ server/migrations/2.4.7.js | 192 ++ server/migrations/2.4.8.js | 167 ++ server/migrations/2.4.9.js | 167 ++ server/migrations/2.5.0.js | 314 +++ server/migrations/2.5.1.js | 167 ++ server/migrations/2.5.10.js | 177 ++ server/migrations/2.5.11.js | 167 ++ server/migrations/2.5.12.js | 221 ++ server/migrations/2.5.13.js | 168 ++ server/migrations/2.5.14.js | 167 ++ server/migrations/2.5.15.js | 177 ++ server/migrations/2.5.16.js | 179 ++ server/migrations/2.5.17.js | 165 ++ server/migrations/2.5.18.js | 198 ++ server/migrations/2.5.19.js | 165 ++ server/migrations/2.5.2.js | 343 +++ server/migrations/2.5.20.js | 179 ++ server/migrations/2.5.21.js | 169 ++ server/migrations/2.5.22.js | 202 ++ server/migrations/2.5.23.js | 253 ++ server/migrations/2.5.24.js | 167 ++ server/migrations/2.5.25.js | 172 ++ server/migrations/2.5.26.js | 179 ++ server/migrations/2.5.27.js | 165 ++ server/migrations/2.5.28.js | 165 ++ server/migrations/2.5.29.js | 172 ++ server/migrations/2.5.3.js | 187 ++ server/migrations/2.5.30.js | 223 ++ server/migrations/2.5.31.js | 182 ++ server/migrations/2.5.32.js | 192 ++ server/migrations/2.5.33.js | 189 ++ server/migrations/2.5.34.js | 165 ++ server/migrations/2.5.35.js | 165 ++ server/migrations/2.5.36.js | 184 ++ server/migrations/2.5.37.js | 187 ++ server/migrations/2.5.38.js | 165 ++ server/migrations/2.5.39.js | 193 ++ server/migrations/2.5.4.js | 167 ++ server/migrations/2.5.40.js | 165 ++ server/migrations/2.5.41.js | 297 +++ server/migrations/2.5.42.js | 172 ++ server/migrations/2.5.43.js | 165 ++ server/migrations/2.5.44.js | 219 ++ server/migrations/2.5.45.js | 165 ++ server/migrations/2.5.46.js | 165 ++ server/migrations/2.5.47.js | 165 ++ server/migrations/2.5.48.js | 237 ++ server/migrations/2.5.49.js | 224 ++ server/migrations/2.5.5.js | 355 +++ server/migrations/2.5.50.js | 185 ++ server/migrations/2.5.6.js | 174 ++ server/migrations/2.5.7.js | 209 ++ server/migrations/2.5.8.js | 167 ++ server/migrations/2.5.9.js | 167 ++ server/migrations/2.6.0.js | 249 ++ server/migrations/2.6.1.js | 170 ++ server/migrations/2.6.10.js | 170 ++ server/migrations/2.6.11.js | 170 ++ server/migrations/2.6.2.js | 177 ++ server/migrations/2.6.3.js | 187 ++ server/migrations/2.6.4.js | 177 ++ server/migrations/2.6.5.js | 170 ++ server/migrations/2.6.6.js | 170 ++ server/migrations/2.6.7.js | 170 ++ server/migrations/2.6.8.js | 170 ++ server/migrations/2.6.9.js | 183 ++ server/mysqldb/index.js | 18 + server/routes.js | 18 + server/rpc/index.js | 18 + server/services/agi/channel.js | 18 + server/services/agi/error.js | 18 + server/services/agi/events.js | 18 + server/services/agi/graph/index.js | 18 + server/services/agi/index.js | 18 + server/services/agi/mailRpc/index.js | 18 + server/services/agi/project.js | 18 + server/services/agi/reply.js | 18 + server/services/agi/rpc/index.js | 18 + server/services/agi/scripts/aws/index.js | 18 + server/services/agi/scripts/aws/lex/index.js | 18 + server/services/agi/scripts/aws/lex/lib/api.js | 18 + server/services/agi/scripts/aws/polly/index.js | 18 + server/services/agi/scripts/aws/polly/lib/api.js | 18 + server/services/agi/scripts/google/asr/index.js | 18 + server/services/agi/scripts/google/asr/lib/api.js | 18 + server/services/agi/scripts/google/index.js | 18 + server/services/agi/scripts/index.js | 18 + server/services/agi/scripts/sestek/index.js | 18 + server/services/agi/scripts/sestek/nda/index.js | 18 + server/services/agi/scripts/tilde/asr/index.js | 18 + server/services/agi/scripts/tilde/asr/lib/api.js | 18 + server/services/agi/scripts/tilde/index.js | 18 + server/services/agi/scripts/tmp/README.md | 1 + server/services/agi/server.js | 18 + server/services/agi/vertices.js | 18 + server/services/ami/acw/index.js | 18 + server/services/ami/ami.js | 18 + server/services/ami/client.js | 18 + server/services/ami/dialer/index.js | 18 + server/services/ami/dialer/models/action.js | 18 + server/services/ami/dialer/models/agentComplete.js | 18 + server/services/ami/dialer/models/final.js | 18 + server/services/ami/dialer/models/hangup.js | 18 + server/services/ami/dialer/models/history.js | 18 + .../ami/dialer/models/queueCallerAbandon.js | 18 + server/services/ami/dialer/utils/hopper.js | 18 + server/services/ami/dialer/utils/index.js | 18 + server/services/ami/fax/action.js | 18 + server/services/ami/fax/channel.js | 17 + server/services/ami/fax/index.js | 18 + server/services/ami/fax/rpcDb.js | 18 + server/services/ami/fax/util/gs.js | 18 + server/services/ami/fax/util/util.js | 18 + server/services/ami/index.js | 18 + server/services/ami/model/agent.js | 18 + server/services/ami/model/campaign.js | 18 + server/services/ami/model/channel.js | 18 + server/services/ami/model/deskAccount.js | 18 + server/services/ami/model/dynamics365Account.js | 18 + server/services/ami/model/faxAccount.js | 18 + server/services/ami/model/freshdeskAccount.js | 18 + server/services/ami/model/freshsalesAccount.js | 18 + server/services/ami/model/queueReport.js | 18 + server/services/ami/model/salesforceAccount.js | 18 + server/services/ami/model/servicenowAccount.js | 18 + server/services/ami/model/sugarcrmAccount.js | 18 + server/services/ami/model/telephone.js | 18 + server/services/ami/model/template.js | 18 + server/services/ami/model/trigger.js | 18 + server/services/ami/model/trunk.js | 18 + server/services/ami/model/voiceExtension.js | 18 + server/services/ami/model/voiceQueue.js | 18 + server/services/ami/model/voiceQueueSummary.js | 18 + server/services/ami/model/vtigerAccount.js | 18 + server/services/ami/model/zendeskAccount.js | 18 + server/services/ami/model/zohoAccount.js | 18 + server/services/ami/preview/action.js | 18 + server/services/ami/preview/index.js | 18 + server/services/ami/preview/rpcDb.js | 18 + server/services/ami/preview/util/util.js | 18 + server/services/ami/properties.js | 18 + server/services/ami/realtime/index.js | 18 + server/services/ami/realtime/utils.js | 18 + server/services/ami/report/index.js | 18 + server/services/ami/report/userReport.js | 18 + server/services/ami/report/voiceAgentReport.js | 18 + server/services/ami/report/voiceCallReport.js | 18 + server/services/ami/report/voiceDialReport.js | 18 + server/services/ami/report/voiceQueueReport.js | 18 + server/services/ami/rpc/agentReportPreview.js | 18 + server/services/ami/rpc/attachment.js | 18 + server/services/ami/rpc/campaign.js | 18 + server/services/ami/rpc/cmContact.js | 18 + server/services/ami/rpc/cmHopper.js | 18 + server/services/ami/rpc/cmHopperAdditionalPhone.js | 18 + server/services/ami/rpc/cmHopperBlack.js | 18 + server/services/ami/rpc/cmHopperFinal.js | 18 + server/services/ami/rpc/cmHopperHistory.js | 18 + server/services/ami/rpc/faxAccount.js | 18 + server/services/ami/rpc/faxMessage.js | 18 + server/services/ami/rpc/integrations/desk.js | 18 + .../services/ami/rpc/integrations/dynamics365.js | 18 + server/services/ami/rpc/integrations/freshdesk.js | 18 + server/services/ami/rpc/integrations/freshsales.js | 18 + server/services/ami/rpc/integrations/salesforce.js | 18 + server/services/ami/rpc/integrations/servicenow.js | 18 + server/services/ami/rpc/integrations/sugarcrm.js | 18 + server/services/ami/rpc/integrations/vtiger.js | 18 + server/services/ami/rpc/integrations/zendesk.js | 18 + server/services/ami/rpc/integrations/zoho.js | 18 + server/services/ami/rpc/interval.js | 18 + server/services/ami/rpc/memberReport.js | 18 + server/services/ami/rpc/setting.js | 18 + server/services/ami/rpc/template.js | 18 + server/services/ami/rpc/trigger.js | 18 + server/services/ami/rpc/trunk.js | 18 + server/services/ami/rpc/user.js | 18 + server/services/ami/rpc/voiceAgentReport.js | 18 + server/services/ami/rpc/voiceCallReport.js | 18 + server/services/ami/rpc/voiceDialReport.js | 18 + server/services/ami/rpc/voiceExtension.js | 18 + server/services/ami/rpc/voiceQueue.js | 18 + server/services/ami/rpc/voiceQueueReport.js | 18 + server/services/ami/rpc/voiceQueueRt.js | 18 + server/services/ami/rpc/voiceRecording.js | 18 + server/services/ami/rpc/voiceTransferReport.js | 18 + server/services/ami/server/index.js | 18 + server/services/ami/trigger/cmContact/index.js | 18 + server/services/ami/trigger/index.js | 18 + server/services/ami/trigger/integration/desk.js | 18 + .../ami/trigger/integration/dynamics365.js | 18 + .../services/ami/trigger/integration/freshdesk.js | 18 + .../services/ami/trigger/integration/freshsales.js | 18 + server/services/ami/trigger/integration/index.js | 18 + .../services/ami/trigger/integration/salesforce.js | 18 + .../services/ami/trigger/integration/servicenow.js | 18 + .../services/ami/trigger/integration/sugarcrm.js | 18 + server/services/ami/trigger/integration/util.js | 18 + server/services/ami/trigger/integration/vtiger.js | 18 + server/services/ami/trigger/integration/zendesk.js | 18 + server/services/ami/trigger/integration/zoho.js | 18 + server/services/ami/trigger/script/index.js | 18 + server/services/ami/trigger/urlforward/index.js | 18 + server/services/email/client.js | 18 + server/services/email/index.js | 18 + server/services/email/lib/email.js | 18 + server/services/email/lib/imap.js | 18 + server/services/email/lib/smtp.js | 18 + server/services/email/lib/utils.js | 18 + server/services/email/model/mailAccount.js | 18 + server/services/email/realtime/index.js | 18 + server/services/email/rpc/mailAccount.js | 18 + server/services/email/rpc/setting.js | 18 + server/services/email/server/index.js | 18 + server/services/express/index.js | 18 + server/services/routing/client.js | 18 + server/services/routing/index.js | 18 + server/services/routing/lib/rule-engine.js | 18 + server/services/routing/mailRpc/index.js | 18 + server/services/routing/model/agent.js | 18 + server/services/routing/model/chatQueue.js | 18 + server/services/routing/model/faxQueue.js | 18 + server/services/routing/model/interval.js | 18 + server/services/routing/model/mailQueue.js | 18 + server/services/routing/model/openchannelQueue.js | 18 + server/services/routing/model/smsQueue.js | 18 + server/services/routing/model/whatsappQueue.js | 18 + server/services/routing/realtime/index.js | 18 + server/services/routing/rpc/chatInteraction.js | 18 + server/services/routing/rpc/chatMessage.js | 18 + server/services/routing/rpc/chatQueue.js | 18 + server/services/routing/rpc/chatQueueReport.js | 18 + server/services/routing/rpc/faxInteraction.js | 18 + server/services/routing/rpc/faxMessage.js | 18 + server/services/routing/rpc/faxQueue.js | 18 + server/services/routing/rpc/faxQueueReport.js | 18 + server/services/routing/rpc/interval.js | 18 + server/services/routing/rpc/mailInteraction.js | 18 + server/services/routing/rpc/mailMessage.js | 18 + server/services/routing/rpc/mailQueue.js | 18 + server/services/routing/rpc/mailQueueReport.js | 18 + .../services/routing/rpc/openchannelInteraction.js | 18 + server/services/routing/rpc/openchannelMessage.js | 18 + server/services/routing/rpc/openchannelQueue.js | 18 + .../services/routing/rpc/openchannelQueueReport.js | 18 + server/services/routing/rpc/smsInteraction.js | 18 + server/services/routing/rpc/smsMessage.js | 18 + server/services/routing/rpc/smsQueue.js | 18 + server/services/routing/rpc/smsQueueReport.js | 18 + server/services/routing/rpc/user.js | 18 + server/services/routing/rpc/whatsappInteraction.js | 18 + server/services/routing/rpc/whatsappMessage.js | 18 + server/services/routing/rpc/whatsappQueue.js | 18 + server/services/routing/rpc/whatsappQueueReport.js | 18 + .../services/routing/server/applications/agent.js | 18 + .../routing/server/applications/amazonlex.js | 18 + .../routing/server/applications/autoreply.js | 18 + .../services/routing/server/applications/close.js | 18 + .../routing/server/applications/dialogflow.js | 18 + .../routing/server/applications/dialogflowV2.js | 18 + .../services/routing/server/applications/gotoif.js | 18 + .../services/routing/server/applications/gotop.js | 18 + .../routing/server/applications/message.js | 18 + .../services/routing/server/applications/noop.js | 18 + .../services/routing/server/applications/queue.js | 18 + .../routing/server/applications/strategy/agent.js | 18 + .../server/applications/strategy/beepall.js | 18 + .../routing/server/applications/strategy/index.js | 18 + .../server/applications/strategy/rrmemory.js | 18 + .../routing/server/applications/strategy/util.js | 18 + .../services/routing/server/applications/system.js | 18 + server/services/routing/server/applications/tag.js | 18 + .../services/routing/server/applications/tvox.js | 18 + .../services/routing/server/applications/utils.js | 18 + server/services/routing/server/index.js | 18 + server/services/routing/server/interval.js | 18 + server/services/xdr/agents.controller.js | 18 + server/services/xdr/calls.controller.js | 18 + server/services/xdr/core.controller.js | 18 + server/services/xdr/dials.controller.js | 18 + server/services/xdr/index.js | 18 + server/services/xdr/members.controller.js | 18 + server/services/xdr/queues.controller.js | 18 + server/services/xdr/recordings.controller.js | 18 + server/services/xdr/transfers.controller.js | 18 + server/services/xdr/utils.js | 18 + server/utils/client-side-logger.js | 18 + server/utils/iftime.js | 18 + server/utils/loggers.js | 18 + server/utils/mask-sensitive-data.js | 18 + server/utils/safe-template.js | 18 + server/views/404.html | 161 ++ server/views/downloadInteraction.ejs | 131 + 1477 files changed, 63945 insertions(+), 2 deletions(-) create mode 100644 server/api/action/action.attributes.js create mode 100644 server/api/action/action.controller.js create mode 100644 server/api/action/action.model.js create mode 100644 server/api/action/action.rpc.js create mode 100644 server/api/action/index.js create mode 100644 server/api/analyticCustomReport/analyticCustomReport.attributes.js create mode 100644 server/api/analyticCustomReport/analyticCustomReport.controller.js create mode 100644 server/api/analyticCustomReport/analyticCustomReport.model.js create mode 100644 server/api/analyticCustomReport/analyticCustomReport.rpc.js create mode 100644 server/api/analyticCustomReport/index.js create mode 100644 server/api/analyticDefaultReport/analyticDefaultReport.attributes.js create mode 100644 server/api/analyticDefaultReport/analyticDefaultReport.controller.js create mode 100644 server/api/analyticDefaultReport/analyticDefaultReport.model.js create mode 100644 server/api/analyticDefaultReport/analyticDefaultReport.rpc.js create mode 100644 server/api/analyticDefaultReport/index.js create mode 100644 server/api/analyticExtractedReport/analyticExtractedReport.attributes.js create mode 100644 server/api/analyticExtractedReport/analyticExtractedReport.controller.js create mode 100644 server/api/analyticExtractedReport/analyticExtractedReport.model.js create mode 100644 server/api/analyticExtractedReport/analyticExtractedReport.rpc.js create mode 100644 server/api/analyticExtractedReport/index.js create mode 100644 server/api/analyticFieldReport/analyticFieldReport.attributes.js create mode 100644 server/api/analyticFieldReport/analyticFieldReport.controller.js create mode 100644 server/api/analyticFieldReport/analyticFieldReport.model.js create mode 100644 server/api/analyticFieldReport/analyticFieldReport.rpc.js create mode 100644 server/api/analyticFieldReport/index.js create mode 100644 server/api/analyticMetric/analyticMetric.attributes.js create mode 100644 server/api/analyticMetric/analyticMetric.controller.js create mode 100644 server/api/analyticMetric/analyticMetric.model.js create mode 100644 server/api/analyticMetric/analyticMetric.rpc.js create mode 100644 server/api/analyticMetric/index.js create mode 100644 server/api/analyticTreeReport/analyticTreeReport.attributes.js create mode 100644 server/api/analyticTreeReport/analyticTreeReport.controller.js create mode 100644 server/api/analyticTreeReport/analyticTreeReport.model.js create mode 100644 server/api/analyticTreeReport/analyticTreeReport.rpc.js create mode 100644 server/api/analyticTreeReport/index.js create mode 100644 server/api/attachment/attachment.attributes.js create mode 100644 server/api/attachment/attachment.controller.js create mode 100644 server/api/attachment/attachment.model.js create mode 100644 server/api/attachment/attachment.rpc.js create mode 100644 server/api/attachment/index.js create mode 100644 server/api/authActiveDirectory/authActiveDirectory.controller.js create mode 100644 server/api/authActiveDirectory/index.js create mode 100644 server/api/authGoogle/authGoogle.controller.js create mode 100644 server/api/authGoogle/index.js create mode 100644 server/api/authLocal/authLocal.controller.js create mode 100644 server/api/authLocal/index.js create mode 100644 server/api/automation/automation.attributes.js create mode 100644 server/api/automation/automation.controller.js create mode 100644 server/api/automation/automation.model.js create mode 100644 server/api/automation/automation.rpc.js create mode 100644 server/api/automation/index.js create mode 100644 server/api/campaign/campaign.attributes.js create mode 100644 server/api/campaign/campaign.controller.js create mode 100644 server/api/campaign/campaign.model.js create mode 100644 server/api/campaign/campaign.rpc.js create mode 100644 server/api/campaign/index.js create mode 100644 server/api/cannedAnswer/cannedAnswer.attributes.js create mode 100644 server/api/cannedAnswer/cannedAnswer.controller.js create mode 100644 server/api/cannedAnswer/cannedAnswer.model.js create mode 100644 server/api/cannedAnswer/cannedAnswer.rpc.js create mode 100644 server/api/cannedAnswer/index.js create mode 100644 server/api/cdr/cdr.attributes.js create mode 100644 server/api/cdr/cdr.controller.js create mode 100644 server/api/cdr/cdr.model.js create mode 100644 server/api/cdr/cdr.rpc.js create mode 100644 server/api/cdr/index.js create mode 100644 server/api/chatApplication/chatApplication.attributes.js create mode 100644 server/api/chatApplication/chatApplication.controller.js create mode 100644 server/api/chatApplication/chatApplication.model.js create mode 100644 server/api/chatApplication/chatApplication.rpc.js create mode 100644 server/api/chatApplication/index.js create mode 100644 server/api/chatGroup/chatGroup.attributes.js create mode 100644 server/api/chatGroup/chatGroup.controller.js create mode 100644 server/api/chatGroup/chatGroup.events.js create mode 100644 server/api/chatGroup/chatGroup.model.js create mode 100644 server/api/chatGroup/chatGroup.rpc.js create mode 100644 server/api/chatGroup/chatGroup.socket.js create mode 100644 server/api/chatGroup/index.js create mode 100644 server/api/chatInteraction/chatInteraction.attributes.js create mode 100644 server/api/chatInteraction/chatInteraction.controller.js create mode 100644 server/api/chatInteraction/chatInteraction.events.js create mode 100644 server/api/chatInteraction/chatInteraction.model.js create mode 100644 server/api/chatInteraction/chatInteraction.rpc.js create mode 100644 server/api/chatInteraction/chatInteraction.socket.js create mode 100644 server/api/chatInteraction/index.js create mode 100644 server/api/chatInternalMessage/chatInternalMessage.attributes.js create mode 100644 server/api/chatInternalMessage/chatInternalMessage.controller.js create mode 100644 server/api/chatInternalMessage/chatInternalMessage.events.js create mode 100644 server/api/chatInternalMessage/chatInternalMessage.model.js create mode 100644 server/api/chatInternalMessage/chatInternalMessage.rpc.js create mode 100644 server/api/chatInternalMessage/chatInternalMessage.socket.js create mode 100644 server/api/chatInternalMessage/index.js create mode 100644 server/api/chatMessage/chatMessage.attributes.js create mode 100644 server/api/chatMessage/chatMessage.controller.js create mode 100644 server/api/chatMessage/chatMessage.events.js create mode 100644 server/api/chatMessage/chatMessage.model.js create mode 100644 server/api/chatMessage/chatMessage.rpc.js create mode 100644 server/api/chatMessage/chatMessage.socket.js create mode 100644 server/api/chatMessage/index.js create mode 100644 server/api/chatOfflineMessage/chatOfflineMessage.attributes.js create mode 100644 server/api/chatOfflineMessage/chatOfflineMessage.controller.js create mode 100644 server/api/chatOfflineMessage/chatOfflineMessage.events.js create mode 100644 server/api/chatOfflineMessage/chatOfflineMessage.model.js create mode 100644 server/api/chatOfflineMessage/chatOfflineMessage.rpc.js create mode 100644 server/api/chatOfflineMessage/index.js create mode 100644 server/api/chatProactiveAction/chatProactiveAction.attributes.js create mode 100644 server/api/chatProactiveAction/chatProactiveAction.controller.js create mode 100644 server/api/chatProactiveAction/chatProactiveAction.model.js create mode 100644 server/api/chatProactiveAction/chatProactiveAction.rpc.js create mode 100644 server/api/chatProactiveAction/index.js create mode 100644 server/api/chatQueue/chatQueue.attributes.js create mode 100644 server/api/chatQueue/chatQueue.controller.js create mode 100644 server/api/chatQueue/chatQueue.events.js create mode 100644 server/api/chatQueue/chatQueue.model.js create mode 100644 server/api/chatQueue/chatQueue.rpc.js create mode 100644 server/api/chatQueue/chatQueue.socket.js create mode 100644 server/api/chatQueue/index.js create mode 100644 server/api/chatQueueReport/chatQueueReport.attributes.js create mode 100644 server/api/chatQueueReport/chatQueueReport.controller.js create mode 100644 server/api/chatQueueReport/chatQueueReport.model.js create mode 100644 server/api/chatQueueReport/chatQueueReport.rpc.js create mode 100644 server/api/chatQueueReport/index.js create mode 100644 server/api/chatTransferReport/chatTransferReport.attributes.js create mode 100644 server/api/chatTransferReport/chatTransferReport.controller.js create mode 100644 server/api/chatTransferReport/chatTransferReport.model.js create mode 100644 server/api/chatTransferReport/chatTransferReport.rpc.js create mode 100644 server/api/chatTransferReport/index.js create mode 100644 server/api/chatWebsite/chatWebsite.attributes.js create mode 100644 server/api/chatWebsite/chatWebsite.controller.js create mode 100644 server/api/chatWebsite/chatWebsite.events.js create mode 100644 server/api/chatWebsite/chatWebsite.model.js create mode 100644 server/api/chatWebsite/chatWebsite.rpc.js create mode 100644 server/api/chatWebsite/chatWebsite.socket.js create mode 100644 server/api/chatWebsite/index.js create mode 100644 server/api/client-side-logs.js create mode 100644 server/api/cloudProvider/cloudProvider.attributes.js create mode 100644 server/api/cloudProvider/cloudProvider.controller.js create mode 100644 server/api/cloudProvider/cloudProvider.model.js create mode 100644 server/api/cloudProvider/cloudProvider.oauth.js create mode 100644 server/api/cloudProvider/cloudProvider.rpc.js create mode 100644 server/api/cloudProvider/index.js create mode 100644 server/api/cmCompany/cmCompany.attributes.js create mode 100644 server/api/cmCompany/cmCompany.controller.js create mode 100644 server/api/cmCompany/cmCompany.model.js create mode 100644 server/api/cmCompany/cmCompany.rpc.js create mode 100644 server/api/cmCompany/index.js create mode 100644 server/api/cmContact/cmContact.attributes.js create mode 100644 server/api/cmContact/cmContact.controller.js create mode 100644 server/api/cmContact/cmContact.events.js create mode 100644 server/api/cmContact/cmContact.model.js create mode 100644 server/api/cmContact/cmContact.rpc.js create mode 100644 server/api/cmContact/cmContact.socket.js create mode 100644 server/api/cmContact/index.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.attributes.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.controller.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.model.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.rpc.js create mode 100644 server/api/cmContactHasItem/index.js create mode 100644 server/api/cmCustomField/cmCustomField.attributes.js create mode 100644 server/api/cmCustomField/cmCustomField.controller.js create mode 100644 server/api/cmCustomField/cmCustomField.model.js create mode 100644 server/api/cmCustomField/cmCustomField.rpc.js create mode 100644 server/api/cmCustomField/index.js create mode 100644 server/api/cmHopper/cmHopper.attributes.js create mode 100644 server/api/cmHopper/cmHopper.controller.js create mode 100644 server/api/cmHopper/cmHopper.model.js create mode 100644 server/api/cmHopper/cmHopper.rpc.js create mode 100644 server/api/cmHopper/index.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js create mode 100644 server/api/cmHopperAdditionalPhone/index.js create mode 100644 server/api/cmHopperBlack/cmHopperBlack.attributes.js create mode 100644 server/api/cmHopperBlack/cmHopperBlack.controller.js create mode 100644 server/api/cmHopperBlack/cmHopperBlack.model.js create mode 100644 server/api/cmHopperBlack/cmHopperBlack.rpc.js create mode 100644 server/api/cmHopperBlack/index.js create mode 100644 server/api/cmHopperFinal/cmHopperFinal.attributes.js create mode 100644 server/api/cmHopperFinal/cmHopperFinal.controller.js create mode 100644 server/api/cmHopperFinal/cmHopperFinal.model.js create mode 100644 server/api/cmHopperFinal/cmHopperFinal.rpc.js create mode 100644 server/api/cmHopperFinal/index.js create mode 100644 server/api/cmHopperHistory/cmHopperHistory.attributes.js create mode 100644 server/api/cmHopperHistory/cmHopperHistory.controller.js create mode 100644 server/api/cmHopperHistory/cmHopperHistory.model.js create mode 100644 server/api/cmHopperHistory/cmHopperHistory.rpc.js create mode 100644 server/api/cmHopperHistory/index.js create mode 100644 server/api/cmList/cmList.attributes.js create mode 100644 server/api/cmList/cmList.controller.js create mode 100644 server/api/cmList/cmList.events.js create mode 100644 server/api/cmList/cmList.model.js create mode 100644 server/api/cmList/cmList.rpc.js create mode 100644 server/api/cmList/cmList.socket.js create mode 100644 server/api/cmList/index.js create mode 100644 server/api/condition/condition.attributes.js create mode 100644 server/api/condition/condition.controller.js create mode 100644 server/api/condition/condition.model.js create mode 100644 server/api/condition/condition.rpc.js create mode 100644 server/api/condition/index.js create mode 100644 server/api/contactItemType/contactItemType.attributes.js create mode 100644 server/api/contactItemType/contactItemType.controller.js create mode 100644 server/api/contactItemType/contactItemType.model.js create mode 100644 server/api/contactItemType/contactItemType.rpc.js create mode 100644 server/api/contactItemType/index.js create mode 100644 server/api/dashboard/dashboard.attributes.js create mode 100644 server/api/dashboard/dashboard.controller.js create mode 100644 server/api/dashboard/dashboard.events.js create mode 100644 server/api/dashboard/dashboard.model.js create mode 100644 server/api/dashboard/dashboard.rpc.js create mode 100644 server/api/dashboard/dashboard.socket.js create mode 100644 server/api/dashboard/index.js create mode 100644 server/api/dashboardItem/dashboardItem.attributes.js create mode 100644 server/api/dashboardItem/dashboardItem.controller.js create mode 100644 server/api/dashboardItem/dashboardItem.events.js create mode 100644 server/api/dashboardItem/dashboardItem.model.js create mode 100644 server/api/dashboardItem/dashboardItem.rpc.js create mode 100644 server/api/dashboardItem/dashboardItem.socket.js create mode 100644 server/api/dashboardItem/index.js create mode 100644 server/api/disposition/disposition.attributes.js create mode 100644 server/api/disposition/disposition.controller.js create mode 100644 server/api/disposition/disposition.model.js create mode 100644 server/api/disposition/disposition.rpc.js create mode 100644 server/api/disposition/index.js create mode 100644 server/api/faxAccount/faxAccount.attributes.js create mode 100644 server/api/faxAccount/faxAccount.controller.js create mode 100644 server/api/faxAccount/faxAccount.events.js create mode 100644 server/api/faxAccount/faxAccount.model.js create mode 100644 server/api/faxAccount/faxAccount.rpc.js create mode 100644 server/api/faxAccount/faxAccount.socket.js create mode 100644 server/api/faxAccount/index.js create mode 100644 server/api/faxApplication/faxApplication.attributes.js create mode 100644 server/api/faxApplication/faxApplication.controller.js create mode 100644 server/api/faxApplication/faxApplication.model.js create mode 100644 server/api/faxApplication/faxApplication.rpc.js create mode 100644 server/api/faxApplication/index.js create mode 100644 server/api/faxInteraction/faxInteraction.attributes.js create mode 100644 server/api/faxInteraction/faxInteraction.controller.js create mode 100644 server/api/faxInteraction/faxInteraction.events.js create mode 100644 server/api/faxInteraction/faxInteraction.model.js create mode 100644 server/api/faxInteraction/faxInteraction.rpc.js create mode 100644 server/api/faxInteraction/faxInteraction.socket.js create mode 100644 server/api/faxInteraction/index.js create mode 100644 server/api/faxMessage/faxMessage.attributes.js create mode 100644 server/api/faxMessage/faxMessage.controller.js create mode 100644 server/api/faxMessage/faxMessage.events.js create mode 100644 server/api/faxMessage/faxMessage.model.js create mode 100644 server/api/faxMessage/faxMessage.rpc.js create mode 100644 server/api/faxMessage/faxMessage.socket.js create mode 100644 server/api/faxMessage/index.js create mode 100644 server/api/faxQueue/faxQueue.attributes.js create mode 100644 server/api/faxQueue/faxQueue.controller.js create mode 100644 server/api/faxQueue/faxQueue.events.js create mode 100644 server/api/faxQueue/faxQueue.model.js create mode 100644 server/api/faxQueue/faxQueue.rpc.js create mode 100644 server/api/faxQueue/faxQueue.socket.js create mode 100644 server/api/faxQueue/index.js create mode 100644 server/api/faxQueueReport/faxQueueReport.attributes.js create mode 100644 server/api/faxQueueReport/faxQueueReport.controller.js create mode 100644 server/api/faxQueueReport/faxQueueReport.model.js create mode 100644 server/api/faxQueueReport/faxQueueReport.rpc.js create mode 100644 server/api/faxQueueReport/index.js create mode 100644 server/api/faxTransferReport/faxTransferReport.attributes.js create mode 100644 server/api/faxTransferReport/faxTransferReport.controller.js create mode 100644 server/api/faxTransferReport/faxTransferReport.model.js create mode 100644 server/api/faxTransferReport/faxTransferReport.rpc.js create mode 100644 server/api/faxTransferReport/index.js create mode 100644 server/api/intDeskAccount/index.js create mode 100644 server/api/intDeskAccount/intDeskAccount.attributes.js create mode 100644 server/api/intDeskAccount/intDeskAccount.controller.js create mode 100644 server/api/intDeskAccount/intDeskAccount.model.js create mode 100644 server/api/intDeskAccount/intDeskAccount.rpc.js create mode 100644 server/api/intDeskConfiguration/index.js create mode 100644 server/api/intDeskConfiguration/intDeskConfiguration.attributes.js create mode 100644 server/api/intDeskConfiguration/intDeskConfiguration.controller.js create mode 100644 server/api/intDeskConfiguration/intDeskConfiguration.model.js create mode 100644 server/api/intDeskConfiguration/intDeskConfiguration.rpc.js create mode 100644 server/api/intDeskField/index.js create mode 100644 server/api/intDeskField/intDeskField.attributes.js create mode 100644 server/api/intDeskField/intDeskField.controller.js create mode 100644 server/api/intDeskField/intDeskField.model.js create mode 100644 server/api/intDeskField/intDeskField.rpc.js create mode 100644 server/api/intDynamics365Account/index.js create mode 100644 server/api/intDynamics365Account/intDynamics365Account.attributes.js create mode 100644 server/api/intDynamics365Account/intDynamics365Account.controller.js create mode 100644 server/api/intDynamics365Account/intDynamics365Account.model.js create mode 100644 server/api/intDynamics365Account/intDynamics365Account.rpc.js create mode 100644 server/api/intDynamics365Configuration/index.js create mode 100644 server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js create mode 100644 server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js create mode 100644 server/api/intDynamics365Configuration/intDynamics365Configuration.model.js create mode 100644 server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js create mode 100644 server/api/intDynamics365Field/index.js create mode 100644 server/api/intDynamics365Field/intDynamics365Field.attributes.js create mode 100644 server/api/intDynamics365Field/intDynamics365Field.controller.js create mode 100644 server/api/intDynamics365Field/intDynamics365Field.model.js create mode 100644 server/api/intDynamics365Field/intDynamics365Field.rpc.js create mode 100644 server/api/intFreshdeskAccount/index.js create mode 100644 server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js create mode 100644 server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js create mode 100644 server/api/intFreshdeskAccount/intFreshdeskAccount.model.js create mode 100644 server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js create mode 100644 server/api/intFreshdeskConfiguration/index.js create mode 100644 server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js create mode 100644 server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js create mode 100644 server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js create mode 100644 server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js create mode 100644 server/api/intFreshdeskField/index.js create mode 100644 server/api/intFreshdeskField/intFreshdeskField.attributes.js create mode 100644 server/api/intFreshdeskField/intFreshdeskField.controller.js create mode 100644 server/api/intFreshdeskField/intFreshdeskField.model.js create mode 100644 server/api/intFreshdeskField/intFreshdeskField.rpc.js create mode 100644 server/api/intFreshsalesAccount/index.js create mode 100644 server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js create mode 100644 server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js create mode 100644 server/api/intFreshsalesAccount/intFreshsalesAccount.model.js create mode 100644 server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js create mode 100644 server/api/intFreshsalesConfiguration/index.js create mode 100644 server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js create mode 100644 server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js create mode 100644 server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js create mode 100644 server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js create mode 100644 server/api/intFreshsalesField/index.js create mode 100644 server/api/intFreshsalesField/intFreshsalesField.attributes.js create mode 100644 server/api/intFreshsalesField/intFreshsalesField.controller.js create mode 100644 server/api/intFreshsalesField/intFreshsalesField.model.js create mode 100644 server/api/intFreshsalesField/intFreshsalesField.rpc.js create mode 100644 server/api/intSalesforceAccount/index.js create mode 100644 server/api/intSalesforceAccount/intSalesforceAccount.attributes.js create mode 100644 server/api/intSalesforceAccount/intSalesforceAccount.controller.js create mode 100644 server/api/intSalesforceAccount/intSalesforceAccount.model.js create mode 100644 server/api/intSalesforceAccount/intSalesforceAccount.rpc.js create mode 100644 server/api/intSalesforceConfiguration/index.js create mode 100644 server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js create mode 100644 server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js create mode 100644 server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js create mode 100644 server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js create mode 100644 server/api/intSalesforceField/index.js create mode 100644 server/api/intSalesforceField/intSalesforceField.attributes.js create mode 100644 server/api/intSalesforceField/intSalesforceField.controller.js create mode 100644 server/api/intSalesforceField/intSalesforceField.model.js create mode 100644 server/api/intSalesforceField/intSalesforceField.rpc.js create mode 100644 server/api/intServicenowAccount/index.js create mode 100644 server/api/intServicenowAccount/intServicenowAccount.attributes.js create mode 100644 server/api/intServicenowAccount/intServicenowAccount.controller.js create mode 100644 server/api/intServicenowAccount/intServicenowAccount.model.js create mode 100644 server/api/intServicenowAccount/intServicenowAccount.rpc.js create mode 100644 server/api/intServicenowConfiguration/index.js create mode 100644 server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js create mode 100644 server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js create mode 100644 server/api/intServicenowConfiguration/intServicenowConfiguration.model.js create mode 100644 server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js create mode 100644 server/api/intServicenowField/index.js create mode 100644 server/api/intServicenowField/intServicenowField.attributes.js create mode 100644 server/api/intServicenowField/intServicenowField.controller.js create mode 100644 server/api/intServicenowField/intServicenowField.model.js create mode 100644 server/api/intServicenowField/intServicenowField.rpc.js create mode 100644 server/api/intSugarcrmAccount/index.js create mode 100644 server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js create mode 100644 server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js create mode 100644 server/api/intSugarcrmAccount/intSugarcrmAccount.model.js create mode 100644 server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js create mode 100644 server/api/intSugarcrmConfiguration/index.js create mode 100644 server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js create mode 100644 server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js create mode 100644 server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js create mode 100644 server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js create mode 100644 server/api/intSugarcrmField/index.js create mode 100644 server/api/intSugarcrmField/intSugarcrmField.attributes.js create mode 100644 server/api/intSugarcrmField/intSugarcrmField.controller.js create mode 100644 server/api/intSugarcrmField/intSugarcrmField.model.js create mode 100644 server/api/intSugarcrmField/intSugarcrmField.rpc.js create mode 100644 server/api/intVtigerAccount/index.js create mode 100644 server/api/intVtigerAccount/intVtigerAccount.attributes.js create mode 100644 server/api/intVtigerAccount/intVtigerAccount.controller.js create mode 100644 server/api/intVtigerAccount/intVtigerAccount.model.js create mode 100644 server/api/intVtigerAccount/intVtigerAccount.rpc.js create mode 100644 server/api/intVtigerConfiguration/index.js create mode 100644 server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js create mode 100644 server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js create mode 100644 server/api/intVtigerConfiguration/intVtigerConfiguration.model.js create mode 100644 server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js create mode 100644 server/api/intVtigerField/index.js create mode 100644 server/api/intVtigerField/intVtigerField.attributes.js create mode 100644 server/api/intVtigerField/intVtigerField.controller.js create mode 100644 server/api/intVtigerField/intVtigerField.model.js create mode 100644 server/api/intVtigerField/intVtigerField.rpc.js create mode 100644 server/api/intZendeskAccount/index.js create mode 100644 server/api/intZendeskAccount/intZendeskAccount.attributes.js create mode 100644 server/api/intZendeskAccount/intZendeskAccount.controller.js create mode 100644 server/api/intZendeskAccount/intZendeskAccount.model.js create mode 100644 server/api/intZendeskAccount/intZendeskAccount.rpc.js create mode 100644 server/api/intZendeskConfiguration/index.js create mode 100644 server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js create mode 100644 server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js create mode 100644 server/api/intZendeskConfiguration/intZendeskConfiguration.model.js create mode 100644 server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js create mode 100644 server/api/intZendeskField/index.js create mode 100644 server/api/intZendeskField/intZendeskField.attributes.js create mode 100644 server/api/intZendeskField/intZendeskField.controller.js create mode 100644 server/api/intZendeskField/intZendeskField.model.js create mode 100644 server/api/intZendeskField/intZendeskField.rpc.js create mode 100644 server/api/intZohoAccount/index.js create mode 100644 server/api/intZohoAccount/intZohoAccount.attributes.js create mode 100644 server/api/intZohoAccount/intZohoAccount.controller.js create mode 100644 server/api/intZohoAccount/intZohoAccount.model.js create mode 100644 server/api/intZohoAccount/intZohoAccount.rpc.js create mode 100644 server/api/intZohoConfiguration/index.js create mode 100644 server/api/intZohoConfiguration/intZohoConfiguration.attributes.js create mode 100644 server/api/intZohoConfiguration/intZohoConfiguration.controller.js create mode 100644 server/api/intZohoConfiguration/intZohoConfiguration.model.js create mode 100644 server/api/intZohoConfiguration/intZohoConfiguration.rpc.js create mode 100644 server/api/intZohoField/index.js create mode 100644 server/api/intZohoField/intZohoField.attributes.js create mode 100644 server/api/intZohoField/intZohoField.controller.js create mode 100644 server/api/intZohoField/intZohoField.model.js create mode 100644 server/api/intZohoField/intZohoField.rpc.js create mode 100644 server/api/integration/index.js create mode 100644 server/api/integration/integration.attributes.js create mode 100644 server/api/integration/integration.controller.js create mode 100644 server/api/integration/integration.model.js create mode 100644 server/api/integration/integration.rpc.js create mode 100644 server/api/integrationReport/index.js create mode 100644 server/api/integrationReport/integrationReport.attributes.js create mode 100644 server/api/integrationReport/integrationReport.controller.js create mode 100644 server/api/integrationReport/integrationReport.model.js create mode 100644 server/api/integrationReport/integrationReport.rpc.js create mode 100644 server/api/interval/index.js create mode 100644 server/api/interval/interval.attributes.js create mode 100644 server/api/interval/interval.controller.js create mode 100644 server/api/interval/interval.model.js create mode 100644 server/api/interval/interval.rpc.js create mode 100644 server/api/jira/index.js create mode 100644 server/api/jira/jira.controller.js create mode 100644 server/api/jscriptyAnswerReport/index.js create mode 100644 server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js create mode 100644 server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js create mode 100644 server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js create mode 100644 server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js create mode 100644 server/api/jscriptyProject/index.js create mode 100644 server/api/jscriptyProject/jscriptyProject.attributes.js create mode 100644 server/api/jscriptyProject/jscriptyProject.controller.js create mode 100644 server/api/jscriptyProject/jscriptyProject.model.js create mode 100644 server/api/jscriptyProject/jscriptyProject.rpc.js create mode 100644 server/api/jscriptyQuestionReport/index.js create mode 100644 server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js create mode 100644 server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js create mode 100644 server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js create mode 100644 server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js create mode 100644 server/api/jscriptySessionReport/index.js create mode 100644 server/api/jscriptySessionReport/jscriptySessionReport.attributes.js create mode 100644 server/api/jscriptySessionReport/jscriptySessionReport.controller.js create mode 100644 server/api/jscriptySessionReport/jscriptySessionReport.model.js create mode 100644 server/api/jscriptySessionReport/jscriptySessionReport.rpc.js create mode 100644 server/api/license/index.js create mode 100644 server/api/license/license.attributes.js create mode 100644 server/api/license/license.controller.js create mode 100644 server/api/license/license.model.js create mode 100644 server/api/license/license.rpc.js create mode 100644 server/api/mailAccount/index.js create mode 100644 server/api/mailAccount/mailAccount.attributes.js create mode 100644 server/api/mailAccount/mailAccount.controller.js create mode 100644 server/api/mailAccount/mailAccount.events.js create mode 100644 server/api/mailAccount/mailAccount.model.js create mode 100644 server/api/mailAccount/mailAccount.rpc.js create mode 100644 server/api/mailAccount/mailAccount.socket.js create mode 100644 server/api/mailApplication/index.js create mode 100644 server/api/mailApplication/mailApplication.attributes.js create mode 100644 server/api/mailApplication/mailApplication.controller.js create mode 100644 server/api/mailApplication/mailApplication.model.js create mode 100644 server/api/mailApplication/mailApplication.rpc.js create mode 100644 server/api/mailInteraction/index.js create mode 100644 server/api/mailInteraction/mailInteraction.attributes.js create mode 100644 server/api/mailInteraction/mailInteraction.controller.js create mode 100644 server/api/mailInteraction/mailInteraction.events.js create mode 100644 server/api/mailInteraction/mailInteraction.model.js create mode 100644 server/api/mailInteraction/mailInteraction.rpc.js create mode 100644 server/api/mailInteraction/mailInteraction.socket.js create mode 100644 server/api/mailMessage/index.js create mode 100644 server/api/mailMessage/mailMessage.attributes.js create mode 100644 server/api/mailMessage/mailMessage.controller.js create mode 100644 server/api/mailMessage/mailMessage.events.js create mode 100644 server/api/mailMessage/mailMessage.model.js create mode 100644 server/api/mailMessage/mailMessage.rpc.js create mode 100644 server/api/mailMessage/mailMessage.socket.js create mode 100644 server/api/mailQueue/index.js create mode 100644 server/api/mailQueue/mailQueue.attributes.js create mode 100644 server/api/mailQueue/mailQueue.controller.js create mode 100644 server/api/mailQueue/mailQueue.events.js create mode 100644 server/api/mailQueue/mailQueue.model.js create mode 100644 server/api/mailQueue/mailQueue.rpc.js create mode 100644 server/api/mailQueue/mailQueue.socket.js create mode 100644 server/api/mailQueueReport/index.js create mode 100644 server/api/mailQueueReport/mailQueueReport.attributes.js create mode 100644 server/api/mailQueueReport/mailQueueReport.controller.js create mode 100644 server/api/mailQueueReport/mailQueueReport.model.js create mode 100644 server/api/mailQueueReport/mailQueueReport.rpc.js create mode 100644 server/api/mailServerIn/index.js create mode 100644 server/api/mailServerIn/mailServerIn.attributes.js create mode 100644 server/api/mailServerIn/mailServerIn.model.js create mode 100644 server/api/mailServerIn/mailServerIn.rpc.js create mode 100644 server/api/mailServerOut/index.js create mode 100644 server/api/mailServerOut/mailServerOut.attributes.js create mode 100644 server/api/mailServerOut/mailServerOut.controller.js create mode 100644 server/api/mailServerOut/mailServerOut.model.js create mode 100644 server/api/mailServerOut/mailServerOut.rpc.js create mode 100644 server/api/mailSubstatus/index.js create mode 100644 server/api/mailSubstatus/mailSubstatus.attributes.js create mode 100644 server/api/mailSubstatus/mailSubstatus.controller.js create mode 100644 server/api/mailSubstatus/mailSubstatus.events.js create mode 100644 server/api/mailSubstatus/mailSubstatus.model.js create mode 100644 server/api/mailSubstatus/mailSubstatus.rpc.js create mode 100644 server/api/mailTransferReport/index.js create mode 100644 server/api/mailTransferReport/mailTransferReport.attributes.js create mode 100644 server/api/mailTransferReport/mailTransferReport.controller.js create mode 100644 server/api/mailTransferReport/mailTransferReport.model.js create mode 100644 server/api/mailTransferReport/mailTransferReport.rpc.js create mode 100644 server/api/memberReport/index.js create mode 100644 server/api/memberReport/memberReport.attributes.js create mode 100644 server/api/memberReport/memberReport.controller.js create mode 100644 server/api/memberReport/memberReport.model.js create mode 100644 server/api/memberReport/memberReport.rpc.js create mode 100644 server/api/migration/index.js create mode 100644 server/api/migration/migration.attributes.js create mode 100644 server/api/migration/migration.controller.js create mode 100644 server/api/migration/migration.model.js create mode 100644 server/api/migration/migration.rpc.js create mode 100644 server/api/network/index.js create mode 100644 server/api/network/network.attributes.js create mode 100644 server/api/network/network.controller.js create mode 100644 server/api/network/network.model.js create mode 100644 server/api/network/network.rpc.js create mode 100644 server/api/openchannelAccount/index.js create mode 100644 server/api/openchannelAccount/openchannelAccount.attributes.js create mode 100644 server/api/openchannelAccount/openchannelAccount.controller.js create mode 100644 server/api/openchannelAccount/openchannelAccount.events.js create mode 100644 server/api/openchannelAccount/openchannelAccount.model.js create mode 100644 server/api/openchannelAccount/openchannelAccount.rpc.js create mode 100644 server/api/openchannelAccount/openchannelAccount.socket.js create mode 100644 server/api/openchannelApplication/index.js create mode 100644 server/api/openchannelApplication/openchannelApplication.attributes.js create mode 100644 server/api/openchannelApplication/openchannelApplication.controller.js create mode 100644 server/api/openchannelApplication/openchannelApplication.model.js create mode 100644 server/api/openchannelApplication/openchannelApplication.rpc.js create mode 100644 server/api/openchannelInteraction/index.js create mode 100644 server/api/openchannelInteraction/openchannelInteraction.attributes.js create mode 100644 server/api/openchannelInteraction/openchannelInteraction.controller.js create mode 100644 server/api/openchannelInteraction/openchannelInteraction.events.js create mode 100644 server/api/openchannelInteraction/openchannelInteraction.model.js create mode 100644 server/api/openchannelInteraction/openchannelInteraction.rpc.js create mode 100644 server/api/openchannelInteraction/openchannelInteraction.socket.js create mode 100644 server/api/openchannelMessage/index.js create mode 100644 server/api/openchannelMessage/openchannelMessage.attributes.js create mode 100644 server/api/openchannelMessage/openchannelMessage.controller.js create mode 100644 server/api/openchannelMessage/openchannelMessage.events.js create mode 100644 server/api/openchannelMessage/openchannelMessage.model.js create mode 100644 server/api/openchannelMessage/openchannelMessage.rpc.js create mode 100644 server/api/openchannelMessage/openchannelMessage.socket.js create mode 100644 server/api/openchannelQueue/index.js create mode 100644 server/api/openchannelQueue/openchannelQueue.attributes.js create mode 100644 server/api/openchannelQueue/openchannelQueue.controller.js create mode 100644 server/api/openchannelQueue/openchannelQueue.events.js create mode 100644 server/api/openchannelQueue/openchannelQueue.model.js create mode 100644 server/api/openchannelQueue/openchannelQueue.rpc.js create mode 100644 server/api/openchannelQueue/openchannelQueue.socket.js create mode 100644 server/api/openchannelQueueReport/index.js create mode 100644 server/api/openchannelQueueReport/openchannelQueueReport.attributes.js create mode 100644 server/api/openchannelQueueReport/openchannelQueueReport.controller.js create mode 100644 server/api/openchannelQueueReport/openchannelQueueReport.model.js create mode 100644 server/api/openchannelQueueReport/openchannelQueueReport.rpc.js create mode 100644 server/api/openchannelTransferReport/index.js create mode 100644 server/api/openchannelTransferReport/openchannelTransferReport.attributes.js create mode 100644 server/api/openchannelTransferReport/openchannelTransferReport.controller.js create mode 100644 server/api/openchannelTransferReport/openchannelTransferReport.model.js create mode 100644 server/api/openchannelTransferReport/openchannelTransferReport.rpc.js create mode 100644 server/api/pause/index.js create mode 100644 server/api/pause/pause.attributes.js create mode 100644 server/api/pause/pause.controller.js create mode 100644 server/api/pause/pause.model.js create mode 100644 server/api/pause/pause.rpc.js create mode 100644 server/api/plugin/index.js create mode 100644 server/api/plugin/plugin.attributes.js create mode 100644 server/api/plugin/plugin.controller.js create mode 100644 server/api/plugin/plugin.events.js create mode 100644 server/api/plugin/plugin.model.js create mode 100644 server/api/plugin/plugin.rpc.js create mode 100644 server/api/plugin/plugin.socket.js create mode 100644 server/api/pm2/index.js create mode 100644 server/api/pm2/pm2.controller.js create mode 100644 server/api/realtime/index.js create mode 100644 server/api/realtime/realtime.controller.js create mode 100644 server/api/reportAgentPreview/index.js create mode 100644 server/api/reportAgentPreview/reportAgentPreview.attributes.js create mode 100644 server/api/reportAgentPreview/reportAgentPreview.model.js create mode 100644 server/api/reportAgentPreview/reportAgentPreview.rpc.js create mode 100644 server/api/rpc/index.js create mode 100644 server/api/rpc/rpc.controller.js create mode 100644 server/api/schedule/index.js create mode 100644 server/api/schedule/schedule.attributes.js create mode 100644 server/api/schedule/schedule.controller.js create mode 100644 server/api/schedule/schedule.model.js create mode 100644 server/api/schedule/schedule.rpc.js create mode 100644 server/api/screenRecording/index.js create mode 100644 server/api/screenRecording/screenRecording.attributes.js create mode 100644 server/api/screenRecording/screenRecording.controller.js create mode 100644 server/api/screenRecording/screenRecording.model.js create mode 100644 server/api/screenRecording/screenRecording.rpc.js create mode 100644 server/api/setting/index.js create mode 100644 server/api/setting/setting.attributes.js create mode 100644 server/api/setting/setting.controller.js create mode 100644 server/api/setting/setting.model.js create mode 100644 server/api/setting/setting.rpc.js create mode 100644 server/api/smsAccount/index.js create mode 100644 server/api/smsAccount/smsAccount.attributes.js create mode 100644 server/api/smsAccount/smsAccount.controller.js create mode 100644 server/api/smsAccount/smsAccount.events.js create mode 100644 server/api/smsAccount/smsAccount.model.js create mode 100644 server/api/smsAccount/smsAccount.rpc.js create mode 100644 server/api/smsAccount/smsAccount.socket.js create mode 100644 server/api/smsApplication/index.js create mode 100644 server/api/smsApplication/smsApplication.attributes.js create mode 100644 server/api/smsApplication/smsApplication.controller.js create mode 100644 server/api/smsApplication/smsApplication.model.js create mode 100644 server/api/smsApplication/smsApplication.rpc.js create mode 100644 server/api/smsInteraction/index.js create mode 100644 server/api/smsInteraction/smsInteraction.attributes.js create mode 100644 server/api/smsInteraction/smsInteraction.controller.js create mode 100644 server/api/smsInteraction/smsInteraction.events.js create mode 100644 server/api/smsInteraction/smsInteraction.model.js create mode 100644 server/api/smsInteraction/smsInteraction.rpc.js create mode 100644 server/api/smsInteraction/smsInteraction.socket.js create mode 100644 server/api/smsMessage/index.js create mode 100644 server/api/smsMessage/smsMessage.attributes.js create mode 100644 server/api/smsMessage/smsMessage.controller.js create mode 100644 server/api/smsMessage/smsMessage.events.js create mode 100644 server/api/smsMessage/smsMessage.model.js create mode 100644 server/api/smsMessage/smsMessage.rpc.js create mode 100644 server/api/smsMessage/smsMessage.socket.js create mode 100644 server/api/smsQueue/index.js create mode 100644 server/api/smsQueue/smsQueue.attributes.js create mode 100644 server/api/smsQueue/smsQueue.controller.js create mode 100644 server/api/smsQueue/smsQueue.events.js create mode 100644 server/api/smsQueue/smsQueue.model.js create mode 100644 server/api/smsQueue/smsQueue.rpc.js create mode 100644 server/api/smsQueue/smsQueue.socket.js create mode 100644 server/api/smsQueueReport/index.js create mode 100644 server/api/smsQueueReport/smsQueueReport.attributes.js create mode 100644 server/api/smsQueueReport/smsQueueReport.controller.js create mode 100644 server/api/smsQueueReport/smsQueueReport.model.js create mode 100644 server/api/smsQueueReport/smsQueueReport.rpc.js create mode 100644 server/api/smsTransferReport/index.js create mode 100644 server/api/smsTransferReport/smsTransferReport.attributes.js create mode 100644 server/api/smsTransferReport/smsTransferReport.controller.js create mode 100644 server/api/smsTransferReport/smsTransferReport.model.js create mode 100644 server/api/smsTransferReport/smsTransferReport.rpc.js create mode 100644 server/api/sound/index.js create mode 100644 server/api/sound/sound.attributes.js create mode 100644 server/api/sound/sound.controller.js create mode 100644 server/api/sound/sound.model.js create mode 100644 server/api/sound/sound.rpc.js create mode 100644 server/api/squareMessage/index.js create mode 100644 server/api/squareMessage/squareMessage.attributes.js create mode 100644 server/api/squareMessage/squareMessage.controller.js create mode 100644 server/api/squareMessage/squareMessage.model.js create mode 100644 server/api/squareMessage/squareMessage.rpc.js create mode 100644 server/api/squareOdbc/index.js create mode 100644 server/api/squareOdbc/squareOdbc.attributes.js create mode 100644 server/api/squareOdbc/squareOdbc.controller.js create mode 100644 server/api/squareOdbc/squareOdbc.model.js create mode 100644 server/api/squareOdbc/squareOdbc.rpc.js create mode 100644 server/api/squareProject/index.js create mode 100644 server/api/squareProject/squareProject.attributes.js create mode 100644 server/api/squareProject/squareProject.controller.js create mode 100644 server/api/squareProject/squareProject.events.js create mode 100644 server/api/squareProject/squareProject.model.js create mode 100644 server/api/squareProject/squareProject.rpc.js create mode 100644 server/api/squareProject/squareProject.socket.js create mode 100644 server/api/squareRecording/index.js create mode 100644 server/api/squareRecording/squareRecording.attributes.js create mode 100644 server/api/squareRecording/squareRecording.controller.js create mode 100644 server/api/squareRecording/squareRecording.model.js create mode 100644 server/api/squareRecording/squareRecording.rpc.js create mode 100644 server/api/squareReport/index.js create mode 100644 server/api/squareReport/squareReport.attributes.js create mode 100644 server/api/squareReport/squareReport.controller.js create mode 100644 server/api/squareReport/squareReport.model.js create mode 100644 server/api/squareReport/squareReport.rpc.js create mode 100644 server/api/squareReportDetail/index.js create mode 100644 server/api/squareReportDetail/squareReportDetail.attributes.js create mode 100644 server/api/squareReportDetail/squareReportDetail.controller.js create mode 100644 server/api/squareReportDetail/squareReportDetail.model.js create mode 100644 server/api/squareReportDetail/squareReportDetail.rpc.js create mode 100644 server/api/system/index.js create mode 100644 server/api/system/system.controller.js create mode 100644 server/api/tag/index.js create mode 100644 server/api/tag/tag.attributes.js create mode 100644 server/api/tag/tag.controller.js create mode 100644 server/api/tag/tag.model.js create mode 100644 server/api/tag/tag.rpc.js create mode 100644 server/api/team/index.js create mode 100644 server/api/team/team.attributes.js create mode 100644 server/api/team/team.controller.js create mode 100644 server/api/team/team.events.js create mode 100644 server/api/team/team.model.js create mode 100644 server/api/team/team.rpc.js create mode 100644 server/api/team/team.socket.js create mode 100644 server/api/teamVoicePrefix/teamVoicePrefix.attributes.js create mode 100644 server/api/teamVoicePrefix/teamVoicePrefix.model.js create mode 100644 server/api/teamVoiceQueue/index.js create mode 100644 server/api/teamVoiceQueue/teamVoiceQueue.attributes.js create mode 100644 server/api/teamVoiceQueue/teamVoiceQueue.model.js create mode 100644 server/api/teamVoiceQueue/teamVoiceQueue.rpc.js create mode 100644 server/api/template/index.js create mode 100644 server/api/template/template.attributes.js create mode 100644 server/api/template/template.controller.js create mode 100644 server/api/template/template.model.js create mode 100644 server/api/template/template.rpc.js create mode 100644 server/api/trigger/index.js create mode 100644 server/api/trigger/trigger.attributes.js create mode 100644 server/api/trigger/trigger.controller.js create mode 100644 server/api/trigger/trigger.model.js create mode 100644 server/api/trigger/trigger.rpc.js create mode 100644 server/api/trunk/index.js create mode 100644 server/api/trunk/trunk.attributes.js create mode 100644 server/api/trunk/trunk.controller.js create mode 100644 server/api/trunk/trunk.model.js create mode 100644 server/api/trunk/trunk.rpc.js create mode 100644 server/api/user-setting/index.js create mode 100644 server/api/user-setting/user-setting.attributes.js create mode 100644 server/api/user-setting/user-setting.controller.js create mode 100644 server/api/user-setting/user-setting.events.js create mode 100644 server/api/user-setting/user-setting.model.js create mode 100644 server/api/user-setting/user-setting.socket.js create mode 100644 server/api/user/index.js create mode 100644 server/api/user/user.attributes.js create mode 100644 server/api/user/user.controller.js create mode 100644 server/api/user/user.events.js create mode 100644 server/api/user/user.model.js create mode 100644 server/api/user/user.rpc.js create mode 100644 server/api/user/user.socket.js create mode 100644 server/api/userChatQueue/index.js create mode 100644 server/api/userChatQueue/userChatQueue.attributes.js create mode 100644 server/api/userChatQueue/userChatQueue.model.js create mode 100644 server/api/userChatQueue/userChatQueue.rpc.js create mode 100644 server/api/userFaxQueue/index.js create mode 100644 server/api/userFaxQueue/userFaxQueue.attributes.js create mode 100644 server/api/userFaxQueue/userFaxQueue.model.js create mode 100644 server/api/userFaxQueue/userFaxQueue.rpc.js create mode 100644 server/api/userMailQueue/index.js create mode 100644 server/api/userMailQueue/userMailQueue.attributes.js create mode 100644 server/api/userMailQueue/userMailQueue.model.js create mode 100644 server/api/userMailQueue/userMailQueue.rpc.js create mode 100644 server/api/userNotification/index.js create mode 100644 server/api/userNotification/userNotification.attributes.js create mode 100644 server/api/userNotification/userNotification.controller.js create mode 100644 server/api/userNotification/userNotification.events.js create mode 100644 server/api/userNotification/userNotification.model.js create mode 100644 server/api/userNotification/userNotification.rpc.js create mode 100644 server/api/userNotification/userNotification.socket.js create mode 100644 server/api/userOpenchannelQueue/index.js create mode 100644 server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js create mode 100644 server/api/userOpenchannelQueue/userOpenchannelQueue.model.js create mode 100644 server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js create mode 100644 server/api/userProfile/index.js create mode 100644 server/api/userProfile/userProfile.attributes.js create mode 100644 server/api/userProfile/userProfile.controller.js create mode 100644 server/api/userProfile/userProfile.events.js create mode 100644 server/api/userProfile/userProfile.model.js create mode 100644 server/api/userProfile/userProfile.rpc.js create mode 100644 server/api/userProfile/userProfile.socket.js create mode 100644 server/api/userProfileResource/index.js create mode 100644 server/api/userProfileResource/userProfileResource.attributes.js create mode 100644 server/api/userProfileResource/userProfileResource.controller.js create mode 100644 server/api/userProfileResource/userProfileResource.model.js create mode 100644 server/api/userProfileResource/userProfileResource.rpc.js create mode 100644 server/api/userProfileSection/index.js create mode 100644 server/api/userProfileSection/userProfileSection.attributes.js create mode 100644 server/api/userProfileSection/userProfileSection.controller.js create mode 100644 server/api/userProfileSection/userProfileSection.model.js create mode 100644 server/api/userProfileSection/userProfileSection.rpc.js create mode 100644 server/api/userSmsQueue/index.js create mode 100644 server/api/userSmsQueue/userSmsQueue.attributes.js create mode 100644 server/api/userSmsQueue/userSmsQueue.model.js create mode 100644 server/api/userSmsQueue/userSmsQueue.rpc.js create mode 100644 server/api/userVoicePrefix/userVoicePrefix.attributes.js create mode 100644 server/api/userVoicePrefix/userVoicePrefix.model.js create mode 100644 server/api/userVoiceQueue/index.js create mode 100644 server/api/userVoiceQueue/userVoiceQueue.attributes.js create mode 100644 server/api/userVoiceQueue/userVoiceQueue.model.js create mode 100644 server/api/userVoiceQueue/userVoiceQueue.rpc.js create mode 100644 server/api/userVoiceQueueRt/index.js create mode 100644 server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js create mode 100644 server/api/userVoiceQueueRt/userVoiceQueueRt.events.js create mode 100644 server/api/userVoiceQueueRt/userVoiceQueueRt.model.js create mode 100644 server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js create mode 100644 server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js create mode 100644 server/api/userWhatsappQueue/index.js create mode 100644 server/api/userWhatsappQueue/userWhatsappQueue.attributes.js create mode 100644 server/api/userWhatsappQueue/userWhatsappQueue.model.js create mode 100644 server/api/userWhatsappQueue/userWhatsappQueue.rpc.js create mode 100644 server/api/variable/index.js create mode 100644 server/api/variable/variable.attributes.js create mode 100644 server/api/variable/variable.controller.js create mode 100644 server/api/variable/variable.model.js create mode 100644 server/api/variable/variable.rpc.js create mode 100644 server/api/version/index.js create mode 100644 server/api/version/version.controller.js create mode 100644 server/api/voiceAgentReport/index.js create mode 100644 server/api/voiceAgentReport/voiceAgentReport.attributes.js create mode 100644 server/api/voiceAgentReport/voiceAgentReport.controller.js create mode 100644 server/api/voiceAgentReport/voiceAgentReport.model.js create mode 100644 server/api/voiceAgentReport/voiceAgentReport.rpc.js create mode 100644 server/api/voiceCallReport/index.js create mode 100644 server/api/voiceCallReport/voiceCallReport.attributes.js create mode 100644 server/api/voiceCallReport/voiceCallReport.controller.js create mode 100644 server/api/voiceCallReport/voiceCallReport.model.js create mode 100644 server/api/voiceCallReport/voiceCallReport.rpc.js create mode 100644 server/api/voiceChanSpy/index.js create mode 100644 server/api/voiceChanSpy/voiceChanSpy.attributes.js create mode 100644 server/api/voiceChanSpy/voiceChanSpy.controller.js create mode 100644 server/api/voiceChanSpy/voiceChanSpy.model.js create mode 100644 server/api/voiceChanSpy/voiceChanSpy.rpc.js create mode 100644 server/api/voiceContext/index.js create mode 100644 server/api/voiceContext/voiceContext.attributes.js create mode 100644 server/api/voiceContext/voiceContext.controller.js create mode 100644 server/api/voiceContext/voiceContext.model.js create mode 100644 server/api/voiceContext/voiceContext.rpc.js create mode 100644 server/api/voiceDialReport/index.js create mode 100644 server/api/voiceDialReport/voiceDialReport.attributes.js create mode 100644 server/api/voiceDialReport/voiceDialReport.controller.js create mode 100644 server/api/voiceDialReport/voiceDialReport.model.js create mode 100644 server/api/voiceDialReport/voiceDialReport.rpc.js create mode 100644 server/api/voiceExtension/index.js create mode 100644 server/api/voiceExtension/voiceExtension.attributes.js create mode 100644 server/api/voiceExtension/voiceExtension.controller.js create mode 100644 server/api/voiceExtension/voiceExtension.events.js create mode 100644 server/api/voiceExtension/voiceExtension.model.js create mode 100644 server/api/voiceExtension/voiceExtension.rpc.js create mode 100644 server/api/voiceExtension/voiceExtension.socket.js create mode 100644 server/api/voiceMail/index.js create mode 100644 server/api/voiceMail/voiceMail.attributes.js create mode 100644 server/api/voiceMail/voiceMail.controller.js create mode 100644 server/api/voiceMail/voiceMail.model.js create mode 100644 server/api/voiceMail/voiceMail.rpc.js create mode 100644 server/api/voiceMailMessage/index.js create mode 100644 server/api/voiceMailMessage/voiceMailMessage.attributes.js create mode 100644 server/api/voiceMailMessage/voiceMailMessage.controller.js create mode 100644 server/api/voiceMailMessage/voiceMailMessage.model.js create mode 100644 server/api/voiceMailMessage/voiceMailMessage.rpc.js create mode 100644 server/api/voiceMusicOnHold/index.js create mode 100644 server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js create mode 100644 server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js create mode 100644 server/api/voiceMusicOnHold/voiceMusicOnHold.model.js create mode 100644 server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js create mode 100644 server/api/voicePrefix/index.js create mode 100644 server/api/voicePrefix/voicePrefix.attributes.js create mode 100644 server/api/voicePrefix/voicePrefix.controller.js create mode 100644 server/api/voicePrefix/voicePrefix.events.js create mode 100644 server/api/voicePrefix/voicePrefix.model.js create mode 100644 server/api/voicePrefix/voicePrefix.rpc.js create mode 100644 server/api/voicePrefix/voicePrefix.socket.js create mode 100644 server/api/voiceQueue/index.js create mode 100644 server/api/voiceQueue/voiceQueue.attributes.js create mode 100644 server/api/voiceQueue/voiceQueue.controller.js create mode 100644 server/api/voiceQueue/voiceQueue.events.js create mode 100644 server/api/voiceQueue/voiceQueue.model.js create mode 100644 server/api/voiceQueue/voiceQueue.rpc.js create mode 100644 server/api/voiceQueue/voiceQueue.socket.js create mode 100644 server/api/voiceQueueReport/index.js create mode 100644 server/api/voiceQueueReport/voiceQueueReport.attributes.js create mode 100644 server/api/voiceQueueReport/voiceQueueReport.controller.js create mode 100644 server/api/voiceQueueReport/voiceQueueReport.events.js create mode 100644 server/api/voiceQueueReport/voiceQueueReport.model.js create mode 100644 server/api/voiceQueueReport/voiceQueueReport.rpc.js create mode 100644 server/api/voiceQueueReport/voiceQueueReport.socket.js create mode 100644 server/api/voiceQueuesLog/index.js create mode 100644 server/api/voiceQueuesLog/voiceQueuesLog.attributes.js create mode 100644 server/api/voiceQueuesLog/voiceQueuesLog.controller.js create mode 100644 server/api/voiceQueuesLog/voiceQueuesLog.model.js create mode 100644 server/api/voiceQueuesLog/voiceQueuesLog.rpc.js create mode 100644 server/api/voiceRecording/index.js create mode 100644 server/api/voiceRecording/voiceRecording.attributes.js create mode 100644 server/api/voiceRecording/voiceRecording.controller.js create mode 100644 server/api/voiceRecording/voiceRecording.model.js create mode 100644 server/api/voiceRecording/voiceRecording.rpc.js create mode 100644 server/api/voiceTransferReport/index.js create mode 100644 server/api/voiceTransferReport/voiceTransferReport.attributes.js create mode 100644 server/api/voiceTransferReport/voiceTransferReport.controller.js create mode 100644 server/api/voiceTransferReport/voiceTransferReport.model.js create mode 100644 server/api/voiceTransferReport/voiceTransferReport.rpc.js create mode 100644 server/api/webbar/index.js create mode 100644 server/api/webbar/webbar.controller.js create mode 100644 server/api/whatsappAccount/index.js create mode 100644 server/api/whatsappAccount/whatsappAccount.attributes.js create mode 100644 server/api/whatsappAccount/whatsappAccount.controller.js create mode 100644 server/api/whatsappAccount/whatsappAccount.events.js create mode 100644 server/api/whatsappAccount/whatsappAccount.model.js create mode 100644 server/api/whatsappAccount/whatsappAccount.rpc.js create mode 100644 server/api/whatsappAccount/whatsappAccount.socket.js create mode 100644 server/api/whatsappApplication/index.js create mode 100644 server/api/whatsappApplication/whatsappApplication.attributes.js create mode 100644 server/api/whatsappApplication/whatsappApplication.controller.js create mode 100644 server/api/whatsappApplication/whatsappApplication.model.js create mode 100644 server/api/whatsappApplication/whatsappApplication.rpc.js create mode 100644 server/api/whatsappInteraction/index.js create mode 100644 server/api/whatsappInteraction/whatsappInteraction.attributes.js create mode 100644 server/api/whatsappInteraction/whatsappInteraction.controller.js create mode 100644 server/api/whatsappInteraction/whatsappInteraction.events.js create mode 100644 server/api/whatsappInteraction/whatsappInteraction.model.js create mode 100644 server/api/whatsappInteraction/whatsappInteraction.rpc.js create mode 100644 server/api/whatsappInteraction/whatsappInteraction.socket.js create mode 100644 server/api/whatsappMessage/index.js create mode 100644 server/api/whatsappMessage/whatsappMessage.attributes.js create mode 100644 server/api/whatsappMessage/whatsappMessage.controller.js create mode 100644 server/api/whatsappMessage/whatsappMessage.events.js create mode 100644 server/api/whatsappMessage/whatsappMessage.model.js create mode 100644 server/api/whatsappMessage/whatsappMessage.rpc.js create mode 100644 server/api/whatsappMessage/whatsappMessage.socket.js create mode 100644 server/api/whatsappQueue/index.js create mode 100644 server/api/whatsappQueue/whatsappQueue.attributes.js create mode 100644 server/api/whatsappQueue/whatsappQueue.controller.js create mode 100644 server/api/whatsappQueue/whatsappQueue.events.js create mode 100644 server/api/whatsappQueue/whatsappQueue.model.js create mode 100644 server/api/whatsappQueue/whatsappQueue.rpc.js create mode 100644 server/api/whatsappQueue/whatsappQueue.socket.js create mode 100644 server/api/whatsappQueueReport/index.js create mode 100644 server/api/whatsappQueueReport/whatsappQueueReport.attributes.js create mode 100644 server/api/whatsappQueueReport/whatsappQueueReport.controller.js create mode 100644 server/api/whatsappQueueReport/whatsappQueueReport.model.js create mode 100644 server/api/whatsappQueueReport/whatsappQueueReport.rpc.js create mode 100644 server/api/whatsappTransferReport/index.js create mode 100644 server/api/whatsappTransferReport/whatsappTransferReport.attributes.js create mode 100644 server/api/whatsappTransferReport/whatsappTransferReport.controller.js create mode 100644 server/api/whatsappTransferReport/whatsappTransferReport.model.js create mode 100644 server/api/whatsappTransferReport/whatsappTransferReport.rpc.js create mode 100644 server/app.js create mode 100644 server/components/auth/service.js create mode 100644 server/components/contacts/index.js create mode 100644 server/components/contacts/sql-utils.js create mode 100644 server/components/encryptor/index.js create mode 100644 server/components/export/csv.js create mode 100644 server/components/export/fonts/arial-bold-italic.ttf create mode 100644 server/components/export/fonts/arial-bold.ttf create mode 100644 server/components/export/fonts/arial-italic.ttf create mode 100644 server/components/export/fonts/arial-regular.ttf create mode 100644 server/components/export/pdf.js create mode 100644 server/components/export/xlsx.js create mode 100644 server/components/extensions/rewrite.js create mode 100644 server/components/import/cm/csv.js create mode 100644 server/components/import/cm/csv2.js create mode 100644 server/components/import/cm/csvUpdates.js create mode 100644 server/components/integrations/configuration.js create mode 100644 server/components/interaction/service.js create mode 100644 server/components/interaction/sql-utils.js create mode 100644 server/components/interaction/update-interaction.js create mode 100644 server/components/interaction/utils.js create mode 100644 server/components/license/service.js create mode 100644 server/components/parsers/advancedSearch.js create mode 100644 server/components/parsers/qs.js create mode 100644 server/components/realtime/agents.js create mode 100644 server/components/realtime/queues.js create mode 100644 server/config/environment/development.js create mode 100644 server/config/environment/index.js create mode 100644 server/config/environment/shared.js create mode 100644 server/config/express.js create mode 100644 server/config/license/hardware.js create mode 100644 server/config/license/index.js create mode 100644 server/config/license/util.js create mode 100644 server/config/local.env.js create mode 100644 server/config/logger.js create mode 100644 server/config/pm2/config.js create mode 100644 server/config/pm2/index.js create mode 100644 server/config/schedule/chat.js create mode 100644 server/config/schedule/cloud-provider.js create mode 100644 server/config/schedule/index.js create mode 100644 server/config/schedule/transcribe.js create mode 100644 server/config/schedule/whatsapp.js create mode 100644 server/config/seedContact.js create mode 100644 server/config/seedDB/analyticReports.js create mode 100644 server/config/seedDB/analyticTreeReports.js create mode 100644 server/config/seedDB/chanspy.js create mode 100644 server/config/seedDB/companies.js create mode 100644 server/config/seedDB/contacts.js create mode 100644 server/config/seedDB/dispositions.js create mode 100644 server/config/seedDB/index.js create mode 100644 server/config/seedDB/intervals.js create mode 100644 server/config/seedDB/jscripty/customerSatisfation.json create mode 100644 server/config/seedDB/jscriptyProjects.js create mode 100644 server/config/seedDB/lists.js create mode 100644 server/config/seedDB/mailAccounts.js create mode 100644 server/config/seedDB/mailSubstatuses.js create mode 100644 server/config/seedDB/migrations.js create mode 100644 server/config/seedDB/pauses.js create mode 100644 server/config/seedDB/report/default.js create mode 100644 server/config/seedDB/report/fields.js create mode 100644 server/config/seedDB/report/index.js create mode 100644 server/config/seedDB/sounds.js create mode 100644 server/config/seedDB/squareOdbc.js create mode 100644 server/config/seedDB/squareProjects.js create mode 100644 server/config/seedDB/tags.js create mode 100644 server/config/seedDB/teams.js create mode 100644 server/config/seedDB/tree/index.js create mode 100644 server/config/seedDB/trunks.js create mode 100644 server/config/seedDB/userProfiles.js create mode 100644 server/config/seedDB/users.js create mode 100644 server/config/seedDB/variables.js create mode 100644 server/config/seedDB/voiceContexts.js create mode 100644 server/config/seedDB/voiceExtensions.js create mode 100644 server/config/seedDB/voiceMusicOnHold.js create mode 100644 server/config/seedDB/voiceQueues.js create mode 100644 server/config/seedDB/xml/AgentManagement.xml create mode 100644 server/config/seedDB/xml/AutoAttendant.xml create mode 100644 server/config/seedDB/xml/CSI.xml create mode 100644 server/config/seedDB/xml/Orders.xml create mode 100644 server/config/seedDB/xml/Survey.xml create mode 100644 server/config/seedUsers.js create mode 100644 server/config/socketio.js create mode 100644 server/config/triggers/index.js create mode 100644 server/config/utils.js create mode 100644 server/errors/api.js create mode 100644 server/errors/index.js create mode 100644 server/files/attachments/README.md create mode 100644 server/files/chat/iframe.ejs create mode 100644 server/files/chat/upload/README.md create mode 100644 server/files/conf/README.md create mode 100644 server/files/images/README.md create mode 100644 server/files/images/avatars/README.md create mode 100644 server/files/images/avatars/customer_avatar.png create mode 100644 server/files/images/avatars/default_avatar.png create mode 100644 server/files/images/avatars/system_avatar.png create mode 100644 server/files/images/logos/README.md create mode 100644 server/files/images/logos/default_favicon.ico create mode 100644 server/files/images/logos/default_loginlogo.svg create mode 100644 server/files/images/logos/default_logo.svg create mode 100644 server/files/images/logos/default_preferred.png create mode 100644 server/files/images/logos/default_profile.png create mode 100644 server/files/moh/README.md create mode 100644 server/files/moh/noice/noice.wav create mode 100644 server/files/moh/wait/wait.wav create mode 100644 server/files/plugins/README.md create mode 100644 server/files/recordings/README.md create mode 100644 server/files/reports/README.md create mode 100644 server/files/screen_recordings/README.md create mode 100644 server/files/sounds/README.md create mode 100644 server/files/sounds/converted/README.md create mode 100644 server/files/sounds/converted/agentmanagement-action-failure.wav create mode 100644 server/files/sounds/converted/agentmanagement-login.wav create mode 100644 server/files/sounds/converted/agentmanagement-logout.wav create mode 100644 server/files/sounds/converted/agentmanagement-menu.wav create mode 100644 server/files/sounds/converted/agentmanagement-pause.wav create mode 100644 server/files/sounds/converted/agentmanagement-unpause.wav create mode 100644 server/files/sounds/converted/order-elaborated.wav create mode 100644 server/files/sounds/converted/order-number.wav create mode 100644 server/files/sounds/converted/order-shipped.wav create mode 100644 server/files/sounds/converted/rate-call.wav create mode 100644 server/files/sounds/converted/thanx.wav create mode 100644 server/files/sounds/converted/welcome-acme.wav create mode 100644 server/files/sounds/original/README.md create mode 100644 server/files/sounds/original/agentmanagement-action-failure.wav create mode 100644 server/files/sounds/original/agentmanagement-login.mp3 create mode 100644 server/files/sounds/original/agentmanagement-logout.mp3 create mode 100644 server/files/sounds/original/agentmanagement-menu.wav create mode 100644 server/files/sounds/original/agentmanagement-pause.mp3 create mode 100644 server/files/sounds/original/agentmanagement-unpause.mp3 create mode 100644 server/files/sounds/original/order-elaborated.wav create mode 100644 server/files/sounds/original/order-number.wav create mode 100644 server/files/sounds/original/order-shipped.wav create mode 100644 server/files/sounds/original/rate-call.wav create mode 100644 server/files/sounds/original/thanx.wav create mode 100644 server/files/sounds/original/welcome-acme.wav create mode 100644 server/files/templates/chatOfflineMessage.ejs create mode 100644 server/files/templates/context.ejs create mode 100644 server/files/templates/network.ejs create mode 100644 server/files/templates/registry.ejs create mode 100644 server/files/templates/stun_multiple.ejs create mode 100644 server/files/templates/trunk.ejs create mode 100644 server/files/templates/turn_multiple.ejs create mode 100644 server/files/tmp/README.md create mode 100644 server/files/transcribes/README.md create mode 100644 server/migrations/2.0.12.js create mode 100644 server/migrations/2.0.13.js create mode 100644 server/migrations/2.0.14.js create mode 100644 server/migrations/2.0.15.js create mode 100644 server/migrations/2.0.16.js create mode 100644 server/migrations/2.0.17.js create mode 100644 server/migrations/2.0.18.js create mode 100644 server/migrations/2.0.19.js create mode 100644 server/migrations/2.0.20.js create mode 100644 server/migrations/2.0.21.js create mode 100644 server/migrations/2.0.22.js create mode 100644 server/migrations/2.0.23.js create mode 100644 server/migrations/2.0.24.js create mode 100644 server/migrations/2.0.25.js create mode 100644 server/migrations/2.0.26.js create mode 100644 server/migrations/2.0.27.js create mode 100644 server/migrations/2.0.28.js create mode 100644 server/migrations/2.0.29.js create mode 100644 server/migrations/2.0.30.js create mode 100644 server/migrations/2.0.31.js create mode 100644 server/migrations/2.0.32.js create mode 100644 server/migrations/2.0.33.js create mode 100644 server/migrations/2.0.34.js create mode 100644 server/migrations/2.0.35.js create mode 100644 server/migrations/2.0.36.js create mode 100644 server/migrations/2.0.37.js create mode 100644 server/migrations/2.0.38.js create mode 100644 server/migrations/2.0.39.js create mode 100644 server/migrations/2.0.40.js create mode 100644 server/migrations/2.0.41.js create mode 100644 server/migrations/2.0.42.js create mode 100644 server/migrations/2.0.43.js create mode 100644 server/migrations/2.0.44.js create mode 100644 server/migrations/2.0.45.js create mode 100644 server/migrations/2.0.46.js create mode 100644 server/migrations/2.0.47.js create mode 100644 server/migrations/2.0.48.js create mode 100644 server/migrations/2.0.49.js create mode 100644 server/migrations/2.0.50.js create mode 100644 server/migrations/2.0.51.js create mode 100644 server/migrations/2.0.52.js create mode 100644 server/migrations/2.0.53.js create mode 100644 server/migrations/2.0.54.js create mode 100644 server/migrations/2.0.55.js create mode 100644 server/migrations/2.0.56.js create mode 100644 server/migrations/2.0.57.js create mode 100644 server/migrations/2.0.58.js create mode 100644 server/migrations/2.0.59.js create mode 100644 server/migrations/2.0.60.js create mode 100644 server/migrations/2.0.61.js create mode 100644 server/migrations/2.0.62.js create mode 100644 server/migrations/2.0.63.js create mode 100644 server/migrations/2.0.64.js create mode 100644 server/migrations/2.0.65.js create mode 100644 server/migrations/2.0.66.js create mode 100644 server/migrations/2.0.67.js create mode 100644 server/migrations/2.0.68.js create mode 100644 server/migrations/2.0.69.js create mode 100644 server/migrations/2.0.70.js create mode 100644 server/migrations/2.0.71.js create mode 100644 server/migrations/2.0.72.js create mode 100644 server/migrations/2.0.73.js create mode 100644 server/migrations/2.0.74.js create mode 100644 server/migrations/2.0.75.js create mode 100644 server/migrations/2.0.76.js create mode 100644 server/migrations/2.0.77.js create mode 100644 server/migrations/2.0.78.js create mode 100644 server/migrations/2.0.79.js create mode 100644 server/migrations/2.0.80.js create mode 100644 server/migrations/2.0.81.js create mode 100644 server/migrations/2.0.82.js create mode 100644 server/migrations/2.0.83.js create mode 100644 server/migrations/2.0.84.js create mode 100644 server/migrations/2.1.0.js create mode 100644 server/migrations/2.2.0.js create mode 100644 server/migrations/2.2.1.js create mode 100644 server/migrations/2.2.2.js create mode 100644 server/migrations/2.2.3.js create mode 100644 server/migrations/2.2.4.js create mode 100644 server/migrations/2.2.5.js create mode 100644 server/migrations/2.2.6.js create mode 100644 server/migrations/2.3.0.js create mode 100644 server/migrations/2.3.1.js create mode 100644 server/migrations/2.3.10.js create mode 100644 server/migrations/2.3.2.js create mode 100644 server/migrations/2.3.3.js create mode 100644 server/migrations/2.3.4.js create mode 100644 server/migrations/2.3.5.js create mode 100644 server/migrations/2.3.6.js create mode 100644 server/migrations/2.3.7.js create mode 100644 server/migrations/2.3.8.js create mode 100644 server/migrations/2.3.9.js create mode 100644 server/migrations/2.3.91.js create mode 100644 server/migrations/2.3.92.js create mode 100644 server/migrations/2.3.93.js create mode 100644 server/migrations/2.3.94.js create mode 100644 server/migrations/2.3.95.js create mode 100644 server/migrations/2.3.96.js create mode 100644 server/migrations/2.3.97.js create mode 100644 server/migrations/2.3.98.js create mode 100644 server/migrations/2.4.0.js create mode 100644 server/migrations/2.4.1.js create mode 100644 server/migrations/2.4.10.js create mode 100644 server/migrations/2.4.11.js create mode 100644 server/migrations/2.4.12.js create mode 100644 server/migrations/2.4.13.js create mode 100644 server/migrations/2.4.14.js create mode 100644 server/migrations/2.4.15.js create mode 100644 server/migrations/2.4.16.js create mode 100644 server/migrations/2.4.17.js create mode 100644 server/migrations/2.4.18.js create mode 100644 server/migrations/2.4.19.js create mode 100644 server/migrations/2.4.2.js create mode 100644 server/migrations/2.4.20.js create mode 100644 server/migrations/2.4.21.js create mode 100644 server/migrations/2.4.3.js create mode 100644 server/migrations/2.4.4.js create mode 100644 server/migrations/2.4.5.js create mode 100644 server/migrations/2.4.6.js create mode 100644 server/migrations/2.4.7.js create mode 100644 server/migrations/2.4.8.js create mode 100644 server/migrations/2.4.9.js create mode 100644 server/migrations/2.5.0.js create mode 100644 server/migrations/2.5.1.js create mode 100644 server/migrations/2.5.10.js create mode 100644 server/migrations/2.5.11.js create mode 100644 server/migrations/2.5.12.js create mode 100644 server/migrations/2.5.13.js create mode 100644 server/migrations/2.5.14.js create mode 100644 server/migrations/2.5.15.js create mode 100644 server/migrations/2.5.16.js create mode 100644 server/migrations/2.5.17.js create mode 100644 server/migrations/2.5.18.js create mode 100644 server/migrations/2.5.19.js create mode 100644 server/migrations/2.5.2.js create mode 100644 server/migrations/2.5.20.js create mode 100644 server/migrations/2.5.21.js create mode 100644 server/migrations/2.5.22.js create mode 100644 server/migrations/2.5.23.js create mode 100644 server/migrations/2.5.24.js create mode 100644 server/migrations/2.5.25.js create mode 100644 server/migrations/2.5.26.js create mode 100644 server/migrations/2.5.27.js create mode 100644 server/migrations/2.5.28.js create mode 100644 server/migrations/2.5.29.js create mode 100644 server/migrations/2.5.3.js create mode 100644 server/migrations/2.5.30.js create mode 100644 server/migrations/2.5.31.js create mode 100644 server/migrations/2.5.32.js create mode 100644 server/migrations/2.5.33.js create mode 100644 server/migrations/2.5.34.js create mode 100644 server/migrations/2.5.35.js create mode 100644 server/migrations/2.5.36.js create mode 100644 server/migrations/2.5.37.js create mode 100644 server/migrations/2.5.38.js create mode 100644 server/migrations/2.5.39.js create mode 100644 server/migrations/2.5.4.js create mode 100644 server/migrations/2.5.40.js create mode 100644 server/migrations/2.5.41.js create mode 100644 server/migrations/2.5.42.js create mode 100644 server/migrations/2.5.43.js create mode 100644 server/migrations/2.5.44.js create mode 100644 server/migrations/2.5.45.js create mode 100644 server/migrations/2.5.46.js create mode 100644 server/migrations/2.5.47.js create mode 100644 server/migrations/2.5.48.js create mode 100644 server/migrations/2.5.49.js create mode 100644 server/migrations/2.5.5.js create mode 100644 server/migrations/2.5.50.js create mode 100644 server/migrations/2.5.6.js create mode 100644 server/migrations/2.5.7.js create mode 100644 server/migrations/2.5.8.js create mode 100644 server/migrations/2.5.9.js create mode 100644 server/migrations/2.6.0.js create mode 100644 server/migrations/2.6.1.js create mode 100644 server/migrations/2.6.10.js create mode 100644 server/migrations/2.6.11.js create mode 100644 server/migrations/2.6.2.js create mode 100644 server/migrations/2.6.3.js create mode 100644 server/migrations/2.6.4.js create mode 100644 server/migrations/2.6.5.js create mode 100644 server/migrations/2.6.6.js create mode 100644 server/migrations/2.6.7.js create mode 100644 server/migrations/2.6.8.js create mode 100644 server/migrations/2.6.9.js create mode 100644 server/mysqldb/index.js create mode 100644 server/routes.js create mode 100644 server/rpc/index.js create mode 100644 server/services/agi/channel.js create mode 100644 server/services/agi/error.js create mode 100644 server/services/agi/events.js create mode 100644 server/services/agi/graph/index.js create mode 100644 server/services/agi/index.js create mode 100644 server/services/agi/mailRpc/index.js create mode 100644 server/services/agi/project.js create mode 100644 server/services/agi/reply.js create mode 100644 server/services/agi/rpc/index.js create mode 100644 server/services/agi/scripts/aws/index.js create mode 100644 server/services/agi/scripts/aws/lex/index.js create mode 100644 server/services/agi/scripts/aws/lex/lib/api.js create mode 100644 server/services/agi/scripts/aws/polly/index.js create mode 100644 server/services/agi/scripts/aws/polly/lib/api.js create mode 100644 server/services/agi/scripts/google/asr/index.js create mode 100644 server/services/agi/scripts/google/asr/lib/api.js create mode 100644 server/services/agi/scripts/google/index.js create mode 100644 server/services/agi/scripts/index.js create mode 100644 server/services/agi/scripts/sestek/index.js create mode 100644 server/services/agi/scripts/sestek/nda/index.js create mode 100644 server/services/agi/scripts/tilde/asr/index.js create mode 100644 server/services/agi/scripts/tilde/asr/lib/api.js create mode 100644 server/services/agi/scripts/tilde/index.js create mode 100644 server/services/agi/scripts/tmp/README.md create mode 100644 server/services/agi/server.js create mode 100644 server/services/agi/vertices.js create mode 100644 server/services/ami/acw/index.js create mode 100644 server/services/ami/ami.js create mode 100644 server/services/ami/client.js create mode 100644 server/services/ami/dialer/index.js create mode 100644 server/services/ami/dialer/models/action.js create mode 100644 server/services/ami/dialer/models/agentComplete.js create mode 100644 server/services/ami/dialer/models/final.js create mode 100644 server/services/ami/dialer/models/hangup.js create mode 100644 server/services/ami/dialer/models/history.js create mode 100644 server/services/ami/dialer/models/queueCallerAbandon.js create mode 100644 server/services/ami/dialer/utils/hopper.js create mode 100644 server/services/ami/dialer/utils/index.js create mode 100644 server/services/ami/fax/action.js create mode 100644 server/services/ami/fax/channel.js create mode 100644 server/services/ami/fax/index.js create mode 100644 server/services/ami/fax/rpcDb.js create mode 100644 server/services/ami/fax/util/gs.js create mode 100644 server/services/ami/fax/util/util.js create mode 100644 server/services/ami/index.js create mode 100644 server/services/ami/model/agent.js create mode 100644 server/services/ami/model/campaign.js create mode 100644 server/services/ami/model/channel.js create mode 100644 server/services/ami/model/deskAccount.js create mode 100644 server/services/ami/model/dynamics365Account.js create mode 100644 server/services/ami/model/faxAccount.js create mode 100644 server/services/ami/model/freshdeskAccount.js create mode 100644 server/services/ami/model/freshsalesAccount.js create mode 100644 server/services/ami/model/queueReport.js create mode 100644 server/services/ami/model/salesforceAccount.js create mode 100644 server/services/ami/model/servicenowAccount.js create mode 100644 server/services/ami/model/sugarcrmAccount.js create mode 100644 server/services/ami/model/telephone.js create mode 100644 server/services/ami/model/template.js create mode 100644 server/services/ami/model/trigger.js create mode 100644 server/services/ami/model/trunk.js create mode 100644 server/services/ami/model/voiceExtension.js create mode 100644 server/services/ami/model/voiceQueue.js create mode 100644 server/services/ami/model/voiceQueueSummary.js create mode 100644 server/services/ami/model/vtigerAccount.js create mode 100644 server/services/ami/model/zendeskAccount.js create mode 100644 server/services/ami/model/zohoAccount.js create mode 100644 server/services/ami/preview/action.js create mode 100644 server/services/ami/preview/index.js create mode 100644 server/services/ami/preview/rpcDb.js create mode 100644 server/services/ami/preview/util/util.js create mode 100644 server/services/ami/properties.js create mode 100644 server/services/ami/realtime/index.js create mode 100644 server/services/ami/realtime/utils.js create mode 100644 server/services/ami/report/index.js create mode 100644 server/services/ami/report/userReport.js create mode 100644 server/services/ami/report/voiceAgentReport.js create mode 100644 server/services/ami/report/voiceCallReport.js create mode 100644 server/services/ami/report/voiceDialReport.js create mode 100644 server/services/ami/report/voiceQueueReport.js create mode 100644 server/services/ami/rpc/agentReportPreview.js create mode 100644 server/services/ami/rpc/attachment.js create mode 100644 server/services/ami/rpc/campaign.js create mode 100644 server/services/ami/rpc/cmContact.js create mode 100644 server/services/ami/rpc/cmHopper.js create mode 100644 server/services/ami/rpc/cmHopperAdditionalPhone.js create mode 100644 server/services/ami/rpc/cmHopperBlack.js create mode 100644 server/services/ami/rpc/cmHopperFinal.js create mode 100644 server/services/ami/rpc/cmHopperHistory.js create mode 100644 server/services/ami/rpc/faxAccount.js create mode 100644 server/services/ami/rpc/faxMessage.js create mode 100644 server/services/ami/rpc/integrations/desk.js create mode 100644 server/services/ami/rpc/integrations/dynamics365.js create mode 100644 server/services/ami/rpc/integrations/freshdesk.js create mode 100644 server/services/ami/rpc/integrations/freshsales.js create mode 100644 server/services/ami/rpc/integrations/salesforce.js create mode 100644 server/services/ami/rpc/integrations/servicenow.js create mode 100644 server/services/ami/rpc/integrations/sugarcrm.js create mode 100644 server/services/ami/rpc/integrations/vtiger.js create mode 100644 server/services/ami/rpc/integrations/zendesk.js create mode 100644 server/services/ami/rpc/integrations/zoho.js create mode 100644 server/services/ami/rpc/interval.js create mode 100644 server/services/ami/rpc/memberReport.js create mode 100644 server/services/ami/rpc/setting.js create mode 100644 server/services/ami/rpc/template.js create mode 100644 server/services/ami/rpc/trigger.js create mode 100644 server/services/ami/rpc/trunk.js create mode 100644 server/services/ami/rpc/user.js create mode 100644 server/services/ami/rpc/voiceAgentReport.js create mode 100644 server/services/ami/rpc/voiceCallReport.js create mode 100644 server/services/ami/rpc/voiceDialReport.js create mode 100644 server/services/ami/rpc/voiceExtension.js create mode 100644 server/services/ami/rpc/voiceQueue.js create mode 100644 server/services/ami/rpc/voiceQueueReport.js create mode 100644 server/services/ami/rpc/voiceQueueRt.js create mode 100644 server/services/ami/rpc/voiceRecording.js create mode 100644 server/services/ami/rpc/voiceTransferReport.js create mode 100644 server/services/ami/server/index.js create mode 100644 server/services/ami/trigger/cmContact/index.js create mode 100644 server/services/ami/trigger/index.js create mode 100644 server/services/ami/trigger/integration/desk.js create mode 100644 server/services/ami/trigger/integration/dynamics365.js create mode 100644 server/services/ami/trigger/integration/freshdesk.js create mode 100644 server/services/ami/trigger/integration/freshsales.js create mode 100644 server/services/ami/trigger/integration/index.js create mode 100644 server/services/ami/trigger/integration/salesforce.js create mode 100644 server/services/ami/trigger/integration/servicenow.js create mode 100644 server/services/ami/trigger/integration/sugarcrm.js create mode 100644 server/services/ami/trigger/integration/util.js create mode 100644 server/services/ami/trigger/integration/vtiger.js create mode 100644 server/services/ami/trigger/integration/zendesk.js create mode 100644 server/services/ami/trigger/integration/zoho.js create mode 100644 server/services/ami/trigger/script/index.js create mode 100644 server/services/ami/trigger/urlforward/index.js create mode 100644 server/services/email/client.js create mode 100644 server/services/email/index.js create mode 100644 server/services/email/lib/email.js create mode 100644 server/services/email/lib/imap.js create mode 100644 server/services/email/lib/smtp.js create mode 100644 server/services/email/lib/utils.js create mode 100644 server/services/email/model/mailAccount.js create mode 100644 server/services/email/realtime/index.js create mode 100644 server/services/email/rpc/mailAccount.js create mode 100644 server/services/email/rpc/setting.js create mode 100644 server/services/email/server/index.js create mode 100644 server/services/express/index.js create mode 100644 server/services/routing/client.js create mode 100644 server/services/routing/index.js create mode 100644 server/services/routing/lib/rule-engine.js create mode 100644 server/services/routing/mailRpc/index.js create mode 100644 server/services/routing/model/agent.js create mode 100644 server/services/routing/model/chatQueue.js create mode 100644 server/services/routing/model/faxQueue.js create mode 100644 server/services/routing/model/interval.js create mode 100644 server/services/routing/model/mailQueue.js create mode 100644 server/services/routing/model/openchannelQueue.js create mode 100644 server/services/routing/model/smsQueue.js create mode 100644 server/services/routing/model/whatsappQueue.js create mode 100644 server/services/routing/realtime/index.js create mode 100644 server/services/routing/rpc/chatInteraction.js create mode 100644 server/services/routing/rpc/chatMessage.js create mode 100644 server/services/routing/rpc/chatQueue.js create mode 100644 server/services/routing/rpc/chatQueueReport.js create mode 100644 server/services/routing/rpc/faxInteraction.js create mode 100644 server/services/routing/rpc/faxMessage.js create mode 100644 server/services/routing/rpc/faxQueue.js create mode 100644 server/services/routing/rpc/faxQueueReport.js create mode 100644 server/services/routing/rpc/interval.js create mode 100644 server/services/routing/rpc/mailInteraction.js create mode 100644 server/services/routing/rpc/mailMessage.js create mode 100644 server/services/routing/rpc/mailQueue.js create mode 100644 server/services/routing/rpc/mailQueueReport.js create mode 100644 server/services/routing/rpc/openchannelInteraction.js create mode 100644 server/services/routing/rpc/openchannelMessage.js create mode 100644 server/services/routing/rpc/openchannelQueue.js create mode 100644 server/services/routing/rpc/openchannelQueueReport.js create mode 100644 server/services/routing/rpc/smsInteraction.js create mode 100644 server/services/routing/rpc/smsMessage.js create mode 100644 server/services/routing/rpc/smsQueue.js create mode 100644 server/services/routing/rpc/smsQueueReport.js create mode 100644 server/services/routing/rpc/user.js create mode 100644 server/services/routing/rpc/whatsappInteraction.js create mode 100644 server/services/routing/rpc/whatsappMessage.js create mode 100644 server/services/routing/rpc/whatsappQueue.js create mode 100644 server/services/routing/rpc/whatsappQueueReport.js create mode 100644 server/services/routing/server/applications/agent.js create mode 100644 server/services/routing/server/applications/amazonlex.js create mode 100644 server/services/routing/server/applications/autoreply.js create mode 100644 server/services/routing/server/applications/close.js create mode 100644 server/services/routing/server/applications/dialogflow.js create mode 100644 server/services/routing/server/applications/dialogflowV2.js create mode 100644 server/services/routing/server/applications/gotoif.js create mode 100644 server/services/routing/server/applications/gotop.js create mode 100644 server/services/routing/server/applications/message.js create mode 100644 server/services/routing/server/applications/noop.js create mode 100644 server/services/routing/server/applications/queue.js create mode 100644 server/services/routing/server/applications/strategy/agent.js create mode 100644 server/services/routing/server/applications/strategy/beepall.js create mode 100644 server/services/routing/server/applications/strategy/index.js create mode 100644 server/services/routing/server/applications/strategy/rrmemory.js create mode 100644 server/services/routing/server/applications/strategy/util.js create mode 100644 server/services/routing/server/applications/system.js create mode 100644 server/services/routing/server/applications/tag.js create mode 100644 server/services/routing/server/applications/tvox.js create mode 100644 server/services/routing/server/applications/utils.js create mode 100644 server/services/routing/server/index.js create mode 100644 server/services/routing/server/interval.js create mode 100644 server/services/xdr/agents.controller.js create mode 100644 server/services/xdr/calls.controller.js create mode 100644 server/services/xdr/core.controller.js create mode 100644 server/services/xdr/dials.controller.js create mode 100644 server/services/xdr/index.js create mode 100644 server/services/xdr/members.controller.js create mode 100644 server/services/xdr/queues.controller.js create mode 100644 server/services/xdr/recordings.controller.js create mode 100644 server/services/xdr/transfers.controller.js create mode 100644 server/services/xdr/utils.js create mode 100644 server/utils/client-side-logger.js create mode 100644 server/utils/iftime.js create mode 100644 server/utils/loggers.js create mode 100644 server/utils/mask-sensitive-data.js create mode 100644 server/utils/safe-template.js create mode 100644 server/views/404.html create mode 100644 server/views/downloadInteraction.ejs diff --git a/apidoc/api_project.js b/apidoc/api_project.js index d6272ea..4e6d995 100644 --- a/apidoc/api_project.js +++ b/apidoc/api_project.js @@ -17,7 +17,7 @@ define({ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2022-06-20T13:13:00.453Z", + "time": "2022-06-20T13:43:47.197Z", "url": "http://apidocjs.com", "version": "0.24.0" } diff --git a/apidoc/api_project.json b/apidoc/api_project.json index db30eb2..8d13af2 100644 --- a/apidoc/api_project.json +++ b/apidoc/api_project.json @@ -17,7 +17,7 @@ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2022-06-20T13:13:00.453Z", + "time": "2022-06-20T13:43:47.197Z", "url": "http://apidocjs.com", "version": "0.24.0" } diff --git a/server/api/action/action.attributes.js b/server/api/action/action.attributes.js new file mode 100644 index 0000000..23677a6 --- /dev/null +++ b/server/api/action/action.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x383c=['Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','urlForward[body]','VIRTUAL','getDataValue','STRING','contactManager','motionbar','urlForward','bot','script'];(function(_0x5dc919,_0x16326b){var _0x2447d7=function(_0x2181c8){while(--_0x2181c8){_0x5dc919['push'](_0x5dc919['shift']());}};_0x2447d7(++_0x16326b);}(_0x383c,0x164));var _0xc383=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x383c[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc383('0x0')],'get':function(_0x588d90){return this[_0xc383('0x1')]('action');}},'action':{'type':Sequelize[_0xc383('0x2')],'allowNull':![],'validate':{'isIn':{'args':[[_0xc383('0x3'),'integration',_0xc383('0x4'),'jscripty',_0xc383('0x5'),'browser',_0xc383('0x6'),_0xc383('0x7')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xc383('0x8')},'data1':{'type':Sequelize[_0xc383('0x2')](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[_0xc383('0x2')](0x1000),'comment':_0xc383('0x9')},'data3':{'type':Sequelize[_0xc383('0x2')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0xc383('0x2')](0x1000),'comments':_0xc383('0xa')},'data5':{'type':Sequelize[_0xc383('0x2')](0x1000),'comments':_0xc383('0xb')},'data6':{'type':Sequelize[_0xc383('0x2')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0xc383('0xc')],'comments':_0xc383('0xd')}}; \ No newline at end of file diff --git a/server/api/action/action.controller.js b/server/api/action/action.controller.js new file mode 100644 index 0000000..f7e122a --- /dev/null +++ b/server/api/action/action.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x25e6=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','destroy','error','stack','name','send','body','Action','params','then','catch','find','rimraf','zip-dir','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','jsforce'];(function(_0x19a87b,_0x26c651){var _0x4e41e6=function(_0x235345){while(--_0x235345){_0x19a87b['push'](_0x19a87b['shift']());}};_0x4e41e6(++_0x26c651);}(_0x25e6,0xdb));var _0x625e=function(_0x5581a3,_0x2fabd8){_0x5581a3=_0x5581a3-0x0;var _0x3c277b=_0x25e6[_0x5581a3];return _0x3c277b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x625e('0x0'));var zipdir=require(_0x625e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x625e('0x2'));var BPromise=require(_0x625e('0x3'));var Mustache=require(_0x625e('0x4'));var util=require('util');var path=require('path');var sox=require(_0x625e('0x5'));var csv=require('to-csv');var ejs=require(_0x625e('0x6'));var fs=require('fs');var fs_extra=require(_0x625e('0x7'));var _=require(_0x625e('0x8'));var squel=require(_0x625e('0x9'));var crypto=require('crypto');var jsforce=require(_0x625e('0xa'));var deskjs=require(_0x625e('0xb'));var toCsv=require('to-csv');var querystring=require(_0x625e('0xc'));var Papa=require(_0x625e('0xd'));var Redis=require(_0x625e('0xe'));var authService=require(_0x625e('0xf'));var qs=require(_0x625e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x625e('0x11'));var logger=require('../../config/logger')(_0x625e('0x12'));var utils=require(_0x625e('0x13'));var config=require(_0x625e('0x14'));var licenseUtil=require(_0x625e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49f895,_0x17bc27){_0x17bc27=_0x17bc27||0xcc;return function(_0x1fe4a6){if(_0x1fe4a6){return _0x49f895[_0x625e('0x16')](_0x17bc27);}return _0x49f895[_0x625e('0x17')](_0x17bc27)[_0x625e('0x18')]();};}function respondWithResult(_0x1e0410,_0xbabaf){_0xbabaf=_0xbabaf||0xc8;return function(_0x2c169a){if(_0x2c169a){return _0x1e0410[_0x625e('0x17')](_0xbabaf)[_0x625e('0x19')](_0x2c169a);}};}function respondWithFilteredResult(_0x4beb13,_0x2b6b13){return function(_0x3e8813){if(_0x3e8813){var _0x65b2a4=typeof _0x2b6b13['offset']==='undefined'&&typeof _0x2b6b13[_0x625e('0x1a')]===_0x625e('0x1b');var _0x41dc53=_0x3e8813[_0x625e('0x1c')];var _0x47260c=_0x65b2a4?0x0:_0x2b6b13[_0x625e('0x1d')];var _0x4b4bca=_0x65b2a4?_0x3e8813[_0x625e('0x1c')]:_0x2b6b13[_0x625e('0x1d')]+_0x2b6b13[_0x625e('0x1a')];var _0x5e1d7a;if(_0x4b4bca>=_0x41dc53){_0x4b4bca=_0x41dc53;_0x5e1d7a=0xc8;}else{_0x5e1d7a=0xce;}_0x4beb13['status'](_0x5e1d7a);return _0x4beb13[_0x625e('0x1e')](_0x625e('0x1f'),_0x47260c+'-'+_0x4b4bca+'/'+_0x41dc53)['json'](_0x3e8813);}return null;};}function patchUpdates(_0x3efd2c){return function(_0x2842c4){try{jsonpatch[_0x625e('0x20')](_0x2842c4,_0x3efd2c,!![]);}catch(_0x30e548){return BPromise['reject'](_0x30e548);}return _0x2842c4[_0x625e('0x21')]();};}function saveUpdates(_0x1e7d4d,_0x5043f9){return function(_0x55693a){if(_0x55693a){return _0x55693a[_0x625e('0x22')](_0x1e7d4d)['then'](function(_0x3d3ff0){return _0x3d3ff0;});}return null;};}function removeEntity(_0x2e4b51,_0x2d0e81){return function(_0x2fb4f2){if(_0x2fb4f2){return _0x2fb4f2[_0x625e('0x23')]()['then'](function(){_0x2e4b51[_0x625e('0x17')](0xcc)[_0x625e('0x18')]();});}};}function handleEntityNotFound(_0x491a03,_0x2dc1c1){return function(_0x138505){if(!_0x138505){_0x491a03[_0x625e('0x16')](0x194);}return _0x138505;};}function handleError(_0x4e22b6,_0x45a451){_0x45a451=_0x45a451||0x1f4;return function(_0x531246){logger[_0x625e('0x24')](_0x531246[_0x625e('0x25')]);if(_0x531246['name']){delete _0x531246[_0x625e('0x26')];}_0x4e22b6[_0x625e('0x17')](_0x45a451)[_0x625e('0x27')](_0x531246);};}exports['update']=function(_0x5a94b2,_0x3bdb2d){if(_0x5a94b2['body']['id']){delete _0x5a94b2[_0x625e('0x28')]['id'];}return db[_0x625e('0x29')]['find']({'where':{'id':_0x5a94b2[_0x625e('0x2a')]['id']}})[_0x625e('0x2b')](handleEntityNotFound(_0x3bdb2d,null))[_0x625e('0x2b')](saveUpdates(_0x5a94b2['body'],null))[_0x625e('0x2b')](respondWithResult(_0x3bdb2d,null))[_0x625e('0x2c')](handleError(_0x3bdb2d,null));};exports['destroy']=function(_0x38a391,_0x5d86c3){return db['Action'][_0x625e('0x2d')]({'where':{'id':_0x38a391[_0x625e('0x2a')]['id']}})['then'](handleEntityNotFound(_0x5d86c3,null))['then'](removeEntity(_0x5d86c3,null))[_0x625e('0x2c')](handleError(_0x5d86c3,null));}; \ No newline at end of file diff --git a/server/api/action/action.model.js b/server/api/action/action.model.js new file mode 100644 index 0000000..ed47394 --- /dev/null +++ b/server/api/action/action.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7bad=['api','bluebird','request-promise','rimraf','./action.attributes','define','Action','lodash','util','../../config/logger'];(function(_0x378720,_0xa711f1){var _0x47920a=function(_0xc5056){while(--_0xc5056){_0x378720['push'](_0x378720['shift']());}};_0x47920a(++_0xa711f1);}(_0x7bad,0xb1));var _0xd7ba=function(_0x5b142f,_0x10815a){_0x5b142f=_0x5b142f-0x0;var _0x327bbd=_0x7bad[_0x5b142f];return _0x327bbd;};'use strict';var _=require(_0xd7ba('0x0'));var util=require(_0xd7ba('0x1'));var logger=require(_0xd7ba('0x2'))(_0xd7ba('0x3'));var moment=require('moment');var BPromise=require(_0xd7ba('0x4'));var rp=require(_0xd7ba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd7ba('0x6'));var config=require('../../config/environment');var attributes=require(_0xd7ba('0x7'));module['exports']=function(_0xacb246,_0x1d8288){return _0xacb246[_0xd7ba('0x8')](_0xd7ba('0x9'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/action/action.rpc.js b/server/api/action/action.rpc.js new file mode 100644 index 0000000..58ad728 --- /dev/null +++ b/server/api/action/action.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x52cde3,_0x28d007){var _0x106ff1=function(_0x54613e){while(--_0x54613e){_0x52cde3['push'](_0x52cde3['shift']());}};_0x106ff1(++_0x28d007);}(_0x5fab,0x177));var _0xb5fa=function(_0xf0f7ba,_0x48be70){_0xf0f7ba=_0xf0f7ba-0x0;var _0x44382c=_0x5fab[_0xf0f7ba];return _0x44382c;};'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 diff --git a/server/api/action/index.js b/server/api/action/index.js new file mode 100644 index 0000000..e73def9 --- /dev/null +++ b/server/api/action/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf464=['update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated'];(function(_0x1d1a0e,_0x38aa63){var _0x42ad05=function(_0x5a506d){while(--_0x5a506d){_0x1d1a0e['push'](_0x1d1a0e['shift']());}};_0x42ad05(++_0x38aa63);}(_0xf464,0x146));var _0x4f46=function(_0x2eb5b4,_0x452438){_0x2eb5b4=_0x2eb5b4-0x0;var _0xcd022e=_0xf464[_0x2eb5b4];return _0xcd022e;};'use strict';var multer=require('multer');var util=require(_0x4f46('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4f46('0x1'));var router=express[_0x4f46('0x2')]();var fs_extra=require(_0x4f46('0x3'));var auth=require(_0x4f46('0x4'));var interaction=require(_0x4f46('0x5'));var config=require(_0x4f46('0x6'));var controller=require('./action.controller');router[_0x4f46('0x7')](_0x4f46('0x8'),auth[_0x4f46('0x9')](),controller[_0x4f46('0xa')]);router[_0x4f46('0xb')](_0x4f46('0x8'),auth[_0x4f46('0x9')](),controller[_0x4f46('0xc')]);module[_0x4f46('0xd')]=router; \ No newline at end of file diff --git a/server/api/analyticCustomReport/analyticCustomReport.attributes.js b/server/api/analyticCustomReport/analyticCustomReport.attributes.js new file mode 100644 index 0000000..73d3693 --- /dev/null +++ b/server/api/analyticCustomReport/analyticCustomReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5fab=['exports','STRING','TEXT','sequelize'];(function(_0x6c0123,_0x4c8d3b){var _0x5a87d2=function(_0x1ff614){while(--_0x1ff614){_0x6c0123['push'](_0x6c0123['shift']());}};_0x5a87d2(++_0x4c8d3b);}(_0x5fab,0x177));var _0xb5fa=function(_0x493030,_0x29ec7e){_0x493030=_0x493030-0x0;var _0x56f5e4=_0x5fab[_0x493030];return _0x56f5e4;};'use strict';var Sequelize=require(_0xb5fa('0x0'));module[_0xb5fa('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb5fa('0x2')]},'parent':{'type':Sequelize[_0xb5fa('0x2')]},'table':{'type':Sequelize[_0xb5fa('0x2')]},'conditions':{'type':Sequelize[_0xb5fa('0x3')]},'joins':{'type':Sequelize[_0xb5fa('0x3')]}}; \ No newline at end of file diff --git a/server/api/analyticCustomReport/analyticCustomReport.controller.js b/server/api/analyticCustomReport/analyticCustomReport.controller.js new file mode 100644 index 0000000..88a54b3 --- /dev/null +++ b/server/api/analyticCustomReport/analyticCustomReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x053c=['Reports','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','left_join','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','value','getFields','from','DESC','foreignKey','output','web','%s-%s.%s','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','child_process','../../components/export/','savename','countTable','COUNT(*)','QueryTypes','runReport','HOUR(%s)','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','to-csv','fs-extra','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','CustomReports','UserProfileResource','stack','name','index','AnalyticCustomReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','get','role','user'];(function(_0x8012b2,_0x370e3b){var _0x99bfa9=function(_0x4d1e29){while(--_0x4d1e29){_0x8012b2['push'](_0x8012b2['shift']());}};_0x99bfa9(++_0x370e3b);}(_0x053c,0xfc));var _0xc053=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x053c[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0xc053('0x0'));var rimraf=require(_0xc053('0x1'));var zipdir=require(_0xc053('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc053('0x3'));var BPromise=require(_0xc053('0x4'));var Mustache=require(_0xc053('0x5'));var util=require(_0xc053('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xc053('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc053('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc053('0x9'));var jsforce=require(_0xc053('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xc053('0x7'));var querystring=require('querystring');var Papa=require(_0xc053('0xb'));var Redis=require(_0xc053('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xc053('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc053('0xe'));var logger=require(_0xc053('0xf'))(_0xc053('0x10'));var utils=require(_0xc053('0x11'));var config=require(_0xc053('0x12'));var licenseUtil=require(_0xc053('0x13'));var db=require(_0xc053('0x14'))['db'];var dbH=require(_0xc053('0x14'))[_0xc053('0x15')];function respondWithStatusCode(_0x57f00e,_0x1a5749){_0x1a5749=_0x1a5749||0xcc;return function(_0x32032e){if(_0x32032e){return _0x57f00e[_0xc053('0x16')](_0x1a5749);}return _0x57f00e[_0xc053('0x17')](_0x1a5749)[_0xc053('0x18')]();};}function respondWithResult(_0x7ea9f3,_0x22d111){_0x22d111=_0x22d111||0xc8;return function(_0x2b1854){if(_0x2b1854){return _0x7ea9f3['status'](_0x22d111)[_0xc053('0x19')](_0x2b1854);}};}function respondWithFilteredResult(_0x264c0e,_0x8a4b1b){return function(_0xb50f73){if(_0xb50f73){var _0x116d00=typeof _0x8a4b1b['offset']===_0xc053('0x1a')&&typeof _0x8a4b1b['limit']===_0xc053('0x1a');var _0x4f8ce9=_0xb50f73['count'];var _0x55a034=_0x116d00?0x0:_0x8a4b1b[_0xc053('0x1b')];var _0x521734=_0x116d00?_0xb50f73[_0xc053('0x1c')]:_0x8a4b1b[_0xc053('0x1b')]+_0x8a4b1b[_0xc053('0x1d')];var _0x23287e;if(_0x521734>=_0x4f8ce9){_0x521734=_0x4f8ce9;_0x23287e=0xc8;}else{_0x23287e=0xce;}_0x264c0e[_0xc053('0x17')](_0x23287e);return _0x264c0e[_0xc053('0x1e')](_0xc053('0x1f'),_0x55a034+'-'+_0x521734+'/'+_0x4f8ce9)[_0xc053('0x19')](_0xb50f73);}return null;};}function patchUpdates(_0x4af9dd){return function(_0x5ee846){try{jsonpatch[_0xc053('0x20')](_0x5ee846,_0x4af9dd,!![]);}catch(_0x4d9a88){return BPromise[_0xc053('0x21')](_0x4d9a88);}return _0x5ee846[_0xc053('0x22')]();};}function saveUpdates(_0x2d58f2,_0x9a6f91){return function(_0x48459d){if(_0x48459d){return _0x48459d[_0xc053('0x23')](_0x2d58f2)[_0xc053('0x24')](function(_0x27e75d){return _0x27e75d;});}return null;};}function removeEntity(_0x4918e2,_0x46bf14){return function(_0x2e93d7){if(_0x2e93d7){return _0x2e93d7[_0xc053('0x25')]()['then'](function(){var _0x29d74b=_0x2e93d7['get']({'plain':!![]});var _0x31c535=_0xc053('0x26');return db[_0xc053('0x27')][_0xc053('0x25')]({'where':{'type':_0x31c535,'resourceId':_0x29d74b['id']}})[_0xc053('0x24')](function(){return _0x2e93d7;});})['then'](function(){_0x4918e2[_0xc053('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x211fc7,_0x5a56d2){return function(_0x55b3e6){if(!_0x55b3e6){_0x211fc7[_0xc053('0x16')](0x194);}return _0x55b3e6;};}function handleError(_0x4b6b47,_0x1f4020){_0x1f4020=_0x1f4020||0x1f4;return function(_0x259092){logger['error'](_0x259092[_0xc053('0x28')]);if(_0x259092[_0xc053('0x29')]){delete _0x259092[_0xc053('0x29')];}_0x4b6b47['status'](_0x1f4020)['send'](_0x259092);};}exports[_0xc053('0x2a')]=function(_0x5e4f7e,_0x51cdb3){var _0x11d526={},_0x7c7a9b={},_0x1a761f={'count':0x0,'rows':[]};var _0xf4e60=_['map'](db[_0xc053('0x2b')][_0xc053('0x2c')],function(_0x46414a){return{'name':_0x46414a[_0xc053('0x2d')],'type':_0x46414a[_0xc053('0x2e')][_0xc053('0x2f')]};});_0x7c7a9b['model']=_['map'](_0xf4e60,_0xc053('0x29'));_0x7c7a9b['query']=_[_0xc053('0x30')](_0x5e4f7e[_0xc053('0x31')]);_0x7c7a9b[_0xc053('0x32')]=_[_0xc053('0x33')](_0x7c7a9b[_0xc053('0x34')],_0x7c7a9b[_0xc053('0x31')]);_0x11d526[_0xc053('0x35')]=_[_0xc053('0x33')](_0x7c7a9b[_0xc053('0x34')],qs[_0xc053('0x36')](_0x5e4f7e[_0xc053('0x31')]['fields']));_0x11d526[_0xc053('0x35')]=_0x11d526[_0xc053('0x35')][_0xc053('0x37')]?_0x11d526[_0xc053('0x35')]:_0x7c7a9b[_0xc053('0x34')];if(!_0x5e4f7e['query'][_0xc053('0x38')](_0xc053('0x39'))){_0x11d526[_0xc053('0x1d')]=qs[_0xc053('0x1d')](_0x5e4f7e[_0xc053('0x31')][_0xc053('0x1d')]);_0x11d526[_0xc053('0x1b')]=qs[_0xc053('0x1b')](_0x5e4f7e['query']['offset']);}_0x11d526[_0xc053('0x3a')]=qs[_0xc053('0x3b')](_0x5e4f7e[_0xc053('0x31')][_0xc053('0x3b')]);_0x11d526[_0xc053('0x3c')]=qs[_0xc053('0x32')](_[_0xc053('0x3d')](_0x5e4f7e[_0xc053('0x31')],_0x7c7a9b[_0xc053('0x32')]),_0xf4e60);if(_0x5e4f7e[_0xc053('0x31')][_0xc053('0x3e')]){_0x11d526['where']=_[_0xc053('0x3f')](_0x11d526[_0xc053('0x3c')],{'$or':_[_0xc053('0x40')](_0xf4e60,function(_0x1fa566){if(_0x1fa566[_0xc053('0x2e')]!==_0xc053('0x41')){var _0x2660df={};_0x2660df[_0x1fa566['name']]={'$like':'%'+_0x5e4f7e[_0xc053('0x31')][_0xc053('0x3e')]+'%'};return _0x2660df;}})});}_0x11d526=_[_0xc053('0x3f')]({},_0x11d526,_0x5e4f7e[_0xc053('0x42')]);var _0x565058={'where':_0x11d526['where']};return db[_0xc053('0x2b')][_0xc053('0x1c')](_0x565058)[_0xc053('0x24')](function(_0x39638f){_0x1a761f[_0xc053('0x1c')]=_0x39638f;if(_0x5e4f7e[_0xc053('0x31')][_0xc053('0x43')]){_0x11d526[_0xc053('0x44')]=[{'all':!![]}];}return db[_0xc053('0x2b')]['findAll'](_0x11d526);})[_0xc053('0x24')](function(_0x24a9e7){_0x1a761f[_0xc053('0x45')]=_0x24a9e7;return _0x1a761f;})[_0xc053('0x24')](respondWithFilteredResult(_0x51cdb3,_0x11d526))[_0xc053('0x46')](handleError(_0x51cdb3,null));};exports[_0xc053('0x47')]=function(_0x14436d,_0x2c86c5){var _0x311ff8={'raw':![],'where':{'id':_0x14436d[_0xc053('0x48')]['id']}},_0x5a3d4c={};_0x5a3d4c[_0xc053('0x34')]=_['keys'](db['AnalyticCustomReport'][_0xc053('0x2c')]);_0x5a3d4c[_0xc053('0x31')]=_[_0xc053('0x30')](_0x14436d['query']);_0x5a3d4c['filters']=_['intersection'](_0x5a3d4c[_0xc053('0x34')],_0x5a3d4c[_0xc053('0x31')]);_0x311ff8[_0xc053('0x35')]=_[_0xc053('0x33')](_0x5a3d4c[_0xc053('0x34')],qs[_0xc053('0x36')](_0x14436d[_0xc053('0x31')][_0xc053('0x36')]));_0x311ff8['attributes']=_0x311ff8['attributes'][_0xc053('0x37')]?_0x311ff8[_0xc053('0x35')]:_0x5a3d4c['model'];if(_0x14436d[_0xc053('0x31')][_0xc053('0x43')]){_0x311ff8[_0xc053('0x44')]=[{'all':!![]}];}_0x311ff8=_['merge']({},_0x311ff8,_0x14436d[_0xc053('0x42')]);return db[_0xc053('0x2b')][_0xc053('0x49')](_0x311ff8)['then'](handleEntityNotFound(_0x2c86c5,null))['then'](respondWithResult(_0x2c86c5,null))['catch'](handleError(_0x2c86c5,null));};exports[_0xc053('0x4a')]=function(_0x445dbe,_0x428bf2){return db[_0xc053('0x2b')][_0xc053('0x4a')](_0x445dbe['body'],{})['then'](function(_0x2eab3e){var _0x24dd02=_0x445dbe['user'][_0xc053('0x4b')]({'plain':!![]});if(!_0x24dd02)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x24dd02[_0xc053('0x4c')]===_0xc053('0x4d')){var _0x487722=_0x2eab3e[_0xc053('0x4b')]({'plain':!![]});var _0x190a0d=_0xc053('0x4e');return db[_0xc053('0x4f')][_0xc053('0x49')]({'where':{'name':_0x190a0d,'userProfileId':_0x24dd02['userProfileId']},'raw':!![]})['then'](function(_0x38d3bc){if(_0x38d3bc&&_0x38d3bc[_0xc053('0x50')]===0x0){return db['UserProfileResource'][_0xc053('0x4a')]({'name':_0x487722[_0xc053('0x29')],'resourceId':_0x487722['id'],'type':_0xc053('0x26'),'sectionId':_0x38d3bc['id']},{})[_0xc053('0x24')](function(){return _0x2eab3e;});}else{return _0x2eab3e;}})['catch'](function(_0x2e95a8){logger[_0xc053('0x51')](_0xc053('0x52'),_0x2e95a8);throw _0x2e95a8;});}return _0x2eab3e;})[_0xc053('0x24')](respondWithResult(_0x428bf2,0xc9))[_0xc053('0x46')](handleError(_0x428bf2,null));};exports[_0xc053('0x23')]=function(_0x44dda1,_0x1f8f3e){if(_0x44dda1[_0xc053('0x53')]['id']){delete _0x44dda1['body']['id'];}return db[_0xc053('0x2b')][_0xc053('0x49')]({'where':{'id':_0x44dda1[_0xc053('0x48')]['id']}})[_0xc053('0x24')](handleEntityNotFound(_0x1f8f3e,null))[_0xc053('0x24')](saveUpdates(_0x44dda1[_0xc053('0x53')],null))[_0xc053('0x24')](respondWithResult(_0x1f8f3e,null))['catch'](handleError(_0x1f8f3e,null));};exports[_0xc053('0x25')]=function(_0x360454,_0x2e0388){return db[_0xc053('0x2b')][_0xc053('0x49')]({'where':{'id':_0x360454[_0xc053('0x48')]['id']}})['then'](handleEntityNotFound(_0x2e0388,null))[_0xc053('0x24')](removeEntity(_0x2e0388,null))['catch'](handleError(_0x2e0388,null));};exports[_0xc053('0x54')]=function(_0x1f1ebe,_0x1dba92){var _0x2e7ff0=0xa;var _0xf15d13=[_0xc053('0x55'),'left_join',_0xc053('0x56'),_0xc053('0x57')];var _0x6d7b78={'SUM':_0xc053('0x58'),'COUNT':_0xc053('0x59'),'COUNT DISTINCT':_0xc053('0x5a'),'MAX':_0xc053('0x5b'),'MIN':_0xc053('0x5c'),'AVG':_0xc053('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc053('0x5e'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x47c883={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xc053('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0xc053('0x60'),'UNIX_TIMESTAMP':_0xc053('0x61')};var _0x40510e=function(_0x591150){return!_[_0xc053('0x62')]([_0xc053('0x63'),_0xc053('0x64'),_0xc053('0x65'),_0xc053('0x66')],_0x591150);};var _0xf079c7=function(_0x382414){if(!_0x382414||!_0x382414[_0xc053('0x67')][_0xc053('0x37')]){return'';}for(var _0x5c54e2='(',_0x158b40=0x0;_0x158b40<_0x382414[_0xc053('0x67')][_0xc053('0x37')];_0x158b40+=0x1){_0x158b40>0x0&&(_0x5c54e2+='\x20'+_0x382414[_0xc053('0x68')]+'\x20');_0x5c54e2+=_0x382414[_0xc053('0x67')][_0x158b40][_0xc053('0x69')]?_0xf079c7(_0x382414[_0xc053('0x67')][_0x158b40][_0xc053('0x69')]):_0x382414[_0xc053('0x67')][_0x158b40][_0xc053('0x6a')]+'\x20'+_0x382414[_0xc053('0x67')][_0x158b40][_0xc053('0x6b')]+(_0x40510e(_0x382414[_0xc053('0x67')][_0x158b40][_0xc053('0x6b')])?'\x20'+_0x382414[_0xc053('0x67')][_0x158b40]['value']:'');}return _0x5c54e2+')';};var _0x1b2bda={'where':{'id':_0x1f1ebe[_0xc053('0x48')]['id']}},_0x336e0f,_0x3e95fa,_0x5cf202,_0x348347,_0x3e7c75;_0x1b2bda=_[_0xc053('0x3f')]({},_0x1b2bda,_0x1f1ebe[_0xc053('0x42')]);return db[_0xc053('0x2b')][_0xc053('0x49')](_0x1b2bda)[_0xc053('0x24')](function(_0x3395c5){if(_0x3395c5){_0x336e0f=_0x3395c5;return _0x3395c5['getFields']();}return null;})['then'](function(_0x2439ed){if(_0x2439ed){if(!_0x2439ed[_0xc053('0x37')]){throw new db[(_0xc053('0x6c'))][(_0xc053('0x6d'))](_0xc053('0x6e'),0x193);}_0x3e95fa=_0x2439ed;return db[_0xc053('0x6f')][_0xc053('0x70')]({'raw':!![]});}return null;})[_0xc053('0x24')](function(_0x14733f){if(_0x14733f){_0x5cf202=_[_0xc053('0x71')](_0x14733f,'id');var _0x59e7ab;var _0x39ad2c=squel[_0xc053('0x72')]();_0x39ad2c['from'](_0x336e0f[_0xc053('0x73')]);for(var _0x359938=0x0;_0x359938<_0x3e95fa['length'];_0x359938+=0x1){_0x59e7ab=_0x3e95fa[_0x359938][_0xc053('0x74')]?_0x5cf202[_0x3e95fa[_0x359938]['MetricId']][_0xc053('0x75')]:_0x3e95fa[_0x359938]['field'];_0x59e7ab=_0x3e95fa[_0x359938][_0xc053('0x76')]?_[_0xc053('0x77')](_0x6d7b78[_0x3e95fa[_0x359938]['function']],'%s',_0x59e7ab):_0x59e7ab;_0x59e7ab=_0x3e95fa[_0x359938]['format']?_[_0xc053('0x77')](_0x47c883[_0x3e95fa[_0x359938][_0xc053('0x78')]],'%s',_0x59e7ab):_0x59e7ab;if(_0x3e95fa[_0x359938][_0xc053('0x79')]){_0x39ad2c[_0xc053('0x69')](_0x59e7ab);}_0x3e95fa[_0x359938][_0xc053('0x7a')]&&_0x39ad2c['order'](_0x59e7ab,_0x3e95fa[_0x359938]['orderBy']==='DESC'?![]:!![]);_0x39ad2c['field'](_0x59e7ab,_0x3e95fa[_0x359938][_0xc053('0x7b')]||_0x59e7ab);}if(_0x336e0f[_0xc053('0x7c')]){_0x336e0f[_0xc053('0x7c')]=JSON[_0xc053('0x7d')](_0x336e0f[_0xc053('0x7c')]);for(var _0x2cd9ad=0x0;_0x2cd9ad<_0x336e0f['joins']['length'];_0x2cd9ad+=0x1){if(_0x336e0f['joins'][_0x2cd9ad]['type']&&_[_0xc053('0x62')](_0xf15d13,_0x336e0f[_0xc053('0x7c')][_0x2cd9ad][_0xc053('0x2e')])&&_0x336e0f['joins'][_0x2cd9ad]['parentKey']&&_0x336e0f[_0xc053('0x7c')][_0x2cd9ad][_0xc053('0x7e')]&&_0x336e0f[_0xc053('0x7c')][_0x2cd9ad]['foreignKey']){_0x39ad2c[_0x336e0f[_0xc053('0x7c')][_0x2cd9ad]['type']](_0x336e0f['joins'][_0x2cd9ad][_0xc053('0x7e')],null,util[_0xc053('0x78')](_0xc053('0x7f'),_0x336e0f[_0xc053('0x73')],_0x336e0f[_0xc053('0x7c')][_0x2cd9ad][_0xc053('0x80')],_0x336e0f[_0xc053('0x7c')][_0x2cd9ad][_0xc053('0x7e')],_0x336e0f[_0xc053('0x7c')][_0x2cd9ad]['foreignKey']));}}}if(_0x336e0f[_0xc053('0x81')]){_0x336e0f['conditions']=JSON['parse'](_0x336e0f[_0xc053('0x81')]);_0x39ad2c[_0xc053('0x3c')](_0xf079c7(_0x336e0f[_0xc053('0x81')][_0xc053('0x69')]));}_0x3e7c75=_0x39ad2c[_0xc053('0x82')]();_0x39ad2c[_0xc053('0x1d')](_0x2e7ff0);_0x39ad2c[_0xc053('0x1b')](0x0);logger[_0xc053('0x83')](_0xc053('0x84'),_0x39ad2c[_0xc053('0x85')]());return dbH[_0xc053('0x86')][_0xc053('0x31')](_0x39ad2c['toString'](),{'type':dbH[_0xc053('0x86')]['QueryTypes'][_0xc053('0x87')]});}})[_0xc053('0x24')](respondWithResult(_0x1dba92,null))['catch'](handleError(_0x1dba92,null));};function runReport(_0x4b0e4b,_0x3c8ef2,_0x2ce017){var _0xb3e19=_0x3c8ef2['name'];var _0x44bea2=0xa;var _0x41db2a=['join',_0xc053('0x88'),_0xc053('0x56'),_0xc053('0x57')];var _0xff585a={'SUM':_0xc053('0x58'),'COUNT':_0xc053('0x59'),'COUNT DISTINCT':_0xc053('0x5a'),'MAX':'MAX(%s)','MIN':_0xc053('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xc053('0x89'),'GROUP_CONCAT ASC':_0xc053('0x5e'),'GROUP_CONCAT DESC':_0xc053('0x8a')};var _0x455624={'SEC_TO_TIME':_0xc053('0x8b'),'DATE':_0xc053('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0xc053('0x60'),'UNIX_TIMESTAMP':_0xc053('0x61')};var _0x175b2d=function(_0x582b58){return!_[_0xc053('0x62')]([_0xc053('0x63'),'IS\x20NOT\x20NULL',_0xc053('0x65'),'IS\x20NOT\x20EMPTY'],_0x582b58);};var _0x1d58e7=function(_0x912610){if(!_0x912610||!_0x912610[_0xc053('0x67')][_0xc053('0x37')]){return'';}for(var _0xc4b5c2='(',_0x498fbd=0x0;_0x498fbd<_0x912610[_0xc053('0x67')][_0xc053('0x37')];_0x498fbd+=0x1){_0x498fbd>0x0&&(_0xc4b5c2+='\x20'+_0x912610[_0xc053('0x68')]+'\x20');_0xc4b5c2+=_0x912610[_0xc053('0x67')][_0x498fbd][_0xc053('0x69')]?_0x1d58e7(_0x912610['rules'][_0x498fbd][_0xc053('0x69')]):_0x912610['rules'][_0x498fbd][_0xc053('0x6a')]+'\x20'+_0x912610[_0xc053('0x67')][_0x498fbd][_0xc053('0x6b')]+(_0x175b2d(_0x912610[_0xc053('0x67')][_0x498fbd]['condition'])?'\x20'+_0x912610['rules'][_0x498fbd][_0xc053('0x8c')]:'');}return _0xc4b5c2+')';};var _0x48e883={'where':{'id':_0x4b0e4b['id']}},_0x554167,_0x3541ae,_0x4ffa82,_0x23b526,_0x532d2d;_0x48e883=_[_0xc053('0x3f')]({},_0x48e883,_0x2ce017);return db[_0xc053('0x2b')]['find'](_0x48e883)['then'](function(_0x5f3457){if(_0x5f3457){_0x554167=_0x5f3457;return _0x5f3457[_0xc053('0x8d')]();}return null;})[_0xc053('0x24')](function(_0x382c5f){if(_0x382c5f){if(!_0x382c5f[_0xc053('0x37')]){throw new db[(_0xc053('0x6c'))][(_0xc053('0x6d'))](_0xc053('0x6e'),0x193);}_0x3541ae=_0x382c5f;return db['AnalyticMetric'][_0xc053('0x70')]({'raw':!![]});}return null;})[_0xc053('0x24')](function(_0x18779d){if(_0x18779d){_0x4ffa82=_['keyBy'](_0x18779d,'id');var _0x422598;var _0x35c486=squel['select']();_0x35c486[_0xc053('0x8e')](_0x554167[_0xc053('0x73')]);for(var _0x18a9f8=0x0;_0x18a9f8<_0x3541ae[_0xc053('0x37')];_0x18a9f8+=0x1){_0x422598=_0x3541ae[_0x18a9f8]['MetricId']?_0x4ffa82[_0x3541ae[_0x18a9f8][_0xc053('0x74')]][_0xc053('0x75')]:_0x3541ae[_0x18a9f8][_0xc053('0x6a')];_0x422598=_0x3541ae[_0x18a9f8][_0xc053('0x76')]?_[_0xc053('0x77')](_0xff585a[_0x3541ae[_0x18a9f8][_0xc053('0x76')]],'%s',_0x422598):_0x422598;_0x422598=_0x3541ae[_0x18a9f8][_0xc053('0x78')]?_[_0xc053('0x77')](_0x455624[_0x3541ae[_0x18a9f8][_0xc053('0x78')]],'%s',_0x422598):_0x422598;if(_0x3541ae[_0x18a9f8][_0xc053('0x79')]){_0x35c486[_0xc053('0x69')](_0x422598);}_0x3541ae[_0x18a9f8][_0xc053('0x7a')]&&_0x35c486[_0xc053('0x3a')](_0x422598,_0x3541ae[_0x18a9f8][_0xc053('0x7a')]===_0xc053('0x8f')?![]:!![]);_0x35c486['field'](_0x422598,_0x3541ae[_0x18a9f8][_0xc053('0x7b')]||_0x422598);}if(_0x554167[_0xc053('0x7c')]){_0x554167[_0xc053('0x7c')]=JSON[_0xc053('0x7d')](_0x554167[_0xc053('0x7c')]);for(var _0x24efb6=0x0;_0x24efb6<_0x554167[_0xc053('0x7c')]['length'];_0x24efb6+=0x1){if(_0x554167[_0xc053('0x7c')][_0x24efb6][_0xc053('0x2e')]&&_[_0xc053('0x62')](_0x41db2a,_0x554167[_0xc053('0x7c')][_0x24efb6][_0xc053('0x2e')])&&_0x554167['joins'][_0x24efb6][_0xc053('0x80')]&&_0x554167[_0xc053('0x7c')][_0x24efb6][_0xc053('0x7e')]&&_0x554167['joins'][_0x24efb6][_0xc053('0x90')]){_0x35c486[_0x554167['joins'][_0x24efb6][_0xc053('0x2e')]](_0x554167['joins'][_0x24efb6][_0xc053('0x7e')],null,util[_0xc053('0x78')]('%s.%s\x20=\x20%s.%s',_0x554167['table'],_0x554167[_0xc053('0x7c')][_0x24efb6][_0xc053('0x80')],_0x554167['joins'][_0x24efb6][_0xc053('0x7e')],_0x554167[_0xc053('0x7c')][_0x24efb6][_0xc053('0x90')]));}}}if(_0x554167['conditions']){_0x554167[_0xc053('0x81')]=JSON[_0xc053('0x7d')](_0x554167[_0xc053('0x81')]);_0x35c486['where'](_0x1d58e7(_0x554167[_0xc053('0x81')]['group']));}_0x532d2d=_0x35c486[_0xc053('0x82')]();_0x35c486['limit'](_0x44bea2);_0x35c486[_0xc053('0x1b')](0x0);return;}})[_0xc053('0x24')](function(){if(_0x3c8ef2[_0xc053('0x91')]===_0xc053('0x92')){return null;}var _0x462082=_[_0xc053('0x3f')](_0x3c8ef2,{'name':_0x3c8ef2['fullPath']||_0x3c8ef2[_0xc053('0x29')]||_0x554167[_0xc053('0x29')],'basename':_0xb3e19,'savename':util[_0xc053('0x78')](_0xc053('0x93'),_0x3c8ef2[_0xc053('0x29')]||_0x554167[_0xc053('0x29')],require('randomstring')[_0xc053('0x94')](0x4),_0x3c8ef2[_0xc053('0x91')]||_0xc053('0x95')),'reportId':_0x554167['id'],'reportType':'custom'});return db[_0xc053('0x96')]['create'](_0x462082,{'raw':!![]});})[_0xc053('0x24')](function(_0x43a803){if(_0x554167[_0xc053('0x73')]===_0xc053('0x97')){_0x532d2d[_0xc053('0x3c')](_0x554167['table']+_0xc053('0x98'),_0x3c8ef2['startDate'],_0x3c8ef2['endDate']);}else{_0x532d2d[_0xc053('0x3c')](_0x554167[_0xc053('0x73')]+_0xc053('0x99'),_0x3c8ef2[_0xc053('0x9a')],_0x3c8ef2[_0xc053('0x9b')]);}if(_0x43a803){logger[_0xc053('0x9c')]('Run\x20Query:',_0x532d2d[_0xc053('0x85')]());require(_0xc053('0x9d'))['fork'](path[_0xc053('0x55')](__dirname,_0xc053('0x9e'),_0x43a803[_0xc053('0x91')]),[_0x43a803['id'],_0x532d2d['toString'](),path['join'](__dirname,'../../files/reports',_0x43a803[_0xc053('0x9f')]),_0xb3e19]);return _0x43a803;}else{var _0x2a35f7=squel[_0xc053('0x72')]();_0x2a35f7['from']('('+_0x532d2d[_0xc053('0x85')]()+')',_0xc053('0xa0'));_0x2a35f7[_0xc053('0x6a')](_0xc053('0xa1'),_0xc053('0x1c'));_0x532d2d[_0xc053('0x1d')](_0x3c8ef2[_0xc053('0x1d')]||_0x44bea2);_0x532d2d[_0xc053('0x1b')](_0x3c8ef2[_0xc053('0x1b')]||0x0);return dbH[_0xc053('0x86')][_0xc053('0x31')](_0x2a35f7['toString'](),{'type':dbH[_0xc053('0x86')][_0xc053('0xa2')]['SELECT']})['then'](function(_0x4ce280){if(!_0x4ce280[_0xc053('0x37')]){_0x23b526=0x0;}else{_0x23b526=_0x4ce280[0x0][_0xc053('0x1c')]||0x0;}return dbH['sequelize'][_0xc053('0x31')](_0x532d2d[_0xc053('0x85')](),{'type':dbH[_0xc053('0x86')][_0xc053('0xa2')][_0xc053('0x87')]});})[_0xc053('0x24')](function(_0xfa9717){return{'rows':_0xfa9717||[],'count':_0x23b526};});}});}exports['run']=function(_0x541b23,_0x5cbe53){return runReport(_0x541b23[_0xc053('0x48')],_0x541b23[_0xc053('0x31')],_0x541b23[_0xc053('0x42')])[_0xc053('0x24')](respondWithResult(_0x5cbe53,null))[_0xc053('0x46')](handleError(_0x5cbe53,null));};exports[_0xc053('0xa3')]=runReport;exports[_0xc053('0x31')]=function(_0x4c338f,_0x1c5125){var _0x5d1dc1=0xa;var _0x307832=[_0xc053('0x55'),_0xc053('0x88'),_0xc053('0x56'),_0xc053('0x57')];var _0x294585={'SUM':_0xc053('0x58'),'COUNT':_0xc053('0x59'),'COUNT DISTINCT':_0xc053('0x5a'),'MAX':_0xc053('0x5b'),'MIN':_0xc053('0x5c'),'AVG':_0xc053('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc053('0x5e'),'GROUP_CONCAT DESC':_0xc053('0x8a')};var _0x5c93fe={'SEC_TO_TIME':_0xc053('0x8b'),'DATE':_0xc053('0x5f'),'HOUR':_0xc053('0xa4'),'ROUND':_0xc053('0x60'),'UNIX_TIMESTAMP':_0xc053('0x61')};var _0x5b7718=function(_0x213616){return!_[_0xc053('0x62')](['IS\x20NULL',_0xc053('0x64'),_0xc053('0x65'),_0xc053('0x66')],_0x213616);};var _0x49be74=function(_0x41fd14){if(!_0x41fd14||!_0x41fd14[_0xc053('0x67')]['length']){return'';}for(var _0x478c6e='(',_0x5535ea=0x0;_0x5535ea<_0x41fd14[_0xc053('0x67')][_0xc053('0x37')];_0x5535ea+=0x1){_0x5535ea>0x0&&(_0x478c6e+='\x20'+_0x41fd14[_0xc053('0x68')]+'\x20');_0x478c6e+=_0x41fd14[_0xc053('0x67')][_0x5535ea][_0xc053('0x69')]?_0x49be74(_0x41fd14[_0xc053('0x67')][_0x5535ea][_0xc053('0x69')]):_0x41fd14[_0xc053('0x67')][_0x5535ea][_0xc053('0x6a')]+'\x20'+_0x41fd14[_0xc053('0x67')][_0x5535ea][_0xc053('0x6b')]+(_0x5b7718(_0x41fd14[_0xc053('0x67')][_0x5535ea][_0xc053('0x6b')])?'\x20'+_0x41fd14[_0xc053('0x67')][_0x5535ea]['value']:'');}return _0x478c6e+')';};var _0x4440db={'where':{'id':_0x4c338f['params']['id']}},_0x4c25ff,_0x22d7d5,_0x31d8a4,_0x2dab0d,_0x122ba0;_0x4440db=_['merge']({},_0x4440db,_0x4c338f['options']);return db[_0xc053('0x2b')]['find'](_0x4440db)[_0xc053('0x24')](function(_0x4dc941){if(_0x4dc941){_0x4c25ff=_0x4dc941;return _0x4dc941['getFields']();}return null;})[_0xc053('0x24')](function(_0x9ac83f){if(_0x9ac83f){if(!_0x9ac83f[_0xc053('0x37')]){throw new db['Sequelize']['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x22d7d5=_0x9ac83f;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xc053('0x24')](function(_0x8b0205){if(_0x8b0205){_0x31d8a4=_[_0xc053('0x71')](_0x8b0205,'id');var _0x371aa2;var _0x21fbe1=squel['select']();_0x21fbe1['from'](_0x4c25ff[_0xc053('0x73')]);for(var _0x384a77=0x0;_0x384a77<_0x22d7d5[_0xc053('0x37')];_0x384a77+=0x1){_0x371aa2=_0x22d7d5[_0x384a77][_0xc053('0x74')]?_0x31d8a4[_0x22d7d5[_0x384a77][_0xc053('0x74')]][_0xc053('0x75')]:_0x22d7d5[_0x384a77][_0xc053('0x6a')];_0x371aa2=_0x22d7d5[_0x384a77][_0xc053('0x76')]?_[_0xc053('0x77')](_0x294585[_0x22d7d5[_0x384a77][_0xc053('0x76')]],'%s',_0x371aa2):_0x371aa2;_0x371aa2=_0x22d7d5[_0x384a77][_0xc053('0x78')]?_[_0xc053('0x77')](_0x5c93fe[_0x22d7d5[_0x384a77][_0xc053('0x78')]],'%s',_0x371aa2):_0x371aa2;if(_0x22d7d5[_0x384a77][_0xc053('0x79')]){_0x21fbe1[_0xc053('0x69')](_0x371aa2);}_0x22d7d5[_0x384a77][_0xc053('0x7a')]&&_0x21fbe1[_0xc053('0x3a')](_0x371aa2,_0x22d7d5[_0x384a77]['orderBy']===_0xc053('0x8f')?![]:!![]);_0x21fbe1[_0xc053('0x6a')](_0x371aa2,_0x22d7d5[_0x384a77][_0xc053('0x7b')]||_0x371aa2);}if(_0x4c25ff[_0xc053('0x7c')]){_0x4c25ff[_0xc053('0x7c')]=JSON[_0xc053('0x7d')](_0x4c25ff[_0xc053('0x7c')]);for(var _0x490dd7=0x0;_0x490dd7<_0x4c25ff[_0xc053('0x7c')]['length'];_0x490dd7+=0x1){if(_0x4c25ff['joins'][_0x490dd7][_0xc053('0x2e')]&&_[_0xc053('0x62')](_0x307832,_0x4c25ff[_0xc053('0x7c')][_0x490dd7][_0xc053('0x2e')])&&_0x4c25ff[_0xc053('0x7c')][_0x490dd7][_0xc053('0x80')]&&_0x4c25ff[_0xc053('0x7c')][_0x490dd7]['foreignTable']&&_0x4c25ff[_0xc053('0x7c')][_0x490dd7]['foreignKey']){_0x21fbe1[_0x4c25ff[_0xc053('0x7c')][_0x490dd7][_0xc053('0x2e')]](_0x4c25ff[_0xc053('0x7c')][_0x490dd7][_0xc053('0x7e')],null,util[_0xc053('0x78')](_0xc053('0x7f'),_0x4c25ff[_0xc053('0x73')],_0x4c25ff[_0xc053('0x7c')][_0x490dd7][_0xc053('0x80')],_0x4c25ff['joins'][_0x490dd7]['foreignTable'],_0x4c25ff['joins'][_0x490dd7][_0xc053('0x90')]));}}}if(_0x4c25ff[_0xc053('0x81')]){_0x4c25ff[_0xc053('0x81')]=JSON[_0xc053('0x7d')](_0x4c25ff[_0xc053('0x81')]);_0x21fbe1[_0xc053('0x3c')](_0x49be74(_0x4c25ff[_0xc053('0x81')][_0xc053('0x69')]));}_0x122ba0=_0x21fbe1[_0xc053('0x82')]();_0x21fbe1[_0xc053('0x1d')](_0x5d1dc1);_0x21fbe1[_0xc053('0x1b')](0x0);logger['debug'](_0xc053('0x84'),_0x21fbe1[_0xc053('0x85')]());return dbH[_0xc053('0x86')]['query'](_0x21fbe1[_0xc053('0x85')](),{'type':dbH[_0xc053('0x86')][_0xc053('0xa2')][_0xc053('0x87')]});}})[_0xc053('0x24')](function(){return{'sql':_0x122ba0[_0xc053('0x85')]()};})[_0xc053('0x24')](respondWithResult(_0x1c5125,null))[_0xc053('0x46')](handleError(_0x1c5125,null));}; \ No newline at end of file diff --git a/server/api/analyticCustomReport/analyticCustomReport.model.js b/server/api/analyticCustomReport/analyticCustomReport.model.js new file mode 100644 index 0000000..69b69cb --- /dev/null +++ b/server/api/analyticCustomReport/analyticCustomReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa66e=['moment','bluebird','request-promise','path','../../config/environment','./analyticCustomReport.attributes','exports','define','lodash','../../config/logger'];(function(_0x2f57b2,_0xa8e91a){var _0x5ace77=function(_0x59c00a){while(--_0x59c00a){_0x2f57b2['push'](_0x2f57b2['shift']());}};_0x5ace77(++_0xa8e91a);}(_0xa66e,0x1f2));var _0xea66=function(_0x4e5dcf,_0x32ef3e){_0x4e5dcf=_0x4e5dcf-0x0;var _0xff7a0f=_0xa66e[_0x4e5dcf];return _0xff7a0f;};'use strict';var _=require(_0xea66('0x0'));var util=require('util');var logger=require(_0xea66('0x1'))('api');var moment=require(_0xea66('0x2'));var BPromise=require(_0xea66('0x3'));var rp=require(_0xea66('0x4'));var fs=require('fs');var path=require(_0xea66('0x5'));var rimraf=require('rimraf');var config=require(_0xea66('0x6'));var attributes=require(_0xea66('0x7'));module[_0xea66('0x8')]=function(_0x499344,_0x5b60c6){return _0x499344[_0xea66('0x9')]('AnalyticCustomReport',attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/analyticCustomReport/analyticCustomReport.rpc.js b/server/api/analyticCustomReport/analyticCustomReport.rpc.js new file mode 100644 index 0000000..e7ce7b9 --- /dev/null +++ b/server/api/analyticCustomReport/analyticCustomReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x69ee=['AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x4fe370,_0x3e5324){var _0x4c191e=function(_0x4c0517){while(--_0x4c0517){_0x4fe370['push'](_0x4fe370['shift']());}};_0x4c191e(++_0x3e5324);}(_0x69ee,0x133));var _0xe69e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x69ee[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xe69e('0x0'));var util=require(_0xe69e('0x1'));var moment=require(_0xe69e('0x2'));var BPromise=require(_0xe69e('0x3'));var rs=require(_0xe69e('0x4'));var fs=require('fs');var Redis=require(_0xe69e('0x5'));var db=require(_0xe69e('0x6'))['db'];var utils=require(_0xe69e('0x7'));var logger=require(_0xe69e('0x8'))(_0xe69e('0x9'));var config=require(_0xe69e('0xa'));var jayson=require(_0xe69e('0xb'));var client=jayson[_0xe69e('0xc')][_0xe69e('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x53e87d,_0x3f169a,_0x24af57){return new BPromise(function(_0x3b482c,_0x338e6f){return client[_0xe69e('0xe')](_0x53e87d,_0x24af57)[_0xe69e('0xf')](function(_0x4661ad){logger[_0xe69e('0x10')](_0xe69e('0x11'),_0x3f169a,_0xe69e('0x12'));logger[_0xe69e('0x13')](_0xe69e('0x14'),_0x3f169a,'request\x20sent',JSON[_0xe69e('0x15')](_0x4661ad));if(_0x4661ad[_0xe69e('0x16')]){if(_0x4661ad['error'][_0xe69e('0x17')]===0x1f4){logger[_0xe69e('0x16')](_0xe69e('0x11'),_0x3f169a,_0x4661ad[_0xe69e('0x16')][_0xe69e('0x18')]);return _0x338e6f(_0x4661ad[_0xe69e('0x16')][_0xe69e('0x18')]);}logger['error'](_0xe69e('0x11'),_0x3f169a,_0x4661ad[_0xe69e('0x16')][_0xe69e('0x18')]);return _0x3b482c(_0x4661ad[_0xe69e('0x16')]['message']);}else{logger['info'](_0xe69e('0x11'),_0x3f169a,_0xe69e('0x12'));_0x3b482c(_0x4661ad[_0xe69e('0x19')][_0xe69e('0x18')]);}})[_0xe69e('0x1a')](function(_0x345d55){logger[_0xe69e('0x16')](_0xe69e('0x11'),_0x3f169a,_0x345d55);_0x338e6f(_0x345d55);});});} \ No newline at end of file diff --git a/server/api/analyticCustomReport/index.js b/server/api/analyticCustomReport/index.js new file mode 100644 index 0000000..48f21d9 --- /dev/null +++ b/server/api/analyticCustomReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x43af=['isAuthenticated','/:id','show','/:id/preview','run','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get'];(function(_0x549feb,_0x544a55){var _0x30b9b6=function(_0x12b583){while(--_0x12b583){_0x549feb['push'](_0x549feb['shift']());}};_0x30b9b6(++_0x544a55);}(_0x43af,0x100));var _0xf43a=function(_0x5267b3,_0x556b53){_0x5267b3=_0x5267b3-0x0;var _0x77157=_0x43af[_0x5267b3];return _0x77157;};'use strict';var multer=require(_0xf43a('0x0'));var util=require(_0xf43a('0x1'));var path=require(_0xf43a('0x2'));var timeout=require(_0xf43a('0x3'));var express=require(_0xf43a('0x4'));var router=express[_0xf43a('0x5')]();var fs_extra=require(_0xf43a('0x6'));var auth=require(_0xf43a('0x7'));var interaction=require(_0xf43a('0x8'));var config=require('../../config/environment');var controller=require('./analyticCustomReport.controller');router[_0xf43a('0x9')]('/',auth[_0xf43a('0xa')](),controller['index']);router['get'](_0xf43a('0xb'),auth[_0xf43a('0xa')](),controller[_0xf43a('0xc')]);router[_0xf43a('0x9')](_0xf43a('0xd'),auth['isAuthenticated'](),controller['preview']);router[_0xf43a('0x9')]('/:id/run',auth['isAuthenticated'](),controller[_0xf43a('0xe')]);router[_0xf43a('0x9')]('/:id/query',auth[_0xf43a('0xa')](),controller['query']);router[_0xf43a('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf43a('0x10')](_0xf43a('0xb'),auth[_0xf43a('0xa')](),controller[_0xf43a('0x11')]);router['delete']('/:id',auth[_0xf43a('0xa')](),controller['destroy']);module[_0xf43a('0x12')]=router; \ No newline at end of file diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js b/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js new file mode 100644 index 0000000..6ed90f5 --- /dev/null +++ b/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5d17=['sequelize','exports','STRING','TEXT'];(function(_0x51b6ac,_0xa7a756){var _0x52e611=function(_0x3beb01){while(--_0x3beb01){_0x51b6ac['push'](_0x51b6ac['shift']());}};_0x52e611(++_0xa7a756);}(_0x5d17,0x114));var _0x75d1=function(_0x32e2eb,_0x3347b7){_0x32e2eb=_0x32e2eb-0x0;var _0x2418ce=_0x5d17[_0x32e2eb];return _0x2418ce;};'use strict';var Sequelize=require(_0x75d1('0x0'));module[_0x75d1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x75d1('0x2')]},'table':{'type':Sequelize[_0x75d1('0x2')]},'conditions':{'type':Sequelize[_0x75d1('0x3')]},'joins':{'type':Sequelize['TEXT']}}; \ No newline at end of file diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.controller.js b/server/api/analyticDefaultReport/analyticDefaultReport.controller.js new file mode 100644 index 0000000..81b164f --- /dev/null +++ b/server/api/analyticDefaultReport/analyticDefaultReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2ef3=['Sequelize','from','foreignKey','output','web','fullPath','generate','csv','cdr','startDate','endDate','info','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','runReport','IS\x20NULL','IS\x20NOT\x20EMPTY','metric','Limited\x20Query:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','get','DefaultReports','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticDefaultReport','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','autoAssociation','update','preview','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20EMPTY','operator','rules','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','MetricId','field','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','conditions','parse','clone','debug','toString','sequelize','QueryTypes','SELECT','join','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x2ef3,0xba));var _0x32ef=function(_0x2e32e2,_0x5506ab){_0x2e32e2=_0x2e32e2-0x0;var _0x40d019=_0x2ef3[_0x2e32e2];return _0x40d019;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];var dbH=require(_0x32ef('0x18'))['dbH'];function respondWithStatusCode(_0x3e98df,_0x1ef1ae){_0x1ef1ae=_0x1ef1ae||0xcc;return function(_0x5c3eb9){if(_0x5c3eb9){return _0x3e98df['sendStatus'](_0x1ef1ae);}return _0x3e98df[_0x32ef('0x19')](_0x1ef1ae)['end']();};}function respondWithResult(_0x326fce,_0x40a6e6){_0x40a6e6=_0x40a6e6||0xc8;return function(_0x93d492){if(_0x93d492){return _0x326fce[_0x32ef('0x19')](_0x40a6e6)['json'](_0x93d492);}};}function respondWithFilteredResult(_0x55bf0b,_0x531e30){return function(_0x13db1a){if(_0x13db1a){var _0x3950e6=typeof _0x531e30[_0x32ef('0x1a')]==='undefined'&&typeof _0x531e30['limit']===_0x32ef('0x1b');var _0x1a9476=_0x13db1a[_0x32ef('0x1c')];var _0x57863c=_0x3950e6?0x0:_0x531e30[_0x32ef('0x1a')];var _0x33e230=_0x3950e6?_0x13db1a['count']:_0x531e30[_0x32ef('0x1a')]+_0x531e30[_0x32ef('0x1d')];var _0x26aff3;if(_0x33e230>=_0x1a9476){_0x33e230=_0x1a9476;_0x26aff3=0xc8;}else{_0x26aff3=0xce;}_0x55bf0b[_0x32ef('0x19')](_0x26aff3);return _0x55bf0b[_0x32ef('0x1e')](_0x32ef('0x1f'),_0x57863c+'-'+_0x33e230+'/'+_0x1a9476)['json'](_0x13db1a);}return null;};}function patchUpdates(_0x3c5b78){return function(_0x5cc3ef){try{jsonpatch[_0x32ef('0x20')](_0x5cc3ef,_0x3c5b78,!![]);}catch(_0x3a20ca){return BPromise['reject'](_0x3a20ca);}return _0x5cc3ef[_0x32ef('0x21')]();};}function saveUpdates(_0x97780,_0x5e8898){return function(_0x55f7f2){if(_0x55f7f2){return _0x55f7f2['update'](_0x97780)[_0x32ef('0x22')](function(_0xb30fab){return _0xb30fab;});}return null;};}function removeEntity(_0x225feb,_0x478bef){return function(_0x59585f){if(_0x59585f){return _0x59585f[_0x32ef('0x23')]()['then'](function(){var _0x51a412=_0x59585f[_0x32ef('0x24')]({'plain':!![]});var _0x14d4b3=_0x32ef('0x25');return db[_0x32ef('0x26')][_0x32ef('0x23')]({'where':{'type':_0x14d4b3,'resourceId':_0x51a412['id']}})[_0x32ef('0x22')](function(){return _0x59585f;});})[_0x32ef('0x22')](function(){_0x225feb[_0x32ef('0x19')](0xcc)[_0x32ef('0x27')]();});}};}function handleEntityNotFound(_0x2f52d7,_0x1335e2){return function(_0xba4b3f){if(!_0xba4b3f){_0x2f52d7['sendStatus'](0x194);}return _0xba4b3f;};}function handleError(_0xd65fde,_0x2f5d06){_0x2f5d06=_0x2f5d06||0x1f4;return function(_0x5a04cd){logger[_0x32ef('0x28')](_0x5a04cd[_0x32ef('0x29')]);if(_0x5a04cd[_0x32ef('0x2a')]){delete _0x5a04cd[_0x32ef('0x2a')];}_0xd65fde['status'](_0x2f5d06)[_0x32ef('0x2b')](_0x5a04cd);};}exports[_0x32ef('0x2c')]=function(_0x31dbc3,_0x2ac686){var _0x1b668a={},_0x1a6ed2={},_0x1a122d={'count':0x0,'rows':[]};var _0x575f3e=_[_0x32ef('0x2d')](db['AnalyticDefaultReport'][_0x32ef('0x2e')],function(_0x2b6c6a){return{'name':_0x2b6c6a['fieldName'],'type':_0x2b6c6a[_0x32ef('0x2f')][_0x32ef('0x30')]};});_0x1a6ed2[_0x32ef('0x31')]=_[_0x32ef('0x2d')](_0x575f3e,_0x32ef('0x2a'));_0x1a6ed2['query']=_['keys'](_0x31dbc3[_0x32ef('0x32')]);_0x1a6ed2['filters']=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],_0x1a6ed2[_0x32ef('0x32')]);_0x1b668a[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],qs['fields'](_0x31dbc3['query']['fields']));_0x1b668a[_0x32ef('0x34')]=_0x1b668a[_0x32ef('0x34')][_0x32ef('0x35')]?_0x1b668a['attributes']:_0x1a6ed2['model'];if(!_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x36')](_0x32ef('0x37'))){_0x1b668a['limit']=qs['limit'](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1d')]);_0x1b668a[_0x32ef('0x1a')]=qs[_0x32ef('0x1a')](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1a')]);}_0x1b668a[_0x32ef('0x38')]=qs[_0x32ef('0x39')](_0x31dbc3[_0x32ef('0x32')]['sort']);_0x1b668a[_0x32ef('0x3a')]=qs[_0x32ef('0x3b')](_[_0x32ef('0x3c')](_0x31dbc3['query'],_0x1a6ed2[_0x32ef('0x3b')]),_0x575f3e);if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x3d')]){_0x1b668a[_0x32ef('0x3a')]=_[_0x32ef('0x3e')](_0x1b668a[_0x32ef('0x3a')],{'$or':_[_0x32ef('0x2d')](_0x575f3e,function(_0x1cebed){if(_0x1cebed[_0x32ef('0x2f')]!==_0x32ef('0x3f')){var _0xb4db74={};_0xb4db74[_0x1cebed[_0x32ef('0x2a')]]={'$like':'%'+_0x31dbc3['query'][_0x32ef('0x3d')]+'%'};return _0xb4db74;}})});}_0x1b668a=_[_0x32ef('0x3e')]({},_0x1b668a,_0x31dbc3[_0x32ef('0x40')]);var _0x1733e3={'where':_0x1b668a[_0x32ef('0x3a')]};return db[_0x32ef('0x41')][_0x32ef('0x1c')](_0x1733e3)['then'](function(_0x538758){_0x1a122d[_0x32ef('0x1c')]=_0x538758;if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x42')]){_0x1b668a[_0x32ef('0x43')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x32ef('0x44')](_0x1b668a);})[_0x32ef('0x22')](function(_0x5d2f06){_0x1a122d[_0x32ef('0x45')]=_0x5d2f06;return _0x1a122d;})['then'](respondWithFilteredResult(_0x2ac686,_0x1b668a))[_0x32ef('0x46')](handleError(_0x2ac686,null));};exports[_0x32ef('0x47')]=function(_0x37a497,_0x3be46d){var _0x2c2b62={'raw':!![],'where':{'id':_0x37a497[_0x32ef('0x48')]['id']}},_0x2310ae={};_0x2310ae[_0x32ef('0x31')]=_[_0x32ef('0x49')](db[_0x32ef('0x41')]['rawAttributes']);_0x2310ae[_0x32ef('0x32')]=_['keys'](_0x37a497[_0x32ef('0x32')]);_0x2310ae[_0x32ef('0x3b')]=_[_0x32ef('0x33')](_0x2310ae['model'],_0x2310ae[_0x32ef('0x32')]);_0x2c2b62[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x2310ae[_0x32ef('0x31')],qs[_0x32ef('0x4a')](_0x37a497[_0x32ef('0x32')][_0x32ef('0x4a')]));_0x2c2b62['attributes']=_0x2c2b62['attributes'][_0x32ef('0x35')]?_0x2c2b62[_0x32ef('0x34')]:_0x2310ae[_0x32ef('0x31')];if(_0x37a497[_0x32ef('0x32')][_0x32ef('0x42')]){_0x2c2b62[_0x32ef('0x43')]=[{'all':!![]}];}_0x2c2b62=_[_0x32ef('0x3e')]({},_0x2c2b62,_0x37a497[_0x32ef('0x40')]);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2c2b62)[_0x32ef('0x22')](handleEntityNotFound(_0x3be46d,null))[_0x32ef('0x22')](respondWithResult(_0x3be46d,null))[_0x32ef('0x46')](handleError(_0x3be46d,null));};exports['create']=function(_0x420f00,_0x12fbd7){return db[_0x32ef('0x41')][_0x32ef('0x4c')](_0x420f00[_0x32ef('0x4d')],{})[_0x32ef('0x22')](function(_0x278696){var _0x1acded=_0x420f00[_0x32ef('0x4e')][_0x32ef('0x24')]({'plain':!![]});if(!_0x1acded)throw new Error(_0x32ef('0x4f'));if(_0x1acded[_0x32ef('0x50')]===_0x32ef('0x4e')){var _0x326445=_0x278696[_0x32ef('0x24')]({'plain':!![]});var _0x3fb4d8=_0x32ef('0x51');return db[_0x32ef('0x52')]['find']({'where':{'name':_0x3fb4d8,'userProfileId':_0x1acded['userProfileId']},'raw':!![]})[_0x32ef('0x22')](function(_0x259c32){if(_0x259c32&&_0x259c32[_0x32ef('0x53')]===0x0){return db[_0x32ef('0x26')][_0x32ef('0x4c')]({'name':_0x326445[_0x32ef('0x2a')],'resourceId':_0x326445['id'],'type':_0x32ef('0x25'),'sectionId':_0x259c32['id']},{})[_0x32ef('0x22')](function(){return _0x278696;});}else{return _0x278696;}})[_0x32ef('0x46')](function(_0x368bf1){logger[_0x32ef('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x368bf1);throw _0x368bf1;});}return _0x278696;})[_0x32ef('0x22')](respondWithResult(_0x12fbd7,0xc9))[_0x32ef('0x46')](handleError(_0x12fbd7,null));};exports[_0x32ef('0x54')]=function(_0x3fe01f,_0x38314a){if(_0x3fe01f[_0x32ef('0x4d')]['id']){delete _0x3fe01f['body']['id'];}return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x3fe01f[_0x32ef('0x48')]['id']}})['then'](handleEntityNotFound(_0x38314a,null))[_0x32ef('0x22')](saveUpdates(_0x3fe01f['body'],null))[_0x32ef('0x22')](respondWithResult(_0x38314a,null))[_0x32ef('0x46')](handleError(_0x38314a,null));};exports['destroy']=function(_0x206ad5,_0x59e5f9){return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x206ad5[_0x32ef('0x48')]['id']}})[_0x32ef('0x22')](handleEntityNotFound(_0x59e5f9,null))[_0x32ef('0x22')](removeEntity(_0x59e5f9,null))[_0x32ef('0x46')](handleError(_0x59e5f9,null));};exports[_0x32ef('0x55')]=function(_0x56260f,_0x56cc75){var _0xdfa103=0xa;var _0x52232a=['join',_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0x6aae59={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0xbd059e={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2ac877=function(_0x3c31d0){return!_[_0x32ef('0x63')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x3c31d0);};var _0x17f447=function(_0x5bb114){if(!_0x5bb114||!_0x5bb114['rules'][_0x32ef('0x35')]){return'';}for(var _0x208989='(',_0x10cb37=0x0;_0x10cb37<_0x5bb114['rules'][_0x32ef('0x35')];_0x10cb37+=0x1){_0x10cb37>0x0&&(_0x208989+='\x20'+_0x5bb114[_0x32ef('0x65')]+'\x20');_0x208989+=_0x5bb114[_0x32ef('0x66')][_0x10cb37]['group']?_0x17f447(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x67')]):_0x5bb114['rules'][_0x10cb37]['field']+'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')]+(_0x2ac877(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')])?'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x69')]:'');}return _0x208989+')';};var _0x4c89e8={'where':{'id':_0x56260f[_0x32ef('0x48')]['id']}},_0x285330,_0x63b65,_0x25b6d6,_0x36ed97,_0x21e930;_0x4c89e8=_[_0x32ef('0x3e')]({},_0x4c89e8,_0x56260f[_0x32ef('0x40')]);return db[_0x32ef('0x41')]['find'](_0x4c89e8)[_0x32ef('0x22')](function(_0x29ff58){if(_0x29ff58){_0x285330=_0x29ff58;return _0x29ff58[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0x79ae28){if(_0x79ae28){if(!_0x79ae28['length']){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x63b65=_0x79ae28;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x526fb1){if(_0x526fb1){_0x25b6d6=_[_0x32ef('0x6e')](_0x526fb1,'id');var _0x544045;var _0x216e2f=squel[_0x32ef('0x6f')]();_0x216e2f['from'](_0x285330['table']);for(var _0x2c9f7a=0x0;_0x2c9f7a<_0x63b65[_0x32ef('0x35')];_0x2c9f7a+=0x1){_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x70')]?_0x25b6d6[_0x63b65[_0x2c9f7a]['MetricId']]['metric']:_0x63b65[_0x2c9f7a][_0x32ef('0x71')];_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x6aae59[_0x63b65[_0x2c9f7a][_0x32ef('0x72')]],'%s',_0x544045):_0x544045;_0x544045=_0x63b65[_0x2c9f7a]['format']?_[_0x32ef('0x73')](_0xbd059e[_0x63b65[_0x2c9f7a][_0x32ef('0x74')]],'%s',_0x544045):_0x544045;if(_0x63b65[_0x2c9f7a][_0x32ef('0x75')]){_0x216e2f[_0x32ef('0x67')](_0x544045);}_0x63b65[_0x2c9f7a][_0x32ef('0x76')]&&_0x216e2f[_0x32ef('0x38')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x216e2f[_0x32ef('0x71')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x78')]||_0x544045);}if(_0x285330[_0x32ef('0x79')]){_0x285330[_0x32ef('0x79')]=JSON['parse'](_0x285330['joins']);for(var _0x3a9c97=0x0;_0x3a9c97<_0x285330[_0x32ef('0x79')]['length'];_0x3a9c97+=0x1){if(_0x285330[_0x32ef('0x79')][_0x3a9c97]['type']&&_[_0x32ef('0x63')](_0x52232a,_0x285330[_0x32ef('0x79')][_0x3a9c97][_0x32ef('0x2f')])&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7a')]&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')]&&_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']){_0x216e2f[_0x285330['joins'][_0x3a9c97][_0x32ef('0x2f')]](_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')],null,util['format'](_0x32ef('0x7c'),_0x285330[_0x32ef('0x7d')],_0x285330[_0x32ef('0x79')][_0x3a9c97]['parentKey'],_0x285330['joins'][_0x3a9c97]['foreignTable'],_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']));}}}if(_0x285330[_0x32ef('0x7e')]){_0x285330[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x285330[_0x32ef('0x7e')]);_0x216e2f[_0x32ef('0x3a')](_0x17f447(_0x285330[_0x32ef('0x7e')]['group']));}_0x21e930=_0x216e2f[_0x32ef('0x80')]();_0x216e2f['limit'](_0xdfa103);_0x216e2f['offset'](0x0);logger[_0x32ef('0x81')]('Limited\x20Query:',_0x216e2f[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')]['query'](_0x216e2f[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')][_0x32ef('0x84')][_0x32ef('0x85')]});}})[_0x32ef('0x22')](respondWithResult(_0x56cc75,null))[_0x32ef('0x46')](handleError(_0x56cc75,null));};function runReport(_0x4b5506,_0x51736f,_0x35b10d){var _0x5e0b55=_0x51736f[_0x32ef('0x2a')];var _0x266688=0xa;var _0x114d8e=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),'cross_join'];var _0x3232ca={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':_0x32ef('0x88'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x211fb1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0xfb4845=function(_0x21067e){return!_[_0x32ef('0x63')](['IS\x20NULL',_0x32ef('0x8b'),_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x21067e);};var _0x35653b=function(_0x5ea727){if(!_0x5ea727||!_0x5ea727[_0x32ef('0x66')]['length']){return'';}for(var _0x43f36e='(',_0x39300f=0x0;_0x39300f<_0x5ea727[_0x32ef('0x66')][_0x32ef('0x35')];_0x39300f+=0x1){_0x39300f>0x0&&(_0x43f36e+='\x20'+_0x5ea727['operator']+'\x20');_0x43f36e+=_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x67')]?_0x35653b(_0x5ea727[_0x32ef('0x66')][_0x39300f]['group']):_0x5ea727['rules'][_0x39300f]['field']+'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')]+(_0xfb4845(_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')])?'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f]['value']:'');}return _0x43f36e+')';};var _0x2678e3={'where':{'id':_0x4b5506['id']}},_0x5b3deb,_0x471de6,_0x7b0ea5,_0xc43e1,_0x4baa7a;_0x2678e3=_[_0x32ef('0x3e')]({},_0x2678e3,_0x35b10d);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2678e3)[_0x32ef('0x22')](function(_0x28bebb){if(_0x28bebb){_0x5b3deb=_0x28bebb;return _0x28bebb['getFields']();}return null;})[_0x32ef('0x22')](function(_0x484df0){if(_0x484df0){if(!_0x484df0[_0x32ef('0x35')]){throw new db[(_0x32ef('0x8c'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x471de6=_0x484df0;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x3b9896){if(_0x3b9896){_0x7b0ea5=_['keyBy'](_0x3b9896,'id');var _0x356fd4;var _0x51ca6e=squel['select']();_0x51ca6e[_0x32ef('0x8d')](_0x5b3deb['table']);for(var _0x2237cf=0x0;_0x2237cf<_0x471de6[_0x32ef('0x35')];_0x2237cf+=0x1){_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x70')]?_0x7b0ea5[_0x471de6[_0x2237cf]['MetricId']]['metric']:_0x471de6[_0x2237cf][_0x32ef('0x71')];_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x3232ca[_0x471de6[_0x2237cf][_0x32ef('0x72')]],'%s',_0x356fd4):_0x356fd4;_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x211fb1[_0x471de6[_0x2237cf][_0x32ef('0x74')]],'%s',_0x356fd4):_0x356fd4;if(_0x471de6[_0x2237cf]['groupBy']){_0x51ca6e[_0x32ef('0x67')](_0x356fd4);}_0x471de6[_0x2237cf][_0x32ef('0x76')]&&_0x51ca6e[_0x32ef('0x38')](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x76')]==='DESC'?![]:!![]);_0x51ca6e['field'](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x78')]||_0x356fd4);}if(_0x5b3deb['joins']){_0x5b3deb[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x5b3deb['joins']);for(var _0x5c7594=0x0;_0x5c7594<_0x5b3deb['joins'][_0x32ef('0x35')];_0x5c7594+=0x1){if(_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x2f')]&&_[_0x32ef('0x63')](_0x114d8e,_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x2f')])&&_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x8e')]){_0x51ca6e[_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['type']](_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')],null,util[_0x32ef('0x74')](_0x32ef('0x7c'),_0x5b3deb[_0x32ef('0x7d')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7b')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['foreignKey']));}}}if(_0x5b3deb[_0x32ef('0x7e')]){_0x5b3deb['conditions']=JSON[_0x32ef('0x7f')](_0x5b3deb[_0x32ef('0x7e')]);_0x51ca6e[_0x32ef('0x3a')](_0x35653b(_0x5b3deb[_0x32ef('0x7e')][_0x32ef('0x67')]));}_0x4baa7a=_0x51ca6e['clone']();_0x51ca6e[_0x32ef('0x1d')](_0x266688);_0x51ca6e[_0x32ef('0x1a')](0x0);return;}})[_0x32ef('0x22')](function(){if(_0x51736f[_0x32ef('0x8f')]===_0x32ef('0x90')){return null;}var _0x1cfdd8=_[_0x32ef('0x3e')](_0x51736f,{'name':_0x51736f[_0x32ef('0x91')]||_0x51736f[_0x32ef('0x2a')]||_0x5b3deb['name'],'basename':_0x5e0b55,'savename':util['format']('%s-%s.%s',_0x51736f[_0x32ef('0x2a')]||_0x5b3deb[_0x32ef('0x2a')],require('randomstring')[_0x32ef('0x92')](0x4),_0x51736f['output']||_0x32ef('0x93')),'reportId':_0x5b3deb['id'],'reportType':'default'});return db['AnalyticExtractedReport'][_0x32ef('0x4c')](_0x1cfdd8,{'raw':!![]});})[_0x32ef('0x22')](function(_0x118d2e){if(_0x5b3deb[_0x32ef('0x7d')]===_0x32ef('0x94')){_0x4baa7a['where'](_0x5b3deb[_0x32ef('0x7d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x51736f[_0x32ef('0x95')],_0x51736f['endDate']);}else{_0x4baa7a['where'](_0x5b3deb['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x51736f['startDate'],_0x51736f[_0x32ef('0x96')]);}if(_0x118d2e){logger[_0x32ef('0x97')]('Run\x20Query:',_0x4baa7a[_0x32ef('0x82')]());require(_0x32ef('0x98'))[_0x32ef('0x99')](path[_0x32ef('0x86')](__dirname,_0x32ef('0x9a'),_0x118d2e[_0x32ef('0x8f')]),[_0x118d2e['id'],_0x4baa7a['toString'](),path[_0x32ef('0x86')](__dirname,'../../files/reports',_0x118d2e[_0x32ef('0x9b')]),_0x5e0b55]);return _0x118d2e;}else{var _0x1be713=squel['select']();_0x1be713[_0x32ef('0x8d')]('('+_0x4baa7a['toString']()+')',_0x32ef('0x9c'));_0x1be713[_0x32ef('0x71')](_0x32ef('0x9d'),_0x32ef('0x1c'));_0x4baa7a['limit'](_0x51736f[_0x32ef('0x1d')]||_0x266688);_0x4baa7a[_0x32ef('0x1a')](_0x51736f[_0x32ef('0x1a')]||0x0);return dbH[_0x32ef('0x83')]['query'](_0x1be713[_0x32ef('0x82')](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]})[_0x32ef('0x22')](function(_0x28ef17){if(!_0x28ef17[_0x32ef('0x35')]){_0xc43e1=0x0;}else{_0xc43e1=_0x28ef17[0x0][_0x32ef('0x1c')]||0x0;}return dbH['sequelize'][_0x32ef('0x32')](_0x4baa7a['toString'](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]});})[_0x32ef('0x22')](function(_0x3956e7){return{'rows':_0x3956e7||[],'count':_0xc43e1};});}});}exports['run']=function(_0x8d3b24,_0x642716){return runReport(_0x8d3b24[_0x32ef('0x48')],_0x8d3b24[_0x32ef('0x32')],_0x8d3b24['options'])['then'](respondWithResult(_0x642716,null))['catch'](handleError(_0x642716,null));};exports[_0x32ef('0x9e')]=runReport;exports[_0x32ef('0x32')]=function(_0x4454f3,_0xc92dcc){var _0x3d18b9=0xa;var _0x9233cb=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0xa76912={'SUM':'SUM(%s)','COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0x1526a1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0x2d4d2f=function(_0x292488){return!_[_0x32ef('0x63')]([_0x32ef('0x9f'),_0x32ef('0x8b'),_0x32ef('0x64'),_0x32ef('0xa0')],_0x292488);};var _0x50b674=function(_0x379d40){if(!_0x379d40||!_0x379d40[_0x32ef('0x66')][_0x32ef('0x35')]){return'';}for(var _0x4b7a4d='(',_0x16525b=0x0;_0x16525b<_0x379d40['rules'][_0x32ef('0x35')];_0x16525b+=0x1){_0x16525b>0x0&&(_0x4b7a4d+='\x20'+_0x379d40[_0x32ef('0x65')]+'\x20');_0x4b7a4d+=_0x379d40[_0x32ef('0x66')][_0x16525b]['group']?_0x50b674(_0x379d40[_0x32ef('0x66')][_0x16525b]['group']):_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x71')]+'\x20'+_0x379d40['rules'][_0x16525b][_0x32ef('0x68')]+(_0x2d4d2f(_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x68')])?'\x20'+_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x69')]:'');}return _0x4b7a4d+')';};var _0x264075={'where':{'id':_0x4454f3[_0x32ef('0x48')]['id']}},_0x3798d1,_0x4befa9,_0x493ae9,_0x143d39,_0x497948;_0x264075=_[_0x32ef('0x3e')]({},_0x264075,_0x4454f3['options']);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x264075)['then'](function(_0x1200c9){if(_0x1200c9){_0x3798d1=_0x1200c9;return _0x1200c9[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0xa5f787){if(_0xa5f787){if(!_0xa5f787[_0x32ef('0x35')]){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x4befa9=_0xa5f787;return db['AnalyticMetric'][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x55ad11){if(_0x55ad11){_0x493ae9=_[_0x32ef('0x6e')](_0x55ad11,'id');var _0x2971a8;var _0x522c22=squel[_0x32ef('0x6f')]();_0x522c22[_0x32ef('0x8d')](_0x3798d1['table']);for(var _0xb41a01=0x0;_0xb41a01<_0x4befa9[_0x32ef('0x35')];_0xb41a01+=0x1){_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x70')]?_0x493ae9[_0x4befa9[_0xb41a01][_0x32ef('0x70')]][_0x32ef('0xa1')]:_0x4befa9[_0xb41a01][_0x32ef('0x71')];_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x72')]?_['replace'](_0xa76912[_0x4befa9[_0xb41a01]['function']],'%s',_0x2971a8):_0x2971a8;_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x1526a1[_0x4befa9[_0xb41a01][_0x32ef('0x74')]],'%s',_0x2971a8):_0x2971a8;if(_0x4befa9[_0xb41a01]['groupBy']){_0x522c22[_0x32ef('0x67')](_0x2971a8);}_0x4befa9[_0xb41a01][_0x32ef('0x76')]&&_0x522c22['order'](_0x2971a8,_0x4befa9[_0xb41a01][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x522c22['field'](_0x2971a8,_0x4befa9[_0xb41a01]['alias']||_0x2971a8);}if(_0x3798d1[_0x32ef('0x79')]){_0x3798d1[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x3798d1['joins']);for(var _0x5f4eab=0x0;_0x5f4eab<_0x3798d1['joins'][_0x32ef('0x35')];_0x5f4eab+=0x1){if(_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')]&&_['includes'](_0x9233cb,_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')])&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['parentKey']&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')]&&_0x3798d1['joins'][_0x5f4eab]['foreignKey']){_0x522c22[_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['type']](_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3798d1[_0x32ef('0x7d')],_0x3798d1['joins'][_0x5f4eab][_0x32ef('0x7a')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x8e')]));}}}if(_0x3798d1[_0x32ef('0x7e')]){_0x3798d1[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x3798d1[_0x32ef('0x7e')]);_0x522c22[_0x32ef('0x3a')](_0x50b674(_0x3798d1['conditions']['group']));}_0x497948=_0x522c22[_0x32ef('0x80')]();_0x522c22[_0x32ef('0x1d')](_0x3d18b9);_0x522c22[_0x32ef('0x1a')](0x0);logger[_0x32ef('0x81')](_0x32ef('0xa2'),_0x522c22[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')][_0x32ef('0x32')](_0x522c22[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')]['QueryTypes'][_0x32ef('0x85')]});}})[_0x32ef('0x22')](function(){return{'sql':_0x497948[_0x32ef('0x82')]()};})[_0x32ef('0x22')](respondWithResult(_0xc92dcc,null))[_0x32ef('0x46')](handleError(_0xc92dcc,null));}; \ No newline at end of file diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.model.js b/server/api/analyticDefaultReport/analyticDefaultReport.model.js new file mode 100644 index 0000000..083f60e --- /dev/null +++ b/server/api/analyticDefaultReport/analyticDefaultReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x483d=['rimraf','../../config/environment','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5e92a5,_0x450ab4){var _0x48918a=function(_0x1a553f){while(--_0x1a553f){_0x5e92a5['push'](_0x5e92a5['shift']());}};_0x48918a(++_0x450ab4);}(_0x483d,0x1c6));var _0xd483=function(_0x1372fd,_0x24da45){_0x1372fd=_0x1372fd-0x0;var _0x57d743=_0x483d[_0x1372fd];return _0x57d743;};'use strict';var _=require(_0xd483('0x0'));var util=require(_0xd483('0x1'));var logger=require(_0xd483('0x2'))(_0xd483('0x3'));var moment=require(_0xd483('0x4'));var BPromise=require(_0xd483('0x5'));var rp=require(_0xd483('0x6'));var fs=require('fs');var path=require(_0xd483('0x7'));var rimraf=require(_0xd483('0x8'));var config=require(_0xd483('0x9'));var attributes=require(_0xd483('0xa'));module['exports']=function(_0x1198cd,_0x2d6535){return _0x1198cd[_0xd483('0xb')](_0xd483('0xc'),attributes,{'tableName':_0xd483('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js b/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js new file mode 100644 index 0000000..495a15c --- /dev/null +++ b/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc424=['stringify','error','message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s'];(function(_0x166445,_0xed011){var _0x590e17=function(_0x4d053b){while(--_0x4d053b){_0x166445['push'](_0x166445['shift']());}};_0x590e17(++_0xed011);}(_0xc424,0x6e));var _0x4c42=function(_0x3fef06,_0x8c9962){_0x3fef06=_0x3fef06-0x0;var _0x5d3b49=_0xc424[_0x3fef06];return _0x5d3b49;};'use strict';var _=require(_0x4c42('0x0'));var util=require('util');var moment=require(_0x4c42('0x1'));var BPromise=require('bluebird');var rs=require(_0x4c42('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4c42('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x4c42('0x4'))('rpc');var config=require(_0x4c42('0x5'));var jayson=require(_0x4c42('0x6'));var client=jayson[_0x4c42('0x7')][_0x4c42('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1203bf,_0x48435f,_0x518199){return new BPromise(function(_0x156044,_0x3eaec4){return client[_0x4c42('0x9')](_0x1203bf,_0x518199)[_0x4c42('0xa')](function(_0x35fbe2){logger[_0x4c42('0xb')](_0x4c42('0xc'),_0x48435f,_0x4c42('0xd'));logger[_0x4c42('0xe')](_0x4c42('0xf'),_0x48435f,_0x4c42('0xd'),JSON[_0x4c42('0x10')](_0x35fbe2));if(_0x35fbe2[_0x4c42('0x11')]){if(_0x35fbe2[_0x4c42('0x11')]['code']===0x1f4){logger['error'](_0x4c42('0xc'),_0x48435f,_0x35fbe2[_0x4c42('0x11')][_0x4c42('0x12')]);return _0x3eaec4(_0x35fbe2[_0x4c42('0x11')][_0x4c42('0x12')]);}logger[_0x4c42('0x11')](_0x4c42('0xc'),_0x48435f,_0x35fbe2['error'][_0x4c42('0x12')]);return _0x156044(_0x35fbe2[_0x4c42('0x11')][_0x4c42('0x12')]);}else{logger['info'](_0x4c42('0xc'),_0x48435f,'request\x20sent');_0x156044(_0x35fbe2[_0x4c42('0x13')][_0x4c42('0x12')]);}})[_0x4c42('0x14')](function(_0x13fe7c){logger[_0x4c42('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x48435f,_0x13fe7c);_0x3eaec4(_0x13fe7c);});});} \ No newline at end of file diff --git a/server/api/analyticDefaultReport/index.js b/server/api/analyticDefaultReport/index.js new file mode 100644 index 0000000..9a05819 --- /dev/null +++ b/server/api/analyticDefaultReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5173=['preview','/:id/run','run','query','post','create','put','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','show'];(function(_0x254723,_0x101579){var _0x2104b8=function(_0x12314a){while(--_0x12314a){_0x254723['push'](_0x254723['shift']());}};_0x2104b8(++_0x101579);}(_0x5173,0xd8));var _0x3517=function(_0x157255,_0x38090f){_0x157255=_0x157255-0x0;var _0xb59ae6=_0x5173[_0x157255];return _0xb59ae6;};'use strict';var multer=require(_0x3517('0x0'));var util=require(_0x3517('0x1'));var path=require(_0x3517('0x2'));var timeout=require(_0x3517('0x3'));var express=require(_0x3517('0x4'));var router=express['Router']();var fs_extra=require(_0x3517('0x5'));var auth=require(_0x3517('0x6'));var interaction=require(_0x3517('0x7'));var config=require(_0x3517('0x8'));var controller=require(_0x3517('0x9'));router[_0x3517('0xa')]('/',auth[_0x3517('0xb')](),controller['index']);router[_0x3517('0xa')](_0x3517('0xc'),auth['isAuthenticated'](),controller[_0x3517('0xd')]);router[_0x3517('0xa')]('/:id/preview',auth['isAuthenticated'](),controller[_0x3517('0xe')]);router['get'](_0x3517('0xf'),auth[_0x3517('0xb')](),controller[_0x3517('0x10')]);router[_0x3517('0xa')]('/:id/query',auth['isAuthenticated'](),controller[_0x3517('0x11')]);router[_0x3517('0x12')]('/',auth[_0x3517('0xb')](),controller[_0x3517('0x13')]);router[_0x3517('0x14')](_0x3517('0xc'),auth['isAuthenticated'](),controller[_0x3517('0x15')]);router['delete']('/:id',auth[_0x3517('0xb')](),controller['destroy']);module[_0x3517('0x16')]=router; \ No newline at end of file diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js b/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js new file mode 100644 index 0000000..082435c --- /dev/null +++ b/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c28=['STRING','csv','xlsx','DATE','ENUM','UNSIGNED','sequelize','moment'];(function(_0x35ccab,_0x170c29){var _0x42a2c=function(_0x3ffd2d){while(--_0x3ffd2d){_0x35ccab['push'](_0x35ccab['shift']());}};_0x42a2c(++_0x170c29);}(_0x9c28,0xb6));var _0x89c2=function(_0x19020c,_0x1c1d9c){_0x19020c=_0x19020c-0x0;var _0x15d6ea=_0x9c28[_0x19020c];return _0x15d6ea;};'use strict';var Sequelize=require(_0x89c2('0x0'));var moment=require(_0x89c2('0x1'));module['exports']={'name':{'type':Sequelize[_0x89c2('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x89c2('0x2')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x89c2('0x3'),'pdf',_0x89c2('0x4')),'allowNull':![],'defaultValue':_0x89c2('0x3')},'savename':{'type':Sequelize[_0x89c2('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x89c2('0x5')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize['STRING'],'defaultValue':'Loading'},'type':{'type':Sequelize[_0x89c2('0x6')]('manual','scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x89c2('0x7')]},'reportType':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.controller.js b/server/api/analyticExtractedReport/analyticExtractedReport.controller.js new file mode 100644 index 0000000..1f9d6f8 --- /dev/null +++ b/server/api/analyticExtractedReport/analyticExtractedReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x24d2=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','get','ExtractedReports','UserProfileResource','destroy','error','stack','name','send','map','AnalyticExtractedReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','join','server/files/reports','ValidationError','exists','format','%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse'];(function(_0x4521cc,_0xd02d95){var _0x4c3bfd=function(_0x400860){while(--_0x400860){_0x4521cc['push'](_0x4521cc['shift']());}};_0x4c3bfd(++_0xd02d95);}(_0x24d2,0xaf));var _0x224d=function(_0x5d0fb2,_0x43e289){_0x5d0fb2=_0x5d0fb2-0x0;var _0x3d909a=_0x24d2[_0x5d0fb2];return _0x3d909a;};'use strict';var emlformat=require(_0x224d('0x0'));var rimraf=require(_0x224d('0x1'));var zipdir=require(_0x224d('0x2'));var jsonpatch=require(_0x224d('0x3'));var rp=require('request-promise');var moment=require(_0x224d('0x4'));var BPromise=require(_0x224d('0x5'));var Mustache=require('mustache');var util=require(_0x224d('0x6'));var path=require(_0x224d('0x7'));var sox=require(_0x224d('0x8'));var csv=require(_0x224d('0x9'));var ejs=require(_0x224d('0xa'));var fs=require('fs');var fs_extra=require(_0x224d('0xb'));var _=require('lodash');var squel=require(_0x224d('0xc'));var crypto=require(_0x224d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x224d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x224d('0xf'));var Papa=require(_0x224d('0x10'));var Redis=require(_0x224d('0x11'));var authService=require(_0x224d('0x12'));var qs=require(_0x224d('0x13'));var as=require(_0x224d('0x14'));var hardwareService=require(_0x224d('0x15'));var logger=require(_0x224d('0x16'))('api');var utils=require(_0x224d('0x17'));var config=require(_0x224d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x224d('0x19'))['db'];function respondWithStatusCode(_0x2e6295,_0x28a2da){_0x28a2da=_0x28a2da||0xcc;return function(_0x46fbc1){if(_0x46fbc1){return _0x2e6295[_0x224d('0x1a')](_0x28a2da);}return _0x2e6295[_0x224d('0x1b')](_0x28a2da)[_0x224d('0x1c')]();};}function respondWithResult(_0x49c64a,_0xb480ee){_0xb480ee=_0xb480ee||0xc8;return function(_0x7b2bb9){if(_0x7b2bb9){return _0x49c64a[_0x224d('0x1b')](_0xb480ee)[_0x224d('0x1d')](_0x7b2bb9);}};}function respondWithFilteredResult(_0x42e2e7,_0x271634){return function(_0x128024){if(_0x128024){var _0x192108=typeof _0x271634['offset']===_0x224d('0x1e')&&typeof _0x271634[_0x224d('0x1f')]===_0x224d('0x1e');var _0x1092d3=_0x128024[_0x224d('0x20')];var _0xc1f59d=_0x192108?0x0:_0x271634['offset'];var _0x32ef78=_0x192108?_0x128024[_0x224d('0x20')]:_0x271634[_0x224d('0x21')]+_0x271634['limit'];var _0xe38320;if(_0x32ef78>=_0x1092d3){_0x32ef78=_0x1092d3;_0xe38320=0xc8;}else{_0xe38320=0xce;}_0x42e2e7['status'](_0xe38320);return _0x42e2e7[_0x224d('0x22')](_0x224d('0x23'),_0xc1f59d+'-'+_0x32ef78+'/'+_0x1092d3)['json'](_0x128024);}return null;};}function patchUpdates(_0x57978a){return function(_0x48e4ba){try{jsonpatch[_0x224d('0x24')](_0x48e4ba,_0x57978a,!![]);}catch(_0x1b5530){return BPromise[_0x224d('0x25')](_0x1b5530);}return _0x48e4ba['save']();};}function saveUpdates(_0x5bf783,_0x34e268){return function(_0x4d61a8){if(_0x4d61a8){return _0x4d61a8[_0x224d('0x26')](_0x5bf783)[_0x224d('0x27')](function(_0xd8597d){return _0xd8597d;});}return null;};}function removeEntity(_0x11aa60,_0x440c26){return function(_0x28853b){if(_0x28853b){return _0x28853b['destroy']()['then'](function(){var _0x2743cd=_0x28853b[_0x224d('0x28')]({'plain':!![]});var _0x4434d0=_0x224d('0x29');return db[_0x224d('0x2a')][_0x224d('0x2b')]({'where':{'type':_0x4434d0,'resourceId':_0x2743cd['id']}})[_0x224d('0x27')](function(){return _0x28853b;});})[_0x224d('0x27')](function(){_0x11aa60[_0x224d('0x1b')](0xcc)[_0x224d('0x1c')]();});}};}function handleEntityNotFound(_0x5d8db1,_0x53e62d){return function(_0x3f13ef){if(!_0x3f13ef){_0x5d8db1[_0x224d('0x1a')](0x194);}return _0x3f13ef;};}function handleError(_0x454e56,_0x1f209e){_0x1f209e=_0x1f209e||0x1f4;return function(_0x1925e3){logger[_0x224d('0x2c')](_0x1925e3[_0x224d('0x2d')]);if(_0x1925e3[_0x224d('0x2e')]){delete _0x1925e3[_0x224d('0x2e')];}_0x454e56[_0x224d('0x1b')](_0x1f209e)[_0x224d('0x2f')](_0x1925e3);};}exports['index']=function(_0x4c7e41,_0x25bd1c){var _0x1e9f6c={},_0x4c5900={},_0x40cb06={'count':0x0,'rows':[]};var _0x1e022a=_[_0x224d('0x30')](db[_0x224d('0x31')][_0x224d('0x32')],function(_0x14efeb){return{'name':_0x14efeb[_0x224d('0x33')],'type':_0x14efeb['type'][_0x224d('0x34')]};});_0x4c5900[_0x224d('0x35')]=_[_0x224d('0x30')](_0x1e022a,_0x224d('0x2e'));_0x4c5900[_0x224d('0x36')]=_[_0x224d('0x37')](_0x4c7e41[_0x224d('0x36')]);_0x4c5900[_0x224d('0x38')]=_[_0x224d('0x39')](_0x4c5900['model'],_0x4c5900[_0x224d('0x36')]);_0x1e9f6c[_0x224d('0x3a')]=_['intersection'](_0x4c5900[_0x224d('0x35')],qs[_0x224d('0x3b')](_0x4c7e41[_0x224d('0x36')][_0x224d('0x3b')]));_0x1e9f6c[_0x224d('0x3a')]=_0x1e9f6c['attributes'][_0x224d('0x3c')]?_0x1e9f6c[_0x224d('0x3a')]:_0x4c5900[_0x224d('0x35')];if(!_0x4c7e41[_0x224d('0x36')][_0x224d('0x3d')](_0x224d('0x3e'))){_0x1e9f6c[_0x224d('0x1f')]=qs[_0x224d('0x1f')](_0x4c7e41['query'][_0x224d('0x1f')]);_0x1e9f6c[_0x224d('0x21')]=qs['offset'](_0x4c7e41[_0x224d('0x36')][_0x224d('0x21')]);}_0x1e9f6c[_0x224d('0x3f')]=qs[_0x224d('0x40')](_0x4c7e41[_0x224d('0x36')][_0x224d('0x40')]);_0x1e9f6c['where']=qs[_0x224d('0x38')](_[_0x224d('0x41')](_0x4c7e41[_0x224d('0x36')],_0x4c5900[_0x224d('0x38')]),_0x1e022a);if(_0x4c7e41[_0x224d('0x36')][_0x224d('0x42')]){_0x1e9f6c[_0x224d('0x43')]=_[_0x224d('0x44')](_0x1e9f6c['where'],{'$or':_[_0x224d('0x30')](_0x1e022a,function(_0x214445){if(_0x214445['type']!==_0x224d('0x45')){var _0x51334f={};_0x51334f[_0x214445['name']]={'$like':'%'+_0x4c7e41[_0x224d('0x36')][_0x224d('0x42')]+'%'};return _0x51334f;}})});}_0x1e9f6c=_['merge']({},_0x1e9f6c,_0x4c7e41[_0x224d('0x46')]);var _0x11fede={'where':_0x1e9f6c['where']};return db[_0x224d('0x31')][_0x224d('0x20')](_0x11fede)[_0x224d('0x27')](function(_0x42ab56){_0x40cb06[_0x224d('0x20')]=_0x42ab56;if(_0x4c7e41[_0x224d('0x36')][_0x224d('0x47')]){_0x1e9f6c[_0x224d('0x48')]=[{'all':!![]}];}return db[_0x224d('0x31')][_0x224d('0x49')](_0x1e9f6c);})[_0x224d('0x27')](function(_0x193c2c){_0x40cb06[_0x224d('0x4a')]=_0x193c2c;return _0x40cb06;})['then'](respondWithFilteredResult(_0x25bd1c,_0x1e9f6c))['catch'](handleError(_0x25bd1c,null));};exports[_0x224d('0x4b')]=function(_0x48b40a,_0x4953ac){var _0x4150ca={'raw':!![],'where':{'id':_0x48b40a[_0x224d('0x4c')]['id']}},_0x32f330={};_0x32f330[_0x224d('0x35')]=_[_0x224d('0x37')](db[_0x224d('0x31')][_0x224d('0x32')]);_0x32f330[_0x224d('0x36')]=_[_0x224d('0x37')](_0x48b40a[_0x224d('0x36')]);_0x32f330['filters']=_[_0x224d('0x39')](_0x32f330[_0x224d('0x35')],_0x32f330[_0x224d('0x36')]);_0x4150ca[_0x224d('0x3a')]=_[_0x224d('0x39')](_0x32f330[_0x224d('0x35')],qs[_0x224d('0x3b')](_0x48b40a[_0x224d('0x36')]['fields']));_0x4150ca['attributes']=_0x4150ca[_0x224d('0x3a')][_0x224d('0x3c')]?_0x4150ca['attributes']:_0x32f330[_0x224d('0x35')];if(_0x48b40a[_0x224d('0x36')][_0x224d('0x47')]){_0x4150ca['include']=[{'all':!![]}];}_0x4150ca=_[_0x224d('0x44')]({},_0x4150ca,_0x48b40a['options']);return db[_0x224d('0x31')][_0x224d('0x4d')](_0x4150ca)[_0x224d('0x27')](handleEntityNotFound(_0x4953ac,null))[_0x224d('0x27')](respondWithResult(_0x4953ac,null))[_0x224d('0x4e')](handleError(_0x4953ac,null));};exports[_0x224d('0x4f')]=function(_0x1e834c,_0x4bdbc4){return db[_0x224d('0x31')]['create'](_0x1e834c[_0x224d('0x50')],{})[_0x224d('0x27')](function(_0x353171){var _0x56db02=_0x1e834c[_0x224d('0x51')][_0x224d('0x28')]({'plain':!![]});if(!_0x56db02)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56db02['role']===_0x224d('0x51')){var _0x2c0cf9=_0x353171[_0x224d('0x28')]({'plain':!![]});var _0x26cb60=_0x224d('0x29');return db['UserProfileSection'][_0x224d('0x4d')]({'where':{'name':_0x26cb60,'userProfileId':_0x56db02[_0x224d('0x52')]},'raw':!![]})[_0x224d('0x27')](function(_0xc7acfc){if(_0xc7acfc&&_0xc7acfc[_0x224d('0x53')]===0x0){return db[_0x224d('0x2a')][_0x224d('0x4f')]({'name':_0x2c0cf9[_0x224d('0x2e')],'resourceId':_0x2c0cf9['id'],'type':_0xc7acfc[_0x224d('0x2e')],'sectionId':_0xc7acfc['id']},{})[_0x224d('0x27')](function(){return _0x353171;});}else{return _0x353171;}})[_0x224d('0x4e')](function(_0x47086e){logger[_0x224d('0x2c')](_0x224d('0x54'),_0x47086e);throw _0x47086e;});}return _0x353171;})['then'](respondWithResult(_0x4bdbc4,0xc9))[_0x224d('0x4e')](handleError(_0x4bdbc4,null));};exports[_0x224d('0x26')]=function(_0x2b09fc,_0x2b7047){if(_0x2b09fc[_0x224d('0x50')]['id']){delete _0x2b09fc[_0x224d('0x50')]['id'];}return db['AnalyticExtractedReport'][_0x224d('0x4d')]({'where':{'id':_0x2b09fc[_0x224d('0x4c')]['id']}})[_0x224d('0x27')](handleEntityNotFound(_0x2b7047,null))[_0x224d('0x27')](saveUpdates(_0x2b09fc[_0x224d('0x50')],null))[_0x224d('0x27')](respondWithResult(_0x2b7047,null))[_0x224d('0x4e')](handleError(_0x2b7047,null));};exports['destroy']=function(_0x400027,_0xe1db5f){return db[_0x224d('0x31')][_0x224d('0x4d')]({'where':{'id':_0x400027[_0x224d('0x4c')]['id']}})[_0x224d('0x27')](handleEntityNotFound(_0xe1db5f,null))[_0x224d('0x27')](removeEntity(_0xe1db5f,null))[_0x224d('0x4e')](handleError(_0xe1db5f,null));};exports[_0x224d('0x55')]=function(_0x5834a2,_0x19d75f,_0x36ce9b){return db[_0x224d('0x31')][_0x224d('0x4d')]({'where':{'id':_0x5834a2[_0x224d('0x4c')]['id']},'attributes':[_0x224d('0x2e'),_0x224d('0x56'),_0x224d('0x57'),_0x224d('0x58')],'raw':!![]})[_0x224d('0x27')](handleEntityNotFound(_0x19d75f,null))['then'](function(_0x10f5fb){if(_0x10f5fb){if(!fs[_0x224d('0x59')](path[_0x224d('0x5a')](config['root'],_0x224d('0x5b'),_0x10f5fb['savename']))){throw new db['Sequelize'][(_0x224d('0x5c'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x5834a2[_0x224d('0x36')][_0x224d('0x5d')]){return _0x19d75f[_0x224d('0x1a')](0xc8);}return _0x19d75f['download'](path[_0x224d('0x5a')](config['root'],_0x224d('0x5b'),_0x10f5fb[_0x224d('0x57')]),util[_0x224d('0x5e')](_0x224d('0x5f'),_0x10f5fb[_0x224d('0x56')]||_0x10f5fb['name'],_0x10f5fb[_0x224d('0x58')]['toLowerCase']()));}})[_0x224d('0x4e')](handleError(_0x19d75f,null));}; \ No newline at end of file diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.model.js b/server/api/analyticExtractedReport/analyticExtractedReport.model.js new file mode 100644 index 0000000..f3d535c --- /dev/null +++ b/server/api/analyticExtractedReport/analyticExtractedReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x85e1=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','util'];(function(_0x2077c2,_0x275ab5){var _0x312f9f=function(_0x331435){while(--_0x331435){_0x2077c2['push'](_0x2077c2['shift']());}};_0x312f9f(++_0x275ab5);}(_0x85e1,0x11f));var _0x185e=function(_0x2ebc18,_0x239f20){_0x2ebc18=_0x2ebc18-0x0;var _0x4113b4=_0x85e1[_0x2ebc18];return _0x4113b4;};'use strict';var _=require('lodash');var util=require(_0x185e('0x0'));var logger=require(_0x185e('0x1'))(_0x185e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x185e('0x3'));var fs=require('fs');var path=require(_0x185e('0x4'));var rimraf=require(_0x185e('0x5'));var config=require(_0x185e('0x6'));var attributes=require(_0x185e('0x7'));module[_0x185e('0x8')]=function(_0x2dbe50,_0x314626){return _0x2dbe50[_0x185e('0x9')](_0x185e('0xa'),attributes,{'tableName':_0x185e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js b/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js new file mode 100644 index 0000000..c7253d6 --- /dev/null +++ b/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x73ab=['debug','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent'];(function(_0x51ef40,_0x48a870){var _0x3ff060=function(_0x25e0a2){while(--_0x25e0a2){_0x51ef40['push'](_0x51ef40['shift']());}};_0x3ff060(++_0x48a870);}(_0x73ab,0x182));var _0xb73a=function(_0x22f85a,_0x195ed5){_0x22f85a=_0x22f85a-0x0;var _0xaa717=_0x73ab[_0x22f85a];return _0xaa717;};'use strict';var _=require(_0xb73a('0x0'));var util=require(_0xb73a('0x1'));var moment=require(_0xb73a('0x2'));var BPromise=require(_0xb73a('0x3'));var rs=require(_0xb73a('0x4'));var fs=require('fs');var Redis=require(_0xb73a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb73a('0x6'))(_0xb73a('0x7'));var config=require('../../config/environment');var jayson=require(_0xb73a('0x8'));var client=jayson[_0xb73a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x309c91,_0x5b056d,_0x13e533){return new BPromise(function(_0x21a5b6,_0x1f5c91){return client['request'](_0x309c91,_0x13e533)['then'](function(_0x2b1934){logger[_0xb73a('0xa')](_0xb73a('0xb'),_0x5b056d,_0xb73a('0xc'));logger[_0xb73a('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x5b056d,_0xb73a('0xc'),JSON[_0xb73a('0xe')](_0x2b1934));if(_0x2b1934[_0xb73a('0xf')]){if(_0x2b1934[_0xb73a('0xf')][_0xb73a('0x10')]===0x1f4){logger[_0xb73a('0xf')](_0xb73a('0xb'),_0x5b056d,_0x2b1934[_0xb73a('0xf')][_0xb73a('0x11')]);return _0x1f5c91(_0x2b1934[_0xb73a('0xf')][_0xb73a('0x11')]);}logger[_0xb73a('0xf')](_0xb73a('0xb'),_0x5b056d,_0x2b1934[_0xb73a('0xf')][_0xb73a('0x11')]);return _0x21a5b6(_0x2b1934[_0xb73a('0xf')][_0xb73a('0x11')]);}else{logger[_0xb73a('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x5b056d,_0xb73a('0xc'));_0x21a5b6(_0x2b1934[_0xb73a('0x12')][_0xb73a('0x11')]);}})['catch'](function(_0x1197e6){logger[_0xb73a('0xf')](_0xb73a('0xb'),_0x5b056d,_0x1197e6);_0x1f5c91(_0x1197e6);});});} \ No newline at end of file diff --git a/server/api/analyticExtractedReport/index.js b/server/api/analyticExtractedReport/index.js new file mode 100644 index 0000000..6b7c8f2 --- /dev/null +++ b/server/api/analyticExtractedReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e8a=['post','create','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','isAuthenticated','index','get','/:id','show','download'];(function(_0x1adb5f,_0x4a633e){var _0x536d8a=function(_0x2bb2ac){while(--_0x2bb2ac){_0x1adb5f['push'](_0x1adb5f['shift']());}};_0x536d8a(++_0x4a633e);}(_0x3e8a,0x9a));var _0xa3e8=function(_0x5440d3,_0x68412d){_0x5440d3=_0x5440d3-0x0;var _0x49b20a=_0x3e8a[_0x5440d3];return _0x49b20a;};'use strict';var multer=require(_0xa3e8('0x0'));var util=require(_0xa3e8('0x1'));var path=require(_0xa3e8('0x2'));var timeout=require('connect-timeout');var express=require(_0xa3e8('0x3'));var router=express['Router']();var fs_extra=require(_0xa3e8('0x4'));var auth=require(_0xa3e8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa3e8('0x6'));var controller=require(_0xa3e8('0x7'));router['get']('/',auth[_0xa3e8('0x8')](),controller[_0xa3e8('0x9')]);router[_0xa3e8('0xa')](_0xa3e8('0xb'),auth[_0xa3e8('0x8')](),controller[_0xa3e8('0xc')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xa3e8('0xd')]);router[_0xa3e8('0xe')]('/',auth[_0xa3e8('0x8')](),controller[_0xa3e8('0xf')]);router[_0xa3e8('0x10')](_0xa3e8('0xb'),auth[_0xa3e8('0x8')](),controller[_0xa3e8('0x11')]);router[_0xa3e8('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xa3e8('0x13')]);module[_0xa3e8('0x14')]=router; \ No newline at end of file diff --git a/server/api/analyticFieldReport/analyticFieldReport.attributes.js b/server/api/analyticFieldReport/analyticFieldReport.attributes.js new file mode 100644 index 0000000..c40dd9f --- /dev/null +++ b/server/api/analyticFieldReport/analyticFieldReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x53c0=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x439150,_0x4a87ab){var _0x51ec95=function(_0x543fdd){while(--_0x543fdd){_0x439150['push'](_0x439150['shift']());}};_0x51ec95(++_0x4a87ab);}(_0x53c0,0xd2));var _0x053c=function(_0x59f0dc,_0x1e2497){_0x59f0dc=_0x59f0dc-0x0;var _0x5b5445=_0x53c0[_0x59f0dc];return _0x5b5445;};'use strict';var Sequelize=require(_0x053c('0x0'));module[_0x053c('0x1')]={'field':{'type':Sequelize[_0x053c('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x053c('0x3')]},'groupBy':{'type':Sequelize[_0x053c('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x053c('0x3')]},'custom':{'type':Sequelize[_0x053c('0x4')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/analyticFieldReport/analyticFieldReport.controller.js b/server/api/analyticFieldReport/analyticFieldReport.controller.js new file mode 100644 index 0000000..2935e87 --- /dev/null +++ b/server/api/analyticFieldReport/analyticFieldReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e2d=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','include','findAll','catch','show','keys','includeAll','options','find','create','bulkCreate','body','params','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','request-promise','moment','mustache','path','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3536e9,_0x78bee3){var _0x1958af=function(_0x51db3d){while(--_0x51db3d){_0x3536e9['push'](_0x3536e9['shift']());}};_0x1958af(++_0x78bee3);}(_0x4e2d,0x11c));var _0xd4e2=function(_0x5206a8,_0x140f28){_0x5206a8=_0x5206a8-0x0;var _0x19a917=_0x4e2d[_0x5206a8];return _0x19a917;};'use strict';var emlformat=require(_0xd4e2('0x0'));var rimraf=require(_0xd4e2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd4e2('0x2'));var moment=require(_0xd4e2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd4e2('0x4'));var util=require('util');var path=require(_0xd4e2('0x5'));var sox=require(_0xd4e2('0x6'));var csv=require(_0xd4e2('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4e2('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd4e2('0x9'));var jsforce=require(_0xd4e2('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xd4e2('0x7'));var querystring=require(_0xd4e2('0xb'));var Papa=require(_0xd4e2('0xc'));var Redis=require(_0xd4e2('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd4e2('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd4e2('0xf'))(_0xd4e2('0x10'));var utils=require(_0xd4e2('0x11'));var config=require(_0xd4e2('0x12'));var licenseUtil=require(_0xd4e2('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x400c23,_0x421090){_0x421090=_0x421090||0xcc;return function(_0x1f4989){if(_0x1f4989){return _0x400c23[_0xd4e2('0x14')](_0x421090);}return _0x400c23[_0xd4e2('0x15')](_0x421090)[_0xd4e2('0x16')]();};}function respondWithResult(_0x2d60e7,_0x2effbc){_0x2effbc=_0x2effbc||0xc8;return function(_0x2d2704){if(_0x2d2704){return _0x2d60e7[_0xd4e2('0x15')](_0x2effbc)[_0xd4e2('0x17')](_0x2d2704);}};}function respondWithFilteredResult(_0x144994,_0x3a1fbf){return function(_0xcb3c94){if(_0xcb3c94){var _0x265b01=typeof _0x3a1fbf[_0xd4e2('0x18')]===_0xd4e2('0x19')&&typeof _0x3a1fbf[_0xd4e2('0x1a')]==='undefined';var _0x3acf9e=_0xcb3c94[_0xd4e2('0x1b')];var _0x5c0415=_0x265b01?0x0:_0x3a1fbf[_0xd4e2('0x18')];var _0x484f5f=_0x265b01?_0xcb3c94[_0xd4e2('0x1b')]:_0x3a1fbf[_0xd4e2('0x18')]+_0x3a1fbf['limit'];var _0x3cc689;if(_0x484f5f>=_0x3acf9e){_0x484f5f=_0x3acf9e;_0x3cc689=0xc8;}else{_0x3cc689=0xce;}_0x144994[_0xd4e2('0x15')](_0x3cc689);return _0x144994[_0xd4e2('0x1c')](_0xd4e2('0x1d'),_0x5c0415+'-'+_0x484f5f+'/'+_0x3acf9e)[_0xd4e2('0x17')](_0xcb3c94);}return null;};}function patchUpdates(_0xc7eb39){return function(_0x30d725){try{jsonpatch[_0xd4e2('0x1e')](_0x30d725,_0xc7eb39,!![]);}catch(_0x75d9ee){return BPromise[_0xd4e2('0x1f')](_0x75d9ee);}return _0x30d725[_0xd4e2('0x20')]();};}function saveUpdates(_0x26eae4,_0x4cbbf9){return function(_0x286e81){if(_0x286e81){return _0x286e81[_0xd4e2('0x21')](_0x26eae4)[_0xd4e2('0x22')](function(_0x5164b4){return _0x5164b4;});}return null;};}function removeEntity(_0x66d5b6,_0x34a40b){return function(_0x1521ba){if(_0x1521ba){return _0x1521ba[_0xd4e2('0x23')]()[_0xd4e2('0x22')](function(){_0x66d5b6[_0xd4e2('0x15')](0xcc)[_0xd4e2('0x16')]();});}};}function handleEntityNotFound(_0x34cda0,_0x527561){return function(_0x457cb0){if(!_0x457cb0){_0x34cda0[_0xd4e2('0x14')](0x194);}return _0x457cb0;};}function handleError(_0x22cf9b,_0x26a1e3){_0x26a1e3=_0x26a1e3||0x1f4;return function(_0x2fa2e9){logger['error'](_0x2fa2e9['stack']);if(_0x2fa2e9[_0xd4e2('0x24')]){delete _0x2fa2e9[_0xd4e2('0x24')];}_0x22cf9b[_0xd4e2('0x15')](_0x26a1e3)[_0xd4e2('0x25')](_0x2fa2e9);};}exports['index']=function(_0x105ac5,_0x45242b){var _0x55026c={},_0x3270a5={},_0xdfaad0={'count':0x0,'rows':[]};var _0x19a36c=_[_0xd4e2('0x26')](db[_0xd4e2('0x27')][_0xd4e2('0x28')],function(_0x3d80b2){return{'name':_0x3d80b2[_0xd4e2('0x29')],'type':_0x3d80b2[_0xd4e2('0x2a')][_0xd4e2('0x2b')]};});_0x3270a5[_0xd4e2('0x2c')]=_[_0xd4e2('0x26')](_0x19a36c,_0xd4e2('0x24'));_0x3270a5[_0xd4e2('0x2d')]=_['keys'](_0x105ac5[_0xd4e2('0x2d')]);_0x3270a5[_0xd4e2('0x2e')]=_[_0xd4e2('0x2f')](_0x3270a5[_0xd4e2('0x2c')],_0x3270a5[_0xd4e2('0x2d')]);_0x55026c[_0xd4e2('0x30')]=_[_0xd4e2('0x2f')](_0x3270a5[_0xd4e2('0x2c')],qs[_0xd4e2('0x31')](_0x105ac5[_0xd4e2('0x2d')][_0xd4e2('0x31')]));_0x55026c[_0xd4e2('0x30')]=_0x55026c[_0xd4e2('0x30')][_0xd4e2('0x32')]?_0x55026c['attributes']:_0x3270a5[_0xd4e2('0x2c')];if(!_0x105ac5[_0xd4e2('0x2d')][_0xd4e2('0x33')](_0xd4e2('0x34'))){_0x55026c[_0xd4e2('0x1a')]=qs[_0xd4e2('0x1a')](_0x105ac5[_0xd4e2('0x2d')]['limit']);_0x55026c['offset']=qs[_0xd4e2('0x18')](_0x105ac5[_0xd4e2('0x2d')][_0xd4e2('0x18')]);}_0x55026c[_0xd4e2('0x35')]=qs[_0xd4e2('0x36')](_0x105ac5[_0xd4e2('0x2d')][_0xd4e2('0x36')]);_0x55026c['where']=qs[_0xd4e2('0x2e')](_[_0xd4e2('0x37')](_0x105ac5[_0xd4e2('0x2d')],_0x3270a5[_0xd4e2('0x2e')]),_0x19a36c);if(_0x105ac5[_0xd4e2('0x2d')][_0xd4e2('0x38')]){_0x55026c[_0xd4e2('0x39')]=_[_0xd4e2('0x3a')](_0x55026c[_0xd4e2('0x39')],{'$or':_['map'](_0x19a36c,function(_0x81492e){if(_0x81492e[_0xd4e2('0x2a')]!=='VIRTUAL'){var _0xee02d6={};_0xee02d6[_0x81492e[_0xd4e2('0x24')]]={'$like':'%'+_0x105ac5[_0xd4e2('0x2d')]['filter']+'%'};return _0xee02d6;}})});}_0x55026c=_[_0xd4e2('0x3a')]({},_0x55026c,_0x105ac5['options']);var _0x28b502={'where':_0x55026c[_0xd4e2('0x39')]};return db[_0xd4e2('0x27')]['count'](_0x28b502)['then'](function(_0x310b9d){_0xdfaad0[_0xd4e2('0x1b')]=_0x310b9d;if(_0x105ac5[_0xd4e2('0x2d')]['includeAll']){_0x55026c[_0xd4e2('0x3b')]=[{'all':!![]}];}return db[_0xd4e2('0x27')][_0xd4e2('0x3c')](_0x55026c);})[_0xd4e2('0x22')](function(_0x29a92a){_0xdfaad0['rows']=_0x29a92a;return _0xdfaad0;})[_0xd4e2('0x22')](respondWithFilteredResult(_0x45242b,_0x55026c))[_0xd4e2('0x3d')](handleError(_0x45242b,null));};exports[_0xd4e2('0x3e')]=function(_0x3be9fa,_0xb21a87){var _0x355763={'raw':![],'where':{'id':_0x3be9fa['params']['id']}},_0x4748ff={};_0x4748ff['model']=_['keys'](db[_0xd4e2('0x27')]['rawAttributes']);_0x4748ff[_0xd4e2('0x2d')]=_[_0xd4e2('0x3f')](_0x3be9fa[_0xd4e2('0x2d')]);_0x4748ff[_0xd4e2('0x2e')]=_[_0xd4e2('0x2f')](_0x4748ff[_0xd4e2('0x2c')],_0x4748ff['query']);_0x355763[_0xd4e2('0x30')]=_[_0xd4e2('0x2f')](_0x4748ff['model'],qs[_0xd4e2('0x31')](_0x3be9fa[_0xd4e2('0x2d')]['fields']));_0x355763[_0xd4e2('0x30')]=_0x355763['attributes'][_0xd4e2('0x32')]?_0x355763[_0xd4e2('0x30')]:_0x4748ff[_0xd4e2('0x2c')];if(_0x3be9fa[_0xd4e2('0x2d')][_0xd4e2('0x40')]){_0x355763[_0xd4e2('0x3b')]=[{'all':!![]}];}_0x355763=_[_0xd4e2('0x3a')]({},_0x355763,_0x3be9fa[_0xd4e2('0x41')]);return db[_0xd4e2('0x27')][_0xd4e2('0x42')](_0x355763)['then'](handleEntityNotFound(_0xb21a87,null))[_0xd4e2('0x22')](respondWithResult(_0xb21a87,null))[_0xd4e2('0x3d')](handleError(_0xb21a87,null));};exports[_0xd4e2('0x43')]=function(_0x404fb8,_0xeb83d3){return db[_0xd4e2('0x27')][_0xd4e2('0x43')](_0x404fb8['body'],{})['then'](respondWithResult(_0xeb83d3,0xc9))['catch'](handleError(_0xeb83d3,null));};exports['bulkCreate']=function(_0xdb4141,_0x470547){return db[_0xd4e2('0x27')][_0xd4e2('0x44')](_0xdb4141['body'],{'raw':![],'individualHooks':!![]})[_0xd4e2('0x22')](respondWithResult(_0x470547,0xc9))[_0xd4e2('0x3d')](handleError(_0x470547,null));};exports[_0xd4e2('0x21')]=function(_0x3bac07,_0x407ccc){if(_0x3bac07['body']['id']){delete _0x3bac07[_0xd4e2('0x45')]['id'];}return db[_0xd4e2('0x27')][_0xd4e2('0x42')]({'where':{'id':_0x3bac07[_0xd4e2('0x46')]['id']}})[_0xd4e2('0x22')](handleEntityNotFound(_0x407ccc,null))[_0xd4e2('0x22')](saveUpdates(_0x3bac07[_0xd4e2('0x45')],null))['then'](respondWithResult(_0x407ccc,null))[_0xd4e2('0x3d')](handleError(_0x407ccc,null));};exports[_0xd4e2('0x23')]=function(_0x5eab33,_0x3a925f){return db[_0xd4e2('0x27')][_0xd4e2('0x42')]({'where':{'id':_0x5eab33['params']['id']}})['then'](handleEntityNotFound(_0x3a925f,null))['then'](removeEntity(_0x3a925f,null))[_0xd4e2('0x3d')](handleError(_0x3a925f,null));};exports['bulkDestroy']=function(_0x61b1df,_0x33de1c){return db[_0xd4e2('0x27')]['destroy']({'where':{'id':_0x61b1df['query']['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x33de1c,0xcc))[_0xd4e2('0x3d')](handleError(_0x33de1c,null));};exports[_0xd4e2('0x47')]=function(_0x57f68b,_0x1428b2,_0x5670cb){return db[_0xd4e2('0x48')][_0xd4e2('0x49')]({'where':{'id':_0x57f68b['params']['id']}})['then'](handleEntityNotFound(_0x1428b2,null))['then'](function(_0x3c973c){if(_0x3c973c){return db[_0xd4e2('0x4a')]['transaction'](function(_0x370f8a){return db['AnalyticFieldReport'][_0xd4e2('0x23')]({'where':{'CustomReportId':_0x57f68b[_0xd4e2('0x46')]['id']},'transaction':_0x370f8a})[_0xd4e2('0x22')](function(_0x30595a){var _0x20a526=_[_0xd4e2('0x26')](_0x57f68b[_0xd4e2('0x45')],function(_0x59b6e0){delete _0x59b6e0['id'];_0x59b6e0[_0xd4e2('0x4b')]=_0x57f68b[_0xd4e2('0x46')]['id'];return _0x59b6e0;});return db[_0xd4e2('0x27')][_0xd4e2('0x44')](_0x20a526,{'transaction':_0x370f8a});});})[_0xd4e2('0x22')](function(){return db[_0xd4e2('0x27')][_0xd4e2('0x3c')]({'where':{'CustomReportId':_0x57f68b[_0xd4e2('0x46')]['id']}});});}})[_0xd4e2('0x22')](respondWithResult(_0x1428b2,null))['catch'](handleError(_0x1428b2,null));}; \ No newline at end of file diff --git a/server/api/analyticFieldReport/analyticFieldReport.model.js b/server/api/analyticFieldReport/analyticFieldReport.model.js new file mode 100644 index 0000000..b24730a --- /dev/null +++ b/server/api/analyticFieldReport/analyticFieldReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xca26=['./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xca26,0x65));var _0x6ca2=function(_0x2a75e3,_0x339c92){_0x2a75e3=_0x2a75e3-0x0;var _0xd396de=_0xca26[_0x2a75e3];return _0xd396de;};'use strict';var _=require(_0x6ca2('0x0'));var util=require(_0x6ca2('0x1'));var logger=require('../../config/logger')(_0x6ca2('0x2'));var moment=require(_0x6ca2('0x3'));var BPromise=require(_0x6ca2('0x4'));var rp=require(_0x6ca2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6ca2('0x6'));var attributes=require(_0x6ca2('0x7'));module[_0x6ca2('0x8')]=function(_0x2c6831,_0x37a935){return _0x2c6831[_0x6ca2('0x9')](_0x6ca2('0xa'),attributes,{'tableName':_0x6ca2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/analyticFieldReport/analyticFieldReport.rpc.js b/server/api/analyticFieldReport/analyticFieldReport.rpc.js new file mode 100644 index 0000000..57d9ce9 --- /dev/null +++ b/server/api/analyticFieldReport/analyticFieldReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcaab=['message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x3e4c0c,_0x33c473){var _0x4e9b0d=function(_0x4dc6b2){while(--_0x4dc6b2){_0x3e4c0c['push'](_0x3e4c0c['shift']());}};_0x4e9b0d(++_0x33c473);}(_0xcaab,0x1a7));var _0xbcaa=function(_0x30a4d1,_0x31a1f2){_0x30a4d1=_0x30a4d1-0x0;var _0x4cbf87=_0xcaab[_0x30a4d1];return _0x4cbf87;};'use strict';var _=require(_0xbcaa('0x0'));var util=require(_0xbcaa('0x1'));var moment=require(_0xbcaa('0x2'));var BPromise=require(_0xbcaa('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbcaa('0x4'))['db'];var utils=require(_0xbcaa('0x5'));var logger=require(_0xbcaa('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbcaa('0x7'));var client=jayson[_0xbcaa('0x8')][_0xbcaa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x539ae9,_0x2815c4,_0x256ecc){return new BPromise(function(_0x31c167,_0x40511c){return client['request'](_0x539ae9,_0x256ecc)['then'](function(_0x2d7c03){logger[_0xbcaa('0xa')](_0xbcaa('0xb'),_0x2815c4,_0xbcaa('0xc'));logger[_0xbcaa('0xd')](_0xbcaa('0xe'),_0x2815c4,'request\x20sent',JSON['stringify'](_0x2d7c03));if(_0x2d7c03[_0xbcaa('0xf')]){if(_0x2d7c03[_0xbcaa('0xf')][_0xbcaa('0x10')]===0x1f4){logger[_0xbcaa('0xf')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2815c4,_0x2d7c03[_0xbcaa('0xf')][_0xbcaa('0x11')]);return _0x40511c(_0x2d7c03[_0xbcaa('0xf')]['message']);}logger[_0xbcaa('0xf')](_0xbcaa('0xb'),_0x2815c4,_0x2d7c03[_0xbcaa('0xf')][_0xbcaa('0x11')]);return _0x31c167(_0x2d7c03[_0xbcaa('0xf')][_0xbcaa('0x11')]);}else{logger[_0xbcaa('0xa')](_0xbcaa('0xb'),_0x2815c4,'request\x20sent');_0x31c167(_0x2d7c03[_0xbcaa('0x12')]['message']);}})[_0xbcaa('0x13')](function(_0x2d60e4){logger['error'](_0xbcaa('0xb'),_0x2815c4,_0x2d60e4);_0x40511c(_0x2d60e4);});});} \ No newline at end of file diff --git a/server/api/analyticFieldReport/index.js b/server/api/analyticFieldReport/index.js new file mode 100644 index 0000000..66a7bf6 --- /dev/null +++ b/server/api/analyticFieldReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x5a2613,_0x10617a){var _0x4cde56=function(_0x168f11){while(--_0x168f11){_0x5a2613['push'](_0x5a2613['shift']());}};_0x4cde56(++_0x10617a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 diff --git a/server/api/analyticMetric/analyticMetric.attributes.js b/server/api/analyticMetric/analyticMetric.attributes.js new file mode 100644 index 0000000..044939c --- /dev/null +++ b/server/api/analyticMetric/analyticMetric.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb63f=['TEXT','STRING','name'];(function(_0x35e54a,_0x46953a){var _0x35c2b0=function(_0x3c0ab9){while(--_0x3c0ab9){_0x35e54a['push'](_0x35e54a['shift']());}};_0x35c2b0(++_0x46953a);}(_0xb63f,0xa3));var _0xfb63=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xb63f[_0x5f309e];return _0x487b5e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xfb63('0x0')],'allowNull':![],'unique':_0xfb63('0x1')},'table':{'type':Sequelize[_0xfb63('0x0')]},'metric':{'type':Sequelize[_0xfb63('0x2')]},'description':{'type':Sequelize[_0xfb63('0x0')]}}; \ No newline at end of file diff --git a/server/api/analyticMetric/analyticMetric.controller.js b/server/api/analyticMetric/analyticMetric.controller.js new file mode 100644 index 0000000..56eff14 --- /dev/null +++ b/server/api/analyticMetric/analyticMetric.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e74=['status','set','Content-Range','apply','save','update','then','destroy','get','Metrics','sendStatus','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','params','rawAttributes','length','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count'];(function(_0x75a9f6,_0x1f27e0){var _0x227845=function(_0x165ca3){while(--_0x165ca3){_0x75a9f6['push'](_0x75a9f6['shift']());}};_0x227845(++_0x1f27e0);}(_0x3e74,0x175));var _0x43e7=function(_0x200a9d,_0x5a86ae){_0x200a9d=_0x200a9d-0x0;var _0x5ecdd9=_0x3e74[_0x200a9d];return _0x5ecdd9;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){var _0x4b2b9f=_0x4c9df3[_0x43e7('0x23')]({'plain':!![]});var _0x4ca5cf=_0x43e7('0x24');return db['UserProfileResource'][_0x43e7('0x22')]({'where':{'type':_0x4ca5cf,'resourceId':_0x4b2b9f['id']}})[_0x43e7('0x21')](function(){return _0x4c9df3;});})[_0x43e7('0x21')](function(){_0x454359[_0x43e7('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b7b3,_0x805b54){return function(_0x501551){if(!_0x501551){_0x52b7b3[_0x43e7('0x25')](0x194);}return _0x501551;};}function handleError(_0x40dc8f,_0x3565cf){_0x3565cf=_0x3565cf||0x1f4;return function(_0xb1fc63){logger['error'](_0xb1fc63[_0x43e7('0x26')]);if(_0xb1fc63[_0x43e7('0x27')]){delete _0xb1fc63[_0x43e7('0x27')];}_0x40dc8f[_0x43e7('0x1b')](_0x3565cf)[_0x43e7('0x28')](_0xb1fc63);};}exports[_0x43e7('0x29')]=function(_0x2b85a5,_0x31b2a6){var _0x3bf475={},_0x35dbcd={},_0x17df44={'count':0x0,'rows':[]};var _0x19725a=_[_0x43e7('0x2a')](db[_0x43e7('0x2b')]['rawAttributes'],function(_0x238321){return{'name':_0x238321[_0x43e7('0x2c')],'type':_0x238321[_0x43e7('0x2d')][_0x43e7('0x2e')]};});_0x35dbcd[_0x43e7('0x2f')]=_['map'](_0x19725a,_0x43e7('0x27'));_0x35dbcd[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x2b85a5[_0x43e7('0x30')]);_0x35dbcd['filters']=_['intersection'](_0x35dbcd['model'],_0x35dbcd[_0x43e7('0x30')]);_0x3bf475[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0x35dbcd[_0x43e7('0x2f')],qs[_0x43e7('0x34')](_0x2b85a5[_0x43e7('0x30')]['fields']));_0x3bf475['attributes']=_0x3bf475['attributes']['length']?_0x3bf475['attributes']:_0x35dbcd['model'];if(!_0x2b85a5['query'][_0x43e7('0x35')]('nolimit')){_0x3bf475[_0x43e7('0x18')]=qs[_0x43e7('0x18')](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x18')]);_0x3bf475[_0x43e7('0x19')]=qs[_0x43e7('0x19')](_0x2b85a5[_0x43e7('0x30')]['offset']);}_0x3bf475['order']=qs['sort'](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x36')]);_0x3bf475[_0x43e7('0x37')]=qs[_0x43e7('0x38')](_[_0x43e7('0x39')](_0x2b85a5[_0x43e7('0x30')],_0x35dbcd[_0x43e7('0x38')]),_0x19725a);if(_0x2b85a5[_0x43e7('0x30')]['filter']){_0x3bf475[_0x43e7('0x37')]=_[_0x43e7('0x3a')](_0x3bf475['where'],{'$or':_[_0x43e7('0x2a')](_0x19725a,function(_0x4c0c7a){if(_0x4c0c7a[_0x43e7('0x2d')]!==_0x43e7('0x3b')){var _0x1c6f45={};_0x1c6f45[_0x4c0c7a[_0x43e7('0x27')]]={'$like':'%'+_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x3c')]+'%'};return _0x1c6f45;}})});}_0x3bf475=_['merge']({},_0x3bf475,_0x2b85a5['options']);var _0x30dfa9={'where':_0x3bf475[_0x43e7('0x37')]};return db[_0x43e7('0x2b')][_0x43e7('0x1a')](_0x30dfa9)[_0x43e7('0x21')](function(_0x4a4a85){_0x17df44[_0x43e7('0x1a')]=_0x4a4a85;if(_0x2b85a5[_0x43e7('0x30')]['includeAll']){_0x3bf475[_0x43e7('0x3d')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x43e7('0x3e')](_0x3bf475);})['then'](function(_0x3d81ae){_0x17df44[_0x43e7('0x3f')]=_0x3d81ae;return _0x17df44;})[_0x43e7('0x21')](respondWithFilteredResult(_0x31b2a6,_0x3bf475))[_0x43e7('0x40')](handleError(_0x31b2a6,null));};exports['show']=function(_0x47d6a1,_0x103393){var _0x40c509={'raw':!![],'where':{'id':_0x47d6a1[_0x43e7('0x41')]['id']}},_0xe979b5={};_0xe979b5['model']=_['keys'](db['AnalyticMetric'][_0x43e7('0x42')]);_0xe979b5['query']=_[_0x43e7('0x31')](_0x47d6a1['query']);_0xe979b5['filters']=_[_0x43e7('0x33')](_0xe979b5['model'],_0xe979b5[_0x43e7('0x30')]);_0x40c509[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0xe979b5[_0x43e7('0x2f')],qs['fields'](_0x47d6a1[_0x43e7('0x30')][_0x43e7('0x34')]));_0x40c509[_0x43e7('0x32')]=_0x40c509[_0x43e7('0x32')][_0x43e7('0x43')]?_0x40c509[_0x43e7('0x32')]:_0xe979b5['model'];if(_0x47d6a1['query'][_0x43e7('0x44')]){_0x40c509[_0x43e7('0x3d')]=[{'all':!![]}];}_0x40c509=_[_0x43e7('0x3a')]({},_0x40c509,_0x47d6a1['options']);return db['AnalyticMetric']['find'](_0x40c509)[_0x43e7('0x21')](handleEntityNotFound(_0x103393,null))[_0x43e7('0x21')](respondWithResult(_0x103393,null))['catch'](handleError(_0x103393,null));};exports[_0x43e7('0x45')]=function(_0x47686e,_0x3c96fe){return db['AnalyticMetric']['create'](_0x47686e['body'],{})['then'](function(_0x214e7e){var _0xe955fc=_0x47686e['user'][_0x43e7('0x23')]({'plain':!![]});if(!_0xe955fc)throw new Error(_0x43e7('0x46'));if(_0xe955fc[_0x43e7('0x47')]===_0x43e7('0x48')){var _0x4a0ce5=_0x214e7e[_0x43e7('0x23')]({'plain':!![]});var _0x483f20='Metrics';return db[_0x43e7('0x49')][_0x43e7('0x4a')]({'where':{'name':_0x483f20,'userProfileId':_0xe955fc[_0x43e7('0x4b')]},'raw':!![]})[_0x43e7('0x21')](function(_0x13503c){if(_0x13503c&&_0x13503c[_0x43e7('0x4c')]===0x0){return db[_0x43e7('0x4d')][_0x43e7('0x45')]({'name':_0x4a0ce5[_0x43e7('0x27')],'resourceId':_0x4a0ce5['id'],'type':_0x13503c[_0x43e7('0x27')],'sectionId':_0x13503c['id']},{})['then'](function(){return _0x214e7e;});}else{return _0x214e7e;}})[_0x43e7('0x40')](function(_0x46c910){logger['error'](_0x43e7('0x4e'),_0x46c910);throw _0x46c910;});}return _0x214e7e;})['then'](respondWithResult(_0x3c96fe,0xc9))[_0x43e7('0x40')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x20')]=function(_0x34e2ec,_0x1f561f){if(_0x34e2ec[_0x43e7('0x4f')]['id']){delete _0x34e2ec['body']['id'];}return db['AnalyticMetric'][_0x43e7('0x4a')]({'where':{'id':_0x34e2ec[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x1f561f,null))[_0x43e7('0x21')](saveUpdates(_0x34e2ec[_0x43e7('0x4f')],null))[_0x43e7('0x21')](respondWithResult(_0x1f561f,null))[_0x43e7('0x40')](handleError(_0x1f561f,null));};exports[_0x43e7('0x22')]=function(_0x26d86c,_0x24e758){return db[_0x43e7('0x2b')]['find']({'where':{'id':_0x26d86c[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x24e758,null))['then'](removeEntity(_0x24e758,null))[_0x43e7('0x40')](handleError(_0x24e758,null));}; \ No newline at end of file diff --git a/server/api/analyticMetric/analyticMetric.model.js b/server/api/analyticMetric/analyticMetric.model.js new file mode 100644 index 0000000..fc16128 --- /dev/null +++ b/server/api/analyticMetric/analyticMetric.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0f89=['moment','bluebird','request-promise','path','../../config/environment','./analyticMetric.attributes','define','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0f89,0x111));var _0x90f8=function(_0x2e56bc,_0x1a7e2c){_0x2e56bc=_0x2e56bc-0x0;var _0x1e34b7=_0x0f89[_0x2e56bc];return _0x1e34b7;};'use strict';var _=require(_0x90f8('0x0'));var util=require(_0x90f8('0x1'));var logger=require(_0x90f8('0x2'))('api');var moment=require(_0x90f8('0x3'));var BPromise=require(_0x90f8('0x4'));var rp=require(_0x90f8('0x5'));var fs=require('fs');var path=require(_0x90f8('0x6'));var rimraf=require('rimraf');var config=require(_0x90f8('0x7'));var attributes=require(_0x90f8('0x8'));module['exports']=function(_0x7b8d25,_0x4439a9){return _0x7b8d25[_0x90f8('0x9')](_0x90f8('0xa'),attributes,{'tableName':_0x90f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/analyticMetric/analyticMetric.rpc.js b/server/api/analyticMetric/analyticMetric.rpc.js new file mode 100644 index 0000000..4ccdb24 --- /dev/null +++ b/server/api/analyticMetric/analyticMetric.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xaccb=['then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x40fb42,_0x3b15e4){var _0x1901d6=function(_0x5f067a){while(--_0x5f067a){_0x40fb42['push'](_0x40fb42['shift']());}};_0x1901d6(++_0x3b15e4);}(_0xaccb,0xb5));var _0xbacc=function(_0x3bd282,_0x31a0ce){_0x3bd282=_0x3bd282-0x0;var _0x36e2ac=_0xaccb[_0x3bd282];return _0x36e2ac;};'use strict';var _=require('lodash');var util=require(_0xbacc('0x0'));var moment=require(_0xbacc('0x1'));var BPromise=require(_0xbacc('0x2'));var rs=require(_0xbacc('0x3'));var fs=require('fs');var Redis=require(_0xbacc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbacc('0x5'));var logger=require(_0xbacc('0x6'))(_0xbacc('0x7'));var config=require(_0xbacc('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1af07e,_0x29819a,_0x2fe890){return new BPromise(function(_0x50379a,_0x27aa0a){return client['request'](_0x1af07e,_0x2fe890)[_0xbacc('0x9')](function(_0x4deab4){logger[_0xbacc('0xa')](_0xbacc('0xb'),_0x29819a,_0xbacc('0xc'));logger[_0xbacc('0xd')](_0xbacc('0xe'),_0x29819a,_0xbacc('0xc'),JSON['stringify'](_0x4deab4));if(_0x4deab4[_0xbacc('0xf')]){if(_0x4deab4[_0xbacc('0xf')]['code']===0x1f4){logger[_0xbacc('0xf')](_0xbacc('0xb'),_0x29819a,_0x4deab4[_0xbacc('0xf')][_0xbacc('0x10')]);return _0x27aa0a(_0x4deab4[_0xbacc('0xf')][_0xbacc('0x10')]);}logger['error'](_0xbacc('0xb'),_0x29819a,_0x4deab4[_0xbacc('0xf')]['message']);return _0x50379a(_0x4deab4[_0xbacc('0xf')][_0xbacc('0x10')]);}else{logger[_0xbacc('0xa')](_0xbacc('0xb'),_0x29819a,_0xbacc('0xc'));_0x50379a(_0x4deab4[_0xbacc('0x11')][_0xbacc('0x10')]);}})[_0xbacc('0x12')](function(_0x29000d){logger[_0xbacc('0xf')](_0xbacc('0xb'),_0x29819a,_0x29000d);_0x27aa0a(_0x29000d);});});} \ No newline at end of file diff --git a/server/api/analyticMetric/index.js b/server/api/analyticMetric/index.js new file mode 100644 index 0000000..b9d316f --- /dev/null +++ b/server/api/analyticMetric/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e9d=['put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','show','post','create'];(function(_0x3c4f1f,_0x20d3ec){var _0x19cb69=function(_0x2e04bc){while(--_0x2e04bc){_0x3c4f1f['push'](_0x3c4f1f['shift']());}};_0x19cb69(++_0x20d3ec);}(_0x3e9d,0x1ba));var _0xd3e9=function(_0x2fa465,_0x188c11){_0x2fa465=_0x2fa465-0x0;var _0x4fc9f9=_0x3e9d[_0x2fa465];return _0x4fc9f9;};'use strict';var multer=require(_0xd3e9('0x0'));var util=require(_0xd3e9('0x1'));var path=require('path');var timeout=require(_0xd3e9('0x2'));var express=require(_0xd3e9('0x3'));var router=express[_0xd3e9('0x4')]();var fs_extra=require(_0xd3e9('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd3e9('0x6'));var controller=require(_0xd3e9('0x7'));router[_0xd3e9('0x8')]('/',auth[_0xd3e9('0x9')](),controller['index']);router['get'](_0xd3e9('0xa'),auth[_0xd3e9('0x9')](),controller[_0xd3e9('0xb')]);router[_0xd3e9('0xc')]('/',auth[_0xd3e9('0x9')](),controller[_0xd3e9('0xd')]);router[_0xd3e9('0xe')]('/:id',auth[_0xd3e9('0x9')](),controller[_0xd3e9('0xf')]);router[_0xd3e9('0x10')](_0xd3e9('0xa'),auth[_0xd3e9('0x9')](),controller[_0xd3e9('0x11')]);module[_0xd3e9('0x12')]=router; \ No newline at end of file diff --git a/server/api/analyticTreeReport/analyticTreeReport.attributes.js b/server/api/analyticTreeReport/analyticTreeReport.attributes.js new file mode 100644 index 0000000..2dc3b35 --- /dev/null +++ b/server/api/analyticTreeReport/analyticTreeReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf69c=['TEXT','exports'];(function(_0x13ee16,_0x9b0374){var _0x48a844=function(_0x10bc0e){while(--_0x10bc0e){_0x13ee16['push'](_0x13ee16['shift']());}};_0x48a844(++_0x9b0374);}(_0xf69c,0xaf));var _0xcf69=function(_0x5b13c3,_0x378e0a){_0x5b13c3=_0x5b13c3-0x0;var _0x3d6780=_0xf69c[_0x5b13c3];return _0x3d6780;};'use strict';var Sequelize=require('sequelize');module[_0xcf69('0x0')]={'tree':{'type':Sequelize[_0xcf69('0x1')],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/analyticTreeReport/analyticTreeReport.controller.js b/server/api/analyticTreeReport/analyticTreeReport.controller.js new file mode 100644 index 0000000..eb9ea27 --- /dev/null +++ b/server/api/analyticTreeReport/analyticTreeReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcb5f=['apply','reject','save','update','then','destroy','error','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','order','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','util','path','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcb5f,0x110));var _0xfcb5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xcb5f[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xfcb5('0x0'));var rimraf=require(_0xfcb5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfcb5('0x2'));var moment=require(_0xfcb5('0x3'));var BPromise=require(_0xfcb5('0x4'));var Mustache=require('mustache');var util=require(_0xfcb5('0x5'));var path=require(_0xfcb5('0x6'));var sox=require(_0xfcb5('0x7'));var csv=require(_0xfcb5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfcb5('0x9'));var _=require(_0xfcb5('0xa'));var squel=require(_0xfcb5('0xb'));var crypto=require(_0xfcb5('0xc'));var jsforce=require(_0xfcb5('0xd'));var deskjs=require(_0xfcb5('0xe'));var toCsv=require(_0xfcb5('0x8'));var querystring=require(_0xfcb5('0xf'));var Papa=require(_0xfcb5('0x10'));var Redis=require(_0xfcb5('0x11'));var authService=require(_0xfcb5('0x12'));var qs=require(_0xfcb5('0x13'));var as=require(_0xfcb5('0x14'));var hardwareService=require(_0xfcb5('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xfcb5('0x16'));var config=require(_0xfcb5('0x17'));var licenseUtil=require(_0xfcb5('0x18'));var db=require(_0xfcb5('0x19'))['db'];function respondWithStatusCode(_0x12bfaa,_0x14fcef){_0x14fcef=_0x14fcef||0xcc;return function(_0x56512c){if(_0x56512c){return _0x12bfaa[_0xfcb5('0x1a')](_0x14fcef);}return _0x12bfaa[_0xfcb5('0x1b')](_0x14fcef)[_0xfcb5('0x1c')]();};}function respondWithResult(_0x3bb582,_0x4eb92f){_0x4eb92f=_0x4eb92f||0xc8;return function(_0x19eafd){if(_0x19eafd){return _0x3bb582[_0xfcb5('0x1b')](_0x4eb92f)['json'](_0x19eafd);}};}function respondWithFilteredResult(_0x321853,_0x5cf6d5){return function(_0x4facf2){if(_0x4facf2){var _0x4030f9=typeof _0x5cf6d5['offset']==='undefined'&&typeof _0x5cf6d5[_0xfcb5('0x1d')]===_0xfcb5('0x1e');var _0x104f6b=_0x4facf2[_0xfcb5('0x1f')];var _0x2780f7=_0x4030f9?0x0:_0x5cf6d5['offset'];var _0x3fef68=_0x4030f9?_0x4facf2[_0xfcb5('0x1f')]:_0x5cf6d5[_0xfcb5('0x20')]+_0x5cf6d5['limit'];var _0x34a56a;if(_0x3fef68>=_0x104f6b){_0x3fef68=_0x104f6b;_0x34a56a=0xc8;}else{_0x34a56a=0xce;}_0x321853[_0xfcb5('0x1b')](_0x34a56a);return _0x321853[_0xfcb5('0x21')](_0xfcb5('0x22'),_0x2780f7+'-'+_0x3fef68+'/'+_0x104f6b)[_0xfcb5('0x23')](_0x4facf2);}return null;};}function patchUpdates(_0xadb24b){return function(_0x933ab7){try{jsonpatch[_0xfcb5('0x24')](_0x933ab7,_0xadb24b,!![]);}catch(_0x3176ba){return BPromise[_0xfcb5('0x25')](_0x3176ba);}return _0x933ab7[_0xfcb5('0x26')]();};}function saveUpdates(_0x2fcbb5,_0x438aaf){return function(_0x216795){if(_0x216795){return _0x216795[_0xfcb5('0x27')](_0x2fcbb5)[_0xfcb5('0x28')](function(_0x221045){return _0x221045;});}return null;};}function removeEntity(_0x302dce,_0x5349ca){return function(_0x3cde3f){if(_0x3cde3f){return _0x3cde3f[_0xfcb5('0x29')]()['then'](function(){_0x302dce['status'](0xcc)[_0xfcb5('0x1c')]();});}};}function handleEntityNotFound(_0x36f1d3,_0x2cc2e6){return function(_0x5a2a64){if(!_0x5a2a64){_0x36f1d3[_0xfcb5('0x1a')](0x194);}return _0x5a2a64;};}function handleError(_0x512b6e,_0x17968f){_0x17968f=_0x17968f||0x1f4;return function(_0x3bc7b9){logger[_0xfcb5('0x2a')](_0x3bc7b9[_0xfcb5('0x2b')]);if(_0x3bc7b9['name']){delete _0x3bc7b9[_0xfcb5('0x2c')];}_0x512b6e[_0xfcb5('0x1b')](_0x17968f)[_0xfcb5('0x2d')](_0x3bc7b9);};}exports[_0xfcb5('0x2e')]=function(_0x4f5762,_0x23b949){var _0x55040b={},_0x410d24={},_0xb971e6={'count':0x0,'rows':[]};var _0x1eff0b=_[_0xfcb5('0x2f')](db[_0xfcb5('0x30')][_0xfcb5('0x31')],function(_0x52200a){return{'name':_0x52200a[_0xfcb5('0x32')],'type':_0x52200a[_0xfcb5('0x33')][_0xfcb5('0x34')]};});_0x410d24[_0xfcb5('0x35')]=_['map'](_0x1eff0b,_0xfcb5('0x2c'));_0x410d24[_0xfcb5('0x36')]=_[_0xfcb5('0x37')](_0x4f5762[_0xfcb5('0x36')]);_0x410d24[_0xfcb5('0x38')]=_[_0xfcb5('0x39')](_0x410d24[_0xfcb5('0x35')],_0x410d24[_0xfcb5('0x36')]);_0x55040b[_0xfcb5('0x3a')]=_[_0xfcb5('0x39')](_0x410d24[_0xfcb5('0x35')],qs[_0xfcb5('0x3b')](_0x4f5762[_0xfcb5('0x36')][_0xfcb5('0x3b')]));_0x55040b[_0xfcb5('0x3a')]=_0x55040b[_0xfcb5('0x3a')]['length']?_0x55040b['attributes']:_0x410d24[_0xfcb5('0x35')];if(!_0x4f5762['query']['hasOwnProperty']('nolimit')){_0x55040b['limit']=qs[_0xfcb5('0x1d')](_0x4f5762[_0xfcb5('0x36')][_0xfcb5('0x1d')]);_0x55040b[_0xfcb5('0x20')]=qs[_0xfcb5('0x20')](_0x4f5762[_0xfcb5('0x36')][_0xfcb5('0x20')]);}_0x55040b[_0xfcb5('0x3c')]=qs['sort'](_0x4f5762[_0xfcb5('0x36')]['sort']);_0x55040b[_0xfcb5('0x3d')]=qs['filters'](_[_0xfcb5('0x3e')](_0x4f5762[_0xfcb5('0x36')],_0x410d24[_0xfcb5('0x38')]),_0x1eff0b);if(_0x4f5762[_0xfcb5('0x36')][_0xfcb5('0x3f')]){_0x55040b[_0xfcb5('0x3d')]=_[_0xfcb5('0x40')](_0x55040b[_0xfcb5('0x3d')],{'$or':_[_0xfcb5('0x2f')](_0x1eff0b,function(_0x18c266){if(_0x18c266[_0xfcb5('0x33')]!=='VIRTUAL'){var _0x462b45={};_0x462b45[_0x18c266[_0xfcb5('0x2c')]]={'$like':'%'+_0x4f5762[_0xfcb5('0x36')][_0xfcb5('0x3f')]+'%'};return _0x462b45;}})});}_0x55040b=_[_0xfcb5('0x40')]({},_0x55040b,_0x4f5762['options']);var _0x20c260={'where':_0x55040b[_0xfcb5('0x3d')]};return db[_0xfcb5('0x30')][_0xfcb5('0x1f')](_0x20c260)['then'](function(_0x525c73){_0xb971e6[_0xfcb5('0x1f')]=_0x525c73;if(_0x4f5762['query'][_0xfcb5('0x41')]){_0x55040b[_0xfcb5('0x42')]=[{'all':!![]}];}return db[_0xfcb5('0x30')][_0xfcb5('0x43')](_0x55040b);})[_0xfcb5('0x28')](function(_0x39094c){_0xb971e6[_0xfcb5('0x44')]=_0x39094c;return _0xb971e6;})[_0xfcb5('0x28')](respondWithFilteredResult(_0x23b949,_0x55040b))[_0xfcb5('0x45')](handleError(_0x23b949,null));};exports[_0xfcb5('0x46')]=function(_0x1e0113,_0x5c2fc4){var _0x1bc309={'raw':!![],'where':{'id':_0x1e0113[_0xfcb5('0x47')]['id']}},_0x3e747e={};_0x3e747e['model']=_[_0xfcb5('0x37')](db['AnalyticTreeReport']['rawAttributes']);_0x3e747e[_0xfcb5('0x36')]=_[_0xfcb5('0x37')](_0x1e0113[_0xfcb5('0x36')]);_0x3e747e['filters']=_[_0xfcb5('0x39')](_0x3e747e[_0xfcb5('0x35')],_0x3e747e['query']);_0x1bc309[_0xfcb5('0x3a')]=_['intersection'](_0x3e747e['model'],qs[_0xfcb5('0x3b')](_0x1e0113['query']['fields']));_0x1bc309[_0xfcb5('0x3a')]=_0x1bc309[_0xfcb5('0x3a')][_0xfcb5('0x48')]?_0x1bc309['attributes']:_0x3e747e[_0xfcb5('0x35')];if(_0x1e0113[_0xfcb5('0x36')]['includeAll']){_0x1bc309[_0xfcb5('0x42')]=[{'all':!![]}];}_0x1bc309=_['merge']({},_0x1bc309,_0x1e0113[_0xfcb5('0x49')]);return db['AnalyticTreeReport'][_0xfcb5('0x4a')](_0x1bc309)['then'](handleEntityNotFound(_0x5c2fc4,null))[_0xfcb5('0x28')](respondWithResult(_0x5c2fc4,null))['catch'](handleError(_0x5c2fc4,null));};exports['create']=function(_0x1f1e23,_0x57ca6a){return db[_0xfcb5('0x30')][_0xfcb5('0x4b')](_0x1f1e23['body'],{})['then'](respondWithResult(_0x57ca6a,0xc9))['catch'](handleError(_0x57ca6a,null));};exports[_0xfcb5('0x27')]=function(_0x239d60,_0x4d7eae){if(_0x239d60[_0xfcb5('0x4c')]['id']){delete _0x239d60[_0xfcb5('0x4c')]['id'];}return db['AnalyticTreeReport'][_0xfcb5('0x4a')]({'where':{'id':_0x239d60[_0xfcb5('0x47')]['id']}})[_0xfcb5('0x28')](handleEntityNotFound(_0x4d7eae,null))['then'](saveUpdates(_0x239d60[_0xfcb5('0x4c')],null))[_0xfcb5('0x28')](respondWithResult(_0x4d7eae,null))['catch'](handleError(_0x4d7eae,null));};exports[_0xfcb5('0x29')]=function(_0x137e59,_0x559caf){return db['AnalyticTreeReport'][_0xfcb5('0x4a')]({'where':{'id':_0x137e59['params']['id']}})[_0xfcb5('0x28')](handleEntityNotFound(_0x559caf,null))[_0xfcb5('0x28')](removeEntity(_0x559caf,null))[_0xfcb5('0x45')](handleError(_0x559caf,null));}; \ No newline at end of file diff --git a/server/api/analyticTreeReport/analyticTreeReport.model.js b/server/api/analyticTreeReport/analyticTreeReport.model.js new file mode 100644 index 0000000..b9fa528 --- /dev/null +++ b/server/api/analyticTreeReport/analyticTreeReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7188=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','lodash'];(function(_0x3edc8b,_0x1996cb){var _0xbf74e5=function(_0x2fcc27){while(--_0x2fcc27){_0x3edc8b['push'](_0x3edc8b['shift']());}};_0xbf74e5(++_0x1996cb);}(_0x7188,0xef));var _0x8718=function(_0x2cce70,_0x417165){_0x2cce70=_0x2cce70-0x0;var _0x798d77=_0x7188[_0x2cce70];return _0x798d77;};'use strict';var _=require(_0x8718('0x0'));var util=require(_0x8718('0x1'));var logger=require(_0x8718('0x2'))('api');var moment=require(_0x8718('0x3'));var BPromise=require('bluebird');var rp=require(_0x8718('0x4'));var fs=require('fs');var path=require(_0x8718('0x5'));var rimraf=require(_0x8718('0x6'));var config=require(_0x8718('0x7'));var attributes=require(_0x8718('0x8'));module[_0x8718('0x9')]=function(_0x12233b,_0x4b9a91){return _0x12233b[_0x8718('0xa')](_0x8718('0xb'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/analyticTreeReport/analyticTreeReport.rpc.js b/server/api/analyticTreeReport/analyticTreeReport.rpc.js new file mode 100644 index 0000000..721b99e --- /dev/null +++ b/server/api/analyticTreeReport/analyticTreeReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x59881a,_0x5ef668){var _0x33a221=function(_0x396188){while(--_0x396188){_0x59881a['push'](_0x59881a['shift']());}};_0x33a221(++_0x5ef668);}(_0xadb5,0xad));var _0x5adb=function(_0x2ab64b,_0x4ae122){_0x2ab64b=_0x2ab64b-0x0;var _0x1765fd=_0xadb5[_0x2ab64b];return _0x1765fd;};'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 diff --git a/server/api/analyticTreeReport/index.js b/server/api/analyticTreeReport/index.js new file mode 100644 index 0000000..49fa467 --- /dev/null +++ b/server/api/analyticTreeReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9888=['index','/:id','show','post','create','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x9888,0x1bd));var _0x8988=function(_0xfe01b3,_0x1bbed1){_0xfe01b3=_0xfe01b3-0x0;var _0x4b95d4=_0x9888[_0xfe01b3];return _0x4b95d4;};'use strict';var multer=require(_0x8988('0x0'));var util=require(_0x8988('0x1'));var path=require(_0x8988('0x2'));var timeout=require(_0x8988('0x3'));var express=require('express');var router=express[_0x8988('0x4')]();var fs_extra=require(_0x8988('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8988('0x6'));var config=require(_0x8988('0x7'));var controller=require(_0x8988('0x8'));router[_0x8988('0x9')]('/',auth[_0x8988('0xa')](),controller[_0x8988('0xb')]);router[_0x8988('0x9')](_0x8988('0xc'),auth[_0x8988('0xa')](),controller[_0x8988('0xd')]);router[_0x8988('0xe')]('/',auth[_0x8988('0xa')](),controller[_0x8988('0xf')]);router[_0x8988('0x10')](_0x8988('0xc'),auth[_0x8988('0xa')](),controller['update']);router[_0x8988('0x11')](_0x8988('0xc'),auth[_0x8988('0xa')](),controller['destroy']);module[_0x8988('0x12')]=router; \ No newline at end of file diff --git a/server/api/attachment/attachment.attributes.js b/server/api/attachment/attachment.attributes.js new file mode 100644 index 0000000..761fdc9 --- /dev/null +++ b/server/api/attachment/attachment.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe64a=['sequelize','exports','STRING'];(function(_0x1d4081,_0x2e0fa1){var _0x2eb5ea=function(_0x551e7a){while(--_0x551e7a){_0x1d4081['push'](_0x1d4081['shift']());}};_0x2eb5ea(++_0x2e0fa1);}(_0xe64a,0x1e0));var _0xae64=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe64a[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xae64('0x0'));module[_0xae64('0x1')]={'name':{'type':Sequelize[_0xae64('0x2')]},'basename':{'type':Sequelize[_0xae64('0x2')]},'type':{'type':Sequelize[_0xae64('0x2')]}}; \ No newline at end of file diff --git a/server/api/attachment/attachment.controller.js b/server/api/attachment/attachment.controller.js new file mode 100644 index 0000000..3d4abbf --- /dev/null +++ b/server/api/attachment/attachment.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9512=['crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','Attachment','rawAttributes','fieldName','key','model','keys','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','catch','params','fields','include','find','get','body','createdAt','updatedAt','create','file','originalname','filename','download','findOne','ChatOfflineMessageId','root','join','basename','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel'];(function(_0x473c48,_0x3c3ce7){var _0x3a45b6=function(_0x537c35){while(--_0x537c35){_0x473c48['push'](_0x473c48['shift']());}};_0x3a45b6(++_0x3c3ce7);}(_0x9512,0xf6));var _0x2951=function(_0x471448,_0x1c0e9e){_0x471448=_0x471448-0x0;var _0x38190b=_0x9512[_0x471448];return _0x38190b;};'use strict';var emlformat=require(_0x2951('0x0'));var rimraf=require(_0x2951('0x1'));var zipdir=require(_0x2951('0x2'));var jsonpatch=require(_0x2951('0x3'));var rp=require('request-promise');var moment=require(_0x2951('0x4'));var BPromise=require(_0x2951('0x5'));var Mustache=require(_0x2951('0x6'));var util=require('util');var path=require('path');var sox=require(_0x2951('0x7'));var csv=require('to-csv');var ejs=require(_0x2951('0x8'));var fs=require('fs');var fs_extra=require(_0x2951('0x9'));var _=require(_0x2951('0xa'));var squel=require(_0x2951('0xb'));var crypto=require(_0x2951('0xc'));var jsforce=require(_0x2951('0xd'));var deskjs=require(_0x2951('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2951('0xf'));var Papa=require(_0x2951('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2951('0x11'));var as=require(_0x2951('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2951('0x13'))(_0x2951('0x14'));var utils=require(_0x2951('0x15'));var config=require(_0x2951('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2951('0x17'))['db'];function respondWithStatusCode(_0x16a209,_0x1a4c74){_0x1a4c74=_0x1a4c74||0xcc;return function(_0x6a7c07){if(_0x6a7c07){return _0x16a209[_0x2951('0x18')](_0x1a4c74);}return _0x16a209[_0x2951('0x19')](_0x1a4c74)[_0x2951('0x1a')]();};}function respondWithResult(_0x37eaf4,_0x4152b4){_0x4152b4=_0x4152b4||0xc8;return function(_0x633847){if(_0x633847){return _0x37eaf4[_0x2951('0x19')](_0x4152b4)[_0x2951('0x1b')](_0x633847);}};}function respondWithFilteredResult(_0x5b46ee,_0x520d0b){return function(_0x4c2110){if(_0x4c2110){var _0x959597=typeof _0x520d0b[_0x2951('0x1c')]===_0x2951('0x1d')&&typeof _0x520d0b[_0x2951('0x1e')]==='undefined';var _0x1d4236=_0x4c2110[_0x2951('0x1f')];var _0x53d385=_0x959597?0x0:_0x520d0b[_0x2951('0x1c')];var _0x131028=_0x959597?_0x4c2110['count']:_0x520d0b[_0x2951('0x1c')]+_0x520d0b[_0x2951('0x1e')];var _0x1fe121;if(_0x131028>=_0x1d4236){_0x131028=_0x1d4236;_0x1fe121=0xc8;}else{_0x1fe121=0xce;}_0x5b46ee[_0x2951('0x19')](_0x1fe121);return _0x5b46ee['set'](_0x2951('0x20'),_0x53d385+'-'+_0x131028+'/'+_0x1d4236)[_0x2951('0x1b')](_0x4c2110);}return null;};}function patchUpdates(_0xa7a101){return function(_0x2cbf1d){try{jsonpatch[_0x2951('0x21')](_0x2cbf1d,_0xa7a101,!![]);}catch(_0x3608a0){return BPromise[_0x2951('0x22')](_0x3608a0);}return _0x2cbf1d['save']();};}function saveUpdates(_0x17806b,_0x27185a){return function(_0x48ae8a){if(_0x48ae8a){return _0x48ae8a[_0x2951('0x23')](_0x17806b)[_0x2951('0x24')](function(_0x1d99cb){return _0x1d99cb;});}return null;};}function removeEntity(_0x22277a,_0x5e15c3){return function(_0x134e46){if(_0x134e46){return _0x134e46[_0x2951('0x25')]()[_0x2951('0x24')](function(){_0x22277a[_0x2951('0x19')](0xcc)[_0x2951('0x1a')]();});}};}function handleEntityNotFound(_0x1af13f,_0x4897fc){return function(_0x5f0ab2){if(!_0x5f0ab2){_0x1af13f[_0x2951('0x18')](0x194);}return _0x5f0ab2;};}function handleError(_0x40d6aa,_0x55d4ae){_0x55d4ae=_0x55d4ae||0x1f4;return function(_0x5e119e){logger[_0x2951('0x26')](_0x5e119e[_0x2951('0x27')]);if(_0x5e119e[_0x2951('0x28')]){delete _0x5e119e[_0x2951('0x28')];}_0x40d6aa[_0x2951('0x19')](_0x55d4ae)[_0x2951('0x29')](_0x5e119e);};}exports['index']=function(_0x2dc713,_0x40d82e){var _0x138ae3={},_0x3e9dd4={},_0x34b35e={'count':0x0,'rows':[]};var _0x2bd35c=_[_0x2951('0x2a')](db[_0x2951('0x2b')][_0x2951('0x2c')],function(_0x3b8ae1){return{'name':_0x3b8ae1[_0x2951('0x2d')],'type':_0x3b8ae1['type'][_0x2951('0x2e')]};});_0x3e9dd4[_0x2951('0x2f')]=_[_0x2951('0x2a')](_0x2bd35c,'name');_0x3e9dd4['query']=_[_0x2951('0x30')](_0x2dc713['query']);_0x3e9dd4['filters']=_[_0x2951('0x31')](_0x3e9dd4[_0x2951('0x2f')],_0x3e9dd4[_0x2951('0x32')]);_0x138ae3[_0x2951('0x33')]=_['intersection'](_0x3e9dd4['model'],qs['fields'](_0x2dc713[_0x2951('0x32')]['fields']));_0x138ae3[_0x2951('0x33')]=_0x138ae3[_0x2951('0x33')][_0x2951('0x34')]?_0x138ae3[_0x2951('0x33')]:_0x3e9dd4[_0x2951('0x2f')];if(!_0x2dc713['query'][_0x2951('0x35')](_0x2951('0x36'))){_0x138ae3['limit']=qs['limit'](_0x2dc713[_0x2951('0x32')][_0x2951('0x1e')]);_0x138ae3[_0x2951('0x1c')]=qs[_0x2951('0x1c')](_0x2dc713[_0x2951('0x32')][_0x2951('0x1c')]);}_0x138ae3[_0x2951('0x37')]=qs[_0x2951('0x38')](_0x2dc713['query'][_0x2951('0x38')]);_0x138ae3[_0x2951('0x39')]=qs[_0x2951('0x3a')](_[_0x2951('0x3b')](_0x2dc713[_0x2951('0x32')],_0x3e9dd4[_0x2951('0x3a')]),_0x2bd35c);if(_0x2dc713[_0x2951('0x32')][_0x2951('0x3c')]){_0x138ae3['where']=_['merge'](_0x138ae3[_0x2951('0x39')],{'$or':_[_0x2951('0x2a')](_0x2bd35c,function(_0x20dfbd){if(_0x20dfbd[_0x2951('0x3d')]!==_0x2951('0x3e')){var _0x5e136e={};_0x5e136e[_0x20dfbd[_0x2951('0x28')]]={'$like':'%'+_0x2dc713[_0x2951('0x32')][_0x2951('0x3c')]+'%'};return _0x5e136e;}})});}_0x138ae3=_[_0x2951('0x3f')]({},_0x138ae3,_0x2dc713[_0x2951('0x40')]);var _0x31d92b={'where':_0x138ae3[_0x2951('0x39')]};return db[_0x2951('0x2b')][_0x2951('0x1f')](_0x31d92b)[_0x2951('0x24')](function(_0x4b5f99){_0x34b35e[_0x2951('0x1f')]=_0x4b5f99;if(_0x2dc713[_0x2951('0x32')][_0x2951('0x41')]){_0x138ae3['include']=[{'all':!![]}];}return db[_0x2951('0x2b')][_0x2951('0x42')](_0x138ae3);})[_0x2951('0x24')](function(_0x3f8e4c){_0x34b35e['rows']=_0x3f8e4c;return _0x34b35e;})['then'](respondWithFilteredResult(_0x40d82e,_0x138ae3))[_0x2951('0x43')](handleError(_0x40d82e,null));};exports['show']=function(_0x2db622,_0xef8ca9){var _0x155e3b={'raw':!![],'where':{'id':_0x2db622[_0x2951('0x44')]['id']}},_0x30f86a={};_0x30f86a['model']=_[_0x2951('0x30')](db[_0x2951('0x2b')]['rawAttributes']);_0x30f86a[_0x2951('0x32')]=_[_0x2951('0x30')](_0x2db622['query']);_0x30f86a['filters']=_[_0x2951('0x31')](_0x30f86a['model'],_0x30f86a[_0x2951('0x32')]);_0x155e3b[_0x2951('0x33')]=_[_0x2951('0x31')](_0x30f86a[_0x2951('0x2f')],qs[_0x2951('0x45')](_0x2db622[_0x2951('0x32')][_0x2951('0x45')]));_0x155e3b[_0x2951('0x33')]=_0x155e3b[_0x2951('0x33')][_0x2951('0x34')]?_0x155e3b[_0x2951('0x33')]:_0x30f86a[_0x2951('0x2f')];if(_0x2db622[_0x2951('0x32')]['includeAll']){_0x155e3b[_0x2951('0x46')]=[{'all':!![]}];}_0x155e3b=_[_0x2951('0x3f')]({},_0x155e3b,_0x2db622[_0x2951('0x40')]);return db[_0x2951('0x2b')][_0x2951('0x47')](_0x155e3b)[_0x2951('0x24')](handleEntityNotFound(_0xef8ca9,null))[_0x2951('0x24')](respondWithResult(_0xef8ca9,null))[_0x2951('0x43')](handleError(_0xef8ca9,null));};exports['clone']=function(_0x56728a,_0x1c4e6e){var _0x475f0a={'where':{'id':_0x56728a[_0x2951('0x44')]['id']}},_0xb8b92c={};_0xb8b92c[_0x2951('0x2f')]=_[_0x2951('0x30')](db['Attachment'][_0x2951('0x2c')]);_0x475f0a[_0x2951('0x33')]=_[_0x2951('0x31')](_0xb8b92c['model'],qs[_0x2951('0x45')](_0x56728a[_0x2951('0x32')][_0x2951('0x45')]));_0x475f0a['attributes']=_0x475f0a['attributes'][_0x2951('0x34')]?_0x475f0a[_0x2951('0x33')]:_0xb8b92c[_0x2951('0x2f')];if(_0x56728a[_0x2951('0x32')]['includeAll']){_0x475f0a['include']=[{'all':!![]}];}_0x475f0a=_[_0x2951('0x3f')]({},_0x475f0a,_0x56728a[_0x2951('0x40')]);return db['Attachment']['find'](_0x475f0a)[_0x2951('0x24')](handleEntityNotFound(_0x1c4e6e,null))[_0x2951('0x24')](function(_0x3505d3){if(_0x3505d3){var _0x164a9e=_0x3505d3[_0x2951('0x48')]({'plain':!![]});_0x164a9e=qs['omit'](_0x164a9e,['id','createdAt','updatedAt']);_0x56728a[_0x2951('0x49')]=_['omit'](_0x56728a['body'],['id',_0x2951('0x4a'),_0x2951('0x4b')]);return db[_0x2951('0x2b')]['create'](_[_0x2951('0x3f')](_0x164a9e,_0x56728a[_0x2951('0x49')]),{'include':_0x56728a[_0x2951('0x32')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x2951('0x24')](respondWithResult(_0x1c4e6e,0xc9))[_0x2951('0x43')](handleError(_0x1c4e6e,null));};exports['update']=function(_0x53f367,_0x2707fd){if(_0x53f367[_0x2951('0x49')]['id']){delete _0x53f367['body']['id'];}return db[_0x2951('0x2b')][_0x2951('0x47')]({'where':{'id':_0x53f367[_0x2951('0x44')]['id']}})[_0x2951('0x24')](handleEntityNotFound(_0x2707fd,null))[_0x2951('0x24')](saveUpdates(_0x53f367['body'],null))[_0x2951('0x24')](respondWithResult(_0x2707fd,null))[_0x2951('0x43')](handleError(_0x2707fd,null));};exports[_0x2951('0x25')]=function(_0x557dc9,_0x12db91){return db['Attachment']['find']({'where':{'id':_0x557dc9[_0x2951('0x44')]['id']}})[_0x2951('0x24')](handleEntityNotFound(_0x12db91,null))[_0x2951('0x24')](removeEntity(_0x12db91,null))[_0x2951('0x43')](handleError(_0x12db91,null));};exports[_0x2951('0x4c')]=function(_0x4f98ff,_0x3b4231,_0x41daef){_0x4f98ff[_0x2951('0x49')][_0x2951('0x28')]=_0x4f98ff[_0x2951('0x4d')][_0x2951('0x4e')];_0x4f98ff['body']['basename']=_0x4f98ff[_0x2951('0x4d')][_0x2951('0x4f')];_0x4f98ff[_0x2951('0x49')]['type']=_0x4f98ff[_0x2951('0x4d')]['mimetype'];return db['Attachment'][_0x2951('0x4c')](_0x4f98ff[_0x2951('0x49')])['then'](respondWithResult(_0x3b4231,0xc9))[_0x2951('0x43')](handleError(_0x3b4231,null));};exports[_0x2951('0x50')]=function(_0x52e7ed,_0x5a8cb9,_0x2cebaf){return db['Attachment'][_0x2951('0x51')]({'where':{'id':_0x52e7ed['params']['id']},'raw':!![]})[_0x2951('0x24')](handleEntityNotFound(_0x5a8cb9,null))[_0x2951('0x24')](function(_0x5dcd3a){if(_0x5dcd3a){var _0x10d99d=_0x5dcd3a[_0x2951('0x52')]!==null;var _0x2243a1=path['join'](config[_0x2951('0x53')],'server/files/attachments/');if(_0x10d99d){_0x2243a1=path[_0x2951('0x54')](_0x2243a1,'offline-chat/');}var _0x50062d=path[_0x2951('0x54')](_0x2243a1,_0x5dcd3a[_0x2951('0x55')]);return _0x5a8cb9[_0x2951('0x50')](_0x50062d);}})[_0x2951('0x43')](handleError(_0x5a8cb9,null));}; \ No newline at end of file diff --git a/server/api/attachment/attachment.model.js b/server/api/attachment/attachment.model.js new file mode 100644 index 0000000..4a494fb --- /dev/null +++ b/server/api/attachment/attachment.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x140d=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash'];(function(_0x304f57,_0x1d51db){var _0x4bd430=function(_0x4f1b54){while(--_0x4f1b54){_0x304f57['push'](_0x304f57['shift']());}};_0x4bd430(++_0x1d51db);}(_0x140d,0x14f));var _0xd140=function(_0x9a2980,_0x27c0b8){_0x9a2980=_0x9a2980-0x0;var _0x88b506=_0x140d[_0x9a2980];return _0x88b506;};'use strict';var _=require(_0xd140('0x0'));var util=require(_0xd140('0x1'));var logger=require('../../config/logger')(_0xd140('0x2'));var moment=require(_0xd140('0x3'));var BPromise=require(_0xd140('0x4'));var rp=require(_0xd140('0x5'));var fs=require('fs');var path=require(_0xd140('0x6'));var rimraf=require(_0xd140('0x7'));var config=require(_0xd140('0x8'));var attributes=require(_0xd140('0x9'));module[_0xd140('0xa')]=function(_0x4d51d9,_0x4a30e5){return _0x4d51d9[_0xd140('0xb')](_0xd140('0xc'),attributes,{'tableName':_0xd140('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/attachment/attachment.rpc.js b/server/api/attachment/attachment.rpc.js new file mode 100644 index 0000000..2ecb570 --- /dev/null +++ b/server/api/attachment/attachment.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf53f=['create','options','raw','then','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','error','code','message','info','result','CreateAttachment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf53f,0x8d));var _0xff53=function(_0x44a297,_0x34d9d8){_0x44a297=_0x44a297-0x0;var _0x4b25de=_0xf53f[_0x44a297];return _0x4b25de;};'use strict';var _=require(_0xff53('0x0'));var util=require(_0xff53('0x1'));var moment=require(_0xff53('0x2'));var BPromise=require(_0xff53('0x3'));var rs=require(_0xff53('0x4'));var fs=require('fs');var Redis=require(_0xff53('0x5'));var db=require(_0xff53('0x6'))['db'];var utils=require(_0xff53('0x7'));var logger=require(_0xff53('0x8'))(_0xff53('0x9'));var config=require(_0xff53('0xa'));var jayson=require(_0xff53('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x27b397,_0x5751e7,_0x1c27bb){return new BPromise(function(_0x122746,_0x1bc4b3){return client['request'](_0x27b397,_0x1c27bb)['then'](function(_0x3c001d){logger['info'](_0xff53('0xc'),_0x5751e7,_0xff53('0xd'));logger['debug'](_0xff53('0xe'),_0x5751e7,_0xff53('0xd'),JSON['stringify'](_0x3c001d));if(_0x3c001d[_0xff53('0xf')]){if(_0x3c001d[_0xff53('0xf')][_0xff53('0x10')]===0x1f4){logger['error'](_0xff53('0xc'),_0x5751e7,_0x3c001d[_0xff53('0xf')][_0xff53('0x11')]);return _0x1bc4b3(_0x3c001d['error'][_0xff53('0x11')]);}logger[_0xff53('0xf')]('Attachment,\x20%s,\x20%s',_0x5751e7,_0x3c001d['error']['message']);return _0x122746(_0x3c001d['error'][_0xff53('0x11')]);}else{logger[_0xff53('0x12')](_0xff53('0xc'),_0x5751e7,'request\x20sent');_0x122746(_0x3c001d[_0xff53('0x13')]['message']);}})['catch'](function(_0x12e90b){logger[_0xff53('0xf')](_0xff53('0xc'),_0x5751e7,_0x12e90b);_0x1bc4b3(_0x12e90b);});});}exports[_0xff53('0x14')]=function(_0x38883f){var _0x319ce5=this;return new Promise(function(_0x14b502,_0x5e9ba6){return db['Attachment'][_0xff53('0x15')](_0x38883f['body'],{'raw':_0x38883f[_0xff53('0x16')]?_0x38883f[_0xff53('0x16')][_0xff53('0x17')]===undefined?!![]:![]:!![]})[_0xff53('0x18')](function(_0x39b3d1){logger[_0xff53('0x12')](_0xff53('0x14'),_0x38883f);logger[_0xff53('0x19')](_0xff53('0x14'),_0x38883f,JSON['stringify'](_0x39b3d1));_0x14b502(_0x39b3d1);})[_0xff53('0x1a')](function(_0x5cd878){logger['error']('CreateAttachment',_0x5cd878['message'],_0x38883f);_0x5e9ba6(_0x319ce5[_0xff53('0xf')](0x1f4,_0x5cd878[_0xff53('0x11')]));});});}; \ No newline at end of file diff --git a/server/api/attachment/index.js b/server/api/attachment/index.js new file mode 100644 index 0000000..6472294 --- /dev/null +++ b/server/api/attachment/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x7f8a44,_0x13830e){var _0x93f2de=function(_0x1134c0){while(--_0x1134c0){_0x7f8a44['push'](_0x7f8a44['shift']());}};_0x93f2de(++_0x13830e);}(_0x2032,0xd9));var _0x2203=function(_0x3d8706,_0x382abc){_0x3d8706=_0x3d8706-0x0;var _0x46cd13=_0x2032[_0x3d8706];return _0x46cd13;};'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 diff --git a/server/api/authActiveDirectory/authActiveDirectory.controller.js b/server/api/authActiveDirectory/authActiveDirectory.controller.js new file mode 100644 index 0000000..d8a62c8 --- /dev/null +++ b/server/api/authActiveDirectory/authActiveDirectory.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb0af=['message','login','authenticate','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','User','passport-local','moment','activedirectory2','bluebird','../../mysqldb','../../components/auth/service','../../config/utils','../../config/logger','activedirectory','undefined','baseDN','url','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','findOne','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','online','admin','user','agent','domain','blockedAt','add','blockDuration','clearBlockUser','getLicense','catch','status'];(function(_0x325552,_0x2244c4){var _0x40b052=function(_0x268961){while(--_0x268961){_0x325552['push'](_0x325552['shift']());}};_0x40b052(++_0x2244c4);}(_0xb0af,0xed));var _0xfb0a=function(_0x309817,_0x44d860){_0x309817=_0x309817-0x0;var _0x1c6922=_0xb0af[_0x309817];return _0x1c6922;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xfb0a('0x0'))['Strategy'];var moment=require(_0xfb0a('0x1'));var ActiveDirectory=require(_0xfb0a('0x2'));var BPromise=require(_0xfb0a('0x3'));var util=require('util');var db=require(_0xfb0a('0x4'))['db'];var authService=require(_0xfb0a('0x5'));var utils=require(_0xfb0a('0x6'));var config=require('../../config/environment');var logger=require(_0xfb0a('0x7'))('api');function isActiveDirectoryConfigured(_0x220005){var _0x3ff04c=![];if(typeof _0x220005[_0xfb0a('0x8')]!==_0xfb0a('0x9')){_0x3ff04c=_0x220005[_0xfb0a('0x8')][_0xfb0a('0xa')]&&_0x220005[_0xfb0a('0x8')][_0xfb0a('0xb')]&&_0x220005[_0xfb0a('0x8')]['domain'];}return _0x3ff04c;}function adAuthenticate(_0x57c2b8,_0x1307d4,_0x1ce68d){return new BPromise(function(_0x4f7a04,_0x5abad9){try{var _0x482f3e=new ActiveDirectory(_0x57c2b8);_0x482f3e['authenticate'](_0x1307d4,_0x1ce68d,function(_0x49e3dd,_0x29605e){if(_0x49e3dd){logger[_0xfb0a('0xc')](_0xfb0a('0xd'),_0x1307d4,util[_0xfb0a('0xe')](_0x49e3dd,{'showHidden':![],'depth':null}));_0x5abad9(_0xfb0a('0xf'));}else if(!_0x29605e){logger[_0xfb0a('0xc')](_0xfb0a('0x10'),_0x1307d4);_0x5abad9(_0xfb0a('0xf'));}else{_0x4f7a04(_0x29605e);}});}catch(_0x3e8f78){_0x5abad9(_0x3e8f78);}});}function ActiveDirectoryAuthenticate(_0x4a72cd,_0x5d14b9,_0x316127,_0x41642c){var _0x4e331a,_0x1a3407;if(!isActiveDirectoryConfigured(config)){logger[_0xfb0a('0xc')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x5d14b9);return _0x41642c(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db['Setting'][_0xfb0a('0x11')]({'where':{'id':0x1},'attributes':[_0xfb0a('0x12'),'blockDuration'],'raw':!![]})[_0xfb0a('0x13')](function(_0x4e72ba){_0x4e331a=_0x4e72ba;if(!_0x4e331a[_0xfb0a('0x12')]){logger[_0xfb0a('0xc')](_0xfb0a('0x14'),_0x5d14b9);throw new Error(_0xfb0a('0xf'));}return _0x4a72cd['findOne']({'attributes':['id',_0xfb0a('0x15'),_0xfb0a('0x16'),_0xfb0a('0x17'),_0xfb0a('0x18'),_0xfb0a('0x19'),_0xfb0a('0x1a'),'blockedAt',_0xfb0a('0x1b')],'where':{'name':_0x5d14b9,'role':{'$or':[_0xfb0a('0x1c'),_0xfb0a('0x1d'),_0xfb0a('0x1e')]},'adSsoEnabled':!![]}});})[_0xfb0a('0x13')](function(_0x1328cb){if(!_0x1328cb||_0x1328cb&&_0x1328cb['name']!==_0x5d14b9){throw new Error(_0xfb0a('0xf'));}_0x1a3407=_0x1328cb;var _0x1c051e=_0x1a3407['name']+'@'+config['activedirectory'][_0xfb0a('0x1f')];return adAuthenticate(config[_0xfb0a('0x8')],_0x1c051e,_0x316127);})['then'](function(_0x51d5f0){if(_0x1a3407['disabled']){throw new Error(_0xfb0a('0xf'));}if(_0x4e331a['blockDuration']>0x0){if(_0x1a3407[_0xfb0a('0x1a')]){if(moment(_0x1a3407[_0xfb0a('0x20')])[_0xfb0a('0x21')](_0x4e331a[_0xfb0a('0x22')],'minutes')>moment()){throw new Error(_0xfb0a('0xf'));}return utils[_0xfb0a('0x23')](_0x1a3407,0x0,![],null)[_0xfb0a('0x13')](function(){return utils[_0xfb0a('0x24')](_0x1a3407);})[_0xfb0a('0x13')](function(){return _0x41642c(null,_0x1a3407);});}else{return utils[_0xfb0a('0x24')](_0x1a3407)[_0xfb0a('0x13')](function(){return _0x41642c(null,_0x1a3407);});}}else{return utils[_0xfb0a('0x24')](_0x1a3407)[_0xfb0a('0x13')](function(){return _0x41642c(null,_0x1a3407);});}})[_0xfb0a('0x25')](function(_0x54ef1a){return _0x41642c(null,![],_0x54ef1a);});}function handleError(_0x21c3ee,_0x229fce,_0x47b783){return _0x21c3ee[_0xfb0a('0x26')](_0x229fce||0x1f4)['send']({'message':_0x47b783?_0x47b783[_0xfb0a('0x27')]||_0x47b783:''});}exports[_0xfb0a('0x28')]=function(_0x3186e2,_0x1abd37,_0x49b3ee){passport[_0xfb0a('0x29')](_0xfb0a('0x2a'),function(_0x2482f1,_0x59a701,_0x1cd61b){var _0x107e7f=_0x2482f1||_0x1cd61b;if(_0x107e7f){return handleError(_0x1abd37,0x191,_0x107e7f);}if(!_0x59a701){return handleError(_0x1abd37,0x194,{'message':_0xfb0a('0x2b')});}else{var _0x48be35={'payload':{'id':_0x59a701['id'],'role':_0x59a701[_0xfb0a('0x18')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x48be35)[_0xfb0a('0x13')](function(_0x1e7f04){_0x1abd37[_0xfb0a('0x2c')]({'id':_0x59a701['id'],'token':_0x1e7f04,'statusCall':'','isAlreadyLogged':_0x59a701[_0xfb0a('0x1b')]});});}})(_0x3186e2,_0x1abd37,_0x49b3ee);};passport['use']('ad-login',new LocalStrategy({'usernameField':'name','passwordField':_0xfb0a('0x16')},function(_0x50470d,_0x4b907c,_0x52c86f){return ActiveDirectoryAuthenticate(db[_0xfb0a('0x2d')],_0x50470d,_0x4b907c,_0x52c86f);})); \ No newline at end of file diff --git a/server/api/authActiveDirectory/index.js b/server/api/authActiveDirectory/index.js new file mode 100644 index 0000000..73910dc --- /dev/null +++ b/server/api/authActiveDirectory/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2361=['Router','./authActiveDirectory.controller','post','exports'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x2361,0x150));var _0x1236=function(_0x19b941,_0x61476f){_0x19b941=_0x19b941-0x0;var _0x222d17=_0x2361[_0x19b941];return _0x222d17;};'use strict';var express=require('express');var router=express[_0x1236('0x0')]();var controller=require(_0x1236('0x1'));router[_0x1236('0x2')]('/',controller['login']);module[_0x1236('0x3')]=router; \ No newline at end of file diff --git a/server/api/authGoogle/authGoogle.controller.js b/server/api/authGoogle/authGoogle.controller.js new file mode 100644 index 0000000..d80f377 --- /dev/null +++ b/server/api/authGoogle/authGoogle.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x4c60cc,_0x42acaf){var _0x26c875=function(_0x52e0de){while(--_0x52e0de){_0x4c60cc['push'](_0x4c60cc['shift']());}};_0x26c875(++_0x42acaf);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});})); \ No newline at end of file diff --git a/server/api/authGoogle/index.js b/server/api/authGoogle/index.js new file mode 100644 index 0000000..bc527c3 --- /dev/null +++ b/server/api/authGoogle/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa807=['./authGoogle.controller','get','login','/callback','setTokenCookie','exports','express','passport','Router'];(function(_0x55e907,_0x317402){var _0x20ac83=function(_0x10a88c){while(--_0x10a88c){_0x55e907['push'](_0x55e907['shift']());}};_0x20ac83(++_0x317402);}(_0xa807,0x1e3));var _0x7a80=function(_0x5c9630,_0x2ac5a0){_0x5c9630=_0x5c9630-0x0;var _0x1a724=_0xa807[_0x5c9630];return _0x1a724;};'use strict';var express=require(_0x7a80('0x0'));var passport=require(_0x7a80('0x1'));var router=express[_0x7a80('0x2')]();var controller=require(_0x7a80('0x3'));var userController=require('../user/user.controller.js');var authService=require('../../components/auth/service');router[_0x7a80('0x4')]('/',controller[_0x7a80('0x5')]);router[_0x7a80('0x4')](_0x7a80('0x6'),controller['callback'],authService['isMiddleware'],userController[_0x7a80('0x5')],authService[_0x7a80('0x7')]);module[_0x7a80('0x8')]=router; \ No newline at end of file diff --git a/server/api/authLocal/authLocal.controller.js b/server/api/authLocal/authLocal.controller.js new file mode 100644 index 0000000..1455a12 --- /dev/null +++ b/server/api/authLocal/authLocal.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbe72=['online','forgot','body','email','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','https://','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','securePassword','passwordHistoryLimit','validatePasswordPattern','enforcePasswordHistory','validatePasswordHistory','resetPasswordToken','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','../../config/utils','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','blocked','loginAttempts','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockedAt','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','user','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local-login','json'];(function(_0x3712c6,_0x178102){var _0x15ab9b=function(_0x324474){while(--_0x324474){_0x3712c6['push'](_0x3712c6['shift']());}};_0x15ab9b(++_0x178102);}(_0xbe72,0x6d));var _0x2be7=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xbe72[_0x311c35];return _0x5cc50c;};'use strict';var util=require(_0x2be7('0x0'));var passport=require('passport');var LocalStrategy=require(_0x2be7('0x1'))[_0x2be7('0x2')];var jayson=require(_0x2be7('0x3'));var _=require(_0x2be7('0x4'));var rs=require(_0x2be7('0x5'));var moment=require(_0x2be7('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0x2be7('0x7'));var utils=require(_0x2be7('0x8'));var client=jayson[_0x2be7('0x9')]['http']({'port':0x232b});function localAuthenticate(_0x47418d,_0x28a202,_0x49be6b,_0x3b07bc){var _0x26cb7a,_0x355b00;return db[_0x2be7('0xa')][_0x2be7('0xb')]({'where':{'id':0x1},'attributes':[_0x2be7('0xc'),_0x2be7('0xd')],'raw':!![]})[_0x2be7('0xe')](function(_0x492aff){_0x26cb7a=_0x492aff;return _0x47418d[_0x2be7('0xb')]({'attributes':['id',_0x2be7('0xf'),_0x2be7('0x10'),_0x2be7('0x11'),_0x2be7('0x12'),_0x2be7('0x13'),_0x2be7('0x14'),'blockedAt',_0x2be7('0x15')],'where':{'name':_0x28a202,'role':{'$or':['admin','user',_0x2be7('0x16')]}}});})[_0x2be7('0xe')](function(_0x4498d4){if(!_0x4498d4||_0x4498d4&&_0x4498d4[_0x2be7('0xf')]!==_0x28a202){throw new Error(_0x2be7('0x17'));}else{_0x355b00=_0x4498d4;return _0x355b00;}})[_0x2be7('0xe')](function(){_0x355b00['authenticate'](_0x49be6b,function(_0x5dc5f4,_0x1dfc3e){var _0x3d7939=_0x355b00[_0x2be7('0x15')]+0x1;if(_0x5dc5f4){return _0x3b07bc(_0x5dc5f4);}else if(!_0x1dfc3e){if(_0x355b00[_0x2be7('0x13')]){return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}else if(_0x26cb7a['allowedLoginAttempts']>0x0){if(_0x355b00[_0x2be7('0x14')]){if(_0x26cb7a['blockDuration']>0x0){if(moment(_0x355b00[_0x2be7('0x18')])[_0x2be7('0x19')](_0x26cb7a['blockDuration'],_0x2be7('0x1a'))>moment()){return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}else{return utils['clearBlockUser'](_0x355b00,_0x3d7939,![],null)[_0x2be7('0xe')](function(){return _0x3b07bc(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}}else{if(_0x3d7939>=_0x26cb7a[_0x2be7('0xc')]){return utils[_0x2be7('0x1b')](_0x355b00,0x0,!![],moment())[_0x2be7('0xe')](function(){return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});});}else{return utils['clearBlockUser'](_0x355b00,_0x3d7939,![],null)[_0x2be7('0xe')](function(){return _0x3b07bc(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}}else{if(_0x355b00[_0x2be7('0x13')]){return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}else if(_0x26cb7a[_0x2be7('0xc')]>0x0){if(_0x355b00[_0x2be7('0x14')]){if(_0x26cb7a[_0x2be7('0xd')]>0x0){if(moment(_0x355b00['blockedAt'])[_0x2be7('0x19')](_0x26cb7a['blockDuration'],'minutes')>moment()){return _0x3b07bc(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x355b00,0x0,![],null)[_0x2be7('0xe')](function(){return utils[_0x2be7('0x1c')](_0x355b00);})[_0x2be7('0xe')](function(){return _0x3b07bc(null,_0x355b00);});}}else{return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}}else{return utils[_0x2be7('0x1b')](_0x355b00,0x0,![],null)[_0x2be7('0xe')](function(){return utils['getLicense'](_0x355b00);})[_0x2be7('0xe')](function(){return _0x3b07bc(null,_0x355b00);})['catch'](function(_0x2f309d){return _0x3b07bc(null,![],_0x2f309d);});}}else{if(_0x355b00[_0x2be7('0x14')]){return _0x3b07bc(null,![],{'message':_0x2be7('0x17')});}else{return utils[_0x2be7('0x1c')](_0x355b00)[_0x2be7('0xe')](function(){return _0x3b07bc(null,_0x355b00);});}}}});})[_0x2be7('0x1d')](function(_0x179180){return _0x3b07bc(null,![],_0x179180);});}function sendServiceMail(_0xc6949c){return db[_0x2be7('0x1e')][_0x2be7('0x1f')]({'where':{'service':!![]},'attributes':['id',_0x2be7('0xf'),'email'],'include':[{'model':db[_0x2be7('0x20')],'as':_0x2be7('0x21'),'include':[{'model':db[_0x2be7('0x22')],'as':_0x2be7('0x22')}]}]})[_0x2be7('0xe')](function(_0x4fa96e){if(!_0x4fa96e){throw new Error(_0x2be7('0x23'));}var _0xcaa196=_0x4fa96e[_0x2be7('0x24')]();var _0x297839={'account':_0xcaa196,'message':_[_0x2be7('0x25')]({'from':util[_0x2be7('0x26')](_0x2be7('0x27'),_0x4fa96e[_0x2be7('0xf')],_0x4fa96e['email']||_0x4fa96e[_0x2be7('0x21')][_0x2be7('0x28')])},_0xc6949c)};return client[_0x2be7('0x29')]('SendMail',_0x297839);})[_0x2be7('0xe')](function(_0x3e18fe){if(_0x3e18fe[_0x2be7('0x2a')]){throw new Error(util[_0x2be7('0x26')](_0x2be7('0x2b'),_0x3e18fe[_0x2be7('0x2a')][_0x2be7('0x2c')]||JSON[_0x2be7('0x2d')](_0x3e18fe[_0x2be7('0x2a')])));}return!![];});}function handleError(_0x41e7d3,_0x11cea2,_0x1f721c){return _0x41e7d3[_0x2be7('0x2e')](_0x11cea2||0x1f4)[_0x2be7('0x2f')]({'message':_0x1f721c?_0x1f721c[_0x2be7('0x2c')]||_0x1f721c:''});}exports[_0x2be7('0x30')]=function(_0x3614ca,_0x27d3be,_0x159818){passport['authenticate'](_0x2be7('0x31'),function(_0x61a87f,_0x53da36,_0x3f96e1){var _0x13e459=_0x61a87f||_0x3f96e1;if(_0x13e459){return handleError(_0x27d3be,0x191,_0x13e459);}if(!_0x53da36){return handleError(_0x27d3be,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x596d0f={'payload':{'id':_0x53da36['id'],'role':_0x53da36[_0x2be7('0x12')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x596d0f)[_0x2be7('0xe')](function(_0x761f94){_0x27d3be[_0x2be7('0x32')]({'id':_0x53da36['id'],'token':_0x761f94,'statusCall':'','isAlreadyLogged':_0x53da36[_0x2be7('0x33')]});});}})(_0x3614ca,_0x27d3be,_0x159818);};exports[_0x2be7('0x34')]=function(_0xdb7266,_0x2e572e){if(!_0xdb7266[_0x2be7('0x35')][_0x2be7('0x36')]){return handleError(_0x2e572e,0x1f4,{'message':_0x2be7('0x37')});}var _0x2897bc=rs[_0x2be7('0x38')]();_0xdb7266[_0x2be7('0x35')][_0x2be7('0x36')]=_0xdb7266['body']['email'][_0x2be7('0x39')]()[_0x2be7('0x3a')]();var _0x2ced07;return db[_0x2be7('0xa')][_0x2be7('0xb')]({'where':{'id':0x1},'attributes':[_0x2be7('0xc'),'blockDuration'],'raw':!![]})['then'](function(_0x572595){_0x2ced07=_0x572595;return db[_0x2be7('0x3b')][_0x2be7('0x1f')]({'where':{'email':_0xdb7266[_0x2be7('0x35')][_0x2be7('0x36')]}});})[_0x2be7('0xe')](function(_0x4d3901){if(!_0x4d3901){throw new Error(_0x2be7('0x3c'));}if(_0x4d3901[_0x2be7('0x13')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x4d3901[_0x2be7('0x14')]){if(moment(_0x4d3901[_0x2be7('0x18')])[_0x2be7('0x19')](_0x2ced07[_0x2be7('0xd')],_0x2be7('0x1a'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x4d3901['blocked']=![];_0x4d3901[_0x2be7('0x18')]=null;}}_0x4d3901['resetPasswordToken']=_0x2897bc;_0x4d3901[_0x2be7('0x3d')]=Date[_0x2be7('0x3e')]()+0x36ee80;return _0x4d3901[_0x2be7('0x3f')]();})[_0x2be7('0xe')](function(){return sendServiceMail({'to':_0xdb7266[_0x2be7('0x35')]['email'],'subject':_0x2be7('0x40'),'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'+_0x2be7('0x41')+_0xdb7266['headers']['host']+_0x2be7('0x42')+_0x2897bc+'\x0a\x0a'+_0x2be7('0x43')});})[_0x2be7('0xe')](function(){_0x2e572e[_0x2be7('0x2e')](0xc8)[_0x2be7('0x2f')]({'message':_0x2be7('0x44')});})['catch'](function(_0x3825a1){return handleError(_0x2e572e,0x1f4,_0x3825a1);});};exports[_0x2be7('0x45')]=function(_0x5a7a2b,_0x4fe1a2){return db[_0x2be7('0x3b')]['find']({'where':{'resetPasswordToken':_0x5a7a2b[_0x2be7('0x46')][_0x2be7('0x47')],'resetPasswordExpires':{'$gt':Date[_0x2be7('0x3e')]()}}})[_0x2be7('0xe')](function(_0x3498a3){if(!_0x3498a3){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0x2be7('0xa')]['findOne']({'attributes':['id',_0x2be7('0x48'),'enforcePasswordHistory',_0x2be7('0x49')]})[_0x2be7('0xe')](function(_0x768d9d){if(_0x768d9d[_0x2be7('0x48')])authService[_0x2be7('0x4a')](_0x5a7a2b[_0x2be7('0x35')][_0x2be7('0x10')]);if(!_0x768d9d[_0x2be7('0x4b')]||!_0x3498a3['previousPasswords'])return _0x3498a3;authService[_0x2be7('0x4c')](_0x5a7a2b['body'][_0x2be7('0x10')],_0x3498a3['previousPasswords'],_0x768d9d['passwordHistoryLimit']);return _0x3498a3;})[_0x2be7('0xe')](function(){_0x3498a3[_0x2be7('0x10')]=_0x5a7a2b[_0x2be7('0x35')][_0x2be7('0x10')];_0x3498a3[_0x2be7('0x4d')]=null;_0x3498a3['resetPasswordExpires']=null;return _0x3498a3[_0x2be7('0x3f')]();});})[_0x2be7('0xe')](function(){_0x4fe1a2['status'](0xc8)['send']({'message':_0x2be7('0x4e')});})[_0x2be7('0x1d')](function(_0x289584){return handleError(_0x4fe1a2,0x1f4,_0x289584);});};passport[_0x2be7('0x4f')](_0x2be7('0x31'),new LocalStrategy({'usernameField':_0x2be7('0xf'),'passwordField':_0x2be7('0x10')},function(_0x3390cb,_0x16df06,_0x58cebb){return localAuthenticate(db[_0x2be7('0x3b')],_0x3390cb,_0x16df06,_0x58cebb);})); \ No newline at end of file diff --git a/server/api/authLocal/index.js b/server/api/authLocal/index.js new file mode 100644 index 0000000..5381d83 --- /dev/null +++ b/server/api/authLocal/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x93d1=['forgot','/reset/:token','reset','Router','post','login'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x93d1,0xab));var _0x193d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x93d1[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var router=express[_0x193d('0x0')]();var controller=require('./authLocal.controller');router[_0x193d('0x1')]('/',controller[_0x193d('0x2')]);router['post']('/forgot',controller[_0x193d('0x3')]);router[_0x193d('0x1')](_0x193d('0x4'),controller[_0x193d('0x5')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/automation/automation.attributes.js b/server/api/automation/automation.attributes.js new file mode 100644 index 0000000..48d4756 --- /dev/null +++ b/server/api/automation/automation.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xad1f=['STRING','INTEGER','sequelize','exports'];(function(_0x112b01,_0x7fbb25){var _0x2af193=function(_0x43198c){while(--_0x43198c){_0x112b01['push'](_0x112b01['shift']());}};_0x2af193(++_0x7fbb25);}(_0xad1f,0x13e));var _0xfad1=function(_0xc83e25,_0x5b5aaa){_0xc83e25=_0xc83e25-0x0;var _0x3a8424=_0xad1f[_0xc83e25];return _0x3a8424;};'use strict';var Sequelize=require(_0xfad1('0x0'));module[_0xfad1('0x1')]={'name':{'type':Sequelize[_0xfad1('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xfad1('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0xfad1('0x3')],'defaultValue':0xa}}; \ No newline at end of file diff --git a/server/api/automation/automation.controller.js b/server/api/automation/automation.controller.js new file mode 100644 index 0000000..b0d06c8 --- /dev/null +++ b/server/api/automation/automation.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa180=['show','params','keys','rawAttributes','filters','fields','length','options','create','body','update','find','addConditions','Condition','ids','omit','findOne','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','save','then','destroy','end','name','send','index','map','Automation','fieldName','type','key','model','query','attributes','intersection','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','catch'];(function(_0x5e9920,_0x3dbf38){var _0x1adeba=function(_0x3f9c1d){while(--_0x3f9c1d){_0x5e9920['push'](_0x5e9920['shift']());}};_0x1adeba(++_0x3dbf38);}(_0xa180,0x1b9));var _0x0a18=function(_0x1d272c,_0x337619){_0x1d272c=_0x1d272c-0x0;var _0x30423e=_0xa180[_0x1d272c];return _0x30423e;};'use strict';var emlformat=require(_0x0a18('0x0'));var rimraf=require(_0x0a18('0x1'));var zipdir=require(_0x0a18('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a18('0x3'));var BPromise=require(_0x0a18('0x4'));var Mustache=require(_0x0a18('0x5'));var util=require('util');var path=require(_0x0a18('0x6'));var sox=require(_0x0a18('0x7'));var csv=require(_0x0a18('0x8'));var ejs=require(_0x0a18('0x9'));var fs=require('fs');var fs_extra=require(_0x0a18('0xa'));var _=require('lodash');var squel=require(_0x0a18('0xb'));var crypto=require(_0x0a18('0xc'));var jsforce=require(_0x0a18('0xd'));var deskjs=require(_0x0a18('0xe'));var toCsv=require(_0x0a18('0x8'));var querystring=require(_0x0a18('0xf'));var Papa=require('papaparse');var Redis=require(_0x0a18('0x10'));var authService=require(_0x0a18('0x11'));var qs=require(_0x0a18('0x12'));var as=require(_0x0a18('0x13'));var hardwareService=require(_0x0a18('0x14'));var logger=require('../../config/logger')(_0x0a18('0x15'));var utils=require('../../config/utils');var config=require(_0x0a18('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0a18('0x17'))['db'];function respondWithStatusCode(_0x2ec77c,_0x560348){_0x560348=_0x560348||0xcc;return function(_0x1ec720){if(_0x1ec720){return _0x2ec77c[_0x0a18('0x18')](_0x560348);}return _0x2ec77c['status'](_0x560348)['end']();};}function respondWithResult(_0x281000,_0x52a0ff){_0x52a0ff=_0x52a0ff||0xc8;return function(_0x2a0cee){if(_0x2a0cee){return _0x281000[_0x0a18('0x19')](_0x52a0ff)[_0x0a18('0x1a')](_0x2a0cee);}};}function respondWithFilteredResult(_0x35573b,_0x1eb825){return function(_0x582a3f){if(_0x582a3f){var _0x2d1c0c=typeof _0x1eb825[_0x0a18('0x1b')]===_0x0a18('0x1c')&&typeof _0x1eb825['limit']==='undefined';var _0x35d370=_0x582a3f['count'];var _0x10b3af=_0x2d1c0c?0x0:_0x1eb825[_0x0a18('0x1b')];var _0x52cc51=_0x2d1c0c?_0x582a3f[_0x0a18('0x1d')]:_0x1eb825[_0x0a18('0x1b')]+_0x1eb825['limit'];var _0x48bccd;if(_0x52cc51>=_0x35d370){_0x52cc51=_0x35d370;_0x48bccd=0xc8;}else{_0x48bccd=0xce;}_0x35573b[_0x0a18('0x19')](_0x48bccd);return _0x35573b[_0x0a18('0x1e')](_0x0a18('0x1f'),_0x10b3af+'-'+_0x52cc51+'/'+_0x35d370)[_0x0a18('0x1a')](_0x582a3f);}return null;};}function patchUpdates(_0x319dc1){return function(_0x2c135d){try{jsonpatch['apply'](_0x2c135d,_0x319dc1,!![]);}catch(_0x45280e){return BPromise[_0x0a18('0x20')](_0x45280e);}return _0x2c135d[_0x0a18('0x21')]();};}function saveUpdates(_0x2a6c40,_0x27b4ca){return function(_0x19d8ed){if(_0x19d8ed){return _0x19d8ed['update'](_0x2a6c40)[_0x0a18('0x22')](function(_0x2f03cd){return _0x2f03cd;});}return null;};}function removeEntity(_0x2f387b,_0xe8c24c){return function(_0x2871ef){if(_0x2871ef){return _0x2871ef[_0x0a18('0x23')]()[_0x0a18('0x22')](function(){_0x2f387b[_0x0a18('0x19')](0xcc)[_0x0a18('0x24')]();});}};}function handleEntityNotFound(_0x28ebe3,_0x1f0aff){return function(_0x3d462a){if(!_0x3d462a){_0x28ebe3[_0x0a18('0x18')](0x194);}return _0x3d462a;};}function handleError(_0x1a4945,_0x512f93){_0x512f93=_0x512f93||0x1f4;return function(_0xa2dc5){logger['error'](_0xa2dc5['stack']);if(_0xa2dc5[_0x0a18('0x25')]){delete _0xa2dc5['name'];}_0x1a4945[_0x0a18('0x19')](_0x512f93)[_0x0a18('0x26')](_0xa2dc5);};}exports[_0x0a18('0x27')]=function(_0x424f6d,_0x22d579){var _0xd92825={},_0x2013b0={},_0x40e007={'count':0x0,'rows':[]};var _0x5a95ab=_[_0x0a18('0x28')](db[_0x0a18('0x29')]['rawAttributes'],function(_0x26ae95){return{'name':_0x26ae95[_0x0a18('0x2a')],'type':_0x26ae95[_0x0a18('0x2b')][_0x0a18('0x2c')]};});_0x2013b0[_0x0a18('0x2d')]=_[_0x0a18('0x28')](_0x5a95ab,'name');_0x2013b0[_0x0a18('0x2e')]=_['keys'](_0x424f6d[_0x0a18('0x2e')]);_0x2013b0['filters']=_['intersection'](_0x2013b0[_0x0a18('0x2d')],_0x2013b0[_0x0a18('0x2e')]);_0xd92825[_0x0a18('0x2f')]=_[_0x0a18('0x30')](_0x2013b0[_0x0a18('0x2d')],qs['fields'](_0x424f6d[_0x0a18('0x2e')]['fields']));_0xd92825[_0x0a18('0x2f')]=_0xd92825[_0x0a18('0x2f')]['length']?_0xd92825[_0x0a18('0x2f')]:_0x2013b0[_0x0a18('0x2d')];if(!_0x424f6d[_0x0a18('0x2e')][_0x0a18('0x31')](_0x0a18('0x32'))){_0xd92825['limit']=qs[_0x0a18('0x33')](_0x424f6d[_0x0a18('0x2e')][_0x0a18('0x33')]);_0xd92825[_0x0a18('0x1b')]=qs[_0x0a18('0x1b')](_0x424f6d[_0x0a18('0x2e')][_0x0a18('0x1b')]);}_0xd92825[_0x0a18('0x34')]=qs[_0x0a18('0x35')](_0x424f6d[_0x0a18('0x2e')][_0x0a18('0x35')]);_0xd92825['where']=qs['filters'](_[_0x0a18('0x36')](_0x424f6d[_0x0a18('0x2e')],_0x2013b0['filters']),_0x5a95ab);if(_0x424f6d['query'][_0x0a18('0x37')]){_0xd92825[_0x0a18('0x38')]=_[_0x0a18('0x39')](_0xd92825[_0x0a18('0x38')],{'$or':_['map'](_0x5a95ab,function(_0x55abf5){if(_0x55abf5[_0x0a18('0x2b')]!==_0x0a18('0x3a')){var _0x31e099={};_0x31e099[_0x55abf5['name']]={'$like':'%'+_0x424f6d[_0x0a18('0x2e')][_0x0a18('0x37')]+'%'};return _0x31e099;}})});}_0xd92825=_[_0x0a18('0x39')]({},_0xd92825,_0x424f6d['options']);var _0x555b2f={'where':_0xd92825[_0x0a18('0x38')]};return db[_0x0a18('0x29')]['count'](_0x555b2f)[_0x0a18('0x22')](function(_0x53733b){_0x40e007[_0x0a18('0x1d')]=_0x53733b;if(_0x424f6d[_0x0a18('0x2e')][_0x0a18('0x3b')]){_0xd92825['include']=[{'all':!![]}];}return db[_0x0a18('0x29')][_0x0a18('0x3c')](_0xd92825);})[_0x0a18('0x22')](function(_0x36d4e7){_0x40e007[_0x0a18('0x3d')]=_0x36d4e7;return _0x40e007;})[_0x0a18('0x22')](respondWithFilteredResult(_0x22d579,_0xd92825))[_0x0a18('0x3e')](handleError(_0x22d579,null));};exports[_0x0a18('0x3f')]=function(_0x37e4bf,_0x2394b2){var _0x98a1cf={'raw':![],'where':{'id':_0x37e4bf[_0x0a18('0x40')]['id']}},_0x128271={};_0x128271[_0x0a18('0x2d')]=_[_0x0a18('0x41')](db[_0x0a18('0x29')][_0x0a18('0x42')]);_0x128271['query']=_[_0x0a18('0x41')](_0x37e4bf['query']);_0x128271[_0x0a18('0x43')]=_[_0x0a18('0x30')](_0x128271[_0x0a18('0x2d')],_0x128271[_0x0a18('0x2e')]);_0x98a1cf[_0x0a18('0x2f')]=_['intersection'](_0x128271[_0x0a18('0x2d')],qs[_0x0a18('0x44')](_0x37e4bf['query'][_0x0a18('0x44')]));_0x98a1cf[_0x0a18('0x2f')]=_0x98a1cf['attributes'][_0x0a18('0x45')]?_0x98a1cf[_0x0a18('0x2f')]:_0x128271[_0x0a18('0x2d')];if(_0x37e4bf[_0x0a18('0x2e')][_0x0a18('0x3b')]){_0x98a1cf['include']=[{'all':!![]}];}_0x98a1cf=_[_0x0a18('0x39')]({},_0x98a1cf,_0x37e4bf[_0x0a18('0x46')]);return db['Automation']['find'](_0x98a1cf)[_0x0a18('0x22')](handleEntityNotFound(_0x2394b2,null))[_0x0a18('0x22')](respondWithResult(_0x2394b2,null))[_0x0a18('0x3e')](handleError(_0x2394b2,null));};exports[_0x0a18('0x47')]=function(_0x48b137,_0x2d3120){return db[_0x0a18('0x29')][_0x0a18('0x47')](_0x48b137[_0x0a18('0x48')],{})[_0x0a18('0x22')](respondWithResult(_0x2d3120,0xc9))[_0x0a18('0x3e')](handleError(_0x2d3120,null));};exports[_0x0a18('0x49')]=function(_0x44a83d,_0x28e13f){if(_0x44a83d[_0x0a18('0x48')]['id']){delete _0x44a83d[_0x0a18('0x48')]['id'];}return db[_0x0a18('0x29')][_0x0a18('0x4a')]({'where':{'id':_0x44a83d['params']['id']}})[_0x0a18('0x22')](handleEntityNotFound(_0x28e13f,null))[_0x0a18('0x22')](saveUpdates(_0x44a83d['body'],null))[_0x0a18('0x22')](respondWithResult(_0x28e13f,null))[_0x0a18('0x3e')](handleError(_0x28e13f,null));};exports['destroy']=function(_0x267117,_0x205d4a){return db['Automation'][_0x0a18('0x4a')]({'where':{'id':_0x267117[_0x0a18('0x40')]['id']}})['then'](handleEntityNotFound(_0x205d4a,null))[_0x0a18('0x22')](removeEntity(_0x205d4a,null))[_0x0a18('0x3e')](handleError(_0x205d4a,null));};exports[_0x0a18('0x4b')]=function(_0x12e869,_0x3af4c9,_0x1dd96a){return db[_0x0a18('0x4c')][_0x0a18('0x4a')]({'where':{'id':_0x12e869[_0x0a18('0x40')]['id']}})[_0x0a18('0x22')](handleEntityNotFound(_0x3af4c9,null))[_0x0a18('0x22')](function(_0x214fb3){if(_0x214fb3){return _0x214fb3[_0x0a18('0x4b')](_0x12e869[_0x0a18('0x48')][_0x0a18('0x4d')],_[_0x0a18('0x4e')](_0x12e869[_0x0a18('0x48')],[_0x0a18('0x4d'),'id'])||{});}})[_0x0a18('0x22')](respondWithResult(_0x3af4c9,null))[_0x0a18('0x3e')](handleError(_0x3af4c9,null));};exports['getConditions']=function(_0x503d37,_0x4fd4ca,_0x307d9d){var _0xadce1b={};var _0x56a3ec={};var _0x4aca19;var _0x19bbc6;return db[_0x0a18('0x29')][_0x0a18('0x4f')]({'where':{'id':_0x503d37['params']['id']}})[_0x0a18('0x22')](handleEntityNotFound(_0x4fd4ca,null))[_0x0a18('0x22')](function(_0x1477e6){if(_0x1477e6){_0x4aca19=_0x1477e6;_0x56a3ec[_0x0a18('0x2d')]=_[_0x0a18('0x41')](db[_0x0a18('0x4c')]['rawAttributes']);_0x56a3ec[_0x0a18('0x2e')]=_[_0x0a18('0x41')](_0x503d37[_0x0a18('0x2e')]);_0x56a3ec[_0x0a18('0x43')]=_['intersection'](_0x56a3ec['model'],_0x56a3ec[_0x0a18('0x2e')]);_0xadce1b[_0x0a18('0x2f')]=_['intersection'](_0x56a3ec[_0x0a18('0x2d')],qs[_0x0a18('0x44')](_0x503d37[_0x0a18('0x2e')][_0x0a18('0x44')]));_0xadce1b[_0x0a18('0x2f')]=_0xadce1b[_0x0a18('0x2f')][_0x0a18('0x45')]?_0xadce1b[_0x0a18('0x2f')]:_0x56a3ec[_0x0a18('0x2d')];_0xadce1b[_0x0a18('0x34')]=qs[_0x0a18('0x35')](_0x503d37['query'][_0x0a18('0x35')]);_0xadce1b['where']=qs[_0x0a18('0x43')](_['pick'](_0x503d37[_0x0a18('0x2e')],_0x56a3ec['filters']));if(_0x503d37[_0x0a18('0x2e')][_0x0a18('0x37')]){_0xadce1b['where']=_[_0x0a18('0x39')](_0xadce1b[_0x0a18('0x38')],{'$or':_[_0x0a18('0x28')](_0xadce1b['attributes'],function(_0x373f46){var _0x5b1890={};_0x5b1890[_0x373f46]={'$like':'%'+_0x503d37[_0x0a18('0x2e')][_0x0a18('0x37')]+'%'};return _0x5b1890;})});}_0xadce1b=_[_0x0a18('0x39')]({},_0xadce1b,_0x503d37[_0x0a18('0x46')]);return _0x4aca19[_0x0a18('0x50')](_0xadce1b);}})[_0x0a18('0x22')](function(_0x387bf9){if(_0x387bf9){_0x19bbc6=_0x387bf9[_0x0a18('0x45')];if(!_0x503d37[_0x0a18('0x2e')][_0x0a18('0x31')](_0x0a18('0x32'))){_0xadce1b[_0x0a18('0x33')]=qs[_0x0a18('0x33')](_0x503d37['query'][_0x0a18('0x33')]);_0xadce1b[_0x0a18('0x1b')]=qs[_0x0a18('0x1b')](_0x503d37[_0x0a18('0x2e')][_0x0a18('0x1b')]);}return _0x4aca19['getConditions'](_0xadce1b);}})[_0x0a18('0x22')](function(_0x1fda0b){if(_0x1fda0b){return _0x1fda0b?{'count':_0x19bbc6,'rows':_0x1fda0b}:null;}})[_0x0a18('0x22')](respondWithResult(_0x4fd4ca,null))['catch'](handleError(_0x4fd4ca,null));};exports[_0x0a18('0x51')]=function(_0x27e0a1,_0x203c2a,_0x15fd9a){return db[_0x0a18('0x52')]['find']({'where':{'id':_0x27e0a1[_0x0a18('0x40')]['id']}})['then'](handleEntityNotFound(_0x203c2a,null))[_0x0a18('0x22')](function(_0x37009f){if(_0x37009f){return _0x37009f[_0x0a18('0x51')](_0x27e0a1[_0x0a18('0x48')][_0x0a18('0x4d')],_['omit'](_0x27e0a1[_0x0a18('0x48')],[_0x0a18('0x4d'),'id'])||{});}})[_0x0a18('0x22')](respondWithResult(_0x203c2a,null))[_0x0a18('0x3e')](handleError(_0x203c2a,null));};exports[_0x0a18('0x53')]=function(_0x4f8a92,_0x46dcc5,_0x20a59a){var _0x4cd50a={};var _0x580cf8={};var _0x34eb9d;var _0x35acbc;return db['Automation'][_0x0a18('0x4f')]({'where':{'id':_0x4f8a92[_0x0a18('0x40')]['id']}})[_0x0a18('0x22')](handleEntityNotFound(_0x46dcc5,null))[_0x0a18('0x22')](function(_0x1f3ed1){if(_0x1f3ed1){_0x34eb9d=_0x1f3ed1;_0x580cf8[_0x0a18('0x2d')]=_[_0x0a18('0x41')](db['Action'][_0x0a18('0x42')]);_0x580cf8[_0x0a18('0x2e')]=_['keys'](_0x4f8a92[_0x0a18('0x2e')]);_0x580cf8[_0x0a18('0x43')]=_[_0x0a18('0x30')](_0x580cf8[_0x0a18('0x2d')],_0x580cf8[_0x0a18('0x2e')]);_0x4cd50a['attributes']=_['intersection'](_0x580cf8[_0x0a18('0x2d')],qs[_0x0a18('0x44')](_0x4f8a92[_0x0a18('0x2e')]['fields']));_0x4cd50a[_0x0a18('0x2f')]=_0x4cd50a[_0x0a18('0x2f')][_0x0a18('0x45')]?_0x4cd50a[_0x0a18('0x2f')]:_0x580cf8[_0x0a18('0x2d')];_0x4cd50a[_0x0a18('0x34')]=qs[_0x0a18('0x35')](_0x4f8a92[_0x0a18('0x2e')]['sort']);_0x4cd50a[_0x0a18('0x38')]=qs[_0x0a18('0x43')](_[_0x0a18('0x36')](_0x4f8a92['query'],_0x580cf8[_0x0a18('0x43')]));if(_0x4f8a92[_0x0a18('0x2e')][_0x0a18('0x37')]){_0x4cd50a['where']=_[_0x0a18('0x39')](_0x4cd50a[_0x0a18('0x38')],{'$or':_['map'](_0x4cd50a[_0x0a18('0x2f')],function(_0x519359){var _0x5c28d8={};_0x5c28d8[_0x519359]={'$like':'%'+_0x4f8a92[_0x0a18('0x2e')][_0x0a18('0x37')]+'%'};return _0x5c28d8;})});}_0x4cd50a=_[_0x0a18('0x39')]({},_0x4cd50a,_0x4f8a92['options']);return _0x34eb9d[_0x0a18('0x53')](_0x4cd50a);}})[_0x0a18('0x22')](function(_0x28c460){if(_0x28c460){_0x35acbc=_0x28c460[_0x0a18('0x45')];if(!_0x4f8a92[_0x0a18('0x2e')][_0x0a18('0x31')](_0x0a18('0x32'))){_0x4cd50a[_0x0a18('0x33')]=qs['limit'](_0x4f8a92['query'][_0x0a18('0x33')]);_0x4cd50a[_0x0a18('0x1b')]=qs[_0x0a18('0x1b')](_0x4f8a92[_0x0a18('0x2e')][_0x0a18('0x1b')]);}return _0x34eb9d['getActions'](_0x4cd50a);}})['then'](function(_0xc9a07f){if(_0xc9a07f){return _0xc9a07f?{'count':_0x35acbc,'rows':_0xc9a07f}:null;}})[_0x0a18('0x22')](respondWithResult(_0x46dcc5,null))[_0x0a18('0x3e')](handleError(_0x46dcc5,null));}; \ No newline at end of file diff --git a/server/api/automation/automation.model.js b/server/api/automation/automation.model.js new file mode 100644 index 0000000..9834720 --- /dev/null +++ b/server/api/automation/automation.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8709=['../../config/environment','exports','define','Automation','tools_automations','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8709,0x109));var _0x9870=function(_0x324f7d,_0x3a0184){_0x324f7d=_0x324f7d-0x0;var _0x158d1e=_0x8709[_0x324f7d];return _0x158d1e;};'use strict';var _=require('lodash');var util=require(_0x9870('0x0'));var logger=require(_0x9870('0x1'))(_0x9870('0x2'));var moment=require(_0x9870('0x3'));var BPromise=require(_0x9870('0x4'));var rp=require(_0x9870('0x5'));var fs=require('fs');var path=require(_0x9870('0x6'));var rimraf=require(_0x9870('0x7'));var config=require(_0x9870('0x8'));var attributes=require('./automation.attributes');module[_0x9870('0x9')]=function(_0x35292a,_0x2a14d8){return _0x35292a[_0x9870('0xa')](_0x9870('0xb'),attributes,{'tableName':_0x9870('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/automation/automation.rpc.js b/server/api/automation/automation.rpc.js new file mode 100644 index 0000000..5e85bc6 --- /dev/null +++ b/server/api/automation/automation.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x39d0=['rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x39d0,0x144));var _0x039d=function(_0x22ebfb,_0x936122){_0x22ebfb=_0x22ebfb-0x0;var _0x1eaee0=_0x39d0[_0x22ebfb];return _0x1eaee0;};'use strict';var _=require(_0x039d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x039d('0x1'));var rs=require(_0x039d('0x2'));var fs=require('fs');var Redis=require(_0x039d('0x3'));var db=require(_0x039d('0x4'))['db'];var utils=require(_0x039d('0x5'));var logger=require('../../config/logger')(_0x039d('0x6'));var config=require(_0x039d('0x7'));var jayson=require(_0x039d('0x8'));var client=jayson[_0x039d('0x9')][_0x039d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7dcc60,_0x2f8c4b,_0x4705e8){return new BPromise(function(_0x425f6e,_0x210090){return client[_0x039d('0xb')](_0x7dcc60,_0x4705e8)['then'](function(_0x591f97){logger[_0x039d('0xc')]('Automation,\x20%s,\x20%s',_0x2f8c4b,_0x039d('0xd'));logger[_0x039d('0xe')](_0x039d('0xf'),_0x2f8c4b,_0x039d('0xd'),JSON['stringify'](_0x591f97));if(_0x591f97[_0x039d('0x10')]){if(_0x591f97[_0x039d('0x10')][_0x039d('0x11')]===0x1f4){logger['error'](_0x039d('0x12'),_0x2f8c4b,_0x591f97[_0x039d('0x10')][_0x039d('0x13')]);return _0x210090(_0x591f97[_0x039d('0x10')][_0x039d('0x13')]);}logger[_0x039d('0x10')](_0x039d('0x12'),_0x2f8c4b,_0x591f97['error']['message']);return _0x425f6e(_0x591f97[_0x039d('0x10')][_0x039d('0x13')]);}else{logger[_0x039d('0xc')](_0x039d('0x12'),_0x2f8c4b,_0x039d('0xd'));_0x425f6e(_0x591f97[_0x039d('0x14')]['message']);}})[_0x039d('0x15')](function(_0x226853){logger[_0x039d('0x10')]('Automation,\x20%s,\x20%s',_0x2f8c4b,_0x226853);_0x210090(_0x226853);});});} \ No newline at end of file diff --git a/server/api/automation/index.js b/server/api/automation/index.js new file mode 100644 index 0000000..22e71dd --- /dev/null +++ b/server/api/automation/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x56ff=['get','index','isAuthenticated','/:id/conditions','getConditions','getActions','post','create','addConditions','/:id/actions','addActions','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller'];(function(_0x2ac856,_0x5b3cf3){var _0x522d28=function(_0xe7b035){while(--_0xe7b035){_0x2ac856['push'](_0x2ac856['shift']());}};_0x522d28(++_0x5b3cf3);}(_0x56ff,0xb9));var _0xf56f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x56ff[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xf56f('0x0'));var util=require(_0xf56f('0x1'));var path=require(_0xf56f('0x2'));var timeout=require(_0xf56f('0x3'));var express=require(_0xf56f('0x4'));var router=express[_0xf56f('0x5')]();var fs_extra=require(_0xf56f('0x6'));var auth=require(_0xf56f('0x7'));var interaction=require(_0xf56f('0x8'));var config=require(_0xf56f('0x9'));var controller=require(_0xf56f('0xa'));router[_0xf56f('0xb')]('/',auth['isAuthenticated'](),controller[_0xf56f('0xc')]);router[_0xf56f('0xb')]('/:id',auth[_0xf56f('0xd')](),controller['show']);router[_0xf56f('0xb')](_0xf56f('0xe'),auth[_0xf56f('0xd')](),controller[_0xf56f('0xf')]);router['get']('/:id/actions',auth['isAuthenticated'](),controller[_0xf56f('0x10')]);router[_0xf56f('0x11')]('/',auth[_0xf56f('0xd')](),controller[_0xf56f('0x12')]);router['post']('/:id/conditions',auth['isAuthenticated'](),controller[_0xf56f('0x13')]);router[_0xf56f('0x11')](_0xf56f('0x14'),auth[_0xf56f('0xd')](),controller[_0xf56f('0x15')]);router[_0xf56f('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xf56f('0x17')]);router[_0xf56f('0x18')](_0xf56f('0x19'),auth[_0xf56f('0xd')](),controller[_0xf56f('0x1a')]);module[_0xf56f('0x1b')]=router; \ No newline at end of file diff --git a/server/api/campaign/campaign.attributes.js b/server/api/campaign/campaign.attributes.js new file mode 100644 index 0000000..bd8a04e --- /dev/null +++ b/server/api/campaign/campaign.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c33=['UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\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','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','DESC','ASC','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ENUM','ivr','BOOLEAN','INTEGER'];(function(_0x6116ee,_0x316cb9){var _0x58320a=function(_0x2b6fdd){while(--_0x2b6fdd){_0x6116ee['push'](_0x6116ee['shift']());}};_0x58320a(++_0x316cb9);}(_0x9c33,0xe0));var _0x39c3=function(_0xe73080,_0x24c56d){_0xe73080=_0xe73080-0x0;var _0x12cbc4=_0x9c33[_0xe73080];return _0x12cbc4;};'use strict';var Sequelize=require('sequelize');module[_0x39c3('0x0')]={'name':{'type':Sequelize[_0x39c3('0x1')],'unique':_0x39c3('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x39c3('0x3')](_0x39c3('0x4')),'allowNull':![],'defaultValue':_0x39c3('0x4')},'description':{'type':Sequelize[_0x39c3('0x1')]},'active':{'type':Sequelize[_0x39c3('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x39c3('0x6')](0x4)[_0x39c3('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x39c3('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x39c3('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x39c3('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x39c3('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x39c3('0x6')](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x39c3('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x39c3('0x6')](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'comment':_0x39c3('0xb')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x39c3('0xc')},'dialGlobalMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x39c3('0xd')},'dialTimezone':{'type':Sequelize[_0x39c3('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x39c3('0x1')],'defaultValue':_0x39c3('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0x39c3('0x3')](_0x39c3('0xf'),'never',_0x39c3('0x10')),'defaultValue':_0x39c3('0xf')},'dialAMDActive':{'type':Sequelize[_0x39c3('0x5')],'defaultValue':0x0,'comment':_0x39c3('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0x39c3('0x6')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x39c3('0x6')](0x9)[_0x39c3('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x39c3('0x12')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x39c3('0x6')](0x9)[_0x39c3('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x39c3('0x13')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x39c3('0x6')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x39c3('0x14')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x39c3('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x39c3('0x6')](0x9)[_0x39c3('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x39c3('0x15')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x39c3('0x6')](0x9)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x39c3('0x16')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x39c3('0x6')](0x5)[_0x39c3('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x39c3('0x6')](0x9)[_0x39c3('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x39c3('0x3')](_0x39c3('0x17'),_0x39c3('0x18')),'defaultValue':_0x39c3('0x17')},'dialPrefix':{'type':Sequelize[_0x39c3('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x39c3('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x39c3('0x19')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x39c3('0x1a')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x39c3('0x1b')},'dialDropMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x39c3('0x6')](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x39c3('0x1c')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x39c3('0x1d')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x39c3('0x6')](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x39c3('0x1e')},'dialMachineRetryFrequency':{'type':Sequelize[_0x39c3('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x39c3('0x6')](0x3)[_0x39c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x39c3('0x1f')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x39c3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x39c3('0x20')}}; \ No newline at end of file diff --git a/server/api/campaign/campaign.controller.js b/server/api/campaign/campaign.controller.js new file mode 100644 index 0000000..aa08646 --- /dev/null +++ b/server/api/campaign/campaign.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xeb43=['fromQuery','scheduledAt','ContactId','select','phone','field','CmListId','toString','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','NOW()','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cmHopperId','OrderBy','h.id','ci.item','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','push','sequelize','all','removeLists','CmList','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','mustache','util','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','get','IvrCampaigns','UserProfileResource','then','stack','name','index','map','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Campaign','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','userProfileId','autoAssociation','findOne','CmHopper','length','pick','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','format','YYYY-MM-DD\x20HH:mm:ss','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb43,0x149));var _0x3eb4=function(_0x1fd5eb,_0x235203){_0x1fd5eb=_0x1fd5eb-0x0;var _0x102365=_0xeb43[_0x1fd5eb];return _0x102365;};'use strict';var emlformat=require(_0x3eb4('0x0'));var rimraf=require(_0x3eb4('0x1'));var zipdir=require(_0x3eb4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3eb4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3eb4('0x4'));var util=require(_0x3eb4('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x3eb4('0x6'));var ejs=require(_0x3eb4('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3eb4('0x8'));var squel=require('squel');var crypto=require(_0x3eb4('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x3eb4('0xa'));var toCsv=require(_0x3eb4('0x6'));var querystring=require(_0x3eb4('0xb'));var Papa=require(_0x3eb4('0xc'));var Redis=require(_0x3eb4('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x3eb4('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3eb4('0xf'));var logger=require(_0x3eb4('0x10'))(_0x3eb4('0x11'));var utils=require(_0x3eb4('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x3eb4('0x13'));var db=require(_0x3eb4('0x14'))['db'];function respondWithStatusCode(_0x282ffa,_0x10e49e){_0x10e49e=_0x10e49e||0xcc;return function(_0x1e738e){if(_0x1e738e){return _0x282ffa[_0x3eb4('0x15')](_0x10e49e);}return _0x282ffa['status'](_0x10e49e)[_0x3eb4('0x16')]();};}function respondWithResult(_0x4caa07,_0x5549e5){_0x5549e5=_0x5549e5||0xc8;return function(_0x45342a){if(_0x45342a){return _0x4caa07['status'](_0x5549e5)[_0x3eb4('0x17')](_0x45342a);}};}function respondWithFilteredResult(_0x7d975e,_0x450a5e){return function(_0x123861){if(_0x123861){var _0xc5b9c2=typeof _0x450a5e[_0x3eb4('0x18')]===_0x3eb4('0x19')&&typeof _0x450a5e[_0x3eb4('0x1a')]===_0x3eb4('0x19');var _0x1af3ed=_0x123861['count'];var _0x3fb1c0=_0xc5b9c2?0x0:_0x450a5e[_0x3eb4('0x18')];var _0x1fcc85=_0xc5b9c2?_0x123861[_0x3eb4('0x1b')]:_0x450a5e[_0x3eb4('0x18')]+_0x450a5e[_0x3eb4('0x1a')];var _0x175d3c;if(_0x1fcc85>=_0x1af3ed){_0x1fcc85=_0x1af3ed;_0x175d3c=0xc8;}else{_0x175d3c=0xce;}_0x7d975e[_0x3eb4('0x1c')](_0x175d3c);return _0x7d975e[_0x3eb4('0x1d')](_0x3eb4('0x1e'),_0x3fb1c0+'-'+_0x1fcc85+'/'+_0x1af3ed)['json'](_0x123861);}return null;};}function patchUpdates(_0x55fe47){return function(_0x276934){try{jsonpatch[_0x3eb4('0x1f')](_0x276934,_0x55fe47,!![]);}catch(_0x25ee8d){return BPromise[_0x3eb4('0x20')](_0x25ee8d);}return _0x276934[_0x3eb4('0x21')]();};}function saveUpdates(_0x47b4bd,_0x35c4ec){return function(_0x5eb01d){if(_0x5eb01d){return _0x5eb01d[_0x3eb4('0x22')](_0x47b4bd)['then'](function(_0x2edf82){return _0x2edf82;});}return null;};}function removeEntity(_0x425457,_0x1e87a6){return function(_0x1c2f04){if(_0x1c2f04){return _0x1c2f04[_0x3eb4('0x23')]()['then'](function(){var _0x1b4c97=_0x1c2f04[_0x3eb4('0x24')]({'plain':!![]});var _0x5b8149=_0x3eb4('0x25');return db[_0x3eb4('0x26')][_0x3eb4('0x23')]({'where':{'type':_0x5b8149,'resourceId':_0x1b4c97['id']}})[_0x3eb4('0x27')](function(){return _0x1c2f04;});})['then'](function(){_0x425457[_0x3eb4('0x1c')](0xcc)[_0x3eb4('0x16')]();});}};}function handleEntityNotFound(_0x96d1e,_0x5303f2){return function(_0x50684f){if(!_0x50684f){_0x96d1e[_0x3eb4('0x15')](0x194);}return _0x50684f;};}function handleError(_0x281a5a,_0x3fd1a7){_0x3fd1a7=_0x3fd1a7||0x1f4;return function(_0x51ef72){logger['error'](_0x51ef72[_0x3eb4('0x28')]);if(_0x51ef72['name']){delete _0x51ef72[_0x3eb4('0x29')];}_0x281a5a['status'](_0x3fd1a7)['send'](_0x51ef72);};}exports[_0x3eb4('0x2a')]=function(_0x5975e4,_0x3d9af8){var _0x2ba4fe={},_0xc8bb50={},_0xb55d7e={'count':0x0,'rows':[]};var _0x43e992=_[_0x3eb4('0x2b')](db['Campaign']['rawAttributes'],function(_0x248e37){return{'name':_0x248e37[_0x3eb4('0x2c')],'type':_0x248e37[_0x3eb4('0x2d')][_0x3eb4('0x2e')]};});_0xc8bb50[_0x3eb4('0x2f')]=_['map'](_0x43e992,_0x3eb4('0x29'));_0xc8bb50[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0x5975e4[_0x3eb4('0x30')]);_0xc8bb50[_0x3eb4('0x32')]=_['intersection'](_0xc8bb50['model'],_0xc8bb50[_0x3eb4('0x30')]);_0x2ba4fe[_0x3eb4('0x33')]=_[_0x3eb4('0x34')](_0xc8bb50[_0x3eb4('0x2f')],qs[_0x3eb4('0x35')](_0x5975e4[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x2ba4fe['attributes']=_0x2ba4fe[_0x3eb4('0x33')]['length']?_0x2ba4fe[_0x3eb4('0x33')]:_0xc8bb50['model'];if(!_0x5975e4[_0x3eb4('0x30')][_0x3eb4('0x36')](_0x3eb4('0x37'))){_0x2ba4fe['limit']=qs['limit'](_0x5975e4[_0x3eb4('0x30')][_0x3eb4('0x1a')]);_0x2ba4fe[_0x3eb4('0x18')]=qs[_0x3eb4('0x18')](_0x5975e4[_0x3eb4('0x30')]['offset']);}_0x2ba4fe[_0x3eb4('0x38')]=qs[_0x3eb4('0x39')](_0x5975e4['query'][_0x3eb4('0x39')]);_0x2ba4fe[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_['pick'](_0x5975e4['query'],_0xc8bb50[_0x3eb4('0x32')]),_0x43e992);if(_0x5975e4['query'][_0x3eb4('0x3b')]){_0x2ba4fe[_0x3eb4('0x3a')]=_[_0x3eb4('0x3c')](_0x2ba4fe[_0x3eb4('0x3a')],{'$or':_['map'](_0x43e992,function(_0x2e62e1){if(_0x2e62e1[_0x3eb4('0x2d')]!==_0x3eb4('0x3d')){var _0x4ede9a={};_0x4ede9a[_0x2e62e1[_0x3eb4('0x29')]]={'$like':'%'+_0x5975e4[_0x3eb4('0x30')][_0x3eb4('0x3b')]+'%'};return _0x4ede9a;}})});}_0x2ba4fe=_[_0x3eb4('0x3c')]({},_0x2ba4fe,_0x5975e4[_0x3eb4('0x3e')]);var _0x8b69b2={'where':_0x2ba4fe[_0x3eb4('0x3a')]};return db[_0x3eb4('0x3f')][_0x3eb4('0x1b')](_0x8b69b2)[_0x3eb4('0x27')](function(_0x1f1376){_0xb55d7e['count']=_0x1f1376;if(_0x5975e4['query'][_0x3eb4('0x40')]){_0x2ba4fe[_0x3eb4('0x41')]=[{'all':!![]}];}return db[_0x3eb4('0x3f')][_0x3eb4('0x42')](_0x2ba4fe);})[_0x3eb4('0x27')](function(_0x14d5be){_0xb55d7e[_0x3eb4('0x43')]=_0x14d5be;return _0xb55d7e;})[_0x3eb4('0x27')](respondWithFilteredResult(_0x3d9af8,_0x2ba4fe))['catch'](handleError(_0x3d9af8,null));};exports[_0x3eb4('0x44')]=function(_0x5be81b,_0x2c958){var _0x140343={'raw':![],'where':{'id':_0x5be81b[_0x3eb4('0x45')]['id']}},_0x34da0d={};_0x34da0d[_0x3eb4('0x2f')]=_[_0x3eb4('0x31')](db[_0x3eb4('0x3f')][_0x3eb4('0x46')]);_0x34da0d[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0x5be81b['query']);_0x34da0d[_0x3eb4('0x32')]=_[_0x3eb4('0x34')](_0x34da0d[_0x3eb4('0x2f')],_0x34da0d['query']);_0x140343[_0x3eb4('0x33')]=_['intersection'](_0x34da0d[_0x3eb4('0x2f')],qs['fields'](_0x5be81b[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x140343[_0x3eb4('0x33')]=_0x140343[_0x3eb4('0x33')]['length']?_0x140343['attributes']:_0x34da0d[_0x3eb4('0x2f')];if(_0x5be81b[_0x3eb4('0x30')][_0x3eb4('0x40')]){_0x140343[_0x3eb4('0x41')]=[{'all':!![]}];}_0x140343=_[_0x3eb4('0x3c')]({},_0x140343,_0x5be81b[_0x3eb4('0x3e')]);return db[_0x3eb4('0x3f')][_0x3eb4('0x47')](_0x140343)[_0x3eb4('0x27')](handleEntityNotFound(_0x2c958,null))[_0x3eb4('0x27')](respondWithResult(_0x2c958,null))['catch'](handleError(_0x2c958,null));};exports[_0x3eb4('0x48')]=function(_0x7cb397,_0x11362b){return db['Campaign']['create'](_0x7cb397[_0x3eb4('0x49')],{})['then'](function(_0x3da2e6){var _0x453ba4=_0x7cb397[_0x3eb4('0x4a')][_0x3eb4('0x24')]({'plain':!![]});if(!_0x453ba4)throw new Error(_0x3eb4('0x4b'));if(_0x453ba4[_0x3eb4('0x4c')]===_0x3eb4('0x4a')){var _0x1ff839=_0x3da2e6[_0x3eb4('0x24')]({'plain':!![]});var _0x20221d=_0x3eb4('0x25');return db[_0x3eb4('0x4d')][_0x3eb4('0x47')]({'where':{'name':_0x20221d,'userProfileId':_0x453ba4['userProfileId']},'raw':!![]})[_0x3eb4('0x27')](function(_0x85da6f){if(_0x85da6f&&_0x85da6f['autoAssociation']===0x0){return db[_0x3eb4('0x26')]['create']({'name':_0x1ff839[_0x3eb4('0x29')],'resourceId':_0x1ff839['id'],'type':_0x85da6f[_0x3eb4('0x29')],'sectionId':_0x85da6f['id']},{})[_0x3eb4('0x27')](function(){return _0x3da2e6;});}else{return _0x3da2e6;}})[_0x3eb4('0x4e')](function(_0x134d2e){logger[_0x3eb4('0x4f')](_0x3eb4('0x50'),_0x134d2e);throw _0x134d2e;});}return _0x3da2e6;})[_0x3eb4('0x27')](respondWithResult(_0x11362b,0xc9))['catch'](handleError(_0x11362b,null));};exports['clone']=function(_0x34b431,_0x1eab5a){var _0x5a9eec={'where':{'id':_0x34b431[_0x3eb4('0x45')]['id']}},_0x1c8f40={};_0x1c8f40['model']=_[_0x3eb4('0x31')](db['Campaign'][_0x3eb4('0x46')]);_0x5a9eec[_0x3eb4('0x33')]=_['intersection'](_0x1c8f40[_0x3eb4('0x2f')],qs['fields'](_0x34b431[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x5a9eec[_0x3eb4('0x33')]=_0x5a9eec[_0x3eb4('0x33')]['length']?_0x5a9eec['attributes']:_0x1c8f40[_0x3eb4('0x2f')];if(_0x34b431[_0x3eb4('0x30')]['includeAll']){_0x5a9eec[_0x3eb4('0x41')]=[{'all':!![]}];}_0x5a9eec=_[_0x3eb4('0x3c')]({},_0x5a9eec,_0x34b431[_0x3eb4('0x3e')]);return db[_0x3eb4('0x3f')][_0x3eb4('0x47')](_0x5a9eec)[_0x3eb4('0x27')](handleEntityNotFound(_0x1eab5a,null))['then'](function(_0x4c1315){if(_0x4c1315){var _0x16e131=_0x4c1315[_0x3eb4('0x24')]({'plain':!![]});_0x16e131=qs[_0x3eb4('0x51')](_0x16e131,['id',_0x3eb4('0x52'),_0x3eb4('0x53')]);_0x34b431[_0x3eb4('0x49')]=_[_0x3eb4('0x51')](_0x34b431['body'],['id',_0x3eb4('0x52'),'updatedAt']);return db[_0x3eb4('0x3f')][_0x3eb4('0x48')](_[_0x3eb4('0x3c')](_0x16e131,_0x34b431[_0x3eb4('0x49')]),{'include':_0x34b431[_0x3eb4('0x30')][_0x3eb4('0x40')]?[{'all':!![]}]:undefined})[_0x3eb4('0x27')](function(_0x5b22fa){var _0x565e18=_0x34b431[_0x3eb4('0x4a')][_0x3eb4('0x24')]({'plain':!![]});if(!_0x565e18)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x565e18[_0x3eb4('0x4c')]===_0x3eb4('0x4a')){var _0x1ca2a2=_0x5b22fa[_0x3eb4('0x24')]({'plain':!![]});var _0x156304=_0x3eb4('0x25');return db[_0x3eb4('0x4d')][_0x3eb4('0x47')]({'where':{'name':_0x156304,'userProfileId':_0x565e18[_0x3eb4('0x54')]},'raw':!![]})['then'](function(_0x43d75f){if(_0x43d75f&&_0x43d75f[_0x3eb4('0x55')]===0x0){return db[_0x3eb4('0x26')]['create']({'name':_0x1ca2a2[_0x3eb4('0x29')],'resourceId':_0x1ca2a2['id'],'type':_0x43d75f[_0x3eb4('0x29')],'sectionId':_0x43d75f['id']},{})['then'](function(){return _0x5b22fa;});}else{return _0x5b22fa;}})[_0x3eb4('0x4e')](function(_0x4d3bd2){logger[_0x3eb4('0x4f')](_0x3eb4('0x50'),_0x4d3bd2);throw _0x4d3bd2;});}return _0x5b22fa;});}})['then'](respondWithResult(_0x1eab5a,0xc9))[_0x3eb4('0x4e')](handleError(_0x1eab5a,null));};exports['update']=function(_0x1f8584,_0x58a2b8){if(_0x1f8584['body']['id']){delete _0x1f8584[_0x3eb4('0x49')]['id'];}return db[_0x3eb4('0x3f')][_0x3eb4('0x47')]({'where':{'id':_0x1f8584[_0x3eb4('0x45')]['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x58a2b8,null))[_0x3eb4('0x27')](saveUpdates(_0x1f8584[_0x3eb4('0x49')],null))[_0x3eb4('0x27')](respondWithResult(_0x58a2b8,null))[_0x3eb4('0x4e')](handleError(_0x58a2b8,null));};exports[_0x3eb4('0x23')]=function(_0x1a0215,_0x23455f){return db[_0x3eb4('0x3f')]['find']({'where':{'id':_0x1a0215['params']['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x23455f,null))[_0x3eb4('0x27')](removeEntity(_0x23455f,null))[_0x3eb4('0x4e')](handleError(_0x23455f,null));};exports['getHoppers']=function(_0x2dc9d9,_0x229261,_0xe77724){var _0x32b1b8={'raw':!![],'where':{}};var _0x2fcfc2={};var _0x4b12d3={'count':0x0,'rows':[]};return db[_0x3eb4('0x3f')][_0x3eb4('0x56')]({'where':{'id':_0x2dc9d9[_0x3eb4('0x45')]['id']}})['then'](handleEntityNotFound(_0x229261,null))[_0x3eb4('0x27')](function(_0x140a4a){if(_0x140a4a){_0x2fcfc2[_0x3eb4('0x2f')]=_[_0x3eb4('0x31')](db[_0x3eb4('0x57')][_0x3eb4('0x46')]);_0x2fcfc2[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0x2dc9d9['query']);_0x2fcfc2['filters']=_['intersection'](_0x2fcfc2[_0x3eb4('0x2f')],_0x2fcfc2['query']);_0x32b1b8[_0x3eb4('0x33')]=_[_0x3eb4('0x34')](_0x2fcfc2[_0x3eb4('0x2f')],qs[_0x3eb4('0x35')](_0x2dc9d9['query']['fields']));_0x32b1b8['attributes']=_0x32b1b8['attributes'][_0x3eb4('0x58')]?_0x32b1b8[_0x3eb4('0x33')]:_0x2fcfc2[_0x3eb4('0x2f')];if(!_0x2dc9d9[_0x3eb4('0x30')][_0x3eb4('0x36')]('nolimit')){_0x32b1b8[_0x3eb4('0x1a')]=qs['limit'](_0x2dc9d9[_0x3eb4('0x30')][_0x3eb4('0x1a')]);_0x32b1b8[_0x3eb4('0x18')]=qs[_0x3eb4('0x18')](_0x2dc9d9[_0x3eb4('0x30')][_0x3eb4('0x18')]);}_0x32b1b8[_0x3eb4('0x38')]=qs[_0x3eb4('0x39')](_0x2dc9d9['query'][_0x3eb4('0x39')]);_0x32b1b8[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_[_0x3eb4('0x59')](_0x2dc9d9[_0x3eb4('0x30')],_0x2fcfc2['filters']));_0x32b1b8[_0x3eb4('0x3a')]['CampaignId']=_0x140a4a['id'];if(_0x2dc9d9[_0x3eb4('0x30')][_0x3eb4('0x3b')]){_0x32b1b8[_0x3eb4('0x3a')]=_[_0x3eb4('0x3c')](_0x32b1b8[_0x3eb4('0x3a')],{'$or':_[_0x3eb4('0x2b')](_0x32b1b8[_0x3eb4('0x33')],function(_0xa5a9d0){var _0x514f99={};_0x514f99[_0xa5a9d0]={'$like':'%'+_0x2dc9d9[_0x3eb4('0x30')][_0x3eb4('0x3b')]+'%'};return _0x514f99;})});}_0x32b1b8=_[_0x3eb4('0x3c')]({},_0x32b1b8,_0x2dc9d9[_0x3eb4('0x3e')]);return db['CmHopper'][_0x3eb4('0x1b')]({'where':_0x32b1b8['where']})[_0x3eb4('0x27')](function(_0x160bda){_0x4b12d3['count']=_0x160bda;if(_0x2dc9d9[_0x3eb4('0x30')][_0x3eb4('0x40')]){_0x32b1b8[_0x3eb4('0x41')]=[{'all':!![]}];}return db[_0x3eb4('0x57')][_0x3eb4('0x42')](_0x32b1b8);})[_0x3eb4('0x27')](function(_0x27818a){_0x4b12d3[_0x3eb4('0x43')]=_0x27818a;return _0x4b12d3;});}})[_0x3eb4('0x27')](respondWithFilteredResult(_0x229261,_0x32b1b8))[_0x3eb4('0x4e')](handleError(_0x229261,null));};exports['getHopperHistories']=function(_0x337595,_0x513146,_0x1453b8){var _0x750267={'raw':!![],'where':{}};var _0x4286f3={};var _0x4e9984={'count':0x0,'rows':[]};return db[_0x3eb4('0x3f')][_0x3eb4('0x56')]({'where':{'id':_0x337595['params']['id']}})['then'](handleEntityNotFound(_0x513146,null))[_0x3eb4('0x27')](function(_0x80000f){if(_0x80000f){_0x4286f3['model']=_[_0x3eb4('0x31')](db[_0x3eb4('0x5a')][_0x3eb4('0x46')]);_0x4286f3[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0x337595[_0x3eb4('0x30')]);_0x4286f3[_0x3eb4('0x32')]=_[_0x3eb4('0x34')](_0x4286f3['model'],_0x4286f3[_0x3eb4('0x30')]);_0x750267['attributes']=_['intersection'](_0x4286f3['model'],qs[_0x3eb4('0x35')](_0x337595[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x750267[_0x3eb4('0x33')]=_0x750267[_0x3eb4('0x33')][_0x3eb4('0x58')]?_0x750267[_0x3eb4('0x33')]:_0x4286f3[_0x3eb4('0x2f')];if(!_0x337595[_0x3eb4('0x30')][_0x3eb4('0x36')](_0x3eb4('0x37'))){_0x750267[_0x3eb4('0x1a')]=qs[_0x3eb4('0x1a')](_0x337595[_0x3eb4('0x30')][_0x3eb4('0x1a')]);_0x750267['offset']=qs[_0x3eb4('0x18')](_0x337595[_0x3eb4('0x30')][_0x3eb4('0x18')]);}_0x750267[_0x3eb4('0x38')]=qs[_0x3eb4('0x39')](_0x337595[_0x3eb4('0x30')][_0x3eb4('0x39')]);_0x750267[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_[_0x3eb4('0x59')](_0x337595[_0x3eb4('0x30')],_0x4286f3['filters']));_0x750267[_0x3eb4('0x3a')][_0x3eb4('0x5b')]=_0x80000f['id'];if(_0x337595[_0x3eb4('0x30')][_0x3eb4('0x3b')]){_0x750267[_0x3eb4('0x3a')]=_[_0x3eb4('0x3c')](_0x750267[_0x3eb4('0x3a')],{'$or':_[_0x3eb4('0x2b')](_0x750267['attributes'],function(_0xf4928d){var _0x1fa262={};_0x1fa262[_0xf4928d]={'$like':'%'+_0x337595[_0x3eb4('0x30')]['filter']+'%'};return _0x1fa262;})});}_0x750267=_[_0x3eb4('0x3c')]({},_0x750267,_0x337595[_0x3eb4('0x3e')]);return db[_0x3eb4('0x5a')][_0x3eb4('0x1b')]({'where':_0x750267[_0x3eb4('0x3a')]})[_0x3eb4('0x27')](function(_0x7a85e4){_0x4e9984[_0x3eb4('0x1b')]=_0x7a85e4;if(_0x337595[_0x3eb4('0x30')][_0x3eb4('0x40')]){_0x750267[_0x3eb4('0x41')]=[{'all':!![]}];}return db[_0x3eb4('0x5a')]['findAll'](_0x750267);})['then'](function(_0x983a61){_0x4e9984[_0x3eb4('0x43')]=_0x983a61;return _0x4e9984;});}})[_0x3eb4('0x27')](respondWithFilteredResult(_0x513146,_0x750267))['catch'](handleError(_0x513146,null));};exports[_0x3eb4('0x5c')]=function(_0x38e7dc,_0x322108,_0x1dfc71){var _0x27538e={'raw':!![],'where':{}};var _0x3806d2={};var _0x485a76={'count':0x0,'rows':[]};return db[_0x3eb4('0x3f')]['findOne']({'where':{'id':_0x38e7dc[_0x3eb4('0x45')]['id']}})['then'](handleEntityNotFound(_0x322108,null))[_0x3eb4('0x27')](function(_0x382cfe){if(_0x382cfe){_0x3806d2['model']=_[_0x3eb4('0x31')](db[_0x3eb4('0x5d')]['rawAttributes']);_0x3806d2[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0x38e7dc[_0x3eb4('0x30')]);_0x3806d2[_0x3eb4('0x32')]=_[_0x3eb4('0x34')](_0x3806d2[_0x3eb4('0x2f')],_0x3806d2['query']);_0x27538e[_0x3eb4('0x33')]=_[_0x3eb4('0x34')](_0x3806d2[_0x3eb4('0x2f')],qs[_0x3eb4('0x35')](_0x38e7dc[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x27538e[_0x3eb4('0x33')]=_0x27538e[_0x3eb4('0x33')]['length']?_0x27538e[_0x3eb4('0x33')]:_0x3806d2['model'];if(!_0x38e7dc['query'][_0x3eb4('0x36')]('nolimit')){_0x27538e[_0x3eb4('0x1a')]=qs['limit'](_0x38e7dc[_0x3eb4('0x30')][_0x3eb4('0x1a')]);_0x27538e[_0x3eb4('0x18')]=qs[_0x3eb4('0x18')](_0x38e7dc['query'][_0x3eb4('0x18')]);}_0x27538e[_0x3eb4('0x38')]=qs['sort'](_0x38e7dc[_0x3eb4('0x30')][_0x3eb4('0x39')]);_0x27538e[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_[_0x3eb4('0x59')](_0x38e7dc[_0x3eb4('0x30')],_0x3806d2[_0x3eb4('0x32')]));_0x27538e['where'][_0x3eb4('0x5b')]=_0x382cfe['id'];if(_0x38e7dc[_0x3eb4('0x30')][_0x3eb4('0x3b')]){_0x27538e[_0x3eb4('0x3a')]=_['merge'](_0x27538e[_0x3eb4('0x3a')],{'$or':_[_0x3eb4('0x2b')](_0x27538e[_0x3eb4('0x33')],function(_0x230958){var _0x171885={};_0x171885[_0x230958]={'$like':'%'+_0x38e7dc[_0x3eb4('0x30')]['filter']+'%'};return _0x171885;})});}_0x27538e=_[_0x3eb4('0x3c')]({},_0x27538e,_0x38e7dc[_0x3eb4('0x3e')]);return db['CmHopperFinal'][_0x3eb4('0x1b')]({'where':_0x27538e['where']})[_0x3eb4('0x27')](function(_0x513ab6){_0x485a76[_0x3eb4('0x1b')]=_0x513ab6;if(_0x38e7dc[_0x3eb4('0x30')][_0x3eb4('0x40')]){_0x27538e[_0x3eb4('0x41')]=[{'all':!![]}];}return db[_0x3eb4('0x5d')][_0x3eb4('0x42')](_0x27538e);})[_0x3eb4('0x27')](function(_0x15ae28){_0x485a76[_0x3eb4('0x43')]=_0x15ae28;return _0x485a76;});}})[_0x3eb4('0x27')](respondWithFilteredResult(_0x322108,_0x27538e))[_0x3eb4('0x4e')](handleError(_0x322108,null));};exports[_0x3eb4('0x5e')]=function(_0x4756fd,_0x364a96,_0x5cd0d7){var _0x280d04={'raw':!![],'where':{}};var _0x31ebe4={};var _0x36d096={'count':0x0,'rows':[]};return db['Campaign'][_0x3eb4('0x56')]({'where':{'id':_0x4756fd[_0x3eb4('0x45')]['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x364a96,null))[_0x3eb4('0x27')](function(_0x339dc7){if(_0x339dc7){_0x31ebe4[_0x3eb4('0x2f')]=_[_0x3eb4('0x31')](db[_0x3eb4('0x5f')][_0x3eb4('0x46')]);_0x31ebe4['query']=_[_0x3eb4('0x31')](_0x4756fd[_0x3eb4('0x30')]);_0x31ebe4[_0x3eb4('0x32')]=_[_0x3eb4('0x34')](_0x31ebe4[_0x3eb4('0x2f')],_0x31ebe4[_0x3eb4('0x30')]);_0x280d04[_0x3eb4('0x33')]=_['intersection'](_0x31ebe4[_0x3eb4('0x2f')],qs[_0x3eb4('0x35')](_0x4756fd['query'][_0x3eb4('0x35')]));_0x280d04[_0x3eb4('0x33')]=_0x280d04['attributes'][_0x3eb4('0x58')]?_0x280d04[_0x3eb4('0x33')]:_0x31ebe4[_0x3eb4('0x2f')];if(!_0x4756fd['query'][_0x3eb4('0x36')](_0x3eb4('0x37'))){_0x280d04[_0x3eb4('0x1a')]=qs[_0x3eb4('0x1a')](_0x4756fd[_0x3eb4('0x30')]['limit']);_0x280d04[_0x3eb4('0x18')]=qs['offset'](_0x4756fd['query'][_0x3eb4('0x18')]);}_0x280d04[_0x3eb4('0x38')]=qs['sort'](_0x4756fd[_0x3eb4('0x30')]['sort']);_0x280d04[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_[_0x3eb4('0x59')](_0x4756fd['query'],_0x31ebe4[_0x3eb4('0x32')]));_0x280d04['where'][_0x3eb4('0x5b')]=_0x339dc7['id'];if(_0x4756fd[_0x3eb4('0x30')][_0x3eb4('0x3b')]){_0x280d04[_0x3eb4('0x3a')]=_[_0x3eb4('0x3c')](_0x280d04[_0x3eb4('0x3a')],{'$or':_[_0x3eb4('0x2b')](_0x280d04[_0x3eb4('0x33')],function(_0x3476b9){var _0x9a89cd={};_0x9a89cd[_0x3476b9]={'$like':'%'+_0x4756fd[_0x3eb4('0x30')][_0x3eb4('0x3b')]+'%'};return _0x9a89cd;})});}_0x280d04=_[_0x3eb4('0x3c')]({},_0x280d04,_0x4756fd[_0x3eb4('0x3e')]);return db[_0x3eb4('0x5f')]['count']({'where':_0x280d04['where']})['then'](function(_0x38171e){_0x36d096[_0x3eb4('0x1b')]=_0x38171e;if(_0x4756fd['query'][_0x3eb4('0x40')]){_0x280d04[_0x3eb4('0x41')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x3eb4('0x42')](_0x280d04);})[_0x3eb4('0x27')](function(_0x3fcff8){_0x36d096[_0x3eb4('0x43')]=_0x3fcff8;return _0x36d096;});}})[_0x3eb4('0x27')](respondWithFilteredResult(_0x364a96,_0x280d04))[_0x3eb4('0x4e')](handleError(_0x364a96,null));};exports[_0x3eb4('0x60')]=function(_0x47f1a9,_0x36b46a,_0x55b83a){var _0x1f527f={};var _0x269043={};var _0x2d845d;var _0x3697e8;return db['Campaign'][_0x3eb4('0x56')]({'where':{'id':_0x47f1a9['params']['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x36b46a,null))[_0x3eb4('0x27')](function(_0x1b05eb){if(_0x1b05eb){_0x2d845d=_0x1b05eb;_0x269043[_0x3eb4('0x2f')]=_['keys'](db['CmList'][_0x3eb4('0x46')]);_0x269043[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0x47f1a9[_0x3eb4('0x30')]);_0x269043['filters']=_['intersection'](_0x269043[_0x3eb4('0x2f')],_0x269043[_0x3eb4('0x30')]);_0x1f527f[_0x3eb4('0x33')]=_[_0x3eb4('0x34')](_0x269043[_0x3eb4('0x2f')],qs[_0x3eb4('0x35')](_0x47f1a9[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x1f527f[_0x3eb4('0x33')]=_0x1f527f['attributes'][_0x3eb4('0x58')]?_0x1f527f[_0x3eb4('0x33')]:_0x269043['model'];_0x1f527f[_0x3eb4('0x38')]=qs[_0x3eb4('0x39')](_0x47f1a9[_0x3eb4('0x30')][_0x3eb4('0x39')]);_0x1f527f[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_['pick'](_0x47f1a9[_0x3eb4('0x30')],_0x269043[_0x3eb4('0x32')]));if(_0x47f1a9['query']['filter']){_0x1f527f[_0x3eb4('0x3a')]=_[_0x3eb4('0x3c')](_0x1f527f[_0x3eb4('0x3a')],{'$or':_['map'](_0x1f527f[_0x3eb4('0x33')],function(_0xabc43b){var _0x68e89f={};_0x68e89f[_0xabc43b]={'$like':'%'+_0x47f1a9[_0x3eb4('0x30')][_0x3eb4('0x3b')]+'%'};return _0x68e89f;})});}_0x1f527f=_[_0x3eb4('0x3c')]({},_0x1f527f,_0x47f1a9[_0x3eb4('0x3e')]);return _0x2d845d['getLists'](_0x1f527f);}})[_0x3eb4('0x27')](function(_0x36cb11){if(_0x36cb11){_0x3697e8=_0x36cb11['length'];if(!_0x47f1a9[_0x3eb4('0x30')][_0x3eb4('0x36')](_0x3eb4('0x37'))){_0x1f527f[_0x3eb4('0x1a')]=qs[_0x3eb4('0x1a')](_0x47f1a9[_0x3eb4('0x30')][_0x3eb4('0x1a')]);_0x1f527f[_0x3eb4('0x18')]=qs[_0x3eb4('0x18')](_0x47f1a9[_0x3eb4('0x30')]['offset']);}return _0x2d845d[_0x3eb4('0x60')](_0x1f527f);}})[_0x3eb4('0x27')](function(_0x1b84f7){if(_0x1b84f7){return _0x1b84f7?{'count':_0x3697e8,'rows':_0x1b84f7}:null;}})[_0x3eb4('0x27')](respondWithResult(_0x36b46a,null))['catch'](handleError(_0x36b46a,null));};exports['addLists']=function(_0x3b5844,_0x35d863,_0x2a8795){var _0x2e90dd,_0x1de48d;var _0x5c45b7=[];var _0xb2f96c=moment()[_0x3eb4('0x61')](_0x3eb4('0x62'));return db['Campaign'][_0x3eb4('0x47')]({'where':{'id':_0x3b5844[_0x3eb4('0x45')]['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x35d863,null))[_0x3eb4('0x27')](function(_0x262b1d){if(_0x262b1d){_0x1de48d=_0x262b1d;return _0x262b1d[_0x3eb4('0x63')](_0x3b5844[_0x3eb4('0x49')][_0x3eb4('0x64')],_['omit'](_0x3b5844[_0x3eb4('0x49')],['ids','id'])||{});}return null;})[_0x3eb4('0x65')](function(_0x231eb5){var _0x57e7f1;var _0x42366d;_0x2e90dd=_0x231eb5||[];var _0x59297c=[];if(_0x231eb5){for(var _0x3c90f6=0x0;_0x3c90f6<_0x231eb5[_0x3eb4('0x58')];_0x3c90f6+=0x1){var _0x2dca0f=_0x231eb5[_0x3c90f6][_0x3eb4('0x24')]({'plain':!![]});_0x1de48d[_0x3eb4('0x66')]=_0x3b5844[_0x3eb4('0x49')]['dialCheckDuplicateType']?_0x3b5844[_0x3eb4('0x49')][_0x3eb4('0x66')]:_0x1de48d[_0x3eb4('0x66')];switch(_0x1de48d[_0x3eb4('0x66')]){case _0x3eb4('0x67'):_0x57e7f1=squel['insert']()[_0x3eb4('0x68')](_0x3eb4('0x69'))[_0x3eb4('0x6a')](['phone',_0x3eb4('0x6b'),_0x3eb4('0x6c'),'ListId',_0x3eb4('0x5b'),_0x3eb4('0x52'),_0x3eb4('0x53')],squel[_0x3eb4('0x6d')]()['field'](_0x3eb4('0x6e'),'phone')[_0x3eb4('0x6f')]('NOW()',_0x3eb4('0x6b'))[_0x3eb4('0x6f')]('id',_0x3eb4('0x6c'))['field'](_0x2dca0f[_0x3eb4('0x70')][_0x3eb4('0x71')](),_0x3eb4('0x72'))['field'](_0x3b5844['params']['id'][_0x3eb4('0x71')](),_0x3eb4('0x5b'))[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x52'))[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x53'))[_0x3eb4('0x73')](_0x3eb4('0x74'))[_0x3eb4('0x3a')](_0x3eb4('0x75'))[_0x3eb4('0x3a')]('ListId\x20=\x20?',_0x2dca0f[_0x3eb4('0x70')][_0x3eb4('0x71')]())[_0x3eb4('0x3a')]('phone\x20IS\x20NOT\x20NULL')[_0x3eb4('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0x3eb4('0x76'))[_0x3eb4('0x73')](_0x3eb4('0x77'))['where'](_0x3eb4('0x78'),_0x3b5844[_0x3eb4('0x45')]['id'][_0x3eb4('0x71')]()))['where'](_0x3eb4('0x79'),squel[_0x3eb4('0x6d')]()['field'](_0x3eb4('0x7a'))[_0x3eb4('0x73')]('cm_hopper')['where'](_0x3eb4('0x78'),_0x3b5844['params']['id']['toString']())))[_0x3eb4('0x71')]();break;case _0x3eb4('0x7b'):_0x57e7f1=squel[_0x3eb4('0x7c')]()['into'](_0x3eb4('0x69'))['fromQuery']([_0x3eb4('0x6e'),_0x3eb4('0x6b'),_0x3eb4('0x6c'),_0x3eb4('0x72'),_0x3eb4('0x5b'),_0x3eb4('0x52'),'updatedAt'],squel[_0x3eb4('0x6d')]()['field'](_0x3eb4('0x6e'),_0x3eb4('0x6e'))[_0x3eb4('0x6f')](_0x3eb4('0x7d'),'scheduledAt')[_0x3eb4('0x6f')]('id',_0x3eb4('0x6c'))['field'](_0x2dca0f['CmListId'][_0x3eb4('0x71')](),'ListId')[_0x3eb4('0x6f')](_0x3b5844['params']['id']['toString'](),_0x3eb4('0x5b'))[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x52'))['field']('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x53'))[_0x3eb4('0x73')](_0x3eb4('0x74'))[_0x3eb4('0x3a')]('deletedAt\x20IS\x20NULL')[_0x3eb4('0x3a')](_0x3eb4('0x7e'),_0x2dca0f[_0x3eb4('0x70')][_0x3eb4('0x71')]())[_0x3eb4('0x3a')](_0x3eb4('0x7f'))[_0x3eb4('0x3a')](_0x3eb4('0x79'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0x3eb4('0x73')](_0x3eb4('0x69'))[_0x3eb4('0x3a')]('CampaignId\x20=\x20?',_0x3b5844[_0x3eb4('0x45')]['id'][_0x3eb4('0x71')]())))[_0x3eb4('0x71')]();break;default:_0x57e7f1=squel[_0x3eb4('0x7c')]()[_0x3eb4('0x68')]('cm_hopper')['fromQuery'](['phone',_0x3eb4('0x6b'),_0x3eb4('0x6c'),_0x3eb4('0x72'),_0x3eb4('0x5b'),_0x3eb4('0x52'),_0x3eb4('0x53')],squel[_0x3eb4('0x6d')]()[_0x3eb4('0x6f')](_0x3eb4('0x6e'),_0x3eb4('0x6e'))[_0x3eb4('0x6f')](_0x3eb4('0x7d'),'scheduledAt')['field']('id',_0x3eb4('0x6c'))['field'](_0x2dca0f[_0x3eb4('0x70')][_0x3eb4('0x71')](),'ListId')[_0x3eb4('0x6f')](_0x3b5844[_0x3eb4('0x45')]['id'][_0x3eb4('0x71')](),'CampaignId')[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x52'))[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x53'))['from'](_0x3eb4('0x74'))['where'](_0x3eb4('0x75'))[_0x3eb4('0x3a')](_0x3eb4('0x7e'),_0x2dca0f['CmListId'][_0x3eb4('0x71')]())[_0x3eb4('0x3a')](_0x3eb4('0x7f')))[_0x3eb4('0x71')]();}_0x42366d=squel[_0x3eb4('0x7c')]()[_0x3eb4('0x68')]('cm_hopper_additional_phones')[_0x3eb4('0x6a')]([_0x3eb4('0x80'),_0x3eb4('0x6b'),_0x3eb4('0x6e'),_0x3eb4('0x81'),_0x3eb4('0x52'),_0x3eb4('0x53')],squel['select']()[_0x3eb4('0x6f')](_0x3eb4('0x82'),'id')[_0x3eb4('0x6f')](_0x3eb4('0x7d'),_0x3eb4('0x6b'))['field'](_0x3eb4('0x83'),_0x3eb4('0x6e'))[_0x3eb4('0x6f')]('ci.OrderBY',_0x3eb4('0x81'))[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27','createdAt')[_0x3eb4('0x6f')]('\x27'+_0xb2f96c+'\x27',_0x3eb4('0x53'))[_0x3eb4('0x73')](_0x3eb4('0x84'),'ci')[_0x3eb4('0x85')]('cm_hopper','h','h.ContactId\x20=\x20ci.CmContactId')[_0x3eb4('0x3a')](_0x3eb4('0x86'),_0x2dca0f[_0x3eb4('0x70')][_0x3eb4('0x71')]())[_0x3eb4('0x3a')](_0x3eb4('0x87'),_0x3b5844[_0x3eb4('0x45')]['id'][_0x3eb4('0x71')]())[_0x3eb4('0x3a')]('h.createdAt\x20=\x20?',_0xb2f96c))[_0x3eb4('0x71')]();_0x59297c[_0x3eb4('0x88')](db['sequelize'][_0x3eb4('0x30')](_0x57e7f1));_0x5c45b7['push'](db[_0x3eb4('0x89')][_0x3eb4('0x30')](_0x42366d));}return BPromise['all'](_0x59297c);}})['then'](function(){return BPromise[_0x3eb4('0x8a')](_0x5c45b7);})[_0x3eb4('0x27')](function(){return _0x2e90dd;})[_0x3eb4('0x27')](respondWithResult(_0x35d863,null))['catch'](handleError(_0x35d863,null));};exports[_0x3eb4('0x8b')]=function(_0x385f87,_0x5d6613,_0x1d24cc){return db[_0x3eb4('0x3f')][_0x3eb4('0x47')]({'where':{'id':_0x385f87['params']['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x5d6613,null))[_0x3eb4('0x27')](function(_0x18018c){if(_0x18018c){return _0x18018c[_0x3eb4('0x8b')](_0x385f87['query'][_0x3eb4('0x64')]);}})[_0x3eb4('0x27')](function(_0x14dbb6){if(_0x14dbb6){return db['CmHopper']['destroy']({'where':{'ListId':_0x385f87[_0x3eb4('0x30')][_0x3eb4('0x64')],'CampaignId':_0x385f87['params']['id']}})[_0x3eb4('0x27')](function(){return _0x14dbb6;});}})[_0x3eb4('0x27')](respondWithStatusCode(_0x5d6613,null))[_0x3eb4('0x4e')](handleError(_0x5d6613,null));};exports['getBlackLists']=function(_0xbad989,_0x517544,_0x13f2e8){var _0x1fafc2={};var _0x45d8b4={};var _0x324cd3;var _0x23db46;return db[_0x3eb4('0x3f')][_0x3eb4('0x56')]({'where':{'id':_0xbad989[_0x3eb4('0x45')]['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x517544,null))[_0x3eb4('0x27')](function(_0x148a33){if(_0x148a33){_0x324cd3=_0x148a33;_0x45d8b4['model']=_['keys'](db[_0x3eb4('0x8c')][_0x3eb4('0x46')]);_0x45d8b4[_0x3eb4('0x30')]=_[_0x3eb4('0x31')](_0xbad989[_0x3eb4('0x30')]);_0x45d8b4[_0x3eb4('0x32')]=_[_0x3eb4('0x34')](_0x45d8b4['model'],_0x45d8b4['query']);_0x1fafc2[_0x3eb4('0x33')]=_[_0x3eb4('0x34')](_0x45d8b4[_0x3eb4('0x2f')],qs['fields'](_0xbad989[_0x3eb4('0x30')][_0x3eb4('0x35')]));_0x1fafc2['attributes']=_0x1fafc2[_0x3eb4('0x33')][_0x3eb4('0x58')]?_0x1fafc2['attributes']:_0x45d8b4[_0x3eb4('0x2f')];_0x1fafc2[_0x3eb4('0x38')]=qs[_0x3eb4('0x39')](_0xbad989[_0x3eb4('0x30')][_0x3eb4('0x39')]);_0x1fafc2[_0x3eb4('0x3a')]=qs[_0x3eb4('0x32')](_[_0x3eb4('0x59')](_0xbad989['query'],_0x45d8b4['filters']));if(_0xbad989['query']['filter']){_0x1fafc2[_0x3eb4('0x3a')]=_[_0x3eb4('0x3c')](_0x1fafc2['where'],{'$or':_['map'](_0x1fafc2[_0x3eb4('0x33')],function(_0x4b129f){var _0x62454={};_0x62454[_0x4b129f]={'$like':'%'+_0xbad989[_0x3eb4('0x30')][_0x3eb4('0x3b')]+'%'};return _0x62454;})});}_0x1fafc2=_['merge']({},_0x1fafc2,_0xbad989['options']);return _0x324cd3['getBlackLists'](_0x1fafc2);}})['then'](function(_0x4eadf6){if(_0x4eadf6){_0x23db46=_0x4eadf6[_0x3eb4('0x58')];if(!_0xbad989[_0x3eb4('0x30')]['hasOwnProperty'](_0x3eb4('0x37'))){_0x1fafc2[_0x3eb4('0x1a')]=qs[_0x3eb4('0x1a')](_0xbad989[_0x3eb4('0x30')][_0x3eb4('0x1a')]);_0x1fafc2[_0x3eb4('0x18')]=qs[_0x3eb4('0x18')](_0xbad989[_0x3eb4('0x30')][_0x3eb4('0x18')]);}return _0x324cd3[_0x3eb4('0x8d')](_0x1fafc2);}})[_0x3eb4('0x27')](function(_0x3dde3f){if(_0x3dde3f){return _0x3dde3f?{'count':_0x23db46,'rows':_0x3dde3f}:null;}})[_0x3eb4('0x27')](respondWithResult(_0x517544,null))[_0x3eb4('0x4e')](handleError(_0x517544,null));};exports[_0x3eb4('0x8e')]=function(_0x28af87,_0x34b434,_0x51f5f7){var _0x2e00d6,_0x56bdc1;var _0x3a6066=[];var _0x4da1d6=moment()[_0x3eb4('0x61')](_0x3eb4('0x62'));return db[_0x3eb4('0x3f')][_0x3eb4('0x47')]({'where':{'id':_0x28af87[_0x3eb4('0x45')]['id']}})[_0x3eb4('0x27')](handleEntityNotFound(_0x34b434,null))[_0x3eb4('0x27')](function(_0x565b9b){if(_0x565b9b){_0x56bdc1=_0x565b9b;return _0x565b9b[_0x3eb4('0x8e')](_0x28af87['body'][_0x3eb4('0x64')],_[_0x3eb4('0x51')](_0x28af87['body'],['ids','id'])||{});}return null;})[_0x3eb4('0x65')](function(_0x527cac){var _0xf6ac3c;var _0x222ae2;_0x2e00d6=_0x527cac||[];var _0x50134d=[];if(_0x527cac){for(var _0x91faa=0x0;_0x91faa<_0x527cac['length'];_0x91faa+=0x1){var _0x40bdc7=_0x527cac[_0x91faa][_0x3eb4('0x24')]({'plain':!![]});_0xf6ac3c=squel[_0x3eb4('0x7c')]()[_0x3eb4('0x68')](_0x3eb4('0x8f'))[_0x3eb4('0x6a')]([_0x3eb4('0x6e'),'ContactId',_0x3eb4('0x72'),_0x3eb4('0x5b'),_0x3eb4('0x52'),_0x3eb4('0x53')],squel[_0x3eb4('0x6d')]()[_0x3eb4('0x6f')](_0x3eb4('0x6e'),_0x3eb4('0x6e'))[_0x3eb4('0x6f')]('id',_0x3eb4('0x6c'))[_0x3eb4('0x6f')](_0x40bdc7[_0x3eb4('0x70')][_0x3eb4('0x71')](),_0x3eb4('0x72'))[_0x3eb4('0x6f')](_0x28af87[_0x3eb4('0x45')]['id'][_0x3eb4('0x71')](),_0x3eb4('0x5b'))[_0x3eb4('0x6f')](_0x3eb4('0x7d'),_0x3eb4('0x52'))[_0x3eb4('0x6f')](_0x3eb4('0x7d'),'updatedAt')[_0x3eb4('0x73')](_0x3eb4('0x74'))[_0x3eb4('0x3a')]('deletedAt\x20IS\x20NULL')[_0x3eb4('0x3a')](_0x3eb4('0x7e'),_0x40bdc7['CmListId']['toString']())['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();_0x50134d[_0x3eb4('0x88')](db['sequelize']['query'](_0xf6ac3c));}return BPromise[_0x3eb4('0x8a')](_0x50134d);}})[_0x3eb4('0x27')](function(){return _0x2e00d6;})['then'](respondWithResult(_0x34b434,null))[_0x3eb4('0x4e')](handleError(_0x34b434,null));};exports[_0x3eb4('0x90')]=function(_0x286db0,_0x51808b,_0x453924){return db[_0x3eb4('0x3f')]['find']({'where':{'id':_0x286db0[_0x3eb4('0x45')]['id']}})['then'](handleEntityNotFound(_0x51808b,null))[_0x3eb4('0x27')](function(_0x512db9){if(_0x512db9){return _0x512db9[_0x3eb4('0x90')](_0x286db0['query'][_0x3eb4('0x64')]);}})[_0x3eb4('0x27')](function(_0xb7b30e){if(_0xb7b30e){return db[_0x3eb4('0x5f')][_0x3eb4('0x23')]({'where':{'ListId':_0x286db0['query']['ids'],'CampaignId':_0x286db0['params']['id']}})['then'](function(){return _0xb7b30e;});}})[_0x3eb4('0x27')](respondWithStatusCode(_0x51808b,null))[_0x3eb4('0x4e')](handleError(_0x51808b,null));}; \ No newline at end of file diff --git a/server/api/campaign/campaign.model.js b/server/api/campaign/campaign.model.js new file mode 100644 index 0000000..3481f7c --- /dev/null +++ b/server/api/campaign/campaign.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x16ebbf,_0x429317){var _0x48d0d3=function(_0xa281a5){while(--_0xa281a5){_0x16ebbf['push'](_0x16ebbf['shift']());}};_0x48d0d3(++_0x429317);}(_0x7a54,0x106));var _0x47a5=function(_0x664b93,_0x2438cc){_0x664b93=_0x664b93-0x0;var _0x47a06a=_0x7a54[_0x664b93];return _0x47a06a;};'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 diff --git a/server/api/campaign/campaign.rpc.js b/server/api/campaign/campaign.rpc.js new file mode 100644 index 0000000..cdcb6d5 --- /dev/null +++ b/server/api/campaign/campaign.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x62da=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','Campaign','options','raw','attributes','limit','map','include','model','stringify','GetCampaign','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0x62da,0xc0));var _0xa62d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x62da[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xa62d('0x0'));var util=require('util');var moment=require(_0xa62d('0x1'));var BPromise=require(_0xa62d('0x2'));var rs=require(_0xa62d('0x3'));var fs=require('fs');var Redis=require(_0xa62d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa62d('0x5'));var logger=require(_0xa62d('0x6'))(_0xa62d('0x7'));var config=require(_0xa62d('0x8'));var jayson=require(_0xa62d('0x9'));var client=jayson[_0xa62d('0xa')][_0xa62d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ceb21,_0x149386,_0x2f6c03){return new BPromise(function(_0x2e8e25,_0x2d6e41){return client['request'](_0x3ceb21,_0x2f6c03)[_0xa62d('0xc')](function(_0x1208d0){logger['info'](_0xa62d('0xd'),_0x149386,_0xa62d('0xe'));logger[_0xa62d('0xf')](_0xa62d('0x10'),_0x149386,_0xa62d('0xe'),JSON['stringify'](_0x1208d0));if(_0x1208d0[_0xa62d('0x11')]){if(_0x1208d0[_0xa62d('0x11')][_0xa62d('0x12')]===0x1f4){logger[_0xa62d('0x11')](_0xa62d('0xd'),_0x149386,_0x1208d0[_0xa62d('0x11')][_0xa62d('0x13')]);return _0x2d6e41(_0x1208d0[_0xa62d('0x11')][_0xa62d('0x13')]);}logger['error'](_0xa62d('0xd'),_0x149386,_0x1208d0[_0xa62d('0x11')][_0xa62d('0x13')]);return _0x2e8e25(_0x1208d0['error'][_0xa62d('0x13')]);}else{logger[_0xa62d('0x14')](_0xa62d('0xd'),_0x149386,_0xa62d('0xe'));_0x2e8e25(_0x1208d0[_0xa62d('0x15')]['message']);}})[_0xa62d('0x16')](function(_0x51226a){logger[_0xa62d('0x11')]('Campaign,\x20%s,\x20%s',_0x149386,_0x51226a);_0x2d6e41(_0x51226a);});});}exports['GetCampaign']=function(_0x192e4e){var _0xa04d7b=this;return new Promise(function(_0x8394e6,_0x30801f){return db[_0xa62d('0x17')]['findAll']({'raw':_0x192e4e['options']?_0x192e4e[_0xa62d('0x18')][_0xa62d('0x19')]===undefined?!![]:![]:!![],'where':_0x192e4e['options']?_0x192e4e[_0xa62d('0x18')]['where']||null:null,'attributes':_0x192e4e[_0xa62d('0x18')]?_0x192e4e['options'][_0xa62d('0x1a')]||null:null,'limit':_0x192e4e['options']?_0x192e4e[_0xa62d('0x18')][_0xa62d('0x1b')]||null:null,'include':_0x192e4e[_0xa62d('0x18')]?_0x192e4e['options']['include']?_[_0xa62d('0x1c')](_0x192e4e[_0xa62d('0x18')][_0xa62d('0x1d')],function(_0x40e577){return{'model':db[_0x40e577[_0xa62d('0x1e')]],'as':_0x40e577['as'],'attributes':_0x40e577['attributes'],'include':_0x40e577['include']?_[_0xa62d('0x1c')](_0x40e577['include'],function(_0x36cfff){return{'model':db[_0x36cfff[_0xa62d('0x1e')]],'as':_0x36cfff['as'],'attributes':_0x36cfff['attributes'],'include':_0x36cfff['include']?_[_0xa62d('0x1c')](_0x36cfff['include'],function(_0x191dd6){return{'model':db[_0x191dd6['model']],'as':_0x191dd6['as'],'attributes':_0x191dd6[_0xa62d('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x104aae){logger[_0xa62d('0x14')]('GetCampaign',_0x192e4e);logger[_0xa62d('0xf')]('GetCampaign',_0x192e4e,JSON[_0xa62d('0x1f')](_0x104aae));_0x8394e6(_0x104aae);})[_0xa62d('0x16')](function(_0xfab048){logger[_0xa62d('0x11')](_0xa62d('0x20'),_0xfab048[_0xa62d('0x13')],_0x192e4e);_0x30801f(_0xa04d7b[_0xa62d('0x11')](0x1f4,_0xfab048[_0xa62d('0x13')]));});});}; \ No newline at end of file diff --git a/server/api/campaign/index.js b/server/api/campaign/index.js new file mode 100644 index 0000000..5651fc4 --- /dev/null +++ b/server/api/campaign/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x043d=['post','create','/:id/clone','clone','addBlackLists','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/lists','getLists','/:id/blacklists','getBlackLists'];(function(_0x31d637,_0x5c2c8b){var _0x233e25=function(_0x23a3f0){while(--_0x23a3f0){_0x31d637['push'](_0x31d637['shift']());}};_0x233e25(++_0x5c2c8b);}(_0x043d,0x1ba));var _0xd043=function(_0x12d6c2,_0x409bc8){_0x12d6c2=_0x12d6c2-0x0;var _0x1c9825=_0x043d[_0x12d6c2];return _0x1c9825;};'use strict';var multer=require(_0xd043('0x0'));var util=require(_0xd043('0x1'));var path=require(_0xd043('0x2'));var timeout=require(_0xd043('0x3'));var express=require(_0xd043('0x4'));var router=express[_0xd043('0x5')]();var fs_extra=require(_0xd043('0x6'));var auth=require(_0xd043('0x7'));var interaction=require(_0xd043('0x8'));var config=require(_0xd043('0x9'));var controller=require(_0xd043('0xa'));router[_0xd043('0xb')]('/',auth[_0xd043('0xc')](),controller[_0xd043('0xd')]);router['get'](_0xd043('0xe'),auth[_0xd043('0xc')](),controller['show']);router[_0xd043('0xb')]('/:id/hoppers',auth[_0xd043('0xc')](),controller[_0xd043('0xf')]);router[_0xd043('0xb')]('/:id/hopper_histories',auth[_0xd043('0xc')](),controller[_0xd043('0x10')]);router[_0xd043('0xb')](_0xd043('0x11'),auth[_0xd043('0xc')](),controller[_0xd043('0x12')]);router['get']('/:id/hopper_black',auth[_0xd043('0xc')](),controller['getHopperBlacks']);router[_0xd043('0xb')](_0xd043('0x13'),auth[_0xd043('0xc')](),controller[_0xd043('0x14')]);router[_0xd043('0xb')](_0xd043('0x15'),auth[_0xd043('0xc')](),controller[_0xd043('0x16')]);router[_0xd043('0x17')]('/',auth[_0xd043('0xc')](),controller[_0xd043('0x18')]);router[_0xd043('0x17')](_0xd043('0x19'),auth[_0xd043('0xc')](),controller[_0xd043('0x1a')]);router[_0xd043('0x17')](_0xd043('0x13'),auth[_0xd043('0xc')](),controller['addLists']);router[_0xd043('0x17')](_0xd043('0x15'),auth[_0xd043('0xc')](),controller[_0xd043('0x1b')]);router['put'](_0xd043('0xe'),auth[_0xd043('0xc')](),controller[_0xd043('0x1c')]);router[_0xd043('0x1d')]('/:id',auth[_0xd043('0xc')](),controller[_0xd043('0x1e')]);router[_0xd043('0x1d')](_0xd043('0x13'),auth[_0xd043('0xc')](),controller['removeLists']);router[_0xd043('0x1d')](_0xd043('0x15'),auth[_0xd043('0xc')](),controller['removeBlackLists']);module['exports']=router; \ No newline at end of file diff --git a/server/api/cannedAnswer/cannedAnswer.attributes.js b/server/api/cannedAnswer/cannedAnswer.attributes.js new file mode 100644 index 0000000..cf3133b --- /dev/null +++ b/server/api/cannedAnswer/cannedAnswer.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x806b=['getDataValue','sequelize','exports','TEXT','STRING'];(function(_0x2128d3,_0x420dfa){var _0x49fa00=function(_0x2c091e){while(--_0x2c091e){_0x2128d3['push'](_0x2128d3['shift']());}};_0x49fa00(++_0x420dfa);}(_0x806b,0x6f));var _0xb806=function(_0x206a2a,_0xa14ea1){_0x206a2a=_0x206a2a-0x0;var _0x462dc2=_0x806b[_0x206a2a];return _0x462dc2;};'use strict';var Sequelize=require(_0xb806('0x0'));module[_0xb806('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xb806('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb806('0x3')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xb806('0x4')]('key');}}}; \ No newline at end of file diff --git a/server/api/cannedAnswer/cannedAnswer.controller.js b/server/api/cannedAnswer/cannedAnswer.controller.js new file mode 100644 index 0000000..e194e78 --- /dev/null +++ b/server/api/cannedAnswer/cannedAnswer.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdd3a=['sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','CannedAnswers','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','UserProfileResource','error','name','send','map','CannedAnswer','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','length','nolimit','order'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdd3a,0x1e5));var _0xadd3=function(_0x34036e,_0x171ab7){_0x34036e=_0x34036e-0x0;var _0xbcb8db=_0xdd3a[_0x34036e];return _0xbcb8db;};'use strict';var emlformat=require(_0xadd3('0x0'));var rimraf=require(_0xadd3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xadd3('0x2'));var rp=require(_0xadd3('0x3'));var moment=require('moment');var BPromise=require(_0xadd3('0x4'));var Mustache=require(_0xadd3('0x5'));var util=require(_0xadd3('0x6'));var path=require(_0xadd3('0x7'));var sox=require(_0xadd3('0x8'));var csv=require('to-csv');var ejs=require(_0xadd3('0x9'));var fs=require('fs');var fs_extra=require(_0xadd3('0xa'));var _=require(_0xadd3('0xb'));var squel=require(_0xadd3('0xc'));var crypto=require(_0xadd3('0xd'));var jsforce=require(_0xadd3('0xe'));var deskjs=require(_0xadd3('0xf'));var toCsv=require(_0xadd3('0x10'));var querystring=require(_0xadd3('0x11'));var Papa=require(_0xadd3('0x12'));var Redis=require('ioredis');var authService=require(_0xadd3('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xadd3('0x14'));var hardwareService=require(_0xadd3('0x15'));var logger=require(_0xadd3('0x16'))(_0xadd3('0x17'));var utils=require(_0xadd3('0x18'));var config=require(_0xadd3('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xadd3('0x1a'))['db'];function respondWithStatusCode(_0x39e80f,_0x128517){_0x128517=_0x128517||0xcc;return function(_0x3915fc){if(_0x3915fc){return _0x39e80f[_0xadd3('0x1b')](_0x128517);}return _0x39e80f[_0xadd3('0x1c')](_0x128517)[_0xadd3('0x1d')]();};}function respondWithResult(_0x88d5f0,_0x2da1be){_0x2da1be=_0x2da1be||0xc8;return function(_0x5c0ab8){if(_0x5c0ab8){return _0x88d5f0[_0xadd3('0x1c')](_0x2da1be)[_0xadd3('0x1e')](_0x5c0ab8);}};}function respondWithFilteredResult(_0x53b7eb,_0x12b2bb){return function(_0x4fb253){if(_0x4fb253){var _0x8bd9c3=typeof _0x12b2bb[_0xadd3('0x1f')]===_0xadd3('0x20')&&typeof _0x12b2bb[_0xadd3('0x21')]===_0xadd3('0x20');var _0x39946e=_0x4fb253['count'];var _0x58c795=_0x8bd9c3?0x0:_0x12b2bb['offset'];var _0x31bc06=_0x8bd9c3?_0x4fb253[_0xadd3('0x22')]:_0x12b2bb[_0xadd3('0x1f')]+_0x12b2bb['limit'];var _0x5e78c9;if(_0x31bc06>=_0x39946e){_0x31bc06=_0x39946e;_0x5e78c9=0xc8;}else{_0x5e78c9=0xce;}_0x53b7eb[_0xadd3('0x1c')](_0x5e78c9);return _0x53b7eb[_0xadd3('0x23')](_0xadd3('0x24'),_0x58c795+'-'+_0x31bc06+'/'+_0x39946e)[_0xadd3('0x1e')](_0x4fb253);}return null;};}function patchUpdates(_0x2d7479){return function(_0x3223e5){try{jsonpatch['apply'](_0x3223e5,_0x2d7479,!![]);}catch(_0xc8735){return BPromise[_0xadd3('0x25')](_0xc8735);}return _0x3223e5[_0xadd3('0x26')]();};}function saveUpdates(_0x27eb86,_0x149f5d){return function(_0x4fadcf){if(_0x4fadcf){return _0x4fadcf[_0xadd3('0x27')](_0x27eb86)['then'](function(_0x29939b){return _0x29939b;});}return null;};}function removeEntity(_0x5dd86e,_0x106574){return function(_0x72c8c1){if(_0x72c8c1){return _0x72c8c1[_0xadd3('0x28')]()[_0xadd3('0x29')](function(){var _0x1e520e=_0x72c8c1['get']({'plain':!![]});var _0x1e9634='CannedAnswers';return db[_0xadd3('0x2a')][_0xadd3('0x28')]({'where':{'type':_0x1e9634,'resourceId':_0x1e520e['id']}})['then'](function(){return _0x72c8c1;});})[_0xadd3('0x29')](function(){_0x5dd86e[_0xadd3('0x1c')](0xcc)[_0xadd3('0x1d')]();});}};}function handleEntityNotFound(_0x404e6b,_0x35024e){return function(_0x46714b){if(!_0x46714b){_0x404e6b[_0xadd3('0x1b')](0x194);}return _0x46714b;};}function handleError(_0x2b6470,_0x5cf7b1){_0x5cf7b1=_0x5cf7b1||0x1f4;return function(_0x5b7c6a){logger[_0xadd3('0x2b')](_0x5b7c6a['stack']);if(_0x5b7c6a[_0xadd3('0x2c')]){delete _0x5b7c6a[_0xadd3('0x2c')];}_0x2b6470[_0xadd3('0x1c')](_0x5cf7b1)[_0xadd3('0x2d')](_0x5b7c6a);};}exports['index']=function(_0x17c2af,_0x1dc01e){var _0x28486c={},_0x4ea72d={},_0x369a02={'count':0x0,'rows':[]};var _0x4c7511=_[_0xadd3('0x2e')](db[_0xadd3('0x2f')][_0xadd3('0x30')],function(_0x4bc9ec){return{'name':_0x4bc9ec['fieldName'],'type':_0x4bc9ec[_0xadd3('0x31')][_0xadd3('0x32')]};});_0x4ea72d[_0xadd3('0x33')]=_[_0xadd3('0x2e')](_0x4c7511,_0xadd3('0x2c'));_0x4ea72d['query']=_[_0xadd3('0x34')](_0x17c2af[_0xadd3('0x35')]);_0x4ea72d[_0xadd3('0x36')]=_['intersection'](_0x4ea72d[_0xadd3('0x33')],_0x4ea72d['query']);_0x28486c[_0xadd3('0x37')]=_[_0xadd3('0x38')](_0x4ea72d[_0xadd3('0x33')],qs['fields'](_0x17c2af['query'][_0xadd3('0x39')]));_0x28486c['attributes']=_0x28486c['attributes'][_0xadd3('0x3a')]?_0x28486c[_0xadd3('0x37')]:_0x4ea72d['model'];if(!_0x17c2af['query']['hasOwnProperty'](_0xadd3('0x3b'))){_0x28486c[_0xadd3('0x21')]=qs[_0xadd3('0x21')](_0x17c2af[_0xadd3('0x35')][_0xadd3('0x21')]);_0x28486c[_0xadd3('0x1f')]=qs[_0xadd3('0x1f')](_0x17c2af[_0xadd3('0x35')][_0xadd3('0x1f')]);}_0x28486c[_0xadd3('0x3c')]=qs[_0xadd3('0x3d')](_0x17c2af[_0xadd3('0x35')][_0xadd3('0x3d')]);_0x28486c[_0xadd3('0x3e')]=qs[_0xadd3('0x36')](_[_0xadd3('0x3f')](_0x17c2af['query'],_0x4ea72d[_0xadd3('0x36')]),_0x4c7511);if(_0x17c2af[_0xadd3('0x35')][_0xadd3('0x40')]){_0x28486c[_0xadd3('0x3e')]=_[_0xadd3('0x41')](_0x28486c[_0xadd3('0x3e')],{'$or':[{'key':{'$like':'%'+_0x17c2af[_0xadd3('0x35')][_0xadd3('0x40')]+'%'}},{'value':{'$like':'%'+_0x17c2af['query'][_0xadd3('0x40')]+'%'}}]});}_0x28486c=_['merge']({},_0x28486c,_0x17c2af[_0xadd3('0x42')]);var _0x287bdd={'where':_0x28486c[_0xadd3('0x3e')]};return db[_0xadd3('0x2f')][_0xadd3('0x22')](_0x287bdd)[_0xadd3('0x29')](function(_0x54b17a){_0x369a02[_0xadd3('0x22')]=_0x54b17a;if(_0x17c2af[_0xadd3('0x35')][_0xadd3('0x43')]){_0x28486c['include']=[{'all':!![]}];}return db[_0xadd3('0x2f')][_0xadd3('0x44')](_0x28486c);})[_0xadd3('0x29')](function(_0x18e98b){_0x369a02[_0xadd3('0x45')]=_0x18e98b;return _0x369a02;})[_0xadd3('0x29')](respondWithFilteredResult(_0x1dc01e,_0x28486c))[_0xadd3('0x46')](handleError(_0x1dc01e,null));};exports[_0xadd3('0x47')]=function(_0x1484e8,_0x2316d9){var _0x38e1b1={'raw':!![],'where':{'id':_0x1484e8[_0xadd3('0x48')]['id']}},_0x39393f={};_0x39393f[_0xadd3('0x33')]=_[_0xadd3('0x34')](db[_0xadd3('0x2f')]['rawAttributes']);_0x39393f[_0xadd3('0x35')]=_[_0xadd3('0x34')](_0x1484e8[_0xadd3('0x35')]);_0x39393f['filters']=_[_0xadd3('0x38')](_0x39393f[_0xadd3('0x33')],_0x39393f[_0xadd3('0x35')]);_0x38e1b1['attributes']=_[_0xadd3('0x38')](_0x39393f['model'],qs['fields'](_0x1484e8[_0xadd3('0x35')][_0xadd3('0x39')]));_0x38e1b1['attributes']=_0x38e1b1['attributes'][_0xadd3('0x3a')]?_0x38e1b1[_0xadd3('0x37')]:_0x39393f[_0xadd3('0x33')];if(_0x1484e8[_0xadd3('0x35')][_0xadd3('0x43')]){_0x38e1b1['include']=[{'all':!![]}];}_0x38e1b1=_[_0xadd3('0x41')]({},_0x38e1b1,_0x1484e8[_0xadd3('0x42')]);return db[_0xadd3('0x2f')][_0xadd3('0x49')](_0x38e1b1)['then'](handleEntityNotFound(_0x2316d9,null))[_0xadd3('0x29')](respondWithResult(_0x2316d9,null))[_0xadd3('0x46')](handleError(_0x2316d9,null));};exports['update']=function(_0x7f6e12,_0xf6c5cd){if(_0x7f6e12[_0xadd3('0x4a')]['id']){delete _0x7f6e12[_0xadd3('0x4a')]['id'];}return db[_0xadd3('0x2f')]['find']({'where':{'id':_0x7f6e12[_0xadd3('0x48')]['id']}})[_0xadd3('0x29')](handleEntityNotFound(_0xf6c5cd,null))[_0xadd3('0x29')](saveUpdates(_0x7f6e12[_0xadd3('0x4a')],null))['then'](respondWithResult(_0xf6c5cd,null))['catch'](handleError(_0xf6c5cd,null));};exports[_0xadd3('0x28')]=function(_0x3d1742,_0x55d224){return db[_0xadd3('0x2f')][_0xadd3('0x49')]({'where':{'id':_0x3d1742['params']['id']}})[_0xadd3('0x29')](handleEntityNotFound(_0x55d224,null))['then'](removeEntity(_0x55d224,null))[_0xadd3('0x46')](handleError(_0x55d224,null));};exports[_0xadd3('0x4b')]=function(_0x258b8f,_0x272bf1){var _0x15834c={'key':_0x258b8f[_0xadd3('0x4a')]['key']};if(_0x258b8f[_0xadd3('0x4a')][_0xadd3('0x4c')]){_0x15834c[_0xadd3('0x4c')]=_0x258b8f[_0xadd3('0x4a')][_0xadd3('0x4c')];}else if(_0x258b8f[_0xadd3('0x4a')][_0xadd3('0x4d')]){_0x15834c['SmsAccountId']=_0x258b8f['body'][_0xadd3('0x4d')];}else if(_0x258b8f[_0xadd3('0x4a')][_0xadd3('0x4e')]){_0x15834c['OpenchannelAccountId']=_0x258b8f['body'][_0xadd3('0x4e')];}else if(_0x258b8f[_0xadd3('0x4a')][_0xadd3('0x4f')]){_0x15834c['ChatWebsiteId']=_0x258b8f[_0xadd3('0x4a')][_0xadd3('0x4f')];}return db[_0xadd3('0x2f')][_0xadd3('0x49')]({'where':_0x15834c})[_0xadd3('0x29')](function(_0x539627){if(_0x539627){throw new db[(_0xadd3('0x50'))][(_0xadd3('0x51'))](_0xadd3('0x52'));}return db[_0xadd3('0x2f')][_0xadd3('0x4b')](_0x258b8f['body']);})[_0xadd3('0x29')](function(_0x10e9b7){var _0x5572c5=_0x258b8f['user']['get']({'plain':!![]});if(!_0x5572c5)throw new Error(_0xadd3('0x53'));if(_0x5572c5[_0xadd3('0x54')]===_0xadd3('0x55')){var _0x16e1c8=_0x10e9b7[_0xadd3('0x56')]({'plain':!![]});return db[_0xadd3('0x57')][_0xadd3('0x49')]({'where':{'name':_0xadd3('0x58'),'userProfileId':_0x5572c5[_0xadd3('0x59')]},'raw':!![]})[_0xadd3('0x29')](function(_0x4df9d9){if(_0x4df9d9&&_0x4df9d9['autoAssociation']===0x0){return db[_0xadd3('0x2a')]['create']({'name':_0x16e1c8[_0xadd3('0x2c')],'resourceId':_0x16e1c8['id'],'type':_0x4df9d9[_0xadd3('0x2c')],'sectionId':_0x4df9d9['id']},{})[_0xadd3('0x29')](function(){return _0x10e9b7;});}else{return _0x10e9b7;}})[_0xadd3('0x46')](function(_0x184c7a){logger['error'](_0xadd3('0x5a'),_0x184c7a);throw _0x184c7a;});}return _0x10e9b7;})[_0xadd3('0x29')](respondWithResult(_0x272bf1,0xc9))[_0xadd3('0x46')](handleError(_0x272bf1,null));}; \ No newline at end of file diff --git a/server/api/cannedAnswer/cannedAnswer.model.js b/server/api/cannedAnswer/cannedAnswer.model.js new file mode 100644 index 0000000..6d81504 --- /dev/null +++ b/server/api/cannedAnswer/cannedAnswer.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xabd2=['exports','define','tools_canned_answers','utf8mb4','lodash','util','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes'];(function(_0x3255c4,_0x273558){var _0x288469=function(_0x3931d9){while(--_0x3931d9){_0x3255c4['push'](_0x3255c4['shift']());}};_0x288469(++_0x273558);}(_0xabd2,0x10c));var _0x2abd=function(_0x1ec623,_0x2202ff){_0x1ec623=_0x1ec623-0x0;var _0x44fdeb=_0xabd2[_0x1ec623];return _0x44fdeb;};'use strict';var _=require(_0x2abd('0x0'));var util=require(_0x2abd('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2abd('0x2'));var fs=require('fs');var path=require(_0x2abd('0x3'));var rimraf=require(_0x2abd('0x4'));var config=require(_0x2abd('0x5'));var attributes=require(_0x2abd('0x6'));module[_0x2abd('0x7')]=function(_0x3c9c06,_0x315870){return _0x3c9c06[_0x2abd('0x8')]('CannedAnswer',attributes,{'tableName':_0x2abd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2abd('0xa'),'collate':'utf8mb4_unicode_ci'});}; \ No newline at end of file diff --git a/server/api/cannedAnswer/cannedAnswer.rpc.js b/server/api/cannedAnswer/cannedAnswer.rpc.js new file mode 100644 index 0000000..9f635cc --- /dev/null +++ b/server/api/cannedAnswer/cannedAnswer.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x4c9fdb,_0x224981){var _0x4c86db=function(_0x1c1b46){while(--_0x1c1b46){_0x4c9fdb['push'](_0x4c9fdb['shift']());}};_0x4c86db(++_0x224981);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 diff --git a/server/api/cannedAnswer/index.js b/server/api/cannedAnswer/index.js new file mode 100644 index 0000000..4d8f7a0 --- /dev/null +++ b/server/api/cannedAnswer/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0170=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete'];(function(_0x9a5c1b,_0x38ad26){var _0x4ffde4=function(_0x3b1dae){while(--_0x3b1dae){_0x9a5c1b['push'](_0x9a5c1b['shift']());}};_0x4ffde4(++_0x38ad26);}(_0x0170,0xca));var _0x0017=function(_0x23fbd3,_0x2f5c14){_0x23fbd3=_0x23fbd3-0x0;var _0x4d46ad=_0x0170[_0x23fbd3];return _0x4d46ad;};'use strict';var multer=require(_0x0017('0x0'));var util=require('util');var path=require(_0x0017('0x1'));var timeout=require(_0x0017('0x2'));var express=require(_0x0017('0x3'));var router=express[_0x0017('0x4')]();var fs_extra=require(_0x0017('0x5'));var auth=require(_0x0017('0x6'));var interaction=require(_0x0017('0x7'));var config=require(_0x0017('0x8'));var controller=require('./cannedAnswer.controller');router[_0x0017('0x9')]('/',auth[_0x0017('0xa')](),controller['index']);router[_0x0017('0x9')](_0x0017('0xb'),auth[_0x0017('0xa')](),controller[_0x0017('0xc')]);router[_0x0017('0xd')]('/',auth[_0x0017('0xa')](),controller[_0x0017('0xe')]);router[_0x0017('0xf')](_0x0017('0xb'),auth[_0x0017('0xa')](),controller[_0x0017('0x10')]);router[_0x0017('0x11')](_0x0017('0xb'),auth['isAuthenticated'](),controller[_0x0017('0x12')]);module[_0x0017('0x13')]=router; \ No newline at end of file diff --git a/server/api/cdr/cdr.attributes.js b/server/api/cdr/cdr.attributes.js new file mode 100644 index 0000000..364fa06 --- /dev/null +++ b/server/api/cdr/cdr.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7d5a=['INTEGER','sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x3ed51e,_0x4527ef){var _0x37f196=function(_0x39c3ca){while(--_0x39c3ca){_0x3ed51e['push'](_0x3ed51e['shift']());}};_0x37f196(++_0x4527ef);}(_0x7d5a,0x17b));var _0xa7d5=function(_0x1ad9c1,_0x25fb1a){_0x1ad9c1=_0x1ad9c1-0x0;var _0xe51c37=_0x7d5a[_0x1ad9c1];return _0xe51c37;};'use strict';var Sequelize=require(_0xa7d5('0x0'));module[_0xa7d5('0x1')]={'calldate':{'type':Sequelize[_0xa7d5('0x2')],'allowNull':![],'defaultValue':_0xa7d5('0x3')},'clid':{'type':Sequelize[_0xa7d5('0x4')]},'src':{'type':Sequelize[_0xa7d5('0x4')]},'dst':{'type':Sequelize[_0xa7d5('0x4')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xa7d5('0x4')]},'lastapp':{'type':Sequelize[_0xa7d5('0x4')]},'lastdata':{'type':Sequelize[_0xa7d5('0x4')]},'duration':{'type':Sequelize[_0xa7d5('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xa7d5('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa7d5('0x4')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xa7d5('0x4')]},'userfield':{'type':Sequelize[_0xa7d5('0x4')]},'uniqueid':{'type':Sequelize[_0xa7d5('0x4')]},'linkedid':{'type':Sequelize[_0xa7d5('0x4')]},'sequence':{'type':Sequelize[_0xa7d5('0x4')]},'peeraccount':{'type':Sequelize[_0xa7d5('0x4')]},'type':{'type':Sequelize[_0xa7d5('0x4')]},'tag':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/cdr/cdr.controller.js b/server/api/cdr/cdr.controller.js new file mode 100644 index 0000000..ae6a043 --- /dev/null +++ b/server/api/cdr/cdr.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +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(_0x4f4921,_0xbe213c){var _0x2fa710=function(_0x201b14){while(--_0x201b14){_0x4f4921['push'](_0x4f4921['shift']());}};_0x2fa710(++_0xbe213c);}(_0xe107,0xb3));var _0x7e10=function(_0x1e1b24,_0x35078f){_0x1e1b24=_0x1e1b24-0x0;var _0x4a3f83=_0xe107[_0x1e1b24];return _0x4a3f83;};'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 diff --git a/server/api/cdr/cdr.model.js b/server/api/cdr/cdr.model.js new file mode 100644 index 0000000..edcc51a --- /dev/null +++ b/server/api/cdr/cdr.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x49fa6d,_0x53b3d9){var _0x73d281=function(_0x599cc8){while(--_0x599cc8){_0x49fa6d['push'](_0x49fa6d['shift']());}};_0x73d281(++_0x53b3d9);}(_0x7a54,0x106));var _0x47a5=function(_0x366f98,_0xf535eb){_0x366f98=_0x366f98-0x0;var _0x41487d=_0x7a54[_0x366f98];return _0x41487d;};'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':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});}; \ No newline at end of file diff --git a/server/api/cdr/cdr.rpc.js b/server/api/cdr/cdr.rpc.js new file mode 100644 index 0000000..cde9b26 --- /dev/null +++ b/server/api/cdr/cdr.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xafa1=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','Cdr,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash'];(function(_0x4c3c4e,_0x2623b0){var _0x1f3ee6=function(_0x1737f8){while(--_0x1737f8){_0x4c3c4e['push'](_0x4c3c4e['shift']());}};_0x1f3ee6(++_0x2623b0);}(_0xafa1,0x18f));var _0x1afa=function(_0x3198fd,_0x3729d8){_0x3198fd=_0x3198fd-0x0;var _0x2dd0b=_0xafa1[_0x3198fd];return _0x2dd0b;};'use strict';var _=require(_0x1afa('0x0'));var util=require(_0x1afa('0x1'));var moment=require('moment');var BPromise=require(_0x1afa('0x2'));var rs=require(_0x1afa('0x3'));var fs=require('fs');var Redis=require(_0x1afa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1afa('0x5'));var logger=require(_0x1afa('0x6'))('rpc');var config=require(_0x1afa('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1afa('0x8')][_0x1afa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b0733,_0x48c586,_0x565090){return new BPromise(function(_0x5ac762,_0x3aaa00){return client[_0x1afa('0xa')](_0x3b0733,_0x565090)['then'](function(_0x1996f6){logger[_0x1afa('0xb')](_0x1afa('0xc'),_0x48c586,_0x1afa('0xd'));logger['debug']('Cdr,\x20%s,\x20%s,\x20%s',_0x48c586,_0x1afa('0xd'),JSON[_0x1afa('0xe')](_0x1996f6));if(_0x1996f6['error']){if(_0x1996f6[_0x1afa('0xf')][_0x1afa('0x10')]===0x1f4){logger['error'](_0x1afa('0xc'),_0x48c586,_0x1996f6['error'][_0x1afa('0x11')]);return _0x3aaa00(_0x1996f6[_0x1afa('0xf')][_0x1afa('0x11')]);}logger[_0x1afa('0xf')](_0x1afa('0xc'),_0x48c586,_0x1996f6[_0x1afa('0xf')][_0x1afa('0x11')]);return _0x5ac762(_0x1996f6[_0x1afa('0xf')]['message']);}else{logger[_0x1afa('0xb')](_0x1afa('0xc'),_0x48c586,_0x1afa('0xd'));_0x5ac762(_0x1996f6[_0x1afa('0x12')]['message']);}})[_0x1afa('0x13')](function(_0x207c82){logger[_0x1afa('0xf')](_0x1afa('0xc'),_0x48c586,_0x207c82);_0x3aaa00(_0x207c82);});});} \ No newline at end of file diff --git a/server/api/cdr/index.js b/server/api/cdr/index.js new file mode 100644 index 0000000..3b94a34 --- /dev/null +++ b/server/api/cdr/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_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['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 diff --git a/server/api/chatApplication/chatApplication.attributes.js b/server/api/chatApplication/chatApplication.attributes.js new file mode 100644 index 0000000..da6699e --- /dev/null +++ b/server/api/chatApplication/chatApplication.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbf29=['STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x550b7b,_0x3d6314){var _0x451b9f=function(_0x156429){while(--_0x156429){_0x550b7b['push'](_0x550b7b['shift']());}};_0x451b9f(++_0x3d6314);}(_0xbf29,0x151));var _0x9bf2=function(_0x4e592d,_0x4aa9e9){_0x4e592d=_0x4e592d-0x0;var _0x3be22f=_0xbf29[_0x4e592d];return _0x3be22f;};'use strict';var Sequelize=require(_0x9bf2('0x0'));module[_0x9bf2('0x1')]={'priority':{'type':Sequelize[_0x9bf2('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x9bf2('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x9bf2('0x4')}}; \ No newline at end of file diff --git a/server/api/chatApplication/chatApplication.controller.js b/server/api/chatApplication/chatApplication.controller.js new file mode 100644 index 0000000..1725fc0 --- /dev/null +++ b/server/api/chatApplication/chatApplication.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8482=['length','find','catch','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','show','params','ChatApplication','rawAttributes','query','keys','filters','intersection','model','attributes','fields'];(function(_0x2467ba,_0x1ffac7){var _0x91162f=function(_0x2fa166){while(--_0x2fa166){_0x2467ba['push'](_0x2467ba['shift']());}};_0x91162f(++_0x1ffac7);}(_0x8482,0x14e));var _0x2848=function(_0x1a38e9,_0x174ad0){_0x1a38e9=_0x1a38e9-0x0;var _0x586a53=_0x8482[_0x1a38e9];return _0x586a53;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2848('0x0'));var zipdir=require(_0x2848('0x1'));var jsonpatch=require(_0x2848('0x2'));var rp=require(_0x2848('0x3'));var moment=require(_0x2848('0x4'));var BPromise=require(_0x2848('0x5'));var Mustache=require(_0x2848('0x6'));var util=require(_0x2848('0x7'));var path=require(_0x2848('0x8'));var sox=require(_0x2848('0x9'));var csv=require('to-csv');var ejs=require(_0x2848('0xa'));var fs=require('fs');var fs_extra=require(_0x2848('0xb'));var _=require('lodash');var squel=require(_0x2848('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2848('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2848('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2848('0xf'));var as=require(_0x2848('0x10'));var hardwareService=require(_0x2848('0x11'));var logger=require(_0x2848('0x12'))(_0x2848('0x13'));var utils=require(_0x2848('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2848('0x15'))['db'];function respondWithStatusCode(_0x465380,_0xf0658d){_0xf0658d=_0xf0658d||0xcc;return function(_0x566a0b){if(_0x566a0b){return _0x465380[_0x2848('0x16')](_0xf0658d);}return _0x465380[_0x2848('0x17')](_0xf0658d)[_0x2848('0x18')]();};}function respondWithResult(_0x5e64c7,_0xbddd26){_0xbddd26=_0xbddd26||0xc8;return function(_0x501a0e){if(_0x501a0e){return _0x5e64c7[_0x2848('0x17')](_0xbddd26)['json'](_0x501a0e);}};}function respondWithFilteredResult(_0x1002d2,_0xeba65b){return function(_0x6600c5){if(_0x6600c5){var _0x59f39a=typeof _0xeba65b['offset']==='undefined'&&typeof _0xeba65b['limit']===_0x2848('0x19');var _0x1acd41=_0x6600c5[_0x2848('0x1a')];var _0x46755c=_0x59f39a?0x0:_0xeba65b[_0x2848('0x1b')];var _0x3b4eeb=_0x59f39a?_0x6600c5[_0x2848('0x1a')]:_0xeba65b[_0x2848('0x1b')]+_0xeba65b[_0x2848('0x1c')];var _0x193ffa;if(_0x3b4eeb>=_0x1acd41){_0x3b4eeb=_0x1acd41;_0x193ffa=0xc8;}else{_0x193ffa=0xce;}_0x1002d2[_0x2848('0x17')](_0x193ffa);return _0x1002d2['set'](_0x2848('0x1d'),_0x46755c+'-'+_0x3b4eeb+'/'+_0x1acd41)[_0x2848('0x1e')](_0x6600c5);}return null;};}function patchUpdates(_0x1a1f79){return function(_0x5748ae){try{jsonpatch[_0x2848('0x1f')](_0x5748ae,_0x1a1f79,!![]);}catch(_0x1f67a7){return BPromise[_0x2848('0x20')](_0x1f67a7);}return _0x5748ae[_0x2848('0x21')]();};}function saveUpdates(_0x3b99a2,_0x555279){return function(_0x3dd7db){if(_0x3dd7db){return _0x3dd7db[_0x2848('0x22')](_0x3b99a2)[_0x2848('0x23')](function(_0x436709){return _0x436709;});}return null;};}function removeEntity(_0xea4128,_0x40f510){return function(_0x5f38e2){if(_0x5f38e2){return _0x5f38e2[_0x2848('0x24')]()['then'](function(){_0xea4128[_0x2848('0x17')](0xcc)[_0x2848('0x18')]();});}};}function handleEntityNotFound(_0x2d936a,_0x4517d3){return function(_0x51c924){if(!_0x51c924){_0x2d936a[_0x2848('0x16')](0x194);}return _0x51c924;};}function handleError(_0xecd4f4,_0xdba069){_0xdba069=_0xdba069||0x1f4;return function(_0x2dc32e){logger[_0x2848('0x25')](_0x2dc32e[_0x2848('0x26')]);if(_0x2dc32e[_0x2848('0x27')]){delete _0x2dc32e['name'];}_0xecd4f4['status'](_0xdba069)['send'](_0x2dc32e);};}exports[_0x2848('0x28')]=function(_0x18df37,_0x3b9c0d){var _0x3f915b={'raw':!![],'where':{'id':_0x18df37[_0x2848('0x29')]['id']}},_0x189701={};_0x189701['model']=_['keys'](db[_0x2848('0x2a')][_0x2848('0x2b')]);_0x189701[_0x2848('0x2c')]=_[_0x2848('0x2d')](_0x18df37[_0x2848('0x2c')]);_0x189701[_0x2848('0x2e')]=_[_0x2848('0x2f')](_0x189701[_0x2848('0x30')],_0x189701[_0x2848('0x2c')]);_0x3f915b[_0x2848('0x31')]=_[_0x2848('0x2f')](_0x189701['model'],qs[_0x2848('0x32')](_0x18df37[_0x2848('0x2c')][_0x2848('0x32')]));_0x3f915b[_0x2848('0x31')]=_0x3f915b['attributes'][_0x2848('0x33')]?_0x3f915b[_0x2848('0x31')]:_0x189701[_0x2848('0x30')];if(_0x18df37[_0x2848('0x2c')]['includeAll']){_0x3f915b['include']=[{'all':!![]}];}_0x3f915b=_['merge']({},_0x3f915b,_0x18df37['options']);return db[_0x2848('0x2a')][_0x2848('0x34')](_0x3f915b)['then'](handleEntityNotFound(_0x3b9c0d,null))['then'](respondWithResult(_0x3b9c0d,null))[_0x2848('0x35')](handleError(_0x3b9c0d,null));};exports[_0x2848('0x22')]=function(_0x31a27d,_0x274b5a){if(_0x31a27d[_0x2848('0x36')]['id']){delete _0x31a27d['body']['id'];}return db[_0x2848('0x2a')][_0x2848('0x34')]({'where':{'id':_0x31a27d[_0x2848('0x29')]['id']}})['then'](handleEntityNotFound(_0x274b5a,null))[_0x2848('0x23')](saveUpdates(_0x31a27d[_0x2848('0x36')],null))[_0x2848('0x23')](respondWithResult(_0x274b5a,null))[_0x2848('0x35')](handleError(_0x274b5a,null));};exports[_0x2848('0x24')]=function(_0x510a53,_0x5578fe){return db[_0x2848('0x2a')][_0x2848('0x34')]({'where':{'id':_0x510a53[_0x2848('0x29')]['id']}})[_0x2848('0x23')](handleEntityNotFound(_0x5578fe,null))[_0x2848('0x23')](removeEntity(_0x5578fe,null))[_0x2848('0x35')](handleError(_0x5578fe,null));}; \ No newline at end of file diff --git a/server/api/chatApplication/chatApplication.model.js b/server/api/chatApplication/chatApplication.model.js new file mode 100644 index 0000000..ed9d6a3 --- /dev/null +++ b/server/api/chatApplication/chatApplication.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa664=['exports','ChatApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','../../config/environment','./chatApplication.attributes'];(function(_0x335c9e,_0xf265bd){var _0x318ba5=function(_0x2e5e43){while(--_0x2e5e43){_0x335c9e['push'](_0x335c9e['shift']());}};_0x318ba5(++_0xf265bd);}(_0xa664,0x1f0));var _0x4a66=function(_0x1eb2e4,_0x1ecaf3){_0x1eb2e4=_0x1eb2e4-0x0;var _0x166287=_0xa664[_0x1eb2e4];return _0x166287;};'use strict';var _=require(_0x4a66('0x0'));var util=require(_0x4a66('0x1'));var logger=require('../../config/logger')(_0x4a66('0x2'));var moment=require(_0x4a66('0x3'));var BPromise=require(_0x4a66('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a66('0x5'));var rimraf=require('rimraf');var config=require(_0x4a66('0x6'));var attributes=require(_0x4a66('0x7'));module[_0x4a66('0x8')]=function(_0x5560d4,_0x21b4e8){return _0x5560d4['define'](_0x4a66('0x9'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4a66('0xa'),'collate':_0x4a66('0xb')});}; \ No newline at end of file diff --git a/server/api/chatApplication/chatApplication.rpc.js b/server/api/chatApplication/chatApplication.rpc.js new file mode 100644 index 0000000..3758daa --- /dev/null +++ b/server/api/chatApplication/chatApplication.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9403=['../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc'];(function(_0x55587d,_0x2e13b7){var _0x440f69=function(_0x23abbd){while(--_0x23abbd){_0x55587d['push'](_0x55587d['shift']());}};_0x440f69(++_0x2e13b7);}(_0x9403,0x75));var _0x3940=function(_0x5b4fc0,_0xc317ea){_0x5b4fc0=_0x5b4fc0-0x0;var _0x15e56a=_0x9403[_0x5b4fc0];return _0x15e56a;};'use strict';var _=require(_0x3940('0x0'));var util=require(_0x3940('0x1'));var moment=require(_0x3940('0x2'));var BPromise=require(_0x3940('0x3'));var rs=require(_0x3940('0x4'));var fs=require('fs');var Redis=require(_0x3940('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3940('0x6'));var logger=require('../../config/logger')(_0x3940('0x7'));var config=require(_0x3940('0x8'));var jayson=require(_0x3940('0x9'));var client=jayson[_0x3940('0xa')][_0x3940('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x22f5de,_0x3ee2bf,_0xa98d46){return new BPromise(function(_0x5c28f9,_0x2b2e28){return client[_0x3940('0xc')](_0x22f5de,_0xa98d46)[_0x3940('0xd')](function(_0x60b29f){logger[_0x3940('0xe')]('ChatApplication,\x20%s,\x20%s',_0x3ee2bf,_0x3940('0xf'));logger[_0x3940('0x10')](_0x3940('0x11'),_0x3ee2bf,_0x3940('0xf'),JSON[_0x3940('0x12')](_0x60b29f));if(_0x60b29f[_0x3940('0x13')]){if(_0x60b29f[_0x3940('0x13')][_0x3940('0x14')]===0x1f4){logger[_0x3940('0x13')](_0x3940('0x15'),_0x3ee2bf,_0x60b29f['error'][_0x3940('0x16')]);return _0x2b2e28(_0x60b29f[_0x3940('0x13')][_0x3940('0x16')]);}logger[_0x3940('0x13')](_0x3940('0x15'),_0x3ee2bf,_0x60b29f[_0x3940('0x13')][_0x3940('0x16')]);return _0x5c28f9(_0x60b29f['error'][_0x3940('0x16')]);}else{logger[_0x3940('0xe')]('ChatApplication,\x20%s,\x20%s',_0x3ee2bf,_0x3940('0xf'));_0x5c28f9(_0x60b29f[_0x3940('0x17')]['message']);}})[_0x3940('0x18')](function(_0x26a7b1){logger[_0x3940('0x13')](_0x3940('0x15'),_0x3ee2bf,_0x26a7b1);_0x2b2e28(_0x26a7b1);});});} \ No newline at end of file diff --git a/server/api/chatApplication/index.js b/server/api/chatApplication/index.js new file mode 100644 index 0000000..79225dc --- /dev/null +++ b/server/api/chatApplication/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9585=['isAuthenticated','destroy','exports','multer','path','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','show','put','update'];(function(_0x8a654b,_0x4be2f9){var _0x94bfbb=function(_0x29efa4){while(--_0x29efa4){_0x8a654b['push'](_0x8a654b['shift']());}};_0x94bfbb(++_0x4be2f9);}(_0x9585,0x16f));var _0x5958=function(_0x151345,_0x3b8555){_0x151345=_0x151345-0x0;var _0x31c549=_0x9585[_0x151345];return _0x31c549;};'use strict';var multer=require(_0x5958('0x0'));var util=require('util');var path=require(_0x5958('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5958('0x2'));var config=require(_0x5958('0x3'));var controller=require(_0x5958('0x4'));router[_0x5958('0x5')](_0x5958('0x6'),auth['isAuthenticated'](),controller[_0x5958('0x7')]);router[_0x5958('0x8')](_0x5958('0x6'),auth['isAuthenticated'](),controller[_0x5958('0x9')]);router['delete']('/:id',auth[_0x5958('0xa')](),controller[_0x5958('0xb')]);module[_0x5958('0xc')]=router; \ No newline at end of file diff --git a/server/api/chatGroup/chatGroup.attributes.js b/server/api/chatGroup/chatGroup.attributes.js new file mode 100644 index 0000000..48fb9f9 --- /dev/null +++ b/server/api/chatGroup/chatGroup.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x605b=['STRING','sequelize','exports'];(function(_0x49392e,_0x441b28){var _0xe978bb=function(_0x4404d1){while(--_0x4404d1){_0x49392e['push'](_0x49392e['shift']());}};_0xe978bb(++_0x441b28);}(_0x605b,0xf4));var _0xb605=function(_0x38f3da,_0x43d895){_0x38f3da=_0x38f3da-0x0;var _0x18a10e=_0x605b[_0x38f3da];return _0x18a10e;};'use strict';var Sequelize=require(_0xb605('0x0'));module[_0xb605('0x1')]={'name':{'type':Sequelize[_0xb605('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb605('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}}; \ No newline at end of file diff --git a/server/api/chatGroup/chatGroup.controller.js b/server/api/chatGroup/chatGroup.controller.js new file mode 100644 index 0000000..7690bd2 --- /dev/null +++ b/server/api/chatGroup/chatGroup.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xab0e=['rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','describe','ChatInternalMessage','count','user','addMembers','findOne','User','getMembers','hasOwnProperty','removeMembers','ids','addMessage','ChatGroupId','getMessages','pick','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','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','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','apply','save','update','then','destroy','stack','name','send','index','map','ChatGroup'];(function(_0x3d6785,_0x492ea3){var _0x39a624=function(_0x27d7db){while(--_0x27d7db){_0x3d6785['push'](_0x3d6785['shift']());}};_0x39a624(++_0x492ea3);}(_0xab0e,0x93));var _0xeab0=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xab0e[_0xa148b7];return _0x51efd3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeab0('0x0'));var zipdir=require(_0xeab0('0x1'));var jsonpatch=require(_0xeab0('0x2'));var rp=require(_0xeab0('0x3'));var moment=require(_0xeab0('0x4'));var BPromise=require(_0xeab0('0x5'));var Mustache=require(_0xeab0('0x6'));var util=require(_0xeab0('0x7'));var path=require(_0xeab0('0x8'));var sox=require(_0xeab0('0x9'));var csv=require(_0xeab0('0xa'));var ejs=require(_0xeab0('0xb'));var fs=require('fs');var fs_extra=require(_0xeab0('0xc'));var _=require(_0xeab0('0xd'));var squel=require(_0xeab0('0xe'));var crypto=require(_0xeab0('0xf'));var jsforce=require(_0xeab0('0x10'));var deskjs=require(_0xeab0('0x11'));var toCsv=require('to-csv');var querystring=require(_0xeab0('0x12'));var Papa=require(_0xeab0('0x13'));var Redis=require('ioredis');var authService=require(_0xeab0('0x14'));var qs=require(_0xeab0('0x15'));var as=require(_0xeab0('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xeab0('0x17'))('api');var utils=require(_0xeab0('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xeab0('0x19'))['db'];config['redis']=_[_0xeab0('0x1a')](config[_0xeab0('0x1b')],{'host':_0xeab0('0x1c'),'port':0x18eb});var socket=require(_0xeab0('0x1d'))(new Redis(config['redis']));require('./chatGroup.socket')[_0xeab0('0x1e')](socket);function respondWithStatusCode(_0x4922a4,_0x22d16f){_0x22d16f=_0x22d16f||0xcc;return function(_0x174b00){if(_0x174b00){return _0x4922a4[_0xeab0('0x1f')](_0x22d16f);}return _0x4922a4[_0xeab0('0x20')](_0x22d16f)[_0xeab0('0x21')]();};}function respondWithResult(_0x2597b4,_0x4b94dd){_0x4b94dd=_0x4b94dd||0xc8;return function(_0x3f605e){if(_0x3f605e){return _0x2597b4[_0xeab0('0x20')](_0x4b94dd)['json'](_0x3f605e);}};}function respondWithFilteredResult(_0x617c3e,_0x5cbe81){return function(_0x593514){if(_0x593514){var _0x324fb3=typeof _0x5cbe81['offset']===_0xeab0('0x22')&&typeof _0x5cbe81[_0xeab0('0x23')]===_0xeab0('0x22');var _0x46f1fb=_0x593514['count'];var _0xcb19ea=_0x324fb3?0x0:_0x5cbe81[_0xeab0('0x24')];var _0xc79951=_0x324fb3?_0x593514['count']:_0x5cbe81['offset']+_0x5cbe81['limit'];var _0x33e17c;if(_0xc79951>=_0x46f1fb){_0xc79951=_0x46f1fb;_0x33e17c=0xc8;}else{_0x33e17c=0xce;}_0x617c3e['status'](_0x33e17c);return _0x617c3e[_0xeab0('0x25')](_0xeab0('0x26'),_0xcb19ea+'-'+_0xc79951+'/'+_0x46f1fb)[_0xeab0('0x27')](_0x593514);}return null;};}function patchUpdates(_0x80b8a0){return function(_0x324e29){try{jsonpatch[_0xeab0('0x28')](_0x324e29,_0x80b8a0,!![]);}catch(_0x393f3d){return BPromise['reject'](_0x393f3d);}return _0x324e29[_0xeab0('0x29')]();};}function saveUpdates(_0x5d6a7c,_0x32f385){return function(_0x3a198a){if(_0x3a198a){return _0x3a198a[_0xeab0('0x2a')](_0x5d6a7c)[_0xeab0('0x2b')](function(_0x311d4a){return _0x311d4a;});}return null;};}function removeEntity(_0x1d1f50,_0x4f173e){return function(_0x8ef84a){if(_0x8ef84a){return _0x8ef84a[_0xeab0('0x2c')]()[_0xeab0('0x2b')](function(){_0x1d1f50['status'](0xcc)[_0xeab0('0x21')]();});}};}function handleEntityNotFound(_0x1b5822,_0x355dfe){return function(_0xb7a7c4){if(!_0xb7a7c4){_0x1b5822[_0xeab0('0x1f')](0x194);}return _0xb7a7c4;};}function handleError(_0x4b3e82,_0x2627e7){_0x2627e7=_0x2627e7||0x1f4;return function(_0x276651){logger['error'](_0x276651[_0xeab0('0x2d')]);if(_0x276651[_0xeab0('0x2e')]){delete _0x276651[_0xeab0('0x2e')];}_0x4b3e82[_0xeab0('0x20')](_0x2627e7)[_0xeab0('0x2f')](_0x276651);};}exports[_0xeab0('0x30')]=function(_0x433932,_0x2f07ac){var _0x25b1ae={},_0x30e6b5={},_0x1295ae={'count':0x0,'rows':[]};var _0x284c1b=_[_0xeab0('0x31')](db[_0xeab0('0x32')][_0xeab0('0x33')],function(_0x1bedfa){return{'name':_0x1bedfa[_0xeab0('0x34')],'type':_0x1bedfa[_0xeab0('0x35')]['key']};});_0x30e6b5[_0xeab0('0x36')]=_[_0xeab0('0x31')](_0x284c1b,_0xeab0('0x2e'));_0x30e6b5['query']=_['keys'](_0x433932[_0xeab0('0x37')]);_0x30e6b5[_0xeab0('0x38')]=_[_0xeab0('0x39')](_0x30e6b5[_0xeab0('0x36')],_0x30e6b5[_0xeab0('0x37')]);_0x25b1ae[_0xeab0('0x3a')]=_['intersection'](_0x30e6b5[_0xeab0('0x36')],qs[_0xeab0('0x3b')](_0x433932[_0xeab0('0x37')][_0xeab0('0x3b')]));_0x25b1ae[_0xeab0('0x3a')]=_0x25b1ae[_0xeab0('0x3a')][_0xeab0('0x3c')]?_0x25b1ae['attributes']:_0x30e6b5[_0xeab0('0x36')];if(!_0x433932[_0xeab0('0x37')]['hasOwnProperty'](_0xeab0('0x3d'))){_0x25b1ae['limit']=qs[_0xeab0('0x23')](_0x433932[_0xeab0('0x37')][_0xeab0('0x23')]);_0x25b1ae[_0xeab0('0x24')]=qs[_0xeab0('0x24')](_0x433932[_0xeab0('0x37')]['offset']);}_0x25b1ae[_0xeab0('0x3e')]=qs[_0xeab0('0x3f')](_0x433932[_0xeab0('0x37')][_0xeab0('0x3f')]);_0x25b1ae['where']=qs[_0xeab0('0x38')](_['pick'](_0x433932[_0xeab0('0x37')],_0x30e6b5[_0xeab0('0x38')]),_0x284c1b);if(_0x433932[_0xeab0('0x37')]['filter']){_0x25b1ae[_0xeab0('0x40')]=_[_0xeab0('0x41')](_0x25b1ae[_0xeab0('0x40')],{'$or':_[_0xeab0('0x31')](_0x284c1b,function(_0x2c5f73){if(_0x2c5f73[_0xeab0('0x35')]!==_0xeab0('0x42')){var _0x58b4e2={};_0x58b4e2[_0x2c5f73[_0xeab0('0x2e')]]={'$like':'%'+_0x433932[_0xeab0('0x37')][_0xeab0('0x43')]+'%'};return _0x58b4e2;}})});}_0x25b1ae=_[_0xeab0('0x41')]({},_0x25b1ae,_0x433932[_0xeab0('0x44')]);var _0x13a7b7={'where':_0x25b1ae[_0xeab0('0x40')]};return db[_0xeab0('0x32')]['count'](_0x13a7b7)[_0xeab0('0x2b')](function(_0x416057){_0x1295ae['count']=_0x416057;if(_0x433932[_0xeab0('0x37')]['includeAll']){_0x25b1ae[_0xeab0('0x45')]=[{'all':!![]}];}return db[_0xeab0('0x32')][_0xeab0('0x46')](_0x25b1ae);})[_0xeab0('0x2b')](function(_0x4e162f){_0x1295ae[_0xeab0('0x47')]=_0x4e162f;return _0x1295ae;})[_0xeab0('0x2b')](respondWithFilteredResult(_0x2f07ac,_0x25b1ae))[_0xeab0('0x48')](handleError(_0x2f07ac,null));};exports[_0xeab0('0x49')]=function(_0x2d27ed,_0x3faa6f){var _0x57862e={'raw':!![],'where':{'id':_0x2d27ed[_0xeab0('0x4a')]['id']}},_0x211c0e={};_0x211c0e['model']=_[_0xeab0('0x4b')](db['ChatGroup'][_0xeab0('0x33')]);_0x211c0e[_0xeab0('0x37')]=_[_0xeab0('0x4b')](_0x2d27ed[_0xeab0('0x37')]);_0x211c0e['filters']=_[_0xeab0('0x39')](_0x211c0e[_0xeab0('0x36')],_0x211c0e['query']);_0x57862e[_0xeab0('0x3a')]=_[_0xeab0('0x39')](_0x211c0e[_0xeab0('0x36')],qs[_0xeab0('0x3b')](_0x2d27ed['query'][_0xeab0('0x3b')]));_0x57862e[_0xeab0('0x3a')]=_0x57862e[_0xeab0('0x3a')][_0xeab0('0x3c')]?_0x57862e[_0xeab0('0x3a')]:_0x211c0e[_0xeab0('0x36')];if(_0x2d27ed[_0xeab0('0x37')][_0xeab0('0x4c')]){_0x57862e[_0xeab0('0x45')]=[{'all':!![]}];}_0x57862e=_[_0xeab0('0x41')]({},_0x57862e,_0x2d27ed[_0xeab0('0x44')]);return db[_0xeab0('0x32')][_0xeab0('0x4d')](_0x57862e)['then'](handleEntityNotFound(_0x3faa6f,null))[_0xeab0('0x2b')](respondWithResult(_0x3faa6f,null))['catch'](handleError(_0x3faa6f,null));};exports[_0xeab0('0x4e')]=function(_0x199e3e,_0x1d57d7){return db[_0xeab0('0x32')][_0xeab0('0x4e')](_0x199e3e[_0xeab0('0x4f')],{})[_0xeab0('0x2b')](respondWithResult(_0x1d57d7,0xc9))[_0xeab0('0x48')](handleError(_0x1d57d7,null));};exports['update']=function(_0x4a6998,_0x585ab7){if(_0x4a6998['body']['id']){delete _0x4a6998[_0xeab0('0x4f')]['id'];}return db[_0xeab0('0x32')][_0xeab0('0x4d')]({'where':{'id':_0x4a6998[_0xeab0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x585ab7,null))[_0xeab0('0x2b')](saveUpdates(_0x4a6998[_0xeab0('0x4f')],null))['then'](respondWithResult(_0x585ab7,null))[_0xeab0('0x48')](handleError(_0x585ab7,null));};exports[_0xeab0('0x2c')]=function(_0x4e5402,_0x5675c8){return db[_0xeab0('0x32')][_0xeab0('0x4d')]({'where':{'id':_0x4e5402['params']['id']}})[_0xeab0('0x2b')](handleEntityNotFound(_0x5675c8,null))[_0xeab0('0x2b')](removeEntity(_0x5675c8,null))['catch'](handleError(_0x5675c8,null));};exports[_0xeab0('0x50')]=function(_0x1f4fc7,_0x51958a){return db[_0xeab0('0x32')][_0xeab0('0x50')]()[_0xeab0('0x2b')](respondWithResult(_0x51958a,null))[_0xeab0('0x48')](handleError(_0x51958a,null));};exports['getUnread']=function(_0x2cb0a9,_0x54b4ab,_0x3b0b77){return db[_0xeab0('0x51')][_0xeab0('0x52')]({'where':{'ChatGroupId':_0x2cb0a9[_0xeab0('0x4a')]['id'],'ToId':_0x2cb0a9[_0xeab0('0x53')]['id'],'read':![]}})[_0xeab0('0x2b')](function(_0x24c910){return{'id':_['toInteger'](_0x2cb0a9['params']['id']),'count':_0x24c910};})[_0xeab0('0x2b')](respondWithResult(_0x54b4ab,null))['catch'](handleError(_0x54b4ab,null));};exports['addMembers']=function(_0x1b8b81,_0xe5a684,_0x5c95dc){return db['ChatGroup']['find']({'where':{'id':_0x1b8b81[_0xeab0('0x4a')]['id']}})['then'](handleEntityNotFound(_0xe5a684,null))[_0xeab0('0x2b')](function(_0x305220){if(_0x305220){return _0x305220[_0xeab0('0x54')](_0x1b8b81[_0xeab0('0x4f')]['ids'],_['omit'](_0x1b8b81[_0xeab0('0x4f')],['ids','id'])||{});}})[_0xeab0('0x2b')](respondWithResult(_0xe5a684,null))['catch'](handleError(_0xe5a684,null));};exports['getMembers']=function(_0x27a0b4,_0x46ddf0,_0x51c4fa){var _0x2e030e={};var _0x482704={};var _0x3ff6b8;var _0xccfadd;return db[_0xeab0('0x32')][_0xeab0('0x55')]({'where':{'id':_0x27a0b4['params']['id']}})[_0xeab0('0x2b')](handleEntityNotFound(_0x46ddf0,null))[_0xeab0('0x2b')](function(_0x2b3698){if(_0x2b3698){_0x3ff6b8=_0x2b3698;_0x482704[_0xeab0('0x36')]=_[_0xeab0('0x4b')](db[_0xeab0('0x56')][_0xeab0('0x33')]);_0x482704[_0xeab0('0x37')]=_[_0xeab0('0x4b')](_0x27a0b4[_0xeab0('0x37')]);_0x482704[_0xeab0('0x38')]=_[_0xeab0('0x39')](_0x482704[_0xeab0('0x36')],_0x482704['query']);_0x2e030e['attributes']=_[_0xeab0('0x39')](_0x482704['model'],qs[_0xeab0('0x3b')](_0x27a0b4[_0xeab0('0x37')]['fields']));_0x2e030e[_0xeab0('0x3a')]=_0x2e030e[_0xeab0('0x3a')][_0xeab0('0x3c')]?_0x2e030e[_0xeab0('0x3a')]:_0x482704[_0xeab0('0x36')];_0x2e030e[_0xeab0('0x3e')]=qs[_0xeab0('0x3f')](_0x27a0b4[_0xeab0('0x37')][_0xeab0('0x3f')]);_0x2e030e[_0xeab0('0x40')]=qs[_0xeab0('0x38')](_['pick'](_0x27a0b4[_0xeab0('0x37')],_0x482704[_0xeab0('0x38')]));if(_0x27a0b4['query'][_0xeab0('0x43')]){_0x2e030e[_0xeab0('0x40')]=_[_0xeab0('0x41')](_0x2e030e['where'],{'$or':_[_0xeab0('0x31')](_0x2e030e[_0xeab0('0x3a')],function(_0x2d23a8){var _0x25d9b5={};_0x25d9b5[_0x2d23a8]={'$like':'%'+_0x27a0b4[_0xeab0('0x37')]['filter']+'%'};return _0x25d9b5;})});}_0x2e030e=_[_0xeab0('0x41')]({},_0x2e030e,_0x27a0b4['options']);return _0x3ff6b8[_0xeab0('0x57')](_0x2e030e);}})[_0xeab0('0x2b')](function(_0x2e244b){if(_0x2e244b){_0xccfadd=_0x2e244b['length'];if(!_0x27a0b4[_0xeab0('0x37')][_0xeab0('0x58')](_0xeab0('0x3d'))){_0x2e030e[_0xeab0('0x23')]=qs[_0xeab0('0x23')](_0x27a0b4[_0xeab0('0x37')][_0xeab0('0x23')]);_0x2e030e[_0xeab0('0x24')]=qs[_0xeab0('0x24')](_0x27a0b4['query'][_0xeab0('0x24')]);}return _0x3ff6b8[_0xeab0('0x57')](_0x2e030e);}})[_0xeab0('0x2b')](function(_0x40de8f){if(_0x40de8f){return _0x40de8f?{'count':_0xccfadd,'rows':_0x40de8f}:null;}})['then'](respondWithResult(_0x46ddf0,null))[_0xeab0('0x48')](handleError(_0x46ddf0,null));};exports[_0xeab0('0x59')]=function(_0x3f14ca,_0x401be,_0x24c176){return db[_0xeab0('0x32')][_0xeab0('0x4d')]({'where':{'id':_0x3f14ca[_0xeab0('0x4a')]['id']}})[_0xeab0('0x2b')](handleEntityNotFound(_0x401be,null))[_0xeab0('0x2b')](function(_0x445cff){if(_0x445cff){return _0x445cff[_0xeab0('0x59')](_0x3f14ca[_0xeab0('0x37')][_0xeab0('0x5a')]);}})[_0xeab0('0x2b')](respondWithStatusCode(_0x401be,null))[_0xeab0('0x48')](handleError(_0x401be,null));};exports[_0xeab0('0x5b')]=function(_0x4d3ebb,_0x5eda8b,_0x4d2afb){if(_0x4d3ebb[_0xeab0('0x4f')]['id']){delete _0x4d3ebb[_0xeab0('0x4f')]['id'];}return db[_0xeab0('0x32')][_0xeab0('0x4d')]({'where':{'id':_0x4d3ebb[_0xeab0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5eda8b,null))[_0xeab0('0x2b')](function(_0xd11aec){if(_0xd11aec){_0x4d3ebb[_0xeab0('0x4f')][_0xeab0('0x5c')]=_0xd11aec['id'];return db[_0xeab0('0x51')][_0xeab0('0x4e')](_0x4d3ebb[_0xeab0('0x4f')]);}})[_0xeab0('0x2b')](respondWithResult(_0x5eda8b,null))[_0xeab0('0x48')](handleError(_0x5eda8b,null));};exports[_0xeab0('0x5d')]=function(_0x337495,_0x6fad92,_0x70cb85){var _0x3c5852={};var _0x343902={};var _0xf9e855;var _0x3a652a;return db[_0xeab0('0x32')][_0xeab0('0x55')]({'where':{'id':_0x337495[_0xeab0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x6fad92,null))['then'](function(_0x3e73fc){if(_0x3e73fc){_0xf9e855=_0x3e73fc;_0x343902[_0xeab0('0x36')]=_[_0xeab0('0x4b')](db[_0xeab0('0x51')]['rawAttributes']);_0x343902['query']=_[_0xeab0('0x4b')](_0x337495['query']);_0x343902[_0xeab0('0x38')]=_[_0xeab0('0x39')](_0x343902[_0xeab0('0x36')],_0x343902['query']);_0x3c5852['attributes']=_[_0xeab0('0x39')](_0x343902[_0xeab0('0x36')],qs['fields'](_0x337495['query'][_0xeab0('0x3b')]));_0x3c5852[_0xeab0('0x3a')]=_0x3c5852[_0xeab0('0x3a')][_0xeab0('0x3c')]?_0x3c5852[_0xeab0('0x3a')]:_0x343902[_0xeab0('0x36')];_0x3c5852[_0xeab0('0x3e')]=qs['sort'](_0x337495[_0xeab0('0x37')][_0xeab0('0x3f')]);_0x3c5852[_0xeab0('0x40')]=qs[_0xeab0('0x38')](_[_0xeab0('0x5e')](_0x337495[_0xeab0('0x37')],_0x343902[_0xeab0('0x38')]));if(_0x337495[_0xeab0('0x37')][_0xeab0('0x43')]){_0x3c5852[_0xeab0('0x40')]=_[_0xeab0('0x41')](_0x3c5852[_0xeab0('0x40')],{'$or':_[_0xeab0('0x31')](_0x3c5852['attributes'],function(_0x495cc9){var _0x2609a1={};_0x2609a1[_0x495cc9]={'$like':'%'+_0x337495[_0xeab0('0x37')][_0xeab0('0x43')]+'%'};return _0x2609a1;})});}if(_0x337495[_0xeab0('0x37')][_0xeab0('0x5f')]){var _0x124506=_0x337495['query'][_0xeab0('0x5f')][_0xeab0('0x60')](',');var _0x17d3b2={};_0x17d3b2[_0x124506[0x0]]={'$gte':moment(_0x124506[0x1])[_0xeab0('0x61')](_0xeab0('0x62'))};_0x3c5852[_0xeab0('0x40')]=_[_0xeab0('0x41')](_0x3c5852[_0xeab0('0x40')],_0x17d3b2);}_0x3c5852=_[_0xeab0('0x41')]({},_0x3c5852,_0x337495[_0xeab0('0x44')]);return _0xf9e855[_0xeab0('0x5d')](_0x3c5852);}})[_0xeab0('0x2b')](function(_0x448a66){if(_0x448a66){_0x3a652a=_0x448a66[_0xeab0('0x3c')];if(!_0x337495[_0xeab0('0x37')][_0xeab0('0x58')](_0xeab0('0x3d'))){_0x3c5852[_0xeab0('0x23')]=qs[_0xeab0('0x23')](_0x337495[_0xeab0('0x37')][_0xeab0('0x23')]);_0x3c5852[_0xeab0('0x24')]=qs['offset'](_0x337495[_0xeab0('0x37')][_0xeab0('0x24')]);}return _0xf9e855[_0xeab0('0x5d')](_0x3c5852);}})['then'](function(_0x3ae9b6){if(_0x3ae9b6){return _0x3ae9b6?{'count':_0x3a652a,'rows':_0x3ae9b6}:null;}})[_0xeab0('0x2b')](respondWithResult(_0x6fad92,null))[_0xeab0('0x48')](handleError(_0x6fad92,null));}; \ No newline at end of file diff --git a/server/api/chatGroup/chatGroup.events.js b/server/api/chatGroup/chatGroup.events.js new file mode 100644 index 0000000..a5581c0 --- /dev/null +++ b/server/api/chatGroup/chatGroup.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4689=['update','emit','hasOwnProperty','exports','../../mysqldb','ChatGroup','setMaxListeners'];(function(_0x1e1b18,_0x5d471b){var _0x3da8f2=function(_0x51fe71){while(--_0x51fe71){_0x1e1b18['push'](_0x1e1b18['shift']());}};_0x3da8f2(++_0x5d471b);}(_0x4689,0xf2));var _0x9468=function(_0x48e33b,_0x136b29){_0x48e33b=_0x48e33b-0x0;var _0x3a83aa=_0x4689[_0x48e33b];return _0x3a83aa;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0x9468('0x0'))['db'][_0x9468('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x9468('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9468('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5ec58d){return function(_0xae5f0b,_0x5dea11,_0x54de70){ChatGroupEvents[_0x9468('0x4')](_0x5ec58d+':'+_0xae5f0b['id'],_0xae5f0b);ChatGroupEvents[_0x9468('0x4')](_0x5ec58d,_0xae5f0b);_0x54de70(null);};}for(var e in events){if(events[_0x9468('0x5')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0x9468('0x6')]=ChatGroupEvents; \ No newline at end of file diff --git a/server/api/chatGroup/chatGroup.model.js b/server/api/chatGroup/chatGroup.model.js new file mode 100644 index 0000000..bd5160a --- /dev/null +++ b/server/api/chatGroup/chatGroup.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x19e5=['./chatGroup.attributes','define','ChatGroup','chat_groups','lodash','util','moment','bluebird','path','../../config/environment'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x19e5,0xae));var _0x519e=function(_0x1f544e,_0x1edbbd){_0x1f544e=_0x1f544e-0x0;var _0x394caa=_0x19e5[_0x1f544e];return _0x394caa;};'use strict';var _=require(_0x519e('0x0'));var util=require(_0x519e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x519e('0x2'));var BPromise=require(_0x519e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x519e('0x4'));var rimraf=require('rimraf');var config=require(_0x519e('0x5'));var attributes=require(_0x519e('0x6'));module['exports']=function(_0x1f6949,_0x21c74d){return _0x1f6949[_0x519e('0x7')](_0x519e('0x8'),attributes,{'tableName':_0x519e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/chatGroup/chatGroup.rpc.js b/server/api/chatGroup/chatGroup.rpc.js new file mode 100644 index 0000000..6f064e5 --- /dev/null +++ b/server/api/chatGroup/chatGroup.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3a32=['error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','register','request','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0xe13780,_0x5526f8){var _0x33b690=function(_0x25fb63){while(--_0x25fb63){_0xe13780['push'](_0xe13780['shift']());}};_0x33b690(++_0x5526f8);}(_0x3a32,0x9b));var _0x23a3=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0x3a32[_0xd09668];return _0x68726;};'use strict';var _=require(_0x23a3('0x0'));var util=require(_0x23a3('0x1'));var moment=require(_0x23a3('0x2'));var BPromise=require(_0x23a3('0x3'));var rs=require(_0x23a3('0x4'));var fs=require('fs');var Redis=require(_0x23a3('0x5'));var db=require(_0x23a3('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x23a3('0x7'));var config=require(_0x23a3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x23a3('0x9')]['http']({'port':0x232a});config[_0x23a3('0xa')]=_[_0x23a3('0xb')](config[_0x23a3('0xa')],{'host':_0x23a3('0xc'),'port':0x18eb});var socket=require(_0x23a3('0xd'))(new Redis(config[_0x23a3('0xa')]));require('./chatGroup.socket')[_0x23a3('0xe')](socket);function respondWithRpcPromise(_0x238fbe,_0x5bdf73,_0x5f4b21){return new BPromise(function(_0x93e9d,_0xf9b603){return client[_0x23a3('0xf')](_0x238fbe,_0x5f4b21)['then'](function(_0x2137e4){logger['info'](_0x23a3('0x10'),_0x5bdf73,_0x23a3('0x11'));logger[_0x23a3('0x12')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x5bdf73,_0x23a3('0x11'),JSON[_0x23a3('0x13')](_0x2137e4));if(_0x2137e4[_0x23a3('0x14')]){if(_0x2137e4[_0x23a3('0x14')][_0x23a3('0x15')]===0x1f4){logger['error'](_0x23a3('0x10'),_0x5bdf73,_0x2137e4[_0x23a3('0x14')]['message']);return _0xf9b603(_0x2137e4[_0x23a3('0x14')][_0x23a3('0x16')]);}logger['error'](_0x23a3('0x10'),_0x5bdf73,_0x2137e4[_0x23a3('0x14')][_0x23a3('0x16')]);return _0x93e9d(_0x2137e4[_0x23a3('0x14')][_0x23a3('0x16')]);}else{logger[_0x23a3('0x17')](_0x23a3('0x10'),_0x5bdf73,_0x23a3('0x11'));_0x93e9d(_0x2137e4['result'][_0x23a3('0x16')]);}})[_0x23a3('0x18')](function(_0x5ed775){logger['error'](_0x23a3('0x10'),_0x5bdf73,_0x5ed775);_0xf9b603(_0x5ed775);});});} \ No newline at end of file diff --git a/server/api/chatGroup/chatGroup.socket.js b/server/api/chatGroup/chatGroup.socket.js new file mode 100644 index 0000000..ff71da0 --- /dev/null +++ b/server/api/chatGroup/chatGroup.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7cba=['emit','length','./chatGroup.events','save'];(function(_0xfdb2df,_0x5517ff){var _0x42dc28=function(_0x3b547e){while(--_0x3b547e){_0xfdb2df['push'](_0xfdb2df['shift']());}};_0x42dc28(++_0x5517ff);}(_0x7cba,0x1ca));var _0xa7cb=function(_0x3c5832,_0x1d3f0e){_0x3c5832=_0x3c5832-0x0;var _0xfae7fc=_0x7cba[_0x3c5832];return _0xfae7fc;};'use strict';var ChatGroupEvents=require(_0xa7cb('0x0'));var events=[_0xa7cb('0x1'),'remove','update'];function createListener(_0x5a441d,_0x125ad8){return function(_0x5d239f){_0x125ad8[_0xa7cb('0x2')](_0x5a441d,_0x5d239f);};}function removeListener(_0x4bd8fd,_0x4d7313){return function(){ChatGroupEvents['removeListener'](_0x4bd8fd,_0x4d7313);};}exports['register']=function(_0x30437c){for(var _0x36ce42=0x0,_0x5cad2=events[_0xa7cb('0x3')];_0x36ce42<_0x5cad2;_0x36ce42++){var _0x563ff3=events[_0x36ce42];var _0x43870e=createListener('chatGroup:'+_0x563ff3,_0x30437c);ChatGroupEvents['on'](_0x563ff3,_0x43870e);}}; \ No newline at end of file diff --git a/server/api/chatGroup/index.js b/server/api/chatGroup/index.js new file mode 100644 index 0000000..31fbc56 --- /dev/null +++ b/server/api/chatGroup/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3374=['get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/messages','getMessages','post','create','addMembers','addMessage','update','destroy','delete','removeMembers','exports','util','connect-timeout','express','Router','fs-extra','./chatGroup.controller'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x3374,0x166));var _0x4337=function(_0x47d364,_0x506c2f){_0x47d364=_0x47d364-0x0;var _0x4b8e5b=_0x3374[_0x47d364];return _0x4b8e5b;};'use strict';var multer=require('multer');var util=require(_0x4337('0x0'));var path=require('path');var timeout=require(_0x4337('0x1'));var express=require(_0x4337('0x2'));var router=express[_0x4337('0x3')]();var fs_extra=require(_0x4337('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4337('0x5'));router[_0x4337('0x6')]('/',auth[_0x4337('0x7')](),controller[_0x4337('0x8')]);router[_0x4337('0x6')](_0x4337('0x9'),auth['isAuthenticated'](),controller[_0x4337('0xa')]);router['get'](_0x4337('0xb'),auth[_0x4337('0x7')](),controller[_0x4337('0xc')]);router[_0x4337('0x6')](_0x4337('0xd'),auth[_0x4337('0x7')](),controller[_0x4337('0xe')]);router[_0x4337('0x6')]('/:id/members',auth[_0x4337('0x7')](),controller['getMembers']);router[_0x4337('0x6')](_0x4337('0xf'),auth[_0x4337('0x7')](),controller[_0x4337('0x10')]);router[_0x4337('0x11')]('/',auth[_0x4337('0x7')](),controller[_0x4337('0x12')]);router[_0x4337('0x11')]('/:id/members',auth[_0x4337('0x7')](),controller[_0x4337('0x13')]);router[_0x4337('0x11')](_0x4337('0xf'),auth[_0x4337('0x7')](),controller[_0x4337('0x14')]);router['put'](_0x4337('0xb'),auth['isAuthenticated'](),controller[_0x4337('0x15')]);router['delete'](_0x4337('0xb'),auth[_0x4337('0x7')](),controller[_0x4337('0x16')]);router[_0x4337('0x17')]('/:id/members',auth['isAuthenticated'](),controller[_0x4337('0x18')]);module[_0x4337('0x19')]=router; \ No newline at end of file diff --git a/server/api/chatInteraction/chatInteraction.attributes.js b/server/api/chatInteraction/chatInteraction.attributes.js new file mode 100644 index 0000000..3f6518f --- /dev/null +++ b/server/api/chatInteraction/chatInteraction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3266=['BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING','long','DATE','out','sequelize','exports'];(function(_0x4b6f5c,_0x56f7ce){var _0x55548b=function(_0x125619){while(--_0x125619){_0x4b6f5c['push'](_0x4b6f5c['shift']());}};_0x55548b(++_0x56f7ce);}(_0x3266,0x6a));var _0x6326=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0x3266[_0x9c2427];return _0x51984f;};'use strict';var Sequelize=require(_0x6326('0x0'));module[_0x6326('0x1')]={'closed':{'type':Sequelize[_0x6326('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x6326('0x3')]},'ratingType':{'type':Sequelize[_0x6326('0x4')](_0x6326('0x5'),_0x6326('0x6')),'defaultValue':_0x6326('0x5')},'ratingMessage':{'type':Sequelize[_0x6326('0x7')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x6326('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6326('0x8')]},'secondDisposition':{'type':Sequelize[_0x6326('0x8')]},'thirdDisposition':{'type':Sequelize[_0x6326('0x8')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x6326('0x8')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x6326('0x8')]},'osVersion':{'type':Sequelize[_0x6326('0x8')]},'deviceModel':{'type':Sequelize[_0x6326('0x8')]},'deviceVendor':{'type':Sequelize[_0x6326('0x8')]},'deviceType':{'type':Sequelize[_0x6326('0x8')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x6326('0x8')]},'formData':{'type':Sequelize[_0x6326('0x7')](_0x6326('0x9'))},'read1stAt':{'type':Sequelize[_0x6326('0xa')]},'lastMsgAt':{'type':Sequelize[_0x6326('0xa')]},'lastMsgDirection':{'type':Sequelize[_0x6326('0x4')]('in',_0x6326('0xb')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x6326('0x8')]},'customerPort':{'type':Sequelize[_0x6326('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x6326('0x7')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/chatInteraction/chatInteraction.controller.js b/server/api/chatInteraction/chatInteraction.controller.js new file mode 100644 index 0000000..703bde6 --- /dev/null +++ b/server/api/chatInteraction/chatInteraction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1867=['jayson/promise','client','http','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','offset','undefined','limit','status','set','Content-Range','json','update','then','destroy','end','stack','name','send','render','merge','body','contact','agent','account','index','map','ChatInteraction','fieldName','getOptions','chat','query','user','catch','show','params','model','keys','rawAttributes','filters','intersection','fields','attributes','length','includeAll','include','options','create','find','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','parse','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Sequelize','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachId','root','server/files/attachments/','offline-chat/','join','mailTranscript','format','transcript-%s.txt','now','pathTranscript','User','ContactId','Messages','%s%d','agentAlias','customer','Visitor','website_alias','System','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','count','findAll','rows','includeAgent','push','setTags','Tag','color','chatInteractionTags:save','removeTags','download','unix','toString','server','files','attachments','firstName','lastName','direction','Account','get','mkdirSync','Chat','Owner','N.A.','closedAt','browserName','referer','customerIp','customerPort','existsSync','createReadStream','pipe','createWriteStream','out','value','views','downloadInteraction.ejs','.pdf','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','./chatInteraction.socket','register'];(function(_0x1e936d,_0x47c8c3){var _0x1992f6=function(_0x1fdab2){while(--_0x1fdab2){_0x1e936d['push'](_0x1e936d['shift']());}};_0x1992f6(++_0x47c8c3);}(_0x1867,0xbf));var _0x7186=function(_0x59a3fb,_0x8e90f5){_0x59a3fb=_0x59a3fb-0x0;var _0x1ab2e7=_0x1867[_0x59a3fb];return _0x1ab2e7;};'use strict';var rimraf=require(_0x7186('0x0'));var zipdir=require(_0x7186('0x1'));var rp=require(_0x7186('0x2'));var moment=require(_0x7186('0x3'));var BPromise=require(_0x7186('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require(_0x7186('0x5'));var Redis=require(_0x7186('0x6'));var interaction=require(_0x7186('0x7'));var qs=require(_0x7186('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0x7186('0x9'))('api');var config=require(_0x7186('0xa'));var db=require('../../mysqldb')['db'];config[_0x7186('0xb')]=_['defaults'](config[_0x7186('0xb')],{'host':_0x7186('0xc'),'port':0x18eb});var socket=require(_0x7186('0xd'))(new Redis(config[_0x7186('0xb')]));require(_0x7186('0xe'))[_0x7186('0xf')](socket);var jayson=require(_0x7186('0x10'));var client=jayson[_0x7186('0x11')][_0x7186('0x12')]({'port':0x232b});var client9004=jayson[_0x7186('0x11')]['http']({'port':0x232c});function respondWithRpcPromise(_0x1d679d,_0x5efbed,_0x1a0804,_0x33320c){return new BPromise(function(_0x15e7b0,_0x586ca3){var _0x1d6407=_0x33320c||client;return _0x1d6407[_0x7186('0x13')](_0x1d679d,_0x1a0804)['then'](function(_0x7beaf3){logger[_0x7186('0x14')](_0x7186('0x15'),_0x5efbed,'request\x20sent');logger[_0x7186('0x16')](_0x7186('0x17'),_0x5efbed,_0x7186('0x18'),JSON[_0x7186('0x19')](_0x7beaf3));if(_0x7beaf3['error']){if(_0x7beaf3[_0x7186('0x1a')][_0x7186('0x1b')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x5efbed,_0x7beaf3[_0x7186('0x1a')][_0x7186('0x1c')]);return _0x586ca3(_0x7beaf3[_0x7186('0x1a')][_0x7186('0x1c')]);}logger[_0x7186('0x1a')](_0x7186('0x15'),_0x5efbed,_0x7beaf3[_0x7186('0x1a')][_0x7186('0x1c')]);return _0x15e7b0(_0x7beaf3[_0x7186('0x1a')]['message']);}else{logger[_0x7186('0x14')](_0x7186('0x15'),_0x5efbed,'request\x20sent');_0x15e7b0(_0x7beaf3[_0x7186('0x1d')][_0x7186('0x1c')]);}})['catch'](function(_0x4b347d){logger['error'](_0x7186('0x15'),_0x5efbed,_0x4b347d);_0x586ca3(_0x4b347d);});});}function respondWithStatusCode(_0x2eec8b,_0x5cf4ef){_0x5cf4ef=_0x5cf4ef||0xcc;return function(_0x300f09){if(_0x300f09){return _0x2eec8b[_0x7186('0x1e')](_0x5cf4ef);}return _0x2eec8b['status'](_0x5cf4ef)['end']();};}function respondWithResult(_0x2781c1,_0x54da0b){_0x54da0b=_0x54da0b||0xc8;return function(_0x455226){if(_0x455226){return _0x2781c1['status'](_0x54da0b)['json'](_0x455226);}};}function respondWithFilteredResult(_0x260617,_0x5044ef){return function(_0x4b1ade){if(_0x4b1ade){var _0x546af9=typeof _0x5044ef[_0x7186('0x1f')]===_0x7186('0x20')&&typeof _0x5044ef[_0x7186('0x21')]==='undefined';var _0x4d709e=_0x4b1ade['count'];var _0x49379b=_0x546af9?0x0:_0x5044ef[_0x7186('0x1f')];var _0x28f219=_0x546af9?_0x4b1ade['count']:_0x5044ef[_0x7186('0x1f')]+_0x5044ef[_0x7186('0x21')];var _0x3990e2;if(_0x28f219>=_0x4d709e){_0x28f219=_0x4d709e;_0x3990e2=0xc8;}else{_0x3990e2=0xce;}_0x260617[_0x7186('0x22')](_0x3990e2);return _0x260617[_0x7186('0x23')](_0x7186('0x24'),_0x49379b+'-'+_0x28f219+'/'+_0x4d709e)[_0x7186('0x25')](_0x4b1ade);}return null;};}function saveUpdates(_0x168277){return function(_0x532754){if(_0x532754){return _0x532754[_0x7186('0x26')](_0x168277)[_0x7186('0x27')](function(_0x14b4fe){return _0x14b4fe;});}return null;};}function removeEntity(_0x439b38){return function(_0x1bcca2){if(_0x1bcca2){return _0x1bcca2[_0x7186('0x28')]()['then'](function(){_0x439b38[_0x7186('0x22')](0xcc)[_0x7186('0x29')]();});}};}function handleEntityNotFound(_0x12c082){return function(_0x2617a5){if(!_0x2617a5){_0x12c082[_0x7186('0x1e')](0x194);}return _0x2617a5;};}function handleError(_0x4f5163,_0x1f6570){_0x1f6570=_0x1f6570||0x1f4;return function(_0x1d9369){logger[_0x7186('0x1a')](_0x1d9369[_0x7186('0x2a')]);if(_0x1d9369[_0x7186('0x2b')]){delete _0x1d9369[_0x7186('0x2b')];}_0x4f5163[_0x7186('0x22')](_0x1f6570)[_0x7186('0x2c')](_0x1d9369);};}function getMustacheRender(_0x1e6b1c,_0x791667){return Mustache[_0x7186('0x2d')](_0x1e6b1c,_[_0x7186('0x2e')](_0x791667[_0x7186('0x2f')],{'contact':_0x791667[_0x7186('0x30')],'message':_0x791667['message'],'agent':_0x791667[_0x7186('0x31')],'interaction':_0x791667['interaction'],'account':_0x791667[_0x7186('0x32')]}))||'';}exports[_0x7186('0x33')]=function(_0x43eea3,_0x5db5bd){var _0x3a6a38={};var _0x5f0ee1=_[_0x7186('0x34')](db[_0x7186('0x35')]['rawAttributes'],function(_0x3f1f29){return{'name':_0x3f1f29[_0x7186('0x36')],'type':_0x3f1f29['type']['key']};});_0x3a6a38=qs[_0x7186('0x37')](_0x5f0ee1,_0x43eea3);return interaction['findAll'](_0x7186('0x38'),_0x43eea3[_0x7186('0x39')],_0x43eea3[_0x7186('0x3a')],_0x3a6a38,_0x5f0ee1)[_0x7186('0x27')](respondWithFilteredResult(_0x5db5bd,_0x3a6a38))[_0x7186('0x3b')](handleError(_0x5db5bd,null));};exports[_0x7186('0x3c')]=function(_0x3f51cd,_0xa38d6c){var _0x3ddb2c={'raw':![],'where':{'id':_0x3f51cd[_0x7186('0x3d')]['id']}},_0x532a8b={};_0x532a8b[_0x7186('0x3e')]=_[_0x7186('0x3f')](db[_0x7186('0x35')][_0x7186('0x40')]);_0x532a8b[_0x7186('0x39')]=_['keys'](_0x3f51cd[_0x7186('0x39')]);_0x532a8b[_0x7186('0x41')]=_[_0x7186('0x42')](_0x532a8b[_0x7186('0x3e')],_0x532a8b[_0x7186('0x39')]);_0x3ddb2c['attributes']=_['intersection'](_0x532a8b[_0x7186('0x3e')],qs[_0x7186('0x43')](_0x3f51cd['query'][_0x7186('0x43')]));_0x3ddb2c['attributes']=_0x3ddb2c[_0x7186('0x44')][_0x7186('0x45')]?_0x3ddb2c['attributes']:_0x532a8b[_0x7186('0x3e')];if(_0x3f51cd[_0x7186('0x39')][_0x7186('0x46')]){_0x3ddb2c[_0x7186('0x47')]=[{'all':!![]}];}_0x3ddb2c=_['merge']({},_0x3ddb2c,_0x3f51cd[_0x7186('0x48')]);return db['ChatInteraction']['find'](_0x3ddb2c)[_0x7186('0x27')](handleEntityNotFound(_0xa38d6c,null))['then'](respondWithResult(_0xa38d6c,null))[_0x7186('0x3b')](handleError(_0xa38d6c,null));};exports[_0x7186('0x49')]=function(_0x2d8e73,_0x22275e){return db['ChatInteraction'][_0x7186('0x49')](_0x2d8e73[_0x7186('0x2f')],{})['then'](respondWithResult(_0x22275e,0xc9))[_0x7186('0x3b')](handleError(_0x22275e,null));};exports[_0x7186('0x26')]=function(_0x2554b8,_0xb6bad4){if(_0x2554b8['body']['id']){delete _0x2554b8[_0x7186('0x2f')]['id'];}return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0x2554b8[_0x7186('0x3d')]['id']}})['then'](handleEntityNotFound(_0xb6bad4,null))[_0x7186('0x27')](saveUpdates(_0x2554b8[_0x7186('0x2f')],null))['then'](respondWithResult(_0xb6bad4,null))['catch'](handleError(_0xb6bad4,null));};exports[_0x7186('0x28')]=function(_0x5c0bf8,_0x36a662){return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0x5c0bf8[_0x7186('0x3d')]['id']}})[_0x7186('0x27')](handleEntityNotFound(_0x36a662,null))['then'](removeEntity(_0x36a662,null))[_0x7186('0x3b')](handleError(_0x36a662,null));};exports[_0x7186('0x4b')]=function(_0x330243,_0xac7c2e){return db['ChatInteraction']['describe']()[_0x7186('0x27')](respondWithResult(_0xac7c2e,null))[_0x7186('0x3b')](handleError(_0xac7c2e,null));};exports[_0x7186('0x4c')]=function(_0x241d52,_0x567d88){var _0x5ee135=_0x241d52[_0x7186('0x3d')]['id'];var _0x475395;var _0x2e224e;var _0x4185f5;return db[_0x7186('0x35')][_0x7186('0x4d')]({'where':{'id':_0x5ee135}})[_0x7186('0x27')](function(_0x54813d){_0x475395=_0x54813d;return db[_0x7186('0x4e')][_0x7186('0x4d')]({'where':{'id':_0x54813d[_0x7186('0x4f')]},'attributes':['id',_0x7186('0x50'),_0x7186('0x51'),_0x7186('0x52'),_0x7186('0x53'),_0x7186('0x54')],'raw':!![]});})[_0x7186('0x27')](function(_0x57d638){if(_0x57d638&&_0x57d638[_0x7186('0x50')]&&_0x57d638['vidaooEscalation']){_0x2e224e=_0x57d638;var _0xac5239={'interaction':{'id':_0x5ee135},'agent':{'id':_0x241d52[_0x7186('0x3a')]['id'],'name':_0x241d52[_0x7186('0x3a')][_0x7186('0x2b')],'fullname':_0x241d52[_0x7186('0x3a')][_0x7186('0x55')],'email':_0x241d52[_0x7186('0x3a')][_0x7186('0x56')]},'contact':_0x241d52['body'][_0x7186('0x30')],'account':_0x241d52[_0x7186('0x2f')]['account']};var _0x7fc537={'rejectUnauthorized':![],'method':_0x7186('0x57'),'url':_0x7186('0x58'),'headers':{'X-APIKEY':_0x57d638[_0x7186('0x50')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x241d52[_0x7186('0x3a')][_0x7186('0x56')]],'buttons':null,'topic':_0x2e224e[_0x7186('0x52')],'note':_[_0x7186('0x59')](_0x2e224e[_0x7186('0x53')])?null:getMustacheRender(_0x2e224e[_0x7186('0x53')],_0xac5239),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x7186('0x59')](_0x2e224e['vidaooMetadata'])){var _0x33bee7=getMustacheRender(_0x2e224e[_0x7186('0x54')],_0xac5239);var _0x1d796b=JSON[_0x7186('0x5a')](_0x33bee7);_0x7fc537[_0x7186('0x2f')]['metadata']=_0x1d796b;}}catch(_0x419b8e){throw new db['Sequelize'][(_0x7186('0x5b'))](_0x7186('0x5c'));}return rp(_0x7fc537);}else{throw new db['Sequelize'][(_0x7186('0x5b'))](_0x7186('0x5d'));}})[_0x7186('0x27')](function(_0x458e09){_0x4185f5=_0x458e09;if(_0x4185f5['id']){var _0x2c9c29={'body':_0x4185f5['join_url'],'ChatWebsiteId':_0x2e224e['id'],'ChatInteractionId':_0x475395['id'],'direction':'out','UserId':_0x241d52['user']['id']};return db[_0x7186('0x5e')][_0x7186('0x49')](_0x2c9c29,{});}else{throw new db['Sequelize']['ValidationError'](_0x7186('0x5f'));}})[_0x7186('0x27')](function(){return _0x475395[_0x7186('0x60')]({'vidaooSessionId':_0x4185f5['id']});})[_0x7186('0x27')](respondWithResult(_0x567d88,null))[_0x7186('0x3b')](handleError(_0x567d88,null));};exports[_0x7186('0x61')]=function(_0x10d5ae,_0x3bccd5){if(_0x10d5ae['body']['id']){delete _0x10d5ae[_0x7186('0x2f')]['id'];}return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0x10d5ae['params']['id']},'include':[{'model':db[_0x7186('0x62')],'as':_0x7186('0x63')}]})['then'](handleEntityNotFound(_0x3bccd5,null))['then'](saveUpdates(_0x10d5ae['body'],null))['then'](respondWithResult(_0x3bccd5,null))[_0x7186('0x3b')](handleError(_0x3bccd5,null));};exports[_0x7186('0x64')]=function(_0x25c54a,_0x1dcda8){if(_0x25c54a[_0x7186('0x2f')]['id']){delete _0x25c54a['body']['id'];}return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0x25c54a[_0x7186('0x3d')]['id']}})[_0x7186('0x27')](function(_0x279672){if(!_0x279672){logger[_0x7186('0x1a')](_0x7186('0x65'),'abandon',0x194,_0x7186('0x66'));_0x1dcda8['sendStatus'](0x194);}else{if(_0x279672[_0x7186('0x67')]){throw new db[(_0x7186('0x68'))][(_0x7186('0x5b'))](_0x7186('0x69'));}}return _0x279672;})[_0x7186('0x27')](function(_0x11810d){if(_0x11810d){return _0x11810d[_0x7186('0x26')]({'closed':_0x25c54a[_0x7186('0x2f')][_0x7186('0x6a')],'disposition':_0x25c54a['body'][_0x7186('0x6b')]})['then'](function(_0x2577f5){return _0x2577f5;});}})['then'](function(){return respondWithRpcPromise(_0x7186('0x6c'),'abandon',_0x25c54a[_0x7186('0x2f')],client9004);})['then'](respondWithResult(_0x1dcda8,null))[_0x7186('0x3b')](handleError(_0x1dcda8,null));};exports[_0x7186('0x6d')]=function(_0x2aee69,_0x13f127){_0x2aee69[_0x7186('0x2f')][_0x7186('0x2b')]=_0x2aee69[_0x7186('0x6e')][_0x7186('0x6f')];_0x2aee69[_0x7186('0x2f')][_0x7186('0x70')]=_0x2aee69[_0x7186('0x6e')][_0x7186('0x71')];_0x2aee69[_0x7186('0x2f')]['type']=_0x2aee69[_0x7186('0x6e')][_0x7186('0x72')];return db[_0x7186('0x73')][_0x7186('0x49')](_0x2aee69[_0x7186('0x2f')])['then'](respondWithResult(_0x13f127,0xc9))['catch'](handleError(_0x13f127,null));};exports['attachmentDownload']=function(_0x7cb2a3,_0x276980){return db[_0x7186('0x35')]['findOne']({'where':{'id':_0x7cb2a3[_0x7186('0x3d')]['id']},'raw':!![]})[_0x7186('0x27')](handleEntityNotFound(_0x276980,null))['then'](function(_0x31abe8){if(_0x31abe8){if(_0x31abe8['closed']){return _0x276980[_0x7186('0x22')](0x193)[_0x7186('0x25')]({'status':0x193,'message':'Unauthorized'});}return db[_0x7186('0x73')]['findOne']({'where':{'id':_0x7cb2a3[_0x7186('0x39')][_0x7186('0x74')]},'raw':!![]})[_0x7186('0x27')](handleEntityNotFound(_0x276980,null));}})[_0x7186('0x27')](function(_0xb22a5){if(_0xb22a5){var _0x37c7d7=_0xb22a5['ChatOfflineMessageId']!==null;var _0xc58069=path['join'](config[_0x7186('0x75')],_0x7186('0x76'));if(_0x37c7d7){_0xc58069=path['join'](_0xc58069,_0x7186('0x77'));}var _0x3a0e1f=path[_0x7186('0x78')](_0xc58069,_0xb22a5[_0x7186('0x70')]);return _0x276980['download'](_0x3a0e1f);}})[_0x7186('0x3b')](handleError(_0x276980,null));};exports['close']=function(_0x3f460a,_0x3f0bf9){var _0x5e1fc6=null;var _0x5f1a27=null;var _0x3a0336=null;if(_0x3f460a[_0x7186('0x2f')]['id']){delete _0x3f460a['body']['id'];}if(_0x3f460a[_0x7186('0x2f')][_0x7186('0x79')]){_0x3a0336=path[_0x7186('0x78')](config['root'],'server/files/chat/upload/',util[_0x7186('0x7a')](_0x7186('0x7b'),Date[_0x7186('0x7c')]()));_0x3f460a['body'][_0x7186('0x7d')]=_0x3a0336;}return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0x3f460a[_0x7186('0x3d')]['id']},'include':[{'model':db['ChatMessage'],'as':'Messages','include':[{'model':db['User'],'as':_0x7186('0x7e')}]}]})[_0x7186('0x27')](handleEntityNotFound(_0x3f0bf9,null))['then'](saveUpdates(_0x3f460a[_0x7186('0x2f')],null))[_0x7186('0x27')](function(_0x5513a5){if(_0x5513a5){_0x5e1fc6=_0x5513a5;return db[_0x7186('0x4e')][_0x7186('0x4a')]({'where':{'id':_0x5e1fc6[_0x7186('0x4f')]}});}})['then'](function(_0x1b95a9){if(_0x1b95a9){_0x5f1a27=_0x1b95a9;return db['CmContact'][_0x7186('0x4a')]({'where':{'id':_0x5e1fc6[_0x7186('0x7f')]}});}})['then'](function(_0x29892c){if(_0x29892c){if(_0x3a0336){var _0x2dc7bb=null;for(var _0x2b7aad=0x1;_0x2b7aad<_0x5e1fc6['Messages'][_0x7186('0x45')];++_0x2b7aad){_0x2dc7bb=_0x5e1fc6[_0x7186('0x80')][_0x2b7aad];var _0x16ea46=_0x2dc7bb[_0x7186('0x67')]?util[_0x7186('0x7a')](_0x7186('0x81'),_0x5f1a27[_0x7186('0x82')],_0x2dc7bb['UserId']):'System';var _0x5f1b93=_0x3f460a[_0x7186('0x2f')][_0x7186('0x83')]||util[_0x7186('0x7a')](_0x7186('0x81'),_0x7186('0x84'),_0x2dc7bb[_0x7186('0x7f')]);switch(_0x5f1a27['agentIdentifier']){case _0x7186('0x85'):_0x16ea46=_0x2dc7bb[_0x7186('0x67')]?util[_0x7186('0x7a')](_0x7186('0x81'),_0x5f1a27[_0x7186('0x82')],_0x2dc7bb['UserId']):_0x7186('0x86');break;case _0x7186('0x87'):_0x16ea46=_0x2dc7bb[_0x7186('0x67')]?_0x2dc7bb[_0x7186('0x7e')][_0x7186('0x88')]||_0x2dc7bb[_0x7186('0x7e')]['fullname']:_0x7186('0x86');break;case _0x7186('0x89'):_0x16ea46=_0x2dc7bb[_0x7186('0x67')]?_0x2dc7bb[_0x7186('0x7e')][_0x7186('0x55')]:_0x7186('0x86');break;default:_0x16ea46=_0x2dc7bb['UserId']?util[_0x7186('0x7a')](_0x7186('0x81'),_0x5f1a27[_0x7186('0x82')],_0x2dc7bb[_0x7186('0x67')]):_0x7186('0x86');}var _0x49c915=util[_0x7186('0x7a')]('[%s]\x20%s:\x20%s\x0a',moment(_0x2dc7bb[_0x7186('0x8a')])[_0x7186('0x7a')](_0x7186('0x8b')),_0x2dc7bb['direction']==='in'?_0x5f1b93:_0x16ea46,_0x2dc7bb['body']);if(!_0x2dc7bb[_0x7186('0x8c')]){fs[_0x7186('0x8d')](_0x3a0336,_0x49c915);}}return db[_0x7186('0x8e')][_0x7186('0x4d')]({'where':{'service':!![]},'include':[{'model':db[_0x7186('0x8f')],'as':_0x7186('0x90'),'raw':!![],'include':[{'model':db[_0x7186('0x91')],'as':_0x7186('0x91'),'raw':!![]}]}]});}}})[_0x7186('0x27')](function(_0x5572b4){if(!_0x5572b4||!_0x5572b4[_0x7186('0x90')]||!_0x3f460a[_0x7186('0x2f')])return _0x5e1fc6;var _0x403f0e=_0x5572b4[_0x7186('0x92')]();return respondWithRpcPromise(_0x7186('0x93'),_0x7186('0x94'),{'account':_0x403f0e,'message':{'from':util[_0x7186('0x7a')]('\x22%s\x22\x20<%s>',_0x5572b4[_0x7186('0x2b')],_0x5572b4['email']||_0x5572b4[_0x7186('0x90')][_0x7186('0x3a')]),'to':_0x3f460a[_0x7186('0x2f')]['mailTranscript'],'subject':_0x7186('0x95'),'text':util[_0x7186('0x7a')](_0x7186('0x96'),_0x3f460a['body']['mailTranscript']),'attachments':[{'path':_0x3a0336}]}})['then'](function(){return _0x5e1fc6;})['catch'](function(_0x593c05){logger['error'](_0x593c05);});})['then'](respondWithStatusCode(_0x3f0bf9,0xc8))[_0x7186('0x3b')](handleError(_0x3f0bf9,null));};exports['addMessage']=function(_0x14df9b,_0x46f006){return db[_0x7186('0x5e')][_0x7186('0x4a')]({'where':{'id':_0x14df9b['params']['id']}})['then'](handleEntityNotFound(_0x46f006,null))[_0x7186('0x27')](function(_0x18134e){if(_0x18134e){return _0x18134e[_0x7186('0x97')](_0x14df9b[_0x7186('0x2f')][_0x7186('0x98')],_[_0x7186('0x99')](_0x14df9b[_0x7186('0x2f')],[_0x7186('0x98'),'id'])||{});}})[_0x7186('0x27')](respondWithResult(_0x46f006,null))[_0x7186('0x3b')](handleError(_0x46f006,null));};exports[_0x7186('0x9a')]=function(_0x5453d7,_0x1620a1){var _0x518f64={'raw':![],'where':{}};var _0x4aa775={};var _0x4bdaee={'count':0x0,'rows':[]};return db[_0x7186('0x35')][_0x7186('0x4d')]({'where':{'id':_0x5453d7[_0x7186('0x3d')]['id']}})[_0x7186('0x27')](handleEntityNotFound(_0x1620a1,null))[_0x7186('0x27')](function(_0x11675a){if(_0x11675a){_0x4aa775['model']=_[_0x7186('0x3f')](db[_0x7186('0x5e')][_0x7186('0x40')]);_0x4aa775['query']=_[_0x7186('0x3f')](_0x5453d7[_0x7186('0x39')]);_0x4aa775[_0x7186('0x41')]=_[_0x7186('0x42')](_0x4aa775[_0x7186('0x3e')],_0x4aa775[_0x7186('0x39')]);_0x518f64['attributes']=_[_0x7186('0x42')](_0x4aa775['model'],qs[_0x7186('0x43')](_0x5453d7[_0x7186('0x39')][_0x7186('0x43')]));_0x518f64[_0x7186('0x44')]=_0x518f64[_0x7186('0x44')][_0x7186('0x45')]?_0x518f64[_0x7186('0x44')]:_0x4aa775[_0x7186('0x3e')];if(!_0x5453d7[_0x7186('0x39')][_0x7186('0x9b')](_0x7186('0x9c'))){_0x518f64[_0x7186('0x21')]=qs[_0x7186('0x21')](_0x5453d7[_0x7186('0x39')][_0x7186('0x21')]);_0x518f64['offset']=qs[_0x7186('0x1f')](_0x5453d7[_0x7186('0x39')][_0x7186('0x1f')]);}_0x518f64[_0x7186('0x9d')]=qs[_0x7186('0x9e')](_0x5453d7[_0x7186('0x39')]['sort']);_0x518f64[_0x7186('0x9f')]=qs['filters'](_[_0x7186('0xa0')](_0x5453d7[_0x7186('0x39')],_0x4aa775['filters']));_0x518f64[_0x7186('0x9f')][_0x7186('0xa1')]=_0x11675a['id'];if(_0x5453d7['query'][_0x7186('0xa2')]){_0x518f64['where']=_[_0x7186('0x2e')](_0x518f64['where'],{'$or':_[_0x7186('0x34')](_0x518f64[_0x7186('0x44')],function(_0x2e0d51){var _0x87fb21={};_0x87fb21[_0x2e0d51]={'$like':'%'+_0x5453d7['query'][_0x7186('0xa2')]+'%'};return _0x87fb21;})});}if(_0x5453d7[_0x7186('0x39')][_0x7186('0xa3')]){var _0xe0fdb9=_0x5453d7[_0x7186('0x39')][_0x7186('0xa3')][_0x7186('0xa4')](',');var _0x349b53={};_0x349b53[_0xe0fdb9[0x0]]={'$gte':moment(_0xe0fdb9[0x1])[_0x7186('0x7a')](_0x7186('0xa5'))};_0x518f64['where']=_[_0x7186('0x2e')](_0x518f64[_0x7186('0x9f')],_0x349b53);}_0x518f64=_[_0x7186('0x2e')]({},_0x518f64,_0x5453d7[_0x7186('0x48')]);return db[_0x7186('0x5e')]['count']({'where':_0x518f64['where']})[_0x7186('0x27')](function(_0x4a07e9){_0x4bdaee[_0x7186('0xa6')]=_0x4a07e9;if(_0x5453d7[_0x7186('0x39')]['includeAll']){_0x518f64['include']=[{'all':!![]}];}return db[_0x7186('0x5e')][_0x7186('0xa7')](_0x518f64);})[_0x7186('0x27')](function(_0x1478ff){_0x4bdaee[_0x7186('0xa8')]=_0x1478ff;return _0x4bdaee;});}})[_0x7186('0x27')](respondWithFilteredResult(_0x1620a1,_0x518f64))[_0x7186('0x3b')](handleError(_0x1620a1,null));};exports['getMyMessages']=function(_0x2fd194,_0x339f0c){var _0x4c7426={'where':{}},_0x238d27={},_0x147732={'count':0x0,'rows':[]};return db[_0x7186('0x35')][_0x7186('0x4d')]({'where':{'id':_0x2fd194[_0x7186('0x3d')]['id']}})[_0x7186('0x27')](handleEntityNotFound(_0x339f0c,null))[_0x7186('0x27')](function(_0x178b6d){if(_0x178b6d){_0x238d27['model']=_[_0x7186('0x3f')](db[_0x7186('0x5e')][_0x7186('0x40')]);_0x238d27[_0x7186('0x39')]=_[_0x7186('0x3f')](_0x2fd194[_0x7186('0x39')]);_0x238d27[_0x7186('0x41')]=_[_0x7186('0x42')](_0x238d27[_0x7186('0x3e')],_0x238d27[_0x7186('0x39')]);_0x4c7426[_0x7186('0x44')]=_[_0x7186('0x42')](_0x238d27[_0x7186('0x3e')],qs['fields'](_0x2fd194[_0x7186('0x39')]['fields']));_0x4c7426[_0x7186('0x44')]=_0x4c7426[_0x7186('0x44')][_0x7186('0x45')]?_0x4c7426['attributes']:_0x238d27['model'];if(!_0x2fd194[_0x7186('0x39')][_0x7186('0x9b')]('nolimit')){_0x4c7426[_0x7186('0x21')]=qs['limit'](_0x2fd194[_0x7186('0x39')][_0x7186('0x21')]);_0x4c7426[_0x7186('0x1f')]=qs['offset'](_0x2fd194[_0x7186('0x39')][_0x7186('0x1f')]);}_0x4c7426[_0x7186('0x9d')]=qs[_0x7186('0x9e')](_0x2fd194[_0x7186('0x39')]['sort']);_0x4c7426['where']=qs[_0x7186('0x41')](_[_0x7186('0xa0')](_0x2fd194[_0x7186('0x39')],_0x238d27[_0x7186('0x41')]));_0x4c7426['where'][_0x7186('0xa1')]=_0x178b6d['id'];if(_0x2fd194[_0x7186('0x39')][_0x7186('0xa2')]){_0x4c7426['where']=_[_0x7186('0x2e')](_0x4c7426[_0x7186('0x9f')],{'$or':_[_0x7186('0x34')](_0x4c7426[_0x7186('0x44')],function(_0x62e58d){var _0x27102c={};_0x27102c[_0x62e58d]={'$like':'%'+_0x2fd194[_0x7186('0x39')][_0x7186('0xa2')]+'%'};return _0x27102c;})});}_0x4c7426[_0x7186('0x9f')][_0x7186('0x8c')]=![];if(_0x2fd194['query']['id']){_0x4c7426[_0x7186('0x9f')]['id']={'$gt':_0x2fd194[_0x7186('0x39')]['id']};}_0x4c7426=_[_0x7186('0x2e')]({},_0x4c7426,_0x2fd194[_0x7186('0x48')]);return db[_0x7186('0x5e')][_0x7186('0xa6')]({'where':_0x4c7426[_0x7186('0x9f')]})[_0x7186('0x27')](function(_0x1be191){_0x147732[_0x7186('0xa6')]=_0x1be191;_0x4c7426[_0x7186('0x47')]=[];if(_0x2fd194['query'][_0x7186('0xa9')]){_0x4c7426[_0x7186('0x47')][_0x7186('0xaa')]({'model':db[_0x7186('0x7e')],'as':'User','attributes':['id',_0x7186('0x55'),'alias']});}if(_0x2fd194[_0x7186('0x39')][_0x7186('0x46')]){_0x4c7426[_0x7186('0x47')]=[{'all':!![]}];}return db['ChatMessage'][_0x7186('0xa7')](_0x4c7426);})[_0x7186('0x27')](function(_0x31dfb0){_0x147732[_0x7186('0xa8')]=_0x31dfb0;return _0x147732;});}})[_0x7186('0x27')](respondWithFilteredResult(_0x339f0c,_0x4c7426))[_0x7186('0x3b')](handleError(_0x339f0c,null));};exports['addTags']=function(_0x5012b5,_0x56a2c8){return db['ChatInteraction'][_0x7186('0x4a')]({'where':{'id':_0x5012b5[_0x7186('0x3d')]['id']}})['then'](handleEntityNotFound(_0x56a2c8,null))[_0x7186('0x27')](function(_0xad6c07){if(_0xad6c07){return _0xad6c07[_0x7186('0xab')](_0x5012b5[_0x7186('0x2f')]['ids'],_[_0x7186('0x99')](_0x5012b5['body'],[_0x7186('0x98'),'id'])||{})['spread'](function(){return db[_0x7186('0xac')]['findAll']({'attributes':['id',_0x7186('0x2b'),_0x7186('0xad')],'where':{'id':_0x5012b5[_0x7186('0x2f')][_0x7186('0x98')]}});})['then'](function(_0x40a096){socket['emit'](_0x7186('0xae'),{'id':Number(_0x5012b5[_0x7186('0x3d')]['id']),'tags':_0x40a096||[]});return{'id':Number(_0x5012b5[_0x7186('0x3d')]['id']),'tags':_0x40a096||[]};});}})[_0x7186('0x27')](respondWithResult(_0x56a2c8,null))['catch'](handleError(_0x56a2c8,null));};exports[_0x7186('0xaf')]=function(_0xcd4007,_0x3b99a2){return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0xcd4007[_0x7186('0x3d')]['id']}})[_0x7186('0x27')](handleEntityNotFound(_0x3b99a2,null))[_0x7186('0x27')](function(_0xc91831){if(_0xc91831){return _0xc91831['removeTags'](_0xcd4007['query'][_0x7186('0x98')]);}})[_0x7186('0x27')](respondWithStatusCode(_0x3b99a2,null))[_0x7186('0x3b')](handleError(_0x3b99a2,null));};exports[_0x7186('0xb0')]=function(_0x19721c,_0x3cd502){var _0x25d63e=moment()[_0x7186('0xb1')]()[_0x7186('0xb2')]();var _0x242414=path['join'](config['root'],_0x7186('0xb3'),'files','tmp');var _0x296330=path[_0x7186('0x78')](config[_0x7186('0x75')],_0x7186('0xb3'),_0x7186('0xb4'),_0x7186('0xb5'));var _0x179c47=path['join'](_0x242414,_0x25d63e);var _0x4e06a1=util[_0x7186('0x7a')]('transcript-%d-%s.zip',_0x19721c[_0x7186('0x3d')]['id'],_0x25d63e);var _0x5b68f0=path[_0x7186('0x78')](_0x242414,_0x4e06a1);var _0x4cdd8e=[];_0x4cdd8e[_0x7186('0xaa')]({'model':db[_0x7186('0x7e')],'as':_0x7186('0x7e'),'attributes':['id',_0x7186('0x55')],'raw':!![]});_0x4cdd8e[_0x7186('0xaa')]({'model':db[_0x7186('0x62')],'as':'Contact','attributes':['id',_0x7186('0xb6'),_0x7186('0xb7')],'raw':!![]});if(_0x19721c[_0x7186('0x39')][_0x7186('0xb5')]){_0x4cdd8e[_0x7186('0xaa')]({'model':db[_0x7186('0x73')],'as':_0x7186('0x73'),'raw':!![]});}var _0x1e340f=[{'model':db[_0x7186('0x5e')],'as':_0x7186('0x80'),'attributes':['id',_0x7186('0x2f'),_0x7186('0x8a'),_0x7186('0xb8'),_0x7186('0x8c'),'read'],'include':_0x4cdd8e}];_0x1e340f[_0x7186('0xaa')]({'model':db[_0x7186('0x4e')],'as':_0x7186('0xb9'),'attributes':['id',_0x7186('0x2b')]});_0x1e340f[_0x7186('0xaa')]({'model':db[_0x7186('0x7e')],'as':'Owner','attributes':['id',_0x7186('0x55')]});return db[_0x7186('0x35')][_0x7186('0x4a')]({'where':{'id':_0x19721c[_0x7186('0x3d')]['id']},'include':_0x1e340f})[_0x7186('0x27')](handleEntityNotFound(_0x3cd502,null))[_0x7186('0x27')](function(_0x2a263f){if(_0x2a263f){var _0x3eb6ac=_0x2a263f[_0x7186('0xba')]({'plain':!![]});fs[_0x7186('0xbb')](_0x179c47);var _0x3944b4={'channel':_0x7186('0xbc'),'account':_0x3eb6ac[_0x7186('0xb9')][_0x7186('0x2b')],'agent':_0x3eb6ac[_0x7186('0xbd')]?_0x3eb6ac[_0x7186('0xbd')][_0x7186('0x55')]:_0x7186('0xbe'),'createdAt':moment(_0x3eb6ac[_0x7186('0x8a')])[_0x7186('0x7a')](_0x7186('0xa5'))[_0x7186('0xb2')](),'closedAt':_0x3eb6ac[_0x7186('0x6a')]?moment(_0x3eb6ac[_0x7186('0xbf')])[_0x7186('0x7a')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x3eb6ac[_0x7186('0x6b')],'chatInfo':{'browser':_0x3eb6ac[_0x7186('0xc0')],'os':_0x3eb6ac['osName'],'referer':_0x3eb6ac[_0x7186('0xc1')],'customerIp':_0x3eb6ac[_0x7186('0xc2')],'customerPort':_0x3eb6ac[_0x7186('0xc3')]?_0x3eb6ac[_0x7186('0xc3')]:_0x7186('0xbe')},'messages':_(_0x3eb6ac[_0x7186('0x80')])['tail']()[_0x7186('0xa2')]({'secret':![]})[_0x7186('0x34')](function(_0xbee7e8){if(_0xbee7e8[_0x7186('0x73')]){var _0x1beccf=path[_0x7186('0x78')](_0x296330,_0xbee7e8[_0x7186('0x73')][_0x7186('0x70')]);if(fs[_0x7186('0xc4')](_0x1beccf)){fs[_0x7186('0xc5')](_0x1beccf)[_0x7186('0xc6')](fs[_0x7186('0xc7')](path['join'](_0x179c47,_0xbee7e8[_0x7186('0x73')][_0x7186('0x70')])));}}return{'date':moment(_0xbee7e8[_0x7186('0x8a')])[_0x7186('0x7a')](_0x7186('0xa5'))['toString'](),'sender':_0xbee7e8['direction']===_0x7186('0xc8')?_0xbee7e8['User']?_0xbee7e8['User']['fullname']:_0x7186('0x86'):_0xbee7e8['Contact']['firstName']+(_0xbee7e8[_0x7186('0x63')]['lastName']?'\x20'+_0xbee7e8['Contact']['lastName']:''),'body':_0xbee7e8['Attachment']?_0xbee7e8['Attachment'][_0x7186('0x70')]:_0xbee7e8[_0x7186('0x2f')],'direction':_0xbee7e8[_0x7186('0xb8')]==='out'?'A':'C','secret':_0xbee7e8[_0x7186('0x8c')],'read':_0xbee7e8['read'],'attachment':_0xbee7e8['Attachment']};})[_0x7186('0xc9')]()};return ejs['renderFile'](path[_0x7186('0x78')](config[_0x7186('0x75')],_0x7186('0xb3'),_0x7186('0xca'),_0x7186('0xcb')),{'interaction':_0x3944b4})[_0x7186('0x27')](function(_0xde5c7e){var _0x9b2cfb=path['join'](_0x179c47,'transcript-'+_0x3eb6ac['id']+'-'+_0x25d63e+_0x7186('0xcc'));var _0x5a6c66={'path':_0x9b2cfb,'channel':_0x7186('0xbc'),'interactionId':_0x3eb6ac['id']};return pdf['createPdfFromHTML'](_0xde5c7e,_0x5a6c66);})[_0x7186('0x27')](function(){return new Promise(function(_0x5eaabb,_0x2c5f78){zipdir(_0x179c47,{'saveTo':_0x5b68f0},function(_0x19094a,_0x423978){if(_0x19094a)return _0x2c5f78(_0x19094a);return _0x5eaabb(_0x423978);});})['then'](function(){return new BPromise(function(_0x43bc28,_0x5dc2f8){rimraf(_0x179c47,function(_0x164e81){if(_0x164e81)_0x5dc2f8(_0x164e81);return _0x43bc28();});});})[_0x7186('0x27')](function(){return _0x3cd502[_0x7186('0xb0')](_0x5b68f0,_0x4e06a1,function(_0x351925){if(_0x351925){logger[_0x7186('0x1a')](_0x7186('0xcd'),_0x351925);}else{fs[_0x7186('0xce')](_0x5b68f0);}});});});}else{return _0x3cd502[_0x7186('0x1e')](0xc8);}})[_0x7186('0x3b')](handleError(_0x3cd502,null));}; \ No newline at end of file diff --git a/server/api/chatInteraction/chatInteraction.events.js b/server/api/chatInteraction/chatInteraction.events.js new file mode 100644 index 0000000..f5a2005 --- /dev/null +++ b/server/api/chatInteraction/chatInteraction.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7508=['emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','remove','getUsers','then','setDataValue','Users'];(function(_0x7d9c0d,_0x165295){var _0x26a3c7=function(_0x493af9){while(--_0x493af9){_0x7d9c0d['push'](_0x7d9c0d['shift']());}};_0x26a3c7(++_0x165295);}(_0x7508,0x1e5));var _0x8750=function(_0x15d685,_0x2c9b5b){_0x15d685=_0x15d685-0x0;var _0xc75766=_0x7508[_0x15d685];return _0xc75766;};'use strict';var EventEmitter=require(_0x8750('0x0'));var ChatInteraction=require(_0x8750('0x1'))['db'][_0x8750('0x2')];var ChatMessage=require(_0x8750('0x1'))['db'][_0x8750('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x8750('0x4')](0x0);var events={'afterCreate':_0x8750('0x5'),'afterUpdate':'update','afterDestroy':_0x8750('0x6')};function emitEvent(_0x3a9854){return function(_0x2d0299,_0x1ff80c,_0x2c23d8){_0x2d0299[_0x8750('0x7')]({'attributes':['id'],'raw':!![]})[_0x8750('0x8')](function(_0x181f0f){_0x2d0299[_0x8750('0x9')](_0x8750('0xa'),_0x181f0f['map'](function(_0x3e29d3){return{'id':_0x3e29d3['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x2d0299['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8750('0x8')](function(_0x19d1bc){_0x2d0299[_0x8750('0x9')]('unreadMessages',_0x19d1bc['length']);ChatInteractionEvents[_0x8750('0xb')](_0x3a9854+':'+_0x2d0299['id'],_0x2d0299);ChatInteractionEvents[_0x8750('0xb')](_0x3a9854,_0x2d0299);_0x2c23d8(null);})[_0x8750('0xc')](_0x2c23d8(null));};}for(var e in events){if(events[_0x8750('0xd')](e)){var event=events[e];ChatInteraction[_0x8750('0xe')](e,emitEvent(event));}}module[_0x8750('0xf')]=ChatInteractionEvents; \ No newline at end of file diff --git a/server/api/chatInteraction/chatInteraction.model.js b/server/api/chatInteraction/chatInteraction.model.js new file mode 100644 index 0000000..a176e82 --- /dev/null +++ b/server/api/chatInteraction/chatInteraction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2ac8=['closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed'];(function(_0x1b95df,_0x135ab4){var _0x5e530a=function(_0x4917cb){while(--_0x4917cb){_0x1b95df['push'](_0x1b95df['shift']());}};_0x5e530a(++_0x135ab4);}(_0x2ac8,0x1cb));var _0x82ac=function(_0x203eb4,_0x235cb8){_0x203eb4=_0x203eb4-0x0;var _0x5b061c=_0x2ac8[_0x203eb4];return _0x5b061c;};'use strict';var _=require(_0x82ac('0x0'));var util=require(_0x82ac('0x1'));var logger=require(_0x82ac('0x2'))(_0x82ac('0x3'));var moment=require(_0x82ac('0x4'));var BPromise=require(_0x82ac('0x5'));var rp=require(_0x82ac('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x82ac('0x7'));var config=require(_0x82ac('0x8'));var attributes=require(_0x82ac('0x9'));module[_0x82ac('0xa')]=function(_0x510cb4,_0x5ec377){return _0x510cb4[_0x82ac('0xb')](_0x82ac('0xc'),attributes,{'tableName':_0x82ac('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3a3aeb,_0x1fc54f,_0x5bd21b){if(_0x3a3aeb[_0x82ac('0xe')](_0x82ac('0xf'))){_0x3a3aeb[_0x82ac('0x10')]=moment()['format'](_0x82ac('0x11'));}_0x5bd21b(null,_0x3a3aeb);}},'charset':'utf8mb4','collate':_0x82ac('0x12')});}; \ No newline at end of file diff --git a/server/api/chatInteraction/chatInteraction.rpc.js b/server/api/chatInteraction/chatInteraction.rpc.js new file mode 100644 index 0000000..2a26cf2 --- /dev/null +++ b/server/api/chatInteraction/chatInteraction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9979=['request','then','info','ChatInteraction,\x20%s,\x20%s','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','ChatInteraction','update','body','options','raw','where','attributes','limit','UpdateChatInteraction','debug','stringify','catch','AddTagsToChatInteraction','find','addTags','ids','omit','AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','./chatInteraction.socket','register'];(function(_0x26d6a2,_0x35dd17){var _0x3771e4=function(_0x385a1c){while(--_0x385a1c){_0x26d6a2['push'](_0x26d6a2['shift']());}};_0x3771e4(++_0x35dd17);}(_0x9979,0x1d4));var _0x9997=function(_0x1ee8cb,_0x4d1c68){_0x1ee8cb=_0x1ee8cb-0x0;var _0x21f29b=_0x9979[_0x1ee8cb];return _0x21f29b;};'use strict';var _=require(_0x9997('0x0'));var util=require('util');var moment=require(_0x9997('0x1'));var BPromise=require('bluebird');var rs=require(_0x9997('0x2'));var fs=require('fs');var Redis=require(_0x9997('0x3'));var db=require(_0x9997('0x4'))['db'];var utils=require(_0x9997('0x5'));var logger=require('../../config/logger')(_0x9997('0x6'));var config=require(_0x9997('0x7'));var jayson=require(_0x9997('0x8'));var client=jayson[_0x9997('0x9')][_0x9997('0xa')]({'port':0x232a});config['redis']=_[_0x9997('0xb')](config['redis'],{'host':_0x9997('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9997('0xd')]));require(_0x9997('0xe'))[_0x9997('0xf')](socket);function respondWithRpcPromise(_0xd47c7e,_0x1f606a,_0x165ea4){return new BPromise(function(_0x5e6ca6,_0x26b8eb){return client[_0x9997('0x10')](_0xd47c7e,_0x165ea4)[_0x9997('0x11')](function(_0x24cc97){logger[_0x9997('0x12')](_0x9997('0x13'),_0x1f606a,'request\x20sent');logger['debug'](_0x9997('0x14'),_0x1f606a,_0x9997('0x15'),JSON['stringify'](_0x24cc97));if(_0x24cc97['error']){if(_0x24cc97[_0x9997('0x16')][_0x9997('0x17')]===0x1f4){logger[_0x9997('0x16')](_0x9997('0x13'),_0x1f606a,_0x24cc97[_0x9997('0x16')][_0x9997('0x18')]);return _0x26b8eb(_0x24cc97['error'][_0x9997('0x18')]);}logger[_0x9997('0x16')](_0x9997('0x13'),_0x1f606a,_0x24cc97[_0x9997('0x16')][_0x9997('0x18')]);return _0x5e6ca6(_0x24cc97['error']['message']);}else{logger[_0x9997('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x1f606a,_0x9997('0x15'));_0x5e6ca6(_0x24cc97[_0x9997('0x19')][_0x9997('0x18')]);}})['catch'](function(_0x3f2720){logger[_0x9997('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x1f606a,_0x3f2720);_0x26b8eb(_0x3f2720);});});}exports['UpdateChatInteraction']=function(_0x44debd){var _0x3f9601=this;return new Promise(function(_0x4e3ae2,_0x311240){return db[_0x9997('0x1a')][_0x9997('0x1b')](_0x44debd[_0x9997('0x1c')],{'raw':_0x44debd[_0x9997('0x1d')]?_0x44debd[_0x9997('0x1d')][_0x9997('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x44debd['options']?_0x44debd[_0x9997('0x1d')][_0x9997('0x1f')]||null:null,'attributes':_0x44debd[_0x9997('0x1d')]?_0x44debd[_0x9997('0x1d')][_0x9997('0x20')]||null:null,'limit':_0x44debd['options']?_0x44debd[_0x9997('0x1d')][_0x9997('0x21')]||null:null})['then'](function(_0x30226d){logger[_0x9997('0x12')](_0x9997('0x22'),_0x44debd);logger[_0x9997('0x23')]('UpdateChatInteraction',_0x44debd,JSON[_0x9997('0x24')](_0x30226d));_0x4e3ae2(_0x30226d);})[_0x9997('0x25')](function(_0xc3a6a6){logger[_0x9997('0x16')](_0x9997('0x22'),_0xc3a6a6[_0x9997('0x18')],_0x44debd);_0x311240(_0x3f9601['error'](0x1f4,_0xc3a6a6[_0x9997('0x18')]));});});};exports[_0x9997('0x26')]=function(_0x4af455){return new Promise(function(_0x4922f6,_0x4b1fba){return db[_0x9997('0x1a')][_0x9997('0x27')]({'where':_0x4af455[_0x9997('0x1d')]?_0x4af455[_0x9997('0x1d')][_0x9997('0x1f')]||null:null})['then'](function(_0x2f102f){if(_0x2f102f){return _0x2f102f[_0x9997('0x28')](_0x4af455[_0x9997('0x1c')][_0x9997('0x29')],_[_0x9997('0x2a')](_0x4af455['body'],[_0x9997('0x29'),'id'])||{});}})['spread'](function(_0x2f6534){logger['info'](_0x9997('0x2b'),_0x4af455);logger[_0x9997('0x23')](_0x9997('0x2b'),_0x4af455,JSON[_0x9997('0x24')](_0x2f6534));_0x4922f6(_0x2f6534);})[_0x9997('0x25')](function(_0x2cb677){logger[_0x9997('0x16')](_0x9997('0x2b'),_0x2cb677[_0x9997('0x18')],_0x4af455);_0x4b1fba(_this[_0x9997('0x16')](0x1f4,_0x2cb677[_0x9997('0x18')]));});});}; \ No newline at end of file diff --git a/server/api/chatInteraction/chatInteraction.socket.js b/server/api/chatInteraction/chatInteraction.socket.js new file mode 100644 index 0000000..3f86a10 --- /dev/null +++ b/server/api/chatInteraction/chatInteraction.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9348=['chatInteraction:','./chatInteraction.events','save','remove','update','emit','removeListener','register','length'];(function(_0x2e8ce7,_0x40ef19){var _0x563d95=function(_0x118ec0){while(--_0x118ec0){_0x2e8ce7['push'](_0x2e8ce7['shift']());}};_0x563d95(++_0x40ef19);}(_0x9348,0x160));var _0x8934=function(_0x43058d,_0x567311){_0x43058d=_0x43058d-0x0;var _0x2793d3=_0x9348[_0x43058d];return _0x2793d3;};'use strict';var ChatInteractionEvents=require(_0x8934('0x0'));var events=[_0x8934('0x1'),_0x8934('0x2'),_0x8934('0x3')];function createListener(_0xc7aa75,_0x48c51d){return function(_0x39979e){_0x48c51d[_0x8934('0x4')](_0xc7aa75,_0x39979e);};}function removeListener(_0x386b51,_0xed8e23){return function(){ChatInteractionEvents[_0x8934('0x5')](_0x386b51,_0xed8e23);};}exports[_0x8934('0x6')]=function(_0x3bb404){for(var _0x5ae829=0x0,_0x4420a7=events[_0x8934('0x7')];_0x5ae829<_0x4420a7;_0x5ae829++){var _0x3fc698=events[_0x5ae829];var _0x533196=createListener(_0x8934('0x8')+_0x3fc698,_0x3bb404);ChatInteractionEvents['on'](_0x3fc698,_0x533196);}}; \ No newline at end of file diff --git a/server/api/chatInteraction/index.js b/server/api/chatInteraction/index.js new file mode 100644 index 0000000..d6dec71 --- /dev/null +++ b/server/api/chatInteraction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4c91=['now','originalname','replace','single','file','/:id/messages','addMessage','/:id/tags','tracked','chat','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','express','Router','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/attachment_download','getMessages','isChatInteractionAuthorized','getMyMessages','/:id/download','download','post','/:id/vidaoo','createVidaooSession','diskStorage','root','server/files/attachments/'];(function(_0x13f4a3,_0x5139b2){var _0x51b1d9=function(_0x4291e3){while(--_0x4291e3){_0x13f4a3['push'](_0x13f4a3['shift']());}};_0x51b1d9(++_0x5139b2);}(_0x4c91,0x191));var _0x14c9=function(_0x5ab5e0,_0x36bdf5){_0x5ab5e0=_0x5ab5e0-0x0;var _0x16ecd4=_0x4c91[_0x5ab5e0];return _0x16ecd4;};'use strict';var multer=require(_0x14c9('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x14c9('0x1'));var router=express[_0x14c9('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x14c9('0x3'));router[_0x14c9('0x4')]('/',auth[_0x14c9('0x5')](),controller[_0x14c9('0x6')]);router['get'](_0x14c9('0x7'),auth[_0x14c9('0x5')](),controller[_0x14c9('0x8')]);router['get'](_0x14c9('0x9'),auth['isChatInteractionAuthorized'](),controller['show']);router[_0x14c9('0x4')](_0x14c9('0xa'),auth['isChatInteractionAuthorized'](),controller['attachmentDownload']);router[_0x14c9('0x4')]('/:id/messages',auth[_0x14c9('0x5')](),controller[_0x14c9('0xb')]);router['get']('/:id/my_messages',auth[_0x14c9('0xc')](),controller[_0x14c9('0xd')]);router['get'](_0x14c9('0xe'),auth[_0x14c9('0x5')](),controller[_0x14c9('0xf')]);router['post']('/',auth[_0x14c9('0x5')](),controller['create']);router[_0x14c9('0x10')](_0x14c9('0x11'),auth[_0x14c9('0x5')](),controller[_0x14c9('0x12')]);var upload=multer({'storage':multer[_0x14c9('0x13')]({'destination':function(_0x1815eb,_0x2ad90e,_0x5d6af0){_0x5d6af0(null,path['join'](config[_0x14c9('0x14')],_0x14c9('0x15')));},'filename':function(_0x27f86d,_0x1d1cc8,_0xf5c322){_0xf5c322(null,util['format']('%s-%s',Date[_0x14c9('0x16')](),_0x1d1cc8[_0x14c9('0x17')][_0x14c9('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x14c9('0x10')]('/:id/attachment_upload',upload[_0x14c9('0x19')](_0x14c9('0x1a')),controller['attachmentUpload']);router[_0x14c9('0x10')](_0x14c9('0x1b'),auth[_0x14c9('0xc')](),controller[_0x14c9('0x1c')]);router[_0x14c9('0x10')](_0x14c9('0x1d'),auth['isAuthenticated'](),interaction[_0x14c9('0x1e')](_0x14c9('0x1f'),'chatinteraction:addtags'),controller[_0x14c9('0x20')]);router[_0x14c9('0x21')](_0x14c9('0x9'),auth['isAuthenticated'](),interaction[_0x14c9('0x1e')]('chat',_0x14c9('0x22')),controller[_0x14c9('0x23')]);router[_0x14c9('0x21')](_0x14c9('0x24'),controller[_0x14c9('0x25')]);router['put'](_0x14c9('0x26'),auth[_0x14c9('0xc')](),controller[_0x14c9('0x27')]);router[_0x14c9('0x21')](_0x14c9('0x28'),controller[_0x14c9('0x29')]);router[_0x14c9('0x2a')]('/:id',auth[_0x14c9('0x5')](),interaction[_0x14c9('0x1e')](_0x14c9('0x1f'),_0x14c9('0x2b')),controller[_0x14c9('0x2c')]);router['delete']('/:id/tags',auth[_0x14c9('0x5')](),controller[_0x14c9('0x2d')]);module[_0x14c9('0x2e')]=router; \ No newline at end of file diff --git a/server/api/chatInternalMessage/chatInternalMessage.attributes.js b/server/api/chatInternalMessage/chatInternalMessage.attributes.js new file mode 100644 index 0000000..8290766 --- /dev/null +++ b/server/api/chatInternalMessage/chatInternalMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb689=['exports','TEXT','medium','BOOLEAN','sequelize'];(function(_0xa00a06,_0x163e41){var _0x45d3e5=function(_0x2885f8){while(--_0x2885f8){_0xa00a06['push'](_0xa00a06['shift']());}};_0x45d3e5(++_0x163e41);}(_0xb689,0x95));var _0x9b68=function(_0x1da709,_0x1eddb9){_0x1da709=_0x1da709-0x0;var _0x17e59c=_0xb689[_0x1da709];return _0x17e59c;};'use strict';var Sequelize=require(_0x9b68('0x0'));module[_0x9b68('0x1')]={'body':{'type':Sequelize[_0x9b68('0x2')](_0x9b68('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x9b68('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}}; \ No newline at end of file diff --git a/server/api/chatInternalMessage/chatInternalMessage.controller.js b/server/api/chatInternalMessage/chatInternalMessage.controller.js new file mode 100644 index 0000000..a7b225c --- /dev/null +++ b/server/api/chatInternalMessage/chatInternalMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc8d5=['options','find','create','body','describe','get','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','User','agent','role','userpic','internal','online','allowmessenger','showWebBar','-online','VoiceQueue','user','UserProfileSection','Agents','userProfileId','autoAssociation','resourceId','push','createdAt','ToId','read','eml-format','zip-dir','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','error','stack','name','map','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','filter','ChatInternalMessage','includeAll','include','findAll','rows','catch','params','rawAttributes','keys'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc8d5,0x1b7));var _0x5c8d=function(_0x166eda,_0x5f0071){_0x166eda=_0x166eda-0x0;var _0x1661c7=_0xc8d5[_0x166eda];return _0x1661c7;};'use strict';var emlformat=require(_0x5c8d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5c8d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c8d('0x2'));var moment=require(_0x5c8d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5c8d('0x4'));var path=require(_0x5c8d('0x5'));var sox=require(_0x5c8d('0x6'));var csv=require(_0x5c8d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5c8d('0x8'));var _=require(_0x5c8d('0x9'));var squel=require(_0x5c8d('0xa'));var crypto=require(_0x5c8d('0xb'));var jsforce=require(_0x5c8d('0xc'));var deskjs=require(_0x5c8d('0xd'));var toCsv=require(_0x5c8d('0x7'));var querystring=require(_0x5c8d('0xe'));var Papa=require(_0x5c8d('0xf'));var Redis=require(_0x5c8d('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5c8d('0x11'));var hardwareService=require(_0x5c8d('0x12'));var logger=require(_0x5c8d('0x13'))(_0x5c8d('0x14'));var utils=require(_0x5c8d('0x15'));var config=require(_0x5c8d('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x5c8d('0x17')]=_[_0x5c8d('0x18')](config[_0x5c8d('0x17')],{'host':_0x5c8d('0x19'),'port':0x18eb});var socket=require(_0x5c8d('0x1a'))(new Redis(config[_0x5c8d('0x17')]));require(_0x5c8d('0x1b'))['register'](socket);function respondWithStatusCode(_0x2c3d07,_0x4f70e8){_0x4f70e8=_0x4f70e8||0xcc;return function(_0x5aa99a){if(_0x5aa99a){return _0x2c3d07['sendStatus'](_0x4f70e8);}return _0x2c3d07[_0x5c8d('0x1c')](_0x4f70e8)[_0x5c8d('0x1d')]();};}function respondWithResult(_0x2f6da2,_0x4102b6){_0x4102b6=_0x4102b6||0xc8;return function(_0x89181f){if(_0x89181f){return _0x2f6da2[_0x5c8d('0x1c')](_0x4102b6)[_0x5c8d('0x1e')](_0x89181f);}};}function respondWithFilteredResult(_0x52e9aa,_0x4c7c1f){return function(_0x36b00f){if(_0x36b00f){var _0xc99a5b=typeof _0x4c7c1f['offset']==='undefined'&&typeof _0x4c7c1f[_0x5c8d('0x1f')]===_0x5c8d('0x20');var _0x4168c4=_0x36b00f[_0x5c8d('0x21')];var _0x5bd34b=_0xc99a5b?0x0:_0x4c7c1f[_0x5c8d('0x22')];var _0x3e9010=_0xc99a5b?_0x36b00f[_0x5c8d('0x21')]:_0x4c7c1f['offset']+_0x4c7c1f['limit'];var _0x47a83f;if(_0x3e9010>=_0x4168c4){_0x3e9010=_0x4168c4;_0x47a83f=0xc8;}else{_0x47a83f=0xce;}_0x52e9aa[_0x5c8d('0x1c')](_0x47a83f);return _0x52e9aa[_0x5c8d('0x23')]('Content-Range',_0x5bd34b+'-'+_0x3e9010+'/'+_0x4168c4)['json'](_0x36b00f);}return null;};}function patchUpdates(_0x44d9e5){return function(_0x5ed207){try{jsonpatch[_0x5c8d('0x24')](_0x5ed207,_0x44d9e5,!![]);}catch(_0x5a58ad){return BPromise[_0x5c8d('0x25')](_0x5a58ad);}return _0x5ed207[_0x5c8d('0x26')]();};}function saveUpdates(_0x4339e4,_0x3e4031){return function(_0x5eade5){if(_0x5eade5){return _0x5eade5[_0x5c8d('0x27')](_0x4339e4)[_0x5c8d('0x28')](function(_0x3fe870){return _0x3fe870;});}return null;};}function removeEntity(_0x3f1958,_0x3f68ba){return function(_0x2741d4){if(_0x2741d4){return _0x2741d4[_0x5c8d('0x29')]()['then'](function(){_0x3f1958[_0x5c8d('0x1c')](0xcc)[_0x5c8d('0x1d')]();});}};}function handleEntityNotFound(_0x5ae294,_0x2a66b4){return function(_0x22a1a1){if(!_0x22a1a1){_0x5ae294['sendStatus'](0x194);}return _0x22a1a1;};}function handleError(_0x5dd572,_0x30992e){_0x30992e=_0x30992e||0x1f4;return function(_0x850cae){logger[_0x5c8d('0x2a')](_0x850cae[_0x5c8d('0x2b')]);if(_0x850cae[_0x5c8d('0x2c')]){delete _0x850cae[_0x5c8d('0x2c')];}_0x5dd572['status'](_0x30992e)['send'](_0x850cae);};}exports['index']=function(_0xc86011,_0x1168cd){var _0x222bae={},_0x33dee2={},_0x41147d={'count':0x0,'rows':[]};var _0x130d93=_[_0x5c8d('0x2d')](db['ChatInternalMessage']['rawAttributes'],function(_0x2397b1){return{'name':_0x2397b1['fieldName'],'type':_0x2397b1['type'][_0x5c8d('0x2e')]};});_0x33dee2[_0x5c8d('0x2f')]=_[_0x5c8d('0x2d')](_0x130d93,_0x5c8d('0x2c'));_0x33dee2[_0x5c8d('0x30')]=_['keys'](_0xc86011[_0x5c8d('0x30')]);_0x33dee2[_0x5c8d('0x31')]=_[_0x5c8d('0x32')](_0x33dee2['model'],_0x33dee2['query']);_0x222bae[_0x5c8d('0x33')]=_[_0x5c8d('0x32')](_0x33dee2[_0x5c8d('0x2f')],qs[_0x5c8d('0x34')](_0xc86011['query'][_0x5c8d('0x34')]));_0x222bae[_0x5c8d('0x33')]=_0x222bae[_0x5c8d('0x33')][_0x5c8d('0x35')]?_0x222bae[_0x5c8d('0x33')]:_0x33dee2['model'];if(!_0xc86011[_0x5c8d('0x30')][_0x5c8d('0x36')](_0x5c8d('0x37'))){_0x222bae[_0x5c8d('0x1f')]=qs[_0x5c8d('0x1f')](_0xc86011[_0x5c8d('0x30')][_0x5c8d('0x1f')]);_0x222bae['offset']=qs[_0x5c8d('0x22')](_0xc86011['query'][_0x5c8d('0x22')]);}_0x222bae['order']=qs[_0x5c8d('0x38')](_0xc86011['query'][_0x5c8d('0x38')]);_0x222bae[_0x5c8d('0x39')]=qs[_0x5c8d('0x31')](_[_0x5c8d('0x3a')](_0xc86011['query'],_0x33dee2[_0x5c8d('0x31')]),_0x130d93);if(_0xc86011[_0x5c8d('0x30')]['filter']){_0x222bae[_0x5c8d('0x39')]=_[_0x5c8d('0x3b')](_0x222bae['where'],{'$or':_[_0x5c8d('0x2d')](_0x130d93,function(_0x3e71be){if(_0x3e71be[_0x5c8d('0x3c')]!=='VIRTUAL'){var _0xbb1c6c={};_0xbb1c6c[_0x3e71be[_0x5c8d('0x2c')]]={'$like':'%'+_0xc86011[_0x5c8d('0x30')][_0x5c8d('0x3d')]+'%'};return _0xbb1c6c;}})});}_0x222bae=_[_0x5c8d('0x3b')]({},_0x222bae,_0xc86011['options']);var _0x1389a0={'where':_0x222bae[_0x5c8d('0x39')]};return db[_0x5c8d('0x3e')][_0x5c8d('0x21')](_0x1389a0)['then'](function(_0x1b33c8){_0x41147d[_0x5c8d('0x21')]=_0x1b33c8;if(_0xc86011[_0x5c8d('0x30')][_0x5c8d('0x3f')]){_0x222bae[_0x5c8d('0x40')]=[{'all':!![]}];}return db[_0x5c8d('0x3e')][_0x5c8d('0x41')](_0x222bae);})['then'](function(_0x2af939){_0x41147d[_0x5c8d('0x42')]=_0x2af939;return _0x41147d;})[_0x5c8d('0x28')](respondWithFilteredResult(_0x1168cd,_0x222bae))[_0x5c8d('0x43')](handleError(_0x1168cd,null));};exports['show']=function(_0xb0dbce,_0x367bce){var _0x17c593={'raw':!![],'where':{'id':_0xb0dbce[_0x5c8d('0x44')]['id']}},_0x4dc025={};_0x4dc025[_0x5c8d('0x2f')]=_['keys'](db[_0x5c8d('0x3e')][_0x5c8d('0x45')]);_0x4dc025[_0x5c8d('0x30')]=_[_0x5c8d('0x46')](_0xb0dbce[_0x5c8d('0x30')]);_0x4dc025['filters']=_[_0x5c8d('0x32')](_0x4dc025[_0x5c8d('0x2f')],_0x4dc025[_0x5c8d('0x30')]);_0x17c593[_0x5c8d('0x33')]=_[_0x5c8d('0x32')](_0x4dc025[_0x5c8d('0x2f')],qs[_0x5c8d('0x34')](_0xb0dbce[_0x5c8d('0x30')][_0x5c8d('0x34')]));_0x17c593['attributes']=_0x17c593['attributes'][_0x5c8d('0x35')]?_0x17c593['attributes']:_0x4dc025[_0x5c8d('0x2f')];if(_0xb0dbce[_0x5c8d('0x30')][_0x5c8d('0x3f')]){_0x17c593['include']=[{'all':!![]}];}_0x17c593=_['merge']({},_0x17c593,_0xb0dbce[_0x5c8d('0x47')]);return db[_0x5c8d('0x3e')][_0x5c8d('0x48')](_0x17c593)[_0x5c8d('0x28')](handleEntityNotFound(_0x367bce,null))[_0x5c8d('0x28')](respondWithResult(_0x367bce,null))[_0x5c8d('0x43')](handleError(_0x367bce,null));};exports[_0x5c8d('0x49')]=function(_0x327a8d,_0x17da63){return db['ChatInternalMessage'][_0x5c8d('0x49')](_0x327a8d[_0x5c8d('0x4a')],{})['then'](respondWithResult(_0x17da63,0xc9))[_0x5c8d('0x43')](handleError(_0x17da63,null));};exports[_0x5c8d('0x27')]=function(_0x419d31,_0x177273){if(_0x419d31[_0x5c8d('0x4a')]['id']){delete _0x419d31[_0x5c8d('0x4a')]['id'];}return db[_0x5c8d('0x3e')]['find']({'where':{'id':_0x419d31[_0x5c8d('0x44')]['id']}})['then'](handleEntityNotFound(_0x177273,null))[_0x5c8d('0x28')](saveUpdates(_0x419d31[_0x5c8d('0x4a')],null))[_0x5c8d('0x28')](respondWithResult(_0x177273,null))[_0x5c8d('0x43')](handleError(_0x177273,null));};exports[_0x5c8d('0x29')]=function(_0x21c84f,_0x2630ad){return db[_0x5c8d('0x3e')][_0x5c8d('0x48')]({'where':{'id':_0x21c84f[_0x5c8d('0x44')]['id']}})['then'](handleEntityNotFound(_0x2630ad,null))[_0x5c8d('0x28')](removeEntity(_0x2630ad,null))['catch'](handleError(_0x2630ad,null));};exports[_0x5c8d('0x4b')]=function(_0x52c977,_0xea48ba){return db[_0x5c8d('0x3e')][_0x5c8d('0x4b')]()[_0x5c8d('0x28')](respondWithResult(_0xea48ba,null))[_0x5c8d('0x43')](handleError(_0xea48ba,null));};function wrapUser(_0x2dbc34){return function(_0xf602cf){var _0x17bddd=_0x2dbc34[_0x5c8d('0x4c')]({'plain':!![]});_0x17bddd['messages']=[];if(_0xf602cf){_0x17bddd[_0x5c8d('0x4d')]=_0xf602cf['createdAt'];_0x17bddd['lastMessage']=_0xf602cf;}else{_0x17bddd[_0x5c8d('0x4d')]=moment(0x0)[_0x5c8d('0x4e')](_0x5c8d('0x4f'));_0x17bddd[_0x5c8d('0x50')]={};}return _0x17bddd;};}exports[_0x5c8d('0x51')]=function(_0x59100a,_0x3f28e6,_0x4580fc){var _0x3ce5f0=[];return db[_0x5c8d('0x52')][_0x5c8d('0x41')]({'where':{'role':[_0x5c8d('0x53'),'admin','user']},'attributes':['id','fullname',_0x5c8d('0x2c'),_0x5c8d('0x54'),_0x5c8d('0x55'),_0x5c8d('0x56'),_0x5c8d('0x57'),'lastLoginAt',_0x5c8d('0x58'),_0x5c8d('0x59')],'order':qs[_0x5c8d('0x38')](_0x5c8d('0x5a')),'include':[{'model':db[_0x5c8d('0x5b')],'as':'VoiceQueues','attributes':['id','name','type'],'through':{'attributes':[]}}]})['then'](function(_0x4c01e9){if(_0x4c01e9){var _0x3728d1=_0x59100a[_0x5c8d('0x5c')][_0x5c8d('0x4c')]({'plain':!![]});if(!_0x3728d1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3728d1[_0x5c8d('0x54')]===_0x5c8d('0x5c')){return db[_0x5c8d('0x5d')][_0x5c8d('0x48')]({'where':{'name':_0x5c8d('0x5e'),'userProfileId':_0x3728d1[_0x5c8d('0x5f')]},'raw':!![]})[_0x5c8d('0x28')](function(_0x206605){if(_0x206605){if(_0x206605[_0x5c8d('0x60')]===0x0){return db['UserProfileResource'][_0x5c8d('0x41')]({'where':{'sectionId':_0x206605['id']},'raw':!![]})[_0x5c8d('0x28')](function(_0x4c591e){var _0xca5c8d=[];if(_['isEmpty'](_0x4c591e)){_0xca5c8d=_[_0x5c8d('0x3d')](_0x4c01e9,function(_0x122f43){if(_0x122f43[_0x5c8d('0x54')]!==_0x5c8d('0x53')){return _0x122f43;}});return _0xca5c8d;}else{for(var _0x2f4443=0x0;_0x2f4443<_0x4c01e9[_0x5c8d('0x35')];_0x2f4443++){var _0x5f16ec=_0x4c01e9[_0x2f4443];if(_0x5f16ec[_0x5c8d('0x54')]===_0x5c8d('0x53')){var _0xd7ae7c=_[_0x5c8d('0x48')](_0x4c591e,function(_0x417197){return _0x417197[_0x5c8d('0x61')]===_0x5f16ec['id'];});if(_0xd7ae7c)_0xca5c8d['push'](_0x5f16ec);}else{_0xca5c8d[_0x5c8d('0x62')](_0x5f16ec);}}return _0xca5c8d;}});}else{return _0x4c01e9;}}else{var _0x53f4e9=_[_0x5c8d('0x3d')](_0x4c01e9,function(_0x3830fa){if(_0x3830fa[_0x5c8d('0x54')]!==_0x5c8d('0x53')){return _0x3830fa;}});return _0x53f4e9;}});}else{return _0x4c01e9;}}})[_0x5c8d('0x28')](function(_0x4d65b9){var _0x3c30ce=[];if(_0x4d65b9){_0x3ce5f0=_0x4d65b9;for(var _0x169a12=0x0;_0x169a12<_0x4d65b9[_0x5c8d('0x35')];_0x169a12+=0x1){_0x3ce5f0[_0x169a12]['messages']=[];_0x3c30ce[_0x5c8d('0x62')](db[_0x5c8d('0x3e')][_0x5c8d('0x48')]({'where':{'FromId':[_0x59100a[_0x5c8d('0x5c')]['id'],_0x4d65b9[_0x169a12]['id']],'ToId':[_0x59100a[_0x5c8d('0x5c')]['id'],_0x4d65b9[_0x169a12]['id']],'ChatGroupId':null},'attributes':['id',_0x5c8d('0x63'),'FromId',_0x5c8d('0x64'),_0x5c8d('0x65'),_0x5c8d('0x4a')],'order':qs[_0x5c8d('0x38')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x5c8d('0x28')](wrapUser(_0x4d65b9[_0x169a12])));}return BPromise['all'](_0x3c30ce);}return[];})['then'](function(_0xefbe00){return{'rows':_0xefbe00,'count':_0xefbe00['length']};})[_0x5c8d('0x28')](respondWithResult(_0x3f28e6,null))[_0x5c8d('0x43')](handleError(_0x3f28e6,null));}; \ No newline at end of file diff --git a/server/api/chatInternalMessage/chatInternalMessage.events.js b/server/api/chatInternalMessage/chatInternalMessage.events.js new file mode 100644 index 0000000..7d40d2a --- /dev/null +++ b/server/api/chatInternalMessage/chatInternalMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdf97=['hasOwnProperty','hook','exports','../../mysqldb','ChatInternalMessage','setMaxListeners','update','remove','emit'];(function(_0x2df3e3,_0x4358f0){var _0x513853=function(_0x15db16){while(--_0x15db16){_0x2df3e3['push'](_0x2df3e3['shift']());}};_0x513853(++_0x4358f0);}(_0xdf97,0x1ce));var _0x7df9=function(_0x182c6e,_0x31831a){_0x182c6e=_0x182c6e-0x0;var _0xfc0e5c=_0xdf97[_0x182c6e];return _0xfc0e5c;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x7df9('0x0'))['db'][_0x7df9('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x7df9('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7df9('0x3'),'afterDestroy':_0x7df9('0x4')};function emitEvent(_0x3908f8){return function(_0x5a5440,_0x236379,_0x494fb6){ChatInternalMessageEvents[_0x7df9('0x5')](_0x3908f8+':'+_0x5a5440['id'],_0x5a5440);ChatInternalMessageEvents['emit'](_0x3908f8,_0x5a5440);_0x494fb6(null);};}for(var e in events){if(events[_0x7df9('0x6')](e)){var event=events[e];ChatInternalMessage[_0x7df9('0x7')](e,emitEvent(event));}}module[_0x7df9('0x8')]=ChatInternalMessageEvents; \ No newline at end of file diff --git a/server/api/chatInternalMessage/chatInternalMessage.model.js b/server/api/chatInternalMessage/chatInternalMessage.model.js new file mode 100644 index 0000000..fbfe065 --- /dev/null +++ b/server/api/chatInternalMessage/chatInternalMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x92bd=['api','bluebird','request-promise','path','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x92bd,0x11a));var _0xd92b=function(_0x525a60,_0x4c2846){_0x525a60=_0x525a60-0x0;var _0x398893=_0x92bd[_0x525a60];return _0x398893;};'use strict';var _=require(_0xd92b('0x0'));var util=require(_0xd92b('0x1'));var logger=require(_0xd92b('0x2'))(_0xd92b('0x3'));var moment=require('moment');var BPromise=require(_0xd92b('0x4'));var rp=require(_0xd92b('0x5'));var fs=require('fs');var path=require(_0xd92b('0x6'));var rimraf=require('rimraf');var config=require(_0xd92b('0x7'));var attributes=require(_0xd92b('0x8'));module[_0xd92b('0x9')]=function(_0x1a0db3,_0x4f9995){return _0x1a0db3[_0xd92b('0xa')](_0xd92b('0xb'),attributes,{'tableName':_0xd92b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd92b('0xd'),'collate':_0xd92b('0xe')});}; \ No newline at end of file diff --git a/server/api/chatInternalMessage/chatInternalMessage.rpc.js b/server/api/chatInternalMessage/chatInternalMessage.rpc.js new file mode 100644 index 0000000..824f41e --- /dev/null +++ b/server/api/chatInternalMessage/chatInternalMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7857=['socket.io-emitter','register','request','then','info','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','request\x20sent','result','catch','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x4e90e3,_0x570a1d){var _0x295e5b=function(_0x754043){while(--_0x754043){_0x4e90e3['push'](_0x4e90e3['shift']());}};_0x295e5b(++_0x570a1d);}(_0x7857,0x1af));var _0x7785=function(_0x1e2de9,_0x1f488b){_0x1e2de9=_0x1e2de9-0x0;var _0x500905=_0x7857[_0x1e2de9];return _0x500905;};'use strict';var _=require('lodash');var util=require(_0x7785('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7785('0x1'));var fs=require('fs');var Redis=require(_0x7785('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7785('0x3'))(_0x7785('0x4'));var config=require(_0x7785('0x5'));var jayson=require(_0x7785('0x6'));var client=jayson[_0x7785('0x7')][_0x7785('0x8')]({'port':0x232a});config[_0x7785('0x9')]=_[_0x7785('0xa')](config[_0x7785('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x7785('0xb'))(new Redis(config[_0x7785('0x9')]));require('./chatInternalMessage.socket')[_0x7785('0xc')](socket);function respondWithRpcPromise(_0xd65aa8,_0x297d3b,_0x24fc56){return new BPromise(function(_0x5552da,_0x3b79e9){return client[_0x7785('0xd')](_0xd65aa8,_0x24fc56)[_0x7785('0xe')](function(_0x320c33){logger[_0x7785('0xf')]('ChatInternalMessage,\x20%s,\x20%s',_0x297d3b,'request\x20sent');logger[_0x7785('0x10')](_0x7785('0x11'),_0x297d3b,'request\x20sent',JSON[_0x7785('0x12')](_0x320c33));if(_0x320c33['error']){if(_0x320c33[_0x7785('0x13')][_0x7785('0x14')]===0x1f4){logger[_0x7785('0x13')](_0x7785('0x15'),_0x297d3b,_0x320c33[_0x7785('0x13')]['message']);return _0x3b79e9(_0x320c33[_0x7785('0x13')][_0x7785('0x16')]);}logger[_0x7785('0x13')](_0x7785('0x15'),_0x297d3b,_0x320c33[_0x7785('0x13')][_0x7785('0x16')]);return _0x5552da(_0x320c33[_0x7785('0x13')][_0x7785('0x16')]);}else{logger[_0x7785('0xf')](_0x7785('0x15'),_0x297d3b,_0x7785('0x17'));_0x5552da(_0x320c33[_0x7785('0x18')][_0x7785('0x16')]);}})[_0x7785('0x19')](function(_0x269947){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x297d3b,_0x269947);_0x3b79e9(_0x269947);});});} \ No newline at end of file diff --git a/server/api/chatInternalMessage/chatInternalMessage.socket.js b/server/api/chatInternalMessage/chatInternalMessage.socket.js new file mode 100644 index 0000000..cf1424c --- /dev/null +++ b/server/api/chatInternalMessage/chatInternalMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2b04=['remove','update','emit','register','length','chatInternalMessage:','save'];(function(_0x5805dc,_0x243355){var _0x531bc9=function(_0x3bf09b){while(--_0x3bf09b){_0x5805dc['push'](_0x5805dc['shift']());}};_0x531bc9(++_0x243355);}(_0x2b04,0x1cd));var _0x42b0=function(_0x5d1a0a,_0x3df1b4){_0x5d1a0a=_0x5d1a0a-0x0;var _0x165ee2=_0x2b04[_0x5d1a0a];return _0x165ee2;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0x42b0('0x0'),_0x42b0('0x1'),_0x42b0('0x2')];function createListener(_0x2a3927,_0x466b93){return function(_0x1a63aa){_0x466b93[_0x42b0('0x3')](_0x2a3927,_0x1a63aa);};}function removeListener(_0x540487,_0x556ca4){return function(){ChatInternalMessageEvents['removeListener'](_0x540487,_0x556ca4);};}exports[_0x42b0('0x4')]=function(_0x33b678){for(var _0x5c9858=0x0,_0x5daa2d=events[_0x42b0('0x5')];_0x5c9858<_0x5daa2d;_0x5c9858++){var _0x15cb14=events[_0x5c9858];var _0x5474b6=createListener(_0x42b0('0x6')+_0x15cb14,_0x33b678);ChatInternalMessageEvents['on'](_0x15cb14,_0x5474b6);}}; \ No newline at end of file diff --git a/server/api/chatInternalMessage/index.js b/server/api/chatInternalMessage/index.js new file mode 100644 index 0000000..d7cd44c --- /dev/null +++ b/server/api/chatInternalMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbf60=['/:id','show','post','create','put','update','exports','multer','util','Router','../../components/auth/service','../../components/interaction/service','index','isAuthenticated','describe','get','/users','getUsers'];(function(_0x37e3d3,_0x98b6){var _0x23d36a=function(_0x19b6c7){while(--_0x19b6c7){_0x37e3d3['push'](_0x37e3d3['shift']());}};_0x23d36a(++_0x98b6);}(_0xbf60,0x127));var _0x0bf6=function(_0xcda377,_0x1e2678){_0xcda377=_0xcda377-0x0;var _0x1c024f=_0xbf60[_0xcda377];return _0x1c024f;};'use strict';var multer=require(_0x0bf6('0x0'));var util=require(_0x0bf6('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0bf6('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0bf6('0x3'));var interaction=require(_0x0bf6('0x4'));var config=require('../../config/environment');var controller=require('./chatInternalMessage.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0bf6('0x5')]);router['get']('/describe',auth[_0x0bf6('0x6')](),controller[_0x0bf6('0x7')]);router[_0x0bf6('0x8')](_0x0bf6('0x9'),auth['isAuthenticated'](),controller[_0x0bf6('0xa')]);router[_0x0bf6('0x8')](_0x0bf6('0xb'),auth[_0x0bf6('0x6')](),controller[_0x0bf6('0xc')]);router[_0x0bf6('0xd')]('/',auth[_0x0bf6('0x6')](),controller[_0x0bf6('0xe')]);router[_0x0bf6('0xf')]('/:id',controller[_0x0bf6('0x10')]);router['delete'](_0x0bf6('0xb'),auth[_0x0bf6('0x6')](),controller['destroy']);module[_0x0bf6('0x11')]=router; \ No newline at end of file diff --git a/server/api/chatMessage/chatMessage.attributes.js b/server/api/chatMessage/chatMessage.attributes.js new file mode 100644 index 0000000..b22d15c --- /dev/null +++ b/server/api/chatMessage/chatMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1131=['BOOLEAN','ENUM','out','DATE','STRING','exports'];(function(_0x152136,_0x4f14f1){var _0x20df44=function(_0x362877){while(--_0x362877){_0x152136['push'](_0x152136['shift']());}};_0x20df44(++_0x4f14f1);}(_0x1131,0x71));var _0x1113=function(_0x2b58fb,_0x353e04){_0x2b58fb=_0x2b58fb-0x0;var _0xd865fa=_0x1131[_0x2b58fb];return _0xd865fa;};'use strict';var Sequelize=require('sequelize');module[_0x1113('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1113('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1113('0x2')]('in',_0x1113('0x3')),'defaultValue':_0x1113('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x1113('0x4')]},'providerName':{'type':Sequelize[_0x1113('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}}; \ No newline at end of file diff --git a/server/api/chatMessage/chatMessage.controller.js b/server/api/chatMessage/chatMessage.controller.js new file mode 100644 index 0000000..300deb1 --- /dev/null +++ b/server/api/chatMessage/chatMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3124=['stack','name','index','map','ChatMessage','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','rawAttributes','length','options','find','create','body','params','describe','chat-interactions','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','interaction','info','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','fullname','email','internal','interface','SIP/%s','channel','EventManager','acceptmessage','formData','ChatInteraction','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','Sequelize','User','event','parse','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','client','http','request','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','undefined','limit','count','set','json','reject','update','then','destroy','end'];(function(_0x45d510,_0x513557){var _0x20d720=function(_0x43e5de){while(--_0x43e5de){_0x45d510['push'](_0x45d510['shift']());}};_0x20d720(++_0x513557);}(_0x3124,0x149));var _0x4312=function(_0x36e807,_0x3f3e2d){_0x36e807=_0x36e807-0x0;var _0x6b408d=_0x3124[_0x36e807];return _0x6b408d;};'use strict';var emlformat=require(_0x4312('0x0'));var rimraf=require(_0x4312('0x1'));var zipdir=require(_0x4312('0x2'));var jsonpatch=require(_0x4312('0x3'));var rp=require('request-promise');var moment=require(_0x4312('0x4'));var BPromise=require(_0x4312('0x5'));var Mustache=require('mustache');var util=require(_0x4312('0x6'));var path=require(_0x4312('0x7'));var sox=require('sox');var csv=require(_0x4312('0x8'));var ejs=require(_0x4312('0x9'));var fs=require('fs');var fs_extra=require(_0x4312('0xa'));var _=require(_0x4312('0xb'));var squel=require(_0x4312('0xc'));var crypto=require(_0x4312('0xd'));var jsforce=require(_0x4312('0xe'));var deskjs=require(_0x4312('0xf'));var toCsv=require(_0x4312('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4312('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4312('0x11'));var as=require(_0x4312('0x12'));var hardwareService=require(_0x4312('0x13'));var logger=require(_0x4312('0x14'))(_0x4312('0x15'));var utils=require(_0x4312('0x16'));var config=require(_0x4312('0x17'));var licenseUtil=require(_0x4312('0x18'));var db=require(_0x4312('0x19'))['db'];config[_0x4312('0x1a')]=_[_0x4312('0x1b')](config[_0x4312('0x1a')],{'host':_0x4312('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4312('0x1a')]));require(_0x4312('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x4312('0x1e')][_0x4312('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x4312('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4d5608,_0x40d7ff,_0xf1dd9c,_0x4acaae){return new BPromise(function(_0x216a7c,_0x3da494){var _0x367d94=_0x4acaae||client;return _0x367d94[_0x4312('0x20')](_0x4d5608,_0xf1dd9c)['then'](function(_0xd6e6c3){logger['info'](_0x4312('0x21'),_0x40d7ff,_0x4312('0x22'));logger[_0x4312('0x23')](_0x4312('0x24'),_0x40d7ff,_0x4312('0x22'),JSON[_0x4312('0x25')](_0xd6e6c3));if(_0xd6e6c3[_0x4312('0x26')]){if(_0xd6e6c3[_0x4312('0x26')][_0x4312('0x27')]===0x1f4){logger[_0x4312('0x26')](_0x4312('0x21'),_0x40d7ff,_0xd6e6c3[_0x4312('0x26')]['message']);return _0x3da494(_0xd6e6c3[_0x4312('0x26')][_0x4312('0x28')]);}logger[_0x4312('0x26')](_0x4312('0x21'),_0x40d7ff,_0xd6e6c3[_0x4312('0x26')][_0x4312('0x28')]);return _0x216a7c(_0xd6e6c3['error'][_0x4312('0x28')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x40d7ff,_0x4312('0x22'));_0x216a7c(_0xd6e6c3['result']['message']);}})[_0x4312('0x29')](function(_0x1095e1){logger[_0x4312('0x26')](_0x4312('0x21'),_0x40d7ff,_0x1095e1);_0x3da494(_0x1095e1);});});}function respondWithStatusCode(_0x5ce5cc,_0x2f37c6){_0x2f37c6=_0x2f37c6||0xcc;return function(_0x4dbef7){if(_0x4dbef7){return _0x5ce5cc[_0x4312('0x2a')](_0x2f37c6);}return _0x5ce5cc[_0x4312('0x2b')](_0x2f37c6)['end']();};}function respondWithResult(_0xcf95e6,_0x13dbd5){_0x13dbd5=_0x13dbd5||0xc8;return function(_0x457970){if(_0x457970){return _0xcf95e6[_0x4312('0x2b')](_0x13dbd5)['json'](_0x457970);}};}function respondWithFilteredResult(_0x4e9908,_0x6905e6){return function(_0x507b4c){if(_0x507b4c){var _0x145942=typeof _0x6905e6[_0x4312('0x2c')]===_0x4312('0x2d')&&typeof _0x6905e6[_0x4312('0x2e')]===_0x4312('0x2d');var _0x49306a=_0x507b4c[_0x4312('0x2f')];var _0x5200c8=_0x145942?0x0:_0x6905e6[_0x4312('0x2c')];var _0x40b99f=_0x145942?_0x507b4c[_0x4312('0x2f')]:_0x6905e6[_0x4312('0x2c')]+_0x6905e6[_0x4312('0x2e')];var _0x3d684e;if(_0x40b99f>=_0x49306a){_0x40b99f=_0x49306a;_0x3d684e=0xc8;}else{_0x3d684e=0xce;}_0x4e9908['status'](_0x3d684e);return _0x4e9908[_0x4312('0x30')]('Content-Range',_0x5200c8+'-'+_0x40b99f+'/'+_0x49306a)[_0x4312('0x31')](_0x507b4c);}return null;};}function patchUpdates(_0x346a8f){return function(_0x5f0217){try{jsonpatch['apply'](_0x5f0217,_0x346a8f,!![]);}catch(_0x1fcee5){return BPromise[_0x4312('0x32')](_0x1fcee5);}return _0x5f0217['save']();};}function saveUpdates(_0x292b9d,_0x236496){return function(_0x517dd3){if(_0x517dd3){return _0x517dd3[_0x4312('0x33')](_0x292b9d)[_0x4312('0x34')](function(_0xc1ccb0){return _0xc1ccb0;});}return null;};}function removeEntity(_0x2d31bc,_0x5e8560){return function(_0x565e49){if(_0x565e49){return _0x565e49[_0x4312('0x35')]()[_0x4312('0x34')](function(){_0x2d31bc['status'](0xcc)[_0x4312('0x36')]();});}};}function handleEntityNotFound(_0xa8d776,_0x1e9f0d){return function(_0x275131){if(!_0x275131){_0xa8d776[_0x4312('0x2a')](0x194);}return _0x275131;};}function handleError(_0xde109e,_0x54f536){_0x54f536=_0x54f536||0x1f4;return function(_0x3593c5){logger[_0x4312('0x26')](_0x3593c5[_0x4312('0x37')]);if(_0x3593c5[_0x4312('0x38')]){delete _0x3593c5['name'];}_0xde109e['status'](_0x54f536)['send'](_0x3593c5);};}exports[_0x4312('0x39')]=function(_0x176e00,_0x385aa8){var _0x4bcbd9={},_0x486f95={},_0x334d93={'count':0x0,'rows':[]};var _0x38f650=_[_0x4312('0x3a')](db[_0x4312('0x3b')]['rawAttributes'],function(_0x552e9b){return{'name':_0x552e9b['fieldName'],'type':_0x552e9b['type'][_0x4312('0x3c')]};});_0x486f95[_0x4312('0x3d')]=_['map'](_0x38f650,_0x4312('0x38'));_0x486f95[_0x4312('0x3e')]=_[_0x4312('0x3f')](_0x176e00[_0x4312('0x3e')]);_0x486f95['filters']=_[_0x4312('0x40')](_0x486f95[_0x4312('0x3d')],_0x486f95[_0x4312('0x3e')]);_0x4bcbd9[_0x4312('0x41')]=_[_0x4312('0x40')](_0x486f95[_0x4312('0x3d')],qs[_0x4312('0x42')](_0x176e00['query'][_0x4312('0x42')]));_0x4bcbd9['attributes']=_0x4bcbd9[_0x4312('0x41')]['length']?_0x4bcbd9[_0x4312('0x41')]:_0x486f95[_0x4312('0x3d')];if(!_0x176e00['query'][_0x4312('0x43')]('nolimit')){_0x4bcbd9[_0x4312('0x2e')]=qs['limit'](_0x176e00[_0x4312('0x3e')][_0x4312('0x2e')]);_0x4bcbd9[_0x4312('0x2c')]=qs[_0x4312('0x2c')](_0x176e00[_0x4312('0x3e')][_0x4312('0x2c')]);}_0x4bcbd9[_0x4312('0x44')]=qs[_0x4312('0x45')](_0x176e00[_0x4312('0x3e')]['sort']);_0x4bcbd9[_0x4312('0x46')]=qs[_0x4312('0x47')](_[_0x4312('0x48')](_0x176e00[_0x4312('0x3e')],_0x486f95['filters']),_0x38f650);if(_0x176e00[_0x4312('0x3e')][_0x4312('0x49')]){_0x4bcbd9[_0x4312('0x46')]=_[_0x4312('0x4a')](_0x4bcbd9[_0x4312('0x46')],{'$or':_[_0x4312('0x3a')](_0x38f650,function(_0x586ba1){if(_0x586ba1[_0x4312('0x4b')]!==_0x4312('0x4c')){var _0x280846={};_0x280846[_0x586ba1[_0x4312('0x38')]]={'$like':'%'+_0x176e00[_0x4312('0x3e')][_0x4312('0x49')]+'%'};return _0x280846;}})});}_0x4bcbd9=_['merge']({},_0x4bcbd9,_0x176e00['options']);var _0x4c4e79={'where':_0x4bcbd9[_0x4312('0x46')]};return db[_0x4312('0x3b')][_0x4312('0x2f')](_0x4c4e79)['then'](function(_0xd4927e){_0x334d93[_0x4312('0x2f')]=_0xd4927e;if(_0x176e00[_0x4312('0x3e')][_0x4312('0x4d')]){_0x4bcbd9[_0x4312('0x4e')]=[{'all':!![]}];}return db[_0x4312('0x3b')][_0x4312('0x4f')](_0x4bcbd9);})[_0x4312('0x34')](function(_0x587fa2){_0x334d93[_0x4312('0x50')]=_0x587fa2;return _0x334d93;})[_0x4312('0x34')](respondWithFilteredResult(_0x385aa8,_0x4bcbd9))['catch'](handleError(_0x385aa8,null));};exports[_0x4312('0x51')]=function(_0x471ceb,_0x110f4d){var _0x4f7793={'raw':!![],'where':{'id':_0x471ceb['params']['id']}},_0x35052a={};_0x35052a[_0x4312('0x3d')]=_[_0x4312('0x3f')](db['ChatMessage'][_0x4312('0x52')]);_0x35052a['query']=_[_0x4312('0x3f')](_0x471ceb[_0x4312('0x3e')]);_0x35052a[_0x4312('0x47')]=_[_0x4312('0x40')](_0x35052a['model'],_0x35052a[_0x4312('0x3e')]);_0x4f7793[_0x4312('0x41')]=_['intersection'](_0x35052a['model'],qs['fields'](_0x471ceb['query'][_0x4312('0x42')]));_0x4f7793[_0x4312('0x41')]=_0x4f7793[_0x4312('0x41')][_0x4312('0x53')]?_0x4f7793[_0x4312('0x41')]:_0x35052a[_0x4312('0x3d')];if(_0x471ceb[_0x4312('0x3e')][_0x4312('0x4d')]){_0x4f7793['include']=[{'all':!![]}];}_0x4f7793=_[_0x4312('0x4a')]({},_0x4f7793,_0x471ceb[_0x4312('0x54')]);return db[_0x4312('0x3b')][_0x4312('0x55')](_0x4f7793)[_0x4312('0x34')](handleEntityNotFound(_0x110f4d,null))['then'](respondWithResult(_0x110f4d,null))[_0x4312('0x29')](handleError(_0x110f4d,null));};exports[_0x4312('0x56')]=function(_0x18621a,_0x4ba0f2){return db['ChatMessage'][_0x4312('0x56')](_0x18621a[_0x4312('0x57')],{})[_0x4312('0x34')](respondWithResult(_0x4ba0f2,0xc9))[_0x4312('0x29')](handleError(_0x4ba0f2,null));};exports['update']=function(_0x4b0c84,_0x31a6d6){if(_0x4b0c84[_0x4312('0x57')]['id']){delete _0x4b0c84[_0x4312('0x57')]['id'];}return db[_0x4312('0x3b')][_0x4312('0x55')]({'where':{'id':_0x4b0c84[_0x4312('0x58')]['id']}})['then'](handleEntityNotFound(_0x31a6d6,null))[_0x4312('0x34')](saveUpdates(_0x4b0c84[_0x4312('0x57')],null))[_0x4312('0x34')](respondWithResult(_0x31a6d6,null))[_0x4312('0x29')](handleError(_0x31a6d6,null));};exports[_0x4312('0x35')]=function(_0x299169,_0x5abafe){return db[_0x4312('0x3b')][_0x4312('0x55')]({'where':{'id':_0x299169[_0x4312('0x58')]['id']}})[_0x4312('0x34')](handleEntityNotFound(_0x5abafe,null))[_0x4312('0x34')](removeEntity(_0x5abafe,null))[_0x4312('0x29')](handleError(_0x5abafe,null));};exports[_0x4312('0x59')]=function(_0x5bcb0f,_0x1e9306){return db[_0x4312('0x3b')][_0x4312('0x59')]()[_0x4312('0x34')](respondWithResult(_0x1e9306,null))[_0x4312('0x29')](handleError(_0x1e9306,null));};var interaction_log=require(_0x4312('0x14'))(_0x4312('0x5a'));exports[_0x4312('0x5b')]=function(_0x70ea4c,_0xd6e83a,_0x5d407b){var _0x24217d={'agent':{},'channel':_0x4312('0x5c')};if(_0x70ea4c['body']['id']){delete _0x70ea4c[_0x4312('0x57')]['id'];}_0x70ea4c['body']['read']=!![];_0x70ea4c[_0x4312('0x57')]['readAt']=moment()[_0x4312('0x5d')](_0x4312('0x5e'));_0x70ea4c[_0x4312('0x57')]['UserId']=_0x70ea4c[_0x4312('0x57')][_0x4312('0x5f')]||_0x70ea4c[_0x4312('0x60')]['id'];_0x24217d[_0x4312('0x61')]['id']=_0x70ea4c['body']['UserId'];return db['ChatMessage'][_0x4312('0x55')]({'where':{'id':_0x70ea4c[_0x4312('0x58')]['id'],'UserId':null}})[_0x4312('0x34')](handleEntityNotFound(_0xd6e83a,null))['then'](saveUpdates(_0x70ea4c[_0x4312('0x57')],null))[_0x4312('0x34')](function(_0x1c3799){if(_0x1c3799){_0x24217d['message']=_0x1c3799[_0x4312('0x62')]({'plain':!![]});return db['ChatInteraction'][_0x4312('0x55')]({'where':{'id':_0x1c3799['ChatInteractionId']}});}return null;})[_0x4312('0x34')](handleEntityNotFound(_0xd6e83a,null))['then'](function(_0x494aae){if(_0x494aae){return _0x494aae[_0x4312('0x33')]({'UserId':_0x70ea4c[_0x4312('0x57')][_0x4312('0x5f')],'read1stAt':_['isNil'](_0x494aae['read1stAt'])?moment()['format'](_0x4312('0x5e')):undefined});}return null;})[_0x4312('0x34')](function(_0x18e724){if(_0x18e724){_0x24217d[_0x4312('0x63')]=_0x18e724[_0x4312('0x62')]({'plain':!![]});interaction_log[_0x4312('0x64')](_0x4312('0x65'),_0x70ea4c[_0x4312('0x60')]['id'],_0x70ea4c[_0x4312('0x60')]['name'],_0x70ea4c[_0x4312('0x60')]['role'],_0x24217d[_0x4312('0x63')]['id'],_0x70ea4c[_0x4312('0x57')]?JSON[_0x4312('0x25')](_0x70ea4c['body']):_0x4312('0x66'));return respondWithRpcPromise(_0x4312('0x67'),'acceptMessage',_0x24217d);}return null;})[_0x4312('0x34')](function(_0x372d8){var _0x3db72e=_0x4312('0x68')+_0x372d8['message'][_0x4312('0x69')];return db[_0x4312('0x6a')][_0x4312('0x3e')](_0x3db72e,{'type':db['Sequelize'][_0x4312('0x6b')][_0x4312('0x6c')],'raw':!![]})[_0x4312('0x34')](function(_0x3929a5){return _0x3929a5;});})[_0x4312('0x34')](function(_0x5b7a79){if(_0x5b7a79){_0x24217d['message'][_0x4312('0x6d')]=_0x5b7a79[0x0];if(!_0x70ea4c[_0x4312('0x57')][_0x4312('0x5f')])return;return db['User'][_0x4312('0x55')]({'where':{'id':_0x70ea4c[_0x4312('0x57')]['UserId'],'role':'agent'},'attributes':['id',_0x4312('0x38'),_0x4312('0x6e'),_0x4312('0x6f'),_0x4312('0x70')],'raw':!![]});}return null;})['then'](function(_0x9f77a3){if(!_0x9f77a3)return null;_0x24217d[_0x4312('0x28')]['agent']=_0x9f77a3;return _0x24217d;})['then'](function(_0x1037ef){if(_0x1037ef){if(_0x70ea4c[_0x4312('0x57')]['manual']){_0x24217d[_0x4312('0x28')][_0x4312('0x71')]=util[_0x4312('0x5d')](_0x4312('0x72'),_0x70ea4c[_0x4312('0x60')]['name']);_0x24217d[_0x4312('0x28')]['channel']=_0x24217d[_0x4312('0x73')];_0x24217d['message']['motionChannel']=_0x24217d[_0x4312('0x73')];_0x24217d['message']['event']='accept';return respondWithRpcPromise('EventManager',_0x4312('0x74'),{'event':_0x4312('0x75'),'message':_['merge'](_0x24217d[_0x4312('0x28')],JSON['parse'](_0x24217d['interaction'][_0x4312('0x76')]))},client9002)[_0x4312('0x34')](function(){return _0x24217d;});}return _0x24217d;}return null;})['then'](respondWithResult(_0xd6e83a,null))['catch'](handleError(_0xd6e83a,null));};var interaction_log=require(_0x4312('0x14'))(_0x4312('0x5a'));exports['reject']=function(_0x56560b,_0x1631bd,_0x46762b){var _0x31e4de={'agent':{},'channel':_0x4312('0x5c')};if(_0x56560b[_0x4312('0x57')]['id']){delete _0x56560b[_0x4312('0x57')]['id'];}_0x56560b['body'][_0x4312('0x5f')]=_0x56560b[_0x4312('0x57')][_0x4312('0x5f')]||_0x56560b[_0x4312('0x60')]['id'];_0x31e4de[_0x4312('0x61')]['id']=_0x56560b['body'][_0x4312('0x5f')];return db[_0x4312('0x3b')][_0x4312('0x55')]({'where':{'id':_0x56560b['params']['id'],'UserId':null}})[_0x4312('0x34')](handleEntityNotFound(_0x1631bd,null))['then'](function(_0x433270){if(_0x433270){_0x31e4de[_0x4312('0x28')]=_0x433270['get']({'plain':!![]});return db[_0x4312('0x77')][_0x4312('0x55')]({'where':{'id':_0x433270[_0x4312('0x78')]}});}return null;})[_0x4312('0x34')](handleEntityNotFound(_0x1631bd,null))[_0x4312('0x34')](function(_0x41ee6f){if(_0x41ee6f){_0x31e4de['interaction']=_0x41ee6f[_0x4312('0x62')]({'plain':!![]});interaction_log['info'](_0x4312('0x79'),_0x56560b[_0x4312('0x60')]['id'],_0x56560b[_0x4312('0x60')][_0x4312('0x38')],_0x56560b[_0x4312('0x60')][_0x4312('0x7a')],_0x31e4de['interaction']['id'],_0x56560b['body']?JSON[_0x4312('0x25')](_0x56560b['body']):_0x4312('0x66'));return respondWithRpcPromise('RejectMessage',_0x4312('0x7b'),_0x31e4de);}return null;})[_0x4312('0x34')](function(_0x166c20){var _0x268fae=_0x4312('0x68')+_0x166c20[_0x4312('0x28')][_0x4312('0x69')];return db[_0x4312('0x6a')][_0x4312('0x3e')](_0x268fae,{'type':db[_0x4312('0x7c')][_0x4312('0x6b')][_0x4312('0x6c')],'raw':!![]})[_0x4312('0x34')](function(_0x566695){return _0x566695;});})['then'](function(_0x4d3128){if(_0x4d3128){_0x31e4de['message'][_0x4312('0x6d')]=_0x4d3128[0x0];if(!_0x56560b[_0x4312('0x57')][_0x4312('0x5f')])return;return db[_0x4312('0x7d')][_0x4312('0x55')]({'where':{'id':_0x56560b['body'][_0x4312('0x5f')],'role':_0x4312('0x61')},'attributes':['id',_0x4312('0x38'),_0x4312('0x6e'),_0x4312('0x6f'),_0x4312('0x70')],'raw':!![]});}return null;})['then'](function(_0x37f603){if(!_0x37f603)return null;_0x31e4de['message']['agent']=_0x37f603;return _0x31e4de;})[_0x4312('0x34')](function(_0x2375ec){if(_0x2375ec){_0x2375ec['message']['interface']=util[_0x4312('0x5d')](_0x4312('0x72'),_0x56560b[_0x4312('0x60')]['name']);_0x2375ec[_0x4312('0x28')][_0x4312('0x73')]=_0x31e4de[_0x4312('0x73')];_0x2375ec[_0x4312('0x28')]['motionChannel']=_0x31e4de['channel'];_0x2375ec[_0x4312('0x28')][_0x4312('0x7e')]='reject';respondWithRpcPromise(_0x4312('0x74'),'EventManager',{'event':'rejectmessage','message':_[_0x4312('0x4a')](_0x31e4de[_0x4312('0x28')],JSON[_0x4312('0x7f')](_0x31e4de[_0x4312('0x63')]['formData']))},client9002);return _0x31e4de;}return null;})['then'](respondWithResult(_0x1631bd,null))[_0x4312('0x29')](handleError(_0x1631bd,null));}; \ No newline at end of file diff --git a/server/api/chatMessage/chatMessage.events.js b/server/api/chatMessage/chatMessage.events.js new file mode 100644 index 0000000..47e6103 --- /dev/null +++ b/server/api/chatMessage/chatMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x692e=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatMessage'];(function(_0x4049a7,_0x883b1a){var _0x42702a=function(_0x44252f){while(--_0x44252f){_0x4049a7['push'](_0x4049a7['shift']());}};_0x42702a(++_0x883b1a);}(_0x692e,0x134));var _0xe692=function(_0x443c2d,_0x23570a){_0x443c2d=_0x443c2d-0x0;var _0x2a7eae=_0x692e[_0x443c2d];return _0x2a7eae;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0xe692('0x0'))['db'][_0xe692('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xe692('0x2')](0x0);var events={'afterCreate':_0xe692('0x3'),'afterUpdate':_0xe692('0x4'),'afterDestroy':_0xe692('0x5')};function emitEvent(_0x4d1797){return function(_0x324432,_0x45472b,_0x27e802){ChatMessageEvents[_0xe692('0x6')](_0x4d1797+':'+_0x324432['id'],_0x324432);ChatMessageEvents[_0xe692('0x6')](_0x4d1797,_0x324432);_0x27e802(null);};}for(var e in events){if(events[_0xe692('0x7')](e)){var event=events[e];ChatMessage[_0xe692('0x8')](e,emitEvent(event));}}module[_0xe692('0x9')]=ChatMessageEvents; \ No newline at end of file diff --git a/server/api/chatMessage/chatMessage.model.js b/server/api/chatMessage/chatMessage.model.js new file mode 100644 index 0000000..4e4049b --- /dev/null +++ b/server/api/chatMessage/chatMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9f1a=['FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','ChatInteraction','ChatInteractionId','then','error','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./chatMessage.attributes','exports','chat_messages','fti_chat_messages','body'];(function(_0x5678b5,_0x1c4aa8){var _0x4c09a5=function(_0x2aa89a){while(--_0x2aa89a){_0x5678b5['push'](_0x5678b5['shift']());}};_0x4c09a5(++_0x1c4aa8);}(_0x9f1a,0x12a));var _0xa9f1=function(_0x4b2c2f,_0x37f8e6){_0x4b2c2f=_0x4b2c2f-0x0;var _0x57d518=_0x9f1a[_0x4b2c2f];return _0x57d518;};'use strict';var _=require(_0xa9f1('0x0'));var util=require(_0xa9f1('0x1'));var logger=require(_0xa9f1('0x2'))(_0xa9f1('0x3'));var moment=require(_0xa9f1('0x4'));var BPromise=require(_0xa9f1('0x5'));var rp=require(_0xa9f1('0x6'));var fs=require('fs');var path=require(_0xa9f1('0x7'));var rimraf=require(_0xa9f1('0x8'));var config=require('../../config/environment');var attributes=require(_0xa9f1('0x9'));module[_0xa9f1('0xa')]=function(_0x2159d0,_0x2084b9){return _0x2159d0['define']('ChatMessage',attributes,{'tableName':_0xa9f1('0xb'),'paranoid':![],'indexes':[{'name':_0xa9f1('0xc'),'fields':[_0xa9f1('0xd')],'type':_0xa9f1('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5b5637,_0x5b0e72,_0x11efb5){var _0x5491fa=_0x2159d0[_0xa9f1('0xf')];var _0x57727a=_0x5b5637[_0xa9f1('0x10')]({'plain':!![]});if(_0x57727a['direction']['toLowerCase']()==='in'||_0x57727a[_0xa9f1('0x11')][_0xa9f1('0x12')]()===_0xa9f1('0x13')&&!_0x57727a['secret']&&!_[_0xa9f1('0x14')](_0x57727a[_0xa9f1('0x15')])){_0x5491fa[_0xa9f1('0x16')]['findOne']({'where':{'id':_0x57727a[_0xa9f1('0x17')]}})[_0xa9f1('0x18')](function(_0x4d4fc4){if(_0x4d4fc4){_0x4d4fc4['update']({'lastMsgAt':_0x57727a['createdAt'],'lastMsgDirection':_0x57727a[_0xa9f1('0x11')]['toLowerCase']()});}})['catch'](function(_0x3753c6){console[_0xa9f1('0x19')](_0x3753c6);});}_0x11efb5();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});}; \ No newline at end of file diff --git a/server/api/chatMessage/chatMessage.rpc.js b/server/api/chatMessage/chatMessage.rpc.js new file mode 100644 index 0000000..cab0e26 --- /dev/null +++ b/server/api/chatMessage/chatMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x39ed=['code','message','request\x20sent','result','ChatMessage','create','body','raw','then','CreateChatMessage','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','register','request','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x39ed,0x155));var _0xd39e=function(_0x512ff7,_0x1725b7){_0x512ff7=_0x512ff7-0x0;var _0xd96f77=_0x39ed[_0x512ff7];return _0xd96f77;};'use strict';var _=require(_0xd39e('0x0'));var util=require(_0xd39e('0x1'));var moment=require(_0xd39e('0x2'));var BPromise=require(_0xd39e('0x3'));var rs=require(_0xd39e('0x4'));var fs=require('fs');var Redis=require(_0xd39e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd39e('0x6'))(_0xd39e('0x7'));var config=require(_0xd39e('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd39e('0x9')]({'port':0x232a});config[_0xd39e('0xa')]=_[_0xd39e('0xb')](config[_0xd39e('0xa')],{'host':_0xd39e('0xc'),'port':0x18eb});var socket=require(_0xd39e('0xd'))(new Redis(config[_0xd39e('0xa')]));require('./chatMessage.socket')[_0xd39e('0xe')](socket);function respondWithRpcPromise(_0x596d5d,_0x56b0c5,_0x290f3a){return new BPromise(function(_0x57de18,_0x19f6ce){return client[_0xd39e('0xf')](_0x596d5d,_0x290f3a)['then'](function(_0x2aaf02){logger[_0xd39e('0x10')](_0xd39e('0x11'),_0x56b0c5,'request\x20sent');logger[_0xd39e('0x12')](_0xd39e('0x13'),_0x56b0c5,'request\x20sent',JSON[_0xd39e('0x14')](_0x2aaf02));if(_0x2aaf02[_0xd39e('0x15')]){if(_0x2aaf02['error'][_0xd39e('0x16')]===0x1f4){logger['error'](_0xd39e('0x11'),_0x56b0c5,_0x2aaf02[_0xd39e('0x15')][_0xd39e('0x17')]);return _0x19f6ce(_0x2aaf02[_0xd39e('0x15')][_0xd39e('0x17')]);}logger[_0xd39e('0x15')]('ChatMessage,\x20%s,\x20%s',_0x56b0c5,_0x2aaf02[_0xd39e('0x15')][_0xd39e('0x17')]);return _0x57de18(_0x2aaf02['error']['message']);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x56b0c5,_0xd39e('0x18'));_0x57de18(_0x2aaf02[_0xd39e('0x19')]['message']);}})['catch'](function(_0x492dc2){logger[_0xd39e('0x15')]('ChatMessage,\x20%s,\x20%s',_0x56b0c5,_0x492dc2);_0x19f6ce(_0x492dc2);});});}exports['CreateChatMessage']=function(_0x1f0a1c){var _0x9427d9=this;return new Promise(function(_0x2c31ee,_0x48ac29){return db[_0xd39e('0x1a')][_0xd39e('0x1b')](_0x1f0a1c[_0xd39e('0x1c')],{'raw':_0x1f0a1c['options']?_0x1f0a1c['options'][_0xd39e('0x1d')]===undefined?!![]:![]:!![]})[_0xd39e('0x1e')](function(_0x47607a){logger['info']('CreateChatMessage',_0x1f0a1c);logger[_0xd39e('0x12')](_0xd39e('0x1f'),_0x1f0a1c,JSON[_0xd39e('0x14')](_0x47607a));_0x2c31ee(_0x47607a);})[_0xd39e('0x20')](function(_0x29c7c5){logger[_0xd39e('0x15')](_0xd39e('0x1f'),_0x29c7c5[_0xd39e('0x17')],_0x1f0a1c);_0x48ac29(_0x9427d9['error'](0x1f4,_0x29c7c5[_0xd39e('0x17')]));});});}; \ No newline at end of file diff --git a/server/api/chatMessage/chatMessage.socket.js b/server/api/chatMessage/chatMessage.socket.js new file mode 100644 index 0000000..b8c1b7a --- /dev/null +++ b/server/api/chatMessage/chatMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf725=['./chatMessage.events','save','remove','update','emit','register','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf725,0x7e));var _0x5f72=function(_0xee020d,_0x50c05c){_0xee020d=_0xee020d-0x0;var _0x4d236f=_0xf725[_0xee020d];return _0x4d236f;};'use strict';var ChatMessageEvents=require(_0x5f72('0x0'));var events=[_0x5f72('0x1'),_0x5f72('0x2'),_0x5f72('0x3')];function createListener(_0x1ab380,_0x2fb465){return function(_0x3f7b69){_0x2fb465[_0x5f72('0x4')](_0x1ab380,_0x3f7b69);};}function removeListener(_0x4200ff,_0x17a5bc){return function(){ChatMessageEvents['removeListener'](_0x4200ff,_0x17a5bc);};}exports[_0x5f72('0x5')]=function(_0x14a92d){for(var _0x3f2ca7=0x0,_0x193393=events[_0x5f72('0x6')];_0x3f2ca7<_0x193393;_0x3f2ca7++){var _0x4961d1=events[_0x3f2ca7];var _0x158aa3=createListener('chatMessage:'+_0x4961d1,_0x14a92d);ChatMessageEvents['on'](_0x4961d1,_0x158aa3);}}; \ No newline at end of file diff --git a/server/api/chatMessage/index.js b/server/api/chatMessage/index.js new file mode 100644 index 0000000..980d782 --- /dev/null +++ b/server/api/chatMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x35b6=['put','/:id/accept','accept','reject','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','chat','chatmessage:create'];(function(_0x31bf4a,_0x51eb5f){var _0x2265ec=function(_0x482a5a){while(--_0x482a5a){_0x31bf4a['push'](_0x31bf4a['shift']());}};_0x2265ec(++_0x51eb5f);}(_0x35b6,0xae));var _0x635b=function(_0x52076e,_0x53d6dd){_0x52076e=_0x52076e-0x0;var _0xc00533=_0x35b6[_0x52076e];return _0xc00533;};'use strict';var multer=require(_0x635b('0x0'));var util=require('util');var path=require(_0x635b('0x1'));var timeout=require(_0x635b('0x2'));var express=require('express');var router=express[_0x635b('0x3')]();var fs_extra=require(_0x635b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x635b('0x5'));var config=require(_0x635b('0x6'));var controller=require(_0x635b('0x7'));router[_0x635b('0x8')]('/',auth[_0x635b('0x9')](),controller[_0x635b('0xa')]);router[_0x635b('0x8')](_0x635b('0xb'),auth[_0x635b('0x9')](),controller[_0x635b('0xc')]);router['get'](_0x635b('0xd'),auth['isAuthenticated'](),controller[_0x635b('0xe')]);router[_0x635b('0xf')]('/',auth[_0x635b('0x9')](),interaction['tracked'](_0x635b('0x10'),_0x635b('0x11')),controller['create']);router[_0x635b('0x12')](_0x635b('0xd'),controller['update']);router[_0x635b('0x12')](_0x635b('0x13'),auth['isAuthenticated'](),controller[_0x635b('0x14')]);router[_0x635b('0x12')]('/:id/reject',auth[_0x635b('0x9')](),controller[_0x635b('0x15')]);router['delete'](_0x635b('0xd'),auth[_0x635b('0x9')](),controller[_0x635b('0x16')]);module[_0x635b('0x17')]=router; \ No newline at end of file diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js b/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js new file mode 100644 index 0000000..367beb9 --- /dev/null +++ b/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x1622f9,_0x506fcc){var _0x37087f=function(_0x2cc418){while(--_0x2cc418){_0x1622f9['push'](_0x1622f9['shift']());}};_0x37087f(++_0x506fcc);}(_0xdb28,0x106));var _0x8db2=function(_0x850c46,_0x1bdbf1){_0x850c46=_0x850c46-0x0;var _0x225ac6=_0xdb28[_0x850c46];return _0x225ac6;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.controller.js b/server/api/chatOfflineMessage/chatOfflineMessage.controller.js new file mode 100644 index 0000000..c0130c6 --- /dev/null +++ b/server/api/chatOfflineMessage/chatOfflineMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0x7a54,0x106));var _0x47a5=function(_0x90e71b,_0x3ef8e2){_0x90e71b=_0x90e71b-0x0;var _0xb8a76a=_0x7a54[_0x90e71b];return _0xb8a76a;};'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 diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.events.js b/server/api/chatOfflineMessage/chatOfflineMessage.events.js new file mode 100644 index 0000000..6e5823d --- /dev/null +++ b/server/api/chatOfflineMessage/chatOfflineMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcc21=['../../mysqldb','setMaxListeners','save','update','remove','emit','exports','events'];(function(_0x4c9447,_0xc9ab4b){var _0x5b586e=function(_0x435f7c){while(--_0x435f7c){_0x4c9447['push'](_0x4c9447['shift']());}};_0x5b586e(++_0xc9ab4b);}(_0xcc21,0xc7));var _0x1cc2=function(_0x18c3ca,_0x3c800f){_0x18c3ca=_0x18c3ca-0x0;var _0xa9521a=_0xcc21[_0x18c3ca];return _0xa9521a;};'use strict';var EventEmitter=require(_0x1cc2('0x0'));var ChatOfflineMessage=require(_0x1cc2('0x1'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x1cc2('0x2')](0x0);var events={'afterCreate':_0x1cc2('0x3'),'afterUpdate':_0x1cc2('0x4'),'afterDestroy':_0x1cc2('0x5')};function emitEvent(_0x46a5a0){return function(_0x538ce5,_0x3e22b1,_0x9ef70f){ChatOfflineMessageEvents[_0x1cc2('0x6')](_0x46a5a0+':'+_0x538ce5['id'],_0x538ce5);ChatOfflineMessageEvents[_0x1cc2('0x6')](_0x46a5a0,_0x538ce5);_0x9ef70f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage['hook'](e,emitEvent(event));}}module[_0x1cc2('0x7')]=ChatOfflineMessageEvents; \ No newline at end of file diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.model.js b/server/api/chatOfflineMessage/chatOfflineMessage.model.js new file mode 100644 index 0000000..d18a650 --- /dev/null +++ b/server/api/chatOfflineMessage/chatOfflineMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xadac=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x2521c0,_0x481dbf){var _0x1f22b4=function(_0x1e88d9){while(--_0x1e88d9){_0x2521c0['push'](_0x2521c0['shift']());}};_0x1f22b4(++_0x481dbf);}(_0xadac,0x93));var _0xcada=function(_0x4257b6,_0x2348c7){_0x4257b6=_0x4257b6-0x0;var _0x4ad68c=_0xadac[_0x4257b6];return _0x4ad68c;};'use strict';var attributes=require(_0xcada('0x0'));module[_0xcada('0x1')]=function(_0x4a7e83){return _0x4a7e83[_0xcada('0x2')](_0xcada('0x3'),attributes,{'tableName':_0xcada('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcada('0x5'),'collate':_0xcada('0x6')});}; \ No newline at end of file diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js b/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js new file mode 100644 index 0000000..4dfb84c --- /dev/null +++ b/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4933=['info','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','code','error','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then'];(function(_0x7b7606,_0x559570){var _0x1a5edd=function(_0x5cd0df){while(--_0x5cd0df){_0x7b7606['push'](_0x7b7606['shift']());}};_0x1a5edd(++_0x559570);}(_0x4933,0xc2));var _0x3493=function(_0x258919,_0x1754e6){_0x258919=_0x258919-0x0;var _0xfbd68b=_0x4933[_0x258919];return _0xfbd68b;};'use strict';var _=require(_0x3493('0x0'));var util=require(_0x3493('0x1'));var moment=require(_0x3493('0x2'));var BPromise=require(_0x3493('0x3'));var rs=require(_0x3493('0x4'));var fs=require('fs');var Redis=require(_0x3493('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3493('0x6'));var logger=require(_0x3493('0x7'))('rpc');var config=require(_0x3493('0x8'));var jayson=require(_0x3493('0x9'));var client=jayson['client'][_0x3493('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47f342,_0x433fa4,_0x37b013){return new BPromise(function(_0xd5082,_0x2979db){return client[_0x3493('0xb')](_0x47f342,_0x37b013)[_0x3493('0xc')](function(_0x5934e4){logger[_0x3493('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0x433fa4,_0x3493('0xe'));logger[_0x3493('0xf')](_0x3493('0x10'),_0x433fa4,_0x3493('0xe'),JSON['stringify'](_0x5934e4));if(_0x5934e4['error']){if(_0x5934e4['error'][_0x3493('0x11')]===0x1f4){logger[_0x3493('0x12')](_0x3493('0x13'),_0x433fa4,_0x5934e4[_0x3493('0x12')][_0x3493('0x14')]);return _0x2979db(_0x5934e4[_0x3493('0x12')][_0x3493('0x14')]);}logger[_0x3493('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x433fa4,_0x5934e4[_0x3493('0x12')][_0x3493('0x14')]);return _0xd5082(_0x5934e4[_0x3493('0x12')][_0x3493('0x14')]);}else{logger[_0x3493('0xd')](_0x3493('0x13'),_0x433fa4,'request\x20sent');_0xd5082(_0x5934e4[_0x3493('0x15')][_0x3493('0x14')]);}})[_0x3493('0x16')](function(_0x1c941e){logger[_0x3493('0x12')](_0x3493('0x13'),_0x433fa4,_0x1c941e);_0x2979db(_0x1c941e);});});} \ No newline at end of file diff --git a/server/api/chatOfflineMessage/index.js b/server/api/chatOfflineMessage/index.js new file mode 100644 index 0000000..d022918 --- /dev/null +++ b/server/api/chatOfflineMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcfbd=['get','describe','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','isAuthenticated','index'];(function(_0x3c7081,_0x2082c2){var _0x31ce9c=function(_0x44c936){while(--_0x44c936){_0x3c7081['push'](_0x3c7081['shift']());}};_0x31ce9c(++_0x2082c2);}(_0xcfbd,0x1d6));var _0xdcfb=function(_0x247452,_0x20594f){_0x247452=_0x247452-0x0;var _0x26469f=_0xcfbd[_0x247452];return _0x26469f;};'use strict';var multer=require(_0xdcfb('0x0'));var util=require('util');var path=require(_0xdcfb('0x1'));var timeout=require(_0xdcfb('0x2'));var express=require(_0xdcfb('0x3'));var router=express['Router']();var fs_extra=require(_0xdcfb('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdcfb('0x5'));var config=require(_0xdcfb('0x6'));var controller=require(_0xdcfb('0x7'));router['get']('/',auth[_0xdcfb('0x8')](),controller[_0xdcfb('0x9')]);router[_0xdcfb('0xa')]('/describe',auth[_0xdcfb('0x8')](),controller[_0xdcfb('0xb')]);router[_0xdcfb('0xa')](_0xdcfb('0xc'),auth[_0xdcfb('0x8')](),controller[_0xdcfb('0xd')]);router[_0xdcfb('0xe')]('/',auth[_0xdcfb('0x8')](),controller[_0xdcfb('0xf')]);router[_0xdcfb('0x10')]('/:id',auth[_0xdcfb('0x8')](),controller[_0xdcfb('0x11')]);router[_0xdcfb('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xdcfb('0x13')]=router; \ No newline at end of file diff --git a/server/api/chatProactiveAction/chatProactiveAction.attributes.js b/server/api/chatProactiveAction/chatProactiveAction.attributes.js new file mode 100644 index 0000000..0a3129d --- /dev/null +++ b/server/api/chatProactiveAction/chatProactiveAction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1d33=['exports','STRING','mouseOver','timeout','INTEGER','sequelize'];(function(_0x44b827,_0x1bb1aa){var _0x527342=function(_0x481338){while(--_0x481338){_0x44b827['push'](_0x44b827['shift']());}};_0x527342(++_0x1bb1aa);}(_0x1d33,0x167));var _0x31d3=function(_0x3d7d92,_0x1c27f0){_0x3d7d92=_0x3d7d92-0x0;var _0x3c2300=_0x1d33[_0x3d7d92];return _0x3c2300;};'use strict';var Sequelize=require(_0x31d3('0x0'));module[_0x31d3('0x1')]={'name':{'type':Sequelize[_0x31d3('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x31d3('0x3'),_0x31d3('0x4')),'defaultValue':_0x31d3('0x3')},'selector':{'type':Sequelize[_0x31d3('0x2')]},'timeout':{'type':Sequelize[_0x31d3('0x5')]}}; \ No newline at end of file diff --git a/server/api/chatProactiveAction/chatProactiveAction.controller.js b/server/api/chatProactiveAction/chatProactiveAction.controller.js new file mode 100644 index 0000000..4bbc081 --- /dev/null +++ b/server/api/chatProactiveAction/chatProactiveAction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa4dc=['bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','show','model','keys','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','merge','ChatProactiveAction','find','catch','create','body','params','eml-format','rimraf','request-promise','moment'];(function(_0x32f5d9,_0x4fd417){var _0x22ef8d=function(_0x5c35b3){while(--_0x5c35b3){_0x32f5d9['push'](_0x32f5d9['shift']());}};_0x22ef8d(++_0x4fd417);}(_0xa4dc,0x16a));var _0xca4d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xa4dc[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xca4d('0x0'));var rimraf=require(_0xca4d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xca4d('0x2'));var moment=require(_0xca4d('0x3'));var BPromise=require(_0xca4d('0x4'));var Mustache=require(_0xca4d('0x5'));var util=require(_0xca4d('0x6'));var path=require('path');var sox=require(_0xca4d('0x7'));var csv=require(_0xca4d('0x8'));var ejs=require(_0xca4d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xca4d('0xa'));var squel=require('squel');var crypto=require(_0xca4d('0xb'));var jsforce=require(_0xca4d('0xc'));var deskjs=require(_0xca4d('0xd'));var toCsv=require(_0xca4d('0x8'));var querystring=require('querystring');var Papa=require(_0xca4d('0xe'));var Redis=require(_0xca4d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xca4d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xca4d('0x11'));var logger=require(_0xca4d('0x12'))(_0xca4d('0x13'));var utils=require(_0xca4d('0x14'));var config=require(_0xca4d('0x15'));var licenseUtil=require(_0xca4d('0x16'));var db=require(_0xca4d('0x17'))['db'];function respondWithStatusCode(_0x2009d4,_0x5e5163){_0x5e5163=_0x5e5163||0xcc;return function(_0x3fc3ab){if(_0x3fc3ab){return _0x2009d4['sendStatus'](_0x5e5163);}return _0x2009d4[_0xca4d('0x18')](_0x5e5163)[_0xca4d('0x19')]();};}function respondWithResult(_0x2e86ae,_0x4ab15d){_0x4ab15d=_0x4ab15d||0xc8;return function(_0x47285f){if(_0x47285f){return _0x2e86ae['status'](_0x4ab15d)[_0xca4d('0x1a')](_0x47285f);}};}function respondWithFilteredResult(_0x3dddc8,_0x33a7d6){return function(_0x334ab4){if(_0x334ab4){var _0x40e945=typeof _0x33a7d6[_0xca4d('0x1b')]===_0xca4d('0x1c')&&typeof _0x33a7d6['limit']===_0xca4d('0x1c');var _0x20ed84=_0x334ab4[_0xca4d('0x1d')];var _0x388ff7=_0x40e945?0x0:_0x33a7d6[_0xca4d('0x1b')];var _0x395319=_0x40e945?_0x334ab4[_0xca4d('0x1d')]:_0x33a7d6[_0xca4d('0x1b')]+_0x33a7d6[_0xca4d('0x1e')];var _0x5738b6;if(_0x395319>=_0x20ed84){_0x395319=_0x20ed84;_0x5738b6=0xc8;}else{_0x5738b6=0xce;}_0x3dddc8['status'](_0x5738b6);return _0x3dddc8[_0xca4d('0x1f')]('Content-Range',_0x388ff7+'-'+_0x395319+'/'+_0x20ed84)[_0xca4d('0x1a')](_0x334ab4);}return null;};}function patchUpdates(_0x555f0e){return function(_0x375efa){try{jsonpatch[_0xca4d('0x20')](_0x375efa,_0x555f0e,!![]);}catch(_0x35295c){return BPromise[_0xca4d('0x21')](_0x35295c);}return _0x375efa[_0xca4d('0x22')]();};}function saveUpdates(_0x4f692b,_0x58e346){return function(_0xe29bfc){if(_0xe29bfc){return _0xe29bfc[_0xca4d('0x23')](_0x4f692b)[_0xca4d('0x24')](function(_0x390634){return _0x390634;});}return null;};}function removeEntity(_0x5ef722,_0x2515fc){return function(_0x4d7f1a){if(_0x4d7f1a){return _0x4d7f1a[_0xca4d('0x25')]()['then'](function(){_0x5ef722[_0xca4d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1763f3,_0x3ffe67){return function(_0x3e0210){if(!_0x3e0210){_0x1763f3[_0xca4d('0x26')](0x194);}return _0x3e0210;};}function handleError(_0x57a079,_0x327006){_0x327006=_0x327006||0x1f4;return function(_0xfea1c5){logger[_0xca4d('0x27')](_0xfea1c5[_0xca4d('0x28')]);if(_0xfea1c5[_0xca4d('0x29')]){delete _0xfea1c5[_0xca4d('0x29')];}_0x57a079[_0xca4d('0x18')](_0x327006)[_0xca4d('0x2a')](_0xfea1c5);};}exports[_0xca4d('0x2b')]=function(_0x37d563,_0xfacacb){var _0x319dea={'raw':!![],'where':{'id':_0x37d563['params']['id']}},_0x522be8={};_0x522be8[_0xca4d('0x2c')]=_[_0xca4d('0x2d')](db['ChatProactiveAction'][_0xca4d('0x2e')]);_0x522be8['query']=_[_0xca4d('0x2d')](_0x37d563[_0xca4d('0x2f')]);_0x522be8['filters']=_[_0xca4d('0x30')](_0x522be8[_0xca4d('0x2c')],_0x522be8[_0xca4d('0x2f')]);_0x319dea[_0xca4d('0x31')]=_['intersection'](_0x522be8[_0xca4d('0x2c')],qs[_0xca4d('0x32')](_0x37d563[_0xca4d('0x2f')][_0xca4d('0x32')]));_0x319dea['attributes']=_0x319dea[_0xca4d('0x31')][_0xca4d('0x33')]?_0x319dea[_0xca4d('0x31')]:_0x522be8[_0xca4d('0x2c')];if(_0x37d563['query'][_0xca4d('0x34')]){_0x319dea[_0xca4d('0x35')]=[{'all':!![]}];}_0x319dea=_[_0xca4d('0x36')]({},_0x319dea,_0x37d563['options']);return db[_0xca4d('0x37')][_0xca4d('0x38')](_0x319dea)[_0xca4d('0x24')](handleEntityNotFound(_0xfacacb,null))[_0xca4d('0x24')](respondWithResult(_0xfacacb,null))[_0xca4d('0x39')](handleError(_0xfacacb,null));};exports['create']=function(_0x1659c0,_0x3f673c){return db[_0xca4d('0x37')][_0xca4d('0x3a')](_0x1659c0[_0xca4d('0x3b')],{})['then'](respondWithResult(_0x3f673c,0xc9))[_0xca4d('0x39')](handleError(_0x3f673c,null));};exports[_0xca4d('0x23')]=function(_0x1710c5,_0x3afb53){if(_0x1710c5['body']['id']){delete _0x1710c5['body']['id'];}return db[_0xca4d('0x37')][_0xca4d('0x38')]({'where':{'id':_0x1710c5['params']['id']}})[_0xca4d('0x24')](handleEntityNotFound(_0x3afb53,null))['then'](saveUpdates(_0x1710c5[_0xca4d('0x3b')],null))['then'](respondWithResult(_0x3afb53,null))[_0xca4d('0x39')](handleError(_0x3afb53,null));};exports['destroy']=function(_0x173f09,_0x2e7dd7){return db[_0xca4d('0x37')][_0xca4d('0x38')]({'where':{'id':_0x173f09[_0xca4d('0x3c')]['id']}})['then'](handleEntityNotFound(_0x2e7dd7,null))[_0xca4d('0x24')](removeEntity(_0x2e7dd7,null))[_0xca4d('0x39')](handleError(_0x2e7dd7,null));}; \ No newline at end of file diff --git a/server/api/chatProactiveAction/chatProactiveAction.model.js b/server/api/chatProactiveAction/chatProactiveAction.model.js new file mode 100644 index 0000000..7e6c7eb --- /dev/null +++ b/server/api/chatProactiveAction/chatProactiveAction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcc9e=['request-promise','path','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','util','../../config/logger','api','moment','bluebird'];(function(_0x2a306f,_0x3e416f){var _0x319373=function(_0x520f2b){while(--_0x520f2b){_0x2a306f['push'](_0x2a306f['shift']());}};_0x319373(++_0x3e416f);}(_0xcc9e,0x119));var _0xecc9=function(_0xe608b8,_0x35ee07){_0xe608b8=_0xe608b8-0x0;var _0x217aa1=_0xcc9e[_0xe608b8];return _0x217aa1;};'use strict';var _=require('lodash');var util=require(_0xecc9('0x0'));var logger=require(_0xecc9('0x1'))(_0xecc9('0x2'));var moment=require(_0xecc9('0x3'));var BPromise=require(_0xecc9('0x4'));var rp=require(_0xecc9('0x5'));var fs=require('fs');var path=require(_0xecc9('0x6'));var rimraf=require('rimraf');var config=require(_0xecc9('0x7'));var attributes=require(_0xecc9('0x8'));module[_0xecc9('0x9')]=function(_0x2f122a,_0x4303f6){return _0x2f122a[_0xecc9('0xa')](_0xecc9('0xb'),attributes,{'tableName':_0xecc9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/chatProactiveAction/chatProactiveAction.rpc.js b/server/api/chatProactiveAction/chatProactiveAction.rpc.js new file mode 100644 index 0000000..50372e5 --- /dev/null +++ b/server/api/chatProactiveAction/chatProactiveAction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd909=['info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x36befb,_0x4ed2f5){var _0x2b0373=function(_0x20a4ce){while(--_0x20a4ce){_0x36befb['push'](_0x36befb['shift']());}};_0x2b0373(++_0x4ed2f5);}(_0xd909,0x1c1));var _0x9d90=function(_0x226175,_0x1b78a0){_0x226175=_0x226175-0x0;var _0x21d7e2=_0xd909[_0x226175];return _0x21d7e2;};'use strict';var _=require('lodash');var util=require(_0x9d90('0x0'));var moment=require(_0x9d90('0x1'));var BPromise=require(_0x9d90('0x2'));var rs=require(_0x9d90('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d90('0x4'))['db'];var utils=require(_0x9d90('0x5'));var logger=require(_0x9d90('0x6'))(_0x9d90('0x7'));var config=require(_0x9d90('0x8'));var jayson=require(_0x9d90('0x9'));var client=jayson[_0x9d90('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10930a,_0x1036d5,_0x36ff88){return new BPromise(function(_0x19d78a,_0x3a815b){return client[_0x9d90('0xb')](_0x10930a,_0x36ff88)[_0x9d90('0xc')](function(_0x115e66){logger[_0x9d90('0xd')](_0x9d90('0xe'),_0x1036d5,_0x9d90('0xf'));logger['debug'](_0x9d90('0x10'),_0x1036d5,_0x9d90('0xf'),JSON['stringify'](_0x115e66));if(_0x115e66[_0x9d90('0x11')]){if(_0x115e66['error']['code']===0x1f4){logger[_0x9d90('0x11')](_0x9d90('0xe'),_0x1036d5,_0x115e66[_0x9d90('0x11')][_0x9d90('0x12')]);return _0x3a815b(_0x115e66[_0x9d90('0x11')]['message']);}logger['error'](_0x9d90('0xe'),_0x1036d5,_0x115e66[_0x9d90('0x11')][_0x9d90('0x12')]);return _0x19d78a(_0x115e66[_0x9d90('0x11')][_0x9d90('0x12')]);}else{logger['info'](_0x9d90('0xe'),_0x1036d5,_0x9d90('0xf'));_0x19d78a(_0x115e66[_0x9d90('0x13')][_0x9d90('0x12')]);}})[_0x9d90('0x14')](function(_0x4007d0){logger[_0x9d90('0x11')](_0x9d90('0xe'),_0x1036d5,_0x4007d0);_0x3a815b(_0x4007d0);});});} \ No newline at end of file diff --git a/server/api/chatProactiveAction/index.js b/server/api/chatProactiveAction/index.js new file mode 100644 index 0000000..2e8b7e7 --- /dev/null +++ b/server/api/chatProactiveAction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2d17=['connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','show','create','put','update','delete','destroy','exports','multer','util'];(function(_0x31bd20,_0x11de2f){var _0x5f2017=function(_0x3f65a4){while(--_0x3f65a4){_0x31bd20['push'](_0x31bd20['shift']());}};_0x5f2017(++_0x11de2f);}(_0x2d17,0x17e));var _0x72d1=function(_0xe361cf,_0x11db2f){_0xe361cf=_0xe361cf-0x0;var _0x2648b9=_0x2d17[_0xe361cf];return _0x2648b9;};'use strict';var multer=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var path=require('path');var timeout=require(_0x72d1('0x2'));var express=require(_0x72d1('0x3'));var router=express['Router']();var fs_extra=require(_0x72d1('0x4'));var auth=require(_0x72d1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x72d1('0x6'));var controller=require('./chatProactiveAction.controller');router[_0x72d1('0x7')]('/:id',auth[_0x72d1('0x8')](),controller[_0x72d1('0x9')]);router['post']('/',auth[_0x72d1('0x8')](),controller[_0x72d1('0xa')]);router[_0x72d1('0xb')]('/:id',auth[_0x72d1('0x8')](),controller[_0x72d1('0xc')]);router[_0x72d1('0xd')]('/:id',auth[_0x72d1('0x8')](),controller[_0x72d1('0xe')]);module[_0x72d1('0xf')]=router; \ No newline at end of file diff --git a/server/api/chatQueue/chatQueue.attributes.js b/server/api/chatQueue/chatQueue.attributes.js new file mode 100644 index 0000000..ae1aa96 --- /dev/null +++ b/server/api/chatQueue/chatQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf80a=['ENUM','rrmemory','beepall','sequelize','exports','STRING','name'];(function(_0x10c95c,_0x912d30){var _0x598320=function(_0x2fd065){while(--_0x2fd065){_0x10c95c['push'](_0x10c95c['shift']());}};_0x598320(++_0x912d30);}(_0xf80a,0x6c));var _0xaf80=function(_0x29ff42,_0xa8257e){_0x29ff42=_0x29ff42-0x0;var _0x4ff720=_0xf80a[_0x29ff42];return _0x4ff720;};'use strict';var Sequelize=require(_0xaf80('0x0'));module[_0xaf80('0x1')]={'name':{'type':Sequelize[_0xaf80('0x2')],'unique':_0xaf80('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xaf80('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xaf80('0x4')](_0xaf80('0x5'),_0xaf80('0x6'),'roundrobin')}}; \ No newline at end of file diff --git a/server/api/chatQueue/chatQueue.controller.js b/server/api/chatQueue/chatQueue.controller.js new file mode 100644 index 0000000..8a061a1 --- /dev/null +++ b/server/api/chatQueue/chatQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc0a7=['./chatQueue.socket','register','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','ChatQueues','UserProfileResource','stack','name','send','map','ChatQueue','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','show','params','length','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserChatQueue','User','findAndCountAll','agent','chatPause','createdAt','rows','format','%s/%s','SIP','updatedAt','getTeams','hasOwnProperty','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','each','findOrCreate','forEach','emit','userChatQueue:save','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','sequelize','toString','QueryTypes','every','includes','union','compact','removeTeams','isEmpty','removeAgents','userChatQueue:remove','addAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','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','defaults','redis','localhost','socket.io-emitter'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xc0a7,0x1ba));var _0x7c0a=function(_0x1d378a,_0x1a7269){_0x1d378a=_0x1d378a-0x0;var _0x472f87=_0xc0a7[_0x1d378a];return _0x472f87;};'use strict';var emlformat=require(_0x7c0a('0x0'));var rimraf=require(_0x7c0a('0x1'));var zipdir=require(_0x7c0a('0x2'));var jsonpatch=require(_0x7c0a('0x3'));var rp=require(_0x7c0a('0x4'));var moment=require(_0x7c0a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7c0a('0x6'));var util=require(_0x7c0a('0x7'));var path=require(_0x7c0a('0x8'));var sox=require(_0x7c0a('0x9'));var csv=require(_0x7c0a('0xa'));var ejs=require(_0x7c0a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7c0a('0xc'));var squel=require(_0x7c0a('0xd'));var crypto=require(_0x7c0a('0xe'));var jsforce=require(_0x7c0a('0xf'));var deskjs=require(_0x7c0a('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7c0a('0x11'));var Redis=require(_0x7c0a('0x12'));var authService=require(_0x7c0a('0x13'));var qs=require(_0x7c0a('0x14'));var as=require(_0x7c0a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7c0a('0x16'))(_0x7c0a('0x17'));var utils=require(_0x7c0a('0x18'));var config=require(_0x7c0a('0x19'));var licenseUtil=require(_0x7c0a('0x1a'));var db=require(_0x7c0a('0x1b'))['db'];config['redis']=_[_0x7c0a('0x1c')](config[_0x7c0a('0x1d')],{'host':_0x7c0a('0x1e'),'port':0x18eb});var socket=require(_0x7c0a('0x1f'))(new Redis(config[_0x7c0a('0x1d')]));require(_0x7c0a('0x20'))[_0x7c0a('0x21')](socket);var jayson=require(_0x7c0a('0x22'));var client=jayson[_0x7c0a('0x23')][_0x7c0a('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x88933f,_0x5899e6,_0x16a217,_0x48b0f0){return new BPromise(function(_0x56d9db,_0x3a4eb7){var _0x430684=_0x48b0f0||client;return _0x430684[_0x7c0a('0x25')](_0x88933f,_0x16a217)[_0x7c0a('0x26')](function(_0x17310c){logger[_0x7c0a('0x27')](_0x7c0a('0x28'),_0x5899e6,'request\x20sent');logger[_0x7c0a('0x29')](_0x7c0a('0x2a'),_0x5899e6,_0x7c0a('0x2b'),JSON['stringify'](_0x17310c));if(_0x17310c[_0x7c0a('0x2c')]){if(_0x17310c[_0x7c0a('0x2c')][_0x7c0a('0x2d')]===0x1f4){logger['error'](_0x7c0a('0x28'),_0x5899e6,_0x17310c[_0x7c0a('0x2c')][_0x7c0a('0x2e')]);return _0x3a4eb7(_0x17310c['error'][_0x7c0a('0x2e')]);}logger[_0x7c0a('0x2c')](_0x7c0a('0x28'),_0x5899e6,_0x17310c[_0x7c0a('0x2c')][_0x7c0a('0x2e')]);return _0x56d9db(_0x17310c[_0x7c0a('0x2c')][_0x7c0a('0x2e')]);}else{logger[_0x7c0a('0x27')](_0x7c0a('0x28'),_0x5899e6,_0x7c0a('0x2b'));_0x56d9db(_0x17310c[_0x7c0a('0x2f')][_0x7c0a('0x2e')]);}})[_0x7c0a('0x30')](function(_0x9f2614){logger[_0x7c0a('0x2c')]('ChatQueue,\x20%s,\x20%s',_0x5899e6,_0x9f2614);_0x3a4eb7(_0x9f2614);});});}function respondWithStatusCode(_0x4eb733,_0x5bb549){_0x5bb549=_0x5bb549||0xcc;return function(_0x129d13){if(_0x129d13){return _0x4eb733[_0x7c0a('0x31')](_0x5bb549);}return _0x4eb733[_0x7c0a('0x32')](_0x5bb549)[_0x7c0a('0x33')]();};}function respondWithResult(_0x2df6f5,_0x55b4e3){_0x55b4e3=_0x55b4e3||0xc8;return function(_0x5bcee7){if(_0x5bcee7){return _0x2df6f5[_0x7c0a('0x32')](_0x55b4e3)[_0x7c0a('0x34')](_0x5bcee7);}};}function respondWithFilteredResult(_0x4cf449,_0x445bdd){return function(_0x5399fd){if(_0x5399fd){var _0x1640ca=typeof _0x445bdd[_0x7c0a('0x35')]===_0x7c0a('0x36')&&typeof _0x445bdd[_0x7c0a('0x37')]===_0x7c0a('0x36');var _0x2e1cb5=_0x5399fd[_0x7c0a('0x38')];var _0x43190c=_0x1640ca?0x0:_0x445bdd[_0x7c0a('0x35')];var _0x2ead92=_0x1640ca?_0x5399fd[_0x7c0a('0x38')]:_0x445bdd[_0x7c0a('0x35')]+_0x445bdd[_0x7c0a('0x37')];var _0x28c25c;if(_0x2ead92>=_0x2e1cb5){_0x2ead92=_0x2e1cb5;_0x28c25c=0xc8;}else{_0x28c25c=0xce;}_0x4cf449['status'](_0x28c25c);return _0x4cf449[_0x7c0a('0x39')](_0x7c0a('0x3a'),_0x43190c+'-'+_0x2ead92+'/'+_0x2e1cb5)['json'](_0x5399fd);}return null;};}function patchUpdates(_0x1d5223){return function(_0x346d46){try{jsonpatch[_0x7c0a('0x3b')](_0x346d46,_0x1d5223,!![]);}catch(_0x211f4d){return BPromise[_0x7c0a('0x3c')](_0x211f4d);}return _0x346d46[_0x7c0a('0x3d')]();};}function saveUpdates(_0x313a36,_0x32da89){return function(_0x2ef130){if(_0x2ef130){return _0x2ef130[_0x7c0a('0x3e')](_0x313a36)[_0x7c0a('0x26')](function(_0x5a4fc6){return _0x5a4fc6;});}return null;};}function removeEntity(_0x118faa,_0x38a919){return function(_0x14113a){if(_0x14113a){return _0x14113a[_0x7c0a('0x3f')]()[_0x7c0a('0x26')](function(){var _0xb6d835=_0x14113a[_0x7c0a('0x40')]({'plain':!![]});var _0x2a3e6d=_0x7c0a('0x41');return db[_0x7c0a('0x42')][_0x7c0a('0x3f')]({'where':{'type':_0x2a3e6d,'resourceId':_0xb6d835['id']}})[_0x7c0a('0x26')](function(){return _0x14113a;});})[_0x7c0a('0x26')](function(){_0x118faa['status'](0xcc)[_0x7c0a('0x33')]();});}};}function handleEntityNotFound(_0x288525,_0x385a79){return function(_0x38a09f){if(!_0x38a09f){_0x288525['sendStatus'](0x194);}return _0x38a09f;};}function handleError(_0x518412,_0x1d2323){_0x1d2323=_0x1d2323||0x1f4;return function(_0x385952){logger[_0x7c0a('0x2c')](_0x385952[_0x7c0a('0x43')]);if(_0x385952[_0x7c0a('0x44')]){delete _0x385952[_0x7c0a('0x44')];}_0x518412[_0x7c0a('0x32')](_0x1d2323)[_0x7c0a('0x45')](_0x385952);};}exports['index']=function(_0x2cbb45,_0x35392d){var _0x11d22c={},_0x2fcbfb={},_0x1cf8ba={'count':0x0,'rows':[]};var _0x113b35=_[_0x7c0a('0x46')](db[_0x7c0a('0x47')][_0x7c0a('0x48')],function(_0x1464c2){return{'name':_0x1464c2[_0x7c0a('0x49')],'type':_0x1464c2[_0x7c0a('0x4a')][_0x7c0a('0x4b')]};});_0x2fcbfb['model']=_['map'](_0x113b35,_0x7c0a('0x44'));_0x2fcbfb[_0x7c0a('0x4c')]=_[_0x7c0a('0x4d')](_0x2cbb45[_0x7c0a('0x4c')]);_0x2fcbfb[_0x7c0a('0x4e')]=_[_0x7c0a('0x4f')](_0x2fcbfb['model'],_0x2fcbfb['query']);_0x11d22c['attributes']=_['intersection'](_0x2fcbfb[_0x7c0a('0x50')],qs[_0x7c0a('0x51')](_0x2cbb45[_0x7c0a('0x4c')][_0x7c0a('0x51')]));_0x11d22c[_0x7c0a('0x52')]=_0x11d22c[_0x7c0a('0x52')]['length']?_0x11d22c[_0x7c0a('0x52')]:_0x2fcbfb[_0x7c0a('0x50')];if(!_0x2cbb45[_0x7c0a('0x4c')]['hasOwnProperty'](_0x7c0a('0x53'))){_0x11d22c['limit']=qs[_0x7c0a('0x37')](_0x2cbb45[_0x7c0a('0x4c')][_0x7c0a('0x37')]);_0x11d22c[_0x7c0a('0x35')]=qs[_0x7c0a('0x35')](_0x2cbb45[_0x7c0a('0x4c')][_0x7c0a('0x35')]);}_0x11d22c[_0x7c0a('0x54')]=qs[_0x7c0a('0x55')](_0x2cbb45[_0x7c0a('0x4c')][_0x7c0a('0x55')]);_0x11d22c[_0x7c0a('0x56')]=qs[_0x7c0a('0x4e')](_[_0x7c0a('0x57')](_0x2cbb45[_0x7c0a('0x4c')],_0x2fcbfb[_0x7c0a('0x4e')]),_0x113b35);if(_0x2cbb45[_0x7c0a('0x4c')][_0x7c0a('0x58')]){_0x11d22c[_0x7c0a('0x56')]=_[_0x7c0a('0x59')](_0x11d22c[_0x7c0a('0x56')],{'$or':_[_0x7c0a('0x46')](_0x113b35,function(_0x101ae1){if(_0x101ae1[_0x7c0a('0x4a')]!==_0x7c0a('0x5a')){var _0x27d473={};_0x27d473[_0x101ae1[_0x7c0a('0x44')]]={'$like':'%'+_0x2cbb45[_0x7c0a('0x4c')]['filter']+'%'};return _0x27d473;}})});}_0x11d22c=_[_0x7c0a('0x59')]({},_0x11d22c,_0x2cbb45[_0x7c0a('0x5b')]);var _0x1975c1={'where':_0x11d22c[_0x7c0a('0x56')]};return db['ChatQueue']['count'](_0x1975c1)['then'](function(_0x52b7cd){_0x1cf8ba[_0x7c0a('0x38')]=_0x52b7cd;if(_0x2cbb45[_0x7c0a('0x4c')]['includeAll']){_0x11d22c[_0x7c0a('0x5c')]=[{'all':!![]}];}return db[_0x7c0a('0x47')][_0x7c0a('0x5d')](_0x11d22c);})[_0x7c0a('0x26')](function(_0x46a221){_0x1cf8ba['rows']=_0x46a221;return _0x1cf8ba;})[_0x7c0a('0x26')](respondWithFilteredResult(_0x35392d,_0x11d22c))['catch'](handleError(_0x35392d,null));};exports[_0x7c0a('0x5e')]=function(_0x455457,_0x4cc93d){var _0x4f9fae={'raw':!![],'where':{'id':_0x455457[_0x7c0a('0x5f')]['id']}},_0x5f0a16={};_0x5f0a16[_0x7c0a('0x50')]=_[_0x7c0a('0x4d')](db[_0x7c0a('0x47')][_0x7c0a('0x48')]);_0x5f0a16[_0x7c0a('0x4c')]=_[_0x7c0a('0x4d')](_0x455457[_0x7c0a('0x4c')]);_0x5f0a16[_0x7c0a('0x4e')]=_[_0x7c0a('0x4f')](_0x5f0a16[_0x7c0a('0x50')],_0x5f0a16[_0x7c0a('0x4c')]);_0x4f9fae[_0x7c0a('0x52')]=_[_0x7c0a('0x4f')](_0x5f0a16[_0x7c0a('0x50')],qs[_0x7c0a('0x51')](_0x455457[_0x7c0a('0x4c')][_0x7c0a('0x51')]));_0x4f9fae[_0x7c0a('0x52')]=_0x4f9fae['attributes'][_0x7c0a('0x60')]?_0x4f9fae[_0x7c0a('0x52')]:_0x5f0a16[_0x7c0a('0x50')];if(_0x455457[_0x7c0a('0x4c')][_0x7c0a('0x61')]){_0x4f9fae['include']=[{'all':!![]}];}_0x4f9fae=_['merge']({},_0x4f9fae,_0x455457['options']);return db[_0x7c0a('0x47')][_0x7c0a('0x62')](_0x4f9fae)[_0x7c0a('0x26')](handleEntityNotFound(_0x4cc93d,null))[_0x7c0a('0x26')](respondWithResult(_0x4cc93d,null))[_0x7c0a('0x30')](handleError(_0x4cc93d,null));};exports[_0x7c0a('0x63')]=function(_0x450691,_0x17dcd5){return db['ChatQueue'][_0x7c0a('0x63')](_0x450691['body'],{})[_0x7c0a('0x26')](function(_0x5c9860){var _0x15d290=_0x450691[_0x7c0a('0x64')][_0x7c0a('0x40')]({'plain':!![]});if(!_0x15d290)throw new Error(_0x7c0a('0x65'));if(_0x15d290['role']===_0x7c0a('0x64')){var _0x2666ac=_0x5c9860[_0x7c0a('0x40')]({'plain':!![]});var _0x4f6a6c=_0x7c0a('0x41');return db[_0x7c0a('0x66')]['find']({'where':{'name':_0x4f6a6c,'userProfileId':_0x15d290[_0x7c0a('0x67')]},'raw':!![]})['then'](function(_0x23ba90){if(_0x23ba90&&_0x23ba90[_0x7c0a('0x68')]===0x0){return db[_0x7c0a('0x42')]['create']({'name':_0x2666ac[_0x7c0a('0x44')],'resourceId':_0x2666ac['id'],'type':_0x23ba90[_0x7c0a('0x44')],'sectionId':_0x23ba90['id']},{})['then'](function(){return _0x5c9860;});}else{return _0x5c9860;}})[_0x7c0a('0x30')](function(_0x2e0ff8){logger[_0x7c0a('0x2c')](_0x7c0a('0x69'),_0x2e0ff8);throw _0x2e0ff8;});}return _0x5c9860;})[_0x7c0a('0x26')](respondWithResult(_0x17dcd5,0xc9))[_0x7c0a('0x30')](handleError(_0x17dcd5,null));};exports[_0x7c0a('0x3e')]=function(_0xf09dac,_0x26a833){if(_0xf09dac[_0x7c0a('0x6a')]['id']){delete _0xf09dac['body']['id'];}return db[_0x7c0a('0x47')][_0x7c0a('0x62')]({'where':{'id':_0xf09dac[_0x7c0a('0x5f')]['id']}})[_0x7c0a('0x26')](handleEntityNotFound(_0x26a833,null))[_0x7c0a('0x26')](saveUpdates(_0xf09dac['body'],null))[_0x7c0a('0x26')](respondWithResult(_0x26a833,null))[_0x7c0a('0x30')](handleError(_0x26a833,null));};exports[_0x7c0a('0x3f')]=function(_0x1f01d2,_0x1663f6){return db[_0x7c0a('0x47')][_0x7c0a('0x62')]({'where':{'id':_0x1f01d2[_0x7c0a('0x5f')]['id']}})['then'](handleEntityNotFound(_0x1663f6,null))[_0x7c0a('0x26')](removeEntity(_0x1663f6,null))[_0x7c0a('0x30')](handleError(_0x1663f6,null));};exports[_0x7c0a('0x6b')]=function(_0x6fbbaa,_0xd11216){return db[_0x7c0a('0x47')]['describe']()[_0x7c0a('0x26')](respondWithResult(_0xd11216,null))[_0x7c0a('0x30')](handleError(_0xd11216,null));};exports['getMembers']=function(_0x2c15f4,_0x26bd3a,_0x43ba11){var _0x2342ed={'raw':!![],'where':{}},_0x118ae0={},_0x4e9379;return db[_0x7c0a('0x47')][_0x7c0a('0x6c')]({'where':{'id':_0x2c15f4[_0x7c0a('0x5f')]['id']}})['then'](handleEntityNotFound(_0x26bd3a,null))['then'](function(_0x2f300d){if(_0x2f300d){_0x4e9379=_0x2f300d[_0x7c0a('0x40')]({'plain':!![]});_0x118ae0[_0x7c0a('0x50')]=_[_0x7c0a('0x4d')](db[_0x7c0a('0x6d')][_0x7c0a('0x48')]);_0x118ae0[_0x7c0a('0x4c')]=_[_0x7c0a('0x4d')](_0x2c15f4['query']);_0x118ae0['filters']=_[_0x7c0a('0x4f')](_0x118ae0[_0x7c0a('0x50')],_0x118ae0['query']);_0x2342ed[_0x7c0a('0x52')]=_[_0x7c0a('0x4f')](_0x118ae0[_0x7c0a('0x50')],qs[_0x7c0a('0x51')](_0x2c15f4['query'][_0x7c0a('0x51')]));_0x2342ed[_0x7c0a('0x52')]=_0x2342ed[_0x7c0a('0x52')]['length']?_0x2342ed['attributes']:_0x118ae0['model'];if(!_0x2c15f4[_0x7c0a('0x4c')]['hasOwnProperty'](_0x7c0a('0x53'))){_0x2342ed[_0x7c0a('0x37')]=qs[_0x7c0a('0x37')](_0x2c15f4[_0x7c0a('0x4c')][_0x7c0a('0x37')]);_0x2342ed['offset']=qs[_0x7c0a('0x35')](_0x2c15f4['query'][_0x7c0a('0x35')]);}_0x2342ed[_0x7c0a('0x54')]=qs['sort'](_0x2c15f4['query']['sort']);_0x2342ed[_0x7c0a('0x56')]=qs[_0x7c0a('0x4e')](_[_0x7c0a('0x57')](_0x2c15f4[_0x7c0a('0x4c')],_0x118ae0[_0x7c0a('0x4e')]));_0x2342ed['where']['ChatQueueId']=_0x2f300d['id'];if(_0x2c15f4['query'][_0x7c0a('0x58')]){_0x2342ed[_0x7c0a('0x56')]=_[_0x7c0a('0x59')](_0x2342ed[_0x7c0a('0x56')],{'$or':_['map'](_0x2342ed[_0x7c0a('0x52')],function(_0x4ef8c4){var _0x3b5c17={};_0x3b5c17[_0x4ef8c4]={'$like':'%'+_0x2c15f4['query'][_0x7c0a('0x58')]+'%'};return _0x3b5c17;})});}_0x2342ed=_[_0x7c0a('0x59')]({},_0x2342ed,_0x2c15f4['options']);return db[_0x7c0a('0x6d')][_0x7c0a('0x5d')](_0x2342ed);}})[_0x7c0a('0x26')](function(_0x4e1630){if(_0x4e1630){return db[_0x7c0a('0x6e')][_0x7c0a('0x6f')]({'where':{'id':_[_0x7c0a('0x46')](_0x4e1630,'UserId'),'role':_0x7c0a('0x70')},'attributes':['id',_0x7c0a('0x44'),_0x7c0a('0x71'),'updatedAt',_0x7c0a('0x72')]});}})[_0x7c0a('0x26')](function(_0x37dd01){if(_0x37dd01){return{'count':_0x37dd01['count'],'rows':_[_0x7c0a('0x46')](_0x37dd01[_0x7c0a('0x73')],function(_0x3bc6f3){return{'membername':_0x3bc6f3[_0x7c0a('0x44')],'UserId':_0x3bc6f3['id'],'queue_name':_0x4e9379[_0x7c0a('0x44')],'ChatQueueId':_0x4e9379['id'],'interface':util[_0x7c0a('0x74')](_0x7c0a('0x75'),_0x7c0a('0x76'),_0x3bc6f3[_0x7c0a('0x44')]),'penalty':0x0,'paused':_0x3bc6f3[_0x7c0a('0x71')],'createdAt':_0x3bc6f3[_0x7c0a('0x72')],'updatedAt':_0x3bc6f3[_0x7c0a('0x77')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7c0a('0x26')](respondWithFilteredResult(_0x26bd3a,_0x2342ed))[_0x7c0a('0x30')](handleError(_0x26bd3a,null));};exports[_0x7c0a('0x78')]=function(_0x1f1988,_0x216641,_0x38ec7f){var _0x2cfb77={};var _0x31f030={};var _0x3cb93c;var _0x447f02;return db[_0x7c0a('0x47')][_0x7c0a('0x6c')]({'where':{'id':_0x1f1988[_0x7c0a('0x5f')]['id']}})[_0x7c0a('0x26')](handleEntityNotFound(_0x216641,null))[_0x7c0a('0x26')](function(_0x34247e){if(_0x34247e){_0x3cb93c=_0x34247e;_0x31f030['model']=_[_0x7c0a('0x4d')](db['Team'][_0x7c0a('0x48')]);_0x31f030[_0x7c0a('0x4c')]=_[_0x7c0a('0x4d')](_0x1f1988[_0x7c0a('0x4c')]);_0x31f030[_0x7c0a('0x4e')]=_[_0x7c0a('0x4f')](_0x31f030[_0x7c0a('0x50')],_0x31f030[_0x7c0a('0x4c')]);_0x2cfb77[_0x7c0a('0x52')]=_[_0x7c0a('0x4f')](_0x31f030[_0x7c0a('0x50')],qs[_0x7c0a('0x51')](_0x1f1988[_0x7c0a('0x4c')][_0x7c0a('0x51')]));_0x2cfb77[_0x7c0a('0x52')]=_0x2cfb77['attributes'][_0x7c0a('0x60')]?_0x2cfb77[_0x7c0a('0x52')]:_0x31f030['model'];_0x2cfb77[_0x7c0a('0x54')]=qs[_0x7c0a('0x55')](_0x1f1988[_0x7c0a('0x4c')][_0x7c0a('0x55')]);_0x2cfb77[_0x7c0a('0x56')]=qs[_0x7c0a('0x4e')](_[_0x7c0a('0x57')](_0x1f1988[_0x7c0a('0x4c')],_0x31f030[_0x7c0a('0x4e')]));if(_0x1f1988[_0x7c0a('0x4c')][_0x7c0a('0x58')]){_0x2cfb77['where']=_[_0x7c0a('0x59')](_0x2cfb77['where'],{'$or':_[_0x7c0a('0x46')](_0x2cfb77['attributes'],function(_0x555ec4){var _0x1dc01a={};_0x1dc01a[_0x555ec4]={'$like':'%'+_0x1f1988[_0x7c0a('0x4c')][_0x7c0a('0x58')]+'%'};return _0x1dc01a;})});}_0x2cfb77=_[_0x7c0a('0x59')]({},_0x2cfb77,_0x1f1988['options']);return _0x3cb93c[_0x7c0a('0x78')](_0x2cfb77);}})['then'](function(_0xb18065){if(_0xb18065){_0x447f02=_0xb18065[_0x7c0a('0x60')];if(!_0x1f1988[_0x7c0a('0x4c')][_0x7c0a('0x79')](_0x7c0a('0x53'))){_0x2cfb77[_0x7c0a('0x37')]=qs[_0x7c0a('0x37')](_0x1f1988[_0x7c0a('0x4c')]['limit']);_0x2cfb77[_0x7c0a('0x35')]=qs[_0x7c0a('0x35')](_0x1f1988[_0x7c0a('0x4c')][_0x7c0a('0x35')]);}return _0x3cb93c['getTeams'](_0x2cfb77);}})[_0x7c0a('0x26')](function(_0x4340c3){if(_0x4340c3){return _0x4340c3?{'count':_0x447f02,'rows':_0x4340c3}:null;}})['then'](respondWithResult(_0x216641,null))[_0x7c0a('0x30')](handleError(_0x216641,null));};exports[_0x7c0a('0x7a')]=function(_0x3c0058,_0x3b2701,_0x4978da){var _0x7658a8=_0x3c0058[_0x7c0a('0x6a')][_0x7c0a('0x7b')];return db[_0x7c0a('0x7c')][_0x7c0a('0x5d')]({'where':{'id':_0x7658a8},'attributes':['id'],'include':[{'model':db[_0x7c0a('0x6e')],'as':_0x7c0a('0x7d'),'attributes':['id',_0x7c0a('0x44'),_0x7c0a('0x7e'),_0x7c0a('0x7f'),_0x7c0a('0x80')],'raw':!![]}]})['then'](function(_0x579cb3){if(_0x579cb3){var _0xb643ea=_[_0x7c0a('0x81')](_0x579cb3,function(_0x3bae40){var _0xe82f32=_0x3bae40[_0x7c0a('0x40')]({'plain':!![]});return _0xe82f32['Agents'];});return db[_0x7c0a('0x47')][_0x7c0a('0x62')]({'where':{'id':_0x3c0058['params']['id']}})[_0x7c0a('0x26')](function(_0xeff6ac){return db['sequelize']['transaction'](function(_0x26b310){return _0xeff6ac['addTeams'](_0x7658a8,{'transaction':_0x26b310})[_0x7c0a('0x26')](function(){return BPromise[_0x7c0a('0x82')](_0xb643ea,function(_0x10f1b3){return db[_0x7c0a('0x6d')][_0x7c0a('0x83')]({'where':{'UserId':_0x10f1b3['id'],'ChatQueueId':_0x3c0058[_0x7c0a('0x5f')]['id']},'transaction':_0x26b310});});})['then'](function(){_0xb643ea[_0x7c0a('0x84')](function(_0x66dd83){socket[_0x7c0a('0x85')](_0x7c0a('0x86'),{'UserId':_0x66dd83['id'],'ChatQueueId':_0xeff6ac['id']});});});});});}})['then'](respondWithStatusCode(_0x3b2701,null))['catch'](handleError(_0x3b2701,null));};exports['removeTeams']=function(_0x85553c,_0x1b14bf,_0x51955f){return db[_0x7c0a('0x7c')][_0x7c0a('0x5d')]({'where':{'id':_0x85553c[_0x7c0a('0x4c')][_0x7c0a('0x7b')]},'attributes':['id'],'include':[{'model':db[_0x7c0a('0x6e')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1b14bf,null))[_0x7c0a('0x26')](function(_0x4bb514){var _0x52a10e=_[_0x7c0a('0x46')](_0x4bb514,'id');var _0x11c5b3=[];var _0x33382b=[];var _0x4bfdb3=squel[_0x7c0a('0x87')]();_0x4bfdb3[_0x7c0a('0x88')](_0x7c0a('0x89'))[_0x7c0a('0x8a')](_0x7c0a('0x8b'),'tq')[_0x7c0a('0x8c')](_0x7c0a('0x8d'),'ut',_0x7c0a('0x8e'))[_0x7c0a('0x56')](_0x7c0a('0x8f'),_0x85553c[_0x7c0a('0x5f')]['id']);for(var _0xe89ebf=0x0;_0xe89ebf<_0x4bb514[_0x7c0a('0x60')];_0xe89ebf+=0x1){let _0x380e70=_0x4bb514[_0xe89ebf];for(var _0x42d4cf=0x0;_0x42d4cf<_0x380e70[_0x7c0a('0x7d')][_0x7c0a('0x60')];_0x42d4cf+=0x1){let _0x194837=_0x380e70['Agents'][_0x42d4cf];var _0x37e4d1=_0x4bfdb3['clone']();_0x37e4d1[_0x7c0a('0x56')]('ut.UserId\x20=\x20?',_0x194837['id']);_0x33382b['push'](db[_0x7c0a('0x90')][_0x7c0a('0x4c')](_0x37e4d1[_0x7c0a('0x91')](),{'type':db[_0x7c0a('0x90')][_0x7c0a('0x92')]['SELECT']})[_0x7c0a('0x26')](function(_0x4233e1){if(_0x4233e1[_0x7c0a('0x60')]===0x1){return _0x194837['id'];}else{var _0x4f5444=_[_0x7c0a('0x93')](_['map'](_0x4233e1,'TeamId'),function(_0x2cdf81){return _[_0x7c0a('0x94')](_0x52a10e,_0x2cdf81);});if(_0x4f5444){return _0x194837['id'];}}}));}}return BPromise['all'](_0x33382b)[_0x7c0a('0x26')](function(_0x3ab0f5){_0x11c5b3=_(_0x11c5b3)[_0x7c0a('0x95')](_0x3ab0f5)[_0x7c0a('0x96')]()['value']();return db['ChatQueue']['find']({'where':{'id':_0x85553c['params']['id']}})[_0x7c0a('0x26')](function(_0x3cce7f){return db[_0x7c0a('0x90')]['transaction'](function(_0x449028){return _0x3cce7f[_0x7c0a('0x97')](_0x85553c[_0x7c0a('0x4c')][_0x7c0a('0x7b')],{'transaction':_0x449028})['then'](function(){if(!_[_0x7c0a('0x98')](_0x11c5b3)){return _0x3cce7f[_0x7c0a('0x99')](_0x11c5b3,{'transaction':_0x449028});}})[_0x7c0a('0x26')](function(){_0x11c5b3[_0x7c0a('0x84')](function(_0x5ef1af){socket[_0x7c0a('0x85')](_0x7c0a('0x9a'),{'UserId':_0x5ef1af,'ChatQueueId':_0x3cce7f['id']});});});});});});})[_0x7c0a('0x26')](respondWithStatusCode(_0x1b14bf,null))[_0x7c0a('0x30')](handleError(_0x1b14bf,null));};exports[_0x7c0a('0x9b')]=function(_0x179110,_0xb0d25b,_0x4b0889){return db['ChatQueue'][_0x7c0a('0x62')]({'where':{'id':_0x179110[_0x7c0a('0x5f')]['id']}})[_0x7c0a('0x26')](handleEntityNotFound(_0xb0d25b,null))[_0x7c0a('0x26')](function(_0x50a070){if(_0x50a070){return _0x50a070['addAgents'](_0x179110[_0x7c0a('0x6a')]['ids'],_['omit'](_0x179110['body'],[_0x7c0a('0x7b'),'id'])||{})['spread'](function(_0x17d7c0){for(var _0x344bc4=0x0;_0x344bc4<_0x179110[_0x7c0a('0x6a')][_0x7c0a('0x7b')]['length'];_0x344bc4+=0x1){socket['emit'](_0x7c0a('0x86'),{'UserId':Number(_0x179110[_0x7c0a('0x6a')][_0x7c0a('0x7b')][_0x344bc4]),'ChatQueueId':Number(_0x179110[_0x7c0a('0x5f')]['id'])});}return _0x17d7c0;});}})['then'](respondWithResult(_0xb0d25b,null))['catch'](handleError(_0xb0d25b,null));};exports[_0x7c0a('0x99')]=function(_0xa9f568,_0x4b4df9,_0x222605){return db[_0x7c0a('0x47')][_0x7c0a('0x62')]({'where':{'id':_0xa9f568['params']['id']}})['then'](handleEntityNotFound(_0x4b4df9,null))[_0x7c0a('0x26')](function(_0xf03111){if(_0xf03111){return _0xf03111[_0x7c0a('0x99')](_0xa9f568['query'][_0x7c0a('0x7b')])[_0x7c0a('0x26')](function(){if(_[_0x7c0a('0x9c')](_0xa9f568[_0x7c0a('0x4c')][_0x7c0a('0x7b')])){for(var _0x9030fd=0x0;_0x9030fd<_0xa9f568[_0x7c0a('0x4c')]['ids'][_0x7c0a('0x60')];_0x9030fd+=0x1){socket[_0x7c0a('0x85')]('userChatQueue:remove',{'UserId':Number(_0xa9f568['query'][_0x7c0a('0x7b')][_0x9030fd]),'ChatQueueId':Number(_0xa9f568[_0x7c0a('0x5f')]['id'])});}}else{socket[_0x7c0a('0x85')](_0x7c0a('0x9a'),{'UserId':Number(_0xa9f568[_0x7c0a('0x4c')][_0x7c0a('0x7b')]),'ChatQueueId':Number(_0xa9f568[_0x7c0a('0x5f')]['id'])});}});}})[_0x7c0a('0x26')](respondWithStatusCode(_0x4b4df9,null))[_0x7c0a('0x30')](handleError(_0x4b4df9,null));};exports['getAgents']=function(_0x1d6b4b,_0x3f5872,_0x210cc0){var _0x53d65f={};var _0x5081c2={};var _0x180bfb;var _0x38fbc7;return db[_0x7c0a('0x47')][_0x7c0a('0x6c')]({'where':{'id':_0x1d6b4b[_0x7c0a('0x5f')]['id']}})['then'](handleEntityNotFound(_0x3f5872,null))[_0x7c0a('0x26')](function(_0x515b96){if(_0x515b96){_0x180bfb=_0x515b96;_0x5081c2[_0x7c0a('0x50')]=_[_0x7c0a('0x4d')](db[_0x7c0a('0x6e')]['rawAttributes']);_0x5081c2[_0x7c0a('0x4c')]=_['keys'](_0x1d6b4b[_0x7c0a('0x4c')]);_0x5081c2[_0x7c0a('0x4e')]=_[_0x7c0a('0x4f')](_0x5081c2[_0x7c0a('0x50')],_0x5081c2[_0x7c0a('0x4c')]);_0x53d65f[_0x7c0a('0x52')]=_[_0x7c0a('0x4f')](_0x5081c2[_0x7c0a('0x50')],qs[_0x7c0a('0x51')](_0x1d6b4b[_0x7c0a('0x4c')][_0x7c0a('0x51')]));_0x53d65f['attributes']=_0x53d65f[_0x7c0a('0x52')][_0x7c0a('0x60')]?_0x53d65f[_0x7c0a('0x52')]:_0x5081c2[_0x7c0a('0x50')];_0x53d65f['order']=qs['sort'](_0x1d6b4b[_0x7c0a('0x4c')]['sort']);_0x53d65f[_0x7c0a('0x56')]=qs[_0x7c0a('0x4e')](_[_0x7c0a('0x57')](_0x1d6b4b[_0x7c0a('0x4c')],_0x5081c2[_0x7c0a('0x4e')]));if(_0x1d6b4b[_0x7c0a('0x4c')][_0x7c0a('0x58')]){_0x53d65f[_0x7c0a('0x56')]=_[_0x7c0a('0x59')](_0x53d65f[_0x7c0a('0x56')],{'$or':_[_0x7c0a('0x46')](_0x53d65f['attributes'],function(_0x46c1ce){var _0x3a1ec0={};_0x3a1ec0[_0x46c1ce]={'$like':'%'+_0x1d6b4b[_0x7c0a('0x4c')][_0x7c0a('0x58')]+'%'};return _0x3a1ec0;})});}_0x53d65f=_[_0x7c0a('0x59')]({},_0x53d65f,_0x1d6b4b['options']);return _0x180bfb[_0x7c0a('0x9d')](_0x53d65f);}})[_0x7c0a('0x26')](function(_0xcfb445){if(_0xcfb445){_0x38fbc7=_0xcfb445[_0x7c0a('0x60')];if(!_0x1d6b4b[_0x7c0a('0x4c')][_0x7c0a('0x79')](_0x7c0a('0x53'))){_0x53d65f[_0x7c0a('0x37')]=qs[_0x7c0a('0x37')](_0x1d6b4b[_0x7c0a('0x4c')][_0x7c0a('0x37')]);_0x53d65f[_0x7c0a('0x35')]=qs[_0x7c0a('0x35')](_0x1d6b4b[_0x7c0a('0x4c')]['offset']);}return _0x180bfb[_0x7c0a('0x9d')](_0x53d65f);}})[_0x7c0a('0x26')](function(_0x3591e0){if(_0x3591e0){return _0x3591e0?{'count':_0x38fbc7,'rows':_0x3591e0}:null;}})[_0x7c0a('0x26')](respondWithResult(_0x3f5872,null))[_0x7c0a('0x30')](handleError(_0x3f5872,null));}; \ No newline at end of file diff --git a/server/api/chatQueue/chatQueue.events.js b/server/api/chatQueue/chatQueue.events.js new file mode 100644 index 0000000..8da1c02 --- /dev/null +++ b/server/api/chatQueue/chatQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd13d=['save','update','hasOwnProperty','hook','exports','events','ChatQueue','setMaxListeners'];(function(_0x33b3c7,_0x403382){var _0x4dadc7=function(_0x314e85){while(--_0x314e85){_0x33b3c7['push'](_0x33b3c7['shift']());}};_0x4dadc7(++_0x403382);}(_0xd13d,0x155));var _0xdd13=function(_0x2d74d5,_0x15971b){_0x2d74d5=_0x2d74d5-0x0;var _0x342a67=_0xd13d[_0x2d74d5];return _0x342a67;};'use strict';var EventEmitter=require(_0xdd13('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xdd13('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xdd13('0x2')](0x0);var events={'afterCreate':_0xdd13('0x3'),'afterUpdate':_0xdd13('0x4'),'afterDestroy':'remove'};function emitEvent(_0x577016){return function(_0x40a980,_0x363c43,_0xca2d72){ChatQueueEvents['emit'](_0x577016+':'+_0x40a980['id'],_0x40a980);ChatQueueEvents['emit'](_0x577016,_0x40a980);_0xca2d72(null);};}for(var e in events){if(events[_0xdd13('0x5')](e)){var event=events[e];ChatQueue[_0xdd13('0x6')](e,emitEvent(event));}}module[_0xdd13('0x7')]=ChatQueueEvents; \ No newline at end of file diff --git a/server/api/chatQueue/chatQueue.model.js b/server/api/chatQueue/chatQueue.model.js new file mode 100644 index 0000000..ff12ece --- /dev/null +++ b/server/api/chatQueue/chatQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1200=['ChatQueue','chat_queues','util','../../config/logger','moment','bluebird','request-promise','rimraf','./chatQueue.attributes','exports','define'];(function(_0x40158f,_0x2d156a){var _0x486d65=function(_0x2e0d46){while(--_0x2e0d46){_0x40158f['push'](_0x40158f['shift']());}};_0x486d65(++_0x2d156a);}(_0x1200,0x16d));var _0x0120=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0x1200[_0x45783c];return _0x1161da;};'use strict';var _=require('lodash');var util=require(_0x0120('0x0'));var logger=require(_0x0120('0x1'))('api');var moment=require(_0x0120('0x2'));var BPromise=require(_0x0120('0x3'));var rp=require(_0x0120('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0120('0x5'));var config=require('../../config/environment');var attributes=require(_0x0120('0x6'));module[_0x0120('0x7')]=function(_0x5019ae,_0x488d7f){return _0x5019ae[_0x0120('0x8')](_0x0120('0x9'),attributes,{'tableName':_0x0120('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/chatQueue/chatQueue.rpc.js b/server/api/chatQueue/chatQueue.rpc.js new file mode 100644 index 0000000..cc8d4e3 --- /dev/null +++ b/server/api/chatQueue/chatQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xafa7=['error','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','map','include','model','attributes','debug','ShowChatQueue','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x15f306,_0x4b7328){var _0x2138bb=function(_0x393e5d){while(--_0x393e5d){_0x15f306['push'](_0x15f306['shift']());}};_0x2138bb(++_0x4b7328);}(_0xafa7,0x122));var _0x7afa=function(_0x4a0e68,_0x45c08c){_0x4a0e68=_0x4a0e68-0x0;var _0x4fb274=_0xafa7[_0x4a0e68];return _0x4fb274;};'use strict';var _=require(_0x7afa('0x0'));var util=require(_0x7afa('0x1'));var moment=require('moment');var BPromise=require(_0x7afa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7afa('0x3'));var db=require(_0x7afa('0x4'))['db'];var utils=require(_0x7afa('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x7afa('0x6'));var jayson=require(_0x7afa('0x7'));var client=jayson[_0x7afa('0x8')][_0x7afa('0x9')]({'port':0x232a});config[_0x7afa('0xa')]=_[_0x7afa('0xb')](config['redis'],{'host':_0x7afa('0xc'),'port':0x18eb});var socket=require(_0x7afa('0xd'))(new Redis(config[_0x7afa('0xa')]));require(_0x7afa('0xe'))[_0x7afa('0xf')](socket);function respondWithRpcPromise(_0x2ba3dd,_0xb3aee5,_0x4a5f44){return new BPromise(function(_0x2eaa82,_0xde0626){return client[_0x7afa('0x10')](_0x2ba3dd,_0x4a5f44)[_0x7afa('0x11')](function(_0x32f85c){logger[_0x7afa('0x12')](_0x7afa('0x13'),_0xb3aee5,_0x7afa('0x14'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0xb3aee5,'request\x20sent',JSON[_0x7afa('0x15')](_0x32f85c));if(_0x32f85c[_0x7afa('0x16')]){if(_0x32f85c[_0x7afa('0x16')]['code']===0x1f4){logger[_0x7afa('0x16')](_0x7afa('0x13'),_0xb3aee5,_0x32f85c[_0x7afa('0x16')]['message']);return _0xde0626(_0x32f85c['error'][_0x7afa('0x17')]);}logger['error'](_0x7afa('0x13'),_0xb3aee5,_0x32f85c['error']['message']);return _0x2eaa82(_0x32f85c[_0x7afa('0x16')][_0x7afa('0x17')]);}else{logger[_0x7afa('0x12')](_0x7afa('0x13'),_0xb3aee5,'request\x20sent');_0x2eaa82(_0x32f85c[_0x7afa('0x18')][_0x7afa('0x17')]);}})[_0x7afa('0x19')](function(_0x5015fc){logger['error'](_0x7afa('0x13'),_0xb3aee5,_0x5015fc);_0xde0626(_0x5015fc);});});}exports[_0x7afa('0x1a')]=function(_0x4b86b0){var _0x4fc800=this;return new Promise(function(_0x1f1bcf,_0x30aa81){return db[_0x7afa('0x1b')][_0x7afa('0x1c')]({'raw':_0x4b86b0[_0x7afa('0x1d')]?_0x4b86b0['options'][_0x7afa('0x1e')]===undefined?!![]:![]:!![],'where':_0x4b86b0[_0x7afa('0x1d')]?_0x4b86b0[_0x7afa('0x1d')][_0x7afa('0x1f')]||null:null,'attributes':_0x4b86b0[_0x7afa('0x1d')]?_0x4b86b0[_0x7afa('0x1d')]['attributes']||null:null,'limit':_0x4b86b0[_0x7afa('0x1d')]?_0x4b86b0[_0x7afa('0x1d')]['limit']||null:null,'include':_0x4b86b0['options']?_0x4b86b0['options']['include']?_[_0x7afa('0x20')](_0x4b86b0[_0x7afa('0x1d')][_0x7afa('0x21')],function(_0x26d0e0){return{'model':db[_0x26d0e0[_0x7afa('0x22')]],'as':_0x26d0e0['as'],'attributes':_0x26d0e0[_0x7afa('0x23')],'include':_0x26d0e0[_0x7afa('0x21')]?_[_0x7afa('0x20')](_0x26d0e0[_0x7afa('0x21')],function(_0x449c4d){return{'model':db[_0x449c4d[_0x7afa('0x22')]],'as':_0x449c4d['as'],'attributes':_0x449c4d[_0x7afa('0x23')],'include':_0x449c4d[_0x7afa('0x21')]?_['map'](_0x449c4d[_0x7afa('0x21')],function(_0xbb3dff){return{'model':db[_0xbb3dff[_0x7afa('0x22')]],'as':_0xbb3dff['as'],'attributes':_0xbb3dff['attributes']};}):[]};}):[]};}):[]:[]})[_0x7afa('0x11')](function(_0x24e0c){logger[_0x7afa('0x12')]('GetChatQueue',_0x4b86b0);logger[_0x7afa('0x24')](_0x7afa('0x1a'),_0x4b86b0,JSON[_0x7afa('0x15')](_0x24e0c));_0x1f1bcf(_0x24e0c);})['catch'](function(_0x43e3ae){logger[_0x7afa('0x16')](_0x7afa('0x1a'),_0x43e3ae[_0x7afa('0x17')],_0x4b86b0);_0x30aa81(_0x4fc800[_0x7afa('0x16')](0x1f4,_0x43e3ae['message']));});});};exports[_0x7afa('0x25')]=function(_0x599af7){var _0x5c396f=this;return new Promise(function(_0x29c000,_0x169b7b){return db[_0x7afa('0x1b')][_0x7afa('0x26')]({'raw':_0x599af7[_0x7afa('0x1d')]?_0x599af7['options'][_0x7afa('0x1e')]===undefined?!![]:![]:!![],'where':_0x599af7[_0x7afa('0x1d')]?_0x599af7[_0x7afa('0x1d')][_0x7afa('0x1f')]||null:null,'attributes':_0x599af7[_0x7afa('0x1d')]?_0x599af7[_0x7afa('0x1d')][_0x7afa('0x23')]||null:null,'include':_0x599af7[_0x7afa('0x1d')]?_0x599af7[_0x7afa('0x1d')]['include']?_[_0x7afa('0x20')](_0x599af7[_0x7afa('0x1d')]['include'],function(_0x3b49d3){return{'model':db[_0x3b49d3[_0x7afa('0x22')]],'as':_0x3b49d3['as'],'attributes':_0x3b49d3[_0x7afa('0x23')],'include':_0x3b49d3[_0x7afa('0x21')]?_[_0x7afa('0x20')](_0x3b49d3[_0x7afa('0x21')],function(_0xda9fa6){return{'model':db[_0xda9fa6[_0x7afa('0x22')]],'as':_0xda9fa6['as'],'attributes':_0xda9fa6[_0x7afa('0x23')],'include':_0xda9fa6[_0x7afa('0x21')]?_['map'](_0xda9fa6[_0x7afa('0x21')],function(_0x9c0763){return{'model':db[_0x9c0763[_0x7afa('0x22')]],'as':_0x9c0763['as'],'attributes':_0x9c0763['attributes']};}):[]};}):[]};}):[]:[]})[_0x7afa('0x11')](function(_0x433adc){logger[_0x7afa('0x12')]('ShowChatQueue',_0x599af7);logger['debug'](_0x7afa('0x25'),_0x599af7,JSON[_0x7afa('0x15')](_0x433adc));_0x29c000(_0x433adc);})[_0x7afa('0x19')](function(_0x57e9b4){logger['error'](_0x7afa('0x25'),_0x57e9b4[_0x7afa('0x17')],_0x599af7);_0x169b7b(_0x5c396f['error'](0x1f4,_0x57e9b4[_0x7afa('0x17')]));});});}; \ No newline at end of file diff --git a/server/api/chatQueue/chatQueue.socket.js b/server/api/chatQueue/chatQueue.socket.js new file mode 100644 index 0000000..4baf5a9 --- /dev/null +++ b/server/api/chatQueue/chatQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x72b1=['register','length','./chatQueue.events','remove','update','emit','removeListener'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x72b1,0x16e));var _0x172b=function(_0x2563b8,_0x1b7fa1){_0x2563b8=_0x2563b8-0x0;var _0x1da178=_0x72b1[_0x2563b8];return _0x1da178;};'use strict';var ChatQueueEvents=require(_0x172b('0x0'));var events=['save',_0x172b('0x1'),_0x172b('0x2')];function createListener(_0x42b795,_0x18fd16){return function(_0x23bc7a){_0x18fd16[_0x172b('0x3')](_0x42b795,_0x23bc7a);};}function removeListener(_0x2c1d6e,_0x558038){return function(){ChatQueueEvents[_0x172b('0x4')](_0x2c1d6e,_0x558038);};}exports[_0x172b('0x5')]=function(_0x475fd6){for(var _0x222624=0x0,_0x571994=events[_0x172b('0x6')];_0x222624<_0x571994;_0x222624++){var _0x517363=events[_0x222624];var _0x1f98e9=createListener('chatQueue:'+_0x517363,_0x475fd6);ChatQueueEvents['on'](_0x517363,_0x1f98e9);}}; \ No newline at end of file diff --git a/server/api/chatQueue/index.js b/server/api/chatQueue/index.js new file mode 100644 index 0000000..d05dbd4 --- /dev/null +++ b/server/api/chatQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3e74,0x175));var _0x43e7=function(_0x48c15e,_0x3b1130){_0x48c15e=_0x48c15e-0x0;var _0x32f80a=_0x3e74[_0x48c15e];return _0x32f80a;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router; \ No newline at end of file diff --git a/server/api/chatQueueReport/chatQueueReport.attributes.js b/server/api/chatQueueReport/chatQueueReport.attributes.js new file mode 100644 index 0000000..6fe7d32 --- /dev/null +++ b/server/api/chatQueueReport/chatQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb8ba=['sequelize','exports','STRING','DATE','moment'];(function(_0x426560,_0x297102){var _0x1ef7ed=function(_0x15bc67){while(--_0x15bc67){_0x426560['push'](_0x426560['shift']());}};_0x1ef7ed(++_0x297102);}(_0xb8ba,0x6d));var _0xab8b=function(_0x1c80a3,_0x286877){_0x1c80a3=_0x1c80a3-0x0;var _0x23f9c8=_0xb8ba[_0x1c80a3];return _0x23f9c8;};'use strict';var moment=require(_0xab8b('0x0'));var Sequelize=require(_0xab8b('0x1'));module[_0xab8b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xab8b('0x3')]},'joinAt':{'type':Sequelize[_0xab8b('0x4')]},'leaveAt':{'type':Sequelize[_0xab8b('0x4')]},'acceptAt':{'type':Sequelize[_0xab8b('0x4')]},'exitAt':{'type':Sequelize[_0xab8b('0x4')]},'reason':{'type':Sequelize[_0xab8b('0x3')]}}; \ No newline at end of file diff --git a/server/api/chatQueueReport/chatQueueReport.controller.js b/server/api/chatQueueReport/chatQueueReport.controller.js new file mode 100644 index 0000000..7f2b35e --- /dev/null +++ b/server/api/chatQueueReport/chatQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc0f9=['../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','update','then','error','stack','name','index','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','order','sort','pick','filter','merge','VIRTUAL','options','ChatQueueReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x4dcca3,_0x3b88d2){var _0x4b2703=function(_0xa5e865){while(--_0xa5e865){_0x4dcca3['push'](_0x4dcca3['shift']());}};_0x4b2703(++_0x3b88d2);}(_0xc0f9,0xc5));var _0x9c0f=function(_0x1f1fb4,_0x15a561){_0x1f1fb4=_0x1f1fb4-0x0;var _0x12fa15=_0xc0f9[_0x1f1fb4];return _0x12fa15;};'use strict';var emlformat=require(_0x9c0f('0x0'));var rimraf=require(_0x9c0f('0x1'));var zipdir=require(_0x9c0f('0x2'));var jsonpatch=require(_0x9c0f('0x3'));var rp=require(_0x9c0f('0x4'));var moment=require(_0x9c0f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9c0f('0x6'));var util=require(_0x9c0f('0x7'));var path=require(_0x9c0f('0x8'));var sox=require('sox');var csv=require(_0x9c0f('0x9'));var ejs=require(_0x9c0f('0xa'));var fs=require('fs');var fs_extra=require(_0x9c0f('0xb'));var _=require(_0x9c0f('0xc'));var squel=require('squel');var crypto=require(_0x9c0f('0xd'));var jsforce=require(_0x9c0f('0xe'));var deskjs=require(_0x9c0f('0xf'));var toCsv=require(_0x9c0f('0x9'));var querystring=require('querystring');var Papa=require(_0x9c0f('0x10'));var Redis=require(_0x9c0f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9c0f('0x12'));var as=require(_0x9c0f('0x13'));var hardwareService=require(_0x9c0f('0x14'));var logger=require(_0x9c0f('0x15'))(_0x9c0f('0x16'));var utils=require(_0x9c0f('0x17'));var config=require(_0x9c0f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x9c0f('0x19'))['db'];function respondWithStatusCode(_0x31b2b6,_0x2c269c){_0x2c269c=_0x2c269c||0xcc;return function(_0x150d35){if(_0x150d35){return _0x31b2b6[_0x9c0f('0x1a')](_0x2c269c);}return _0x31b2b6[_0x9c0f('0x1b')](_0x2c269c)[_0x9c0f('0x1c')]();};}function respondWithResult(_0x2daf5c,_0x14a724){_0x14a724=_0x14a724||0xc8;return function(_0x1201db){if(_0x1201db){return _0x2daf5c[_0x9c0f('0x1b')](_0x14a724)['json'](_0x1201db);}};}function respondWithFilteredResult(_0xa3d1a9,_0x484f8f){return function(_0x392de2){if(_0x392de2){var _0x4d2611=typeof _0x484f8f[_0x9c0f('0x1d')]===_0x9c0f('0x1e')&&typeof _0x484f8f[_0x9c0f('0x1f')]==='undefined';var _0x58a631=_0x392de2[_0x9c0f('0x20')];var _0x339c47=_0x4d2611?0x0:_0x484f8f[_0x9c0f('0x1d')];var _0x40ac5c=_0x4d2611?_0x392de2[_0x9c0f('0x20')]:_0x484f8f['offset']+_0x484f8f[_0x9c0f('0x1f')];var _0x2aa887;if(_0x40ac5c>=_0x58a631){_0x40ac5c=_0x58a631;_0x2aa887=0xc8;}else{_0x2aa887=0xce;}_0xa3d1a9[_0x9c0f('0x1b')](_0x2aa887);return _0xa3d1a9[_0x9c0f('0x21')]('Content-Range',_0x339c47+'-'+_0x40ac5c+'/'+_0x58a631)[_0x9c0f('0x22')](_0x392de2);}return null;};}function patchUpdates(_0x24a892){return function(_0x27fbed){try{jsonpatch[_0x9c0f('0x23')](_0x27fbed,_0x24a892,!![]);}catch(_0x2485dc){return BPromise['reject'](_0x2485dc);}return _0x27fbed['save']();};}function saveUpdates(_0xd84d31,_0x1b4dc8){return function(_0x3b16dc){if(_0x3b16dc){return _0x3b16dc[_0x9c0f('0x24')](_0xd84d31)[_0x9c0f('0x25')](function(_0x4f5f61){return _0x4f5f61;});}return null;};}function removeEntity(_0x5a2277,_0x43856e){return function(_0x463ea6){if(_0x463ea6){return _0x463ea6['destroy']()[_0x9c0f('0x25')](function(){_0x5a2277[_0x9c0f('0x1b')](0xcc)[_0x9c0f('0x1c')]();});}};}function handleEntityNotFound(_0x1af538,_0x56e12e){return function(_0x540842){if(!_0x540842){_0x1af538[_0x9c0f('0x1a')](0x194);}return _0x540842;};}function handleError(_0x3d1dc7,_0xe2f0f5){_0xe2f0f5=_0xe2f0f5||0x1f4;return function(_0x46fef1){logger[_0x9c0f('0x26')](_0x46fef1[_0x9c0f('0x27')]);if(_0x46fef1[_0x9c0f('0x28')]){delete _0x46fef1[_0x9c0f('0x28')];}_0x3d1dc7[_0x9c0f('0x1b')](_0xe2f0f5)['send'](_0x46fef1);};}exports[_0x9c0f('0x29')]=function(_0x497f24,_0xe724b){var _0x22a88d={},_0x1622ba={},_0x3bbc35={'count':0x0,'rows':[]};var _0x4fdd61=_['map'](db['ChatQueueReport']['rawAttributes'],function(_0x222d97){return{'name':_0x222d97[_0x9c0f('0x2a')],'type':_0x222d97[_0x9c0f('0x2b')][_0x9c0f('0x2c')]};});_0x1622ba['model']=_[_0x9c0f('0x2d')](_0x4fdd61,'name');_0x1622ba[_0x9c0f('0x2e')]=_[_0x9c0f('0x2f')](_0x497f24['query']);_0x1622ba[_0x9c0f('0x30')]=_[_0x9c0f('0x31')](_0x1622ba['model'],_0x1622ba[_0x9c0f('0x2e')]);_0x22a88d[_0x9c0f('0x32')]=_[_0x9c0f('0x31')](_0x1622ba[_0x9c0f('0x33')],qs[_0x9c0f('0x34')](_0x497f24[_0x9c0f('0x2e')]['fields']));_0x22a88d[_0x9c0f('0x32')]=_0x22a88d['attributes'][_0x9c0f('0x35')]?_0x22a88d[_0x9c0f('0x32')]:_0x1622ba[_0x9c0f('0x33')];if(!_0x497f24[_0x9c0f('0x2e')]['hasOwnProperty']('nolimit')){_0x22a88d['limit']=qs['limit'](_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x1f')]);_0x22a88d['offset']=qs[_0x9c0f('0x1d')](_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x1d')]);}_0x22a88d[_0x9c0f('0x36')]=qs[_0x9c0f('0x37')](_0x497f24['query'][_0x9c0f('0x37')]);_0x22a88d['where']=qs[_0x9c0f('0x30')](_[_0x9c0f('0x38')](_0x497f24[_0x9c0f('0x2e')],_0x1622ba[_0x9c0f('0x30')]),_0x4fdd61);if(_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x39')]){_0x22a88d['where']=_[_0x9c0f('0x3a')](_0x22a88d['where'],{'$or':_[_0x9c0f('0x2d')](_0x4fdd61,function(_0x4e36be){if(_0x4e36be[_0x9c0f('0x2b')]!==_0x9c0f('0x3b')){var _0x145790={};_0x145790[_0x4e36be[_0x9c0f('0x28')]]={'$like':'%'+_0x497f24['query'][_0x9c0f('0x39')]+'%'};return _0x145790;}})});}_0x22a88d=_[_0x9c0f('0x3a')]({},_0x22a88d,_0x497f24[_0x9c0f('0x3c')]);var _0x59cf7f={'where':_0x22a88d['where']};return db[_0x9c0f('0x3d')]['count'](_0x59cf7f)[_0x9c0f('0x25')](function(_0x132193){_0x3bbc35['count']=_0x132193;if(_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x3e')]){_0x22a88d[_0x9c0f('0x3f')]=[{'all':!![]}];}return db[_0x9c0f('0x3d')][_0x9c0f('0x40')](_0x22a88d);})['then'](function(_0x25af2b){_0x3bbc35[_0x9c0f('0x41')]=_0x25af2b;return _0x3bbc35;})[_0x9c0f('0x25')](respondWithFilteredResult(_0xe724b,_0x22a88d))[_0x9c0f('0x42')](handleError(_0xe724b,null));};exports[_0x9c0f('0x43')]=function(_0x2bc11c,_0x5f2340){var _0x2c397a={'raw':!![],'where':{'id':_0x2bc11c[_0x9c0f('0x44')]['id']}},_0x59696a={};_0x59696a[_0x9c0f('0x33')]=_[_0x9c0f('0x2f')](db['ChatQueueReport']['rawAttributes']);_0x59696a[_0x9c0f('0x2e')]=_[_0x9c0f('0x2f')](_0x2bc11c['query']);_0x59696a[_0x9c0f('0x30')]=_['intersection'](_0x59696a[_0x9c0f('0x33')],_0x59696a[_0x9c0f('0x2e')]);_0x2c397a[_0x9c0f('0x32')]=_[_0x9c0f('0x31')](_0x59696a[_0x9c0f('0x33')],qs['fields'](_0x2bc11c[_0x9c0f('0x2e')][_0x9c0f('0x34')]));_0x2c397a[_0x9c0f('0x32')]=_0x2c397a[_0x9c0f('0x32')][_0x9c0f('0x35')]?_0x2c397a['attributes']:_0x59696a['model'];if(_0x2bc11c[_0x9c0f('0x2e')][_0x9c0f('0x3e')]){_0x2c397a[_0x9c0f('0x3f')]=[{'all':!![]}];}_0x2c397a=_[_0x9c0f('0x3a')]({},_0x2c397a,_0x2bc11c[_0x9c0f('0x3c')]);return db[_0x9c0f('0x3d')][_0x9c0f('0x45')](_0x2c397a)[_0x9c0f('0x25')](handleEntityNotFound(_0x5f2340,null))[_0x9c0f('0x25')](respondWithResult(_0x5f2340,null))[_0x9c0f('0x42')](handleError(_0x5f2340,null));};exports['create']=function(_0x41cbee,_0x42afb0){return db[_0x9c0f('0x3d')][_0x9c0f('0x46')](_0x41cbee[_0x9c0f('0x47')],{})[_0x9c0f('0x25')](respondWithResult(_0x42afb0,0xc9))[_0x9c0f('0x42')](handleError(_0x42afb0,null));};exports['update']=function(_0x26f562,_0x1ab16c){if(_0x26f562[_0x9c0f('0x47')]['id']){delete _0x26f562[_0x9c0f('0x47')]['id'];}return db[_0x9c0f('0x3d')][_0x9c0f('0x45')]({'where':{'id':_0x26f562[_0x9c0f('0x44')]['id']}})[_0x9c0f('0x25')](handleEntityNotFound(_0x1ab16c,null))[_0x9c0f('0x25')](saveUpdates(_0x26f562[_0x9c0f('0x47')],null))[_0x9c0f('0x25')](respondWithResult(_0x1ab16c,null))[_0x9c0f('0x42')](handleError(_0x1ab16c,null));};exports[_0x9c0f('0x48')]=function(_0x127b51,_0x155b54){return db[_0x9c0f('0x3d')]['find']({'where':{'id':_0x127b51[_0x9c0f('0x44')]['id']}})[_0x9c0f('0x25')](handleEntityNotFound(_0x155b54,null))[_0x9c0f('0x25')](removeEntity(_0x155b54,null))['catch'](handleError(_0x155b54,null));};exports[_0x9c0f('0x49')]=function(_0x283c08,_0x6f7da7){return db[_0x9c0f('0x3d')][_0x9c0f('0x49')]()[_0x9c0f('0x25')](respondWithResult(_0x6f7da7,null))[_0x9c0f('0x42')](handleError(_0x6f7da7,null));}; \ No newline at end of file diff --git a/server/api/chatQueueReport/chatQueueReport.model.js b/server/api/chatQueueReport/chatQueueReport.model.js new file mode 100644 index 0000000..7f62fe5 --- /dev/null +++ b/server/api/chatQueueReport/chatQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x21d589,_0x1e07f5){var _0x4ccf43=function(_0x55a33c){while(--_0x55a33c){_0x21d589['push'](_0x21d589['shift']());}};_0x4ccf43(++_0x1e07f5);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xb7e7[_0x2b4411];return _0x8e41ef;};'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 diff --git a/server/api/chatQueueReport/chatQueueReport.rpc.js b/server/api/chatQueueReport/chatQueueReport.rpc.js new file mode 100644 index 0000000..130d022 --- /dev/null +++ b/server/api/chatQueueReport/chatQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdef5=['code','message','info','CreateChatQueueReport','ChatQueueReport','create','body','options','catch','UpdateChatQueueReport','update','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xdef5,0x183));var _0x5def=function(_0x44b604,_0x21c079){_0x44b604=_0x44b604-0x0;var _0x3968ac=_0xdef5[_0x44b604];return _0x3968ac;};'use strict';var _=require(_0x5def('0x0'));var util=require(_0x5def('0x1'));var moment=require(_0x5def('0x2'));var BPromise=require(_0x5def('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5def('0x4'));var db=require(_0x5def('0x5'))['db'];var utils=require(_0x5def('0x6'));var logger=require(_0x5def('0x7'))(_0x5def('0x8'));var config=require(_0x5def('0x9'));var jayson=require(_0x5def('0xa'));var client=jayson[_0x5def('0xb')][_0x5def('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x30ae9f,_0x4687d5,_0x3c9df1){return new BPromise(function(_0x37db5a,_0x1abd2a){return client[_0x5def('0xd')](_0x30ae9f,_0x3c9df1)[_0x5def('0xe')](function(_0x151948){logger['info'](_0x5def('0xf'),_0x4687d5,_0x5def('0x10'));logger[_0x5def('0x11')](_0x5def('0x12'),_0x4687d5,_0x5def('0x10'),JSON[_0x5def('0x13')](_0x151948));if(_0x151948[_0x5def('0x14')]){if(_0x151948[_0x5def('0x14')][_0x5def('0x15')]===0x1f4){logger['error'](_0x5def('0xf'),_0x4687d5,_0x151948[_0x5def('0x14')]['message']);return _0x1abd2a(_0x151948['error'][_0x5def('0x16')]);}logger[_0x5def('0x14')](_0x5def('0xf'),_0x4687d5,_0x151948['error']['message']);return _0x37db5a(_0x151948['error']['message']);}else{logger[_0x5def('0x17')](_0x5def('0xf'),_0x4687d5,_0x5def('0x10'));_0x37db5a(_0x151948['result']['message']);}})['catch'](function(_0x27a55e){logger[_0x5def('0x14')](_0x5def('0xf'),_0x4687d5,_0x27a55e);_0x1abd2a(_0x27a55e);});});}exports[_0x5def('0x18')]=function(_0xde58f7){var _0x3c306a=this;return new Promise(function(_0x4f4da2,_0x54712f){return db[_0x5def('0x19')][_0x5def('0x1a')](_0xde58f7[_0x5def('0x1b')],{'raw':_0xde58f7[_0x5def('0x1c')]?_0xde58f7['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4c5f8e){logger['info'](_0x5def('0x18'),_0xde58f7);logger[_0x5def('0x11')](_0x5def('0x18'),_0xde58f7,JSON[_0x5def('0x13')](_0x4c5f8e));_0x4f4da2(_0x4c5f8e);})[_0x5def('0x1d')](function(_0x849ea2){logger[_0x5def('0x14')]('CreateChatQueueReport',_0x849ea2['message'],_0xde58f7);_0x54712f(_0x3c306a[_0x5def('0x14')](0x1f4,_0x849ea2['message']));});});};exports[_0x5def('0x1e')]=function(_0x3ff7c9){var _0x205ad9=this;return new Promise(function(_0x311f05,_0x257db3){return db[_0x5def('0x19')][_0x5def('0x1f')](_0x3ff7c9[_0x5def('0x1b')],{'raw':_0x3ff7c9[_0x5def('0x1c')]?_0x3ff7c9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ff7c9[_0x5def('0x1c')]?_0x3ff7c9[_0x5def('0x1c')]['where']||null:null,'attributes':_0x3ff7c9[_0x5def('0x1c')]?_0x3ff7c9[_0x5def('0x1c')][_0x5def('0x20')]||null:null,'limit':_0x3ff7c9['options']?_0x3ff7c9[_0x5def('0x1c')][_0x5def('0x21')]||null:null})[_0x5def('0xe')](function(_0x33c0af){logger[_0x5def('0x17')]('UpdateChatQueueReport',_0x3ff7c9);logger[_0x5def('0x11')]('UpdateChatQueueReport',_0x3ff7c9,JSON[_0x5def('0x13')](_0x33c0af));_0x311f05(_0x33c0af);})[_0x5def('0x1d')](function(_0x401464){logger[_0x5def('0x14')](_0x5def('0x1e'),_0x401464[_0x5def('0x16')],_0x3ff7c9);_0x257db3(_0x205ad9[_0x5def('0x14')](0x1f4,_0x401464[_0x5def('0x16')]));});});}; \ No newline at end of file diff --git a/server/api/chatQueueReport/index.js b/server/api/chatQueueReport/index.js new file mode 100644 index 0000000..9509012 --- /dev/null +++ b/server/api/chatQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x52c0=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x813d0a,_0x4fd3d7){var _0x241352=function(_0x3ca375){while(--_0x3ca375){_0x813d0a['push'](_0x813d0a['shift']());}};_0x241352(++_0x4fd3d7);}(_0x52c0,0xa5));var _0x052c=function(_0x2f81f4,_0xee02fd){_0x2f81f4=_0x2f81f4-0x0;var _0x29b0ea=_0x52c0[_0x2f81f4];return _0x29b0ea;};'use strict';var multer=require(_0x052c('0x0'));var util=require(_0x052c('0x1'));var path=require(_0x052c('0x2'));var timeout=require(_0x052c('0x3'));var express=require('express');var router=express[_0x052c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x052c('0x5'));var interaction=require(_0x052c('0x6'));var config=require('../../config/environment');var controller=require(_0x052c('0x7'));router[_0x052c('0x8')]('/',auth[_0x052c('0x9')](),controller[_0x052c('0xa')]);router['get'](_0x052c('0xb'),auth[_0x052c('0x9')](),controller['describe']);router[_0x052c('0x8')](_0x052c('0xc'),auth[_0x052c('0x9')](),controller[_0x052c('0xd')]);router[_0x052c('0xe')]('/',auth['isAuthenticated'](),controller[_0x052c('0xf')]);router[_0x052c('0x10')]('/:id',auth[_0x052c('0x9')](),controller[_0x052c('0x11')]);router[_0x052c('0x12')](_0x052c('0xc'),auth['isAuthenticated'](),controller[_0x052c('0x13')]);module[_0x052c('0x14')]=router; \ No newline at end of file diff --git a/server/api/chatTransferReport/chatTransferReport.attributes.js b/server/api/chatTransferReport/chatTransferReport.attributes.js new file mode 100644 index 0000000..f78d618 --- /dev/null +++ b/server/api/chatTransferReport/chatTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x54ea7a,_0x19df9b){var _0x65a10d=function(_0x1bf936){while(--_0x1bf936){_0x54ea7a['push'](_0x54ea7a['shift']());}};_0x65a10d(++_0x19df9b);}(_0x9bde,0xe1));var _0xe9bd=function(_0x21de91,_0x389fd8){_0x21de91=_0x21de91-0x0;var _0x18d348=_0x9bde[_0x21de91];return _0x18d348;};'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 diff --git a/server/api/chatTransferReport/chatTransferReport.controller.js b/server/api/chatTransferReport/chatTransferReport.controller.js new file mode 100644 index 0000000..e6be113 --- /dev/null +++ b/server/api/chatTransferReport/chatTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9991=['index','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','map','options','ChatTransferReport','includeAll','include','findAll','rows','catch','params','merge','find','create','body','describe','eml-format','rimraf','request-promise','moment','mustache','path','sox','to-csv','fs-extra','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','stack','name'];(function(_0xeff08e,_0x33b36f){var _0x372099=function(_0x10e875){while(--_0x10e875){_0xeff08e['push'](_0xeff08e['shift']());}};_0x372099(++_0x33b36f);}(_0x9991,0xf2));var _0x1999=function(_0x437314,_0x979155){_0x437314=_0x437314-0x0;var _0x56c465=_0x9991[_0x437314];return _0x56c465;};'use strict';var emlformat=require(_0x1999('0x0'));var rimraf=require(_0x1999('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1999('0x2'));var moment=require(_0x1999('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1999('0x4'));var util=require('util');var path=require(_0x1999('0x5'));var sox=require(_0x1999('0x6'));var csv=require(_0x1999('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1999('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1999('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x1999('0xa'));var toCsv=require('to-csv');var querystring=require(_0x1999('0xb'));var Papa=require('papaparse');var Redis=require(_0x1999('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x1999('0xd'));var as=require(_0x1999('0xe'));var hardwareService=require(_0x1999('0xf'));var logger=require(_0x1999('0x10'))(_0x1999('0x11'));var utils=require(_0x1999('0x12'));var config=require(_0x1999('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x1999('0x14'))['db'];function respondWithStatusCode(_0x554ee4,_0x44fd50){_0x44fd50=_0x44fd50||0xcc;return function(_0x4d981a){if(_0x4d981a){return _0x554ee4[_0x1999('0x15')](_0x44fd50);}return _0x554ee4[_0x1999('0x16')](_0x44fd50)[_0x1999('0x17')]();};}function respondWithResult(_0x27accf,_0x1aef8e){_0x1aef8e=_0x1aef8e||0xc8;return function(_0x22e63e){if(_0x22e63e){return _0x27accf[_0x1999('0x16')](_0x1aef8e)[_0x1999('0x18')](_0x22e63e);}};}function respondWithFilteredResult(_0x37796e,_0x5b6c18){return function(_0x58467f){if(_0x58467f){var _0x6b978f=typeof _0x5b6c18[_0x1999('0x19')]==='undefined'&&typeof _0x5b6c18[_0x1999('0x1a')]===_0x1999('0x1b');var _0x2fc3cc=_0x58467f[_0x1999('0x1c')];var _0x2c7cd7=_0x6b978f?0x0:_0x5b6c18[_0x1999('0x19')];var _0x464369=_0x6b978f?_0x58467f['count']:_0x5b6c18[_0x1999('0x19')]+_0x5b6c18[_0x1999('0x1a')];var _0x4aca69;if(_0x464369>=_0x2fc3cc){_0x464369=_0x2fc3cc;_0x4aca69=0xc8;}else{_0x4aca69=0xce;}_0x37796e[_0x1999('0x16')](_0x4aca69);return _0x37796e[_0x1999('0x1d')](_0x1999('0x1e'),_0x2c7cd7+'-'+_0x464369+'/'+_0x2fc3cc)['json'](_0x58467f);}return null;};}function patchUpdates(_0x106732){return function(_0xee83ec){try{jsonpatch[_0x1999('0x1f')](_0xee83ec,_0x106732,!![]);}catch(_0x590801){return BPromise[_0x1999('0x20')](_0x590801);}return _0xee83ec['save']();};}function saveUpdates(_0x395a58,_0x199641){return function(_0x34b4c5){if(_0x34b4c5){return _0x34b4c5[_0x1999('0x21')](_0x395a58)['then'](function(_0x4a0045){return _0x4a0045;});}return null;};}function removeEntity(_0x4d34da,_0x564edb){return function(_0x46c902){if(_0x46c902){return _0x46c902[_0x1999('0x22')]()[_0x1999('0x23')](function(){_0x4d34da['status'](0xcc)[_0x1999('0x17')]();});}};}function handleEntityNotFound(_0x25d9b1,_0x1ab3e4){return function(_0x2ac5cf){if(!_0x2ac5cf){_0x25d9b1['sendStatus'](0x194);}return _0x2ac5cf;};}function handleError(_0x1ea108,_0x2f1975){_0x2f1975=_0x2f1975||0x1f4;return function(_0x4c28a5){logger['error'](_0x4c28a5[_0x1999('0x24')]);if(_0x4c28a5[_0x1999('0x25')]){delete _0x4c28a5[_0x1999('0x25')];}_0x1ea108[_0x1999('0x16')](_0x2f1975)['send'](_0x4c28a5);};}exports[_0x1999('0x26')]=function(_0x5110f6,_0x4fc5da){var _0x2d92ea={},_0x43b6a6={},_0x2ddf9e={'count':0x0,'rows':[]};var _0x25558f=_['map'](db['ChatTransferReport'][_0x1999('0x27')],function(_0x59e821){return{'name':_0x59e821['fieldName'],'type':_0x59e821[_0x1999('0x28')][_0x1999('0x29')]};});_0x43b6a6[_0x1999('0x2a')]=_['map'](_0x25558f,'name');_0x43b6a6[_0x1999('0x2b')]=_[_0x1999('0x2c')](_0x5110f6[_0x1999('0x2b')]);_0x43b6a6['filters']=_[_0x1999('0x2d')](_0x43b6a6[_0x1999('0x2a')],_0x43b6a6[_0x1999('0x2b')]);_0x2d92ea[_0x1999('0x2e')]=_[_0x1999('0x2d')](_0x43b6a6[_0x1999('0x2a')],qs[_0x1999('0x2f')](_0x5110f6[_0x1999('0x2b')][_0x1999('0x2f')]));_0x2d92ea['attributes']=_0x2d92ea[_0x1999('0x2e')][_0x1999('0x30')]?_0x2d92ea[_0x1999('0x2e')]:_0x43b6a6[_0x1999('0x2a')];if(!_0x5110f6['query'][_0x1999('0x31')]('nolimit')){_0x2d92ea[_0x1999('0x1a')]=qs[_0x1999('0x1a')](_0x5110f6[_0x1999('0x2b')][_0x1999('0x1a')]);_0x2d92ea[_0x1999('0x19')]=qs[_0x1999('0x19')](_0x5110f6['query']['offset']);}_0x2d92ea[_0x1999('0x32')]=qs[_0x1999('0x33')](_0x5110f6[_0x1999('0x2b')][_0x1999('0x33')]);_0x2d92ea[_0x1999('0x34')]=qs[_0x1999('0x35')](_[_0x1999('0x36')](_0x5110f6[_0x1999('0x2b')],_0x43b6a6[_0x1999('0x35')]),_0x25558f);if(_0x5110f6[_0x1999('0x2b')][_0x1999('0x37')]){_0x2d92ea[_0x1999('0x34')]=_['merge'](_0x2d92ea[_0x1999('0x34')],{'$or':_[_0x1999('0x38')](_0x25558f,function(_0x549145){if(_0x549145[_0x1999('0x28')]!=='VIRTUAL'){var _0x2d2613={};_0x2d2613[_0x549145['name']]={'$like':'%'+_0x5110f6['query'][_0x1999('0x37')]+'%'};return _0x2d2613;}})});}_0x2d92ea=_['merge']({},_0x2d92ea,_0x5110f6[_0x1999('0x39')]);var _0xa8b231={'where':_0x2d92ea['where']};return db[_0x1999('0x3a')][_0x1999('0x1c')](_0xa8b231)[_0x1999('0x23')](function(_0x1936da){_0x2ddf9e['count']=_0x1936da;if(_0x5110f6[_0x1999('0x2b')][_0x1999('0x3b')]){_0x2d92ea[_0x1999('0x3c')]=[{'all':!![]}];}return db[_0x1999('0x3a')][_0x1999('0x3d')](_0x2d92ea);})['then'](function(_0x4c869a){_0x2ddf9e[_0x1999('0x3e')]=_0x4c869a;return _0x2ddf9e;})['then'](respondWithFilteredResult(_0x4fc5da,_0x2d92ea))[_0x1999('0x3f')](handleError(_0x4fc5da,null));};exports['show']=function(_0x38747e,_0xbd91b6){var _0x2ab5cc={'raw':!![],'where':{'id':_0x38747e[_0x1999('0x40')]['id']}},_0x4ffb0e={};_0x4ffb0e[_0x1999('0x2a')]=_[_0x1999('0x2c')](db['ChatTransferReport'][_0x1999('0x27')]);_0x4ffb0e[_0x1999('0x2b')]=_[_0x1999('0x2c')](_0x38747e['query']);_0x4ffb0e[_0x1999('0x35')]=_[_0x1999('0x2d')](_0x4ffb0e[_0x1999('0x2a')],_0x4ffb0e[_0x1999('0x2b')]);_0x2ab5cc[_0x1999('0x2e')]=_['intersection'](_0x4ffb0e[_0x1999('0x2a')],qs[_0x1999('0x2f')](_0x38747e[_0x1999('0x2b')][_0x1999('0x2f')]));_0x2ab5cc[_0x1999('0x2e')]=_0x2ab5cc[_0x1999('0x2e')]['length']?_0x2ab5cc[_0x1999('0x2e')]:_0x4ffb0e[_0x1999('0x2a')];if(_0x38747e[_0x1999('0x2b')][_0x1999('0x3b')]){_0x2ab5cc['include']=[{'all':!![]}];}_0x2ab5cc=_[_0x1999('0x41')]({},_0x2ab5cc,_0x38747e[_0x1999('0x39')]);return db[_0x1999('0x3a')][_0x1999('0x42')](_0x2ab5cc)['then'](handleEntityNotFound(_0xbd91b6,null))[_0x1999('0x23')](respondWithResult(_0xbd91b6,null))['catch'](handleError(_0xbd91b6,null));};exports[_0x1999('0x43')]=function(_0x3a237a,_0x3fe14f){return db[_0x1999('0x3a')]['create'](_0x3a237a[_0x1999('0x44')],{})[_0x1999('0x23')](respondWithResult(_0x3fe14f,0xc9))[_0x1999('0x3f')](handleError(_0x3fe14f,null));};exports['update']=function(_0x3a5b7a,_0x503627){if(_0x3a5b7a[_0x1999('0x44')]['id']){delete _0x3a5b7a[_0x1999('0x44')]['id'];}return db[_0x1999('0x3a')][_0x1999('0x42')]({'where':{'id':_0x3a5b7a[_0x1999('0x40')]['id']}})['then'](handleEntityNotFound(_0x503627,null))['then'](saveUpdates(_0x3a5b7a[_0x1999('0x44')],null))[_0x1999('0x23')](respondWithResult(_0x503627,null))[_0x1999('0x3f')](handleError(_0x503627,null));};exports['destroy']=function(_0x732292,_0x378fbf){return db[_0x1999('0x3a')][_0x1999('0x42')]({'where':{'id':_0x732292[_0x1999('0x40')]['id']}})[_0x1999('0x23')](handleEntityNotFound(_0x378fbf,null))[_0x1999('0x23')](removeEntity(_0x378fbf,null))[_0x1999('0x3f')](handleError(_0x378fbf,null));};exports[_0x1999('0x45')]=function(_0x13289b,_0x3bb3c2){return db[_0x1999('0x3a')]['describe']()[_0x1999('0x23')](respondWithResult(_0x3bb3c2,null))['catch'](handleError(_0x3bb3c2,null));}; \ No newline at end of file diff --git a/server/api/chatTransferReport/chatTransferReport.model.js b/server/api/chatTransferReport/chatTransferReport.model.js new file mode 100644 index 0000000..f479f27 --- /dev/null +++ b/server/api/chatTransferReport/chatTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3eb3=['path','rimraf','../../config/environment','./chatTransferReport.attributes','report_chat_transfer','uniqueid','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x3088bf,_0x4f34b1){var _0x226d9f=function(_0x224579){while(--_0x224579){_0x3088bf['push'](_0x3088bf['shift']());}};_0x226d9f(++_0x4f34b1);}(_0x3eb3,0xcc));var _0x33eb=function(_0x29adfe,_0x4593aa){_0x29adfe=_0x29adfe-0x0;var _0x295dc1=_0x3eb3[_0x29adfe];return _0x295dc1;};'use strict';var _=require(_0x33eb('0x0'));var util=require(_0x33eb('0x1'));var logger=require(_0x33eb('0x2'))('api');var moment=require('moment');var BPromise=require(_0x33eb('0x3'));var rp=require(_0x33eb('0x4'));var fs=require('fs');var path=require(_0x33eb('0x5'));var rimraf=require(_0x33eb('0x6'));var config=require(_0x33eb('0x7'));var attributes=require(_0x33eb('0x8'));module['exports']=function(_0x38ec6b,_0x495e26){return _0x38ec6b['define']('ChatTransferReport',attributes,{'tableName':_0x33eb('0x9'),'paranoid':![],'indexes':[{'name':_0x33eb('0xa'),'fields':[_0x33eb('0xa')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/chatTransferReport/chatTransferReport.rpc.js b/server/api/chatTransferReport/chatTransferReport.rpc.js new file mode 100644 index 0000000..2175a9d --- /dev/null +++ b/server/api/chatTransferReport/chatTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcfc8=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb'];(function(_0x268ad0,_0x3cdfcd){var _0xc8139a=function(_0x248abd){while(--_0x248abd){_0x268ad0['push'](_0x268ad0['shift']());}};_0xc8139a(++_0x3cdfcd);}(_0xcfc8,0x17b));var _0x8cfc=function(_0x5945a3,_0x3cb745){_0x5945a3=_0x5945a3-0x0;var _0xa4949d=_0xcfc8[_0x5945a3];return _0xa4949d;};'use strict';var _=require(_0x8cfc('0x0'));var util=require(_0x8cfc('0x1'));var moment=require('moment');var BPromise=require(_0x8cfc('0x2'));var rs=require(_0x8cfc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8cfc('0x4'))['db'];var utils=require(_0x8cfc('0x5'));var logger=require(_0x8cfc('0x6'))(_0x8cfc('0x7'));var config=require(_0x8cfc('0x8'));var jayson=require(_0x8cfc('0x9'));var client=jayson[_0x8cfc('0xa')][_0x8cfc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d6192,_0x3ec99d,_0x2df522){return new BPromise(function(_0x1a0450,_0x4f333d){return client[_0x8cfc('0xc')](_0x4d6192,_0x2df522)[_0x8cfc('0xd')](function(_0x133f3d){logger[_0x8cfc('0xe')](_0x8cfc('0xf'),_0x3ec99d,'request\x20sent');logger[_0x8cfc('0x10')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x3ec99d,_0x8cfc('0x11'),JSON[_0x8cfc('0x12')](_0x133f3d));if(_0x133f3d[_0x8cfc('0x13')]){if(_0x133f3d['error'][_0x8cfc('0x14')]===0x1f4){logger[_0x8cfc('0x13')]('ChatTransferReport,\x20%s,\x20%s',_0x3ec99d,_0x133f3d[_0x8cfc('0x13')][_0x8cfc('0x15')]);return _0x4f333d(_0x133f3d[_0x8cfc('0x13')][_0x8cfc('0x15')]);}logger[_0x8cfc('0x13')](_0x8cfc('0xf'),_0x3ec99d,_0x133f3d[_0x8cfc('0x13')]['message']);return _0x1a0450(_0x133f3d[_0x8cfc('0x13')]['message']);}else{logger['info'](_0x8cfc('0xf'),_0x3ec99d,'request\x20sent');_0x1a0450(_0x133f3d[_0x8cfc('0x16')]['message']);}})[_0x8cfc('0x17')](function(_0x378965){logger[_0x8cfc('0x13')](_0x8cfc('0xf'),_0x3ec99d,_0x378965);_0x4f333d(_0x378965);});});} \ No newline at end of file diff --git a/server/api/chatTransferReport/index.js b/server/api/chatTransferReport/index.js new file mode 100644 index 0000000..437c505 --- /dev/null +++ b/server/api/chatTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2071=['describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get'];(function(_0x10bb2b,_0x4f1976){var _0x2946d7=function(_0x3274d6){while(--_0x3274d6){_0x10bb2b['push'](_0x10bb2b['shift']());}};_0x2946d7(++_0x4f1976);}(_0x2071,0xb1));var _0x1207=function(_0x326d35,_0x4f65b3){_0x326d35=_0x326d35-0x0;var _0xd3f8f3=_0x2071[_0x326d35];return _0xd3f8f3;};'use strict';var multer=require(_0x1207('0x0'));var util=require(_0x1207('0x1'));var path=require(_0x1207('0x2'));var timeout=require('connect-timeout');var express=require(_0x1207('0x3'));var router=express[_0x1207('0x4')]();var fs_extra=require(_0x1207('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1207('0x6'));var config=require(_0x1207('0x7'));var controller=require(_0x1207('0x8'));router['get']('/',auth[_0x1207('0x9')](),controller[_0x1207('0xa')]);router[_0x1207('0xb')]('/describe',auth[_0x1207('0x9')](),controller[_0x1207('0xc')]);router[_0x1207('0xb')](_0x1207('0xd'),auth[_0x1207('0x9')](),controller[_0x1207('0xe')]);router['post']('/',auth[_0x1207('0x9')](),controller[_0x1207('0xf')]);router[_0x1207('0x10')]('/:id',auth[_0x1207('0x9')](),controller[_0x1207('0x11')]);router[_0x1207('0x12')](_0x1207('0xd'),auth[_0x1207('0x9')](),controller[_0x1207('0x13')]);module[_0x1207('0x14')]=router; \ No newline at end of file diff --git a/server/api/chatWebsite/chatWebsite.attributes.js b/server/api/chatWebsite/chatWebsite.attributes.js new file mode 100644 index 0000000..22245bf --- /dev/null +++ b/server/api/chatWebsite/chatWebsite.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1be1=['textarea','Comments','Leave\x20your\x20comments','offlineForm','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','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','CHAT','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','exports','STRING','address','email','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Send','Contact\x20us','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb','TEXT','stringify','input','name','getDataValue','onlineForm','parse','setDataValue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1be1,0x192));var _0x11be=function(_0x298832,_0x152118){_0x298832=_0x298832-0x0;var _0x366814=_0x1be1[_0x298832];return _0x366814;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x11be('0x0')]={'name':{'type':Sequelize[_0x11be('0x1')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x11be('0x2')},'description':{'type':Sequelize[_0x11be('0x1')]},'mapKey':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0x3')},'key':{'type':Sequelize[_0x11be('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x11be('0x4'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x11be('0x1')],'allowNull':![],'defaultValue':_0x11be('0x4'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x11be('0x1')],'allowNull':![],'defaultValue':_0x11be('0x5'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x11be('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x11be('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x11be('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x11be('0x8')](_0x11be('0x9'),_0x11be('0xa')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0xb')},'start_chat_button':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0xc')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0xd')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0xe')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0xf')},'formSubmitFailureMessage':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x10')},'noteTitle':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x11')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0x12')},'closingMessageButton':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0xc')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0x13')},'ratingType':{'type':Sequelize[_0x11be('0x8')](_0x11be('0x14'),_0x11be('0x15')),'defaultValue':_0x11be('0x14')},'ratingStarsNumber':{'type':Sequelize[_0x11be('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x11be('0x16')],'defaultValue':function(){return JSON[_0x11be('0x17')]({'items':[{'type':_0x11be('0x18'),'variable':null,'config':{'placeholder':_0x11be('0x19'),'type':'text','required':!![]},'props':{'title':_0x11be('0x19'),'helpText':''}},{'type':_0x11be('0x18'),'props':{'title':_0x11be('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x11be('0x1a')](_0x11be('0x1b'))?JSON[_0x11be('0x1c')](this['getDataValue'](_0x11be('0x1b'))):{};},'set':function(_0x518e2b){return this[_0x11be('0x1d')]('onlineForm',JSON[_0x11be('0x17')](_0x518e2b));}},'offlineForm':{'type':Sequelize[_0x11be('0x16')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x11be('0x18'),'props':{'title':_0x11be('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x11be('0x3'),'type':_0x11be('0x3')},'variable':null},{'type':_0x11be('0x1e'),'config':{'placeholder':_0x11be('0x1f')},'props':{'title':_0x11be('0x1f'),'helpText':_0x11be('0x20')}}],'fromKey':0x0});},'get':function(){return this[_0x11be('0x1a')]('offlineForm')?JSON[_0x11be('0x1c')](this['getDataValue'](_0x11be('0x21'))):{};},'set':function(_0x147b62){return this['setDataValue']('offlineForm',JSON[_0x11be('0x17')](_0x147b62));}},'token':{'type':Sequelize[_0x11be('0x1')],'defaultValue':function(){return rs[_0x11be('0x22')]();}},'autoclose':{'type':Sequelize[_0x11be('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x11be('0x1')]},'forwardOffline':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x11be('0x1')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0x23')},'waitingMessage':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x24')},'offlineMessageSubject':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x25')},'offlineMessageBody':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x11be('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x26')},'skipUnmanaged':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x27')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}
{{#queue}}Queue:\x20{{queue.name}}
{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x11be('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x11be('0x1')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x11be('0x6')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0x28')},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x11be('0x29')},'defaultTitle':{'type':Sequelize[_0x11be('0x1')]},'customerAvatar':{'type':Sequelize[_0x11be('0x16')]},'showCustomerAvatar':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x11be('0x1')],'allowNull':![],'defaultValue':_0x11be('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x11be('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x11be('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x11be('0x1')],'defaultValue':_0x11be('0x2b')},'systemAvatar':{'type':Sequelize[_0x11be('0x16')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x11be('0x6')],'comment':_0x11be('0x2c')},'mandatoryDisposition':{'type':Sequelize[_0x11be('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2618f5){if(!_0x2618f5)this[_0x11be('0x1d')]('mandatoryDispositionPauseId',null);this[_0x11be('0x1d')](_0x11be('0x2d'),_0x2618f5);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x11be('0x1')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x11be('0x2e')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x11be('0x2f');}},'vidaooMetadata':{'type':Sequelize[_0x11be('0x16')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x11be('0x16')]}}; \ No newline at end of file diff --git a/server/api/chatWebsite/chatWebsite.controller.js b/server/api/chatWebsite/chatWebsite.controller.js new file mode 100644 index 0000000..dfcd795 --- /dev/null +++ b/server/api/chatWebsite/chatWebsite.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3f0b=['getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','sitepic','file','filename','agentAvatar','systemAvatar','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','existsSync','join','server/files/images/logos/','root','server/files/images/avatars/','download','getCustomerAvatar','customerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','ValidationError','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','DESC','ChatApplication','Applications','applications','list','orderBy','account','Contacts','contact','customerIp','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','referer','browser','format','%s\x20%s','version','unknown','%s\x20%s\x20%s','device','vendor','stringify','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','close','unmanaged','ChatMessage','UserId','User','unshift','agent','*,*,*,*','forcedOwnership','startRouting','EventManager','notify','offline','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','ChatOfflineMessage','originalname','mimetype','server','files','attachments','offline-chat','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','SendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','Owner','fullname','internal','color','tag','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','getProactiveActions','virtual','License','increment','chatLicenseExceeded','Intervals','push','some','server/files/chat/iframe.ejs','URL','address','3.1.0','remote','x-real-ip','connection','replace','labelText','textColor','textButtonColor','color_button','hideWhenOffline','IntervalId','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','priority','finally','getApplications','omit','ChatProactiveAction','getFields','online','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','mustache','util','ejs','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','url','../../mysqldb','redis','defaults','socket.io-emitter','./chatWebsite.socket','html-to-text','jayson/promise','client','http','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','map','VIRTUAL','options','count','includeAll','include','findAll','rows','show','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','addDisposition','ChatWebsiteId','Disposition'];(function(_0x448f76,_0x466124){var _0x165970=function(_0x2c15b6){while(--_0x2c15b6){_0x448f76['push'](_0x448f76['shift']());}};_0x165970(++_0x466124);}(_0x3f0b,0x1ee));var _0xb3f0=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x3f0b[_0x513aa5];return _0x1a1a7c;};'use strict';var BPromise=require('bluebird');var Mustache=require(_0xb3f0('0x0'));var util=require(_0xb3f0('0x1'));var path=require('path');var ejs=require(_0xb3f0('0x2'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var querystring=require(_0xb3f0('0x3'));var Redis=require(_0xb3f0('0x4'));var qs=require(_0xb3f0('0x5'));var logger=require('../../config/logger')(_0xb3f0('0x6'));var config=require(_0xb3f0('0x7'));var url=require(_0xb3f0('0x8'));var db=require(_0xb3f0('0x9'))['db'];config[_0xb3f0('0xa')]=_[_0xb3f0('0xb')](config[_0xb3f0('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xb3f0('0xc'))(new Redis(config[_0xb3f0('0xa')]));require(_0xb3f0('0xd'))['register'](socket);var htmlToText=require(_0xb3f0('0xe'));var jayson=require(_0xb3f0('0xf'));var client=jayson[_0xb3f0('0x10')][_0xb3f0('0x11')]({'port':0x232c});var client9002=jayson[_0xb3f0('0x10')]['http']({'port':0x232a});var client9003=jayson['client'][_0xb3f0('0x11')]({'port':0x232b});var client9001=jayson[_0xb3f0('0x10')]['http']({'port':0x2329});function respondWithRpcPromise(_0x26ebaf,_0x2e9b97,_0x10af85,_0x150167){return new BPromise(function(_0x14e13f,_0x2de4d4){var _0x58f87f=_0x150167||client;return _0x58f87f[_0xb3f0('0x12')](_0x26ebaf,_0x10af85)[_0xb3f0('0x13')](function(_0x23966b){logger[_0xb3f0('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x2e9b97,'request\x20sent');logger[_0xb3f0('0x15')](_0xb3f0('0x16'),_0x2e9b97,_0xb3f0('0x17'),JSON['stringify'](_0x23966b));if(_0x23966b[_0xb3f0('0x18')]){if(_0x23966b[_0xb3f0('0x18')][_0xb3f0('0x19')]===0x1f4){logger[_0xb3f0('0x18')](_0xb3f0('0x1a'),_0x2e9b97,_0x23966b[_0xb3f0('0x18')][_0xb3f0('0x1b')]);return _0x2de4d4(_0x23966b[_0xb3f0('0x18')][_0xb3f0('0x1b')]);}logger['error'](_0xb3f0('0x1a'),_0x2e9b97,_0x23966b[_0xb3f0('0x18')][_0xb3f0('0x1b')]);return _0x14e13f(_0x23966b['error'][_0xb3f0('0x1b')]);}else{logger['info'](_0xb3f0('0x1a'),_0x2e9b97,_0xb3f0('0x17'));_0x14e13f(_0x23966b[_0xb3f0('0x1c')][_0xb3f0('0x1b')]);}})[_0xb3f0('0x1d')](function(_0x35b3b5){logger[_0xb3f0('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x2e9b97,_0x35b3b5);_0x2de4d4(_0x35b3b5);});});}function respondWithStatusCode(_0x4ae9de,_0x2baf56){_0x2baf56=_0x2baf56||0xcc;return function(_0x526e7f){if(_0x526e7f){return _0x4ae9de[_0xb3f0('0x1e')](_0x2baf56);}return _0x4ae9de[_0xb3f0('0x1f')](_0x2baf56)[_0xb3f0('0x20')]();};}function respondWithResult(_0x36443d,_0x473295){_0x473295=_0x473295||0xc8;return function(_0x2f9bd5){if(_0x2f9bd5){return _0x36443d['status'](_0x473295)[_0xb3f0('0x21')](_0x2f9bd5);}};}function respondWithFilteredResult(_0x4b4856,_0x436fb1){return function(_0x4f046b){if(_0x4f046b){var _0x3f7a7a=typeof _0x436fb1['offset']===_0xb3f0('0x22')&&typeof _0x436fb1[_0xb3f0('0x23')]===_0xb3f0('0x22');var _0xbfad27=_0x4f046b['count'];var _0x4d0c44=_0x3f7a7a?0x0:_0x436fb1['offset'];var _0xdb486b=_0x3f7a7a?_0x4f046b['count']:_0x436fb1[_0xb3f0('0x24')]+_0x436fb1[_0xb3f0('0x23')];var _0x3f8c92;if(_0xdb486b>=_0xbfad27){_0xdb486b=_0xbfad27;_0x3f8c92=0xc8;}else{_0x3f8c92=0xce;}_0x4b4856[_0xb3f0('0x1f')](_0x3f8c92);return _0x4b4856[_0xb3f0('0x25')](_0xb3f0('0x26'),_0x4d0c44+'-'+_0xdb486b+'/'+_0xbfad27)[_0xb3f0('0x21')](_0x4f046b);}return null;};}function saveUpdates(_0x1fc89b){return function(_0x2bfe4b){if(_0x2bfe4b){return _0x2bfe4b['update'](_0x1fc89b)[_0xb3f0('0x13')](function(_0xfa6297){return _0xfa6297;});}return null;};}function removeEntity(_0x2edcae){return function(_0x5bad58){if(_0x5bad58){return _0x5bad58[_0xb3f0('0x27')]()[_0xb3f0('0x13')](function(){var _0x2ddac8=_0x5bad58[_0xb3f0('0x28')]({'plain':!![]});var _0x23f1a2=_0xb3f0('0x29');return db[_0xb3f0('0x2a')]['destroy']({'where':{'type':_0x23f1a2,'resourceId':_0x2ddac8['id']}})[_0xb3f0('0x13')](function(){return _0x5bad58;});})[_0xb3f0('0x13')](function(){_0x2edcae[_0xb3f0('0x1f')](0xcc)[_0xb3f0('0x20')]();});}};}function handleEntityNotFound(_0x1a5516){return function(_0x26e198){if(!_0x26e198){_0x1a5516[_0xb3f0('0x1e')](0x194);}return _0x26e198;};}function handleError(_0x560f03,_0x1ffdc8){_0x1ffdc8=_0x1ffdc8||0x1f4;return function(_0x1c21ac){logger[_0xb3f0('0x18')](_0x1c21ac[_0xb3f0('0x2b')]);if(_0x1c21ac[_0xb3f0('0x2c')]){delete _0x1c21ac[_0xb3f0('0x2c')];}_0x560f03[_0xb3f0('0x1f')](_0x1ffdc8)[_0xb3f0('0x2d')](_0x1c21ac);};}exports[_0xb3f0('0x2e')]=function(_0x5e7aa7,_0x1fea84){var _0x54ff46={'include':[{'model':db[_0xb3f0('0x2f')],'as':_0xb3f0('0x30')}]},_0x22dc1a={},_0x27535d={'count':0x0,'rows':[]};var _0x5e8eff=_['map'](db[_0xb3f0('0x31')][_0xb3f0('0x32')],function(_0x58f93a){return{'name':_0x58f93a[_0xb3f0('0x33')],'type':_0x58f93a[_0xb3f0('0x34')]['key']};});_0x22dc1a['model']=_['map'](_0x5e8eff,_0xb3f0('0x2c'));_0x22dc1a[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x5e7aa7['query']);_0x22dc1a[_0xb3f0('0x37')]=_[_0xb3f0('0x38')](_0x22dc1a[_0xb3f0('0x39')],_0x22dc1a[_0xb3f0('0x35')]);_0x54ff46[_0xb3f0('0x3a')]=_[_0xb3f0('0x38')](_0x22dc1a[_0xb3f0('0x39')],qs[_0xb3f0('0x3b')](_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x3b')]));_0x54ff46[_0xb3f0('0x3a')]=_0x54ff46[_0xb3f0('0x3a')][_0xb3f0('0x3c')]?_0x54ff46[_0xb3f0('0x3a')]:_0x22dc1a[_0xb3f0('0x39')];if(!_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x3d')](_0xb3f0('0x3e'))){_0x54ff46[_0xb3f0('0x23')]=qs[_0xb3f0('0x23')](_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x23')]);_0x54ff46[_0xb3f0('0x24')]=qs[_0xb3f0('0x24')](_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x24')]);}_0x54ff46['order']=qs[_0xb3f0('0x3f')](_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x3f')]);_0x54ff46['where']=qs[_0xb3f0('0x37')](_[_0xb3f0('0x40')](_0x5e7aa7[_0xb3f0('0x35')],_0x22dc1a[_0xb3f0('0x37')]),_0x5e8eff);if(_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x41')]){_0x54ff46[_0xb3f0('0x42')]=_[_0xb3f0('0x43')](_0x54ff46[_0xb3f0('0x42')],{'$or':_[_0xb3f0('0x44')](_0x5e8eff,function(_0x216419){if(_0x216419[_0xb3f0('0x34')]!==_0xb3f0('0x45')){var _0x5f2aa2={};_0x5f2aa2[_0x216419[_0xb3f0('0x2c')]]={'$like':'%'+_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x41')]+'%'};return _0x5f2aa2;}})});}_0x54ff46=_[_0xb3f0('0x43')]({},_0x54ff46,_0x5e7aa7[_0xb3f0('0x46')]);var _0x443143={'where':_0x54ff46[_0xb3f0('0x42')]};return db[_0xb3f0('0x31')][_0xb3f0('0x47')](_0x443143)[_0xb3f0('0x13')](function(_0x5dcfc3){_0x27535d[_0xb3f0('0x47')]=_0x5dcfc3;if(_0x5e7aa7[_0xb3f0('0x35')][_0xb3f0('0x48')]){_0x54ff46[_0xb3f0('0x49')]=[{'all':!![]}];}return db[_0xb3f0('0x31')][_0xb3f0('0x4a')](_0x54ff46);})['then'](function(_0x1feae4){_0x27535d[_0xb3f0('0x4b')]=_0x1feae4;return _0x27535d;})['then'](respondWithFilteredResult(_0x1fea84,_0x54ff46))[_0xb3f0('0x1d')](handleError(_0x1fea84,null));};exports[_0xb3f0('0x4c')]=function(_0x54e03d,_0x635a17){var _0x294613={'raw':![],'where':{'id':_0x54e03d['params']['id']},'include':[{'model':db[_0xb3f0('0x2f')],'as':_0xb3f0('0x30')}]},_0x5175cf={};_0x5175cf['model']=_['keys'](db[_0xb3f0('0x31')][_0xb3f0('0x32')]);_0x5175cf[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x54e03d[_0xb3f0('0x35')]);_0x5175cf[_0xb3f0('0x37')]=_[_0xb3f0('0x38')](_0x5175cf[_0xb3f0('0x39')],_0x5175cf[_0xb3f0('0x35')]);_0x294613['attributes']=_[_0xb3f0('0x38')](_0x5175cf[_0xb3f0('0x39')],qs[_0xb3f0('0x3b')](_0x54e03d['query'][_0xb3f0('0x3b')]));_0x294613[_0xb3f0('0x3a')]=_0x294613[_0xb3f0('0x3a')][_0xb3f0('0x3c')]?_0x294613[_0xb3f0('0x3a')]:_0x5175cf[_0xb3f0('0x39')];if(_0x54e03d[_0xb3f0('0x35')][_0xb3f0('0x48')]){_0x294613['include']=[{'all':!![]}];}_0x294613=_['merge']({},_0x294613,_0x54e03d[_0xb3f0('0x46')]);return db[_0xb3f0('0x31')][_0xb3f0('0x4d')](_0x294613)['then'](handleEntityNotFound(_0x635a17,null))[_0xb3f0('0x13')](respondWithResult(_0x635a17,null))[_0xb3f0('0x1d')](handleError(_0x635a17,null));};exports[_0xb3f0('0x4e')]=function(_0x5f4c19,_0x1d5beb){return db['ChatWebsite'][_0xb3f0('0x4e')](_0x5f4c19[_0xb3f0('0x4f')],{})[_0xb3f0('0x13')](function(_0x59d10a){var _0x1b0311=_0x5f4c19[_0xb3f0('0x50')][_0xb3f0('0x28')]({'plain':!![]});if(!_0x1b0311)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b0311[_0xb3f0('0x51')]===_0xb3f0('0x50')){var _0x4ca1ad=_0x59d10a[_0xb3f0('0x28')]({'plain':!![]});var _0x46152e=_0xb3f0('0x29');return db[_0xb3f0('0x52')]['find']({'where':{'name':_0x46152e,'userProfileId':_0x1b0311[_0xb3f0('0x53')]},'raw':!![]})[_0xb3f0('0x13')](function(_0x268444){if(_0x268444&&_0x268444[_0xb3f0('0x54')]===0x0){return db[_0xb3f0('0x2a')][_0xb3f0('0x4e')]({'name':_0x4ca1ad[_0xb3f0('0x2c')],'resourceId':_0x4ca1ad['id'],'type':_0x268444[_0xb3f0('0x2c')],'sectionId':_0x268444['id']},{})['then'](function(){return _0x59d10a;});}else{return _0x59d10a;}})[_0xb3f0('0x1d')](function(_0x169b77){logger['error'](_0xb3f0('0x55'),_0x169b77);throw _0x169b77;});}return _0x59d10a;})[_0xb3f0('0x13')](respondWithResult(_0x1d5beb,0xc9))[_0xb3f0('0x1d')](handleError(_0x1d5beb,null));};exports[_0xb3f0('0x56')]=function(_0x494f5c,_0x2a9f1e){if(_0x494f5c['body']['id']){delete _0x494f5c['body']['id'];}return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x494f5c[_0xb3f0('0x57')]['id']},'include':[{'model':db[_0xb3f0('0x2f')],'as':_0xb3f0('0x30')}]})['then'](handleEntityNotFound(_0x2a9f1e,null))['then'](saveUpdates(_0x494f5c[_0xb3f0('0x4f')],null))[_0xb3f0('0x13')](respondWithResult(_0x2a9f1e,null))[_0xb3f0('0x1d')](handleError(_0x2a9f1e,null));};exports['destroy']=function(_0x2d1d7a,_0x441b3f){return db[_0xb3f0('0x31')]['find']({'where':{'id':_0x2d1d7a['params']['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x441b3f,null))['then'](removeEntity(_0x441b3f,null))['catch'](handleError(_0x441b3f,null));};exports[_0xb3f0('0x58')]=function(_0x21a405,_0x284240){return db['ChatWebsite'][_0xb3f0('0x58')]()[_0xb3f0('0x13')](respondWithResult(_0x284240,null))['catch'](handleError(_0x284240,null));};exports[_0xb3f0('0x59')]=function(_0x3368c9,_0x3c3cfd){if(_0x3368c9[_0xb3f0('0x4f')]['id']){delete _0x3368c9[_0xb3f0('0x4f')]['id'];}return db[_0xb3f0('0x31')]['find']({'where':{'id':_0x3368c9[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x3c3cfd,null))[_0xb3f0('0x13')](function(_0x30732c){if(_0x30732c){_0x3368c9[_0xb3f0('0x4f')][_0xb3f0('0x5a')]=_0x30732c['id'];return db[_0xb3f0('0x5b')][_0xb3f0('0x4e')](_0x3368c9[_0xb3f0('0x4f')]);}})[_0xb3f0('0x13')](respondWithResult(_0x3c3cfd,null))[_0xb3f0('0x1d')](handleError(_0x3c3cfd,null));};exports[_0xb3f0('0x5c')]=function(_0x168998,_0x4e738a){var _0x58d0ea={'raw':![],'where':{}};var _0x58981d={};var _0x3e6d2b={'count':0x0,'rows':[]};return db[_0xb3f0('0x31')][_0xb3f0('0x5d')]({'where':{'id':_0x168998[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x4e738a,null))[_0xb3f0('0x13')](function(_0x3fee2f){if(_0x3fee2f){_0x58981d[_0xb3f0('0x39')]=_[_0xb3f0('0x36')](db[_0xb3f0('0x5b')][_0xb3f0('0x32')]);_0x58981d[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x168998[_0xb3f0('0x35')]);_0x58981d[_0xb3f0('0x37')]=_['intersection'](_0x58981d[_0xb3f0('0x39')],_0x58981d[_0xb3f0('0x35')]);_0x58d0ea[_0xb3f0('0x3a')]=_[_0xb3f0('0x38')](_0x58981d['model'],qs[_0xb3f0('0x3b')](_0x168998[_0xb3f0('0x35')][_0xb3f0('0x3b')]));_0x58d0ea[_0xb3f0('0x3a')]=_0x58d0ea[_0xb3f0('0x3a')][_0xb3f0('0x3c')]?_0x58d0ea[_0xb3f0('0x3a')]:_0x58981d['model'];if(!_0x168998[_0xb3f0('0x35')][_0xb3f0('0x3d')]('nolimit')){_0x58d0ea[_0xb3f0('0x23')]=qs[_0xb3f0('0x23')](_0x168998['query'][_0xb3f0('0x23')]);_0x58d0ea[_0xb3f0('0x24')]=qs['offset'](_0x168998[_0xb3f0('0x35')]['offset']);}_0x58d0ea[_0xb3f0('0x5e')]=qs['sort'](_0x168998['query'][_0xb3f0('0x3f')]);_0x58d0ea[_0xb3f0('0x42')]=qs[_0xb3f0('0x37')](_[_0xb3f0('0x40')](_0x168998[_0xb3f0('0x35')],_0x58981d[_0xb3f0('0x37')]));_0x58d0ea[_0xb3f0('0x42')][_0xb3f0('0x5a')]=_0x3fee2f['id'];if(_0x168998[_0xb3f0('0x35')][_0xb3f0('0x41')]){_0x58d0ea[_0xb3f0('0x42')]=_['merge'](_0x58d0ea[_0xb3f0('0x42')],{'$or':_['map'](_0x58d0ea[_0xb3f0('0x3a')],function(_0x279c02){var _0x356874={};_0x356874[_0x279c02]={'$like':'%'+_0x168998['query'][_0xb3f0('0x41')]+'%'};return _0x356874;})});}_0x58d0ea=_['merge']({},_0x58d0ea,_0x168998[_0xb3f0('0x46')]);return db['Disposition'][_0xb3f0('0x47')]({'where':_0x58d0ea[_0xb3f0('0x42')]})[_0xb3f0('0x13')](function(_0x2f86a0){_0x3e6d2b['count']=_0x2f86a0;if(_0x168998[_0xb3f0('0x35')][_0xb3f0('0x48')]){_0x58d0ea[_0xb3f0('0x49')]=[{'all':!![]}];}return db[_0xb3f0('0x5b')][_0xb3f0('0x4a')](_0x58d0ea);})[_0xb3f0('0x13')](function(_0x3c0f55){_0x3e6d2b[_0xb3f0('0x4b')]=_0x3c0f55;return _0x3e6d2b;});}})[_0xb3f0('0x13')](respondWithFilteredResult(_0x4e738a,_0x58d0ea))['catch'](handleError(_0x4e738a,null));};exports[_0xb3f0('0x5f')]=function(_0x4c2f37,_0x1c217c){return db[_0xb3f0('0x31')]['find']({'where':{'id':_0x4c2f37[_0xb3f0('0x57')]['id']}})['then'](handleEntityNotFound(_0x1c217c,null))[_0xb3f0('0x13')](function(_0x3cb81c){if(_0x3cb81c){return _0x3cb81c[_0xb3f0('0x5f')](_0x4c2f37[_0xb3f0('0x35')][_0xb3f0('0x60')]);}})[_0xb3f0('0x13')](respondWithStatusCode(_0x1c217c,null))[_0xb3f0('0x1d')](handleError(_0x1c217c,null));};exports[_0xb3f0('0x61')]=function(_0x1d0176,_0x5d53e4){if(_0x1d0176[_0xb3f0('0x4f')]['id']){delete _0x1d0176[_0xb3f0('0x4f')]['id'];}return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x1d0176[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x5d53e4,null))[_0xb3f0('0x13')](function(_0x467110){if(_0x467110){_0x1d0176[_0xb3f0('0x4f')][_0xb3f0('0x5a')]=_0x467110['id'];return db[_0xb3f0('0x62')]['create'](_0x1d0176[_0xb3f0('0x4f')]);}})['then'](respondWithResult(_0x5d53e4,null))[_0xb3f0('0x1d')](handleError(_0x5d53e4,null));};exports[_0xb3f0('0x63')]=function(_0x53c02b,_0xca0040){var _0x458225={'raw':![],'where':{}};var _0x46b4d7={};var _0x5d0289={'count':0x0,'rows':[]};return db[_0xb3f0('0x31')][_0xb3f0('0x5d')]({'where':{'id':_0x53c02b[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0xca0040,null))['then'](function(_0x2f274c){if(_0x2f274c){_0x46b4d7['model']=_[_0xb3f0('0x36')](db[_0xb3f0('0x62')][_0xb3f0('0x32')]);_0x46b4d7[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x53c02b['query']);_0x46b4d7[_0xb3f0('0x37')]=_[_0xb3f0('0x38')](_0x46b4d7['model'],_0x46b4d7[_0xb3f0('0x35')]);_0x458225[_0xb3f0('0x3a')]=_[_0xb3f0('0x38')](_0x46b4d7[_0xb3f0('0x39')],qs[_0xb3f0('0x3b')](_0x53c02b[_0xb3f0('0x35')][_0xb3f0('0x3b')]));_0x458225[_0xb3f0('0x3a')]=_0x458225[_0xb3f0('0x3a')]['length']?_0x458225[_0xb3f0('0x3a')]:_0x46b4d7[_0xb3f0('0x39')];if(!_0x53c02b[_0xb3f0('0x35')][_0xb3f0('0x3d')](_0xb3f0('0x3e'))){_0x458225[_0xb3f0('0x23')]=qs['limit'](_0x53c02b[_0xb3f0('0x35')][_0xb3f0('0x23')]);_0x458225[_0xb3f0('0x24')]=qs[_0xb3f0('0x24')](_0x53c02b[_0xb3f0('0x35')]['offset']);}_0x458225[_0xb3f0('0x5e')]=qs['sort'](_0x53c02b[_0xb3f0('0x35')][_0xb3f0('0x3f')]);_0x458225[_0xb3f0('0x42')]=qs[_0xb3f0('0x37')](_[_0xb3f0('0x40')](_0x53c02b[_0xb3f0('0x35')],_0x46b4d7['filters']));_0x458225[_0xb3f0('0x42')][_0xb3f0('0x5a')]=_0x2f274c['id'];if(_0x53c02b['query']['filter']){_0x458225['where']=_[_0xb3f0('0x43')](_0x458225[_0xb3f0('0x42')],{'$or':_[_0xb3f0('0x44')](_0x458225[_0xb3f0('0x3a')],function(_0x4ea61b){var _0x23ce1b={};_0x23ce1b[_0x4ea61b]={'$like':'%'+_0x53c02b['query']['filter']+'%'};return _0x23ce1b;})});}_0x458225=_['merge']({},_0x458225,_0x53c02b[_0xb3f0('0x46')]);return db[_0xb3f0('0x62')][_0xb3f0('0x47')]({'where':_0x458225[_0xb3f0('0x42')]})['then'](function(_0x2ae805){_0x5d0289[_0xb3f0('0x47')]=_0x2ae805;if(_0x53c02b[_0xb3f0('0x35')][_0xb3f0('0x48')]){_0x458225[_0xb3f0('0x49')]=[{'all':!![]}];}return db[_0xb3f0('0x62')][_0xb3f0('0x4a')](_0x458225);})['then'](function(_0x1b3310){_0x5d0289['rows']=_0x1b3310;return _0x5d0289;});}})[_0xb3f0('0x13')](respondWithFilteredResult(_0xca0040,_0x458225))[_0xb3f0('0x1d')](handleError(_0xca0040,null));};exports['removeAnswers']=function(_0x127a4d,_0x272189){return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x127a4d[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x272189,null))['then'](function(_0x5789f2){if(_0x5789f2){return _0x5789f2[_0xb3f0('0x64')](_0x127a4d['query'][_0xb3f0('0x60')]);}})[_0xb3f0('0x13')](respondWithStatusCode(_0x272189,null))['catch'](handleError(_0x272189,null));};exports['addLogo']=function(_0x2f380d,_0x5b3f24){_0x2f380d[_0xb3f0('0x4f')][_0xb3f0('0x65')]=_0x2f380d[_0xb3f0('0x66')][_0xb3f0('0x67')];return db['ChatWebsite']['find']({'where':{'id':_0x2f380d[_0xb3f0('0x57')]['id']}})['then'](handleEntityNotFound(_0x5b3f24,null))[_0xb3f0('0x13')](saveUpdates(_0x2f380d[_0xb3f0('0x4f')],null))[_0xb3f0('0x13')](respondWithResult(_0x5b3f24,null))[_0xb3f0('0x1d')](handleError(_0x5b3f24,null));};exports['addAvatar']=function(_0x4482df,_0x43956b){_0x4482df[_0xb3f0('0x4f')][_0xb3f0('0x68')]=_0x4482df[_0xb3f0('0x66')]['filename'];return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x4482df[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x43956b,null))[_0xb3f0('0x13')](saveUpdates(_0x4482df[_0xb3f0('0x4f')],null))[_0xb3f0('0x13')](respondWithResult(_0x43956b,null))[_0xb3f0('0x1d')](handleError(_0x43956b,null));};exports['addCustomerAvatar']=function(_0x21c2d5,_0x43639b){_0x21c2d5['body']['customerAvatar']=_0x21c2d5['file'][_0xb3f0('0x67')];return db['ChatWebsite'][_0xb3f0('0x4d')]({'where':{'id':_0x21c2d5[_0xb3f0('0x57')]['id']}})['then'](handleEntityNotFound(_0x43639b,null))[_0xb3f0('0x13')](saveUpdates(_0x21c2d5[_0xb3f0('0x4f')],null))['then'](respondWithResult(_0x43639b,null))[_0xb3f0('0x1d')](handleError(_0x43639b,null));};exports['addSystemAvatar']=function(_0x47976e,_0x49149d){_0x47976e['body'][_0xb3f0('0x69')]=_0x47976e['file'][_0xb3f0('0x67')];return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x47976e[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x49149d,null))[_0xb3f0('0x13')](saveUpdates(_0x47976e[_0xb3f0('0x4f')],null))['then'](respondWithResult(_0x49149d,null))[_0xb3f0('0x1d')](handleError(_0x49149d,null));};exports['getLogo']=function(_0x3845e0,_0x22d72c){var _0x2afa0c=path['join'](config['root'],_0xb3f0('0x6a'));var _0x4be3e8={'where':{'id':_0x3845e0[_0xb3f0('0x57')]['id']},'attributes':['id',_0xb3f0('0x65')],'raw':!![]};var _0x3dc649=![];return require(_0xb3f0('0x6b'))[_0xb3f0('0x6c')]()[_0xb3f0('0x13')](function(_0x463519){if(_0x463519){_0x3dc649=_0x463519[_0xb3f0('0x6d')];}})[_0xb3f0('0x13')](function(){return db[_0xb3f0('0x31')]['find'](_0x4be3e8);})[_0xb3f0('0x13')](handleEntityNotFound(_0x22d72c,null))[_0xb3f0('0x13')](function(_0x5ebc1c){if(_0x5ebc1c){if(!_[_0xb3f0('0x6e')](_0x5ebc1c['sitepic'])){if(fs[_0xb3f0('0x6f')](path[_0xb3f0('0x70')](config['root'],_0xb3f0('0x71'),_0x5ebc1c[_0xb3f0('0x65')]))&&_0x3dc649){_0x2afa0c=path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],'server/files/images/logos/',_0x5ebc1c[_0xb3f0('0x65')]);}}return _0x22d72c['download'](_0x2afa0c);}})[_0xb3f0('0x1d')](handleError(_0x22d72c,null));};exports['getAvatar']=function(_0x37bcb9,_0x4ea8df){var _0xd570a7=path[_0xb3f0('0x70')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x35b5c1={'where':{'id':_0x37bcb9['params']['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0xb3f0('0x31')][_0xb3f0('0x4d')](_0x35b5c1)[_0xb3f0('0x13')](handleEntityNotFound(_0x4ea8df,null))[_0xb3f0('0x13')](function(_0x17993f){if(_0x17993f){if(!_['isNil'](_0x17993f[_0xb3f0('0x68')])){if(fs['existsSync'](path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],_0xb3f0('0x73'),_0x17993f['agentAvatar']))){_0xd570a7=path['join'](config[_0xb3f0('0x72')],_0xb3f0('0x73'),_0x17993f[_0xb3f0('0x68')]);}}return _0x4ea8df[_0xb3f0('0x74')](_0xd570a7);}})[_0xb3f0('0x1d')](handleError(_0x4ea8df,null));};exports[_0xb3f0('0x75')]=function(_0x50d256,_0x17dc1d){var _0x147357=path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],'server/files/images/avatars/customer_avatar.png');var _0x21f657={'where':{'id':_0x50d256['params']['id']},'attributes':['id',_0xb3f0('0x76'),_0xb3f0('0x77')],'raw':!![]};return db[_0xb3f0('0x31')][_0xb3f0('0x4d')](_0x21f657)[_0xb3f0('0x13')](handleEntityNotFound(_0x17dc1d,null))[_0xb3f0('0x13')](function(_0x246aeb){if(_0x246aeb){if(!_['isNil'](_0x246aeb['customerAvatar'])){if(fs[_0xb3f0('0x6f')](path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],_0xb3f0('0x73'),_0x246aeb[_0xb3f0('0x76')]))&&_0x246aeb[_0xb3f0('0x77')]){_0x147357=path['join'](config[_0xb3f0('0x72')],_0xb3f0('0x73'),_0x246aeb[_0xb3f0('0x76')]);}}return _0x17dc1d[_0xb3f0('0x74')](_0x147357);}})[_0xb3f0('0x1d')](handleError(_0x17dc1d,null));};exports[_0xb3f0('0x78')]=function(_0x2f9edd,_0x42087e){var _0x2b80ef=path[_0xb3f0('0x70')](config['root'],_0xb3f0('0x79'));var _0x254d2c={'where':{'id':_0x2f9edd[_0xb3f0('0x57')]['id']},'attributes':['id',_0xb3f0('0x69')],'raw':!![]};return db['ChatWebsite'][_0xb3f0('0x4d')](_0x254d2c)[_0xb3f0('0x13')](handleEntityNotFound(_0x42087e,null))[_0xb3f0('0x13')](function(_0x501ae2){if(_0x501ae2){if(!_[_0xb3f0('0x6e')](_0x501ae2[_0xb3f0('0x69')])){if(fs['existsSync'](path[_0xb3f0('0x70')](config['root'],'server/files/images/avatars/',_0x501ae2[_0xb3f0('0x69')]))){_0x2b80ef=path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],_0xb3f0('0x73'),_0x501ae2[_0xb3f0('0x69')]);}}return _0x42087e[_0xb3f0('0x74')](_0x2b80ef);}})[_0xb3f0('0x1d')](handleError(_0x42087e,null));};exports['notify']=function(_0x5a1c66,_0x23efdd){var _0x3c8e81=require(_0xb3f0('0x7a'));var _0x4f5d69=new _0x3c8e81();var _0x4b3ee1=_0x4f5d69[_0xb3f0('0x7b')](_0x5a1c66[_0xb3f0('0x7c')][_0xb3f0('0x7d')])[_0xb3f0('0x7e')]();var _0x221f5f={'body':_0x5a1c66[_0xb3f0('0x4f')],'channel':_0xb3f0('0x7f')};var _0x3279e1=[];var _0x1b99b5=[];var _0x2106c3={};var _0x3a2805=![];return db[_0xb3f0('0x80')][_0xb3f0('0x58')]()[_0xb3f0('0x13')](function(_0x544fde){if(!_0x544fde){throw new db['Sequelize']['ValidationError'](_0xb3f0('0x81'));}_0x3279e1=_[_0xb3f0('0x82')](_[_0xb3f0('0x36')](_0x544fde),[_0xb3f0('0x83'),_0xb3f0('0x84')]);_0x1b99b5=_['difference'](_['keys'](_0x544fde),[_0xb3f0('0x83'),_0xb3f0('0x84'),_0xb3f0('0x85'),_0xb3f0('0x86')]);if(_0x5a1c66['body']['id']){delete _0x5a1c66['body']['id'];}if(_['isNil'](_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0x87')])){throw new db[(_0xb3f0('0x88'))][(_0xb3f0('0x89'))](_0xb3f0('0x8a'));}if(_[_0xb3f0('0x6e')](_0x5a1c66['body'][_0xb3f0('0x4f')])||_0x5a1c66['body'][_0xb3f0('0x4f')]===''){throw new db['Sequelize'][(_0xb3f0('0x89'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xb3f0('0x6e')](_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0x8b')])){throw new db[(_0xb3f0('0x88'))][(_0xb3f0('0x89'))](_0xb3f0('0x8c')+_0x1b99b5);}if(!_[_0xb3f0('0x8d')](_0x1b99b5,_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0x8b')])){throw new db[(_0xb3f0('0x88'))][(_0xb3f0('0x89'))](_0xb3f0('0x8e')+_0x1b99b5);}_0x2106c3[_0x5a1c66[_0xb3f0('0x4f')]['mapKey']]=_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0x87')];})[_0xb3f0('0x13')](function(){return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x5a1c66[_0xb3f0('0x57')]['id']},'include':[{'model':db[_0xb3f0('0x8f')],'as':_0xb3f0('0x90'),'include':[{'model':db[_0xb3f0('0x80')],'as':'Contacts','where':_0x2106c3,'limit':0x1,'order':[[_0xb3f0('0x84'),_0xb3f0('0x91')]]}]},{'model':db[_0xb3f0('0x92')],'as':_0xb3f0('0x93')}]});})[_0xb3f0('0x13')](handleEntityNotFound(_0x23efdd,null))[_0xb3f0('0x13')](function(_0x2362aa){if(_0x2362aa&&_0x2362aa[_0xb3f0('0x90')]){_0x221f5f['account']=_0x2362aa;_0x221f5f[_0xb3f0('0x94')]=_0x2362aa[_0xb3f0('0x93')];_0x221f5f[_0xb3f0('0x95')]=_0x2362aa[_0xb3f0('0x90')];_0x221f5f[_0xb3f0('0x94')]=_[_0xb3f0('0x96')](_0x221f5f[_0xb3f0('0x94')],['priority'],['asc']);if(_0x221f5f[_0xb3f0('0x97')][_0xb3f0('0x93')]){delete _0x221f5f[_0xb3f0('0x97')][_0xb3f0('0x93')];}if(_0x221f5f[_0xb3f0('0x97')][_0xb3f0('0x90')]&&_0x221f5f['account']['List'][_0xb3f0('0x98')][_0xb3f0('0x3c')]){return _0x221f5f[_0xb3f0('0x97')]['List'][_0xb3f0('0x98')][0x0];}var _0xe0613d=_[_0xb3f0('0xb')](_0x5a1c66[_0xb3f0('0x4f')],{'firstName':_0x5a1c66['body']['from'],'ListId':_0x2362aa[_0xb3f0('0x86')]});_0xe0613d[_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0x8b')]]=_0x5a1c66['body'][_0xb3f0('0x87')];return db[_0xb3f0('0x80')]['create'](_0xe0613d,{'fields':_0x3279e1,'raw':!![]});}})[_0xb3f0('0x13')](handleEntityNotFound(_0x23efdd,null))[_0xb3f0('0x13')](function(_0x5a487e){_0x221f5f[_0xb3f0('0x99')]=_0x5a487e;var _0x4d5825=_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0x9a')];if(_0x5a1c66[_0xb3f0('0x7c')]['cf-connecting-ip']){_0x4d5825=_0x5a1c66[_0xb3f0('0x7c')][_0xb3f0('0x9b')];}else if(_0x5a1c66[_0xb3f0('0x7c')]['x-forwarded-for']){_0x4d5825=_['first'](_0x5a1c66[_0xb3f0('0x7c')][_0xb3f0('0x9c')][_0xb3f0('0x9d')](','));}if(_0x5a487e){var _0x44deb8={'ContactId':_0x5a487e['id'],'ChatWebsiteId':_0x5a1c66[_0xb3f0('0x57')]['id'],'from':(_0x5a487e[_0xb3f0('0x9e')]||'')+'\x20'+(_0x5a487e[_0xb3f0('0x9f')]||''),'customerIp':_0x4d5825,'customerPort':_0x5a1c66[_0xb3f0('0x7c')][_0xb3f0('0xa0')]?_0x5a1c66[_0xb3f0('0x7c')][_0xb3f0('0xa0')]:null,'referer':_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xa1')],'browserName':_0x4b3ee1[_0xb3f0('0xa2')][_0xb3f0('0x2c')]&&_0x4b3ee1[_0xb3f0('0xa2')]['version']?util[_0xb3f0('0xa3')](_0xb3f0('0xa4'),_0x4b3ee1[_0xb3f0('0xa2')][_0xb3f0('0x2c')],_0x4b3ee1[_0xb3f0('0xa2')][_0xb3f0('0xa5')]):_0xb3f0('0xa6'),'browserVersion':_0x4b3ee1[_0xb3f0('0xa2')]['version']||_0xb3f0('0xa6'),'osName':util[_0xb3f0('0xa3')](_0xb3f0('0xa4'),_0x4b3ee1['os']['name'],_0x4b3ee1['os'][_0xb3f0('0xa5')]),'osVersion':_0x4b3ee1['os']['version'],'deviceModel':_0x4b3ee1['device'][_0xb3f0('0x39')]&&_0x4b3ee1['device']['vendor']?util[_0xb3f0('0xa3')](_0xb3f0('0xa7'),_0x4b3ee1[_0xb3f0('0xa8')][_0xb3f0('0x39')],_0x4b3ee1[_0xb3f0('0xa8')]['vendor'],_0x4b3ee1[_0xb3f0('0xa8')][_0xb3f0('0x34')]):null,'deviceVendor':_0x4b3ee1[_0xb3f0('0xa8')][_0xb3f0('0xa9')],'deviceType':_0x4b3ee1['device'][_0xb3f0('0x34')],'formData':JSON[_0xb3f0('0xaa')](_0x5a1c66[_0xb3f0('0x4f')])};var _0x5d64db={'ChatWebsiteId':_0x5a1c66[_0xb3f0('0x57')]['id'],'closed':![]};if(_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xab')]){_0x5d64db['threadId']=_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xab')];return db[_0xb3f0('0xac')][_0xb3f0('0x4d')]({'where':_0x5d64db})['then'](function(_0x99b86f){if(_0x99b86f){return[_0x99b86f,![]];}_0x44deb8['threadId']=_0x5a1c66['body'][_0xb3f0('0xab')];_0x44deb8[_0xb3f0('0xad')]=_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xad')];return db[_0xb3f0('0xac')]['create'](_0x44deb8)['then'](function(_0x4e99b7){return[_0x4e99b7,!![]];});});}_0x5d64db[_0xb3f0('0xae')]=_0x5a487e['id'];if(_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xaf')]&&_0x5a1c66['body']['interaction']['id']){_0x5d64db['id']=_0x5a1c66['body']['interaction']['id'];return db[_0xb3f0('0xac')][_0xb3f0('0x4d')]({'where':_0x5d64db})[_0xb3f0('0x13')](function(_0x52b941){if(_0x52b941){return[_0x52b941,![]];}return db[_0xb3f0('0xac')]['create'](_0x44deb8)[_0xb3f0('0x13')](function(_0xb3e5bb){return[_0xb3e5bb,!![]];});});}return db[_0xb3f0('0xac')][_0xb3f0('0x4e')](_0x44deb8)[_0xb3f0('0x13')](function(_0xbd433d){return[_0xbd433d,!![]];});}})[_0xb3f0('0xb0')](function(_0x2f8407,_0x5cda95){if(_0x2f8407){_0x3a2805=_0x5cda95;if(!_0x5cda95){var _0x5dedcf={'from':(_0x221f5f['contact'][_0xb3f0('0x9e')]||'')+'\x20'+(_0x221f5f[_0xb3f0('0x99')][_0xb3f0('0x9f')]||'')};if(_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xab')]&&_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xb1')]&&_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xab')]!=_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xb1')]){_0x5dedcf[_0xb3f0('0xab')]=_0x5a1c66[_0xb3f0('0x4f')][_0xb3f0('0xb1')];}return _0x2f8407[_0xb3f0('0x56')](_0x5dedcf);}else{return _0x2f8407;}}})[_0xb3f0('0x13')](function(_0xb93c2e){_0x221f5f[_0xb3f0('0xaf')]=_0xb93c2e[_0xb3f0('0x28')]({'plain':!![]});_0x221f5f[_0xb3f0('0xaf')][_0xb3f0('0xb2')]=_0x3a2805;if(_0x221f5f[_0xb3f0('0xaf')][_0xb3f0('0xb2')]){if(_0x221f5f[_0xb3f0('0x97')]['autoclose']){_0x221f5f['applications']['push']({'id':0x0,'priority':_0x221f5f[_0xb3f0('0x94')][_0xb3f0('0x3c')]+0x1,'app':_0xb3f0('0xb3'),'appdata':_0xb3f0('0xb4'),'interval':'*,*,*,*'});}}return db[_0xb3f0('0xb5')][_0xb3f0('0x4e')]({'body':_0x5a1c66['body'][_0xb3f0('0x4f')],'ChatWebsiteId':_0x5a1c66[_0xb3f0('0x57')]['id'],'ChatInteractionId':_0xb93c2e['id'],'direction':'in','ContactId':_0x221f5f[_0xb3f0('0x99')]['id'],'AttachmentId':_0x5a1c66['body']['AttachmentId']});})['then'](function(_0x2f9a0d){_0x221f5f[_0xb3f0('0x1b')]=_0x2f9a0d;if(_0x221f5f[_0xb3f0('0xaf')][_0xb3f0('0xb6')]){return db[_0xb3f0('0xb7')][_0xb3f0('0x4d')]({'attributes':['id',_0xb3f0('0x2c')],'where':{'id':_0x221f5f[_0xb3f0('0xaf')][_0xb3f0('0xb6')]}})[_0xb3f0('0x13')](function(_0x59bb69){if(_0x59bb69){_0x221f5f[_0xb3f0('0x94')][_0xb3f0('0xb8')]({'id':0x0,'priority':0x0,'app':_0xb3f0('0xb9'),'appdata':_0x59bb69[_0xb3f0('0x2c')]+','+(_0x221f5f[_0xb3f0('0x97')]['waitForTheAssignedAgent']||0xa),'interval':_0xb3f0('0xba')});_0x221f5f[_0xb3f0('0xbb')]=!![];}return respondWithRpcPromise('Start',_0xb3f0('0xbc'),_0x221f5f);});}return respondWithRpcPromise('Start',_0xb3f0('0xbc'),_0x221f5f);})['then'](function(_0x783ba0){respondWithRpcPromise(_0xb3f0('0xbd'),_0xb3f0('0xbd'),{'event':_0xb3f0('0xbe'),'message':_0x783ba0},client9002);return _0x783ba0;})[_0xb3f0('0x13')](respondWithResult(_0x23efdd,null))[_0xb3f0('0x1d')](handleError(_0x23efdd,null));};exports[_0xb3f0('0xbf')]=function(_0x2a52ba,_0x3e3021){var _0x49e913,_0x465f15,_0x38b5d9;var _0x1c2ba7=[];var _0x4a3828={};var _0x48ba32=_0x2a52ba['files']||[];var _0xddec5e=[];var _0x2ad981;return db[_0xb3f0('0x80')]['describe']()['then'](function(_0x33228c){if(!_0x33228c){throw new db[(_0xb3f0('0x88'))][(_0xb3f0('0x89'))](_0xb3f0('0x81'));}_0x1c2ba7=_[_0xb3f0('0x82')](_['keys'](_0x33228c),['createdAt',_0xb3f0('0x84'),'CompanyId',_0xb3f0('0x86')]);if(_0x2a52ba['body']['id']){delete _0x2a52ba['body']['id'];}if(_[_0xb3f0('0x6e')](_0x2a52ba[_0xb3f0('0x4f')][_0xb3f0('0x87')])){throw _0x3e3021[_0xb3f0('0x1f')](0x1f4)[_0xb3f0('0x2d')](new db['Sequelize'][(_0xb3f0('0x89'))]('from\x20is\x20mandatory'));}if(_[_0xb3f0('0x6e')](_0x2a52ba[_0xb3f0('0x4f')][_0xb3f0('0x4f')])||_0x2a52ba['body']['body']===''){throw _0x3e3021[_0xb3f0('0x1f')](0x1f4)[_0xb3f0('0x2d')](new db[(_0xb3f0('0x88'))]['ValidationError'](_0xb3f0('0xc0')));}if(_[_0xb3f0('0x6e')](_0x2a52ba[_0xb3f0('0x4f')]['mapKeyOffline'])){throw _0x3e3021['status'](0x1f4)[_0xb3f0('0x2d')](new db[(_0xb3f0('0x88'))]['ValidationError'](_0xb3f0('0xc1')+_0x1c2ba7));}if(!_[_0xb3f0('0x8d')](_0x1c2ba7,_0x2a52ba[_0xb3f0('0x4f')]['mapKeyOffline'])){throw _0x3e3021['status'](0x1f4)[_0xb3f0('0x2d')](new db[(_0xb3f0('0x88'))][(_0xb3f0('0x89'))](_0xb3f0('0xc2')+_0x1c2ba7));}_0x4a3828[_0x2a52ba[_0xb3f0('0x4f')][_0xb3f0('0xc3')]]=_0x2a52ba['body'][_0xb3f0('0x87')];})['then'](function(){return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x2a52ba[_0xb3f0('0x57')]['id']},'include':[{'model':db['CmList'],'as':_0xb3f0('0x90')},{'model':db[_0xb3f0('0xc4')],'as':_0xb3f0('0xc4')}]});})[_0xb3f0('0x13')](handleEntityNotFound(_0x3e3021,null))['then'](function(_0x170cc5){if(_0x170cc5&&_0x170cc5[_0xb3f0('0x90')]){_0x465f15=_0x170cc5;var _0x40e2fa=_[_0xb3f0('0xb')](_0x2a52ba[_0xb3f0('0x4f')],{'firstName':_0x2a52ba['body'][_0xb3f0('0x87')],'phone':_0x2a52ba[_0xb3f0('0x4f')][_0xb3f0('0x87')],'ListId':_0x170cc5['ListId']});_0x40e2fa[_0x2a52ba[_0xb3f0('0x4f')][_0xb3f0('0xc3')]]=_0x2a52ba[_0xb3f0('0x4f')]['from'];return db['CmContact']['findOrCreate']({'where':_0x4a3828,'defaults':_0x40e2fa});}})[_0xb3f0('0xb0')](function(_0xadd3cc){if(_0xadd3cc){_0x38b5d9=_0xadd3cc;var _0x2ce352=fs[_0xb3f0('0xc5')](path['join'](config[_0xb3f0('0x72')],_0xb3f0('0xc6')),_0xb3f0('0xc7'));var _0x217651=ejs[_0xb3f0('0xc8')](_0x2ce352,{'body':_['toPairs'](_0x2a52ba[_0xb3f0('0x4f')][_0xb3f0('0x4f')]),'bodyTitle':_0x465f15['offlineMessageBody']});return db[_0xb3f0('0xc9')]['create']({'body':_0x217651,'plainBody':htmlToText['fromString'](_0x217651),'ContactId':_0xadd3cc['id'],'ChatWebsiteId':_0x465f15['id']});}})[_0xb3f0('0x13')](function(_0x172ef0){_0x2ad981=_0x172ef0;if(_0x48ba32[_0xb3f0('0x3c')]){var _0x3f5504=_0x48ba32['map'](function(_0x35a6cb){return{'name':_0x35a6cb[_0xb3f0('0xca')],'basename':_0x35a6cb[_0xb3f0('0x67')],'type':_0x35a6cb[_0xb3f0('0xcb')],'ChatOfflineMessageId':_0x172ef0['id']};});_0xddec5e=_0x3f5504['map'](_0x21b6fa=>{var _0x56357a={'filename':_0x21b6fa[_0xb3f0('0x2c')],'path':path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],_0xb3f0('0xcc'),_0xb3f0('0xcd'),_0xb3f0('0xce'),_0xb3f0('0xcf'),_0x21b6fa['basename'])};return _0x56357a;});if(!_0x465f15[_0xb3f0('0xd0')]){return db[_0xb3f0('0xd1')][_0xb3f0('0xd2')](function(_0x5e884d){return db[_0xb3f0('0xd3')][_0xb3f0('0xd4')](_0x3f5504,{'transaction':_0x5e884d});});}}})[_0xb3f0('0x13')](function(){if(_0x2ad981){_0x49e913=_0x2ad981;return db[_0xb3f0('0xc4')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xb3f0('0xd5'),'raw':!![],'include':[{'model':db[_0xb3f0('0xd6')],'as':_0xb3f0('0xd6'),'raw':!![]}]}]});}})['then'](function(_0x58e593){if(_0x58e593&&_0x58e593[_0xb3f0('0xd5')]&&_0x465f15['forwardOffline']&&_0x465f15[_0xb3f0('0xd7')]){var _0x5f266d=_0x58e593[_0xb3f0('0xd8')]();return respondWithRpcPromise(_0xb3f0('0xd9'),'sendMail',{'account':_0x5f266d,'message':{'from':util[_0xb3f0('0xa3')](_0xb3f0('0xda'),_0x58e593[_0xb3f0('0x2c')],_0x58e593[_0xb3f0('0xdb')]||_0x58e593[_0xb3f0('0xd5')][_0xb3f0('0x50')]),'to':_0x465f15[_0xb3f0('0xd7')],'subject':_0x465f15[_0xb3f0('0xdc')],'html':_0x49e913['body'],'attachments':_0xddec5e}},client9003)[_0xb3f0('0x13')](function(){return _0x49e913;})['catch'](function(_0x2748ca){logger[_0xb3f0('0x18')](_0x2748ca);});}})[_0xb3f0('0x13')](function(){if(_0x465f15&&_0x465f15[_0xb3f0('0xd0')]&&_0x465f15['MailAccountId']){var _0x252dbd=[];if(_0x48ba32['length']){_0x252dbd=_0x48ba32[_0xb3f0('0x44')](function(_0x3da7d5){return{'name':_0x3da7d5[_0xb3f0('0xca')],'basename':_0x3da7d5[_0xb3f0('0x67')],'type':_0x3da7d5['mimetype'],'ChatOfflineMessageId':_0x2ad981['id']};});}var _0x653f99;if(!_[_0xb3f0('0x6e')](_0x465f15[_0xb3f0('0xdd')])){var _0x39db37=_['map'](_0x2a52ba['body'],function(_0x573e74){return _0x573e74;});var _0x1c6010=_[_0xb3f0('0xde')](_0x39db37)[0x0];var _0x4c6c6e=_[_0xb3f0('0xdf')](_0x1c6010,function(_0x5ecae3){return _0x5ecae3;});_0x653f99=_0x4c6c6e[0x1][_0x465f15[_0xb3f0('0xdd')]];}var _0x11d84f={'from':_0x38b5d9[_0xb3f0('0xdb')],'firstName':_0x38b5d9[_0xb3f0('0x9e')],'lastName':_0x38b5d9[_0xb3f0('0x9f')],'mapKey':_0xb3f0('0xdb'),'message':{'from':_0x38b5d9['email'],'to':_0x465f15[_0xb3f0('0xc4')][_0xb3f0('0xdb')],'cc':'','subject':_['isNil'](_0x653f99)?_0x465f15['offlineMessageSubject']:_0x653f99,'messageId':'','sentAt':new Date(),'attach':_0x252dbd[_0xb3f0('0x3c')],'attachments':_0x252dbd,'originChannel':_0xb3f0('0xe0'),'ChatWebsiteId':_0x465f15['id'],'ChatOfflineMessageId':_0x49e913['id'],'originTo':_0x465f15['MailAccount'][_0xb3f0('0xdb')]},'body':_0x49e913[_0xb3f0('0x4f')]};var _0x153197={'account':{'id':_0x465f15[_0xb3f0('0xe1')]},'body':_0x11d84f,'log':'NotifyMailAccount'};return respondWithRpcPromise('NotifyMailAccount',_0xb3f0('0xe2'),_0x153197,client9001)['then'](function(){return _0x49e913;})[_0xb3f0('0x1d')](function(_0x4b16f2){logger[_0xb3f0('0x18')](_0x4b16f2);});}return;})[_0xb3f0('0x13')](function(){if(_0x49e913){return _0x49e913;}})[_0xb3f0('0x13')](respondWithResult(_0x3e3021,null))[_0xb3f0('0x1d')](function(_0x17c921){logger[_0xb3f0('0x18')](_0xb3f0('0x1d'),_0x17c921);for(var _0x4ce163 of _0x48ba32){var _0x224566=path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],_0xb3f0('0xcc'),_0xb3f0('0xcd'),_0xb3f0('0xce'),_0xb3f0('0xcf'),_0x4ce163['filename']);fs_extra[_0xb3f0('0xe3')](_0x224566)[_0xb3f0('0x1d')](function(_0x5c44d5){logger[_0xb3f0('0x18')](_0xb3f0('0xe4'),_0x224566,_0x5c44d5);});}});};exports['addInteraction']=function(_0x3e61f8,_0x2770d5){return db[_0xb3f0('0xac')][_0xb3f0('0x4d')]({'where':{'id':_0x3e61f8[_0xb3f0('0x57')]['id']}})['then'](handleEntityNotFound(_0x2770d5,null))[_0xb3f0('0x13')](function(_0xe413cb){if(_0xe413cb){return _0xe413cb[_0xb3f0('0xe5')](_0x3e61f8['body'][_0xb3f0('0x60')],_['omit'](_0x3e61f8[_0xb3f0('0x4f')],[_0xb3f0('0x60'),'id'])||{});}})['then'](respondWithResult(_0x2770d5,null))[_0xb3f0('0x1d')](handleError(_0x2770d5,null));};exports['getInteractions']=function(_0x4c13bd,_0x1db8d3){var _0x51ae42={'raw':![],'where':{}};var _0x48df58={};var _0x8394cd={'count':0x0,'rows':[]};return db[_0xb3f0('0x31')]['findOne']({'where':{'id':_0x4c13bd[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x1db8d3,null))[_0xb3f0('0x13')](function(_0x2cac1c){if(_0x2cac1c){_0x48df58[_0xb3f0('0x39')]=_['keys'](db[_0xb3f0('0xac')][_0xb3f0('0x32')]);_0x48df58[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x4c13bd[_0xb3f0('0x35')]);_0x48df58['filters']=_['intersection'](_0x48df58[_0xb3f0('0x39')],_0x48df58['query']);_0x51ae42[_0xb3f0('0x3a')]=_['intersection'](_0x48df58['model'],qs[_0xb3f0('0x3b')](_0x4c13bd[_0xb3f0('0x35')][_0xb3f0('0x3b')]));_0x51ae42[_0xb3f0('0x3a')]=_0x51ae42[_0xb3f0('0x3a')]['length']?_0x51ae42['attributes']:_0x48df58[_0xb3f0('0x39')];if(!_0x4c13bd['query'][_0xb3f0('0x3d')]('nolimit')){_0x51ae42['limit']=qs['limit'](_0x4c13bd[_0xb3f0('0x35')]['limit']);_0x51ae42[_0xb3f0('0x24')]=qs[_0xb3f0('0x24')](_0x4c13bd['query'][_0xb3f0('0x24')]);}_0x51ae42['order']=qs[_0xb3f0('0x3f')](_0x4c13bd[_0xb3f0('0x35')][_0xb3f0('0x3f')]);_0x51ae42[_0xb3f0('0x42')]=qs[_0xb3f0('0x37')](_[_0xb3f0('0x40')](_0x4c13bd[_0xb3f0('0x35')],_0x48df58['filters']));_0x51ae42[_0xb3f0('0x42')][_0xb3f0('0x5a')]=_0x2cac1c['id'];if(_0x4c13bd[_0xb3f0('0x35')][_0xb3f0('0x41')]){_0x51ae42['where']=_[_0xb3f0('0x43')](_0x51ae42[_0xb3f0('0x42')],{'$or':_[_0xb3f0('0x44')](_0x51ae42[_0xb3f0('0x3a')],function(_0x96998c){var _0x3862cd={};_0x3862cd[_0x96998c]={'$like':'%'+_0x4c13bd[_0xb3f0('0x35')]['filter']+'%'};return _0x3862cd;})});}_0x51ae42=_[_0xb3f0('0x43')]({},_0x51ae42,_0x4c13bd[_0xb3f0('0x46')]);return db[_0xb3f0('0xac')][_0xb3f0('0x47')]({'where':_0x51ae42[_0xb3f0('0x42')]})[_0xb3f0('0x13')](function(_0x453e1c){_0x8394cd[_0xb3f0('0x47')]=_0x453e1c;if(_0x4c13bd[_0xb3f0('0x35')][_0xb3f0('0x48')]){_0x51ae42[_0xb3f0('0x49')]=[{'model':db[_0xb3f0('0x80')],'as':'Contact','required':![]},{'model':db[_0xb3f0('0xb7')],'as':_0xb3f0('0xe6'),'attributes':[_0xb3f0('0x2c'),_0xb3f0('0xe7'),_0xb3f0('0xe8')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xb3f0('0x2c'),_0xb3f0('0xe9')],'where':_0x4c13bd[_0xb3f0('0x35')][_0xb3f0('0xea')]?{'id':_0x4c13bd[_0xb3f0('0x35')][_0xb3f0('0xea')]}:undefined,'required':_0x4c13bd[_0xb3f0('0x35')]['tag']?!![]:![]}];}return db[_0xb3f0('0xac')]['findAll'](_0x51ae42);})[_0xb3f0('0x13')](function(_0x455779){_0x8394cd[_0xb3f0('0x4b')]=_0x455779;return _0x8394cd;});}})[_0xb3f0('0x13')](respondWithFilteredResult(_0x1db8d3,_0x51ae42))[_0xb3f0('0x1d')](handleError(_0x1db8d3,null));};function iftimePromise(_0x16cbe7,_0x32c6e1){return respondWithRpcPromise('Command',_0xb3f0('0xeb'),{'command':_0x32c6e1[_0xb3f0('0xec')]?util[_0xb3f0('0xa3')](_0xb3f0('0xed'),_0x16cbe7[_0xb3f0('0xee')],_0x32c6e1['timezone']):util[_0xb3f0('0xa3')](_0xb3f0('0xef'),_0x16cbe7[_0xb3f0('0xee')])},client9002)[_0xb3f0('0x13')](function(_0x349dff){var _0x6f32bf=_0x349dff&&_0x349dff['indexOf'](_0xb3f0('0xf0'))>=0x0?!![]:![];logger[_0xb3f0('0x14')](_0xb3f0('0xf1'),_0x32c6e1['id'],_0x16cbe7['id'],_0x16cbe7[_0xb3f0('0xee')],_0x6f32bf?_0xb3f0('0xf2'):_0xb3f0('0xf3'),_0x32c6e1[_0xb3f0('0xec')]?_0x32c6e1[_0xb3f0('0xec')]:_0xb3f0('0xf4'));return _0x6f32bf;})[_0xb3f0('0x1d')](function(_0xfadeef){logger[_0xb3f0('0x18')](_0xb3f0('0xf1'),_0x32c6e1['id'],_0x16cbe7['id'],_0x16cbe7['interval'],util[_0xb3f0('0xf5')](_0xfadeef,{'showHidden':![],'depth':null}),_0x32c6e1['timezone']?_0x32c6e1[_0xb3f0('0xec')]:_0xb3f0('0xf4'));return![];});}exports[_0xb3f0('0xeb')]=function(_0x2393d5,_0x140993){var _0x57495b=0x0;var _0x4c90e7=0x0;var _0x2425ee=![];var _0x595163;var _0x5d953e;return db['ChatWebsite'][_0xb3f0('0x4d')]({'where':{'id':_0x2393d5[_0xb3f0('0x57')]['id']},'include':[{'model':db[_0xb3f0('0xf6')],'as':_0xb3f0('0xf6'),'include':[{'model':db[_0xb3f0('0xf6')],'as':'Intervals','attributes':['id','interval'],'raw':!![]}]}]})[_0xb3f0('0x13')](handleEntityNotFound(_0x140993,null))['then'](function(_0x3048bf){if(_0x3048bf){_0x595163=_0x3048bf;return _0x3048bf[_0xb3f0('0xf7')]({'raw':!![]});}})['then'](function(_0x2d4336){if(_0x595163){if(_0x2d4336){_0x5d953e=_0x2d4336;}}return require(_0xb3f0('0x6b'))[_0xb3f0('0x6c')]();})['then'](function(_0x1dbdf4){if(_0x1dbdf4){_0x4c90e7=_0x1dbdf4[_0xb3f0('0xf8')];_0x2425ee=_0x1dbdf4['custom'];}})[_0xb3f0('0x13')](function(){return db[_0xb3f0('0xac')]['count']({'where':{'closed':![]}});})[_0xb3f0('0x13')](function(_0x3c252d){_0x57495b=_0x3c252d;if(_0x4c90e7&&_0x3c252d>_0x4c90e7){return db[_0xb3f0('0xf9')][_0xb3f0('0x5d')]({'where':{'id':0x1}})[_0xb3f0('0x13')](function(_0x126622){if(_0x126622){_0x126622[_0xb3f0('0xfa')](_0xb3f0('0xfb'));}});}})[_0xb3f0('0x13')](function(){if(_0x595163[_0xb3f0('0xf6')]&&_0x595163[_0xb3f0('0xf6')][_0xb3f0('0xfc')]){var _0x58dc9f=[];for(var _0x239c49=0x0;_0x239c49<_0x595163[_0xb3f0('0xf6')][_0xb3f0('0xfc')][_0xb3f0('0x3c')];_0x239c49++){var _0x28b3d1=_0x595163[_0xb3f0('0xf6')]['Intervals'][_0x239c49][_0xb3f0('0x28')]({'plain':!![]});_0x58dc9f[_0xb3f0('0xfd')](iftimePromise(_0x28b3d1,_0x595163));}return BPromise['all'](_0x58dc9f)[_0xb3f0('0x13')](function(_0x11eb67){return _[_0xb3f0('0xfe')](_0x11eb67);});}else{return!![];}})['then'](function(_0x16cff3){var _0x180611=fs[_0xb3f0('0xc5')](path[_0xb3f0('0x70')](config[_0xb3f0('0x72')],_0xb3f0('0xff')),_0xb3f0('0xc7'));var _0x53e6db=new url[(_0xb3f0('0x100'))](_0x595163[_0xb3f0('0x101')])['origin'];var _0x3d9d5d=_0xb3f0('0x102');var _0xe04bd6=![];var _0x12d02d={'chatVersion':_0x3d9d5d,'chatWebsiteAddressOrigin':_0x53e6db,'remote':_0x595163[_0xb3f0('0x103')],'query':querystring[_0xb3f0('0xaa')](_[_0xb3f0('0x43')](_0x595163[_0xb3f0('0x28')]({'plain':!![]}),{'customerIp':_0x2393d5['headers'][_0xb3f0('0x9c')]||_0x2393d5[_0xb3f0('0x7c')][_0xb3f0('0x104')]||_0x2393d5[_0xb3f0('0x105')]['remoteAddress']||_0x2393d5['ip'],'referer':_0x2393d5[_0xb3f0('0x7c')][_0xb3f0('0xa1')],'openedInteractions':_0x57495b,'maxInteractions':_0x4c90e7,'virtual':_0x2425ee[_0xb3f0('0xf8')],'online':_0x16cff3,'custom':_0x2425ee}))[_0xb3f0('0x106')](/'/g,'\x5c\x27')};_0x140993[_0xb3f0('0x2d')](ejs[_0xb3f0('0xc8')](Mustache[_0xb3f0('0xc8')](_0x180611,_0x12d02d),{'proactiveActions':_0x5d953e,'alignment':_0x595163['alignment'],'verticalAlignment':_0x595163['verticalAlignment'],'div_color':_0x595163[_0xb3f0('0xe9')],'labelText':_0x595163[_0xb3f0('0x107')],'text_color':_0x595163[_0xb3f0('0x108')],'text_button_color':_0x595163[_0xb3f0('0x109')],'button_color':_0x595163[_0xb3f0('0x10a')],'background_color':_0x595163['backgroundColor'],'hideWhenOffline':_0x595163[_0xb3f0('0x10b')],'intervalId':_0x595163[_0xb3f0('0x10c')],'isDevelopment':_0xe04bd6,'chatVersion':_0x3d9d5d}));})['catch'](handleError(_0x140993,null));};exports['addApplications']=function(_0x345700,_0x506a67){var _0x7746c9=_0x345700[_0xb3f0('0x57')]['id'];var _0x200d23=_0x345700[_0xb3f0('0x4f')];var _0x511263=0xc8;var _0x12a6f1=null;return db[_0xb3f0('0xd1')][_0xb3f0('0xd2')]({'isolationLevel':db[_0xb3f0('0xd1')][_0xb3f0('0x10d')][_0xb3f0('0x10e')][_0xb3f0('0x10f')]},function(_0x16036d){return db[_0xb3f0('0x31')][_0xb3f0('0x5d')]({'where':{'id':_0x7746c9},'transaction':_0x16036d})['then'](function(_0x456ade){if(_0x456ade){return db[_0xb3f0('0x92')]['destroy']({'where':{'ChatWebsiteId':_0x7746c9},'transaction':_0x16036d})['then'](function(){var _0x2a81e4=_[_0xb3f0('0x44')](_0x200d23,function(_0x345a27){_0x345a27['ChatWebsiteId']=_0x7746c9;return _0x345a27;});return db[_0xb3f0('0x92')][_0xb3f0('0xd4')](_0x2a81e4,{'transaction':_0x16036d});});}else{_0x511263=0x194;_0x12a6f1=[];}});})[_0xb3f0('0x13')](function(){if(_0x511263!==0x194){return db[_0xb3f0('0x92')][_0xb3f0('0x110')]({'where':{'ChatWebsiteId':_0x7746c9},'order':_0xb3f0('0x111')})[_0xb3f0('0x13')](function(_0x514fc4){_0x12a6f1=_0x514fc4;});}})['catch'](function(_0x2e1ac5){_0x511263=0x1f4;logger['error'](_0x2e1ac5[_0xb3f0('0x2b')]);if(_0x2e1ac5[_0xb3f0('0x2c')]){delete _0x2e1ac5['name'];}_0x12a6f1=_0x2e1ac5;})[_0xb3f0('0x112')](function(){if(_0x12a6f1===null){_0x506a67[_0xb3f0('0x1e')](_0x511263);}else{if(_0x511263===0x1f4){_0x506a67[_0xb3f0('0x1f')](_0x511263)['send'](_0x12a6f1);}else{_0x506a67['status'](_0x511263)[_0xb3f0('0x21')](_0x12a6f1);}}});};exports[_0xb3f0('0x113')]=function(_0x54e7df,_0x289d3b){var _0x17b7af={};var _0x57a441={};var _0x433a9f;var _0x5d67b1;return db[_0xb3f0('0x31')]['findOne']({'where':{'id':_0x54e7df[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x289d3b,null))['then'](function(_0x4eff45){if(_0x4eff45){_0x433a9f=_0x4eff45;_0x57a441[_0xb3f0('0x39')]=_['keys'](db[_0xb3f0('0x92')][_0xb3f0('0x32')]);_0x57a441[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x54e7df[_0xb3f0('0x35')]);_0x57a441[_0xb3f0('0x37')]=_[_0xb3f0('0x38')](_0x57a441[_0xb3f0('0x39')],_0x57a441[_0xb3f0('0x35')]);_0x17b7af[_0xb3f0('0x3a')]=_[_0xb3f0('0x38')](_0x57a441[_0xb3f0('0x39')],qs['fields'](_0x54e7df[_0xb3f0('0x35')]['fields']));_0x17b7af[_0xb3f0('0x3a')]=_0x17b7af[_0xb3f0('0x3a')][_0xb3f0('0x3c')]?_0x17b7af[_0xb3f0('0x3a')]:_0x57a441['model'];_0x17b7af[_0xb3f0('0x5e')]=qs[_0xb3f0('0x3f')](_0x54e7df[_0xb3f0('0x35')][_0xb3f0('0x3f')]);_0x17b7af[_0xb3f0('0x42')]=qs[_0xb3f0('0x37')](_[_0xb3f0('0x40')](_0x54e7df['query'],_0x57a441[_0xb3f0('0x37')]));if(_0x54e7df[_0xb3f0('0x35')][_0xb3f0('0x41')]){_0x17b7af[_0xb3f0('0x42')]=_[_0xb3f0('0x43')](_0x17b7af[_0xb3f0('0x42')],{'$or':_[_0xb3f0('0x44')](_0x17b7af[_0xb3f0('0x3a')],function(_0x4ebc10){var _0x304bcf={};_0x304bcf[_0x4ebc10]={'$like':'%'+_0x54e7df[_0xb3f0('0x35')][_0xb3f0('0x41')]+'%'};return _0x304bcf;})});}_0x17b7af=_[_0xb3f0('0x43')]({},_0x17b7af,_0x54e7df[_0xb3f0('0x46')]);return _0x433a9f[_0xb3f0('0x113')](_0x17b7af);}})[_0xb3f0('0x13')](function(_0x2b8629){if(_0x2b8629){_0x5d67b1=_0x2b8629[_0xb3f0('0x3c')];if(!_0x54e7df[_0xb3f0('0x35')][_0xb3f0('0x3d')](_0xb3f0('0x3e'))){_0x17b7af[_0xb3f0('0x23')]=qs['limit'](_0x54e7df[_0xb3f0('0x35')][_0xb3f0('0x23')]);_0x17b7af[_0xb3f0('0x24')]=qs[_0xb3f0('0x24')](_0x54e7df[_0xb3f0('0x35')][_0xb3f0('0x24')]);}return _0x433a9f[_0xb3f0('0x113')](_0x17b7af);}})['then'](function(_0x5b7dfc){if(_0x5b7dfc){return _0x5b7dfc?{'count':_0x5d67b1,'rows':_0x5b7dfc}:null;}})[_0xb3f0('0x13')](respondWithResult(_0x289d3b,null))[_0xb3f0('0x1d')](handleError(_0x289d3b,null));};exports['addProactiveActions']=function(_0xa828d1,_0x33b2c6){return db['chatProactiveAction'][_0xb3f0('0x4d')]({'where':{'id':_0xa828d1['params']['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x33b2c6,null))[_0xb3f0('0x13')](function(_0x1ce5e3){if(_0x1ce5e3){return _0x1ce5e3['addProactiveActions'](_0xa828d1[_0xb3f0('0x4f')][_0xb3f0('0x60')],_[_0xb3f0('0x114')](_0xa828d1[_0xb3f0('0x4f')],['ids','id'])||{});}})['then'](respondWithResult(_0x33b2c6,null))['catch'](handleError(_0x33b2c6,null));};exports[_0xb3f0('0xf7')]=function(_0x5b43d2,_0x11c4a7){var _0x586aef={};var _0x5daef9={};var _0x3b0bae;var _0x4ed00f;return db[_0xb3f0('0x31')][_0xb3f0('0x5d')]({'where':{'id':_0x5b43d2[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x11c4a7,null))['then'](function(_0xb74082){if(_0xb74082){_0x3b0bae=_0xb74082;_0x5daef9['model']=_[_0xb3f0('0x36')](db[_0xb3f0('0x115')]['rawAttributes']);_0x5daef9[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x5b43d2[_0xb3f0('0x35')]);_0x5daef9[_0xb3f0('0x37')]=_['intersection'](_0x5daef9[_0xb3f0('0x39')],_0x5daef9[_0xb3f0('0x35')]);_0x586aef['attributes']=_[_0xb3f0('0x38')](_0x5daef9['model'],qs[_0xb3f0('0x3b')](_0x5b43d2[_0xb3f0('0x35')][_0xb3f0('0x3b')]));_0x586aef[_0xb3f0('0x3a')]=_0x586aef[_0xb3f0('0x3a')][_0xb3f0('0x3c')]?_0x586aef[_0xb3f0('0x3a')]:_0x5daef9[_0xb3f0('0x39')];_0x586aef['order']=qs[_0xb3f0('0x3f')](_0x5b43d2[_0xb3f0('0x35')][_0xb3f0('0x3f')]);_0x586aef[_0xb3f0('0x42')]=qs[_0xb3f0('0x37')](_[_0xb3f0('0x40')](_0x5b43d2[_0xb3f0('0x35')],_0x5daef9['filters']));if(_0x5b43d2['query'][_0xb3f0('0x41')]){_0x586aef['where']=_['merge'](_0x586aef['where'],{'$or':_['map'](_0x586aef['attributes'],function(_0x22fc46){var _0x2fbf01={};_0x2fbf01[_0x22fc46]={'$like':'%'+_0x5b43d2['query'][_0xb3f0('0x41')]+'%'};return _0x2fbf01;})});}_0x586aef=_[_0xb3f0('0x43')]({},_0x586aef,_0x5b43d2[_0xb3f0('0x46')]);return _0x3b0bae[_0xb3f0('0xf7')](_0x586aef);}})[_0xb3f0('0x13')](function(_0x19a6b1){if(_0x19a6b1){_0x4ed00f=_0x19a6b1['length'];if(!_0x5b43d2[_0xb3f0('0x35')][_0xb3f0('0x3d')](_0xb3f0('0x3e'))){_0x586aef[_0xb3f0('0x23')]=qs['limit'](_0x5b43d2[_0xb3f0('0x35')][_0xb3f0('0x23')]);_0x586aef['offset']=qs['offset'](_0x5b43d2[_0xb3f0('0x35')][_0xb3f0('0x24')]);}return _0x3b0bae[_0xb3f0('0xf7')](_0x586aef);}})[_0xb3f0('0x13')](function(_0x2e769c){if(_0x2e769c){return _0x2e769c?{'count':_0x4ed00f,'rows':_0x2e769c}:null;}})['then'](respondWithResult(_0x11c4a7,null))['catch'](handleError(_0x11c4a7,null));};exports[_0xb3f0('0x116')]=function(_0x39a53e,_0x7d8845){var _0x307952=_0x39a53e[_0xb3f0('0x35')][_0xb3f0('0x117')]==='false'?_0xb3f0('0x118'):_0xb3f0('0x119');return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'attributes':['id',_0x307952],'where':{'id':_0x39a53e[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x7d8845,null))[_0xb3f0('0x13')](function(_0x2dc103){if(_0x2dc103){var _0x1dbeff=_0x2dc103[_0x307952];var _0x4fb6a1=_0x1dbeff&&_0x1dbeff[_0xb3f0('0x11a')]?_0x1dbeff['items']:[];_0x7d8845['send']({'fromKey':_[_0xb3f0('0x6e')](_0x1dbeff[_0xb3f0('0x11b')])?undefined:_0x1dbeff[_0xb3f0('0x11b')],'count':_0x4fb6a1[_0xb3f0('0x3c')],'rows':_0x4fb6a1});}})['catch'](handleError(_0x7d8845,null));};exports[_0xb3f0('0x11c')]=function(_0x454956,_0xdeb8b3){var _0x246d7f={'raw':![],'where':{}};var _0xe1a53b={};var _0x4e1f19={'count':0x0,'rows':[]};return db[_0xb3f0('0x31')][_0xb3f0('0x5d')]({'where':{'id':_0x454956[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0xdeb8b3,null))[_0xb3f0('0x13')](function(_0x3f80d8){if(_0x3f80d8){_0xe1a53b['model']=_[_0xb3f0('0x36')](db[_0xb3f0('0xc9')]['rawAttributes']);_0xe1a53b[_0xb3f0('0x35')]=_[_0xb3f0('0x36')](_0x454956[_0xb3f0('0x35')]);_0xe1a53b[_0xb3f0('0x37')]=_[_0xb3f0('0x38')](_0xe1a53b[_0xb3f0('0x39')],_0xe1a53b[_0xb3f0('0x35')]);_0x246d7f[_0xb3f0('0x3a')]=_[_0xb3f0('0x38')](_0xe1a53b[_0xb3f0('0x39')],qs[_0xb3f0('0x3b')](_0x454956['query'][_0xb3f0('0x3b')]));_0x246d7f[_0xb3f0('0x3a')]=_0x246d7f[_0xb3f0('0x3a')]['length']?_0x246d7f['attributes']:_0xe1a53b['model'];if(!_0x454956[_0xb3f0('0x35')][_0xb3f0('0x3d')](_0xb3f0('0x3e'))){_0x246d7f[_0xb3f0('0x23')]=qs['limit'](_0x454956[_0xb3f0('0x35')][_0xb3f0('0x23')]);_0x246d7f['offset']=qs[_0xb3f0('0x24')](_0x454956['query'][_0xb3f0('0x24')]);}_0x246d7f[_0xb3f0('0x5e')]=qs['sort'](_0x454956['query'][_0xb3f0('0x3f')]);_0x246d7f['where']=qs[_0xb3f0('0x37')](_['pick'](_0x454956[_0xb3f0('0x35')],_0xe1a53b['filters']));_0x246d7f[_0xb3f0('0x42')]['ChatWebsiteId']=_0x3f80d8['id'];if(_0x454956['query'][_0xb3f0('0x41')]){_0x246d7f[_0xb3f0('0x42')]=_[_0xb3f0('0x43')](_0x246d7f[_0xb3f0('0x42')],{'$or':_[_0xb3f0('0x44')](_0x246d7f[_0xb3f0('0x3a')],function(_0x491843){var _0x3f9962={};_0x3f9962[_0x491843]={'$like':'%'+_0x454956[_0xb3f0('0x35')][_0xb3f0('0x41')]+'%'};return _0x3f9962;})});}_0x246d7f=_['merge']({},_0x246d7f,_0x454956[_0xb3f0('0x46')]);return db['ChatOfflineMessage'][_0xb3f0('0x47')]({'where':_0x246d7f['where']})['then'](function(_0x5ba4e8){_0x4e1f19['count']=_0x5ba4e8;if(_0x454956[_0xb3f0('0x35')][_0xb3f0('0x48')]){_0x246d7f[_0xb3f0('0x49')]=[{'all':!![]}];}else{_0x246d7f['include']=[{'model':db[_0xb3f0('0x80')],'as':'Contact','required':![]},{'model':db[_0xb3f0('0xd3')],'as':_0xb3f0('0x11d'),'required':![]}];}return db[_0xb3f0('0xc9')]['findAll'](_0x246d7f);})[_0xb3f0('0x13')](function(_0xe11320){_0x4e1f19[_0xb3f0('0x4b')]=_0xe11320;return _0x4e1f19;});}})[_0xb3f0('0x13')](respondWithFilteredResult(_0xdeb8b3,_0x246d7f))[_0xb3f0('0x1d')](handleError(_0xdeb8b3,null));};exports[_0xb3f0('0x11e')]=function(_0x519389,_0x35479d){return db[_0xb3f0('0x31')]['find']({'where':{'id':_0x519389[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x35479d,null))['then'](function(_0x50d640){if(_0x50d640){return _0x50d640[_0xb3f0('0x11e')](_0x519389[_0xb3f0('0x4f')]['ids'],_[_0xb3f0('0x114')](_0x519389[_0xb3f0('0x4f')],['ids','id'])||{})[_0xb3f0('0xb0')](function(_0x3f1f30){for(var _0x2c9b4f=0x0;_0x2c9b4f<_0x519389['body']['ids'][_0xb3f0('0x3c')];_0x2c9b4f+=0x1){socket[_0xb3f0('0x11f')](_0xb3f0('0x120'),{'UserId':Number(_0x519389[_0xb3f0('0x4f')]['ids'][_0x2c9b4f]),'ChatWebsiteId':Number(_0x519389[_0xb3f0('0x57')]['id'])});}return _0x3f1f30;});}})['then'](respondWithResult(_0x35479d,null))[_0xb3f0('0x1d')](handleError(_0x35479d,null));};exports[_0xb3f0('0x121')]=function(_0x3ce121,_0x3ea082){return db[_0xb3f0('0x31')][_0xb3f0('0x4d')]({'where':{'id':_0x3ce121[_0xb3f0('0x57')]['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x3ea082,null))[_0xb3f0('0x13')](function(_0x237b91){if(_0x237b91){return _0x237b91['removeAgents'](_0x3ce121[_0xb3f0('0x35')][_0xb3f0('0x60')])[_0xb3f0('0x13')](function(){if(_[_0xb3f0('0x122')](_0x3ce121['query'][_0xb3f0('0x60')])){for(var _0x5579a4=0x0;_0x5579a4<_0x3ce121[_0xb3f0('0x35')][_0xb3f0('0x60')]['length'];_0x5579a4+=0x1){socket[_0xb3f0('0x11f')](_0xb3f0('0x123'),{'UserId':Number(_0x3ce121[_0xb3f0('0x35')]['ids'][_0x5579a4]),'ChatWebsiteId':Number(_0x3ce121[_0xb3f0('0x57')]['id'])});}}else{socket[_0xb3f0('0x11f')](_0xb3f0('0x123'),{'UserId':Number(_0x3ce121[_0xb3f0('0x35')][_0xb3f0('0x60')]),'ChatWebsiteId':Number(_0x3ce121[_0xb3f0('0x57')]['id'])});}});}})[_0xb3f0('0x13')](respondWithStatusCode(_0x3ea082,null))[_0xb3f0('0x1d')](handleError(_0x3ea082,null));};exports['getAgents']=function(_0x4081f4,_0x364302){var _0x44d09a={};var _0xbbebae={};var _0x48104b;var _0x3d1535;return db[_0xb3f0('0x31')][_0xb3f0('0x5d')]({'where':{'id':_0x4081f4['params']['id']}})[_0xb3f0('0x13')](handleEntityNotFound(_0x364302,null))[_0xb3f0('0x13')](function(_0x5145f7){if(_0x5145f7){_0x48104b=_0x5145f7;_0xbbebae[_0xb3f0('0x39')]=_['keys'](db[_0xb3f0('0xb7')][_0xb3f0('0x32')]);_0xbbebae['query']=_['keys'](_0x4081f4[_0xb3f0('0x35')]);_0xbbebae[_0xb3f0('0x37')]=_[_0xb3f0('0x38')](_0xbbebae[_0xb3f0('0x39')],_0xbbebae[_0xb3f0('0x35')]);_0x44d09a[_0xb3f0('0x3a')]=_[_0xb3f0('0x38')](_0xbbebae[_0xb3f0('0x39')],qs['fields'](_0x4081f4[_0xb3f0('0x35')][_0xb3f0('0x3b')]));_0x44d09a[_0xb3f0('0x3a')]=_0x44d09a[_0xb3f0('0x3a')][_0xb3f0('0x3c')]?_0x44d09a[_0xb3f0('0x3a')]:_0xbbebae['model'];_0x44d09a[_0xb3f0('0x5e')]=qs[_0xb3f0('0x3f')](_0x4081f4[_0xb3f0('0x35')][_0xb3f0('0x3f')]);_0x44d09a[_0xb3f0('0x42')]=qs['filters'](_[_0xb3f0('0x40')](_0x4081f4[_0xb3f0('0x35')],_0xbbebae[_0xb3f0('0x37')]));if(_0x4081f4[_0xb3f0('0x35')]['filter']){_0x44d09a['where']=_[_0xb3f0('0x43')](_0x44d09a['where'],{'$or':_[_0xb3f0('0x44')](_0x44d09a[_0xb3f0('0x3a')],function(_0x5a0197){var _0x64ba7={};_0x64ba7[_0x5a0197]={'$like':'%'+_0x4081f4[_0xb3f0('0x35')][_0xb3f0('0x41')]+'%'};return _0x64ba7;})});}_0x44d09a=_[_0xb3f0('0x43')]({},_0x44d09a,_0x4081f4[_0xb3f0('0x46')]);return _0x48104b[_0xb3f0('0x124')](_0x44d09a);}})[_0xb3f0('0x13')](function(_0x5a985a){if(_0x5a985a){_0x3d1535=_0x5a985a[_0xb3f0('0x3c')];if(!_0x4081f4[_0xb3f0('0x35')][_0xb3f0('0x3d')](_0xb3f0('0x3e'))){_0x44d09a['limit']=qs['limit'](_0x4081f4[_0xb3f0('0x35')]['limit']);_0x44d09a[_0xb3f0('0x24')]=qs['offset'](_0x4081f4['query'][_0xb3f0('0x24')]);}return _0x48104b[_0xb3f0('0x124')](_0x44d09a);}})['then'](function(_0x2b71fc){if(_0x2b71fc){return _0x2b71fc?{'count':_0x3d1535,'rows':_0x2b71fc}:null;}})[_0xb3f0('0x13')](respondWithResult(_0x364302,null))[_0xb3f0('0x1d')](handleError(_0x364302,null));}; \ No newline at end of file diff --git a/server/api/chatWebsite/chatWebsite.events.js b/server/api/chatWebsite/chatWebsite.events.js new file mode 100644 index 0000000..84917af --- /dev/null +++ b/server/api/chatWebsite/chatWebsite.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7da7=['remove','emit','hook','events','../../mysqldb','ChatWebsite','update'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x7da7,0x10d));var _0x77da=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x7da7[_0x243b2f];return _0xcb3c2d;};'use strict';var EventEmitter=require(_0x77da('0x0'));var ChatWebsite=require(_0x77da('0x1'))['db'][_0x77da('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x77da('0x3'),'afterDestroy':_0x77da('0x4')};function emitEvent(_0x4f60c3){return function(_0x3a9fa6,_0x37b3d9,_0x56458c){ChatWebsiteEvents[_0x77da('0x5')](_0x4f60c3+':'+_0x3a9fa6['id'],_0x3a9fa6);ChatWebsiteEvents[_0x77da('0x5')](_0x4f60c3,_0x3a9fa6);_0x56458c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x77da('0x6')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents; \ No newline at end of file diff --git a/server/api/chatWebsite/chatWebsite.model.js b/server/api/chatWebsite/chatWebsite.model.js new file mode 100644 index 0000000..ca1dfc4 --- /dev/null +++ b/server/api/chatWebsite/chatWebsite.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x83c0=['api','moment','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','exports','chat_websites'];(function(_0x229f2f,_0x4e7bd3){var _0x46913a=function(_0x3b9283){while(--_0x3b9283){_0x229f2f['push'](_0x229f2f['shift']());}};_0x46913a(++_0x4e7bd3);}(_0x83c0,0x6c));var _0x083c=function(_0x441395,_0x432826){_0x441395=_0x441395-0x0;var _0x3b8eb2=_0x83c0[_0x441395];return _0x3b8eb2;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x083c('0x0'));var moment=require(_0x083c('0x1'));var BPromise=require('bluebird');var rp=require(_0x083c('0x2'));var fs=require('fs');var path=require(_0x083c('0x3'));var rimraf=require(_0x083c('0x4'));var config=require(_0x083c('0x5'));var attributes=require(_0x083c('0x6'));module[_0x083c('0x7')]=function(_0x19cbf0,_0x3b3076){return _0x19cbf0['define']('ChatWebsite',attributes,{'tableName':_0x083c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/chatWebsite/chatWebsite.rpc.js b/server/api/chatWebsite/chatWebsite.rpc.js new file mode 100644 index 0000000..b85924f --- /dev/null +++ b/server/api/chatWebsite/chatWebsite.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x41c7=['debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','ChatWebsite,\x20%s,\x20%s','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','localhost','socket.io-emitter','./chatWebsite.socket','register','request','then'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x41c7,0x1e5));var _0x741c=function(_0x19c66b,_0x4cb7e2){_0x19c66b=_0x19c66b-0x0;var _0x2cc1d9=_0x41c7[_0x19c66b];return _0x2cc1d9;};'use strict';var _=require('lodash');var util=require(_0x741c('0x0'));var moment=require(_0x741c('0x1'));var BPromise=require(_0x741c('0x2'));var rs=require(_0x741c('0x3'));var fs=require('fs');var Redis=require(_0x741c('0x4'));var db=require(_0x741c('0x5'))['db'];var utils=require(_0x741c('0x6'));var logger=require(_0x741c('0x7'))(_0x741c('0x8'));var config=require(_0x741c('0x9'));var jayson=require(_0x741c('0xa'));var client=jayson[_0x741c('0xb')][_0x741c('0xc')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x741c('0xd'),'port':0x18eb});var socket=require(_0x741c('0xe'))(new Redis(config['redis']));require(_0x741c('0xf'))[_0x741c('0x10')](socket);function respondWithRpcPromise(_0x2e9c14,_0x4654d8,_0x503dd1){return new BPromise(function(_0x5c8c3a,_0x5c7b5b){return client[_0x741c('0x11')](_0x2e9c14,_0x503dd1)[_0x741c('0x12')](function(_0x575905){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x4654d8,'request\x20sent');logger[_0x741c('0x13')](_0x741c('0x14'),_0x4654d8,_0x741c('0x15'),JSON['stringify'](_0x575905));if(_0x575905['error']){if(_0x575905[_0x741c('0x16')][_0x741c('0x17')]===0x1f4){logger['error'](_0x741c('0x18'),_0x4654d8,_0x575905[_0x741c('0x16')][_0x741c('0x19')]);return _0x5c7b5b(_0x575905[_0x741c('0x16')][_0x741c('0x19')]);}logger[_0x741c('0x16')](_0x741c('0x18'),_0x4654d8,_0x575905[_0x741c('0x16')][_0x741c('0x19')]);return _0x5c8c3a(_0x575905['error']['message']);}else{logger[_0x741c('0x1a')](_0x741c('0x18'),_0x4654d8,_0x741c('0x15'));_0x5c8c3a(_0x575905[_0x741c('0x1b')][_0x741c('0x19')]);}})['catch'](function(_0x2ecd23){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x4654d8,_0x2ecd23);_0x5c7b5b(_0x2ecd23);});});} \ No newline at end of file diff --git a/server/api/chatWebsite/chatWebsite.socket.js b/server/api/chatWebsite/chatWebsite.socket.js new file mode 100644 index 0000000..8ee5792 --- /dev/null +++ b/server/api/chatWebsite/chatWebsite.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf3b7=['emit','removeListener','register','length','./chatWebsite.events'];(function(_0x7fd20b,_0x440d27){var _0x1b94d8=function(_0x22b2b0){while(--_0x22b2b0){_0x7fd20b['push'](_0x7fd20b['shift']());}};_0x1b94d8(++_0x440d27);}(_0xf3b7,0x16c));var _0x7f3b=function(_0x1948c6,_0xe9c670){_0x1948c6=_0x1948c6-0x0;var _0x316cd0=_0xf3b7[_0x1948c6];return _0x316cd0;};'use strict';var ChatWebsiteEvents=require(_0x7f3b('0x0'));var events=['save','remove','update'];function createListener(_0x31969f,_0x2eb821){return function(_0x1ce13c){_0x2eb821[_0x7f3b('0x1')](_0x31969f,_0x1ce13c);};}function removeListener(_0x5032a1,_0x40919b){return function(){ChatWebsiteEvents[_0x7f3b('0x2')](_0x5032a1,_0x40919b);};}exports[_0x7f3b('0x3')]=function(_0x4665a3){for(var _0x36b784=0x0,_0x510dd1=events[_0x7f3b('0x4')];_0x36b784<_0x510dd1;_0x36b784++){var _0x12381b=events[_0x36b784];var _0x28bbb5=createListener('chatWebsite:'+_0x12381b,_0x4665a3);ChatWebsiteEvents['on'](_0x12381b,_0x28bbb5);}}; \ No newline at end of file diff --git a/server/api/chatWebsite/index.js b/server/api/chatWebsite/index.js new file mode 100644 index 0000000..cbe0c14 --- /dev/null +++ b/server/api/chatWebsite/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x745c=['/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','/:id/interactions','getInteractions','/:id/snippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','/:id/offline_messages','getOfflineMessages','/:id/users','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','now','originalname','single','file','addLogo','server/files/images/avatars/','%s-%s','addAvatar','addSystemAvatar','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','addApplications','/:id/proactive_actions','addAgents','put','delete','destroy','removeDispositions','removeAnswers','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x745c,0x75));var _0xc745=function(_0x20d8d3,_0x118ad0){_0x20d8d3=_0x20d8d3-0x0;var _0x7c229e=_0x745c[_0x20d8d3];return _0x7c229e;};'use strict';var multer=require(_0xc745('0x0'));var util=require('util');var path=require(_0xc745('0x1'));var timeout=require(_0xc745('0x2'));var express=require('express');var router=express[_0xc745('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc745('0x4'));var interaction=require(_0xc745('0x5'));var config=require(_0xc745('0x6'));var controller=require('./chatWebsite.controller');router['get']('/',auth[_0xc745('0x7')](),controller[_0xc745('0x8')]);router['get'](_0xc745('0x9'),auth[_0xc745('0x7')](),controller[_0xc745('0xa')]);router[_0xc745('0xb')](_0xc745('0xc'),auth['isAuthenticated'](),controller[_0xc745('0xd')]);router['get'](_0xc745('0xe'),auth[_0xc745('0x7')](),controller[_0xc745('0xf')]);router[_0xc745('0xb')](_0xc745('0x10'),auth[_0xc745('0x7')](),controller[_0xc745('0x11')]);router[_0xc745('0xb')](_0xc745('0x12'),controller['getLogo']);router[_0xc745('0xb')](_0xc745('0x13'),controller[_0xc745('0x14')]);router['get'](_0xc745('0x15'),controller[_0xc745('0x16')]);router[_0xc745('0xb')](_0xc745('0x17'),controller['getSystemAvatar']);router[_0xc745('0xb')](_0xc745('0x18'),auth[_0xc745('0x7')](),controller[_0xc745('0x19')]);router[_0xc745('0xb')](_0xc745('0x1a'),controller['getSnippet']);router[_0xc745('0xb')](_0xc745('0x1b'),auth[_0xc745('0x7')](),controller[_0xc745('0x1c')]);router[_0xc745('0xb')]('/:id/proactive_actions',auth[_0xc745('0x7')](),controller[_0xc745('0x1d')]);router[_0xc745('0xb')](_0xc745('0x1e'),controller['getFields']);router[_0xc745('0xb')](_0xc745('0x1f'),auth['isAuthenticated'](),controller[_0xc745('0x20')]);router[_0xc745('0xb')](_0xc745('0x21'),auth[_0xc745('0x7')](),controller['getAgents']);router[_0xc745('0x22')]('/',auth[_0xc745('0x7')](),controller['create']);router[_0xc745('0x22')](_0xc745('0xe'),auth[_0xc745('0x7')](),controller[_0xc745('0x23')]);router[_0xc745('0x22')](_0xc745('0x10'),auth[_0xc745('0x7')](),controller[_0xc745('0x24')]);var upload=multer({'storage':multer[_0xc745('0x25')]({'destination':function(_0x5c794a,_0x1f7b6b,_0x461b28){_0x461b28(null,path[_0xc745('0x26')](config[_0xc745('0x27')],_0xc745('0x28')));},'filename':function(_0x530c05,_0x2478b5,_0x4fb0a7){_0x4fb0a7(null,util[_0xc745('0x29')]('%s-%s',Date[_0xc745('0x2a')](),_0x2478b5[_0xc745('0x2b')]));}})});router[_0xc745('0x22')]('/:id/logo',upload[_0xc745('0x2c')](_0xc745('0x2d')),controller[_0xc745('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xbdea62,_0x46d333,_0x342d64){_0x342d64(null,path[_0xc745('0x26')](config[_0xc745('0x27')],_0xc745('0x2f')));},'filename':function(_0xbe1911,_0x1e20f3,_0x501fd4){_0x501fd4(null,util[_0xc745('0x29')](_0xc745('0x30'),Date['now'](),_0x1e20f3['originalname']));}})});router[_0xc745('0x22')]('/:id/avatar',upload[_0xc745('0x2c')](_0xc745('0x2d')),controller[_0xc745('0x31')]);var upload=multer({'storage':multer[_0xc745('0x25')]({'destination':function(_0x17be7d,_0x3c70ca,_0x4f1c8d){_0x4f1c8d(null,path[_0xc745('0x26')](config[_0xc745('0x27')],_0xc745('0x2f')));},'filename':function(_0x3b0c61,_0x13a4c8,_0x489312){_0x489312(null,util[_0xc745('0x29')](_0xc745('0x30'),Date[_0xc745('0x2a')](),_0x13a4c8['originalname']));}})});router[_0xc745('0x22')](_0xc745('0x15'),upload[_0xc745('0x2c')](_0xc745('0x2d')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xc745('0x25')]({'destination':function(_0x2c0586,_0x3b62b4,_0xedfb9f){_0xedfb9f(null,path[_0xc745('0x26')](config[_0xc745('0x27')],'server/files/images/avatars/'));},'filename':function(_0xed3b15,_0x24b038,_0x407e1a){_0x407e1a(null,util['format'](_0xc745('0x30'),Date[_0xc745('0x2a')](),_0x24b038[_0xc745('0x2b')]));}})});router['post'](_0xc745('0x17'),upload[_0xc745('0x2c')](_0xc745('0x2d')),controller[_0xc745('0x32')]);router[_0xc745('0x22')]('/:id/notify',controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xc745('0x25')]({'destination':function(_0x16bf11,_0x39f988,_0x26eeb5){const _0x428709=path[_0xc745('0x26')](config[_0xc745('0x27')],_0xc745('0x33'),_0xc745('0x34'),_0xc745('0x35'));fs_extra[_0xc745('0x36')](_0x428709,function(){_0x26eeb5(null,_0x428709);});},'filename':function(_0x31915e,_0x4968ce,_0x8583ba){const _0x1c83e6=_0x4968ce[_0xc745('0x2b')][_0xc745('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x5c2a17=path[_0xc745('0x38')](_0x1c83e6);const _0x5888a9=Date[_0xc745('0x2a')]()+'-'+_0x1c83e6[_0xc745('0x37')](_0x5c2a17,'')+_0x5c2a17;_0x8583ba(null,_0x5888a9);}})});router[_0xc745('0x22')](_0xc745('0x39'),offlineUploadMulter[_0xc745('0x3a')](),controller['offline']);router[_0xc745('0x22')]('/:id/interactions',auth[_0xc745('0x7')](),controller['addInteraction']);router[_0xc745('0x22')](_0xc745('0x1b'),auth[_0xc745('0x7')](),controller[_0xc745('0x3b')]);router[_0xc745('0x22')](_0xc745('0x3c'),auth[_0xc745('0x7')](),controller['addProactiveActions']);router['post']('/:id/users',auth[_0xc745('0x7')](),controller[_0xc745('0x3d')]);router[_0xc745('0x3e')]('/:id',auth[_0xc745('0x7')](),controller['update']);router[_0xc745('0x3f')]('/:id',auth[_0xc745('0x7')](),controller[_0xc745('0x40')]);router[_0xc745('0x3f')](_0xc745('0xe'),auth[_0xc745('0x7')](),controller[_0xc745('0x41')]);router['delete'](_0xc745('0x10'),auth[_0xc745('0x7')](),controller[_0xc745('0x42')]);router['delete']('/:id/users',auth[_0xc745('0x7')](),controller['removeAgents']);module[_0xc745('0x43')]=router; \ No newline at end of file diff --git a/server/api/client-side-logs.js b/server/api/client-side-logs.js new file mode 100644 index 0000000..626a56e --- /dev/null +++ b/server/api/client-side-logs.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x47c0=['expressEndpoint','/client-logs','isAuthenticated','exports','beaver-logger/server','../config/environment','Router','app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!'];(function(_0x2c24ba,_0x3d089f){var _0xd68a3=function(_0x41a345){while(--_0x41a345){_0x2c24ba['push'](_0x2c24ba['shift']());}};_0xd68a3(++_0x3d089f);}(_0x47c0,0xa9));var _0x047c=function(_0x190674,_0x457608){_0x190674=_0x190674-0x0;var _0x3914c7=_0x47c0[_0x190674];return _0x3914c7;};var beaverLogger=require(_0x047c('0x0'));var express=require('express');var auth=require('../components/auth/service');var config=require(_0x047c('0x1'));var router=express[_0x047c('0x2')]();var isProduction=config['env']==='production'||![];function clientSideLogs(_0x468c93,_0x199ee2,_0x47b3d9){var _0x59cafa=_0x468c93[_0x047c('0x3')][_0x047c('0x4')](_0x047c('0x5'));if(!_0x59cafa){throw new Error(_0x047c('0x6'));}return beaverLogger[_0x047c('0x7')]({'uri':_0x047c('0x8'),'logger':_0x59cafa,'enableCors':!isProduction})(_0x468c93,_0x199ee2,_0x47b3d9);}router['use'](auth[_0x047c('0x9')](),clientSideLogs);module[_0x047c('0xa')]=router; \ No newline at end of file diff --git a/server/api/cloudProvider/cloudProvider.attributes.js b/server/api/cloudProvider/cloudProvider.attributes.js new file mode 100644 index 0000000..c067442 --- /dev/null +++ b/server/api/cloudProvider/cloudProvider.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xad65=['MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','MicrosoftAzure','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','TEXT'];(function(_0x5e2a0f,_0x447ab4){var _0x3e8c10=function(_0x56dd4e){while(--_0x56dd4e){_0x5e2a0f['push'](_0x5e2a0f['shift']());}};_0x3e8c10(++_0x447ab4);}(_0xad65,0xdf));var _0x5ad6=function(_0x527354,_0x1e0a5b){_0x527354=_0x527354-0x0;var _0xc1f444=_0xad65[_0x527354];return _0xc1f444;};'use strict';var Sequelize=require(_0x5ad6('0x0'));module[_0x5ad6('0x1')]={'name':{'type':Sequelize[_0x5ad6('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x5ad6('0x3')]('AmazonAWS','Google',_0x5ad6('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x5ad6('0x5'),_0x5ad6('0x6'))},'data1':{'type':Sequelize[_0x5ad6('0x2')],'comment':_0x5ad6('0x7')},'data2':{'type':Sequelize[_0x5ad6('0x2')],'comment':_0x5ad6('0x8')},'data3':{'type':Sequelize[_0x5ad6('0x2')],'comment':_0x5ad6('0x9')},'data4':{'type':Sequelize[_0x5ad6('0x2')],'comment':'MicrosoftAzure\x20=>\x20redirect_uri'},'data5':{'type':Sequelize[_0x5ad6('0xa')],'comment':_0x5ad6('0xb')},'data6':{'type':Sequelize['TEXT'],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0x5ad6('0xa')],'comment':_0x5ad6('0xc')}}; \ No newline at end of file diff --git a/server/api/cloudProvider/cloudProvider.controller.js b/server/api/cloudProvider/cloudProvider.controller.js new file mode 100644 index 0000000..05971cf --- /dev/null +++ b/server/api/cloudProvider/cloudProvider.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe58d=['MicrosoftAzure','decryptString','data3','catch','show','params','rawAttributes','includeAll','create','body','values','includes','find','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','error','get','state','Invalid\x20state\x20parameter','parse','from','base64','ascii','isValidIdToken','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','access_token','refresh_token','update','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','send','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','stack','name','index','map','CloudProvider','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','service'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xe58d,0x139));var _0xde58=function(_0x1ed7e7,_0x546a7f){_0x1ed7e7=_0x1ed7e7-0x0;var _0xc8da5=_0xe58d[_0x1ed7e7];return _0xc8da5;};'use strict';var _=require(_0xde58('0x0'));var Redis=require('ioredis');var qs=require(_0xde58('0x1'));var encryptor=require(_0xde58('0x2'));var config=require(_0xde58('0x3'));var logger=require(_0xde58('0x4'))(_0xde58('0x5'));var db=require(_0xde58('0x6'))['db'];var oauth=require(_0xde58('0x7'));config[_0xde58('0x8')]=_['defaults'](config[_0xde58('0x8')],{'host':_0xde58('0x9'),'port':0x18eb});var socket=require(_0xde58('0xa'))(new Redis(config[_0xde58('0x8')]));var redis=new Redis(config[_0xde58('0x8')]);function respondWithStatusCode(_0x45cfce,_0x565356){_0x565356=_0x565356||0xcc;return function(_0xbf0ad7){if(_0xbf0ad7){return _0x45cfce[_0xde58('0xb')](_0x565356);}return _0x45cfce[_0xde58('0xc')](_0x565356)[_0xde58('0xd')]();};}function respondWithResult(_0x3e4b6c,_0x2d24cd){_0x2d24cd=_0x2d24cd||0xc8;return function(_0x3507b8){if(_0x3507b8){return _0x3e4b6c[_0xde58('0xc')](_0x2d24cd)[_0xde58('0xe')](_0x3507b8);}};}function respondWithFilteredResult(_0x540ffb,_0x53fab9){return function(_0x528c9d){if(_0x528c9d){var _0x3affcd=typeof _0x53fab9[_0xde58('0xf')]===_0xde58('0x10')&&typeof _0x53fab9[_0xde58('0x11')]==='undefined';var _0x2a4891=_0x528c9d['count'];var _0x252591=_0x3affcd?0x0:_0x53fab9['offset'];var _0x47ca7f=_0x3affcd?_0x528c9d[_0xde58('0x12')]:_0x53fab9[_0xde58('0xf')]+_0x53fab9[_0xde58('0x11')];var _0x5d844b;if(_0x47ca7f>=_0x2a4891){_0x47ca7f=_0x2a4891;_0x5d844b=0xc8;}else{_0x5d844b=0xce;}_0x540ffb[_0xde58('0xc')](_0x5d844b);return _0x540ffb[_0xde58('0x13')](_0xde58('0x14'),_0x252591+'-'+_0x47ca7f+'/'+_0x2a4891)[_0xde58('0xe')](_0x528c9d);}return null;};}function saveUpdates(_0x5f2e43){return function(_0xdc9a){if(_0xdc9a){return _0xdc9a['update'](_0x5f2e43)[_0xde58('0x15')](function(_0x23dfbf){return _0x23dfbf;});}return null;};}function removeEntity(_0x23e70d){return function(_0x1d988d){if(_0x1d988d){return _0x1d988d[_0xde58('0x16')]()['then'](function(){_0x23e70d[_0xde58('0xc')](0xcc)[_0xde58('0xd')]();});}};}function handleEntityNotFound(_0x5385a2){return function(_0x2451b0){if(!_0x2451b0){_0x5385a2[_0xde58('0xb')](0x194);}return _0x2451b0;};}function handleError(_0x48c587,_0x31d017){_0x31d017=_0x31d017||0x1f4;return function(_0x54f7aa){logger['error'](_0x54f7aa[_0xde58('0x17')]);if(_0x54f7aa[_0xde58('0x18')]){delete _0x54f7aa[_0xde58('0x18')];}_0x48c587['status'](_0x31d017)['send'](_0x54f7aa);};}function maskClientSecret(_0x5d1f67){return _['padEnd'](_0x5d1f67['slice'](0x0,0x3),0x14,'*');}exports[_0xde58('0x19')]=function(_0x2b6eeb,_0x4d7792){var _0x204557={},_0x2abf4f={},_0x162c35={'count':0x0,'rows':[]};var _0x297da8=_[_0xde58('0x1a')](db[_0xde58('0x1b')]['rawAttributes'],function(_0x33241b){return{'name':_0x33241b[_0xde58('0x1c')],'type':_0x33241b[_0xde58('0x1d')]['key']};});_0x2abf4f[_0xde58('0x1e')]=_[_0xde58('0x1a')](_0x297da8,'name');_0x2abf4f[_0xde58('0x1f')]=_[_0xde58('0x20')](_0x2b6eeb[_0xde58('0x1f')]);_0x2abf4f[_0xde58('0x21')]=_[_0xde58('0x22')](_0x2abf4f[_0xde58('0x1e')],_0x2abf4f[_0xde58('0x1f')]);_0x204557[_0xde58('0x23')]=_[_0xde58('0x22')](_0x2abf4f[_0xde58('0x1e')],qs[_0xde58('0x24')](_0x2b6eeb[_0xde58('0x1f')]['fields']));_0x204557[_0xde58('0x23')]=_0x204557['attributes'][_0xde58('0x25')]?_0x204557[_0xde58('0x23')]:_0x2abf4f[_0xde58('0x1e')];if(!_0x2b6eeb[_0xde58('0x1f')][_0xde58('0x26')](_0xde58('0x27'))){_0x204557[_0xde58('0x11')]=qs[_0xde58('0x11')](_0x2b6eeb[_0xde58('0x1f')][_0xde58('0x11')]);_0x204557[_0xde58('0xf')]=qs[_0xde58('0xf')](_0x2b6eeb['query'][_0xde58('0xf')]);}_0x204557[_0xde58('0x28')]=qs['sort'](_0x2b6eeb[_0xde58('0x1f')][_0xde58('0x29')]);_0x204557[_0xde58('0x2a')]=qs[_0xde58('0x21')](_[_0xde58('0x2b')](_0x2b6eeb['query'],_0x2abf4f[_0xde58('0x21')]),_0x297da8);if(_0x2b6eeb[_0xde58('0x1f')][_0xde58('0x2c')]){_0x204557[_0xde58('0x2a')]=_[_0xde58('0x2d')](_0x204557[_0xde58('0x2a')],{'$or':_['map'](_0x297da8,function(_0x3ee583){if(_0x3ee583[_0xde58('0x1d')]!==_0xde58('0x2e')){var _0x5c3321={};_0x5c3321[_0x3ee583[_0xde58('0x18')]]={'$like':'%'+_0x2b6eeb['query']['filter']+'%'};return _0x5c3321;}})});}_0x204557=_['merge']({},_0x204557,_0x2b6eeb[_0xde58('0x2f')]);var _0x2a30ea={'where':_0x204557[_0xde58('0x2a')]};return db[_0xde58('0x1b')][_0xde58('0x12')](_0x2a30ea)['then'](function(_0xbc0f08){_0x162c35[_0xde58('0x12')]=_0xbc0f08;if(_0x2b6eeb[_0xde58('0x1f')]['includeAll']){_0x204557[_0xde58('0x30')]=[{'all':!![]}];}return db[_0xde58('0x1b')]['findAll'](_0x204557);})['then'](function(_0x3256b7){_0x162c35[_0xde58('0x31')]=_[_0xde58('0x1a')](_0x3256b7,function(_0x500cbb){if(_0x500cbb[_0xde58('0x32')]===_0xde58('0x33')){var _0x5bef89=encryptor[_0xde58('0x34')](_0x500cbb[_0xde58('0x35')]);_0x500cbb[_0xde58('0x35')]=maskClientSecret(_0x5bef89);}return _0x500cbb;});return _0x162c35;})[_0xde58('0x15')](respondWithFilteredResult(_0x4d7792,_0x204557))[_0xde58('0x36')](handleError(_0x4d7792,null));};exports[_0xde58('0x37')]=function(_0x166bd4,_0xfe182a){var _0x466f61={'raw':!![],'where':{'id':_0x166bd4[_0xde58('0x38')]['id']}},_0x15681a={};_0x15681a['model']=_[_0xde58('0x20')](db[_0xde58('0x1b')][_0xde58('0x39')]);_0x15681a[_0xde58('0x1f')]=_['keys'](_0x166bd4[_0xde58('0x1f')]);_0x15681a[_0xde58('0x21')]=_[_0xde58('0x22')](_0x15681a['model'],_0x15681a[_0xde58('0x1f')]);_0x466f61[_0xde58('0x23')]=_[_0xde58('0x22')](_0x15681a['model'],qs['fields'](_0x166bd4[_0xde58('0x1f')][_0xde58('0x24')]));_0x466f61[_0xde58('0x23')]=_0x466f61[_0xde58('0x23')][_0xde58('0x25')]?_0x466f61['attributes']:_0x15681a['model'];if(_0x166bd4[_0xde58('0x1f')][_0xde58('0x3a')]){_0x466f61['include']=[{'all':!![]}];}_0x466f61=_[_0xde58('0x2d')]({},_0x466f61,_0x166bd4['options']);return db['CloudProvider']['find'](_0x466f61)[_0xde58('0x15')](handleEntityNotFound(_0xfe182a,null))[_0xde58('0x15')](function(_0x172b7a){if(_0x172b7a[_0xde58('0x32')]==='MicrosoftAzure'){var _0x571187=encryptor['decryptString'](_0x172b7a['data3']);_0x172b7a[_0xde58('0x35')]=maskClientSecret(_0x571187);}return _0x172b7a;})[_0xde58('0x15')](respondWithResult(_0xfe182a,null))['catch'](handleError(_0xfe182a,null));};exports[_0xde58('0x3b')]=function(_0x214836,_0x15b8f4){if(!_0x214836[_0xde58('0x3c')][_0xde58('0x18')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x214836[_0xde58('0x3c')][_0xde58('0x32')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x3485b5=db['CloudProvider'][_0xde58('0x39')]['service'][_0xde58('0x3d')];if(!_0x3485b5[_0xde58('0x3e')](_0x214836[_0xde58('0x3c')][_0xde58('0x32')]))throw new Error('Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'+_0x3485b5['join'](',\x20'));if(_0x214836[_0xde58('0x3c')][_0xde58('0x32')]===_0xde58('0x33')&&_0x214836[_0xde58('0x3c')][_0xde58('0x35')]){_0x214836[_0xde58('0x3c')][_0xde58('0x35')]=encryptor['encryptString'](_0x214836['body'][_0xde58('0x35')]);}return db['CloudProvider']['create'](_0x214836[_0xde58('0x3c')],{})[_0xde58('0x15')](respondWithResult(_0x15b8f4,0xc9))[_0xde58('0x36')](handleError(_0x15b8f4,null));};exports['update']=function(_0x5e53e4,_0x3aa83d){if(_0x5e53e4[_0xde58('0x3c')]['id']){delete _0x5e53e4[_0xde58('0x3c')]['id'];}return db[_0xde58('0x1b')][_0xde58('0x3f')]({'where':{'id':_0x5e53e4[_0xde58('0x38')]['id']}})['then'](handleEntityNotFound(_0x3aa83d,null))[_0xde58('0x15')](function(_0x283d29){if(_0x283d29[_0xde58('0x32')]===_0xde58('0x33')&&_0x5e53e4[_0xde58('0x3c')]['data3']){_0x5e53e4[_0xde58('0x3c')][_0xde58('0x35')]=encryptor['encryptString'](_0x5e53e4['body'][_0xde58('0x35')]);}return _0x283d29;})[_0xde58('0x15')](saveUpdates(_0x5e53e4[_0xde58('0x3c')],null))[_0xde58('0x15')](respondWithResult(_0x3aa83d,null))[_0xde58('0x36')](handleError(_0x3aa83d,null));};exports['destroy']=function(_0x4cc5b0,_0x1affae){return db['CloudProvider'][_0xde58('0x3f')]({'where':{'id':_0x4cc5b0['params']['id']}})[_0xde58('0x15')](handleEntityNotFound(_0x1affae,null))[_0xde58('0x15')](removeEntity(_0x1affae,null))[_0xde58('0x36')](handleError(_0x1affae,null));};exports['oauth2MicrosoftAuthorize']=function(_0x2537a6,_0x21706d){return db[_0xde58('0x1b')]['findOne']({'where':{'id':_0x2537a6[_0xde58('0x38')]['id']},'raw':!![]})[_0xde58('0x15')](function(_0x2d2a26){if(!_0x2d2a26)return _0x21706d[_0xde58('0xb')](0x194);return{'url':oauth[_0xde58('0x40')](_0x2d2a26,_0x2537a6['user']['id'])};})[_0xde58('0x15')](respondWithResult(_0x21706d,null))[_0xde58('0x36')](handleError(_0x21706d,null));};exports[_0xde58('0x41')]=function(_0x48ba4b,_0x5e2354){var _0x46339f=_0x48ba4b[_0xde58('0x3c')];var _0x4f3d15;var _0x1ce4e5;if(_0x46339f[_0xde58('0x42')])throw _0x46339f;redis[_0xde58('0x43')](_0x46339f[_0xde58('0x44')])['then'](function(_0x49cd28){if(!_0x49cd28)throw new Error(_0xde58('0x45'));_0x4f3d15=JSON[_0xde58('0x46')](_0x49cd28);var _0x498e3e=Buffer[_0xde58('0x47')](_0x46339f['state'],_0xde58('0x48'))['toString'](_0xde58('0x49'));_0x1ce4e5=JSON[_0xde58('0x46')](_0x498e3e);if(!oauth[_0xde58('0x4a')](_0x46339f['id_token'],_0x4f3d15['oauth2Claims']))throw new Error(_0xde58('0x4b'));redis['del'](_0x46339f['state']);return oauth[_0xde58('0x4c')](_0x46339f[_0xde58('0x4d')],_0x4f3d15);})[_0xde58('0x15')](function(_0x4bcb6a){_0x4f3d15[_0xde58('0x4e')]=_0x4bcb6a[_0xde58('0x4f')];_0x4f3d15['data6']=_0x4bcb6a[_0xde58('0x50')];return db[_0xde58('0x1b')][_0xde58('0x51')]({'data5':_0x4f3d15[_0xde58('0x4e')],'data6':_0x4f3d15[_0xde58('0x52')]},{'where':{'id':_0x4f3d15['id']}});})['then'](function(){oauth[_0xde58('0x53')](_0x4f3d15);socket[_0xde58('0x54')](_0xde58('0x55'),{'id':_0x1ce4e5['id']});return;})[_0xde58('0x15')](respondWithStatusCode(_0x5e2354,null))['catch'](function(_0x4714d7){if(_0x1ce4e5){socket[_0xde58('0x54')](_0xde58('0x56'),{'id':_0x1ce4e5['id']});}if(!_0x4f3d15){logger['error'](_0xde58('0x57'),_0x4714d7);return _0x5e2354[_0xde58('0xc')](0x1f4)[_0xde58('0x58')](_0x4714d7['message']);}logger[_0xde58('0x42')](_0xde58('0x59'),_0x4f3d15['id'],JSON[_0xde58('0x5a')](_0x4714d7));});}; \ No newline at end of file diff --git a/server/api/cloudProvider/cloudProvider.model.js b/server/api/cloudProvider/cloudProvider.model.js new file mode 100644 index 0000000..90398a2 --- /dev/null +++ b/server/api/cloudProvider/cloudProvider.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x580e=['api','moment','bluebird','path','rimraf','./cloudProvider.attributes','exports','CloudProvider','cloud_providers','lodash','util','../../config/logger'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x580e,0xf9));var _0xe580=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x580e[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xe580('0x0'));var util=require(_0xe580('0x1'));var logger=require(_0xe580('0x2'))(_0xe580('0x3'));var moment=require(_0xe580('0x4'));var BPromise=require(_0xe580('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe580('0x6'));var rimraf=require(_0xe580('0x7'));var config=require('../../config/environment');var attributes=require(_0xe580('0x8'));module[_0xe580('0x9')]=function(_0x3156b9,_0x1acb27){return _0x3156b9['define'](_0xe580('0xa'),attributes,{'tableName':_0xe580('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cloudProvider/cloudProvider.oauth.js b/server/api/cloudProvider/cloudProvider.oauth.js new file mode 100644 index 0000000..022518e --- /dev/null +++ b/server/api/cloudProvider/cloudProvider.oauth.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xba16=['Dynamics365','replace','{TENANT_ID}','data2','from','stringify','toString','base64','randomBytes','hex','client_id','data1','response_type','state','nonce','prompt','login','map','key','value','oauth2/','set','decode','issuer','aud','unix','exp','data3','then','refresh_token','data6','POST','data5','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','decryptString','intervals','bind','CloudProvider','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','crypto','jsonwebtoken','moment','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','type','push','/.default','join'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xba16,0x1d0));var _0x6ba1=function(_0x385c76,_0xb97335){_0x385c76=_0x385c76-0x0;var _0x5c8367=_0xba16[_0x385c76];return _0x5c8367;};'use strict';var _=require('lodash');var crypto=require(_0x6ba1('0x0'));var jwt=require(_0x6ba1('0x1'));var moment=require(_0x6ba1('0x2'));var Redis=require('ioredis');var rp=require(_0x6ba1('0x3'));var util=require(_0x6ba1('0x4'));var encryptor=require(_0x6ba1('0x5'));var config=require(_0x6ba1('0x6'));var logger=require(_0x6ba1('0x7'))('api');var schedule=require(_0x6ba1('0x8'));var db=require(_0x6ba1('0x9'))['db'];config[_0x6ba1('0xa')]=_[_0x6ba1('0xb')](config[_0x6ba1('0xa')],{'host':'localhost','port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x6ba1('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x6ba1('0xd'),_0x6ba1('0xe'),_0x6ba1('0xf'),_0x6ba1('0x10'),_0x6ba1('0x11'),_0x6ba1('0x12'),_0x6ba1('0x13')],'Dynamics365':['openid','offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x6ba1('0x14');var MICROSOFT_TOKEN_ENDPOINT=_0x6ba1('0x15');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x5814a4){var _0x444637=_['map'](AZURE_AUTH_SCOPES[_0x5814a4[_0x6ba1('0x16')]]);if(_0x5814a4['type']==='Dynamics365')_0x444637[_0x6ba1('0x17')](_0x5814a4['data7']+_0x6ba1('0x18'));return _0x444637[_0x6ba1('0x19')]('\x20');}function getAccessTokenScope(_0x50d10c){if(_0x50d10c[_0x6ba1('0x16')]==='Outlook365')return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x50d10c[_0x6ba1('0x16')]===_0x6ba1('0x1a'))return _0x50d10c['data7']+_0x6ba1('0x18');}function generateMicrosoftAuthorizationUrl(_0x1edb53,_0x258254){var _0x2392ea=MICROSOFT_AUTH_URL[_0x6ba1('0x1b')](_0x6ba1('0x1c'),_0x1edb53[_0x6ba1('0x1d')]);var _0x130bf8=['code','id_token'];var _0x559f42=Buffer[_0x6ba1('0x1e')](JSON[_0x6ba1('0x1f')]({'id':_0x258254}))[_0x6ba1('0x20')](_0x6ba1('0x21'));var _0x1e6173=crypto[_0x6ba1('0x22')](0x10)[_0x6ba1('0x20')](_0x6ba1('0x23'));var _0x444cd1=getAuthorizationScopes(_0x1edb53);var _0x26b86f=[{'key':_0x6ba1('0x24'),'value':_0x1edb53[_0x6ba1('0x25')]},{'key':_0x6ba1('0x26'),'value':encodeURIComponent(_0x130bf8[_0x6ba1('0x19')]('\x20'))},{'key':'redirect_uri','value':_0x1edb53['data4']},{'key':'response_mode','value':'form_post'},{'key':'scope','value':encodeURIComponent(_0x444cd1)},{'key':_0x6ba1('0x27'),'value':_0x559f42},{'key':_0x6ba1('0x28'),'value':_0x1e6173},{'key':_0x6ba1('0x29'),'value':_0x6ba1('0x2a')}];var _0x1d55c5=_0x2392ea+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x6ba1('0x2b')](_0x26b86f,function(_0x271a61){return _0x271a61[_0x6ba1('0x2c')]+'='+_0x271a61[_0x6ba1('0x2d')];})['join']('&');_0x1edb53['oauth2Claims']={'issuer':_0x2392ea[_0x6ba1('0x1b')](_0x6ba1('0x2e'),''),'audience':_0x1edb53[_0x6ba1('0x25')],'state':_0x559f42,'nonce':_0x1e6173};redis[_0x6ba1('0x2f')](_0x559f42,JSON[_0x6ba1('0x1f')](_0x1edb53));return _0x1d55c5;}function isValidIdToken(_0x31a558,_0x5f53cd){try{var _0x557458=jwt[_0x6ba1('0x30')](_0x31a558,{'complete':!![]});var _0x3d8e75=_0x557458['payload'];if(_0x3d8e75['iss']!==_0x5f53cd[_0x6ba1('0x31')])return![];if(_0x3d8e75[_0x6ba1('0x32')]!==_0x5f53cd['audience'])return![];if(_0x3d8e75[_0x6ba1('0x28')]!==_0x5f53cd[_0x6ba1('0x28')])return![];if(moment()['isAfter'](moment[_0x6ba1('0x33')](_0x3d8e75[_0x6ba1('0x34')])))return![];return!![];}catch(_0x59d31c){throw _0x59d31c;}}function refreshOauth2MicrosoftAccessToken(_0x4c1d6e){return Promise['resolve']()['then'](function(){if(_0x4c1d6e[_0x6ba1('0x35')])return _0x4c1d6e;return db['CloudProvider']['findOne']({'where':{'id':_0x4c1d6e['id']},'raw':!![]});})[_0x6ba1('0x36')](function(_0x51b798){var _0x484110={'grant_type':_0x6ba1('0x37'),'refresh_token':_0x51b798[_0x6ba1('0x38')],'scope':getAccessTokenScope(_0x51b798),'redirect_uri':_0x51b798['data4'],'client_id':_0x51b798[_0x6ba1('0x25')],'client_secret':encryptor['decryptString'](_0x51b798[_0x6ba1('0x35')])};var _0x3c1b68={'method':_0x6ba1('0x39'),'uri':MICROSOFT_AUTH_URL[_0x6ba1('0x1b')](_0x6ba1('0x1c'),_0x51b798[_0x6ba1('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x484110,'json':!![]};return rp(_0x3c1b68);})[_0x6ba1('0x36')](function(_0x4937e0){_0x4c1d6e[_0x6ba1('0x3a')]=_0x4937e0['access_token'];_0x4c1d6e[_0x6ba1('0x38')]=_0x4937e0[_0x6ba1('0x37')];return db['CloudProvider'][_0x6ba1('0x3b')]({'data5':_0x4c1d6e[_0x6ba1('0x3a')],'data6':_0x4c1d6e[_0x6ba1('0x38')]},{'where':{'id':_0x4c1d6e['id']}});})[_0x6ba1('0x36')](function(){return _0x4c1d6e;})[_0x6ba1('0x3c')](function(_0x45daae){logger[_0x6ba1('0x3d')](_0x6ba1('0x3e'),_0x4c1d6e['id'],_0x45daae);});}function getOauth2MicrosoftAccessToken(_0xee32e2,_0x544b36){var _0x4767f0={'grant_type':'authorization_code','code':_0xee32e2,'scope':getAccessTokenScope(_0x544b36),'redirect_uri':_0x544b36['data4'],'client_id':_0x544b36[_0x6ba1('0x25')],'client_secret':encryptor[_0x6ba1('0x3f')](_0x544b36[_0x6ba1('0x35')])};var _0x266428={'method':_0x6ba1('0x39'),'uri':MICROSOFT_AUTH_URL[_0x6ba1('0x1b')](_0x6ba1('0x1c'),_0x544b36[_0x6ba1('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4767f0,'json':!![]};return rp(_0x266428);}function startRefreshInterval(_0x297c12){var _0xbe6e2b=schedule[_0x6ba1('0x40')];if(_0xbe6e2b[_0x297c12['id']])clearInterval(_0xbe6e2b[_0x297c12['id']]);_0xbe6e2b[_0x297c12['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x6ba1('0x41')](this,{'id':_0x297c12['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x6ba1('0x40')]=_0xbe6e2b;}function startAllRefreshIntervals(){return db[_0x6ba1('0x42')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x6ba1('0x36')](function(_0x4a68ae){var _0x423dd5=_0x4a68ae[_0x6ba1('0x2b')](function(_0x5c880d){return refreshOauth2MicrosoftAccessToken(_0x5c880d)[_0x6ba1('0x36')](function(_0x3e8c45){startRefreshInterval(_0x3e8c45);});});return Promise[_0x6ba1('0x43')](_0x423dd5);})[_0x6ba1('0x3c')](function(_0x369c79){var _0xe77464=_0x369c79?util[_0x6ba1('0x44')](_0x369c79,{'showHidden':![],'depth':null}):'';logger['error'](_0x6ba1('0x45'),_0xe77464);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval}; \ No newline at end of file diff --git a/server/api/cloudProvider/cloudProvider.rpc.js b/server/api/cloudProvider/cloudProvider.rpc.js new file mode 100644 index 0000000..c57d284 --- /dev/null +++ b/server/api/cloudProvider/cloudProvider.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5453=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x1bd6b1,_0x57e4c5){var _0x199e9=function(_0x5ae181){while(--_0x5ae181){_0x1bd6b1['push'](_0x1bd6b1['shift']());}};_0x199e9(++_0x57e4c5);}(_0x5453,0x18b));var _0x3545=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5453[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x3545('0x0'));var util=require(_0x3545('0x1'));var moment=require(_0x3545('0x2'));var BPromise=require(_0x3545('0x3'));var rs=require(_0x3545('0x4'));var fs=require('fs');var Redis=require(_0x3545('0x5'));var db=require(_0x3545('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3545('0x7'));var config=require(_0x3545('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3545('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x290aa5,_0x496d6b,_0x5d5808){return new BPromise(function(_0x2974ae,_0x3cf0cc){return client[_0x3545('0xa')](_0x290aa5,_0x5d5808)['then'](function(_0x21dc51){logger[_0x3545('0xb')](_0x3545('0xc'),_0x496d6b,_0x3545('0xd'));logger[_0x3545('0xe')](_0x3545('0xf'),_0x496d6b,_0x3545('0xd'),JSON['stringify'](_0x21dc51));if(_0x21dc51['error']){if(_0x21dc51[_0x3545('0x10')][_0x3545('0x11')]===0x1f4){logger[_0x3545('0x10')](_0x3545('0xc'),_0x496d6b,_0x21dc51['error']['message']);return _0x3cf0cc(_0x21dc51['error'][_0x3545('0x12')]);}logger[_0x3545('0x10')]('CloudProvider,\x20%s,\x20%s',_0x496d6b,_0x21dc51[_0x3545('0x10')]['message']);return _0x2974ae(_0x21dc51['error'][_0x3545('0x12')]);}else{logger[_0x3545('0xb')]('CloudProvider,\x20%s,\x20%s',_0x496d6b,_0x3545('0xd'));_0x2974ae(_0x21dc51[_0x3545('0x13')]['message']);}})[_0x3545('0x14')](function(_0x51f69b){logger[_0x3545('0x10')](_0x3545('0xc'),_0x496d6b,_0x51f69b);_0x3cf0cc(_0x51f69b);});});} \ No newline at end of file diff --git a/server/api/cloudProvider/index.js b/server/api/cloudProvider/index.js new file mode 100644 index 0000000..366ba9b --- /dev/null +++ b/server/api/cloudProvider/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1261=['/:id','show','create','put','update','delete','/:id/oauth2/microsoft/authorize/','post','exports','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index'];(function(_0x112e2a,_0x364486){var _0x4f8af9=function(_0xa11c0d){while(--_0xa11c0d){_0x112e2a['push'](_0x112e2a['shift']());}};_0x4f8af9(++_0x364486);}(_0x1261,0x144));var _0x1126=function(_0xdbb6cb,_0x3b8fda){_0xdbb6cb=_0xdbb6cb-0x0;var _0x476b50=_0x1261[_0xdbb6cb];return _0x476b50;};'use strict';var express=require('express');var router=express[_0x1126('0x0')]();var auth=require(_0x1126('0x1'));var controller=require(_0x1126('0x2'));router[_0x1126('0x3')]('/',auth[_0x1126('0x4')](),controller[_0x1126('0x5')]);router[_0x1126('0x3')](_0x1126('0x6'),auth[_0x1126('0x4')](),controller[_0x1126('0x7')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1126('0x8')]);router[_0x1126('0x9')]('/:id',auth[_0x1126('0x4')](),controller[_0x1126('0xa')]);router[_0x1126('0xb')](_0x1126('0x6'),auth[_0x1126('0x4')](),controller['destroy']);router[_0x1126('0x3')](_0x1126('0xc'),auth[_0x1126('0x4')](),controller['oauth2MicrosoftAuthorize']);router[_0x1126('0xd')]('/oauth2/microsoft/callback',controller['oauth2MicrosoftCallback']);module[_0x1126('0xe')]=router; \ No newline at end of file diff --git a/server/api/cmCompany/cmCompany.attributes.js b/server/api/cmCompany/cmCompany.attributes.js new file mode 100644 index 0000000..5fdde79 --- /dev/null +++ b/server/api/cmCompany/cmCompany.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7429=['STRING'];(function(_0x283127,_0x54d4d5){var _0x43da5d=function(_0x10947f){while(--_0x10947f){_0x283127['push'](_0x283127['shift']());}};_0x43da5d(++_0x54d4d5);}(_0x7429,0x6f));var _0x9742=function(_0x29bb5e,_0x2869d9){_0x29bb5e=_0x29bb5e-0x0;var _0xea7fb9=_0x7429[_0x29bb5e];return _0xea7fb9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9742('0x0')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x9742('0x0')]},'companyId':{'type':Sequelize[_0x9742('0x0')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x9742('0x0')]},'fax':{'type':Sequelize[_0x9742('0x0')]},'type':{'type':Sequelize[_0x9742('0x0')]},'street':{'type':Sequelize[_0x9742('0x0')]},'postalCode':{'type':Sequelize[_0x9742('0x0')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x9742('0x0')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x9742('0x0')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x9742('0x0')]},'sCity':{'type':Sequelize[_0x9742('0x0')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9742('0x0')]}}; \ No newline at end of file diff --git a/server/api/cmCompany/cmCompany.controller.js b/server/api/cmCompany/cmCompany.controller.js new file mode 100644 index 0000000..02c282a --- /dev/null +++ b/server/api/cmCompany/cmCompany.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x66aa=['keys','include','create','body','user','get','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','ids','omit','getContacts','findOne','rawAttributes','nolimit','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','Companies','UserProfileResource','end','stack','name','send','CmCompany','describe','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','options','includeAll','findAll','catch','show','params'];(function(_0x53f07b,_0x4ad80a){var _0x59a8bb=function(_0x5a295d){while(--_0x5a295d){_0x53f07b['push'](_0x53f07b['shift']());}};_0x59a8bb(++_0x4ad80a);}(_0x66aa,0x68));var _0xa66a=function(_0x5bb0be,_0x387b95){_0x5bb0be=_0x5bb0be-0x0;var _0x14b5c3=_0x66aa[_0x5bb0be];return _0x14b5c3;};'use strict';var emlformat=require(_0xa66a('0x0'));var rimraf=require(_0xa66a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa66a('0x2'));var rp=require('request-promise');var moment=require(_0xa66a('0x3'));var BPromise=require(_0xa66a('0x4'));var Mustache=require(_0xa66a('0x5'));var util=require(_0xa66a('0x6'));var path=require('path');var sox=require(_0xa66a('0x7'));var csv=require('to-csv');var ejs=require(_0xa66a('0x8'));var fs=require('fs');var fs_extra=require(_0xa66a('0x9'));var _=require(_0xa66a('0xa'));var squel=require(_0xa66a('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa66a('0xc'));var toCsv=require(_0xa66a('0xd'));var querystring=require('querystring');var Papa=require(_0xa66a('0xe'));var Redis=require(_0xa66a('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa66a('0x10'));var hardwareService=require(_0xa66a('0x11'));var logger=require(_0xa66a('0x12'))(_0xa66a('0x13'));var utils=require(_0xa66a('0x14'));var config=require(_0xa66a('0x15'));var licenseUtil=require(_0xa66a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a8a6e,_0x135651){_0x135651=_0x135651||0xcc;return function(_0x56cc5c){if(_0x56cc5c){return _0x5a8a6e[_0xa66a('0x17')](_0x135651);}return _0x5a8a6e[_0xa66a('0x18')](_0x135651)['end']();};}function respondWithResult(_0x311e64,_0x434599){_0x434599=_0x434599||0xc8;return function(_0xd0b3d9){if(_0xd0b3d9){return _0x311e64['status'](_0x434599)[_0xa66a('0x19')](_0xd0b3d9);}};}function respondWithFilteredResult(_0x256454,_0x3fe34f){return function(_0x179e22){if(_0x179e22){var _0x38c996=typeof _0x3fe34f[_0xa66a('0x1a')]==='undefined'&&typeof _0x3fe34f[_0xa66a('0x1b')]===_0xa66a('0x1c');var _0x598175=_0x179e22['count'];var _0x59b20c=_0x38c996?0x0:_0x3fe34f[_0xa66a('0x1a')];var _0x40d6f4=_0x38c996?_0x179e22[_0xa66a('0x1d')]:_0x3fe34f[_0xa66a('0x1a')]+_0x3fe34f['limit'];var _0x23eb74;if(_0x40d6f4>=_0x598175){_0x40d6f4=_0x598175;_0x23eb74=0xc8;}else{_0x23eb74=0xce;}_0x256454[_0xa66a('0x18')](_0x23eb74);return _0x256454[_0xa66a('0x1e')](_0xa66a('0x1f'),_0x59b20c+'-'+_0x40d6f4+'/'+_0x598175)[_0xa66a('0x19')](_0x179e22);}return null;};}function patchUpdates(_0x4ba095){return function(_0x58ec7c){try{jsonpatch['apply'](_0x58ec7c,_0x4ba095,!![]);}catch(_0x24dd39){return BPromise[_0xa66a('0x20')](_0x24dd39);}return _0x58ec7c[_0xa66a('0x21')]();};}function saveUpdates(_0x5f47db,_0x5e52f4){return function(_0x2f2f01){if(_0x2f2f01){return _0x2f2f01[_0xa66a('0x22')](_0x5f47db)[_0xa66a('0x23')](function(_0x29ea78){return _0x29ea78;});}return null;};}function removeEntity(_0x13a4d1,_0x5bfc94){return function(_0x427307){if(_0x427307){return _0x427307[_0xa66a('0x24')]()[_0xa66a('0x23')](function(){var _0x2b76a2=_0x427307['get']({'plain':!![]});var _0x1d4af2=_0xa66a('0x25');return db[_0xa66a('0x26')][_0xa66a('0x24')]({'where':{'type':_0x1d4af2,'resourceId':_0x2b76a2['id']}})['then'](function(){return _0x427307;});})[_0xa66a('0x23')](function(){_0x13a4d1[_0xa66a('0x18')](0xcc)[_0xa66a('0x27')]();});}};}function handleEntityNotFound(_0x5a1312,_0x24a271){return function(_0x387b38){if(!_0x387b38){_0x5a1312[_0xa66a('0x17')](0x194);}return _0x387b38;};}function handleError(_0x55d090,_0x707a91){_0x707a91=_0x707a91||0x1f4;return function(_0x81bc41){logger['error'](_0x81bc41[_0xa66a('0x28')]);if(_0x81bc41[_0xa66a('0x29')]){delete _0x81bc41[_0xa66a('0x29')];}_0x55d090[_0xa66a('0x18')](_0x707a91)[_0xa66a('0x2a')](_0x81bc41);};}exports['index']=function(_0x1b4477,_0x4ddabe){var _0xf71e={},_0x5d1096={},_0x125735={'count':0x0,'rows':[]};return db[_0xa66a('0x2b')][_0xa66a('0x2c')]()[_0xa66a('0x23')](function(_0x41135d){_0x5d1096[_0xa66a('0x2d')]=_['keys'](_0x41135d);_0x5d1096['query']=_['keys'](_0x1b4477['query']);_0x5d1096[_0xa66a('0x2e')]=_[_0xa66a('0x2f')](_0x5d1096[_0xa66a('0x2d')],_0x5d1096['query']);_0xf71e['attributes']=_['intersection'](_0x5d1096['model'],qs['fields'](_0x1b4477[_0xa66a('0x30')][_0xa66a('0x31')]));_0xf71e[_0xa66a('0x32')]=_0xf71e[_0xa66a('0x32')][_0xa66a('0x33')]?_0xf71e[_0xa66a('0x32')]:_0x5d1096[_0xa66a('0x2d')];if(!_0x1b4477['query'][_0xa66a('0x34')]('nolimit')){_0xf71e[_0xa66a('0x1b')]=qs[_0xa66a('0x1b')](_0x1b4477[_0xa66a('0x30')]['limit']);_0xf71e[_0xa66a('0x1a')]=qs[_0xa66a('0x1a')](_0x1b4477[_0xa66a('0x30')][_0xa66a('0x1a')]);}_0xf71e[_0xa66a('0x35')]=qs[_0xa66a('0x36')](_0x1b4477[_0xa66a('0x30')]['sort']);_0xf71e[_0xa66a('0x37')]=qs[_0xa66a('0x2e')](_[_0xa66a('0x38')](_0x1b4477[_0xa66a('0x30')],_0x5d1096[_0xa66a('0x2e')]),_0x41135d);if(_0x1b4477['query'][_0xa66a('0x39')]){_0xf71e[_0xa66a('0x37')]=_[_0xa66a('0x3a')](_0xf71e['where'],{'$or':_[_0xa66a('0x3b')](_0xf71e[_0xa66a('0x32')],function(_0x19b23b){var _0x34de4f={};_0x34de4f[_0x19b23b]={'$like':'%'+_0x1b4477[_0xa66a('0x30')]['filter']+'%'};return _0x34de4f;})});}_0xf71e=_[_0xa66a('0x3a')]({},_0xf71e,_0x1b4477[_0xa66a('0x3c')]);var _0x372a41={'where':_0xf71e[_0xa66a('0x37')]};return db[_0xa66a('0x2b')][_0xa66a('0x1d')](_0x372a41)[_0xa66a('0x23')](function(_0x540ccc){_0x125735[_0xa66a('0x1d')]=_0x540ccc;if(_0x1b4477[_0xa66a('0x30')][_0xa66a('0x3d')]){_0xf71e['include']=[{'all':!![]}];}return db[_0xa66a('0x2b')][_0xa66a('0x3e')](_0xf71e);})[_0xa66a('0x23')](function(_0x55eeca){_0x125735['rows']=_0x55eeca;return _0x125735;})[_0xa66a('0x23')](respondWithFilteredResult(_0x4ddabe,_0xf71e))[_0xa66a('0x3f')](handleError(_0x4ddabe,null));})[_0xa66a('0x3f')](handleError(_0x4ddabe,null));};exports[_0xa66a('0x40')]=function(_0x1259ca,_0x2254bd){var _0x43a441={'raw':![],'where':{'id':_0x1259ca[_0xa66a('0x41')]['id']}},_0xba2702={};_0xba2702[_0xa66a('0x2d')]=_['keys'](db[_0xa66a('0x2b')]['rawAttributes']);_0xba2702[_0xa66a('0x30')]=_[_0xa66a('0x42')](_0x1259ca['query']);_0xba2702[_0xa66a('0x2e')]=_[_0xa66a('0x2f')](_0xba2702[_0xa66a('0x2d')],_0xba2702[_0xa66a('0x30')]);_0x43a441[_0xa66a('0x32')]=_[_0xa66a('0x2f')](_0xba2702['model'],qs['fields'](_0x1259ca[_0xa66a('0x30')][_0xa66a('0x31')]));_0x43a441[_0xa66a('0x32')]=_0x43a441[_0xa66a('0x32')][_0xa66a('0x33')]?_0x43a441['attributes']:_0xba2702[_0xa66a('0x2d')];if(_0x1259ca[_0xa66a('0x30')][_0xa66a('0x3d')]){_0x43a441[_0xa66a('0x43')]=[{'all':!![]}];}_0x43a441=_[_0xa66a('0x3a')]({},_0x43a441,_0x1259ca['options']);return db[_0xa66a('0x2b')]['find'](_0x43a441)[_0xa66a('0x23')](handleEntityNotFound(_0x2254bd,null))[_0xa66a('0x23')](respondWithResult(_0x2254bd,null))[_0xa66a('0x3f')](handleError(_0x2254bd,null));};exports[_0xa66a('0x44')]=function(_0x4cd697,_0x1844fc){return db[_0xa66a('0x2b')][_0xa66a('0x44')](_0x4cd697[_0xa66a('0x45')],{})[_0xa66a('0x23')](function(_0x2618e6){var _0x3a5d22=_0x4cd697[_0xa66a('0x46')][_0xa66a('0x47')]({'plain':!![]});if(!_0x3a5d22)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a5d22['role']==='user'){var _0x13b8d2=_0x2618e6[_0xa66a('0x47')]({'plain':!![]});var _0x241fdb=_0xa66a('0x25');return db[_0xa66a('0x48')][_0xa66a('0x49')]({'where':{'name':_0x241fdb,'userProfileId':_0x3a5d22[_0xa66a('0x4a')]},'raw':!![]})[_0xa66a('0x23')](function(_0x32e646){if(_0x32e646&&_0x32e646[_0xa66a('0x4b')]===0x0){return db[_0xa66a('0x26')][_0xa66a('0x44')]({'name':_0x13b8d2[_0xa66a('0x29')],'resourceId':_0x13b8d2['id'],'type':_0x32e646[_0xa66a('0x29')],'sectionId':_0x32e646['id']},{})[_0xa66a('0x23')](function(){return _0x2618e6;});}else{return _0x2618e6;}})[_0xa66a('0x3f')](function(_0x442e5f){logger[_0xa66a('0x4c')](_0xa66a('0x4d'),_0x442e5f);throw _0x442e5f;});}return _0x2618e6;})[_0xa66a('0x23')](respondWithResult(_0x1844fc,0xc9))[_0xa66a('0x3f')](handleError(_0x1844fc,null));};exports[_0xa66a('0x22')]=function(_0x26af6f,_0x235555){if(_0x26af6f[_0xa66a('0x45')]['id']){delete _0x26af6f[_0xa66a('0x45')]['id'];}return db['CmCompany'][_0xa66a('0x49')]({'where':{'id':_0x26af6f[_0xa66a('0x41')]['id']}})[_0xa66a('0x23')](handleEntityNotFound(_0x235555,null))['then'](saveUpdates(_0x26af6f[_0xa66a('0x45')],null))[_0xa66a('0x23')](respondWithResult(_0x235555,null))[_0xa66a('0x3f')](handleError(_0x235555,null));};exports[_0xa66a('0x24')]=function(_0x532de6,_0x2ade7f){return db['CmCompany']['find']({'where':{'id':_0x532de6[_0xa66a('0x41')]['id']}})[_0xa66a('0x23')](handleEntityNotFound(_0x2ade7f,null))[_0xa66a('0x23')](removeEntity(_0x2ade7f,null))[_0xa66a('0x3f')](handleError(_0x2ade7f,null));};exports[_0xa66a('0x2c')]=function(_0x5dac6a,_0x1447bb){return db[_0xa66a('0x2b')]['describe']()['then'](respondWithResult(_0x1447bb,null))[_0xa66a('0x3f')](handleError(_0x1447bb,null));};exports[_0xa66a('0x4e')]=function(_0x15965f,_0x5dee5e,_0x5851d7){return db['CmContact'][_0xa66a('0x49')]({'where':{'id':_0x15965f[_0xa66a('0x41')]['id']}})[_0xa66a('0x23')](handleEntityNotFound(_0x5dee5e,null))['then'](function(_0x5a6398){if(_0x5a6398){return _0x5a6398['addContacts'](_0x15965f[_0xa66a('0x45')][_0xa66a('0x4f')],_[_0xa66a('0x50')](_0x15965f[_0xa66a('0x45')],[_0xa66a('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x5dee5e,null))['catch'](handleError(_0x5dee5e,null));};exports[_0xa66a('0x51')]=function(_0x18b3e2,_0x3d7061,_0x241000){var _0x330422={};var _0xc61c91={};var _0x7376b4;var _0x3d9dec;return db[_0xa66a('0x2b')][_0xa66a('0x52')]({'where':{'id':_0x18b3e2[_0xa66a('0x41')]['id']}})[_0xa66a('0x23')](handleEntityNotFound(_0x3d7061,null))[_0xa66a('0x23')](function(_0x3109bd){if(_0x3109bd){_0x7376b4=_0x3109bd;_0xc61c91[_0xa66a('0x2d')]=_[_0xa66a('0x42')](db['CmContact'][_0xa66a('0x53')]);_0xc61c91['query']=_[_0xa66a('0x42')](_0x18b3e2['query']);_0xc61c91[_0xa66a('0x2e')]=_[_0xa66a('0x2f')](_0xc61c91[_0xa66a('0x2d')],_0xc61c91['query']);_0x330422[_0xa66a('0x32')]=_[_0xa66a('0x2f')](_0xc61c91['model'],qs[_0xa66a('0x31')](_0x18b3e2[_0xa66a('0x30')]['fields']));_0x330422[_0xa66a('0x32')]=_0x330422[_0xa66a('0x32')]['length']?_0x330422['attributes']:_0xc61c91['model'];_0x330422[_0xa66a('0x35')]=qs[_0xa66a('0x36')](_0x18b3e2[_0xa66a('0x30')]['sort']);_0x330422[_0xa66a('0x37')]=qs[_0xa66a('0x2e')](_[_0xa66a('0x38')](_0x18b3e2[_0xa66a('0x30')],_0xc61c91[_0xa66a('0x2e')]));if(_0x18b3e2[_0xa66a('0x30')][_0xa66a('0x39')]){_0x330422[_0xa66a('0x37')]=_[_0xa66a('0x3a')](_0x330422['where'],{'$or':_['map'](_0x330422[_0xa66a('0x32')],function(_0x1f0ce7){var _0x5c013d={};_0x5c013d[_0x1f0ce7]={'$like':'%'+_0x18b3e2['query']['filter']+'%'};return _0x5c013d;})});}_0x330422=_[_0xa66a('0x3a')]({},_0x330422,_0x18b3e2[_0xa66a('0x3c')]);return _0x7376b4['getContacts'](_0x330422);}})[_0xa66a('0x23')](function(_0x2c7e6b){if(_0x2c7e6b){_0x3d9dec=_0x2c7e6b[_0xa66a('0x33')];if(!_0x18b3e2['query'][_0xa66a('0x34')](_0xa66a('0x54'))){_0x330422[_0xa66a('0x1b')]=qs[_0xa66a('0x1b')](_0x18b3e2[_0xa66a('0x30')][_0xa66a('0x1b')]);_0x330422[_0xa66a('0x1a')]=qs[_0xa66a('0x1a')](_0x18b3e2['query'][_0xa66a('0x1a')]);}return _0x7376b4[_0xa66a('0x51')](_0x330422);}})[_0xa66a('0x23')](function(_0x2f79d0){if(_0x2f79d0){return _0x2f79d0?{'count':_0x3d9dec,'rows':_0x2f79d0}:null;}})[_0xa66a('0x23')](respondWithResult(_0x3d7061,null))[_0xa66a('0x3f')](handleError(_0x3d7061,null));}; \ No newline at end of file diff --git a/server/api/cmCompany/cmCompany.model.js b/server/api/cmCompany/cmCompany.model.js new file mode 100644 index 0000000..8557cb9 --- /dev/null +++ b/server/api/cmCompany/cmCompany.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2002=['define','cm_companies','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports'];(function(_0x4801f4,_0x594dd9){var _0x1717ac=function(_0x1d8e59){while(--_0x1d8e59){_0x4801f4['push'](_0x4801f4['shift']());}};_0x1717ac(++_0x594dd9);}(_0x2002,0x86));var _0x2200=function(_0x51a6d6,_0x3c9c49){_0x51a6d6=_0x51a6d6-0x0;var _0x5ef1a8=_0x2002[_0x51a6d6];return _0x5ef1a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2200('0x0'))(_0x2200('0x1'));var moment=require(_0x2200('0x2'));var BPromise=require(_0x2200('0x3'));var rp=require(_0x2200('0x4'));var fs=require('fs');var path=require(_0x2200('0x5'));var rimraf=require(_0x2200('0x6'));var config=require(_0x2200('0x7'));var attributes=require(_0x2200('0x8'));module[_0x2200('0x9')]=function(_0x19b2c0,_0x45c2ff){return _0x19b2c0[_0x2200('0xa')]('CmCompany',attributes,{'tableName':_0x2200('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmCompany/cmCompany.rpc.js b/server/api/cmCompany/cmCompany.rpc.js new file mode 100644 index 0000000..938d63b --- /dev/null +++ b/server/api/cmCompany/cmCompany.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x61fb=['../../config/environment','jayson/promise','client','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x443c80,_0x33ffd4){var _0x463d65=function(_0xc1c54b){while(--_0xc1c54b){_0x443c80['push'](_0x443c80['shift']());}};_0x463d65(++_0x33ffd4);}(_0x61fb,0x1da));var _0xb61f=function(_0x4b790a,_0x45edd1){_0x4b790a=_0x4b790a-0x0;var _0x598214=_0x61fb[_0x4b790a];return _0x598214;};'use strict';var _=require(_0xb61f('0x0'));var util=require('util');var moment=require(_0xb61f('0x1'));var BPromise=require(_0xb61f('0x2'));var rs=require(_0xb61f('0x3'));var fs=require('fs');var Redis=require(_0xb61f('0x4'));var db=require(_0xb61f('0x5'))['db'];var utils=require(_0xb61f('0x6'));var logger=require(_0xb61f('0x7'))(_0xb61f('0x8'));var config=require(_0xb61f('0x9'));var jayson=require(_0xb61f('0xa'));var client=jayson[_0xb61f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32e5f6,_0x379e87,_0x1ae3d4){return new BPromise(function(_0x5220eb,_0x1e1327){return client['request'](_0x32e5f6,_0x1ae3d4)['then'](function(_0x365cd3){logger[_0xb61f('0xc')](_0xb61f('0xd'),_0x379e87,_0xb61f('0xe'));logger[_0xb61f('0xf')](_0xb61f('0x10'),_0x379e87,'request\x20sent',JSON['stringify'](_0x365cd3));if(_0x365cd3[_0xb61f('0x11')]){if(_0x365cd3['error'][_0xb61f('0x12')]===0x1f4){logger[_0xb61f('0x11')]('CmCompany,\x20%s,\x20%s',_0x379e87,_0x365cd3['error']['message']);return _0x1e1327(_0x365cd3[_0xb61f('0x11')][_0xb61f('0x13')]);}logger[_0xb61f('0x11')](_0xb61f('0xd'),_0x379e87,_0x365cd3['error'][_0xb61f('0x13')]);return _0x5220eb(_0x365cd3[_0xb61f('0x11')][_0xb61f('0x13')]);}else{logger[_0xb61f('0xc')](_0xb61f('0xd'),_0x379e87,_0xb61f('0xe'));_0x5220eb(_0x365cd3[_0xb61f('0x14')][_0xb61f('0x13')]);}})['catch'](function(_0xac06d9){logger[_0xb61f('0x11')](_0xb61f('0xd'),_0x379e87,_0xac06d9);_0x1e1327(_0xac06d9);});});} \ No newline at end of file diff --git a/server/api/cmCompany/index.js b/server/api/cmCompany/index.js new file mode 100644 index 0000000..a2ff3b8 --- /dev/null +++ b/server/api/cmCompany/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe9bd=['../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','show','/:id/contacts','getContacts','post','put','/:id','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x2eec66,_0x3a145b){var _0x50d1b9=function(_0x89008){while(--_0x89008){_0x2eec66['push'](_0x2eec66['shift']());}};_0x50d1b9(++_0x3a145b);}(_0xe9bd,0x111));var _0xde9b=function(_0x34817b,_0x20294d){_0x34817b=_0x34817b-0x0;var _0x2beab2=_0xe9bd[_0x34817b];return _0x2beab2;};'use strict';var multer=require(_0xde9b('0x0'));var util=require(_0xde9b('0x1'));var path=require(_0xde9b('0x2'));var timeout=require(_0xde9b('0x3'));var express=require(_0xde9b('0x4'));var router=express[_0xde9b('0x5')]();var fs_extra=require(_0xde9b('0x6'));var auth=require(_0xde9b('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xde9b('0x8'));var controller=require('./cmCompany.controller');router[_0xde9b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xde9b('0x9')](_0xde9b('0xa'),auth[_0xde9b('0xb')](),controller['describe']);router[_0xde9b('0x9')]('/:id',auth[_0xde9b('0xb')](),controller[_0xde9b('0xc')]);router[_0xde9b('0x9')](_0xde9b('0xd'),auth[_0xde9b('0xb')](),controller[_0xde9b('0xe')]);router[_0xde9b('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xde9b('0xf')](_0xde9b('0xd'),auth[_0xde9b('0xb')](),controller['addContacts']);router[_0xde9b('0x10')](_0xde9b('0x11'),auth[_0xde9b('0xb')](),controller[_0xde9b('0x12')]);router['delete'](_0xde9b('0x11'),auth[_0xde9b('0xb')](),controller[_0xde9b('0x13')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/cmContact/cmContact.attributes.js b/server/api/cmContact/cmContact.attributes.js new file mode 100644 index 0000000..a5718a7 --- /dev/null +++ b/server/api/cmContact/cmContact.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5d89=['sequelize','exports','STRING','INTEGER','UNSIGNED','DATE','NOW'];(function(_0x48f3e2,_0x19e0ca){var _0x418a58=function(_0x4d19d6){while(--_0x4d19d6){_0x48f3e2['push'](_0x48f3e2['shift']());}};_0x418a58(++_0x19e0ca);}(_0x5d89,0x1b9));var _0x95d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d89[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var Sequelize=require(_0x95d8('0x0'));module[_0x95d8('0x1')]={'firstName':{'type':Sequelize[_0x95d8('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x95d8('0x2')]},'street':{'type':Sequelize[_0x95d8('0x2')]},'postalCode':{'type':Sequelize[_0x95d8('0x2')]},'city':{'type':Sequelize[_0x95d8('0x2')]},'country':{'type':Sequelize[_0x95d8('0x2')]},'dateOfBirth':{'type':Sequelize[_0x95d8('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x95d8('0x2')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x95d8('0x2')]},'email':{'type':Sequelize[_0x95d8('0x2')]},'url':{'type':Sequelize[_0x95d8('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x95d8('0x2')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x95d8('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0x95d8('0x2')]},'telegram':{'type':Sequelize[_0x95d8('0x2')]},'UserId':{'type':Sequelize[_0x95d8('0x3')]},'AdditionalPhones':{'type':Sequelize[_0x95d8('0x2')]},'priority':{'type':Sequelize[_0x95d8('0x3')](0x2)[_0x95d8('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x95d8('0x5')],'defaultValue':Sequelize[_0x95d8('0x6')]},'dialTimezone':{'type':Sequelize[_0x95d8('0x2')]},'utcOffset':{'type':Sequelize[_0x95d8('0x3')]}}; \ No newline at end of file diff --git a/server/api/cmContact/cmContact.controller.js b/server/api/cmContact/cmContact.controller.js new file mode 100644 index 0000000..5ea9c83 --- /dev/null +++ b/server/api/cmContact/cmContact.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x37b7b6,_0x165a5c){var _0x10c4c3=function(_0x16d71e){while(--_0x16d71e){_0x37b7b6['push'](_0x37b7b6['shift']());}};_0x10c4c3(++_0x165a5c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b60x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));}; \ No newline at end of file diff --git a/server/api/cmContact/cmContact.events.js b/server/api/cmContact/cmContact.events.js new file mode 100644 index 0000000..91899e0 --- /dev/null +++ b/server/api/cmContact/cmContact.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb72c=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xb72c,0x7b));var _0xcb72=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb72c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var CmContact=require(_0xcb72('0x0'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xcb72('0x1')](0x0);var events={'afterCreate':_0xcb72('0x2'),'afterUpdate':_0xcb72('0x3'),'afterDestroy':_0xcb72('0x4')};function emitEvent(_0x3ae533){return function(_0x2afe3a,_0x3abde2,_0xfa3487){CmContactEvents['emit'](_0x3ae533+':'+_0x2afe3a['id'],_0x2afe3a);CmContactEvents[_0xcb72('0x5')](_0x3ae533,_0x2afe3a);_0xfa3487(null);};}for(var e in events){if(events[_0xcb72('0x6')](e)){var event=events[e];CmContact[_0xcb72('0x7')](e,emitEvent(event));}}module[_0xcb72('0x8')]=CmContactEvents; \ No newline at end of file diff --git a/server/api/cmContact/cmContact.model.js b/server/api/cmContact/cmContact.model.js new file mode 100644 index 0000000..a9b2267 --- /dev/null +++ b/server/api/cmContact/cmContact.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa55a=['YYYY-MM-DD\x20HH:mm:ss','isNil','findOne','then','dialTimezone','timezones','utcOffset','add','minutes','format','ret','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','error','\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','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','outbound','dialCheckDuplicateType','CmList','Lists','length','get','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','afterCreate','message','Campaign','findAll','always','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','push','all','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','../../config/environment/shared','define','CmContact','cm_contacts','phone','firstName','lastName','fax','FULLTEXT','utf8mb4','models','cmContact','inspect','scheduledat'];(function(_0x3f4dd9,_0xe0b819){var _0x31c54a=function(_0x25e6c6){while(--_0x25e6c6){_0x3f4dd9['push'](_0x3f4dd9['shift']());}};_0x31c54a(++_0xe0b819);}(_0xa55a,0x7a));var _0xaa55=function(_0x1d8499,_0x20642f){_0x1d8499=_0x1d8499-0x0;var _0x17abc7=_0xa55a[_0x1d8499];return _0x17abc7;};'use strict';var _=require(_0xaa55('0x0'));var util=require(_0xaa55('0x1'));var logger=require(_0xaa55('0x2'))(_0xaa55('0x3'));var moment=require(_0xaa55('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xaa55('0x5'));var rimraf=require(_0xaa55('0x6'));var config=require(_0xaa55('0x7'));var shared=require(_0xaa55('0x8'));var attributes=require('./cmContact.attributes');module['exports']=function(_0x220faa,_0x45bcbb){return _0x220faa[_0xaa55('0x9')](_0xaa55('0xa'),attributes,{'tableName':_0xaa55('0xb'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0xaa55('0xc')]},{'name':'fti_cm_contacts','fields':[_0xaa55('0xd'),_0xaa55('0xe'),_0xaa55('0xc'),'mobile',_0xaa55('0xf'),'email'],'type':_0xaa55('0x10')}],'timestamps':!![],'charset':_0xaa55('0x11'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x559618,_0x5cc1bb,_0x167eaf){var _0x570d76=_0x220faa[_0xaa55('0x12')];var _0x3027d6=_0x559618['get']({'plain':!![]});function _0x437b11(){return function(_0x1b02e9){logger['error'](_0xaa55('0x13'),'afterCreate',util[_0xaa55('0x14')](_0x1b02e9,{'showHidden':![],'depth':null}));};}function _0xfece9a(_0x630e71,_0x15081d){var _0x124b52=_0x15081d[_0xaa55('0x15')]?_0x15081d['scheduledat']:moment()['format'](_0xaa55('0x16'));return new BPromise(function(_0x5691a2,_0x491404){if(_[_0xaa55('0x17')](_0x15081d['dialTimezone'])){_0x5691a2({'ret':_0x124b52});}else{_0x570d76['VoiceQueue'][_0xaa55('0x18')]({'where':{'id':_0x630e71['id']}})[_0xaa55('0x19')](function(_0xd09430){if(!_[_0xaa55('0x17')](_0xd09430)){var _0x5e85f6=_0xd09430[_0xaa55('0x1a')];if(!_['isNil'](_0x5e85f6)){var _0x5e0cbb=shared[_0xaa55('0x1b')];var _0x3389e4=_0x5e0cbb[_0x5e85f6];var _0x3c937b=_0x5e0cbb[_0x15081d[_0xaa55('0x1a')]];if(!_['isNil'](_0x3389e4)&&!_[_0xaa55('0x17')](_0x3c937b)){var _0x120387=_0x3389e4[_0xaa55('0x1c')]-_0x3c937b[_0xaa55('0x1c')];_0x124b52=_0x15081d['scheduledat']?_0x15081d[_0xaa55('0x15')]:moment();var _0x4e0198=moment(_0x124b52)[_0xaa55('0x1d')](_0x120387,_0xaa55('0x1e'));_0x5691a2({'ret':_0x4e0198[_0xaa55('0x1f')](_0xaa55('0x16'))});}else _0x5691a2({'ret':_0x124b52});}else _0x5691a2({'ret':_0x124b52});}else{_0x5691a2({'ret':_0x124b52});}});}});return 0xa;}var _0x238f73=function(_0xa12a3a){return new BPromise(function(_0x46402f,_0x3d4128){_0xfece9a(_0xa12a3a,_0x3027d6)[_0xaa55('0x19')](function(_0x2eeda9){_0x3027d6['scheduledat']=_0x2eeda9[_0xaa55('0x20')];_0x570d76['CmHopper'][_0xaa55('0x18')]({'where':{'phone':_0x3027d6[_0xaa55('0xc')],'VoiceQueueId':_0xa12a3a['id']}})['then'](function(_0x183265){if(!_[_0xaa55('0x17')](_0x183265)){throw new Error(_0xaa55('0x21')+_0x3027d6['phone']+_0xaa55('0x22')+_0xa12a3a['id']);}return _0x570d76[_0xaa55('0x23')][_0xaa55('0x24')]({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'priority':_0x3027d6[_0xaa55('0x26')]?_0x3027d6[_0xaa55('0x26')]:0x2,'scheduledat':_0x3027d6[_0xaa55('0x15')]?_0x3027d6['scheduledat']:moment()[_0xaa55('0x1f')](_0xaa55('0x16')),'callback':_0x3027d6['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3027d6[_0xaa55('0x27')]?_0x3027d6[_0xaa55('0x27')]:undefined,'callbackat':_0x3027d6['callbackUniqueid']?moment()[_0xaa55('0x1f')](_0xaa55('0x16')):undefined,'VoiceQueueId':_0xa12a3a['id']});})[_0xaa55('0x28')](function(_0x38ce3c){_0x3d4128(_0x38ce3c);});});});};var _0x29a423=function(_0x48f5e6){return new BPromise(function(_0x5a49c1,_0x546b16){_0xfece9a(_0x48f5e6,_0x3027d6)[_0xaa55('0x19')](function(_0x184bd7){_0x3027d6[_0xaa55('0x15')]=_0x184bd7[_0xaa55('0x20')];_0x570d76[_0xaa55('0x23')][_0xaa55('0x18')]({'where':{'phone':_0x3027d6['phone'],'VoiceQueueId':_0x48f5e6['id']}})[_0xaa55('0x19')](function(_0x25a923){if(!_[_0xaa55('0x17')](_0x25a923)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3027d6[_0xaa55('0xc')]+_0xaa55('0x29')+_0x48f5e6['id']);}return _0x570d76[_0xaa55('0x2a')]['findOne']({'where':{'calleridnum':_0x3027d6[_0xaa55('0xc')],'VoiceQueueId':_0x48f5e6['id']}});})[_0xaa55('0x19')](function(_0x2298cb){if(!_[_0xaa55('0x17')](_0x2298cb)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x3027d6[_0xaa55('0xc')]+_0xaa55('0x2b')+_0x48f5e6['id']);}return _0x570d76[_0xaa55('0x23')]['create']({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'priority':_0x3027d6[_0xaa55('0x26')]?_0x3027d6[_0xaa55('0x26')]:0x2,'scheduledat':_0x3027d6[_0xaa55('0x15')]?_0x3027d6[_0xaa55('0x15')]:moment()[_0xaa55('0x1f')](_0xaa55('0x16')),'callback':_0x3027d6[_0xaa55('0x27')]?!![]:![],'callbackuniqueid':_0x3027d6[_0xaa55('0x27')]?_0x3027d6[_0xaa55('0x27')]:undefined,'callbackat':_0x3027d6[_0xaa55('0x27')]?moment()[_0xaa55('0x1f')](_0xaa55('0x16')):undefined,'VoiceQueueId':_0x48f5e6['id']});})[_0xaa55('0x28')](function(_0x36c4f2){_0x546b16(_0x36c4f2);});});});};function _0x39d07f(){return function(_0x534380){logger[_0xaa55('0x2c')](_0xaa55('0x13'),'afterCreate',util['inspect'](_0x534380,{'showHidden':![],'depth':null}));};}function _0x427c5a(_0x2e9b24,_0x55f428){var _0x536456=_0x55f428[_0xaa55('0x15')]?_0x55f428[_0xaa55('0x15')]:moment()[_0xaa55('0x1f')](_0xaa55('0x16'));return new BPromise(function(_0x3cdc20,_0x3ee085){if(_[_0xaa55('0x17')](_0x55f428[_0xaa55('0x1a')])){_0x3cdc20({'ret':_0x536456});}else{_0x570d76['Campaign']['findOne']({'where':{'id':_0x2e9b24['id']}})[_0xaa55('0x19')](function(_0x32b30d){if(!_[_0xaa55('0x17')](_0x32b30d)){var _0x56188f=_0x32b30d[_0xaa55('0x1a')];if(!_['isNil'](_0x56188f)){var _0x5068ac=shared[_0xaa55('0x1b')];var _0x2f7992=_0x5068ac[_0x56188f];var _0x21dccd=_0x5068ac[_0x55f428[_0xaa55('0x1a')]];if(!_[_0xaa55('0x17')](_0x2f7992)&&!_['isNil'](_0x21dccd)){var _0x4d4404=_0x2f7992[_0xaa55('0x1c')]-_0x21dccd[_0xaa55('0x1c')];_0x536456=_0x55f428[_0xaa55('0x15')]?_0x55f428[_0xaa55('0x15')]:moment();var _0x32b682=moment(_0x536456)[_0xaa55('0x1d')](_0x4d4404,_0xaa55('0x1e'));_0x3cdc20({'ret':_0x32b682[_0xaa55('0x1f')](_0xaa55('0x16'))});}else _0x3cdc20({'ret':_0x536456});}else _0x3cdc20({'ret':_0x536456});}else{_0x3cdc20({'ret':_0x536456});}});}});return 0xa;}var _0x1f04da=function(_0x1ec27a){return new BPromise(function(_0x58895b,_0x449ddb){_0x427c5a(_0x1ec27a,_0x3027d6)[_0xaa55('0x19')](function(_0x4f51d5){_0x3027d6[_0xaa55('0x15')]=_0x4f51d5['ret'];_0x570d76[_0xaa55('0x23')][_0xaa55('0x18')]({'where':{'phone':_0x3027d6[_0xaa55('0xc')],'CampaignId':_0x1ec27a['id']}})[_0xaa55('0x19')](function(_0x5c1df3){if(!_[_0xaa55('0x17')](_0x5c1df3)){throw new Error(_0xaa55('0x21')+_0x3027d6[_0xaa55('0xc')]+_0xaa55('0x2d')+_0x1ec27a['id']);}return _0x570d76[_0xaa55('0x23')][_0xaa55('0x24')]({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'priority':_0x3027d6[_0xaa55('0x26')]?_0x3027d6['priority']:0x2,'scheduledat':_0x3027d6['scheduledat']?_0x3027d6[_0xaa55('0x15')]:moment()[_0xaa55('0x1f')](_0xaa55('0x16')),'callback':_0x3027d6[_0xaa55('0x27')]?!![]:![],'callbackuniqueid':_0x3027d6['callbackUniqueid']?_0x3027d6[_0xaa55('0x27')]:undefined,'callbackat':_0x3027d6['callbackUniqueid']?moment()[_0xaa55('0x1f')](_0xaa55('0x16')):undefined,'CampaignId':_0x1ec27a['id']});})[_0xaa55('0x28')](function(_0x501346){_0x449ddb(_0x501346);});});});};var _0x236c58=function(_0x3ff4f3){return new BPromise(function(_0x455d36,_0x47cd42){_0x427c5a(_0x3ff4f3,_0x3027d6)['then'](function(_0x1f37eb){_0x3027d6['scheduledat']=_0x1f37eb[_0xaa55('0x20')];_0x570d76[_0xaa55('0x23')][_0xaa55('0x18')]({'where':{'phone':_0x3027d6[_0xaa55('0xc')],'CampaignId':_0x3ff4f3['id']}})[_0xaa55('0x19')](function(_0x5038b0){if(!_[_0xaa55('0x17')](_0x5038b0)){throw new Error(_0xaa55('0x21')+_0x3027d6[_0xaa55('0xc')]+_0xaa55('0x2e')+_0x3ff4f3['id']);}return _0x570d76[_0xaa55('0x2a')][_0xaa55('0x18')]({'where':{'calleridnum':_0x3027d6[_0xaa55('0xc')],'CampaignId':_0x3ff4f3['id']}});})[_0xaa55('0x19')](function(_0x578657){if(!_[_0xaa55('0x17')](_0x578657)){throw new Error(_0xaa55('0x2f')+_0x3027d6[_0xaa55('0xc')]+_0xaa55('0x30')+_0x3ff4f3['id']);}return _0x570d76[_0xaa55('0x23')]['create']({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'priority':_0x3027d6[_0xaa55('0x26')]?_0x3027d6[_0xaa55('0x26')]:0x2,'scheduledat':_0x3027d6[_0xaa55('0x15')]?_0x3027d6['scheduledat']:moment()[_0xaa55('0x1f')](_0xaa55('0x16')),'callback':_0x3027d6['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3027d6[_0xaa55('0x27')]?_0x3027d6[_0xaa55('0x27')]:undefined,'callbackat':_0x3027d6[_0xaa55('0x27')]?moment()[_0xaa55('0x1f')](_0xaa55('0x16')):undefined,'CampaignId':_0x3ff4f3['id']});})[_0xaa55('0x28')](function(_0x4b9ef9){_0x47cd42(_0x4b9ef9);});});});};if(_0x3027d6[_0xaa55('0x25')]){_0x570d76[_0xaa55('0x31')]['findAll']({'where':{'type':_0xaa55('0x32')},'attributes':['id',_0xaa55('0x33'),_0xaa55('0x1a')],'include':[{'model':_0x570d76[_0xaa55('0x34')],'as':_0xaa55('0x35'),'where':{'id':_0x3027d6[_0xaa55('0x25')]}}]})[_0xaa55('0x19')](function(_0x2e855d){if(_0x2e855d){var _0x4d3de4=[];for(var _0x73ca73=0x0,_0x13b4b2;_0x73ca73<_0x2e855d[_0xaa55('0x36')];_0x73ca73+=0x1){_0x13b4b2=_0x2e855d[_0x73ca73][_0xaa55('0x37')]({'plain':!![]});switch(_0x13b4b2[_0xaa55('0x33')]){case'always':_0x29a423(_0x13b4b2)[_0xaa55('0x28')](_0x437b11());break;case _0xaa55('0x38'):_0x238f73(_0x13b4b2)['catch'](_0x437b11());break;default:_0x427c5a(_0x13b4b2,_0x3027d6)[_0xaa55('0x19')](function(_0x3a6cdc){_0x3027d6[_0xaa55('0x15')]=_0x3a6cdc[_0xaa55('0x20')];_0x570d76[_0xaa55('0x23')]['create']({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'scheduledat':_0x3027d6['scheduledat']?_0x3027d6[_0xaa55('0x15')]:moment()[_0xaa55('0x1f')](_0xaa55('0x16')),'priority':_0x3027d6[_0xaa55('0x26')]?_0x3027d6[_0xaa55('0x26')]:0x2,'callback':_0x3027d6[_0xaa55('0x27')]?!![]:![],'callbackuniqueid':_0x3027d6['callbackUniqueid']?_0x3027d6[_0xaa55('0x27')]:undefined,'callbackat':_0x3027d6[_0xaa55('0x27')]?moment()[_0xaa55('0x1f')](_0xaa55('0x16')):undefined,'VoiceQueueId':_0x13b4b2['id']})[_0xaa55('0x28')](_0x437b11());});}}}})[_0xaa55('0x19')](function(){return _0x570d76['VoiceQueue']['findAll']({'where':{'type':_0xaa55('0x32')},'attributes':['id'],'include':[{'model':_0x570d76[_0xaa55('0x34')],'as':_0xaa55('0x39'),'where':{'id':_0x3027d6[_0xaa55('0x25')]}}]})[_0xaa55('0x19')](function(_0x32eb65){if(_0x32eb65){var _0xc9e583=[];for(var _0x9e5ec7=0x0,_0x551783;_0x9e5ec7<_0x32eb65[_0xaa55('0x36')];_0x9e5ec7+=0x1){_0x551783=_0x32eb65[_0x9e5ec7]['get']({'plain':!![]});_0x570d76[_0xaa55('0x3a')][_0xaa55('0x24')]({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6['ListId'],'VoiceQueueId':_0x551783['id']})['catch'](function(_0x1a9ccf){logger[_0xaa55('0x2c')](_0xaa55('0x3b'),_0xaa55('0x3c'),_0x1a9ccf[_0xaa55('0x3d')]);});}}});})['then'](function(){return _0x570d76[_0xaa55('0x3e')][_0xaa55('0x3f')]({'attributes':['id',_0xaa55('0x33'),_0xaa55('0x1a')],'include':[{'model':_0x570d76['CmList'],'as':_0xaa55('0x35'),'where':{'id':_0x3027d6[_0xaa55('0x25')]}}]})['then'](function(_0x441740){if(_0x441740){var _0x3dcaf4=[];for(var _0x8672ad=0x0,_0x3fdfb8;_0x8672ad<_0x441740[_0xaa55('0x36')];_0x8672ad+=0x1){_0x3fdfb8=_0x441740[_0x8672ad][_0xaa55('0x37')]({'plain':!![]});switch(_0x3fdfb8['dialCheckDuplicateType']){case _0xaa55('0x40'):_0x236c58(_0x3fdfb8)[_0xaa55('0x28')](_0x39d07f());break;case'onlyIfOpen':_0x1f04da(_0x3fdfb8)[_0xaa55('0x28')](_0x39d07f());break;default:_0x570d76[_0xaa55('0x23')][_0xaa55('0x24')]({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'scheduledat':_0x3027d6['scheduledat']?_0x3027d6['scheduledat']:moment()[_0xaa55('0x1f')](_0xaa55('0x16')),'priority':_0x3027d6[_0xaa55('0x26')]?_0x3027d6[_0xaa55('0x26')]:0x2,'callback':_0x3027d6['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3027d6[_0xaa55('0x27')]?_0x3027d6[_0xaa55('0x27')]:undefined,'callbackat':_0x3027d6[_0xaa55('0x27')]?moment()[_0xaa55('0x1f')](_0xaa55('0x16')):undefined,'CampaignId':_0x3fdfb8['id']})[_0xaa55('0x28')](_0x39d07f());}}}});})[_0xaa55('0x19')](function(){return _0x570d76[_0xaa55('0x3e')][_0xaa55('0x3f')]({'attributes':['id'],'include':[{'model':_0x570d76[_0xaa55('0x34')],'as':_0xaa55('0x39'),'where':{'id':_0x3027d6[_0xaa55('0x25')]}}]})[_0xaa55('0x19')](function(_0x4d4d7e){if(_0x4d4d7e){var _0x225dd6=[];for(var _0x734e48=0x0,_0x3a9cd1;_0x734e48<_0x4d4d7e['length'];_0x734e48+=0x1){_0x3a9cd1=_0x4d4d7e[_0x734e48]['get']({'plain':!![]});_0x570d76[_0xaa55('0x3a')][_0xaa55('0x24')]({'phone':_0x3027d6[_0xaa55('0xc')],'ContactId':_0x3027d6['id'],'ListId':_0x3027d6[_0xaa55('0x25')],'CampaignId':_0x3a9cd1['id']})['catch'](function(_0x3ce6e0){logger[_0xaa55('0x2c')](_0xaa55('0x3b'),_0xaa55('0x3c'),_0x3ce6e0[_0xaa55('0x3d')]);});}}});})[_0xaa55('0x19')](function(){_0x167eaf();})[_0xaa55('0x28')](function(_0x1c6359){logger[_0xaa55('0x2c')](_0xaa55('0x3b'),_0xaa55('0x3c'),_0x1c6359[_0xaa55('0x3d')]);_0x167eaf(_0x1c6359);});}else{_0x167eaf(new Error(_0xaa55('0x41')));}},'afterDestroy':function(_0x1d0d7b,_0x37bcce,_0x3f1342){var _0x242dca=_0x220faa[_0xaa55('0x12')];var _0x43b12f=_0x1d0d7b[_0xaa55('0x37')]({'plain':!![]});return _0x242dca['CmHopper'][_0xaa55('0x3f')]({'raw':!![],'where':{'ListId':_0x43b12f[_0xaa55('0x25')],'ContactId':_0x43b12f['id']}})[_0xaa55('0x19')](function(_0xcbb2b){if(!_[_0xaa55('0x42')](_0xcbb2b)){var _0x1bbaaa=[];for(var _0x30861a=0x0;_0x30861a<_0xcbb2b['length'];_0x30861a+=0x1){var _0x90e409=_0x242dca[_0xaa55('0x23')]['destroy']({'where':{'ListId':_0xcbb2b[_0x30861a][_0xaa55('0x25')],'ContactId':_0xcbb2b[_0x30861a][_0xaa55('0x43')],'VoiceQueueId':_0xcbb2b[_0x30861a][_0xaa55('0x44')],'CampaignId':_0xcbb2b[_0x30861a]['CampaignId']}});_0x1bbaaa[_0xaa55('0x45')](_0x90e409);}return BPromise[_0xaa55('0x46')](_0x1bbaaa);}})['then'](function(_0x2817db){logger['info'](_0xaa55('0x47'),util[_0xaa55('0x14')](_0x2817db,{'showHidden':![],'depth':null}));_0x3f1342();})[_0xaa55('0x28')](function(_0x506b19){logger[_0xaa55('0x2c')]('[CmContact][afterDestroy][Error]',util[_0xaa55('0x14')](_0x506b19,{'showHidden':![],'depth':null}));_0x3f1342(_0x506b19);});}}});}; \ No newline at end of file diff --git a/server/api/cmContact/cmContact.rpc.js b/server/api/cmContact/cmContact.rpc.js new file mode 100644 index 0000000..e05c1f6 --- /dev/null +++ b/server/api/cmContact/cmContact.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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 squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router; \ No newline at end of file diff --git a/server/api/cmContactHasItem/cmContactHasItem.attributes.js b/server/api/cmContactHasItem/cmContactHasItem.attributes.js new file mode 100644 index 0000000..e9d34d5 --- /dev/null +++ b/server/api/cmContactHasItem/cmContactHasItem.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa98d=['STRING','sequelize','INTEGER'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xa98d,0xa3));var _0xda98=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa98d[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xda98('0x0'));module['exports']={'CmContactId':{'type':Sequelize[_0xda98('0x1')],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xda98('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xda98('0x2')],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0xda98('0x1')],'defaultValue':null},'description':{'type':Sequelize[_0xda98('0x2')],'defaultValue':null}}; \ No newline at end of file diff --git a/server/api/cmContactHasItem/cmContactHasItem.controller.js b/server/api/cmContactHasItem/cmContactHasItem.controller.js new file mode 100644 index 0000000..cd6de2f --- /dev/null +++ b/server/api/cmContactHasItem/cmContactHasItem.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x03ee=['../../components/auth/service','../../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','limit','count','Content-Range','reject','save','update','then','destroy','CmContactHasItems','UserProfileResource','stack','name','send','index','map','fieldName','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','CmContactHasItem','includeAll','include','findAll','rows','catch','rawAttributes','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','error','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring'];(function(_0x6228e7,_0x295d6a){var _0x4809a8=function(_0xa70e5){while(--_0xa70e5){_0x6228e7['push'](_0x6228e7['shift']());}};_0x4809a8(++_0x295d6a);}(_0x03ee,0xe8));var _0xe03e=function(_0x1cbcb2,_0x1237a3){_0x1cbcb2=_0x1cbcb2-0x0;var _0x41ac9f=_0x03ee[_0x1cbcb2];return _0x41ac9f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe03e('0x0'));var zipdir=require(_0xe03e('0x1'));var jsonpatch=require(_0xe03e('0x2'));var rp=require(_0xe03e('0x3'));var moment=require(_0xe03e('0x4'));var BPromise=require(_0xe03e('0x5'));var Mustache=require(_0xe03e('0x6'));var util=require(_0xe03e('0x7'));var path=require(_0xe03e('0x8'));var sox=require(_0xe03e('0x9'));var csv=require(_0xe03e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe03e('0xb'));var _=require(_0xe03e('0xc'));var squel=require(_0xe03e('0xd'));var crypto=require(_0xe03e('0xe'));var jsforce=require(_0xe03e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe03e('0xa'));var querystring=require(_0xe03e('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe03e('0x11'));var qs=require(_0xe03e('0x12'));var as=require(_0xe03e('0x13'));var hardwareService=require(_0xe03e('0x14'));var logger=require(_0xe03e('0x15'))(_0xe03e('0x16'));var utils=require(_0xe03e('0x17'));var config=require(_0xe03e('0x18'));var licenseUtil=require(_0xe03e('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56fa89,_0x110947){_0x110947=_0x110947||0xcc;return function(_0x35dd67){if(_0x35dd67){return _0x56fa89[_0xe03e('0x1a')](_0x110947);}return _0x56fa89[_0xe03e('0x1b')](_0x110947)[_0xe03e('0x1c')]();};}function respondWithResult(_0x4cff9b,_0x476752){_0x476752=_0x476752||0xc8;return function(_0x166a2d){if(_0x166a2d){return _0x4cff9b[_0xe03e('0x1b')](_0x476752)[_0xe03e('0x1d')](_0x166a2d);}};}function respondWithFilteredResult(_0x2bf7d3,_0x9e7457){return function(_0x54748c){if(_0x54748c){var _0x18ebe0=typeof _0x9e7457[_0xe03e('0x1e')]===_0xe03e('0x1f')&&typeof _0x9e7457[_0xe03e('0x20')]===_0xe03e('0x1f');var _0x50fb35=_0x54748c[_0xe03e('0x21')];var _0xabd802=_0x18ebe0?0x0:_0x9e7457['offset'];var _0x307258=_0x18ebe0?_0x54748c[_0xe03e('0x21')]:_0x9e7457[_0xe03e('0x1e')]+_0x9e7457['limit'];var _0x1816a9;if(_0x307258>=_0x50fb35){_0x307258=_0x50fb35;_0x1816a9=0xc8;}else{_0x1816a9=0xce;}_0x2bf7d3[_0xe03e('0x1b')](_0x1816a9);return _0x2bf7d3['set'](_0xe03e('0x22'),_0xabd802+'-'+_0x307258+'/'+_0x50fb35)[_0xe03e('0x1d')](_0x54748c);}return null;};}function patchUpdates(_0x564e28){return function(_0x3f43c0){try{jsonpatch['apply'](_0x3f43c0,_0x564e28,!![]);}catch(_0x2f9685){return BPromise[_0xe03e('0x23')](_0x2f9685);}return _0x3f43c0[_0xe03e('0x24')]();};}function saveUpdates(_0x5dab9a,_0x28adeb){return function(_0x25cc60){if(_0x25cc60){return _0x25cc60[_0xe03e('0x25')](_0x5dab9a)[_0xe03e('0x26')](function(_0x4bb654){return _0x4bb654;});}return null;};}function removeEntity(_0xbfe5c1,_0x13abb1){return function(_0x374405){if(_0x374405){return _0x374405[_0xe03e('0x27')]()[_0xe03e('0x26')](function(){var _0x25c461=_0x374405['get']({'plain':!![]});var _0x2f314f=_0xe03e('0x28');return db[_0xe03e('0x29')][_0xe03e('0x27')]({'where':{'type':_0x2f314f,'resourceId':_0x25c461['id']}})[_0xe03e('0x26')](function(){return _0x374405;});})[_0xe03e('0x26')](function(){_0xbfe5c1['status'](0xcc)[_0xe03e('0x1c')]();});}};}function handleEntityNotFound(_0x57cf57,_0x2c53d2){return function(_0x3b2ce7){if(!_0x3b2ce7){_0x57cf57['sendStatus'](0x194);}return _0x3b2ce7;};}function handleError(_0x2b7257,_0x5a0607){_0x5a0607=_0x5a0607||0x1f4;return function(_0x2b9c47){logger['error'](_0x2b9c47[_0xe03e('0x2a')]);if(_0x2b9c47[_0xe03e('0x2b')]){delete _0x2b9c47[_0xe03e('0x2b')];}_0x2b7257['status'](_0x5a0607)[_0xe03e('0x2c')](_0x2b9c47);};}exports[_0xe03e('0x2d')]=function(_0x3fa85c,_0x4695d4){var _0x211b3f={},_0x4ae8e2={},_0x43273b={'count':0x0,'rows':[]};var _0x527b9b=_[_0xe03e('0x2e')](db['CmContactHasItem']['rawAttributes'],function(_0xaec64e){return{'name':_0xaec64e[_0xe03e('0x2f')],'type':_0xaec64e['type']['key']};});_0x4ae8e2[_0xe03e('0x30')]=_[_0xe03e('0x2e')](_0x527b9b,_0xe03e('0x2b'));_0x4ae8e2['query']=_[_0xe03e('0x31')](_0x3fa85c[_0xe03e('0x32')]);_0x4ae8e2[_0xe03e('0x33')]=_[_0xe03e('0x34')](_0x4ae8e2['model'],_0x4ae8e2[_0xe03e('0x32')]);_0x211b3f[_0xe03e('0x35')]=_[_0xe03e('0x34')](_0x4ae8e2[_0xe03e('0x30')],qs[_0xe03e('0x36')](_0x3fa85c[_0xe03e('0x32')][_0xe03e('0x36')]));_0x211b3f[_0xe03e('0x35')]=_0x211b3f[_0xe03e('0x35')]['length']?_0x211b3f[_0xe03e('0x35')]:_0x4ae8e2['model'];if(!_0x3fa85c[_0xe03e('0x32')][_0xe03e('0x37')](_0xe03e('0x38'))){_0x211b3f['limit']=qs[_0xe03e('0x20')](_0x3fa85c[_0xe03e('0x32')]['limit']);_0x211b3f[_0xe03e('0x1e')]=qs[_0xe03e('0x1e')](_0x3fa85c[_0xe03e('0x32')][_0xe03e('0x1e')]);}_0x211b3f[_0xe03e('0x39')]=qs['sort'](_0x3fa85c[_0xe03e('0x32')][_0xe03e('0x3a')]);_0x211b3f[_0xe03e('0x3b')]=qs[_0xe03e('0x33')](_['pick'](_0x3fa85c[_0xe03e('0x32')],_0x4ae8e2[_0xe03e('0x33')]),_0x527b9b);if(_0x3fa85c[_0xe03e('0x32')][_0xe03e('0x3c')]){_0x211b3f[_0xe03e('0x3b')]=_[_0xe03e('0x3d')](_0x211b3f[_0xe03e('0x3b')],{'$or':_['map'](_0x527b9b,function(_0x4f7d3a){if(_0x4f7d3a['type']!==_0xe03e('0x3e')){var _0x1dcafa={};_0x1dcafa[_0x4f7d3a['name']]={'$like':'%'+_0x3fa85c[_0xe03e('0x32')][_0xe03e('0x3c')]+'%'};return _0x1dcafa;}})});}_0x211b3f=_['merge']({},_0x211b3f,_0x3fa85c[_0xe03e('0x3f')]);var _0xde64a4={'where':_0x211b3f[_0xe03e('0x3b')]};return db[_0xe03e('0x40')][_0xe03e('0x21')](_0xde64a4)[_0xe03e('0x26')](function(_0x3192dd){_0x43273b[_0xe03e('0x21')]=_0x3192dd;if(_0x3fa85c['query'][_0xe03e('0x41')]){_0x211b3f[_0xe03e('0x42')]=[{'all':!![]}];}return db[_0xe03e('0x40')][_0xe03e('0x43')](_0x211b3f);})['then'](function(_0x4f07cd){_0x43273b[_0xe03e('0x44')]=_0x4f07cd;return _0x43273b;})[_0xe03e('0x26')](respondWithFilteredResult(_0x4695d4,_0x211b3f))[_0xe03e('0x45')](handleError(_0x4695d4,null));};exports['show']=function(_0x4d52d8,_0x5cfca2){var _0x1b383c={'raw':!![],'where':{'id':_0x4d52d8['params']['id']}},_0x10a7d0={};_0x10a7d0[_0xe03e('0x30')]=_[_0xe03e('0x31')](db[_0xe03e('0x40')][_0xe03e('0x46')]);_0x10a7d0[_0xe03e('0x32')]=_[_0xe03e('0x31')](_0x4d52d8['query']);_0x10a7d0[_0xe03e('0x33')]=_[_0xe03e('0x34')](_0x10a7d0[_0xe03e('0x30')],_0x10a7d0[_0xe03e('0x32')]);_0x1b383c[_0xe03e('0x35')]=_[_0xe03e('0x34')](_0x10a7d0[_0xe03e('0x30')],qs[_0xe03e('0x36')](_0x4d52d8[_0xe03e('0x32')]['fields']));_0x1b383c[_0xe03e('0x35')]=_0x1b383c[_0xe03e('0x35')]['length']?_0x1b383c['attributes']:_0x10a7d0[_0xe03e('0x30')];if(_0x4d52d8[_0xe03e('0x32')]['includeAll']){_0x1b383c[_0xe03e('0x42')]=[{'all':!![]}];}_0x1b383c=_[_0xe03e('0x3d')]({},_0x1b383c,_0x4d52d8['options']);return db[_0xe03e('0x40')]['find'](_0x1b383c)[_0xe03e('0x26')](handleEntityNotFound(_0x5cfca2,null))['then'](respondWithResult(_0x5cfca2,null))[_0xe03e('0x45')](handleError(_0x5cfca2,null));};exports[_0xe03e('0x47')]=function(_0x42561c,_0x3e1a9d){return db[_0xe03e('0x40')][_0xe03e('0x47')](_0x42561c[_0xe03e('0x48')],{})[_0xe03e('0x26')](function(_0x20d75d){var _0x23e69f=_0x42561c[_0xe03e('0x49')][_0xe03e('0x4a')]({'plain':!![]});if(!_0x23e69f)throw new Error(_0xe03e('0x4b'));if(_0x23e69f[_0xe03e('0x4c')]===_0xe03e('0x49')){var _0x10116e=_0x20d75d[_0xe03e('0x4a')]({'plain':!![]});var _0x31edef=_0xe03e('0x28');return db[_0xe03e('0x4d')][_0xe03e('0x4e')]({'where':{'name':_0x31edef,'userProfileId':_0x23e69f[_0xe03e('0x4f')]},'raw':!![]})[_0xe03e('0x26')](function(_0x31a821){if(_0x31a821&&_0x31a821[_0xe03e('0x50')]===0x0){return db['UserProfileResource'][_0xe03e('0x47')]({'name':_0x10116e[_0xe03e('0x2b')],'resourceId':_0x10116e['id'],'type':_0x31a821['name'],'sectionId':_0x31a821['id']},{})[_0xe03e('0x26')](function(){return _0x20d75d;});}else{return _0x20d75d;}})[_0xe03e('0x45')](function(_0x54c5fb){logger[_0xe03e('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x54c5fb);throw _0x54c5fb;});}return _0x20d75d;})[_0xe03e('0x26')](respondWithResult(_0x3e1a9d,0xc9))[_0xe03e('0x45')](handleError(_0x3e1a9d,null));};exports['update']=function(_0x343247,_0x150968){if(_0x343247[_0xe03e('0x48')]['id']){delete _0x343247[_0xe03e('0x48')]['id'];}return db[_0xe03e('0x40')][_0xe03e('0x4e')]({'where':{'id':_0x343247[_0xe03e('0x52')]['id']}})[_0xe03e('0x26')](handleEntityNotFound(_0x150968,null))['then'](saveUpdates(_0x343247[_0xe03e('0x48')],null))['then'](respondWithResult(_0x150968,null))[_0xe03e('0x45')](handleError(_0x150968,null));};exports['destroy']=function(_0x46be99,_0x2c4b03){return db[_0xe03e('0x40')][_0xe03e('0x4e')]({'where':{'id':_0x46be99[_0xe03e('0x52')]['id']}})[_0xe03e('0x26')](handleEntityNotFound(_0x2c4b03,null))[_0xe03e('0x26')](removeEntity(_0x2c4b03,null))['catch'](handleError(_0x2c4b03,null));}; \ No newline at end of file diff --git a/server/api/cmContactHasItem/cmContactHasItem.model.js b/server/api/cmContactHasItem/cmContactHasItem.model.js new file mode 100644 index 0000000..8b0c7e8 --- /dev/null +++ b/server/api/cmContactHasItem/cmContactHasItem.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x59f5=['exports','define','cm_contact_has_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContactHasItem.attributes'];(function(_0x4b6c16,_0x1e2006){var _0x214d6d=function(_0x4c5f96){while(--_0x4c5f96){_0x4b6c16['push'](_0x4b6c16['shift']());}};_0x214d6d(++_0x1e2006);}(_0x59f5,0x16f));var _0x559f=function(_0x6b4306,_0x394520){_0x6b4306=_0x6b4306-0x0;var _0xf7568c=_0x59f5[_0x6b4306];return _0xf7568c;};'use strict';var _=require(_0x559f('0x0'));var util=require(_0x559f('0x1'));var logger=require(_0x559f('0x2'))(_0x559f('0x3'));var moment=require(_0x559f('0x4'));var BPromise=require(_0x559f('0x5'));var rp=require(_0x559f('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x559f('0x7'));var config=require(_0x559f('0x8'));var attributes=require(_0x559f('0x9'));module[_0x559f('0xa')]=function(_0x21b84a,_0x225968){return _0x21b84a[_0x559f('0xb')]('CmContactHasItem',attributes,{'tableName':_0x559f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmContactHasItem/cmContactHasItem.rpc.js b/server/api/cmContactHasItem/cmContactHasItem.rpc.js new file mode 100644 index 0000000..4e50a41 --- /dev/null +++ b/server/api/cmContactHasItem/cmContactHasItem.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6456=['error','code','CmContactHasItem,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x4a6edc,_0x43edab){var _0x5a9617=function(_0x4b0a67){while(--_0x4b0a67){_0x4a6edc['push'](_0x4a6edc['shift']());}};_0x5a9617(++_0x43edab);}(_0x6456,0x1e2));var _0x6645=function(_0x3ef45a,_0x4b6756){_0x3ef45a=_0x3ef45a-0x0;var _0x86f9aa=_0x6456[_0x3ef45a];return _0x86f9aa;};'use strict';var _=require('lodash');var util=require(_0x6645('0x0'));var moment=require(_0x6645('0x1'));var BPromise=require(_0x6645('0x2'));var rs=require(_0x6645('0x3'));var fs=require('fs');var Redis=require(_0x6645('0x4'));var db=require(_0x6645('0x5'))['db'];var utils=require(_0x6645('0x6'));var logger=require(_0x6645('0x7'))(_0x6645('0x8'));var config=require(_0x6645('0x9'));var jayson=require(_0x6645('0xa'));var client=jayson[_0x6645('0xb')][_0x6645('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xa99c4f,_0x12cb8a,_0x1f3c8b){return new BPromise(function(_0x36a200,_0x1c7c38){return client['request'](_0xa99c4f,_0x1f3c8b)[_0x6645('0xd')](function(_0x31a3ea){logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x12cb8a,'request\x20sent');logger[_0x6645('0xe')](_0x6645('0xf'),_0x12cb8a,_0x6645('0x10'),JSON[_0x6645('0x11')](_0x31a3ea));if(_0x31a3ea[_0x6645('0x12')]){if(_0x31a3ea[_0x6645('0x12')][_0x6645('0x13')]===0x1f4){logger['error'](_0x6645('0x14'),_0x12cb8a,_0x31a3ea['error'][_0x6645('0x15')]);return _0x1c7c38(_0x31a3ea[_0x6645('0x12')]['message']);}logger[_0x6645('0x12')](_0x6645('0x14'),_0x12cb8a,_0x31a3ea[_0x6645('0x12')][_0x6645('0x15')]);return _0x36a200(_0x31a3ea['error']['message']);}else{logger[_0x6645('0x16')](_0x6645('0x14'),_0x12cb8a,_0x6645('0x10'));_0x36a200(_0x31a3ea[_0x6645('0x17')][_0x6645('0x15')]);}})[_0x6645('0x18')](function(_0x35f122){logger[_0x6645('0x12')](_0x6645('0x14'),_0x12cb8a,_0x35f122);_0x1c7c38(_0x35f122);});});} \ No newline at end of file diff --git a/server/api/cmContactHasItem/index.js b/server/api/cmContactHasItem/index.js new file mode 100644 index 0000000..b0de380 --- /dev/null +++ b/server/api/cmContactHasItem/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xed73=['Router','fs-extra','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','create','update','delete','destroy','exports','multer','connect-timeout'];(function(_0x4a6a00,_0x4471b8){var _0x73d8c8=function(_0x4c2608){while(--_0x4c2608){_0x4a6a00['push'](_0x4a6a00['shift']());}};_0x73d8c8(++_0x4471b8);}(_0xed73,0x132));var _0x3ed7=function(_0x3d846e,_0x31ec6e){_0x3d846e=_0x3d846e-0x0;var _0x145539=_0xed73[_0x3d846e];return _0x145539;};'use strict';var multer=require(_0x3ed7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3ed7('0x1'));var express=require('express');var router=express[_0x3ed7('0x2')]();var fs_extra=require(_0x3ed7('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3ed7('0x4'));router[_0x3ed7('0x5')]('/',auth[_0x3ed7('0x6')](),controller[_0x3ed7('0x7')]);router[_0x3ed7('0x5')](_0x3ed7('0x8'),auth[_0x3ed7('0x6')](),controller['show']);router['post']('/',auth[_0x3ed7('0x6')](),controller[_0x3ed7('0x9')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x3ed7('0xa')]);router[_0x3ed7('0xb')](_0x3ed7('0x8'),auth[_0x3ed7('0x6')](),controller[_0x3ed7('0xc')]);module[_0x3ed7('0xd')]=router; \ No newline at end of file diff --git a/server/api/cmCustomField/cmCustomField.attributes.js b/server/api/cmCustomField/cmCustomField.attributes.js new file mode 100644 index 0000000..d52aff4 --- /dev/null +++ b/server/api/cmCustomField/cmCustomField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2497=['sequelize','getDataValue','alias','STRING','setDataValue','name','select','values','isArray','stringify','BOOLEAN'];(function(_0x23aa41,_0x2944df){var _0x293abb=function(_0x96c603){while(--_0x96c603){_0x23aa41['push'](_0x23aa41['shift']());}};_0x293abb(++_0x2944df);}(_0x2497,0x14a));var _0x7249=function(_0x542d43,_0x581432){_0x542d43=_0x542d43-0x0;var _0x3fb854=_0x2497[_0x542d43];return _0x3fb854;};'use strict';var Sequelize=require(_0x7249('0x0'));var _=require('lodash');module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x17cea2){return this[_0x7249('0x1')](_0x7249('0x2'));}},'alias':{'type':Sequelize[_0x7249('0x3')],'allowNull':![],'set':function(_0x362342){this[_0x7249('0x4')]('alias',_0x362342?_0x362342:this[_0x7249('0x1')](_0x7249('0x5')));}},'type':{'type':Sequelize[_0x7249('0x3')],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0x7249('0x1')]('type')===_0x7249('0x6')){return JSON['parse'](this['getDataValue'](_0x7249('0x7')));}else{return this[_0x7249('0x1')](_0x7249('0x7'));}},'set':function(_0x32fc6e){if(Array[_0x7249('0x8')](_0x32fc6e)){this[_0x7249('0x4')](_0x7249('0x7'),JSON[_0x7249('0x9')](_0x32fc6e));}else{this[_0x7249('0x4')](_0x7249('0x7'),_0x32fc6e);}}},'required':{'type':Sequelize[_0x7249('0xa')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x7249('0xa')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM']('voice')}}; \ No newline at end of file diff --git a/server/api/cmCustomField/cmCustomField.controller.js b/server/api/cmCustomField/cmCustomField.controller.js new file mode 100644 index 0000000..e27d406 --- /dev/null +++ b/server/api/cmCustomField/cmCustomField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfd69=['model','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','body','create','sequelize','transaction','Sequelize','text','TEXT','number','type','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','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/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','key','query','keys'];(function(_0x2ba436,_0xa0adbc){var _0x3a6706=function(_0x4b9d89){while(--_0x4b9d89){_0x2ba436['push'](_0x2ba436['shift']());}};_0x3a6706(++_0xa0adbc);}(_0xfd69,0x146));var _0x9fd6=function(_0x3ae10d,_0x1a7d1d){_0x3ae10d=_0x3ae10d-0x0;var _0x27e528=_0xfd69[_0x3ae10d];return _0x27e528;};'use strict';var emlformat=require(_0x9fd6('0x0'));var rimraf=require(_0x9fd6('0x1'));var zipdir=require(_0x9fd6('0x2'));var jsonpatch=require(_0x9fd6('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9fd6('0x4'));var Mustache=require(_0x9fd6('0x5'));var util=require(_0x9fd6('0x6'));var path=require('path');var sox=require(_0x9fd6('0x7'));var csv=require(_0x9fd6('0x8'));var ejs=require(_0x9fd6('0x9'));var fs=require('fs');var fs_extra=require(_0x9fd6('0xa'));var _=require(_0x9fd6('0xb'));var squel=require(_0x9fd6('0xc'));var crypto=require(_0x9fd6('0xd'));var jsforce=require(_0x9fd6('0xe'));var deskjs=require(_0x9fd6('0xf'));var toCsv=require(_0x9fd6('0x8'));var querystring=require(_0x9fd6('0x10'));var Papa=require(_0x9fd6('0x11'));var Redis=require(_0x9fd6('0x12'));var authService=require(_0x9fd6('0x13'));var qs=require(_0x9fd6('0x14'));var as=require(_0x9fd6('0x15'));var hardwareService=require(_0x9fd6('0x16'));var logger=require(_0x9fd6('0x17'))(_0x9fd6('0x18'));var utils=require(_0x9fd6('0x19'));var config=require(_0x9fd6('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5cb155,_0x4f9821){_0x4f9821=_0x4f9821||0xcc;return function(_0x1add84){if(_0x1add84){return _0x5cb155[_0x9fd6('0x1b')](_0x4f9821);}return _0x5cb155[_0x9fd6('0x1c')](_0x4f9821)[_0x9fd6('0x1d')]();};}function respondWithResult(_0x339c9b,_0x1a59a0){_0x1a59a0=_0x1a59a0||0xc8;return function(_0x3036e2){if(_0x3036e2){return _0x339c9b[_0x9fd6('0x1c')](_0x1a59a0)[_0x9fd6('0x1e')](_0x3036e2);}};}function respondWithFilteredResult(_0x1ac3c4,_0xe35ea){return function(_0x375c1e){if(_0x375c1e){var _0x5ed9dd=typeof _0xe35ea[_0x9fd6('0x1f')]===_0x9fd6('0x20')&&typeof _0xe35ea[_0x9fd6('0x21')]===_0x9fd6('0x20');var _0x5e865a=_0x375c1e['count'];var _0x41e521=_0x5ed9dd?0x0:_0xe35ea[_0x9fd6('0x1f')];var _0x5cebe2=_0x5ed9dd?_0x375c1e[_0x9fd6('0x22')]:_0xe35ea[_0x9fd6('0x1f')]+_0xe35ea[_0x9fd6('0x21')];var _0x47ee61;if(_0x5cebe2>=_0x5e865a){_0x5cebe2=_0x5e865a;_0x47ee61=0xc8;}else{_0x47ee61=0xce;}_0x1ac3c4[_0x9fd6('0x1c')](_0x47ee61);return _0x1ac3c4[_0x9fd6('0x23')](_0x9fd6('0x24'),_0x41e521+'-'+_0x5cebe2+'/'+_0x5e865a)[_0x9fd6('0x1e')](_0x375c1e);}return null;};}function patchUpdates(_0xb9c54b){return function(_0x11283e){try{jsonpatch[_0x9fd6('0x25')](_0x11283e,_0xb9c54b,!![]);}catch(_0x6325f0){return BPromise[_0x9fd6('0x26')](_0x6325f0);}return _0x11283e[_0x9fd6('0x27')]();};}function saveUpdates(_0x3a81ba,_0x24412a){return function(_0x232d9e){if(_0x232d9e){return _0x232d9e[_0x9fd6('0x28')](_0x3a81ba)[_0x9fd6('0x29')](function(_0x5c85d4){return _0x5c85d4;});}return null;};}function removeEntity(_0xea3d56,_0x1254ab){return function(_0x5c59fa){if(_0x5c59fa){return _0x5c59fa[_0x9fd6('0x2a')]()[_0x9fd6('0x29')](function(){_0xea3d56[_0x9fd6('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5902ef,_0x51bca8){return function(_0x90d4c8){if(!_0x90d4c8){_0x5902ef[_0x9fd6('0x1b')](0x194);}return _0x90d4c8;};}function handleError(_0xb7c4b2,_0x52c57){_0x52c57=_0x52c57||0x1f4;return function(_0x40ef61){logger[_0x9fd6('0x2b')](_0x40ef61[_0x9fd6('0x2c')]);if(_0x40ef61[_0x9fd6('0x2d')]){delete _0x40ef61['name'];}_0xb7c4b2[_0x9fd6('0x1c')](_0x52c57)[_0x9fd6('0x2e')](_0x40ef61);};}exports[_0x9fd6('0x2f')]=function(_0x2a3105,_0x273a62){var _0x414d8c={},_0x37b002={},_0x1c5be0={'count':0x0,'rows':[]};var _0x10339c=_[_0x9fd6('0x30')](db[_0x9fd6('0x31')][_0x9fd6('0x32')],function(_0x3887eb){return{'name':_0x3887eb['fieldName'],'type':_0x3887eb['type'][_0x9fd6('0x33')]};});_0x37b002['model']=_['differenceBy'](_[_0x9fd6('0x30')](_0x10339c,_0x9fd6('0x2d')),[_0x9fd6('0x2d')]);_0x37b002[_0x9fd6('0x34')]=_[_0x9fd6('0x35')](_0x2a3105[_0x9fd6('0x34')]);_0x37b002['filters']=_['intersection'](_0x37b002[_0x9fd6('0x36')],_0x37b002[_0x9fd6('0x34')]);_0x414d8c['attributes']=_[_0x9fd6('0x37')](_0x37b002[_0x9fd6('0x36')],qs[_0x9fd6('0x38')](_0x2a3105[_0x9fd6('0x34')][_0x9fd6('0x38')]));_0x414d8c['attributes']=_0x414d8c['attributes'][_0x9fd6('0x39')]?_0x414d8c[_0x9fd6('0x3a')]:_0x37b002[_0x9fd6('0x36')];if(!_0x2a3105['query'][_0x9fd6('0x3b')](_0x9fd6('0x3c'))){_0x414d8c['limit']=qs[_0x9fd6('0x21')](_0x2a3105[_0x9fd6('0x34')]['limit']);_0x414d8c[_0x9fd6('0x1f')]=qs[_0x9fd6('0x1f')](_0x2a3105[_0x9fd6('0x34')][_0x9fd6('0x1f')]);}_0x414d8c[_0x9fd6('0x3d')]=qs[_0x9fd6('0x3e')](_0x2a3105[_0x9fd6('0x34')][_0x9fd6('0x3e')]);_0x414d8c[_0x9fd6('0x3f')]=qs[_0x9fd6('0x40')](_[_0x9fd6('0x41')](_0x2a3105[_0x9fd6('0x34')],_0x37b002[_0x9fd6('0x40')]),_0x10339c);if(_0x2a3105[_0x9fd6('0x34')][_0x9fd6('0x42')]){_0x414d8c[_0x9fd6('0x3f')]=_[_0x9fd6('0x43')](_0x414d8c[_0x9fd6('0x3f')],{'$or':_[_0x9fd6('0x30')](_0x10339c,function(_0x51475b){if(_0x51475b['type']!==_0x9fd6('0x44')){var _0x5a2dcb={};_0x5a2dcb[_0x51475b[_0x9fd6('0x2d')]]={'$like':'%'+_0x2a3105['query'][_0x9fd6('0x42')]+'%'};return _0x5a2dcb;}})});}_0x414d8c=_[_0x9fd6('0x43')]({},_0x414d8c,_0x2a3105[_0x9fd6('0x45')]);var _0x524567={'where':_0x414d8c['where']};return db[_0x9fd6('0x31')][_0x9fd6('0x22')](_0x524567)[_0x9fd6('0x29')](function(_0x482c04){_0x1c5be0['count']=_0x482c04;if(_0x2a3105[_0x9fd6('0x34')][_0x9fd6('0x46')]){_0x414d8c['include']=[{'all':!![]}];}return db[_0x9fd6('0x31')][_0x9fd6('0x47')](_0x414d8c);})[_0x9fd6('0x29')](function(_0x1de446){_0x1c5be0['rows']=_0x1de446;return _0x1c5be0;})['then'](respondWithFilteredResult(_0x273a62,_0x414d8c))[_0x9fd6('0x48')](handleError(_0x273a62,null));};exports[_0x9fd6('0x49')]=function(_0x268160,_0x15fab9){var _0x4b973e={'raw':!![],'where':{'id':_0x268160[_0x9fd6('0x4a')]['id']}},_0x423098={};_0x423098['model']=_[_0x9fd6('0x35')](db[_0x9fd6('0x31')][_0x9fd6('0x32')]);_0x423098['query']=_[_0x9fd6('0x35')](_0x268160[_0x9fd6('0x34')]);_0x423098[_0x9fd6('0x40')]=_[_0x9fd6('0x37')](_0x423098[_0x9fd6('0x36')],_0x423098[_0x9fd6('0x34')]);_0x4b973e[_0x9fd6('0x3a')]=_[_0x9fd6('0x37')](_0x423098[_0x9fd6('0x36')],qs['fields'](_0x268160[_0x9fd6('0x34')]['fields']));_0x4b973e[_0x9fd6('0x3a')]=_0x4b973e['attributes'][_0x9fd6('0x39')]?_0x4b973e[_0x9fd6('0x3a')]:_0x423098['model'];if(_0x268160['query'][_0x9fd6('0x46')]){_0x4b973e[_0x9fd6('0x4b')]=[{'all':!![]}];}_0x4b973e=_[_0x9fd6('0x43')]({},_0x4b973e,_0x268160[_0x9fd6('0x45')]);return db[_0x9fd6('0x31')][_0x9fd6('0x4c')](_0x4b973e)[_0x9fd6('0x29')](handleEntityNotFound(_0x15fab9,null))[_0x9fd6('0x29')](respondWithResult(_0x15fab9,null))['catch'](handleError(_0x15fab9,null));};exports[_0x9fd6('0x28')]=function(_0x25e773,_0x283aec){if(_0x25e773[_0x9fd6('0x4d')]['id']){delete _0x25e773['body']['id'];}return db[_0x9fd6('0x31')][_0x9fd6('0x4c')]({'where':{'id':_0x25e773['params']['id']}})[_0x9fd6('0x29')](handleEntityNotFound(_0x283aec,null))[_0x9fd6('0x29')](saveUpdates(_0x25e773['body'],null))[_0x9fd6('0x29')](respondWithResult(_0x283aec,null))[_0x9fd6('0x48')](handleError(_0x283aec,null));};exports['destroy']=function(_0x1e5ef4,_0x232776){return db[_0x9fd6('0x31')][_0x9fd6('0x4c')]({'where':{'id':_0x1e5ef4[_0x9fd6('0x4a')]['id']}})[_0x9fd6('0x29')](handleEntityNotFound(_0x232776,null))[_0x9fd6('0x29')](removeEntity(_0x232776,null))['catch'](handleError(_0x232776,null));};exports[_0x9fd6('0x4e')]=function(_0x468894,_0x56a3be){var _0x147da6;return db[_0x9fd6('0x4f')][_0x9fd6('0x50')](function(_0x45eab0){return db[_0x9fd6('0x31')][_0x9fd6('0x4e')](_0x468894[_0x9fd6('0x4d')],{'transaction':_0x45eab0})[_0x9fd6('0x29')](function(_0x34dc39){_0x147da6=_0x34dc39;var _0x103bce={'type':db[_0x9fd6('0x51')]['TEXT'],'transaction':_0x45eab0};switch(_0x468894[_0x9fd6('0x4d')]['type']){case _0x9fd6('0x52'):_0x103bce['type']=db[_0x9fd6('0x51')][_0x9fd6('0x53')];break;case _0x9fd6('0x54'):_0x103bce[_0x9fd6('0x55')]=db['Sequelize'][_0x9fd6('0x56')];break;case _0x9fd6('0x57'):_0x103bce[_0x9fd6('0x55')]=db[_0x9fd6('0x51')][_0x9fd6('0x58')];_0x103bce[_0x9fd6('0x59')]=![];break;default:}return db[_0x9fd6('0x4f')][_0x9fd6('0x5a')][_0x9fd6('0x5b')](_0x9fd6('0x5c'),util[_0x9fd6('0x5d')](_0x9fd6('0x5e'),_0x147da6['id']),_0x103bce);})['then'](function(){return _0x147da6;});})[_0x9fd6('0x29')](respondWithResult(_0x56a3be,0xc9))[_0x9fd6('0x48')](handleError(_0x56a3be,null));}; \ No newline at end of file diff --git a/server/api/cmCustomField/cmCustomField.model.js b/server/api/cmCustomField/cmCustomField.model.js new file mode 100644 index 0000000..c7e5670 --- /dev/null +++ b/server/api/cmCustomField/cmCustomField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2d6a=['path','rimraf','../../config/environment','./cmCustomField.attributes','define','CmCustomField','cm_custom_fields','../../config/logger','api','moment','request-promise'];(function(_0x10d3b1,_0x35db4d){var _0x15c8aa=function(_0x182f0a){while(--_0x182f0a){_0x10d3b1['push'](_0x10d3b1['shift']());}};_0x15c8aa(++_0x35db4d);}(_0x2d6a,0x10f));var _0xa2d6=function(_0x4f63b2,_0x3d1472){_0x4f63b2=_0x4f63b2-0x0;var _0x1a86d5=_0x2d6a[_0x4f63b2];return _0x1a86d5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa2d6('0x0'))(_0xa2d6('0x1'));var moment=require(_0xa2d6('0x2'));var BPromise=require('bluebird');var rp=require(_0xa2d6('0x3'));var fs=require('fs');var path=require(_0xa2d6('0x4'));var rimraf=require(_0xa2d6('0x5'));var config=require(_0xa2d6('0x6'));var attributes=require(_0xa2d6('0x7'));module['exports']=function(_0x2ab5ab,_0x4e47f8){return _0x2ab5ab[_0xa2d6('0x8')](_0xa2d6('0x9'),attributes,{'tableName':_0xa2d6('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmCustomField/cmCustomField.rpc.js b/server/api/cmCustomField/cmCustomField.rpc.js new file mode 100644 index 0000000..29e5ee3 --- /dev/null +++ b/server/api/cmCustomField/cmCustomField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd820=['then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x4117af,_0x147e60){var _0x71c88=function(_0x513e29){while(--_0x513e29){_0x4117af['push'](_0x4117af['shift']());}};_0x71c88(++_0x147e60);}(_0xd820,0x18b));var _0x0d82=function(_0x240625,_0x5521aa){_0x240625=_0x240625-0x0;var _0x5d3a5d=_0xd820[_0x240625];return _0x5d3a5d;};'use strict';var _=require(_0x0d82('0x0'));var util=require('util');var moment=require(_0x0d82('0x1'));var BPromise=require(_0x0d82('0x2'));var rs=require(_0x0d82('0x3'));var fs=require('fs');var Redis=require(_0x0d82('0x4'));var db=require(_0x0d82('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0d82('0x6'))(_0x0d82('0x7'));var config=require(_0x0d82('0x8'));var jayson=require(_0x0d82('0x9'));var client=jayson[_0x0d82('0xa')][_0x0d82('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5da97f,_0x14054a,_0x2a13f1){return new BPromise(function(_0x40b6fa,_0x30e5b0){return client[_0x0d82('0xc')](_0x5da97f,_0x2a13f1)[_0x0d82('0xd')](function(_0x372778){logger[_0x0d82('0xe')](_0x0d82('0xf'),_0x14054a,_0x0d82('0x10'));logger['debug'](_0x0d82('0x11'),_0x14054a,_0x0d82('0x10'),JSON[_0x0d82('0x12')](_0x372778));if(_0x372778['error']){if(_0x372778[_0x0d82('0x13')][_0x0d82('0x14')]===0x1f4){logger['error'](_0x0d82('0xf'),_0x14054a,_0x372778[_0x0d82('0x13')]['message']);return _0x30e5b0(_0x372778[_0x0d82('0x13')]['message']);}logger[_0x0d82('0x13')]('CmCustomField,\x20%s,\x20%s',_0x14054a,_0x372778[_0x0d82('0x13')][_0x0d82('0x15')]);return _0x40b6fa(_0x372778['error'][_0x0d82('0x15')]);}else{logger['info'](_0x0d82('0xf'),_0x14054a,_0x0d82('0x10'));_0x40b6fa(_0x372778[_0x0d82('0x16')][_0x0d82('0x15')]);}})[_0x0d82('0x17')](function(_0x9273de){logger[_0x0d82('0x13')](_0x0d82('0xf'),_0x14054a,_0x9273de);_0x30e5b0(_0x9273de);});});} \ No newline at end of file diff --git a/server/api/cmCustomField/index.js b/server/api/cmCustomField/index.js new file mode 100644 index 0000000..5715d4e --- /dev/null +++ b/server/api/cmCustomField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xecb2=['show','post','put','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','/:id','isAuthenticated'];(function(_0x36b098,_0x2003d5){var _0x333d3c=function(_0x336df3){while(--_0x336df3){_0x36b098['push'](_0x36b098['shift']());}};_0x333d3c(++_0x2003d5);}(_0xecb2,0xf6));var _0x2ecb=function(_0x5d5f5e,_0x3d8f31){_0x5d5f5e=_0x5d5f5e-0x0;var _0x5dd032=_0xecb2[_0x5d5f5e];return _0x5dd032;};'use strict';var multer=require(_0x2ecb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2ecb('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2ecb('0x2'));var auth=require(_0x2ecb('0x3'));var interaction=require(_0x2ecb('0x4'));var config=require(_0x2ecb('0x5'));var controller=require(_0x2ecb('0x6'));router[_0x2ecb('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x2ecb('0x8'),auth[_0x2ecb('0x9')](),controller[_0x2ecb('0xa')]);router[_0x2ecb('0xb')]('/',auth[_0x2ecb('0x9')](),controller['create']);router[_0x2ecb('0xc')](_0x2ecb('0x8'),auth[_0x2ecb('0x9')](),controller['update']);router[_0x2ecb('0xd')](_0x2ecb('0x8'),auth[_0x2ecb('0x9')](),controller[_0x2ecb('0xe')]);module[_0x2ecb('0xf')]=router; \ No newline at end of file diff --git a/server/api/cmHopper/cmHopper.attributes.js b/server/api/cmHopper/cmHopper.attributes.js new file mode 100644 index 0000000..86ff9df --- /dev/null +++ b/server/api/cmHopper/cmHopper.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4f26=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','UNSIGNED','contactListQueue','moment','sequelize','STRING','BOOLEAN'];(function(_0xd9954b,_0x228faa){var _0x4f5c1b=function(_0x1b2ed1){while(--_0x1b2ed1){_0xd9954b['push'](_0xd9954b['shift']());}};_0x4f5c1b(++_0x228faa);}(_0x4f26,0x125));var _0x64f2=function(_0x546b2c,_0x30f8fa){_0x546b2c=_0x546b2c-0x0;var _0x4ae298=_0x4f26[_0x546b2c];return _0x4ae298;};'use strict';var moment=require(_0x64f2('0x0'));var Sequelize=require(_0x64f2('0x1'));module['exports']={'phone':{'type':Sequelize[_0x64f2('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x64f2('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0x64f2('0x4'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x64f2('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x64f2('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x64f2('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x64f2('0x6')]},'priority':{'type':Sequelize[_0x64f2('0x5')](0x2)[_0x64f2('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x64f2('0x5')],'unique':_0x64f2('0x8')},'UserId':{'type':Sequelize[_0x64f2('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x64f2('0x5')],'unique':_0x64f2('0x8')},'CampaignId':{'type':Sequelize[_0x64f2('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x64f2('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x64f2('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x64f2('0x5')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x64f2('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x64f2('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0x64f2('0x6')],'allowNull':!![],'defaultValue':null}}; \ No newline at end of file diff --git a/server/api/cmHopper/cmHopper.controller.js b/server/api/cmHopper/cmHopper.controller.js new file mode 100644 index 0000000..cfdcccc --- /dev/null +++ b/server/api/cmHopper/cmHopper.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe0c3=['$contained','$any','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','sequelize','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Contact','Company','CmList','List','Queue','dialActive','getPreviewRecall','LOCK','CmCompany','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','utcOffset','getTimezone','moment','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','update','then','sendStatus','error','stack','name','CmHopper','rawAttributes','type','map','query','keys','intersection','filters','concat','$or','$gt','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$notLike','$like','$overlap'];(function(_0x35dd73,_0xd88195){var _0x54c68e=function(_0x388e51){while(--_0x388e51){_0x35dd73['push'](_0x35dd73['shift']());}};_0x54c68e(++_0xd88195);}(_0xe0c3,0xea));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require(_0x3e0c('0x0'));var _=require('lodash');var qs=require(_0x3e0c('0x1'));var logger=require(_0x3e0c('0x2'))(_0x3e0c('0x3'));var shared=require(_0x3e0c('0x4'));var db=require(_0x3e0c('0x5'))['db'];function respondWithResult(_0x410ec4,_0x31851c){_0x31851c=_0x31851c||0xc8;return function(_0x26c964){if(_0x26c964){return _0x410ec4[_0x3e0c('0x6')](_0x31851c)['json'](_0x26c964);}};}function respondWithFilteredResult(_0x530ebf,_0x163adf){return function(_0x1e339a){if(_0x1e339a){var _0x3f6607=typeof _0x163adf[_0x3e0c('0x7')]===_0x3e0c('0x8')&&typeof _0x163adf[_0x3e0c('0x9')]===_0x3e0c('0x8');var _0x448907=_0x1e339a[_0x3e0c('0xa')];var _0x35d56f=_0x3f6607?0x0:_0x163adf[_0x3e0c('0x7')];var _0x4f7e71=_0x3f6607?_0x1e339a['count']:_0x163adf[_0x3e0c('0x7')]+_0x163adf[_0x3e0c('0x9')];var _0x13ce3e;if(_0x4f7e71>=_0x448907){_0x4f7e71=_0x448907;_0x13ce3e=0xc8;}else{_0x13ce3e=0xce;}_0x530ebf[_0x3e0c('0x6')](_0x13ce3e);return _0x530ebf[_0x3e0c('0xb')](_0x3e0c('0xc'),_0x35d56f+'-'+_0x4f7e71+'/'+_0x448907)[_0x3e0c('0xd')](_0x1e339a);}return null;};}function saveUpdates(_0x5dc732,_0x38b416){return function(_0x491432){if(_0x491432){return _0x491432[_0x3e0c('0xe')](_0x5dc732)[_0x3e0c('0xf')](function(_0x5d0ab7){return _0x5d0ab7;});}return null;};}function handleEntityNotFound(_0x5f2654,_0x6d9c61){return function(_0x409b2c){if(!_0x409b2c){_0x5f2654[_0x3e0c('0x10')](0x194);}return _0x409b2c;};}function handleError(_0xea4ed,_0x15a269){_0x15a269=_0x15a269||0x1f4;return function(_0x24fcf9){logger[_0x3e0c('0x11')](_0x24fcf9[_0x3e0c('0x12')]);if(_0x24fcf9[_0x3e0c('0x13')]){delete _0x24fcf9[_0x3e0c('0x13')];}_0xea4ed[_0x3e0c('0x6')](_0x15a269)['send'](_0x24fcf9);};}exports['index']=function(_0x20db28,_0x216993){var _0x1b2e17={},_0x41b19f={},_0x108d4a={'count':0x0,'rows':[]};var _0x8825b7=_['map'](db[_0x3e0c('0x14')][_0x3e0c('0x15')],function(_0x95ce16){return{'name':_0x95ce16['fieldName'],'type':_0x95ce16[_0x3e0c('0x16')]['key']};});_0x41b19f['model']=_[_0x3e0c('0x17')](_0x8825b7,_0x3e0c('0x13'));_0x41b19f[_0x3e0c('0x18')]=_[_0x3e0c('0x19')](_0x20db28['query']);_0x41b19f['filters']=_[_0x3e0c('0x1a')](_0x41b19f['model'],_0x41b19f['query']);_0x41b19f[_0x3e0c('0x1b')]=_[_0x3e0c('0x1c')](_0x41b19f[_0x3e0c('0x1b')],['$and',_0x3e0c('0x1d'),_0x3e0c('0x1e'),'$gte',_0x3e0c('0x1f'),_0x3e0c('0x20'),_0x3e0c('0x21'),_0x3e0c('0x22'),'$not',_0x3e0c('0x23'),_0x3e0c('0x24'),_0x3e0c('0x25'),_0x3e0c('0x26'),'$like',_0x3e0c('0x27'),'$iLike','$notILike',_0x3e0c('0x28'),_0x3e0c('0x29'),'$contains',_0x3e0c('0x2a'),_0x3e0c('0x2b')]);_0x1b2e17[_0x3e0c('0x2c')]=_['intersection'](_0x41b19f[_0x3e0c('0x2d')],qs[_0x3e0c('0x2e')](_0x20db28['query'][_0x3e0c('0x2e')]));_0x1b2e17[_0x3e0c('0x2c')]=_0x1b2e17[_0x3e0c('0x2c')][_0x3e0c('0x2f')]?_0x1b2e17['attributes']:_0x41b19f[_0x3e0c('0x2d')];if(!_0x20db28[_0x3e0c('0x18')][_0x3e0c('0x30')]('nolimit')){_0x1b2e17[_0x3e0c('0x9')]=qs[_0x3e0c('0x9')](_0x20db28[_0x3e0c('0x18')]['limit']);_0x1b2e17[_0x3e0c('0x7')]=qs[_0x3e0c('0x7')](_0x20db28[_0x3e0c('0x18')][_0x3e0c('0x7')]);}_0x1b2e17[_0x3e0c('0x31')]=qs[_0x3e0c('0x32')](_0x20db28[_0x3e0c('0x18')][_0x3e0c('0x32')]);_0x1b2e17[_0x3e0c('0x33')]=qs[_0x3e0c('0x1b')](_[_0x3e0c('0x34')](_0x20db28[_0x3e0c('0x18')],_0x41b19f[_0x3e0c('0x1b')]),_0x8825b7);if(_0x20db28[_0x3e0c('0x18')]['filter']){_0x1b2e17[_0x3e0c('0x33')]=_[_0x3e0c('0x35')](_0x1b2e17[_0x3e0c('0x33')],{'$or':_[_0x3e0c('0x17')](_0x8825b7,function(_0xd89af9){if(_0xd89af9[_0x3e0c('0x16')]!==_0x3e0c('0x36')){var _0x2ef238={};_0x2ef238[_0xd89af9['name']]={'$like':'%'+_0x20db28['query'][_0x3e0c('0x37')]+'%'};return _0x2ef238;}})});}_0x1b2e17=_[_0x3e0c('0x35')]({},_0x1b2e17,_0x20db28[_0x3e0c('0x38')]);var _0x319cd4={'where':_0x1b2e17[_0x3e0c('0x33')]};return db[_0x3e0c('0x14')]['count'](_0x319cd4)[_0x3e0c('0xf')](function(_0x168784){_0x108d4a['count']=_0x168784;if(_0x20db28['query']['includeAll']){_0x1b2e17[_0x3e0c('0x39')]=[{'all':!![]}];}return db[_0x3e0c('0x14')][_0x3e0c('0x3a')](_0x1b2e17);})[_0x3e0c('0xf')](function(_0x320bf1){_0x108d4a[_0x3e0c('0x3b')]=_0x320bf1;return _0x108d4a;})[_0x3e0c('0xf')](respondWithFilteredResult(_0x216993,_0x1b2e17))[_0x3e0c('0x3c')](handleError(_0x216993,null));};exports[_0x3e0c('0x3d')]=function(_0xb38f09,_0x427207){var _0x20135d={'raw':!![],'where':{'id':_0xb38f09['params']['id']}},_0x4f0e6c={};_0x4f0e6c['model']=_[_0x3e0c('0x19')](db[_0x3e0c('0x14')]['rawAttributes']);_0x4f0e6c['query']=_[_0x3e0c('0x19')](_0xb38f09[_0x3e0c('0x18')]);_0x4f0e6c[_0x3e0c('0x1b')]=_[_0x3e0c('0x1a')](_0x4f0e6c['model'],_0x4f0e6c[_0x3e0c('0x18')]);_0x20135d[_0x3e0c('0x2c')]=_[_0x3e0c('0x1a')](_0x4f0e6c[_0x3e0c('0x2d')],qs[_0x3e0c('0x2e')](_0xb38f09['query'][_0x3e0c('0x2e')]));_0x20135d['attributes']=_0x20135d[_0x3e0c('0x2c')][_0x3e0c('0x2f')]?_0x20135d['attributes']:_0x4f0e6c['model'];if(_0xb38f09[_0x3e0c('0x18')][_0x3e0c('0x3e')]){_0x20135d['include']=[{'all':!![]}];}_0x20135d=_[_0x3e0c('0x35')]({},_0x20135d,_0xb38f09[_0x3e0c('0x38')]);return db[_0x3e0c('0x14')][_0x3e0c('0x3f')](_0x20135d)[_0x3e0c('0xf')](handleEntityNotFound(_0x427207,null))[_0x3e0c('0xf')](respondWithResult(_0x427207,null))['catch'](handleError(_0x427207,null));};exports[_0x3e0c('0x40')]=function(_0x20a85f,_0xec802a){return db[_0x3e0c('0x14')][_0x3e0c('0x40')](_0x20a85f[_0x3e0c('0x41')],{})['then'](respondWithResult(_0xec802a,0xc9))[_0x3e0c('0x3c')](handleError(_0xec802a,null));};exports[_0x3e0c('0xe')]=function(_0x323246,_0x563251){if(_0x323246[_0x3e0c('0x41')]['id']){delete _0x323246[_0x3e0c('0x41')]['id'];}return db['CmHopper'][_0x3e0c('0x3f')]({'where':{'id':_0x323246[_0x3e0c('0x42')]['id']}})[_0x3e0c('0xf')](handleEntityNotFound(_0x563251,null))['then'](saveUpdates(_0x323246[_0x3e0c('0x41')],null))[_0x3e0c('0xf')](respondWithResult(_0x563251,null))[_0x3e0c('0x3c')](handleError(_0x563251,null));};exports[_0x3e0c('0x43')]=function(_0x109078,_0x2e0a90){return db[_0x3e0c('0x14')][_0x3e0c('0x43')]()[_0x3e0c('0xf')](respondWithResult(_0x2e0a90,null))[_0x3e0c('0x3c')](handleError(_0x2e0a90,null));};exports[_0x3e0c('0x44')]=function(_0x4efbf2,_0x20c9df){var _0x58dac7;var _0x4b2062=_0x4efbf2[_0x3e0c('0x42')]['id'];return db['CmHopper'][_0x3e0c('0x3f')]({'where':{'id':_0x4efbf2[_0x3e0c('0x42')]['id']}})['then'](handleEntityNotFound(_0x20c9df,null))[_0x3e0c('0xf')](function(_0x14b718){if(_0x14b718){return _0x14b718['destroy']()[_0x3e0c('0xf')](function(_0x3e04c9){return _0x3e04c9;});}})[_0x3e0c('0xf')](function(_0x20b0bc){_0x58dac7=_0x20b0bc;if(_0x20b0bc){if(_0x20b0bc[_0x3e0c('0x45')]||_0x20b0bc[_0x3e0c('0x46')]){return db[_0x20b0bc[_0x3e0c('0x45')]?_0x3e0c('0x47'):_0x3e0c('0x48')][_0x3e0c('0x3f')]({'where':{'id':_0x20b0bc['VoiceQueueId']?_0x20b0bc[_0x3e0c('0x45')]:_0x20b0bc[_0x3e0c('0x46')]},'attributes':['id',_0x3e0c('0x13')],'raw':!![]});}}})[_0x3e0c('0xf')](function(_0x1a2cf2){var _0x14299c={};if(_0x1a2cf2){_[_0x3e0c('0x35')](_0x14299c,_[_0x3e0c('0x49')](_0x58dac7[_0x3e0c('0x4a')],[_0x3e0c('0x4b'),_0x3e0c('0x4c'),'id']));_0x14299c[_0x3e0c('0x4d')]=0x15;_0x14299c[_0x3e0c('0x4e')]=_0x3e0c('0x4f');_0x14299c['campaign']=_0x1a2cf2[_0x3e0c('0x13')];_0x14299c[_0x3e0c('0x50')]=_0x4efbf2[_0x3e0c('0x51')]['name'];_0x14299c[_0x3e0c('0x52')]=_0x4efbf2[_0x3e0c('0x51')]['id'];_0x14299c[_0x3e0c('0x4f')]=!![];_0x14299c[_0x3e0c('0x53')]=moment()[_0x3e0c('0x54')](_0x3e0c('0x55'));_0x14299c[_0x3e0c('0x56')]=_0x58dac7[_0x3e0c('0x57')];_0x14299c[_0x3e0c('0x58')]=_0x58dac7[_0x3e0c('0x45')]?'queue':_0x3e0c('0x59');return db[_0x3e0c('0x5a')]['find']({'where':{'id':_0x14299c[_0x3e0c('0x5b')]},'attributes':['firstName',_0x3e0c('0x5c')]})[_0x3e0c('0xf')](function(_0x28b2d5){if(!_[_0x3e0c('0x5d')](_0x20c9df)&&!_[_0x3e0c('0x5d')](_0x28b2d5[_0x3e0c('0x5e')])){_0x14299c[_0x3e0c('0x5f')]=_0x28b2d5[_0x3e0c('0x5e')];if(!_[_0x3e0c('0x5d')](_0x28b2d5[_0x3e0c('0x5c')])){_0x14299c[_0x3e0c('0x5f')]+='\x20'+_0x28b2d5[_0x3e0c('0x5c')];}}})[_0x3e0c('0x60')](function(){return db[_0x3e0c('0x61')][_0x3e0c('0x40')](_0x14299c);});}})[_0x3e0c('0xf')](function(_0x117e2f){return db[_0x3e0c('0x62')][_0x3e0c('0x44')]({'where':{'CmHopperId':_0x4b2062}});})[_0x3e0c('0xf')](function(){return _0x20c9df[_0x3e0c('0x6')](0xcc)[_0x3e0c('0x63')]();})[_0x3e0c('0x3c')](handleError(_0x20c9df,null));};exports[_0x3e0c('0x64')]=function(_0x2f6666,_0xcc965b){var _0x58aa5d=[];return db[_0x3e0c('0x5a')][_0x3e0c('0x43')]()[_0x3e0c('0xf')](function(_0x874b04){_0x58aa5d=_['keys'](_0x874b04);return _0x2f6666[_0x3e0c('0x51')][_0x3e0c('0x65')]({'where':{'type':_0x3e0c('0x66'),'dialActive':!![],'dialMethod':_0x3e0c('0x67')},'attributes':['id',_0x3e0c('0x68'),_0x3e0c('0x69')],'raw':!![]});})['then'](function(_0x3e1c8a){if(_0x3e1c8a&&_0x3e1c8a[_0x3e0c('0x2f')]){return db['sequelize'][_0x3e0c('0x6a')](function(_0x368b04){var _0x2b0eae={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3e0c('0x54')](_0x3e0c('0x55'))},'VoiceQueueId':{'$in':_['map'](_0x3e1c8a,'id')},'$or':[{'UserId':null},{'UserId':_0x2f6666['user']['id']}]};var _0x1b57dd={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x3e1c8a)[_0x3e0c('0x37')](['dialPreviewAutoRecallMe',0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x2f6666[_0x3e0c('0x51')]['id']}]};var _0x274fcc={'$or':[_0x2b0eae,_0x1b57dd]};var _0x10e951=[];if(_0x2f6666[_0x3e0c('0x41')][_0x3e0c('0x6b')]&&_0x2f6666[_0x3e0c('0x41')][_0x3e0c('0x6b')]===_0x3e0c('0x6c')){if(!_[_0x3e0c('0x6d')](_0x2f6666[_0x3e0c('0x41')][_0x3e0c('0x6e')])){_0x274fcc['id']={'$in':_0x2f6666[_0x3e0c('0x41')][_0x3e0c('0x6e')]};}_0x10e951=[[_0x3e0c('0x6f'),_0x3e0c('0x70')],[_0x3e0c('0x71'),_0x3e1c8a[0x0][_0x3e0c('0x68')]==='ASC'?_0x3e0c('0x72'):_0x3e0c('0x70')],db[_0x3e0c('0x73')]['literal'](_0x3e0c('0x74')),['id',_0x3e0c('0x72')]];}else{if(!_[_0x3e0c('0x6d')](_0x2f6666[_0x3e0c('0x41')][_0x3e0c('0x6e')])){_0x274fcc['id']={'$notIn':_0x2f6666[_0x3e0c('0x41')][_0x3e0c('0x6e')]};}_0x10e951=[[_0x3e0c('0x6f'),'DESC'],[_0x3e0c('0x71'),_0x3e1c8a[0x0][_0x3e0c('0x68')]],db[_0x3e0c('0x73')]['literal'](_0x3e0c('0x75')),['id',_0x3e0c('0x70')]];}return db['CmHopper'][_0x3e0c('0x76')]({'attributes':['id',_0x3e0c('0x77'),'phone',_0x3e0c('0x78')],'where':_0x274fcc,'order':_0x10e951,'transaction':_0x368b04,'lock':_0x368b04['LOCK'][_0x3e0c('0x79')],'include':[{'model':db[_0x3e0c('0x5a')],'as':_0x3e0c('0x7a'),'attributes':_0x58aa5d,'include':[{'model':db['CmCompany'],'as':_0x3e0c('0x7b'),'attributes':['id',_0x3e0c('0x13')]}]},{'model':db[_0x3e0c('0x7c')],'as':_0x3e0c('0x7d'),'attributes':['id','name']},{'model':db[_0x3e0c('0x47')],'as':_0x3e0c('0x7e'),'attributes':['id','name',_0x3e0c('0x7f')]}]})[_0x3e0c('0xf')](function(_0x13cca3){if(_0x13cca3){return _0x13cca3[_0x3e0c('0xe')]({'UserId':_0x2f6666['user']['id']},{'transaction':_0x368b04});}});});}})[_0x3e0c('0xf')](handleEntityNotFound(_0xcc965b,null))['then'](respondWithResult(_0xcc965b,null))[_0x3e0c('0x3c')](handleError(_0xcc965b,null));};exports[_0x3e0c('0x80')]=function(_0x32f787,_0x7a867b,_0xe2533b){var _0x1474f5=[];var _0x345108=_0x32f787[_0x3e0c('0x42')]['id'];var _0x518f39=_0x32f787['user']['id'];return db[_0x3e0c('0x5a')]['describe']()[_0x3e0c('0xf')](function(_0x573576){_0x1474f5=_[_0x3e0c('0x19')](_0x573576);return db['sequelize'][_0x3e0c('0x6a')](function(_0x2ad053){const _0x383387={'id':_0x345108};return db['CmHopper'][_0x3e0c('0x76')]({'attributes':['id',_0x3e0c('0x77'),_0x3e0c('0x78')],'where':_0x383387,'transaction':_0x2ad053,'lock':_0x2ad053[_0x3e0c('0x81')][_0x3e0c('0x79')],'include':[{'model':db[_0x3e0c('0x5a')],'as':_0x3e0c('0x7a'),'attributes':_0x1474f5,'include':[{'model':db[_0x3e0c('0x82')],'as':_0x3e0c('0x7b'),'attributes':['id','name']}]},{'model':db[_0x3e0c('0x7c')],'as':_0x3e0c('0x7d'),'attributes':['id',_0x3e0c('0x13')]},{'model':db[_0x3e0c('0x47')],'as':'Queue','attributes':['id',_0x3e0c('0x13'),_0x3e0c('0x7f')]}]})[_0x3e0c('0xf')](function(_0x234fae){if(_0x234fae){return _0x234fae['update']({'UserId':_0x518f39},{'transaction':_0x2ad053});}});});})[_0x3e0c('0xf')](handleEntityNotFound(_0x7a867b,null))[_0x3e0c('0xf')](respondWithResult(_0x7a867b,null))[_0x3e0c('0x3c')](handleError(_0x7a867b,null));};exports[_0x3e0c('0x83')]=function(_0x15fc4b,_0xed0325){return _0x15fc4b[_0x3e0c('0x51')][_0x3e0c('0x65')]({'where':{'type':_0x3e0c('0x66'),'dialActive':!![],'dialMethod':_0x3e0c('0x67')},'attributes':['id'],'raw':!![]})[_0x3e0c('0xf')](function(_0x2eec6a){if(_0x2eec6a&&_0x2eec6a[_0x3e0c('0x2f')]){return db[_0x3e0c('0x14')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3e0c('0x54')](_0x3e0c('0x55'))},'VoiceQueueId':{'$in':_[_0x3e0c('0x17')](_0x2eec6a,'id')},'$or':[{'UserId':null},{'UserId':_0x15fc4b[_0x3e0c('0x51')]['id']}]}});}return 0x0;})[_0x3e0c('0xf')](function(_0x11b2d0){if(!_['isNil'](_0x11b2d0)&&_['isNumber'](_0x11b2d0)){return _0xed0325[_0x3e0c('0x6')](0xc8)['json']({'contacts':_0x11b2d0});}else{logger[_0x3e0c('0x11')](_0x3e0c('0x84'),_0x3e0c('0x83'),0x194,_0x3e0c('0x85'));_0xed0325[_0x3e0c('0x10')](0x194);}})[_0x3e0c('0x3c')](handleError(_0xed0325,null));};exports[_0x3e0c('0x86')]=function(_0x4cd2d0,_0x3283d0){var _0x1efb21=shared[_0x3e0c('0x87')];var _0x20dc9c=[];_[_0x3e0c('0x17')](_0x1efb21,function(_0x373b81){_0x20dc9c['push']({'id':_0x373b81[_0x3e0c('0x13')],'name':_0x373b81[_0x3e0c('0x13')],'utcOffset':_0x373b81[_0x3e0c('0x88')]});});return _0x3283d0[_0x3e0c('0x6')](0xc8)['json']({'tz':_0x20dc9c});};exports[_0x3e0c('0x89')]=function(_0x489b45,_0x5f56e9){var _0x181bd8=shared[_0x3e0c('0x87')];var _0xd83a3c={};if(!_[_0x3e0c('0x5d')](_0x181bd8[_0x489b45['body']['id']]))_0xd83a3c=_0x181bd8[_0x489b45['body']['id']];return _0x5f56e9[_0x3e0c('0x6')](0xc8)[_0x3e0c('0xd')](_0xd83a3c);}; \ No newline at end of file diff --git a/server/api/cmHopper/cmHopper.model.js b/server/api/cmHopper/cmHopper.model.js new file mode 100644 index 0000000..64e387d --- /dev/null +++ b/server/api/cmHopper/cmHopper.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x038b=['util','../../config/logger','api','bluebird','path','rimraf','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','phone'];(function(_0x46becb,_0x7dd620){var _0x30bfe5=function(_0x36c3c1){while(--_0x36c3c1){_0x46becb['push'](_0x46becb['shift']());}};_0x30bfe5(++_0x7dd620);}(_0x038b,0x114));var _0xb038=function(_0x3cf314,_0x332fc3){_0x3cf314=_0x3cf314-0x0;var _0x34276f=_0x038b[_0x3cf314];return _0x34276f;};'use strict';var _=require('lodash');var util=require(_0xb038('0x0'));var logger=require(_0xb038('0x1'))(_0xb038('0x2'));var moment=require('moment');var BPromise=require(_0xb038('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb038('0x4'));var rimraf=require(_0xb038('0x5'));var config=require('../../config/environment');var attributes=require(_0xb038('0x6'));module[_0xb038('0x7')]=function(_0x4fe092,_0x54e1e7){return _0x4fe092[_0xb038('0x8')](_0xb038('0x9'),attributes,{'tableName':_0xb038('0xa'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':['scheduledat']},{'name':_0xb038('0xb'),'fields':[_0xb038('0xb')]},{'name':'priority','fields':['priority']}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmHopper/cmHopper.rpc.js b/server/api/cmHopper/cmHopper.rpc.js new file mode 100644 index 0000000..6e9f95b --- /dev/null +++ b/server/api/cmHopper/cmHopper.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc28b=['model','then','info','GetCmHopper','debug','stringify','catch','error','message','ShowCmHopper','CmHopper','find','CreateCmHopper','create','UpdateCmHopper','update','body','active','DestroyCmHopper','destroy','CmContact','sequelize','LOCK','UPDATE','keys','User','Agent','voicePause','length','UserId','push','includes','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','GetContactDialer','MoveContactManagedDialer','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','transaction','order','GetContactRecallMe','GetCmHopperPreview','describe','Contact','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','voiceQueueIds','interval','literal','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','name','List','CmHopperHandlePreviewRecallNotifications','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x1997d2,_0x3ee494){var _0x1e3df7=function(_0x35ce26){while(--_0x35ce26){_0x1997d2['push'](_0x1997d2['shift']());}};_0x1e3df7(++_0x3ee494);}(_0xc28b,0x93));var _0xbc28=function(_0x1920f7,_0x13552f){_0x1920f7=_0x1920f7-0x0;var _0x5d2cb0=_0xc28b[_0x1920f7];return _0x5d2cb0;};'use strict';var _=require(_0xbc28('0x0'));var util=require(_0xbc28('0x1'));var moment=require(_0xbc28('0x2'));var BPromise=require(_0xbc28('0x3'));var db=require(_0xbc28('0x4'))['db'];var logger=require(_0xbc28('0x5'))(_0xbc28('0x6'));exports['GetCmHopper']=function(_0xb01412){var _0x1836ac=this;return new Promise(function(_0x16e184,_0x164901){return db['CmHopper'][_0xbc28('0x7')]({'raw':_0xb01412[_0xbc28('0x8')]?_0xb01412[_0xbc28('0x8')][_0xbc28('0x9')]===undefined?!![]:![]:!![],'where':_0xb01412[_0xbc28('0x8')]?_0xb01412[_0xbc28('0x8')][_0xbc28('0xa')]||null:null,'attributes':_0xb01412[_0xbc28('0x8')]?_0xb01412[_0xbc28('0x8')][_0xbc28('0xb')]||null:null,'limit':_0xb01412['options']?_0xb01412['options'][_0xbc28('0xc')]||null:null,'include':_0xb01412[_0xbc28('0x8')]?_0xb01412['options'][_0xbc28('0xd')]?_['map'](_0xb01412[_0xbc28('0x8')][_0xbc28('0xd')],function(_0x17b74d){return{'model':db[_0x17b74d['model']],'as':_0x17b74d['as'],'attributes':_0x17b74d[_0xbc28('0xb')],'include':_0x17b74d[_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x17b74d[_0xbc28('0xd')],function(_0x2fcd4c){return{'model':db[_0x2fcd4c['model']],'as':_0x2fcd4c['as'],'attributes':_0x2fcd4c['attributes'],'include':_0x2fcd4c[_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x2fcd4c[_0xbc28('0xd')],function(_0x32d5d9){return{'model':db[_0x32d5d9[_0xbc28('0xf')]],'as':_0x32d5d9['as'],'attributes':_0x32d5d9[_0xbc28('0xb')]};}):[]};}):[]};}):[]:[]})[_0xbc28('0x10')](function(_0xdbfa37){logger[_0xbc28('0x11')](_0xbc28('0x12'),_0xb01412);logger[_0xbc28('0x13')](_0xbc28('0x12'),_0xb01412,JSON[_0xbc28('0x14')](_0xdbfa37));_0x16e184(_0xdbfa37);})[_0xbc28('0x15')](function(_0xf22079){logger[_0xbc28('0x16')](_0xbc28('0x12'),_0xf22079[_0xbc28('0x17')],_0xb01412);_0x164901(_0x1836ac['error'](0x1f4,_0xf22079[_0xbc28('0x17')]));});});};exports[_0xbc28('0x18')]=function(_0x5e9125){var _0x336edf=this;return new Promise(function(_0x349e51,_0x38cc20){return db[_0xbc28('0x19')][_0xbc28('0x1a')]({'raw':_0x5e9125[_0xbc28('0x8')]?_0x5e9125['options'][_0xbc28('0x9')]===undefined?!![]:![]:!![],'where':_0x5e9125[_0xbc28('0x8')]?_0x5e9125[_0xbc28('0x8')][_0xbc28('0xa')]||null:null,'attributes':_0x5e9125[_0xbc28('0x8')]?_0x5e9125[_0xbc28('0x8')][_0xbc28('0xb')]||null:null,'include':_0x5e9125['options']?_0x5e9125['options']['include']?_[_0xbc28('0xe')](_0x5e9125[_0xbc28('0x8')]['include'],function(_0x57dde2){return{'model':db[_0x57dde2[_0xbc28('0xf')]],'as':_0x57dde2['as'],'attributes':_0x57dde2['attributes'],'include':_0x57dde2[_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x57dde2[_0xbc28('0xd')],function(_0x5a1e7b){return{'model':db[_0x5a1e7b[_0xbc28('0xf')]],'as':_0x5a1e7b['as'],'attributes':_0x5a1e7b[_0xbc28('0xb')],'include':_0x5a1e7b[_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x5a1e7b[_0xbc28('0xd')],function(_0x432892){return{'model':db[_0x432892[_0xbc28('0xf')]],'as':_0x432892['as'],'attributes':_0x432892[_0xbc28('0xb')]};}):[]};}):[]};}):[]:[]})[_0xbc28('0x10')](function(_0x129f12){logger[_0xbc28('0x11')](_0xbc28('0x18'),_0x5e9125);logger[_0xbc28('0x13')]('ShowCmHopper',_0x5e9125,JSON[_0xbc28('0x14')](_0x129f12));_0x349e51(_0x129f12);})[_0xbc28('0x15')](function(_0x4b9e90){logger['error'](_0xbc28('0x18'),_0x4b9e90['message'],_0x5e9125);_0x38cc20(_0x336edf[_0xbc28('0x16')](0x1f4,_0x4b9e90['message']));});});};exports[_0xbc28('0x1b')]=function(_0x145702){var _0x1c57b9=this;return new Promise(function(_0x5887af,_0x5dfd35){return db[_0xbc28('0x19')][_0xbc28('0x1c')](_0x145702['body'],{'raw':_0x145702[_0xbc28('0x8')]?_0x145702['options'][_0xbc28('0x9')]===undefined?!![]:![]:!![]})[_0xbc28('0x10')](function(_0x322376){logger['info'](_0xbc28('0x1b'),_0x145702);logger['debug']('CreateCmHopper',_0x145702,JSON[_0xbc28('0x14')](_0x322376));_0x5887af(_0x322376);})[_0xbc28('0x15')](function(_0x262267){logger[_0xbc28('0x16')](_0xbc28('0x1b'),_0x262267['message'],_0x145702);_0x5dfd35(_0x1c57b9[_0xbc28('0x16')](0x1f4,_0x262267[_0xbc28('0x17')]));});});};exports[_0xbc28('0x1d')]=function(_0x211cd2){var _0x391e41=this;return new Promise(function(_0x2fc05e,_0x3bad10){return db['CmHopper'][_0xbc28('0x1e')](_0x211cd2[_0xbc28('0x1f')],{'raw':_0x211cd2[_0xbc28('0x8')]?_0x211cd2[_0xbc28('0x8')][_0xbc28('0x9')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x211cd2[_0xbc28('0x8')]?_0x211cd2[_0xbc28('0x8')]['where']||null:null,'attributes':_0x211cd2[_0xbc28('0x8')]?_0x211cd2[_0xbc28('0x8')]['attributes']||null:null,'limit':_0x211cd2[_0xbc28('0x8')]?_0x211cd2['options'][_0xbc28('0xc')]||null:null})[_0xbc28('0x10')](function(_0x2f8ae3){logger['info'](_0xbc28('0x1d'),_0x211cd2);logger['info']('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xbc28('0x14')](_0x211cd2[_0xbc28('0x8')]['where']),_0x211cd2[_0xbc28('0x1f')][_0xbc28('0x20')]);logger[_0xbc28('0x13')](_0xbc28('0x1d'),_0x211cd2,JSON['stringify'](_0x2f8ae3));_0x2fc05e(_0x2f8ae3);})[_0xbc28('0x15')](function(_0x2f1693){logger[_0xbc28('0x16')](_0xbc28('0x1d'),_0x2f1693[_0xbc28('0x17')],_0x211cd2);_0x3bad10(_0x391e41[_0xbc28('0x16')](0x1f4,_0x2f1693['message']));});});};exports[_0xbc28('0x21')]=function(_0x825539){var _0x1958f8=this;return new Promise(function(_0x456361,_0x79581a){return db[_0xbc28('0x19')][_0xbc28('0x22')]({'where':_0x825539[_0xbc28('0x8')]?_0x825539[_0xbc28('0x8')][_0xbc28('0xa')]||null:null})[_0xbc28('0x10')](function(_0x132fe2){logger['info'](_0xbc28('0x21'),_0x825539);logger[_0xbc28('0x13')](_0xbc28('0x21'),_0x825539,JSON[_0xbc28('0x14')](_0x132fe2));_0x456361(_0x132fe2);})['catch'](function(_0x5c50f9){logger[_0xbc28('0x16')](_0xbc28('0x21'),_0x5c50f9[_0xbc28('0x17')],_0x825539);_0x79581a(_0x1958f8['error'](0x1f4,_0x5c50f9[_0xbc28('0x17')]));});});};exports['GetContactDialer']=function(_0x5033b9){var _0x5bea82=this;return new Promise(function(_0x5bedb3,_0x4dc3df){return db[_0xbc28('0x23')]['describe']()[_0xbc28('0x10')](function(_0x5455a3){return db[_0xbc28('0x24')]['transaction'](function(_0x2204d3){return db['CmHopper']['findAll']({'where':_0x5033b9[_0xbc28('0x8')]?_0x5033b9[_0xbc28('0x8')][_0xbc28('0xa')]||null:null,'attributes':_0x5033b9[_0xbc28('0x8')]?_0x5033b9[_0xbc28('0x8')][_0xbc28('0xb')]||null:null,'limit':_0x5033b9[_0xbc28('0x8')]?_0x5033b9[_0xbc28('0x8')][_0xbc28('0xc')]||null:null,'order':_0x5033b9[_0xbc28('0x8')]?_0x5033b9[_0xbc28('0x8')]['order']||null:null,'transaction':_0x2204d3,'lock':_0x2204d3[_0xbc28('0x25')][_0xbc28('0x26')],'include':[{'model':db[_0xbc28('0x23')],'as':'Contact','attributes':_[_0xbc28('0x27')](_0x5455a3)},{'model':db[_0xbc28('0x28')],'as':_0xbc28('0x29'),'attributes':['id','name',_0xbc28('0x2a')]}]})[_0xbc28('0x10')](function(_0x575004){var _0x537d34=[];var _0x3e8931=[];for(var _0x54dcb7=0x0;_0x54dcb7<_0x575004[_0xbc28('0x2b')];_0x54dcb7+=0x1){var _0x1d840b=_0x575004[_0x54dcb7][_0xbc28('0x2c')];if(_0x1d840b===null){_0x537d34[_0xbc28('0x2d')](_0x575004[_0x54dcb7][_0xbc28('0x1e')](_0x5033b9['body'],{'transaction':_0x2204d3}));}else if(!_0x3e8931[_0xbc28('0x2e')](_0x1d840b)){_0x3e8931[_0xbc28('0x2d')](_0x1d840b);_0x537d34[_0xbc28('0x2d')](_0x575004[_0x54dcb7][_0xbc28('0x1e')](_0x5033b9[_0xbc28('0x1f')],{'transaction':_0x2204d3}));}}return BPromise['all'](_0x537d34);});})[_0xbc28('0x10')](function(_0x224dc8){logger[_0xbc28('0x11')]('GetContactDialer',_0x5033b9);if(_0x224dc8['length']>0x0){logger['info'](_0xbc28('0x2f'),_0x224dc8[0x0][_0xbc28('0x30')]['id'],_0x224dc8[0x0][_0xbc28('0x30')][_0xbc28('0x31')],_0x224dc8[0x0][_0xbc28('0x30')][_0xbc28('0x20')]);}logger[_0xbc28('0x13')](_0xbc28('0x32'),_0x5033b9,JSON[_0xbc28('0x14')](_0x224dc8));_0x5bedb3(_0x224dc8);})[_0xbc28('0x15')](function(_0x10a1ae){logger[_0xbc28('0x16')](_0xbc28('0x32'),_0x10a1ae['message'],_0x5033b9);_0x4dc3df(_0x5bea82[_0xbc28('0x16')](0x1f4,_0x10a1ae[_0xbc28('0x17')]));});});});};exports[_0xbc28('0x33')]=function(_0x538f43){var _0x41dcf8=this;return new Promise(function(_0x279c18,_0x4955a1){return db['sequelize']['transaction'](function(_0xb322a3){return db['CmHopperFinal']['create'](_0x538f43[_0xbc28('0x1f')],{'raw':_0x538f43['options']?_0x538f43[_0xbc28('0x8')]['raw']===undefined?!![]:![]:!![],'transaction':_0xb322a3})[_0xbc28('0x10')](function(){logger[_0xbc28('0x11')](_0xbc28('0x34'),JSON['stringify'](_0x538f43[_0xbc28('0x8')][_0xbc28('0xa')]),_0x538f43[_0xbc28('0x8')][_0xbc28('0xa')]['active']);return db['CmHopper']['destroy']({'where':_0x538f43[_0xbc28('0x8')]?_0x538f43['options'][_0xbc28('0xa')]||null:null,'transaction':_0xb322a3});});})['then'](function(_0x52ceef){logger[_0xbc28('0x11')](_0xbc28('0x33'),_0x538f43);logger[_0xbc28('0x13')](_0xbc28('0x33'),_0x538f43,JSON['stringify'](_0x52ceef));_0x279c18(_0x52ceef);})[_0xbc28('0x15')](function(_0x5e4429){logger['error'](_0xbc28('0x33'),_0x5e4429['message'],_0x538f43);_0x4955a1(_0x41dcf8['error'](0x1f4,_0x5e4429[_0xbc28('0x17')]));});});};exports[_0xbc28('0x35')]=function(_0x10a30e){var _0x1a274b=this;return new Promise(function(_0x8b99b0,_0x29d250){return db[_0xbc28('0x19')]['findAll']({'raw':_0x10a30e['options']?_0x10a30e['options'][_0xbc28('0x9')]===undefined?!![]:![]:!![],'where':_0x10a30e['options']?_0x10a30e[_0xbc28('0x8')][_0xbc28('0xa')]||null:null,'attributes':[[db['sequelize']['fn'](_0xbc28('0x36'),db['sequelize']['fn']('IF',db[_0xbc28('0x24')]['literal'](_0xbc28('0x37')+util[_0xbc28('0x38')](_0xbc28('0x39'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'))+_0xbc28('0x3a')))),_0xbc28('0x3b')]]})['then'](function(_0x51abb1){logger[_0xbc28('0x11')](_0xbc28('0x35'),_0x10a30e);logger[_0xbc28('0x13')]('CountReScheduled',_0x10a30e,JSON[_0xbc28('0x14')](_0x51abb1));_0x8b99b0(_0x51abb1);})[_0xbc28('0x15')](function(_0x203293){logger[_0xbc28('0x16')](_0xbc28('0x35'),_0x203293[_0xbc28('0x17')],_0x10a30e);_0x29d250(_0x1a274b[_0xbc28('0x16')](0x1f4,_0x203293[_0xbc28('0x17')]));});});};exports['GetContactRecallMe']=function(_0x16ee06){var _0x5168e3=this;return new Promise(function(_0x19051e,_0x7e03e1){return db[_0xbc28('0x23')]['describe']()[_0xbc28('0x10')](function(){return db['sequelize'][_0xbc28('0x3c')](function(_0x14685a){return db[_0xbc28('0x19')]['findAll']({'where':_0x16ee06['options']?_0x16ee06[_0xbc28('0x8')][_0xbc28('0xa')]||null:null,'attributes':_0x16ee06[_0xbc28('0x8')]?_0x16ee06[_0xbc28('0x8')][_0xbc28('0xb')]||null:null,'limit':0x1,'order':_0x16ee06[_0xbc28('0x8')]?_0x16ee06[_0xbc28('0x8')][_0xbc28('0x3d')]||null:null,'group':db[_0xbc28('0x19')][_0xbc28('0x2c')],'transaction':_0x14685a,'lock':_0x14685a[_0xbc28('0x25')][_0xbc28('0x26')],'include':_0x16ee06[_0xbc28('0x8')]?_0x16ee06[_0xbc28('0x8')][_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x16ee06[_0xbc28('0x8')][_0xbc28('0xd')],function(_0x84188d){return{'model':db[_0x84188d['model']],'as':_0x84188d['as'],'attributes':_0x84188d['attributes'],'include':_0x84188d['include']?_[_0xbc28('0xe')](_0x84188d[_0xbc28('0xd')],function(_0xbb582c){return{'model':db[_0xbb582c['model']],'as':_0xbb582c['as'],'attributes':_0xbb582c[_0xbc28('0xb')],'include':_0xbb582c[_0xbc28('0xd')]?_[_0xbc28('0xe')](_0xbb582c['include'],function(_0x331610){return{'model':db[_0x331610['model']],'as':_0x331610['as'],'attributes':_0x331610[_0xbc28('0xb')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2644a3){var _0x5013c6=[];for(var _0x667652=0x0;_0x667652<_0x2644a3[_0xbc28('0x2b')];_0x667652+=0x1){_0x5013c6[_0xbc28('0x2d')](_0x2644a3[_0x667652][_0xbc28('0x1e')](_0x16ee06[_0xbc28('0x1f')],{'transaction':_0x14685a}));}return BPromise['all'](_0x5013c6);});})[_0xbc28('0x10')](function(_0x4d4bb0){logger['info']('GetContactRecallMe',_0x16ee06);logger[_0xbc28('0x13')](_0xbc28('0x3e'),_0x16ee06,JSON[_0xbc28('0x14')](_0x4d4bb0));_0x19051e(_0x4d4bb0);})[_0xbc28('0x15')](function(_0x557d7f){logger['error']('GetContactRecallMe',_0x557d7f[_0xbc28('0x17')],_0x16ee06);_0x7e03e1(_0x5168e3[_0xbc28('0x16')](0x1f4,_0x557d7f[_0xbc28('0x17')]));});});});};exports[_0xbc28('0x3f')]=function(_0x351fc1){var _0x400e54=this;return new Promise(function(_0x4f2c60,_0x1909d0){db['CmContact'][_0xbc28('0x40')]()[_0xbc28('0x10')](function(_0xb84202){return db[_0xbc28('0x19')][_0xbc28('0x7')]({'raw':_0x351fc1['options']?_0x351fc1[_0xbc28('0x8')][_0xbc28('0x9')]===undefined?!![]:![]:!![],'where':_0x351fc1[_0xbc28('0x8')]?_0x351fc1[_0xbc28('0x8')][_0xbc28('0xa')]||null:null,'attributes':_0x351fc1[_0xbc28('0x8')]?_0x351fc1['options']['attributes']||null:null,'limit':_0x351fc1['options']?_0x351fc1[_0xbc28('0x8')][_0xbc28('0xc')]||null:null,'include':_0x351fc1[_0xbc28('0x8')]?_0x351fc1['options'][_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x351fc1['options'][_0xbc28('0xd')],function(_0x1c7a18){return{'model':db[_0x1c7a18['model']],'as':_0x1c7a18['as'],'attributes':_0x1c7a18['as']===_0xbc28('0x41')?_[_0xbc28('0x27')](_0xb84202):_0x1c7a18[_0xbc28('0xb')],'include':_0x1c7a18[_0xbc28('0xd')]?_[_0xbc28('0xe')](_0x1c7a18['include'],function(_0x2ed734){return{'model':db[_0x2ed734[_0xbc28('0xf')]],'as':_0x2ed734['as'],'attributes':_0x2ed734['attributes'],'include':_0x2ed734['include']?_[_0xbc28('0xe')](_0x2ed734[_0xbc28('0xd')],function(_0x58dadd){return{'model':db[_0x58dadd[_0xbc28('0xf')]],'as':_0x58dadd['as'],'attributes':_0x58dadd[_0xbc28('0xb')]};}):[]};}):[]};}):[]:[]})[_0xbc28('0x10')](function(_0x320fcc){logger['info'](_0xbc28('0x12'),_0x351fc1);logger[_0xbc28('0x13')]('GetCmHopper',_0x351fc1,JSON[_0xbc28('0x14')](_0x320fcc));_0x4f2c60(_0x320fcc);})['catch'](function(_0x9a37ad){logger[_0xbc28('0x16')](_0xbc28('0x12'),_0x9a37ad[_0xbc28('0x17')],_0x351fc1);_0x1909d0(_0x400e54[_0xbc28('0x16')](0x1f4,_0x9a37ad[_0xbc28('0x17')]));});});});};exports[_0xbc28('0x42')]=function(_0x4eb239){var _0x4c1cc1=this;return new Promise(function(_0x5017c0,_0x393bb5){return db[_0xbc28('0x23')][_0xbc28('0x43')]({'raw':!![],'where':{'phone':_0x4eb239[_0xbc28('0x8')][_0xbc28('0xa')][_0xbc28('0x44')]},'attributes':['id',_0xbc28('0x45')],'order':[['id',_0xbc28('0x46')]]})['then'](function(_0x1ad0b5){logger['info']('getContactByPhone',_0x4eb239);logger[_0xbc28('0x13')]('getContactByPhone',_0x4eb239,JSON[_0xbc28('0x14')](_0x1ad0b5));_0x5017c0(_0x1ad0b5);})[_0xbc28('0x15')](function(_0x177390){logger['error'](_0xbc28('0x47'),_0x177390[_0xbc28('0x17')],_0x4eb239);_0x393bb5(_0x4c1cc1[_0xbc28('0x16')](0x1f4,_0x177390[_0xbc28('0x17')]));});});};exports[_0xbc28('0x48')]=function(_0x2918f4){var _0x5c6d17=this;return new Promise(function(_0x3c3d83,_0x335bfd){return db[_0xbc28('0x24')][_0xbc28('0x3c')](function(_0x2cf53b){var _0x40c9fc=_0x2918f4[_0xbc28('0x8')]&&_0x2918f4[_0xbc28('0x8')][_0xbc28('0xa')]?_0x2918f4[_0xbc28('0x8')]['where']:{};return db[_0xbc28('0x19')][_0xbc28('0x1e')](_0x2918f4[_0xbc28('0x1f')],{'where':_0x40c9fc,'transaction':_0x2cf53b})[_0xbc28('0x10')](function(_0x23b249){logger[_0xbc28('0x11')](_0xbc28('0x48'),_0x2918f4);logger[_0xbc28('0x13')](_0xbc28('0x48'),_0x2918f4,JSON['stringify'](_0x23b249));_0x3c3d83(_0x23b249);})[_0xbc28('0x15')](function(_0x1aa2c7){logger[_0xbc28('0x16')]('ResetActiveCalls',_0x1aa2c7[_0xbc28('0x17')],_0x2918f4);_0x335bfd(_0x5c6d17[_0xbc28('0x16')](0x1f4,_0x1aa2c7[_0xbc28('0x17')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x35cd18){var _0x20e0c9=this;var _0x4f169f=_0x35cd18[_0xbc28('0x1f')][_0xbc28('0xa')][_0xbc28('0x49')];var _0x2f47e8=_0x35cd18[_0xbc28('0x1f')][_0xbc28('0xa')][_0xbc28('0x4a')];var _0x5b7b60=_0x35cd18[_0xbc28('0x1f')][_0xbc28('0xa')]['availableAgentsIds'];return new Promise(function(_0x5c7327,_0x4c38d1){return db[_0xbc28('0x19')][_0xbc28('0x7')]({'where':{'voiceQueueId':{'$in':_0x4f169f},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0xbc28('0x4b')](_0xbc28('0x4c')+_0x2f47e8+_0xbc28('0x4d')),'$gt':db[_0xbc28('0x24')][_0xbc28('0x4b')]('NOW()')}},'UserId':{'$in':_0x5b7b60}},'include':[{'model':db[_0xbc28('0x23')],'as':_0xbc28('0x41')},{'model':db[_0xbc28('0x28')],'as':_0xbc28('0x29'),'attributes':['id',_0xbc28('0x4e'),_0xbc28('0x2a')]},{'model':db['CmList'],'as':_0xbc28('0x4f')}]})[_0xbc28('0x10')](function(_0x34711f){if(_0x34711f[_0xbc28('0x2b')]>0x0){return db['sequelize']['transaction'](function(_0x19b635){return db['CmHopper'][_0xbc28('0x1e')]({'recallmeNotifiedDate':db[_0xbc28('0x24')][_0xbc28('0x4b')]('NOW()')},{'where':{'id':{'$in':_['map'](_0x34711f,'id')}},'transaction':_0x19b635})[_0xbc28('0x10')](function(){_0x5c7327(_0x34711f);})[_0xbc28('0x15')](function(_0x1c309e){logger[_0xbc28('0x16')](_0xbc28('0x50'),_0x1c309e[_0xbc28('0x17')],_0x35cd18);_0x4c38d1(_0x20e0c9[_0xbc28('0x16')](0x1f4,_0x1c309e[_0xbc28('0x17')]));});})[_0xbc28('0x15')](function(_0xbdfc5d){logger[_0xbc28('0x16')](_0xbc28('0x50'),_0xbdfc5d[_0xbc28('0x17')],_0x35cd18);_0x4c38d1(_0x20e0c9['error'](0x1f4,_0xbdfc5d['message']));});}else{_0x5c7327(_0x34711f);}});});}; \ No newline at end of file diff --git a/server/api/cmHopper/index.js b/server/api/cmHopper/index.js new file mode 100644 index 0000000..66b8b92 --- /dev/null +++ b/server/api/cmHopper/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xaf11=['getPreviewRecall','post','create','/preview','getPreview','/timezone','getTimezone','put','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','index','get','/describe','describe','getOpenContacts','/timezones','/:id','show','/:id/previewrecall'];(function(_0x55006e,_0x49c1f9){var _0x507a85=function(_0x549386){while(--_0x549386){_0x55006e['push'](_0x55006e['shift']());}};_0x507a85(++_0x49c1f9);}(_0xaf11,0x7d));var _0x1af1=function(_0x3152f0,_0x3cb3e0){_0x3152f0=_0x3152f0-0x0;var _0x3d0e49=_0xaf11[_0x3152f0];return _0x3d0e49;};'use strict';var express=require(_0x1af1('0x0'));var router=express[_0x1af1('0x1')]();var auth=require(_0x1af1('0x2'));var controller=require('./cmHopper.controller');router['get']('/',auth[_0x1af1('0x3')](),controller[_0x1af1('0x4')]);router[_0x1af1('0x5')](_0x1af1('0x6'),auth[_0x1af1('0x3')](),controller[_0x1af1('0x7')]);router[_0x1af1('0x5')]('/opencontacts',auth['isAuthenticated'](),controller[_0x1af1('0x8')]);router[_0x1af1('0x5')](_0x1af1('0x9'),auth[_0x1af1('0x3')](),controller['getTimezones']);router[_0x1af1('0x5')](_0x1af1('0xa'),auth[_0x1af1('0x3')](),controller[_0x1af1('0xb')]);router['get'](_0x1af1('0xc'),auth[_0x1af1('0x3')](),controller[_0x1af1('0xd')]);router[_0x1af1('0xe')]('/',auth['isAuthenticated'](),controller[_0x1af1('0xf')]);router[_0x1af1('0xe')](_0x1af1('0x10'),auth[_0x1af1('0x3')](),controller[_0x1af1('0x11')]);router[_0x1af1('0xe')](_0x1af1('0x12'),auth[_0x1af1('0x3')](),controller[_0x1af1('0x13')]);router[_0x1af1('0x14')](_0x1af1('0xa'),auth[_0x1af1('0x3')](),controller['update']);router['delete'](_0x1af1('0xa'),auth[_0x1af1('0x3')](),controller[_0x1af1('0x15')]);module[_0x1af1('0x16')]=router; \ No newline at end of file diff --git a/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js new file mode 100644 index 0000000..4d11a03 --- /dev/null +++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1c31=['INTEGER','STRING','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports'];(function(_0x442661,_0x759662){var _0x529b61=function(_0x17c5a8){while(--_0x17c5a8){_0x442661['push'](_0x442661['shift']());}};_0x529b61(++_0x759662);}(_0x1c31,0x1ee));var _0x11c3=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1c31[_0x502c7d];return _0x30b7ed;};'use strict';var moment=require(_0x11c3('0x0'));var Sequelize=require(_0x11c3('0x1'));module[_0x11c3('0x2')]={'CmHopperId':{'type':Sequelize[_0x11c3('0x3')]},'phone':{'type':Sequelize[_0x11c3('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x11c3('0x5')](_0x11c3('0x6'))},'countbusyretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x11c3('0x3')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js new file mode 100644 index 0000000..e640d62 --- /dev/null +++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7258=['apply','reject','save','update','then','destroy','CmHopperAdditionalPhones','UserProfileResource','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','catch','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','json'];(function(_0x56930f,_0x978287){var _0x1e32ca=function(_0x1cdb91){while(--_0x1cdb91){_0x56930f['push'](_0x56930f['shift']());}};_0x1e32ca(++_0x978287);}(_0x7258,0xd7));var _0x8725=function(_0xae4dcb,_0x301073){_0xae4dcb=_0xae4dcb-0x0;var _0x5afccb=_0x7258[_0xae4dcb];return _0x5afccb;};'use strict';var emlformat=require(_0x8725('0x0'));var rimraf=require(_0x8725('0x1'));var zipdir=require(_0x8725('0x2'));var jsonpatch=require(_0x8725('0x3'));var rp=require('request-promise');var moment=require(_0x8725('0x4'));var BPromise=require(_0x8725('0x5'));var Mustache=require(_0x8725('0x6'));var util=require(_0x8725('0x7'));var path=require(_0x8725('0x8'));var sox=require(_0x8725('0x9'));var csv=require('to-csv');var ejs=require(_0x8725('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8725('0xb'));var squel=require('squel');var crypto=require(_0x8725('0xc'));var jsforce=require(_0x8725('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8725('0xe'));var querystring=require(_0x8725('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8725('0x10'));var qs=require(_0x8725('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8725('0x12'));var logger=require(_0x8725('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x8725('0x14'));var licenseUtil=require(_0x8725('0x15'));var db=require(_0x8725('0x16'))['db'];function respondWithStatusCode(_0x1caa49,_0x3577f9){_0x3577f9=_0x3577f9||0xcc;return function(_0x2aa5b6){if(_0x2aa5b6){return _0x1caa49[_0x8725('0x17')](_0x3577f9);}return _0x1caa49[_0x8725('0x18')](_0x3577f9)[_0x8725('0x19')]();};}function respondWithResult(_0x48d16f,_0x472c5d){_0x472c5d=_0x472c5d||0xc8;return function(_0xb57340){if(_0xb57340){return _0x48d16f[_0x8725('0x18')](_0x472c5d)['json'](_0xb57340);}};}function respondWithFilteredResult(_0x4715c7,_0x4cbf70){return function(_0x2d11de){if(_0x2d11de){var _0x1ce73f=typeof _0x4cbf70['offset']===_0x8725('0x1a')&&typeof _0x4cbf70[_0x8725('0x1b')]===_0x8725('0x1a');var _0x5621a4=_0x2d11de['count'];var _0x2e9e36=_0x1ce73f?0x0:_0x4cbf70[_0x8725('0x1c')];var _0x4ba158=_0x1ce73f?_0x2d11de[_0x8725('0x1d')]:_0x4cbf70[_0x8725('0x1c')]+_0x4cbf70['limit'];var _0x4f5b96;if(_0x4ba158>=_0x5621a4){_0x4ba158=_0x5621a4;_0x4f5b96=0xc8;}else{_0x4f5b96=0xce;}_0x4715c7[_0x8725('0x18')](_0x4f5b96);return _0x4715c7['set']('Content-Range',_0x2e9e36+'-'+_0x4ba158+'/'+_0x5621a4)[_0x8725('0x1e')](_0x2d11de);}return null;};}function patchUpdates(_0x2c7808){return function(_0x2c8363){try{jsonpatch[_0x8725('0x1f')](_0x2c8363,_0x2c7808,!![]);}catch(_0xdb673c){return BPromise[_0x8725('0x20')](_0xdb673c);}return _0x2c8363[_0x8725('0x21')]();};}function saveUpdates(_0xf6572f,_0x1acf21){return function(_0x3b6004){if(_0x3b6004){return _0x3b6004[_0x8725('0x22')](_0xf6572f)[_0x8725('0x23')](function(_0x311631){return _0x311631;});}return null;};}function removeEntity(_0x2ae6a5,_0x3535f5){return function(_0x83deeb){if(_0x83deeb){return _0x83deeb[_0x8725('0x24')]()[_0x8725('0x23')](function(){var _0x555c26=_0x83deeb['get']({'plain':!![]});var _0x58496e=_0x8725('0x25');return db[_0x8725('0x26')][_0x8725('0x24')]({'where':{'type':_0x58496e,'resourceId':_0x555c26['id']}})[_0x8725('0x23')](function(){return _0x83deeb;});})[_0x8725('0x23')](function(){_0x2ae6a5['status'](0xcc)[_0x8725('0x19')]();});}};}function handleEntityNotFound(_0x50c24f,_0x19b273){return function(_0x619813){if(!_0x619813){_0x50c24f[_0x8725('0x17')](0x194);}return _0x619813;};}function handleError(_0x548c7d,_0x2bcc3a){_0x2bcc3a=_0x2bcc3a||0x1f4;return function(_0x3cca66){logger[_0x8725('0x27')](_0x3cca66[_0x8725('0x28')]);if(_0x3cca66['name']){delete _0x3cca66[_0x8725('0x29')];}_0x548c7d['status'](_0x2bcc3a)[_0x8725('0x2a')](_0x3cca66);};}exports[_0x8725('0x2b')]=function(_0x4861d5,_0x14468a){var _0x5c0d17={},_0x3f3dab={},_0x42772a={'count':0x0,'rows':[]};var _0xe3f73=_[_0x8725('0x2c')](db[_0x8725('0x2d')][_0x8725('0x2e')],function(_0xd1158f){return{'name':_0xd1158f[_0x8725('0x2f')],'type':_0xd1158f[_0x8725('0x30')]['key']};});_0x3f3dab[_0x8725('0x31')]=_[_0x8725('0x2c')](_0xe3f73,_0x8725('0x29'));_0x3f3dab[_0x8725('0x32')]=_[_0x8725('0x33')](_0x4861d5[_0x8725('0x32')]);_0x3f3dab[_0x8725('0x34')]=_[_0x8725('0x35')](_0x3f3dab[_0x8725('0x31')],_0x3f3dab[_0x8725('0x32')]);_0x5c0d17[_0x8725('0x36')]=_[_0x8725('0x35')](_0x3f3dab[_0x8725('0x31')],qs['fields'](_0x4861d5['query'][_0x8725('0x37')]));_0x5c0d17[_0x8725('0x36')]=_0x5c0d17[_0x8725('0x36')][_0x8725('0x38')]?_0x5c0d17[_0x8725('0x36')]:_0x3f3dab[_0x8725('0x31')];if(!_0x4861d5[_0x8725('0x32')][_0x8725('0x39')](_0x8725('0x3a'))){_0x5c0d17['limit']=qs['limit'](_0x4861d5[_0x8725('0x32')]['limit']);_0x5c0d17[_0x8725('0x1c')]=qs['offset'](_0x4861d5[_0x8725('0x32')]['offset']);}_0x5c0d17[_0x8725('0x3b')]=qs[_0x8725('0x3c')](_0x4861d5[_0x8725('0x32')][_0x8725('0x3c')]);_0x5c0d17[_0x8725('0x3d')]=qs[_0x8725('0x34')](_[_0x8725('0x3e')](_0x4861d5['query'],_0x3f3dab[_0x8725('0x34')]),_0xe3f73);if(_0x4861d5[_0x8725('0x32')][_0x8725('0x3f')]){_0x5c0d17['where']=_[_0x8725('0x40')](_0x5c0d17[_0x8725('0x3d')],{'$or':_[_0x8725('0x2c')](_0xe3f73,function(_0xca0b1){if(_0xca0b1[_0x8725('0x30')]!=='VIRTUAL'){var _0x270e02={};_0x270e02[_0xca0b1[_0x8725('0x29')]]={'$like':'%'+_0x4861d5['query']['filter']+'%'};return _0x270e02;}})});}_0x5c0d17=_[_0x8725('0x40')]({},_0x5c0d17,_0x4861d5[_0x8725('0x41')]);var _0x11befd={'where':_0x5c0d17[_0x8725('0x3d')]};return db[_0x8725('0x2d')][_0x8725('0x1d')](_0x11befd)[_0x8725('0x23')](function(_0x5dee10){_0x42772a['count']=_0x5dee10;if(_0x4861d5[_0x8725('0x32')][_0x8725('0x42')]){_0x5c0d17[_0x8725('0x43')]=[{'all':!![]}];}return db[_0x8725('0x2d')][_0x8725('0x44')](_0x5c0d17);})[_0x8725('0x23')](function(_0x2a860b){_0x42772a[_0x8725('0x45')]=_0x2a860b;return _0x42772a;})[_0x8725('0x23')](respondWithFilteredResult(_0x14468a,_0x5c0d17))['catch'](handleError(_0x14468a,null));};exports[_0x8725('0x46')]=function(_0x2c2562,_0xdb4f81){var _0x1f9e34={'raw':!![],'where':{'id':_0x2c2562['params']['id']}},_0x5b8b2a={};_0x5b8b2a[_0x8725('0x31')]=_['keys'](db['CmHopperAdditionalPhone'][_0x8725('0x2e')]);_0x5b8b2a['query']=_['keys'](_0x2c2562[_0x8725('0x32')]);_0x5b8b2a['filters']=_['intersection'](_0x5b8b2a['model'],_0x5b8b2a[_0x8725('0x32')]);_0x1f9e34[_0x8725('0x36')]=_[_0x8725('0x35')](_0x5b8b2a[_0x8725('0x31')],qs[_0x8725('0x37')](_0x2c2562[_0x8725('0x32')][_0x8725('0x37')]));_0x1f9e34[_0x8725('0x36')]=_0x1f9e34[_0x8725('0x36')]['length']?_0x1f9e34[_0x8725('0x36')]:_0x5b8b2a['model'];if(_0x2c2562[_0x8725('0x32')][_0x8725('0x42')]){_0x1f9e34[_0x8725('0x43')]=[{'all':!![]}];}_0x1f9e34=_[_0x8725('0x40')]({},_0x1f9e34,_0x2c2562[_0x8725('0x41')]);return db[_0x8725('0x2d')][_0x8725('0x47')](_0x1f9e34)['then'](handleEntityNotFound(_0xdb4f81,null))[_0x8725('0x23')](respondWithResult(_0xdb4f81,null))['catch'](handleError(_0xdb4f81,null));};exports[_0x8725('0x48')]=function(_0x483d40,_0x122561){return db[_0x8725('0x2d')][_0x8725('0x48')](_0x483d40[_0x8725('0x49')],{})[_0x8725('0x23')](function(_0x141b4c){var _0xcad5ac=_0x483d40[_0x8725('0x4a')][_0x8725('0x4b')]({'plain':!![]});if(!_0xcad5ac)throw new Error(_0x8725('0x4c'));if(_0xcad5ac[_0x8725('0x4d')]===_0x8725('0x4a')){var _0x5936a1=_0x141b4c[_0x8725('0x4b')]({'plain':!![]});var _0x18998f='CmHopperAdditionalPhones';return db[_0x8725('0x4e')]['find']({'where':{'name':_0x18998f,'userProfileId':_0xcad5ac['userProfileId']},'raw':!![]})[_0x8725('0x23')](function(_0x2fb20b){if(_0x2fb20b&&_0x2fb20b[_0x8725('0x4f')]===0x0){return db['UserProfileResource'][_0x8725('0x48')]({'name':_0x5936a1[_0x8725('0x29')],'resourceId':_0x5936a1['id'],'type':_0x2fb20b['name'],'sectionId':_0x2fb20b['id']},{})[_0x8725('0x23')](function(){return _0x141b4c;});}else{return _0x141b4c;}})[_0x8725('0x50')](function(_0x3b2ba9){logger[_0x8725('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b2ba9);throw _0x3b2ba9;});}return _0x141b4c;})[_0x8725('0x23')](respondWithResult(_0x122561,0xc9))[_0x8725('0x50')](handleError(_0x122561,null));};exports['update']=function(_0x543469,_0x2883e6){if(_0x543469[_0x8725('0x49')]['id']){delete _0x543469[_0x8725('0x49')]['id'];}return db[_0x8725('0x2d')][_0x8725('0x47')]({'where':{'id':_0x543469[_0x8725('0x51')]['id']}})['then'](handleEntityNotFound(_0x2883e6,null))['then'](saveUpdates(_0x543469[_0x8725('0x49')],null))[_0x8725('0x23')](respondWithResult(_0x2883e6,null))[_0x8725('0x50')](handleError(_0x2883e6,null));};exports['destroy']=function(_0x4a82cc,_0x8f14c3){return db[_0x8725('0x2d')][_0x8725('0x47')]({'where':{'id':_0x4a82cc[_0x8725('0x51')]['id']}})[_0x8725('0x23')](handleEntityNotFound(_0x8f14c3,null))[_0x8725('0x23')](removeEntity(_0x8f14c3,null))[_0x8725('0x50')](handleError(_0x8f14c3,null));}; \ No newline at end of file diff --git a/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js new file mode 100644 index 0000000..0c02572 --- /dev/null +++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x072c=['cm_hopper_additional_phones','lodash','api','moment','bluebird','request-promise','path','./cmHopperAdditionalPhone.attributes','define','CmHopperAdditionalPhone'];(function(_0x2d6c9c,_0x1ad5b0){var _0x157313=function(_0x584070){while(--_0x584070){_0x2d6c9c['push'](_0x2d6c9c['shift']());}};_0x157313(++_0x1ad5b0);}(_0x072c,0x10f));var _0xc072=function(_0xe18a3a,_0x405850){_0xe18a3a=_0xe18a3a-0x0;var _0x2d01d1=_0x072c[_0xe18a3a];return _0x2d01d1;};'use strict';var _=require(_0xc072('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc072('0x1'));var moment=require(_0xc072('0x2'));var BPromise=require(_0xc072('0x3'));var rp=require(_0xc072('0x4'));var fs=require('fs');var path=require(_0xc072('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc072('0x6'));module['exports']=function(_0x852f18,_0x2fdd9a){return _0x852f18[_0xc072('0x7')](_0xc072('0x8'),attributes,{'tableName':_0xc072('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js new file mode 100644 index 0000000..f44ae75 --- /dev/null +++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbef1=['IncrementPreviewCounters','field','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VerifyAdditionalPhones','CmHopper','findOne','ListId','body','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countbusyretry','catch','SwapAdditionalPhones','ContactId','duration','waitTime','isNil','scheduledat','minutes','add','phone','createdAt','updatedAt','transaction','update','activateAdditionalPhone'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xbef1,0x78));var _0x1bef=function(_0x109f4d,_0x39dabd){_0x109f4d=_0x109f4d-0x0;var _0x541706=_0xbef1[_0x109f4d];return _0x541706;};'use strict';var _=require(_0x1bef('0x0'));var util=require('util');var moment=require(_0x1bef('0x1'));var BPromise=require(_0x1bef('0x2'));var rs=require(_0x1bef('0x3'));var fs=require('fs');var Redis=require(_0x1bef('0x4'));var db=require(_0x1bef('0x5'))['db'];var utils=require(_0x1bef('0x6'));var logger=require(_0x1bef('0x7'))(_0x1bef('0x8'));var config=require(_0x1bef('0x9'));var jayson=require(_0x1bef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2e54bf,_0x484355,_0x224fc5){return new BPromise(function(_0x491c49,_0x348de9){return client[_0x1bef('0xb')](_0x2e54bf,_0x224fc5)[_0x1bef('0xc')](function(_0x3a59fb){logger[_0x1bef('0xd')](_0x1bef('0xe'),_0x484355,_0x1bef('0xf'));logger[_0x1bef('0x10')](_0x1bef('0x11'),_0x484355,'request\x20sent',JSON[_0x1bef('0x12')](_0x3a59fb));if(_0x3a59fb[_0x1bef('0x13')]){if(_0x3a59fb[_0x1bef('0x13')][_0x1bef('0x14')]===0x1f4){logger[_0x1bef('0x13')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x484355,_0x3a59fb['error']['message']);return _0x348de9(_0x3a59fb[_0x1bef('0x13')]['message']);}logger[_0x1bef('0x13')](_0x1bef('0xe'),_0x484355,_0x3a59fb['error'][_0x1bef('0x15')]);return _0x491c49(_0x3a59fb[_0x1bef('0x13')][_0x1bef('0x15')]);}else{logger[_0x1bef('0xd')](_0x1bef('0xe'),_0x484355,_0x1bef('0xf'));_0x491c49(_0x3a59fb['result']['message']);}})['catch'](function(_0x434db3){logger[_0x1bef('0x13')](_0x1bef('0xe'),_0x484355,_0x434db3);_0x348de9(_0x434db3);});});}exports[_0x1bef('0x16')]=function(_0x185585){var _0xfc4686=this;return new Promise(function(_0x3fde6c,_0x521e66){return db[_0x1bef('0x17')][_0x1bef('0x18')]({'raw':!![],'where':{'ContactId':_0x185585['body']['ContactId'],'ListId':_0x185585['body'][_0x1bef('0x19')],'VoiceQueueId':_0x185585[_0x1bef('0x1a')][_0x1bef('0x1b')]===undefined?null:_0x185585['body']['VoiceQueueId'],'CampaignId':_0x185585[_0x1bef('0x1a')][_0x1bef('0x1c')]===undefined?null:_0x185585[_0x1bef('0x1a')]['CampaignId']}})[_0x1bef('0xc')](function(_0x5960fb){if(_0x5960fb!=null){return db[_0x1bef('0x1d')][_0x1bef('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5960fb['id'],'OrderBy':{'$gt':_0x5960fb[_0x1bef('0x1e')]}},'order':[[_0x1bef('0x1e'),_0x1bef('0x1f')]]})[_0x1bef('0xc')](function(_0x1d7dd0){var _0x2d642f=0x0;if(_0x1d7dd0){if(_0x1d7dd0['countbusyretry']+_0x1d7dd0[_0x1bef('0x20')]+_0x1d7dd0[_0x1bef('0x21')]+_0x1d7dd0[_0x1bef('0x22')]+_0x1d7dd0[_0x1bef('0x23')]+_0x1d7dd0[_0x1bef('0x24')]+_0x1d7dd0[_0x1bef('0x25')]+_0x1d7dd0[_0x1bef('0x26')]<_0x185585[_0x1bef('0x27')][_0x1bef('0x28')])_0x2d642f=0x1;_0x3fde6c({'additional':_0x2d642f});}else{return db[_0x1bef('0x1d')][_0x1bef('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5960fb['id']},'order':[['OrderBy','ASC']]})[_0x1bef('0xc')](function(_0x56a6ff){var _0x47d995=0x0;if(_0x56a6ff){if(_0x56a6ff[_0x1bef('0x29')]+_0x56a6ff['countcongestionretry']+_0x56a6ff[_0x1bef('0x21')]+_0x56a6ff['countnosuchnumberretry']+_0x56a6ff[_0x1bef('0x23')]+_0x56a6ff[_0x1bef('0x24')]+_0x56a6ff[_0x1bef('0x25')]+_0x56a6ff[_0x1bef('0x26')]<_0x185585[_0x1bef('0x27')][_0x1bef('0x28')])_0x47d995=0x1;_0x3fde6c({'additional':_0x47d995});}else{_0x3fde6c({'additional':0x0});}})[_0x1bef('0x2a')](function(_0x15cd15){logger[_0x1bef('0x13')](_0x1bef('0x16'),_0x15cd15[_0x1bef('0x15')]);_0x521e66(_0xfc4686[_0x1bef('0x13')](0x1f4,_0x15cd15[_0x1bef('0x15')]));});}})[_0x1bef('0x2a')](function(_0x47e6dc){logger[_0x1bef('0x13')](_0x1bef('0x16'),_0x47e6dc['message']);_0x521e66(_0xfc4686[_0x1bef('0x13')](0x1f4,_0x47e6dc['message']));});}else _0x3fde6c({'additional':0x0});});});};exports[_0x1bef('0x2b')]=function(_0x26d810){var _0x56f0fa=this;return new Promise(function(_0x19fa9d,_0x3764a0){return db[_0x1bef('0x17')][_0x1bef('0x18')]({'raw':!![],'where':{'ContactId':_0x26d810[_0x1bef('0x1a')][_0x1bef('0x2c')],'ListId':_0x26d810['body'][_0x1bef('0x19')],'VoiceQueueId':_0x26d810[_0x1bef('0x1a')][_0x1bef('0x1b')]===undefined?null:_0x26d810[_0x1bef('0x1a')][_0x1bef('0x1b')],'CampaignId':_0x26d810[_0x1bef('0x1a')][_0x1bef('0x1c')]===undefined?null:_0x26d810['body'][_0x1bef('0x1c')]}})[_0x1bef('0xc')](function(_0xef510a){if(_0xef510a!=null){return db[_0x1bef('0x1d')][_0x1bef('0x18')]({'raw':!![],'where':{'CmHopperId':_0xef510a['id'],'OrderBy':{'$gte':_0xef510a[_0x1bef('0x1e')]}},'order':[[_0x1bef('0x1e'),_0x1bef('0x1f')]]})[_0x1bef('0xc')](function(_0x5c8512){if(_0x5c8512)return activateAdditionalPhone(_0xef510a,_0x26d810[_0x1bef('0x1a')],_0x5c8512,_0x26d810[_0x1bef('0x2d')],_0x26d810['waitTime'])[_0x1bef('0xc')](function(_0x178c81){_0x19fa9d(_0x178c81);});else{return db[_0x1bef('0x1d')][_0x1bef('0x18')]({'raw':!![],'where':{'CmHopperId':_0xef510a['id']},'order':[['OrderBy',_0x1bef('0x1f')]]})[_0x1bef('0xc')](function(_0x3c2eb5){if(_0x3c2eb5)return activateAdditionalPhone(_0xef510a,_0x26d810[_0x1bef('0x1a')],_0x3c2eb5,_0x26d810[_0x1bef('0x2d')],_0x26d810[_0x1bef('0x2e')])['then'](function(_0x45e5b7){_0x19fa9d(_0x45e5b7);});else{_0x19fa9d({'id':_0xef510a['id'],'phone':''});}})['catch'](function(_0x3fb28c){logger[_0x1bef('0x13')](_0x1bef('0x16'),_0x3fb28c[_0x1bef('0x15')]);_0x3764a0(_0x56f0fa['error'](0x1f4,_0x3fb28c['message']));});}})['catch'](function(_0x17865d){logger[_0x1bef('0x13')]('VerifyAdditionalPhones',_0x17865d[_0x1bef('0x15')]);_0x3764a0(_0x56f0fa['error'](0x1f4,_0x17865d[_0x1bef('0x15')]));});}else _0x19fa9d(0x1);});});};function activateAdditionalPhone(_0x2ed5b4,_0xe24bc,_0x342203,_0x55859e,_0x46efe4){return new Promise(function(_0x3b50bd,_0x666a61){var _0x4c240d;if(_[_0x1bef('0x2f')](_0x342203[_0x1bef('0x30')])){_0x342203[_0x1bef('0x30')]=moment();}if(moment()>moment(_0x342203[_0x1bef('0x30')])){_0x4c240d=moment()['add'](_0x46efe4||0x3,_0x1bef('0x31'));}else{if(_0x342203[_0x1bef('0x1e')]==0x0){_0x4c240d=moment(_0x342203[_0x1bef('0x30')]);}else{_0x4c240d=moment()[_0x1bef('0x32')](_0x46efe4||0x3,'minutes');}}if(_[_0x1bef('0x2f')](_0x4c240d)){_0x4c240d=moment()[_0x1bef('0x32')](_0x46efe4||0x3,_0x1bef('0x31'));}var _0x514d4a={'phone':_0x2ed5b4[_0x1bef('0x33')],'active':0x0,'OrderBy':_[_0x1bef('0x2f')](_0x2ed5b4[_0x1bef('0x1e')])?0x0:_0x2ed5b4[_0x1bef('0x1e')],'scheduledat':moment()[_0x1bef('0x32')](_0x55859e||0x1,_0x1bef('0x31')),'countbusyretry':_0xe24bc['countbusyretry'],'countcongestionretry':_0xe24bc['countcongestionretry'],'countnoanswerretry':_0xe24bc['countnoanswerretry'],'countnosuchnumberretry':_0xe24bc['countnosuchnumberretry'],'countdropretry':_0xe24bc[_0x1bef('0x23')],'countabandonedretry':_0xe24bc['countabandonedretry'],'countmachineretry':_0xe24bc[_0x1bef('0x25')],'countagentrejectretry':_0xe24bc['countagentrejectretry'],'createdAt':_0xe24bc[_0x1bef('0x34')],'updatedAt':_0xe24bc['updatedAt']};var _0x584ecc={'CmHopperId':_0x2ed5b4['id'],'phone':_0x342203[_0x1bef('0x33')],'active':0x0,'OrderBy':_['isNil'](_0x342203[_0x1bef('0x1e')])?0x0:_0x342203[_0x1bef('0x1e')],'scheduledat':_0x4c240d,'countbusyretry':_0x342203[_0x1bef('0x29')],'countcongestionretry':_0x342203[_0x1bef('0x20')],'countnoanswerretry':_0x342203[_0x1bef('0x21')],'countnosuchnumberretry':_0x342203[_0x1bef('0x22')],'countdropretry':_0x342203['countdropretry'],'countabandonedretry':_0x342203['countabandonedretry'],'countmachineretry':_0x342203[_0x1bef('0x25')],'countagentrejectretry':_0x342203[_0x1bef('0x26')],'createdAt':_0x342203[_0x1bef('0x34')],'updatedAt':_0x342203[_0x1bef('0x35')]};return db['sequelize'][_0x1bef('0x36')](function(_0x1daac0){return db[_0x1bef('0x1d')][_0x1bef('0x37')](_0x514d4a,{'where':{'id':_0x342203['id']}},{'transaction':_0x1daac0})[_0x1bef('0xc')](function(){return db[_0x1bef('0x17')][_0x1bef('0x37')](_0x584ecc,{'where':{'id':_0x2ed5b4['id']}},{'transaction':_0x1daac0});});})[_0x1bef('0xc')](function(_0x1faaae){_0x3b50bd({'id':_0x2ed5b4['id'],'phone':_0x342203[_0x1bef('0x33')]});})['catch'](function(_0x6a8daf){logger[_0x1bef('0x13')](_0x1bef('0x38'),_0x6a8daf[_0x1bef('0x15')]);_0x666a61({'error':_0x6a8daf[_0x1bef('0x15')]});});});}exports[_0x1bef('0x39')]=function(_0x4c25dc){var _0x3bbb78=this;return new Promise(function(_0x31153b,_0x2c1b92){return db[_0x1bef('0x17')][_0x1bef('0x37')](_0x4c25dc[_0x1bef('0x1a')][_0x1bef('0x3a')],{'where':{'id':_0x4c25dc[_0x1bef('0x1a')]['id']}})[_0x1bef('0xc')](function(_0x4f4574){_0x31153b(_0x4f4574);})[_0x1bef('0x2a')](function(_0x3bc96a){logger[_0x1bef('0x13')](_0x1bef('0x39'),_0x3bc96a['message']);_0x2c1b92(_0x3bbb78[_0x1bef('0x13')](0x1f4,_0x3bc96a['message']));});});}; \ No newline at end of file diff --git a/server/api/cmHopperAdditionalPhone/index.js b/server/api/cmHopperAdditionalPhone/index.js new file mode 100644 index 0000000..d13629a --- /dev/null +++ b/server/api/cmHopperAdditionalPhone/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x55f4=['create','put','delete','util','path','connect-timeout','Router','fs-extra','./cmHopperAdditionalPhone.controller','get','isAuthenticated','/:id','show','post'];(function(_0x5cead4,_0x95c854){var _0x25c561=function(_0x564dec){while(--_0x564dec){_0x5cead4['push'](_0x5cead4['shift']());}};_0x25c561(++_0x95c854);}(_0x55f4,0x129));var _0x455f=function(_0x2e01e6,_0x53731d){_0x2e01e6=_0x2e01e6-0x0;var _0x3f00dd=_0x55f4[_0x2e01e6];return _0x3f00dd;};'use strict';var multer=require('multer');var util=require(_0x455f('0x0'));var path=require(_0x455f('0x1'));var timeout=require(_0x455f('0x2'));var express=require('express');var router=express[_0x455f('0x3')]();var fs_extra=require(_0x455f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x455f('0x5'));router[_0x455f('0x6')]('/',auth[_0x455f('0x7')](),controller['index']);router['get'](_0x455f('0x8'),auth[_0x455f('0x7')](),controller[_0x455f('0x9')]);router[_0x455f('0xa')]('/',auth['isAuthenticated'](),controller[_0x455f('0xb')]);router[_0x455f('0xc')](_0x455f('0x8'),auth[_0x455f('0x7')](),controller['update']);router[_0x455f('0xd')](_0x455f('0x8'),auth[_0x455f('0x7')](),controller['destroy']);module['exports']=router; \ No newline at end of file diff --git a/server/api/cmHopperBlack/cmHopperBlack.attributes.js b/server/api/cmHopperBlack/cmHopperBlack.attributes.js new file mode 100644 index 0000000..07e0e61 --- /dev/null +++ b/server/api/cmHopperBlack/cmHopperBlack.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3b1c=['sequelize','exports','STRING','contactListQueue','INTEGER','moment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3b1c,0xe9));var _0xc3b1=function(_0x5d3de6,_0x2dfe87){_0x5d3de6=_0x5d3de6-0x0;var _0x55b331=_0x3b1c[_0x5d3de6];return _0x55b331;};'use strict';var moment=require(_0xc3b1('0x0'));var Sequelize=require(_0xc3b1('0x1'));module[_0xc3b1('0x2')]={'phone':{'type':Sequelize[_0xc3b1('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xc3b1('0x4')},'ListId':{'type':Sequelize[_0xc3b1('0x5')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0xc3b1('0x5')],'unique':_0xc3b1('0x4')}}; \ No newline at end of file diff --git a/server/api/cmHopperBlack/cmHopperBlack.controller.js b/server/api/cmHopperBlack/cmHopperBlack.controller.js new file mode 100644 index 0000000..e145807 --- /dev/null +++ b/server/api/cmHopperBlack/cmHopperBlack.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8c48=['Content-Range','apply','reject','save','update','error','stack','name','send','index','map','rawAttributes','type','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','CmHopperBlack','then','includeAll','findAll','rows','show','model','filters','include','options','find','catch','body','params','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../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','limit','set'];(function(_0x45411c,_0x424a3a){var _0x61af2d=function(_0x1ccadf){while(--_0x1ccadf){_0x45411c['push'](_0x45411c['shift']());}};_0x61af2d(++_0x424a3a);}(_0x8c48,0x7b));var _0x88c4=function(_0x28ad5b,_0x18078e){_0x28ad5b=_0x28ad5b-0x0;var _0x56f9b3=_0x8c48[_0x28ad5b];return _0x56f9b3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x88c4('0x0'));var zipdir=require(_0x88c4('0x1'));var jsonpatch=require(_0x88c4('0x2'));var rp=require(_0x88c4('0x3'));var moment=require(_0x88c4('0x4'));var BPromise=require(_0x88c4('0x5'));var Mustache=require(_0x88c4('0x6'));var util=require(_0x88c4('0x7'));var path=require('path');var sox=require(_0x88c4('0x8'));var csv=require(_0x88c4('0x9'));var ejs=require(_0x88c4('0xa'));var fs=require('fs');var fs_extra=require(_0x88c4('0xb'));var _=require(_0x88c4('0xc'));var squel=require(_0x88c4('0xd'));var crypto=require('crypto');var jsforce=require(_0x88c4('0xe'));var deskjs=require(_0x88c4('0xf'));var toCsv=require(_0x88c4('0x9'));var querystring=require('querystring');var Papa=require(_0x88c4('0x10'));var Redis=require(_0x88c4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x88c4('0x12'));var as=require(_0x88c4('0x13'));var hardwareService=require(_0x88c4('0x14'));var logger=require(_0x88c4('0x15'))(_0x88c4('0x16'));var utils=require(_0x88c4('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x88c4('0x18'));var db=require(_0x88c4('0x19'))['db'];function respondWithStatusCode(_0x1dc86c,_0x12e161){_0x12e161=_0x12e161||0xcc;return function(_0x5cf947){if(_0x5cf947){return _0x1dc86c[_0x88c4('0x1a')](_0x12e161);}return _0x1dc86c[_0x88c4('0x1b')](_0x12e161)[_0x88c4('0x1c')]();};}function respondWithResult(_0x3df3d3,_0x1c6677){_0x1c6677=_0x1c6677||0xc8;return function(_0x1076ca){if(_0x1076ca){return _0x3df3d3[_0x88c4('0x1b')](_0x1c6677)[_0x88c4('0x1d')](_0x1076ca);}};}function respondWithFilteredResult(_0x5ecd46,_0x105ac7){return function(_0x9d58cf){if(_0x9d58cf){var _0x2318ed=typeof _0x105ac7[_0x88c4('0x1e')]===_0x88c4('0x1f')&&typeof _0x105ac7['limit']==='undefined';var _0x2fbe46=_0x9d58cf[_0x88c4('0x20')];var _0x9d9511=_0x2318ed?0x0:_0x105ac7['offset'];var _0x796366=_0x2318ed?_0x9d58cf[_0x88c4('0x20')]:_0x105ac7[_0x88c4('0x1e')]+_0x105ac7[_0x88c4('0x21')];var _0x30049c;if(_0x796366>=_0x2fbe46){_0x796366=_0x2fbe46;_0x30049c=0xc8;}else{_0x30049c=0xce;}_0x5ecd46['status'](_0x30049c);return _0x5ecd46[_0x88c4('0x22')](_0x88c4('0x23'),_0x9d9511+'-'+_0x796366+'/'+_0x2fbe46)[_0x88c4('0x1d')](_0x9d58cf);}return null;};}function patchUpdates(_0x2738d3){return function(_0x3e7639){try{jsonpatch[_0x88c4('0x24')](_0x3e7639,_0x2738d3,!![]);}catch(_0x789cd){return BPromise[_0x88c4('0x25')](_0x789cd);}return _0x3e7639[_0x88c4('0x26')]();};}function saveUpdates(_0x5a573a,_0x2b0b86){return function(_0x47f072){if(_0x47f072){return _0x47f072[_0x88c4('0x27')](_0x5a573a)['then'](function(_0x32e35c){return _0x32e35c;});}return null;};}function removeEntity(_0x252143,_0x2e9324){return function(_0x5bc0b2){if(_0x5bc0b2){return _0x5bc0b2['destroy']()['then'](function(){_0x252143[_0x88c4('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x647e76,_0xbb2c87){return function(_0x123724){if(!_0x123724){_0x647e76[_0x88c4('0x1a')](0x194);}return _0x123724;};}function handleError(_0x524fd1,_0x37e81a){_0x37e81a=_0x37e81a||0x1f4;return function(_0x1a9f52){logger[_0x88c4('0x28')](_0x1a9f52[_0x88c4('0x29')]);if(_0x1a9f52[_0x88c4('0x2a')]){delete _0x1a9f52[_0x88c4('0x2a')];}_0x524fd1[_0x88c4('0x1b')](_0x37e81a)[_0x88c4('0x2b')](_0x1a9f52);};}exports[_0x88c4('0x2c')]=function(_0x3df699,_0x5cd194){var _0x26a979={},_0x5331a7={},_0xa356cd={'count':0x0,'rows':[]};var _0x35c11f=_[_0x88c4('0x2d')](db['CmHopperBlack'][_0x88c4('0x2e')],function(_0x1f9b9b){return{'name':_0x1f9b9b['fieldName'],'type':_0x1f9b9b[_0x88c4('0x2f')]['key']};});_0x5331a7['model']=_[_0x88c4('0x2d')](_0x35c11f,_0x88c4('0x2a'));_0x5331a7['query']=_[_0x88c4('0x30')](_0x3df699[_0x88c4('0x31')]);_0x5331a7['filters']=_[_0x88c4('0x32')](_0x5331a7['model'],_0x5331a7[_0x88c4('0x31')]);_0x26a979[_0x88c4('0x33')]=_[_0x88c4('0x32')](_0x5331a7['model'],qs[_0x88c4('0x34')](_0x3df699['query'][_0x88c4('0x34')]));_0x26a979[_0x88c4('0x33')]=_0x26a979[_0x88c4('0x33')][_0x88c4('0x35')]?_0x26a979[_0x88c4('0x33')]:_0x5331a7['model'];if(!_0x3df699[_0x88c4('0x31')][_0x88c4('0x36')](_0x88c4('0x37'))){_0x26a979['limit']=qs[_0x88c4('0x21')](_0x3df699[_0x88c4('0x31')][_0x88c4('0x21')]);_0x26a979[_0x88c4('0x1e')]=qs[_0x88c4('0x1e')](_0x3df699[_0x88c4('0x31')][_0x88c4('0x1e')]);}_0x26a979[_0x88c4('0x38')]=qs[_0x88c4('0x39')](_0x3df699['query'][_0x88c4('0x39')]);_0x26a979[_0x88c4('0x3a')]=qs['filters'](_[_0x88c4('0x3b')](_0x3df699[_0x88c4('0x31')],_0x5331a7['filters']),_0x35c11f);if(_0x3df699[_0x88c4('0x31')][_0x88c4('0x3c')]){_0x26a979['where']=_['merge'](_0x26a979[_0x88c4('0x3a')],{'$or':_[_0x88c4('0x2d')](_0x35c11f,function(_0x4cca19){if(_0x4cca19[_0x88c4('0x2f')]!==_0x88c4('0x3d')){var _0xba9273={};_0xba9273[_0x4cca19['name']]={'$like':'%'+_0x3df699['query'][_0x88c4('0x3c')]+'%'};return _0xba9273;}})});}_0x26a979=_[_0x88c4('0x3e')]({},_0x26a979,_0x3df699['options']);var _0x252ca1={'where':_0x26a979['where']};return db[_0x88c4('0x3f')][_0x88c4('0x20')](_0x252ca1)[_0x88c4('0x40')](function(_0x1f6810){_0xa356cd[_0x88c4('0x20')]=_0x1f6810;if(_0x3df699[_0x88c4('0x31')][_0x88c4('0x41')]){_0x26a979['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x88c4('0x42')](_0x26a979);})[_0x88c4('0x40')](function(_0x518bb6){_0xa356cd[_0x88c4('0x43')]=_0x518bb6;return _0xa356cd;})['then'](respondWithFilteredResult(_0x5cd194,_0x26a979))['catch'](handleError(_0x5cd194,null));};exports[_0x88c4('0x44')]=function(_0x17795a,_0x1798e1){var _0x26b2ad={'raw':!![],'where':{'id':_0x17795a['params']['id']}},_0x5306ec={};_0x5306ec[_0x88c4('0x45')]=_[_0x88c4('0x30')](db[_0x88c4('0x3f')]['rawAttributes']);_0x5306ec['query']=_['keys'](_0x17795a['query']);_0x5306ec[_0x88c4('0x46')]=_[_0x88c4('0x32')](_0x5306ec[_0x88c4('0x45')],_0x5306ec[_0x88c4('0x31')]);_0x26b2ad[_0x88c4('0x33')]=_[_0x88c4('0x32')](_0x5306ec['model'],qs[_0x88c4('0x34')](_0x17795a[_0x88c4('0x31')][_0x88c4('0x34')]));_0x26b2ad[_0x88c4('0x33')]=_0x26b2ad[_0x88c4('0x33')]['length']?_0x26b2ad[_0x88c4('0x33')]:_0x5306ec[_0x88c4('0x45')];if(_0x17795a[_0x88c4('0x31')][_0x88c4('0x41')]){_0x26b2ad[_0x88c4('0x47')]=[{'all':!![]}];}_0x26b2ad=_[_0x88c4('0x3e')]({},_0x26b2ad,_0x17795a[_0x88c4('0x48')]);return db[_0x88c4('0x3f')][_0x88c4('0x49')](_0x26b2ad)[_0x88c4('0x40')](handleEntityNotFound(_0x1798e1,null))[_0x88c4('0x40')](respondWithResult(_0x1798e1,null))[_0x88c4('0x4a')](handleError(_0x1798e1,null));};exports[_0x88c4('0x27')]=function(_0x1b46ad,_0x4d9cb0){if(_0x1b46ad[_0x88c4('0x4b')]['id']){delete _0x1b46ad[_0x88c4('0x4b')]['id'];}return db[_0x88c4('0x3f')][_0x88c4('0x49')]({'where':{'id':_0x1b46ad[_0x88c4('0x4c')]['id']}})[_0x88c4('0x40')](handleEntityNotFound(_0x4d9cb0,null))[_0x88c4('0x40')](saveUpdates(_0x1b46ad[_0x88c4('0x4b')],null))[_0x88c4('0x40')](respondWithResult(_0x4d9cb0,null))[_0x88c4('0x4a')](handleError(_0x4d9cb0,null));};exports[_0x88c4('0x4d')]=function(_0x5c7299,_0xa2b1e9){return db['CmHopperBlack']['find']({'where':{'id':_0x5c7299[_0x88c4('0x4c')]['id']}})[_0x88c4('0x40')](handleEntityNotFound(_0xa2b1e9,null))['then'](removeEntity(_0xa2b1e9,null))[_0x88c4('0x4a')](handleError(_0xa2b1e9,null));};exports[_0x88c4('0x4e')]=function(_0x1e3587,_0x463e5c){return db['CmHopperBlack'][_0x88c4('0x4e')]()[_0x88c4('0x40')](respondWithResult(_0x463e5c,null))[_0x88c4('0x4a')](handleError(_0x463e5c,null));}; \ No newline at end of file diff --git a/server/api/cmHopperBlack/cmHopperBlack.model.js b/server/api/cmHopperBlack/cmHopperBlack.model.js new file mode 100644 index 0000000..ca31190 --- /dev/null +++ b/server/api/cmHopperBlack/cmHopperBlack.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9643=['../../config/logger','api','bluebird','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','cm_hopper_black','lodash','util'];(function(_0x3fbc36,_0x4f3451){var _0xed45c6=function(_0x486713){while(--_0x486713){_0x3fbc36['push'](_0x3fbc36['shift']());}};_0xed45c6(++_0x4f3451);}(_0x9643,0x8e));var _0x3964=function(_0xcdcdf,_0x3c71b2){_0xcdcdf=_0xcdcdf-0x0;var _0x193b2a=_0x9643[_0xcdcdf];return _0x193b2a;};'use strict';var _=require(_0x3964('0x0'));var util=require(_0x3964('0x1'));var logger=require(_0x3964('0x2'))(_0x3964('0x3'));var moment=require('moment');var BPromise=require(_0x3964('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3964('0x5'));var rimraf=require(_0x3964('0x6'));var config=require(_0x3964('0x7'));var attributes=require(_0x3964('0x8'));module[_0x3964('0x9')]=function(_0x57c1eb,_0x563890){return _0x57c1eb[_0x3964('0xa')]('CmHopperBlack',attributes,{'tableName':_0x3964('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmHopperBlack/cmHopperBlack.rpc.js b/server/api/cmHopperBlack/cmHopperBlack.rpc.js new file mode 100644 index 0000000..cd2642a --- /dev/null +++ b/server/api/cmHopperBlack/cmHopperBlack.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5bdd=['../../mysqldb','../../config/utils','../../config/logger','client','http','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetCmHopperBlack','CmHopperBlack','options','where','attributes','limit','include','map','model','stringify','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash','randomstring','ioredis'];(function(_0x3779c3,_0xf6b0db){var _0x4ee760=function(_0x497686){while(--_0x497686){_0x3779c3['push'](_0x3779c3['shift']());}};_0x4ee760(++_0xf6b0db);}(_0x5bdd,0x1af));var _0xd5bd=function(_0x3bd83b,_0x5b882b){_0x3bd83b=_0x3bd83b-0x0;var _0x4de274=_0x5bdd[_0x3bd83b];return _0x4de274;};'use strict';var _=require(_0xd5bd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd5bd('0x1'));var fs=require('fs');var Redis=require(_0xd5bd('0x2'));var db=require(_0xd5bd('0x3'))['db'];var utils=require(_0xd5bd('0x4'));var logger=require(_0xd5bd('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd5bd('0x6')][_0xd5bd('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1f836a,_0x28e70d,_0x4f913d){return new BPromise(function(_0x4e8a0d,_0x37df77){return client['request'](_0x1f836a,_0x4f913d)[_0xd5bd('0x8')](function(_0x54a6b0){logger[_0xd5bd('0x9')](_0xd5bd('0xa'),_0x28e70d,_0xd5bd('0xb'));logger[_0xd5bd('0xc')](_0xd5bd('0xd'),_0x28e70d,_0xd5bd('0xb'),JSON['stringify'](_0x54a6b0));if(_0x54a6b0['error']){if(_0x54a6b0[_0xd5bd('0xe')][_0xd5bd('0xf')]===0x1f4){logger[_0xd5bd('0xe')](_0xd5bd('0xa'),_0x28e70d,_0x54a6b0[_0xd5bd('0xe')]['message']);return _0x37df77(_0x54a6b0[_0xd5bd('0xe')][_0xd5bd('0x10')]);}logger[_0xd5bd('0xe')](_0xd5bd('0xa'),_0x28e70d,_0x54a6b0[_0xd5bd('0xe')][_0xd5bd('0x10')]);return _0x4e8a0d(_0x54a6b0[_0xd5bd('0xe')][_0xd5bd('0x10')]);}else{logger['info'](_0xd5bd('0xa'),_0x28e70d,_0xd5bd('0xb'));_0x4e8a0d(_0x54a6b0['result'][_0xd5bd('0x10')]);}})[_0xd5bd('0x11')](function(_0xdbb3f){logger[_0xd5bd('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x28e70d,_0xdbb3f);_0x37df77(_0xdbb3f);});});}exports[_0xd5bd('0x12')]=function(_0x3ec794){var _0x491825=this;return new Promise(function(_0x4a26b6,_0xbfb80e){return db[_0xd5bd('0x13')]['findAll']({'raw':_0x3ec794[_0xd5bd('0x14')]?_0x3ec794[_0xd5bd('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x3ec794[_0xd5bd('0x14')]?_0x3ec794['options'][_0xd5bd('0x15')]||null:null,'attributes':_0x3ec794[_0xd5bd('0x14')]?_0x3ec794['options'][_0xd5bd('0x16')]||null:null,'limit':_0x3ec794['options']?_0x3ec794[_0xd5bd('0x14')][_0xd5bd('0x17')]||null:null,'include':_0x3ec794['options']?_0x3ec794[_0xd5bd('0x14')][_0xd5bd('0x18')]?_[_0xd5bd('0x19')](_0x3ec794['options']['include'],function(_0x246774){return{'model':db[_0x246774[_0xd5bd('0x1a')]],'as':_0x246774['as'],'attributes':_0x246774[_0xd5bd('0x16')],'include':_0x246774[_0xd5bd('0x18')]?_[_0xd5bd('0x19')](_0x246774['include'],function(_0x23ca22){return{'model':db[_0x23ca22[_0xd5bd('0x1a')]],'as':_0x23ca22['as'],'attributes':_0x23ca22[_0xd5bd('0x16')],'include':_0x23ca22[_0xd5bd('0x18')]?_[_0xd5bd('0x19')](_0x23ca22[_0xd5bd('0x18')],function(_0x9578e6){return{'model':db[_0x9578e6['model']],'as':_0x9578e6['as'],'attributes':_0x9578e6[_0xd5bd('0x16')]};}):[]};}):[]};}):[]:[]})[_0xd5bd('0x8')](function(_0x522ce0){logger['info'](_0xd5bd('0x12'),_0x3ec794);logger[_0xd5bd('0xc')](_0xd5bd('0x12'),_0x3ec794,JSON[_0xd5bd('0x1b')](_0x522ce0));_0x4a26b6(_0x522ce0);})['catch'](function(_0x2bdb21){logger[_0xd5bd('0xe')](_0xd5bd('0x12'),_0x2bdb21[_0xd5bd('0x10')],_0x3ec794);_0xbfb80e(_0x491825[_0xd5bd('0xe')](0x1f4,_0x2bdb21[_0xd5bd('0x10')]));});});};exports[_0xd5bd('0x1c')]=function(_0x3e87f6){var _0x443cbb=this;return new Promise(function(_0x55c6c6,_0x3c24e6){return db[_0xd5bd('0x13')]['update'](_0x3e87f6['body'],{'raw':_0x3e87f6[_0xd5bd('0x14')]?_0x3e87f6[_0xd5bd('0x14')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e87f6[_0xd5bd('0x14')]?_0x3e87f6[_0xd5bd('0x14')]['where']||null:null,'attributes':_0x3e87f6[_0xd5bd('0x14')]?_0x3e87f6['options'][_0xd5bd('0x16')]||null:null,'limit':_0x3e87f6[_0xd5bd('0x14')]?_0x3e87f6[_0xd5bd('0x14')][_0xd5bd('0x17')]||null:null})[_0xd5bd('0x8')](function(_0x530a7c){logger[_0xd5bd('0x9')]('UpdateCmHopperBlack',_0x3e87f6);logger[_0xd5bd('0xc')](_0xd5bd('0x1c'),_0x3e87f6,JSON['stringify'](_0x530a7c));_0x55c6c6(_0x530a7c);})[_0xd5bd('0x11')](function(_0x19b737){logger[_0xd5bd('0xe')](_0xd5bd('0x1c'),_0x19b737[_0xd5bd('0x10')],_0x3e87f6);_0x3c24e6(_0x443cbb[_0xd5bd('0xe')](0x1f4,_0x19b737[_0xd5bd('0x10')]));});});};exports[_0xd5bd('0x1d')]=function(_0x29f216){var _0x495e37=this;return new Promise(function(_0x31b32f,_0x2b8853){return db['CmHopperBlack'][_0xd5bd('0x1e')]({'where':_0x29f216[_0xd5bd('0x14')]?_0x29f216['options'][_0xd5bd('0x15')]||null:null})[_0xd5bd('0x8')](function(_0x41efcd){logger['info'](_0xd5bd('0x1d'),_0x29f216);logger[_0xd5bd('0xc')](_0xd5bd('0x1d'),_0x29f216,JSON[_0xd5bd('0x1b')](_0x41efcd));_0x31b32f(_0x41efcd);})['catch'](function(_0x54e012){logger['error'](_0xd5bd('0x1d'),_0x54e012[_0xd5bd('0x10')],_0x29f216);_0x2b8853(_0x495e37[_0xd5bd('0xe')](0x1f4,_0x54e012['message']));});});}; \ No newline at end of file diff --git a/server/api/cmHopperBlack/index.js b/server/api/cmHopperBlack/index.js new file mode 100644 index 0000000..b3a4e24 --- /dev/null +++ b/server/api/cmHopperBlack/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5162=['/:id','show','update','exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','/describe','isAuthenticated','describe'];(function(_0x258532,_0x704f6b){var _0x8cd3e0=function(_0x502e4d){while(--_0x502e4d){_0x258532['push'](_0x258532['shift']());}};_0x8cd3e0(++_0x704f6b);}(_0x5162,0x103));var _0x2516=function(_0x1ec65c,_0x354923){_0x1ec65c=_0x1ec65c-0x0;var _0x5249c2=_0x5162[_0x1ec65c];return _0x5249c2;};'use strict';var multer=require(_0x2516('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2516('0x1')]();var fs_extra=require(_0x2516('0x2'));var auth=require(_0x2516('0x3'));var interaction=require(_0x2516('0x4'));var config=require(_0x2516('0x5'));var controller=require(_0x2516('0x6'));router[_0x2516('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x2516('0x8'),auth[_0x2516('0x9')](),controller[_0x2516('0xa')]);router[_0x2516('0x7')](_0x2516('0xb'),auth[_0x2516('0x9')](),controller[_0x2516('0xc')]);router['put'](_0x2516('0xb'),auth[_0x2516('0x9')](),controller[_0x2516('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x2516('0xe')]=router; \ No newline at end of file diff --git a/server/api/cmHopperFinal/cmHopperFinal.attributes.js b/server/api/cmHopperFinal/cmHopperFinal.attributes.js new file mode 100644 index 0000000..b302647 --- /dev/null +++ b/server/api/cmHopperFinal/cmHopperFinal.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb9b1=['moment','exports','INTEGER','STRING','DATE','getDataValue','endtime','followuptime','BOOLEAN','sequelize'];(function(_0x490249,_0x4c01a1){var _0x5c6453=function(_0x5ec246){while(--_0x5ec246){_0x490249['push'](_0x490249['shift']());}};_0x5c6453(++_0x4c01a1);}(_0xb9b1,0xb3));var _0x1b9b=function(_0x2a4f5b,_0x11bd88){_0x2a4f5b=_0x2a4f5b-0x0;var _0x501954=_0xb9b1[_0x2a4f5b];return _0x501954;};'use strict';var Sequelize=require(_0x1b9b('0x0'));var moment=require(_0x1b9b('0x1'));module[_0x1b9b('0x2')]={'state':{'type':Sequelize[_0x1b9b('0x3')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x1b9b('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x1b9b('0x5')]},'responsetime':{'type':Sequelize[_0x1b9b('0x5')]},'answertime':{'type':Sequelize[_0x1b9b('0x5')]},'droptime':{'type':Sequelize[_0x1b9b('0x5')]},'endtime':{'type':Sequelize[_0x1b9b('0x5')]},'ringtime':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x1b9b('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x1b9b('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x1b9b('0x4')]},'disposition':{'type':Sequelize[_0x1b9b('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x1b9b('0x4')]},'dispositionat':{'type':Sequelize[_0x1b9b('0x5')],'set':function(_0x21a1d7){var _0x104ff7=this[_0x1b9b('0x6')](_0x1b9b('0x7'));if(_0x104ff7&&_0x21a1d7){this['setDataValue'](_0x1b9b('0x8'),moment(_0x21a1d7)['diff'](moment(_0x104ff7),'seconds'));}}},'amd':{'type':Sequelize[_0x1b9b('0x9')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x1b9b('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x1b9b('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x1b9b('0x5')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1b9b('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1b9b('0x5')]},'deleted':{'type':Sequelize[_0x1b9b('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x1b9b('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x1b9b('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1b9b('0x3')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/cmHopperFinal/cmHopperFinal.controller.js b/server/api/cmHopperFinal/cmHopperFinal.controller.js new file mode 100644 index 0000000..76de23c --- /dev/null +++ b/server/api/cmHopperFinal/cmHopperFinal.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2542=['Content-Range','apply','update','then','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','describe','body','uniqueid','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noSuchContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','abandonedContacts','VoiceQueue','into','fromQuery','phone','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','scheduledAt','ContactId','ANY_VALUE(ListId)','NOW()','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','calleridnum','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','cm_hopper','state\x20=\x204','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set'];(function(_0x14653a,_0x2851cd){var _0x451eb1=function(_0x58d25d){while(--_0x58d25d){_0x14653a['push'](_0x14653a['shift']());}};_0x451eb1(++_0x2851cd);}(_0x2542,0x169));var _0x2254=function(_0xe7eb9,_0x256394){_0xe7eb9=_0xe7eb9-0x0;var _0xd7e40d=_0x2542[_0xe7eb9];return _0xd7e40d;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];function respondWithStatusCode(_0x116b70,_0xdcb670){_0xdcb670=_0xdcb670||0xcc;return function(_0x3c326b){if(_0x3c326b){return _0x116b70[_0x2254('0x1a')](_0xdcb670);}return _0x116b70['status'](_0xdcb670)[_0x2254('0x1b')]();};}function respondWithResult(_0x7c7ab0,_0x504749){_0x504749=_0x504749||0xc8;return function(_0x2f4de){if(_0x2f4de){return _0x7c7ab0[_0x2254('0x1c')](_0x504749)[_0x2254('0x1d')](_0x2f4de);}};}function respondWithFilteredResult(_0x145272,_0x26285a){return function(_0xbc5548){if(_0xbc5548){var _0x50f137=typeof _0x26285a[_0x2254('0x1e')]==='undefined'&&typeof _0x26285a[_0x2254('0x1f')]===_0x2254('0x20');var _0x170ffa=_0xbc5548[_0x2254('0x21')];var _0x1ae11e=_0x50f137?0x0:_0x26285a[_0x2254('0x1e')];var _0x497724=_0x50f137?_0xbc5548['count']:_0x26285a['offset']+_0x26285a[_0x2254('0x1f')];var _0x3a79f8;if(_0x497724>=_0x170ffa){_0x497724=_0x170ffa;_0x3a79f8=0xc8;}else{_0x3a79f8=0xce;}_0x145272[_0x2254('0x1c')](_0x3a79f8);return _0x145272[_0x2254('0x22')](_0x2254('0x23'),_0x1ae11e+'-'+_0x497724+'/'+_0x170ffa)[_0x2254('0x1d')](_0xbc5548);}return null;};}function patchUpdates(_0x487f72){return function(_0x28381e){try{jsonpatch[_0x2254('0x24')](_0x28381e,_0x487f72,!![]);}catch(_0x906cde){return BPromise['reject'](_0x906cde);}return _0x28381e['save']();};}function saveUpdates(_0x5bd982,_0x1e8a98){return function(_0x559af4){if(_0x559af4){return _0x559af4[_0x2254('0x25')](_0x5bd982)['then'](function(_0x5713e4){return _0x5713e4;});}return null;};}function removeEntity(_0x4d8faf,_0x540020){return function(_0x5e5edb){if(_0x5e5edb){return _0x5e5edb['destroy']()[_0x2254('0x26')](function(){_0x4d8faf[_0x2254('0x1c')](0xcc)[_0x2254('0x1b')]();});}};}function handleEntityNotFound(_0x265467,_0x13522d){return function(_0x1349c9){if(!_0x1349c9){_0x265467['sendStatus'](0x194);}return _0x1349c9;};}function handleError(_0x4a8274,_0x1ada42){_0x1ada42=_0x1ada42||0x1f4;return function(_0x4f6877){logger[_0x2254('0x27')](_0x4f6877[_0x2254('0x28')]);if(_0x4f6877[_0x2254('0x29')]){delete _0x4f6877[_0x2254('0x29')];}_0x4a8274[_0x2254('0x1c')](_0x1ada42)['send'](_0x4f6877);};}exports[_0x2254('0x2a')]=function(_0x2a789b,_0x21285d){var _0x37af8b={},_0x13366a={},_0x377c41={'count':0x0,'rows':[]};var _0x3214a7=_[_0x2254('0x2b')](db[_0x2254('0x2c')][_0x2254('0x2d')],function(_0x21c641){return{'name':_0x21c641[_0x2254('0x2e')],'type':_0x21c641[_0x2254('0x2f')][_0x2254('0x30')]};});_0x13366a[_0x2254('0x31')]=_[_0x2254('0x2b')](_0x3214a7,_0x2254('0x29'));_0x13366a[_0x2254('0x32')]=_[_0x2254('0x33')](_0x2a789b['query']);_0x13366a[_0x2254('0x34')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],_0x13366a[_0x2254('0x32')]);_0x37af8b[_0x2254('0x36')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],qs[_0x2254('0x37')](_0x2a789b[_0x2254('0x32')]['fields']));_0x37af8b[_0x2254('0x36')]=_0x37af8b[_0x2254('0x36')]['length']?_0x37af8b[_0x2254('0x36')]:_0x13366a[_0x2254('0x31')];if(!_0x2a789b[_0x2254('0x32')][_0x2254('0x38')]('nolimit')){_0x37af8b['limit']=qs[_0x2254('0x1f')](_0x2a789b['query'][_0x2254('0x1f')]);_0x37af8b[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0x2a789b[_0x2254('0x32')][_0x2254('0x1e')]);}_0x37af8b[_0x2254('0x39')]=qs[_0x2254('0x3a')](_0x2a789b['query'][_0x2254('0x3a')]);_0x37af8b[_0x2254('0x3b')]=qs[_0x2254('0x34')](_[_0x2254('0x3c')](_0x2a789b[_0x2254('0x32')],_0x13366a[_0x2254('0x34')]),_0x3214a7);if(_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]){_0x37af8b[_0x2254('0x3b')]=_[_0x2254('0x3e')](_0x37af8b['where'],{'$or':_[_0x2254('0x2b')](_0x3214a7,function(_0xde3e4a){if(_0xde3e4a[_0x2254('0x2f')]!==_0x2254('0x3f')){var _0x4c7cc3={};_0x4c7cc3[_0xde3e4a[_0x2254('0x29')]]={'$like':'%'+_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]+'%'};return _0x4c7cc3;}})});}_0x37af8b=_[_0x2254('0x3e')]({},_0x37af8b,_0x2a789b[_0x2254('0x40')]);var _0x2602db={'where':_0x37af8b[_0x2254('0x3b')]};return db[_0x2254('0x2c')]['count'](_0x2602db)[_0x2254('0x26')](function(_0x5c15d7){_0x377c41[_0x2254('0x21')]=_0x5c15d7;if(_0x2a789b[_0x2254('0x32')][_0x2254('0x41')]){_0x37af8b[_0x2254('0x42')]=[{'all':!![]}];}return db[_0x2254('0x2c')][_0x2254('0x43')](_0x37af8b);})[_0x2254('0x26')](function(_0x568ec9){_0x377c41[_0x2254('0x44')]=_0x568ec9;return _0x377c41;})[_0x2254('0x26')](respondWithFilteredResult(_0x21285d,_0x37af8b))[_0x2254('0x45')](handleError(_0x21285d,null));};exports[_0x2254('0x46')]=function(_0x40d4da,_0x57cda2){var _0x22bb98={'raw':!![],'where':{'id':_0x40d4da[_0x2254('0x47')]['id']}},_0x1dec43={};_0x1dec43[_0x2254('0x31')]=_[_0x2254('0x33')](db['CmHopperFinal'][_0x2254('0x2d')]);_0x1dec43['query']=_[_0x2254('0x33')](_0x40d4da[_0x2254('0x32')]);_0x1dec43[_0x2254('0x34')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],_0x1dec43[_0x2254('0x32')]);_0x22bb98[_0x2254('0x36')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],qs[_0x2254('0x37')](_0x40d4da[_0x2254('0x32')][_0x2254('0x37')]));_0x22bb98[_0x2254('0x36')]=_0x22bb98['attributes'][_0x2254('0x48')]?_0x22bb98[_0x2254('0x36')]:_0x1dec43[_0x2254('0x31')];if(_0x40d4da['query'][_0x2254('0x41')]){_0x22bb98[_0x2254('0x42')]=[{'all':!![]}];}_0x22bb98=_[_0x2254('0x3e')]({},_0x22bb98,_0x40d4da[_0x2254('0x40')]);return db[_0x2254('0x2c')][_0x2254('0x49')](_0x22bb98)[_0x2254('0x26')](handleEntityNotFound(_0x57cda2,null))[_0x2254('0x26')](respondWithResult(_0x57cda2,null))[_0x2254('0x45')](handleError(_0x57cda2,null));};exports['describe']=function(_0x239ba0,_0x405eb2){return db[_0x2254('0x2c')][_0x2254('0x4a')]()[_0x2254('0x26')](respondWithResult(_0x405eb2,null))[_0x2254('0x45')](handleError(_0x405eb2,null));};exports[_0x2254('0x25')]=function(_0x438922,_0x3ac691){if(_0x438922[_0x2254('0x4b')]['uniqueid']){delete _0x438922[_0x2254('0x4b')][_0x2254('0x4c')];}return db['CmHopperFinal'][_0x2254('0x49')]({'where':{'uniqueid':_0x438922[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0x3ac691,null))[_0x2254('0x26')](saveUpdates(_0x438922['body'],null))[_0x2254('0x26')](respondWithResult(_0x3ac691,null))[_0x2254('0x45')](handleError(_0x3ac691,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x26d01a,_0x3f0670,_0x23014b){return db[_0x2254('0x2c')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x26d01a[_0x2254('0x47')]['id']},'attributes':[[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x2254('0x4f')](_0x2254('0x50')))),'noSuchContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x51')))),_0x2254('0x52')],[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x53')))),_0x2254('0x54')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x55')))),_0x2254('0x56')],[db['sequelize']['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db['sequelize']['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x57')))),_0x2254('0x58')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x59')))),_0x2254('0x5a')]]})[_0x2254('0x26')](handleEntityNotFound(_0x3f0670,null))[_0x2254('0x26')](respondWithResult(_0x3f0670,null))[_0x2254('0x45')](handleError(_0x3f0670,null));};exports[_0x2254('0x5b')]=function(_0x399ba2,_0x179cf1,_0x5b8909){return db[_0x2254('0x2c')][_0x2254('0x43')]({'raw':![],'where':{'CampaignId':_0x399ba2[_0x2254('0x47')]['id']},'attributes':[[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x50')))),_0x2254('0x5c')],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x53')))),_0x2254('0x54')],[db['sequelize']['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db['sequelize']['literal'](_0x2254('0x5d')))),_0x2254('0x5e')],[db['sequelize']['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x2254('0x56')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x2254('0x5f')],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x57')))),_0x2254('0x58')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x2254('0x5a')]]})[_0x2254('0x26')](handleEntityNotFound(_0x179cf1,null))['then'](respondWithResult(_0x179cf1,null))[_0x2254('0x45')](handleError(_0x179cf1,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x7075b1,_0x516595,_0x3cbd35){return db[_0x2254('0x60')]['find']({'where':{'id':_0x7075b1[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x516595,null))[_0x2254('0x26')](function(_0x3e6070){var _0x38294d;if(_0x3e6070){_0x38294d=squel['insert']()[_0x2254('0x61')]('cm_hopper')[_0x2254('0x62')]([_0x2254('0x63'),'scheduledAt','ContactId',_0x2254('0x64'),_0x2254('0x65'),_0x2254('0x66'),_0x2254('0x67')],squel['select']()[_0x2254('0x68')](_0x2254('0x69'),_0x2254('0x63'))[_0x2254('0x68')]('NOW()',_0x2254('0x6a'))[_0x2254('0x68')]('ANY_VALUE(ContactId)',_0x2254('0x6b'))['field'](_0x2254('0x6c'),'ListId')['field']('ANY_VALUE(VoiceQueueId)',_0x2254('0x65'))['field'](_0x2254('0x6d'),_0x2254('0x66'))['field'](_0x2254('0x6d'),_0x2254('0x67'))[_0x2254('0x6e')](_0x2254('0x6f'))[_0x2254('0x3b')](_0x2254('0x70'),_0x7075b1['params']['id']['toString']())[_0x2254('0x3b')](_0x2254('0x71'),_0x7075b1[_0x2254('0x4b')][_0x2254('0x72')][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x74'))[_0x2254('0x3b')](_0x2254('0x75'),squel[_0x2254('0x76')]()['field'](_0x2254('0x63'))[_0x2254('0x6e')]('cm_hopper')[_0x2254('0x3b')]('VoiceQueueId\x20=\x20?',_0x7075b1[_0x2254('0x47')]['id'][_0x2254('0x73')]()))['where'](_0x2254('0x75'),squel['select']()[_0x2254('0x68')](_0x2254('0x77'))[_0x2254('0x6e')](_0x2254('0x6f'))['where'](_0x2254('0x70'),_0x7075b1[_0x2254('0x47')]['id'][_0x2254('0x73')]())[_0x2254('0x3b')]('state\x20=\x204'))[_0x2254('0x78')](_0x2254('0x6b')))['toString']();return db[_0x2254('0x4d')][_0x2254('0x32')](_0x38294d);}return[];})['then'](respondWithResult(_0x516595,null))['catch'](handleError(_0x516595,null));};exports[_0x2254('0x79')]=function(_0x2f3650,_0x1a3fd9,_0x3058d9){return db[_0x2254('0x7a')][_0x2254('0x49')]({'where':{'id':_0x2f3650[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0x1a3fd9,null))[_0x2254('0x26')](function(_0x5df20f){var _0x10c44;if(_0x5df20f){_0x10c44=squel['insert']()[_0x2254('0x61')]('cm_hopper')[_0x2254('0x62')]([_0x2254('0x63'),_0x2254('0x6a'),'ContactId',_0x2254('0x64'),_0x2254('0x7b'),_0x2254('0x66'),_0x2254('0x67')],squel[_0x2254('0x76')]()[_0x2254('0x68')](_0x2254('0x69'),_0x2254('0x63'))[_0x2254('0x68')](_0x2254('0x6d'),_0x2254('0x6a'))[_0x2254('0x68')](_0x2254('0x7c'),'ContactId')[_0x2254('0x68')]('ANY_VALUE(ListId)',_0x2254('0x64'))[_0x2254('0x68')](_0x2254('0x7d'),_0x2254('0x7b'))[_0x2254('0x68')](_0x2254('0x6d'),_0x2254('0x66'))['field'](_0x2254('0x6d'),'updatedAt')[_0x2254('0x6e')]('cm_hopper_final')[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id']['toString']())[_0x2254('0x3b')](_0x2254('0x71'),_0x2f3650[_0x2254('0x4b')][_0x2254('0x72')][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x74'))[_0x2254('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x2254('0x68')]('phone')[_0x2254('0x6e')](_0x2254('0x7f'))[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id'][_0x2254('0x73')]()))[_0x2254('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x2254('0x76')]()[_0x2254('0x68')](_0x2254('0x77'))['from'](_0x2254('0x6f'))[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id'][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x80')))[_0x2254('0x78')](_0x2254('0x6b')))['toString']();return db[_0x2254('0x4d')][_0x2254('0x32')](_0x10c44);}return[];})['then'](respondWithResult(_0x1a3fd9,null))['catch'](handleError(_0x1a3fd9,null));};exports[_0x2254('0x81')]=function(_0x54339e,_0x226c19,_0x10645f){return db[_0x2254('0x82')][_0x2254('0x83')]({'where':{'VoiceQueueId':_0x54339e[_0x2254('0x4b')][_0x2254('0x65')],'CampaignId':_0x54339e[_0x2254('0x4b')][_0x2254('0x7b')],'ContactId':_0x54339e['body']['ContactId']}})[_0x2254('0x26')](handleEntityNotFound(_0x226c19,null))[_0x2254('0x26')](function(_0x1e8617){if(_0x1e8617){return _0x1e8617;}return null;})[_0x2254('0x26')](respondWithResult(_0x226c19,null))[_0x2254('0x45')](handleError(_0x226c19,null));}; \ No newline at end of file diff --git a/server/api/cmHopperFinal/cmHopperFinal.model.js b/server/api/cmHopperFinal/cmHopperFinal.model.js new file mode 100644 index 0000000..90abb51 --- /dev/null +++ b/server/api/cmHopperFinal/cmHopperFinal.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7b0e=['exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','moment','path','rimraf','../../config/environment','./cmHopperFinal.attributes'];(function(_0x3d53b6,_0x3d468e){var _0x483f66=function(_0x5a88bc){while(--_0x5a88bc){_0x3d53b6['push'](_0x3d53b6['shift']());}};_0x483f66(++_0x3d468e);}(_0x7b0e,0xaf));var _0xe7b0=function(_0x21e752,_0x11e729){_0x21e752=_0x21e752-0x0;var _0x1db54c=_0x7b0e[_0x21e752];return _0x1db54c;};'use strict';var _=require(_0xe7b0('0x0'));var util=require(_0xe7b0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe7b0('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe7b0('0x3'));var rimraf=require(_0xe7b0('0x4'));var config=require(_0xe7b0('0x5'));var attributes=require(_0xe7b0('0x6'));module[_0xe7b0('0x7')]=function(_0xefe9b5,_0x482030){return _0xefe9b5[_0xe7b0('0x8')](_0xe7b0('0x9'),attributes,{'tableName':_0xe7b0('0xa'),'paranoid':![],'indexes':[{'name':_0xe7b0('0xb'),'fields':[_0xe7b0('0xb')]},{'name':'uniqueid','fields':[_0xe7b0('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmHopperFinal/cmHopperFinal.rpc.js b/server/api/cmHopperFinal/cmHopperFinal.rpc.js new file mode 100644 index 0000000..0c091f8 --- /dev/null +++ b/server/api/cmHopperFinal/cmHopperFinal.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x2f4832,_0x5ddd74){var _0x426743=function(_0x37dcf3){while(--_0x37dcf3){_0x2f4832['push'](_0x2f4832['shift']());}};_0x426743(++_0x5ddd74);}(_0xb10b,0x12a));var _0xbb10=function(_0x34e4a0,_0x1fd446){_0x34e4a0=_0x34e4a0-0x0;var _0x3ead3e=_0xb10b[_0x34e4a0];return _0x3ead3e;};'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 diff --git a/server/api/cmHopperFinal/index.js b/server/api/cmHopperFinal/index.js new file mode 100644 index 0000000..693a38c --- /dev/null +++ b/server/api/cmHopperFinal/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2ef3=['../../components/auth/service','../../components/interaction/service','./cmHopperFinal.controller','get','/describe','isAuthenticated','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper','checkContactHopper','put','multer','util','path','connect-timeout','express','Router'];(function(_0x524c09,_0xb22408){var _0x17f290=function(_0x10a0aa){while(--_0x10a0aa){_0x524c09['push'](_0x524c09['shift']());}};_0x17f290(++_0xb22408);}(_0x2ef3,0xba));var _0x32ef=function(_0x2fbade,_0x4a3a21){_0x2fbade=_0x2fbade-0x0;var _0x23e8ef=_0x2ef3[_0x2fbade];return _0x23e8ef;};'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['countContactsQueueCampaignHopperFinal']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post'](_0x32ef('0x12'),auth['isAuthenticated'](),controller[_0x32ef('0x13')]);router['post'](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['moveContactsIvrCampaignHopperFinal']);router['post'](_0x32ef('0x15'),auth['isAuthenticated'](),controller[_0x32ef('0x16')]);router[_0x32ef('0x17')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller['update']);module['exports']=router; \ No newline at end of file diff --git a/server/api/cmHopperHistory/cmHopperHistory.attributes.js b/server/api/cmHopperHistory/cmHopperHistory.attributes.js new file mode 100644 index 0000000..5986eda --- /dev/null +++ b/server/api/cmHopperHistory/cmHopperHistory.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd677=['STRING','INTEGER','DATE','BOOLEAN'];(function(_0x2671bc,_0x103d4b){var _0x1c5f76=function(_0x31f05f){while(--_0x31f05f){_0x2671bc['push'](_0x2671bc['shift']());}};_0x1c5f76(++_0x103d4b);}(_0xd677,0x94));var _0x7d67=function(_0x59aeb3,_0x32f513){_0x59aeb3=_0x59aeb3-0x0;var _0x3c6521=_0xd677[_0x59aeb3];return _0x3c6521;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x7d67('0x0')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x7d67('0x0')]},'originatecalleridnum':{'type':Sequelize[_0x7d67('0x0')]},'originatecalleridname':{'type':Sequelize[_0x7d67('0x0')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x7d67('0x0')]},'starttime':{'type':Sequelize[_0x7d67('0x2')]},'responsetime':{'type':Sequelize[_0x7d67('0x2')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x7d67('0x2')]},'endtime':{'type':Sequelize[_0x7d67('0x2')]},'ringtime':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x7d67('0x0')]},'campaign':{'type':Sequelize[_0x7d67('0x0')]},'campaigntype':{'type':Sequelize[_0x7d67('0x0')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x7d67('0x3')],'defaultValue':![]},'fax':{'type':Sequelize[_0x7d67('0x3')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7d67('0x0')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7d67('0x2')]},'recallme':{'type':Sequelize[_0x7d67('0x3')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x7d67('0x2')]},'edited':{'type':Sequelize[_0x7d67('0x3')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x7d67('0x1')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x7d67('0x0')]}}; \ No newline at end of file diff --git a/server/api/cmHopperHistory/cmHopperHistory.controller.js b/server/api/cmHopperHistory/cmHopperHistory.controller.js new file mode 100644 index 0000000..f326df5 --- /dev/null +++ b/server/api/cmHopperHistory/cmHopperHistory.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x48c7=['status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','CmHopperHistory','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','includeAll','include','rows','catch','show','params','merge','options','find','create','body','describe','update','uniqueid','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','sendStatus'];(function(_0xf2c879,_0x48258e){var _0x3c28d9=function(_0x1343fb){while(--_0x1343fb){_0xf2c879['push'](_0xf2c879['shift']());}};_0x3c28d9(++_0x48258e);}(_0x48c7,0xbe));var _0x748c=function(_0x38045f,_0x551f77){_0x38045f=_0x38045f-0x0;var _0xfd4f8c=_0x48c7[_0x38045f];return _0xfd4f8c;};'use strict';var emlformat=require(_0x748c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x748c('0x1'));var rp=require(_0x748c('0x2'));var moment=require('moment');var BPromise=require(_0x748c('0x3'));var Mustache=require(_0x748c('0x4'));var util=require(_0x748c('0x5'));var path=require('path');var sox=require(_0x748c('0x6'));var csv=require('to-csv');var ejs=require(_0x748c('0x7'));var fs=require('fs');var fs_extra=require(_0x748c('0x8'));var _=require('lodash');var squel=require(_0x748c('0x9'));var crypto=require(_0x748c('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x748c('0xb'));var toCsv=require(_0x748c('0xc'));var querystring=require('querystring');var Papa=require(_0x748c('0xd'));var Redis=require(_0x748c('0xe'));var authService=require(_0x748c('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x748c('0x10'));var logger=require('../../config/logger')(_0x748c('0x11'));var utils=require('../../config/utils');var config=require(_0x748c('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c3b82,_0x294d6c){_0x294d6c=_0x294d6c||0xcc;return function(_0x40ea48){if(_0x40ea48){return _0x3c3b82[_0x748c('0x13')](_0x294d6c);}return _0x3c3b82[_0x748c('0x14')](_0x294d6c)[_0x748c('0x15')]();};}function respondWithResult(_0x238cb2,_0x684407){_0x684407=_0x684407||0xc8;return function(_0x3ece1e){if(_0x3ece1e){return _0x238cb2['status'](_0x684407)[_0x748c('0x16')](_0x3ece1e);}};}function respondWithFilteredResult(_0x4ff2f5,_0x5e8aab){return function(_0x57b1a0){if(_0x57b1a0){var _0x3c0553=typeof _0x5e8aab['offset']===_0x748c('0x17')&&typeof _0x5e8aab[_0x748c('0x18')]===_0x748c('0x17');var _0x3b5d28=_0x57b1a0['count'];var _0x503ef1=_0x3c0553?0x0:_0x5e8aab[_0x748c('0x19')];var _0x5a7eca=_0x3c0553?_0x57b1a0[_0x748c('0x1a')]:_0x5e8aab[_0x748c('0x19')]+_0x5e8aab[_0x748c('0x18')];var _0x25d9ad;if(_0x5a7eca>=_0x3b5d28){_0x5a7eca=_0x3b5d28;_0x25d9ad=0xc8;}else{_0x25d9ad=0xce;}_0x4ff2f5['status'](_0x25d9ad);return _0x4ff2f5['set'](_0x748c('0x1b'),_0x503ef1+'-'+_0x5a7eca+'/'+_0x3b5d28)[_0x748c('0x16')](_0x57b1a0);}return null;};}function patchUpdates(_0x586782){return function(_0x1ab753){try{jsonpatch[_0x748c('0x1c')](_0x1ab753,_0x586782,!![]);}catch(_0x367fe0){return BPromise[_0x748c('0x1d')](_0x367fe0);}return _0x1ab753[_0x748c('0x1e')]();};}function saveUpdates(_0x17e2b7,_0x6a4bd3){return function(_0x572f8b){if(_0x572f8b){return _0x572f8b['update'](_0x17e2b7)[_0x748c('0x1f')](function(_0x5b2143){return _0x5b2143;});}return null;};}function removeEntity(_0x52f753,_0x4e305d){return function(_0x34beec){if(_0x34beec){return _0x34beec['destroy']()[_0x748c('0x1f')](function(){_0x52f753[_0x748c('0x14')](0xcc)[_0x748c('0x15')]();});}};}function handleEntityNotFound(_0x5d3f8d,_0x1b5c55){return function(_0xf8c38f){if(!_0xf8c38f){_0x5d3f8d[_0x748c('0x13')](0x194);}return _0xf8c38f;};}function handleError(_0x2745c3,_0x2f9f78){_0x2f9f78=_0x2f9f78||0x1f4;return function(_0x56193c){logger[_0x748c('0x20')](_0x56193c[_0x748c('0x21')]);if(_0x56193c[_0x748c('0x22')]){delete _0x56193c[_0x748c('0x22')];}_0x2745c3['status'](_0x2f9f78)[_0x748c('0x23')](_0x56193c);};}exports[_0x748c('0x24')]=function(_0x3283bf,_0x2aa534){var _0x3fa0ff={},_0x14f570={},_0x1d05a1={'count':0x0,'rows':[]};var _0x151ddc=_[_0x748c('0x25')](db[_0x748c('0x26')]['rawAttributes'],function(_0x51ba89){return{'name':_0x51ba89['fieldName'],'type':_0x51ba89[_0x748c('0x27')][_0x748c('0x28')]};});_0x14f570[_0x748c('0x29')]=_[_0x748c('0x25')](_0x151ddc,'name');_0x14f570[_0x748c('0x2a')]=_[_0x748c('0x2b')](_0x3283bf[_0x748c('0x2a')]);_0x14f570[_0x748c('0x2c')]=_[_0x748c('0x2d')](_0x14f570['model'],_0x14f570[_0x748c('0x2a')]);_0x3fa0ff['attributes']=_['intersection'](_0x14f570[_0x748c('0x29')],qs[_0x748c('0x2e')](_0x3283bf['query'][_0x748c('0x2e')]));_0x3fa0ff[_0x748c('0x2f')]=_0x3fa0ff[_0x748c('0x2f')][_0x748c('0x30')]?_0x3fa0ff['attributes']:_0x14f570['model'];if(!_0x3283bf[_0x748c('0x2a')][_0x748c('0x31')](_0x748c('0x32'))){_0x3fa0ff[_0x748c('0x18')]=qs[_0x748c('0x18')](_0x3283bf['query'][_0x748c('0x18')]);_0x3fa0ff[_0x748c('0x19')]=qs[_0x748c('0x19')](_0x3283bf[_0x748c('0x2a')]['offset']);}_0x3fa0ff[_0x748c('0x33')]=qs[_0x748c('0x34')](_0x3283bf['query'][_0x748c('0x34')]);_0x3fa0ff[_0x748c('0x35')]=qs[_0x748c('0x2c')](_[_0x748c('0x36')](_0x3283bf[_0x748c('0x2a')],_0x14f570['filters']),_0x151ddc);if(_0x3283bf[_0x748c('0x2a')][_0x748c('0x37')]){_0x3fa0ff[_0x748c('0x35')]=_['merge'](_0x3fa0ff['where'],{'$or':_[_0x748c('0x25')](_0x151ddc,function(_0x42658c){if(_0x42658c['type']!=='VIRTUAL'){var _0xa77b65={};_0xa77b65[_0x42658c[_0x748c('0x22')]]={'$like':'%'+_0x3283bf[_0x748c('0x2a')]['filter']+'%'};return _0xa77b65;}})});}_0x3fa0ff=_['merge']({},_0x3fa0ff,_0x3283bf['options']);var _0x3553bd={'where':_0x3fa0ff[_0x748c('0x35')]};return db[_0x748c('0x26')][_0x748c('0x1a')](_0x3553bd)[_0x748c('0x1f')](function(_0x474df5){_0x1d05a1[_0x748c('0x1a')]=_0x474df5;if(_0x3283bf[_0x748c('0x2a')][_0x748c('0x38')]){_0x3fa0ff[_0x748c('0x39')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x3fa0ff);})['then'](function(_0x5d527b){_0x1d05a1[_0x748c('0x3a')]=_0x5d527b;return _0x1d05a1;})['then'](respondWithFilteredResult(_0x2aa534,_0x3fa0ff))[_0x748c('0x3b')](handleError(_0x2aa534,null));};exports[_0x748c('0x3c')]=function(_0x1ab600,_0x192acf){var _0x1d82ff={'raw':!![],'where':{'id':_0x1ab600[_0x748c('0x3d')]['id']}},_0x55da0={};_0x55da0[_0x748c('0x29')]=_['keys'](db[_0x748c('0x26')]['rawAttributes']);_0x55da0[_0x748c('0x2a')]=_[_0x748c('0x2b')](_0x1ab600[_0x748c('0x2a')]);_0x55da0[_0x748c('0x2c')]=_[_0x748c('0x2d')](_0x55da0[_0x748c('0x29')],_0x55da0[_0x748c('0x2a')]);_0x1d82ff[_0x748c('0x2f')]=_['intersection'](_0x55da0[_0x748c('0x29')],qs[_0x748c('0x2e')](_0x1ab600[_0x748c('0x2a')]['fields']));_0x1d82ff['attributes']=_0x1d82ff['attributes'][_0x748c('0x30')]?_0x1d82ff[_0x748c('0x2f')]:_0x55da0[_0x748c('0x29')];if(_0x1ab600[_0x748c('0x2a')][_0x748c('0x38')]){_0x1d82ff['include']=[{'all':!![]}];}_0x1d82ff=_[_0x748c('0x3e')]({},_0x1d82ff,_0x1ab600[_0x748c('0x3f')]);return db[_0x748c('0x26')][_0x748c('0x40')](_0x1d82ff)[_0x748c('0x1f')](handleEntityNotFound(_0x192acf,null))[_0x748c('0x1f')](respondWithResult(_0x192acf,null))[_0x748c('0x3b')](handleError(_0x192acf,null));};exports[_0x748c('0x41')]=function(_0x48f8a7,_0x3c05c7){return db[_0x748c('0x26')]['create'](_0x48f8a7[_0x748c('0x42')],{})[_0x748c('0x1f')](respondWithResult(_0x3c05c7,0xc9))[_0x748c('0x3b')](handleError(_0x3c05c7,null));};exports[_0x748c('0x43')]=function(_0x3496a8,_0x581f81){return db[_0x748c('0x26')][_0x748c('0x43')]()[_0x748c('0x1f')](respondWithResult(_0x581f81,null))[_0x748c('0x3b')](handleError(_0x581f81,null));};exports[_0x748c('0x44')]=function(_0x303d6a,_0x433681){if(_0x303d6a[_0x748c('0x42')][_0x748c('0x45')]){delete _0x303d6a[_0x748c('0x42')][_0x748c('0x45')];}return db[_0x748c('0x26')]['find']({'where':{'uniqueid':_0x303d6a['params']['id']}})[_0x748c('0x1f')](handleEntityNotFound(_0x433681,null))[_0x748c('0x1f')](saveUpdates(_0x303d6a[_0x748c('0x42')],null))[_0x748c('0x1f')](respondWithResult(_0x433681,null))[_0x748c('0x3b')](handleError(_0x433681,null));}; \ No newline at end of file diff --git a/server/api/cmHopperHistory/cmHopperHistory.model.js b/server/api/cmHopperHistory/cmHopperHistory.model.js new file mode 100644 index 0000000..8238a06 --- /dev/null +++ b/server/api/cmHopperHistory/cmHopperHistory.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x77e6=['path','../../config/environment','./cmHopperHistory.attributes','define','endtime','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x28d225,_0x43be18){var _0x1f79e1=function(_0x362c23){while(--_0x362c23){_0x28d225['push'](_0x28d225['shift']());}};_0x1f79e1(++_0x43be18);}(_0x77e6,0x1a6));var _0x677e=function(_0x573e4d,_0x539620){_0x573e4d=_0x573e4d-0x0;var _0x703958=_0x77e6[_0x573e4d];return _0x703958;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var logger=require(_0x677e('0x2'))(_0x677e('0x3'));var moment=require(_0x677e('0x4'));var BPromise=require(_0x677e('0x5'));var rp=require(_0x677e('0x6'));var fs=require('fs');var path=require(_0x677e('0x7'));var rimraf=require('rimraf');var config=require(_0x677e('0x8'));var attributes=require(_0x677e('0x9'));module['exports']=function(_0x18c5e1,_0x591b21){return _0x18c5e1[_0x677e('0xa')]('CmHopperHistory',attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x677e('0xb'),'fields':[_0x677e('0xb')]},{'name':_0x677e('0xc'),'fields':[_0x677e('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmHopperHistory/cmHopperHistory.rpc.js b/server/api/cmHopperHistory/cmHopperHistory.rpc.js new file mode 100644 index 0000000..2a39380 --- /dev/null +++ b/server/api/cmHopperHistory/cmHopperHistory.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc961=['options','catch','AvgHandleTime','where','sequelize','col','COUNT','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','raw','campaign','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','GetCampaignHopperHistory','findAll','ivrTotalCallsDays','lodash','util','moment','bluebird','randomstring','ioredis','rpc','jayson/promise','http','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateCmHopperHistory','CmHopperHistory','create','body'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xc961,0x17a));var _0x1c96=function(_0x232d09,_0x30a518){_0x232d09=_0x232d09-0x0;var _0x454385=_0xc961[_0x232d09];return _0x454385;};'use strict';var _=require(_0x1c96('0x0'));var util=require(_0x1c96('0x1'));var moment=require(_0x1c96('0x2'));var BPromise=require(_0x1c96('0x3'));var rs=require(_0x1c96('0x4'));var fs=require('fs');var Redis=require(_0x1c96('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1c96('0x6'));var config=require('../../config/environment');var jayson=require(_0x1c96('0x7'));var client=jayson['client'][_0x1c96('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2d4b23,_0x1f09ff,_0x307846){return new BPromise(function(_0x2e4fa5,_0x473a4c){return client['request'](_0x2d4b23,_0x307846)[_0x1c96('0x9')](function(_0x362e46){logger[_0x1c96('0xa')](_0x1c96('0xb'),_0x1f09ff,_0x1c96('0xc'));logger[_0x1c96('0xd')](_0x1c96('0xe'),_0x1f09ff,_0x1c96('0xc'),JSON[_0x1c96('0xf')](_0x362e46));if(_0x362e46[_0x1c96('0x10')]){if(_0x362e46[_0x1c96('0x10')][_0x1c96('0x11')]===0x1f4){logger['error'](_0x1c96('0xb'),_0x1f09ff,_0x362e46[_0x1c96('0x10')]['message']);return _0x473a4c(_0x362e46[_0x1c96('0x10')][_0x1c96('0x12')]);}logger[_0x1c96('0x10')](_0x1c96('0xb'),_0x1f09ff,_0x362e46[_0x1c96('0x10')][_0x1c96('0x12')]);return _0x2e4fa5(_0x362e46[_0x1c96('0x10')][_0x1c96('0x12')]);}else{logger[_0x1c96('0xa')](_0x1c96('0xb'),_0x1f09ff,_0x1c96('0xc'));_0x2e4fa5(_0x362e46[_0x1c96('0x13')][_0x1c96('0x12')]);}})['catch'](function(_0x32596e){logger['error'](_0x1c96('0xb'),_0x1f09ff,_0x32596e);_0x473a4c(_0x32596e);});});}exports[_0x1c96('0x14')]=function(_0x595429){var _0x29dafb=this;return new Promise(function(_0x491875,_0x57efce){return db[_0x1c96('0x15')][_0x1c96('0x16')](_0x595429[_0x1c96('0x17')],{'raw':_0x595429['options']?_0x595429[_0x1c96('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x1c96('0x9')](function(_0x174ebf){logger['info'](_0x1c96('0x14'),_0x595429);logger['debug'](_0x1c96('0x14'),_0x595429,JSON[_0x1c96('0xf')](_0x174ebf));_0x491875(_0x174ebf);})[_0x1c96('0x19')](function(_0x3f4293){logger[_0x1c96('0x10')](_0x1c96('0x14'),_0x3f4293[_0x1c96('0x12')],_0x595429);_0x57efce(_0x29dafb[_0x1c96('0x10')](0x1f4,_0x3f4293[_0x1c96('0x12')]));});});};exports[_0x1c96('0x1a')]=function(_0x4d2c9c){var _0x24c60c=this;return new Promise(function(_0x18b849,_0x289ee5){return db['CmHopperHistory']['findAll']({'raw':_0x4d2c9c[_0x1c96('0x18')]?_0x4d2c9c[_0x1c96('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4d2c9c[_0x1c96('0x18')]?_0x4d2c9c[_0x1c96('0x18')][_0x1c96('0x1b')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x1c96('0x1c')][_0x1c96('0x1d')]('id')),'predictiveIntervalTotalCalls'],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0x1c96('0x1f')],[db['sequelize']['fn'](_0x1c96('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0x1c96('0x20')](_0x1c96('0x21')))),_0x1c96('0x22')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db['sequelize']['literal'](_0x1c96('0x23')))),_0x1c96('0x24')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x25'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x26')))),_0x1c96('0x27')],[db['sequelize']['fn'](_0x1c96('0x25'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x28')))),_0x1c96('0x29')]]})['then'](function(_0x353732){logger[_0x1c96('0xa')]('AvgHandleTime',_0x4d2c9c);logger[_0x1c96('0xd')](_0x1c96('0x1a'),_0x4d2c9c,JSON[_0x1c96('0xf')](_0x353732));_0x18b849(_0x353732);})[_0x1c96('0x19')](function(_0x2c812c){logger[_0x1c96('0x10')](_0x1c96('0x1a'),_0x2c812c['message'],_0x4d2c9c);_0x289ee5(_0x24c60c['error'](0x1f4,_0x2c812c[_0x1c96('0x12')]));});});};exports[_0x1c96('0x2a')]=function(_0x51fd52){var _0x30a200=this;return new Promise(function(_0x53214a,_0x2adcb3){return db[_0x1c96('0x15')]['findAll']({'raw':_0x51fd52['options']?_0x51fd52[_0x1c96('0x18')][_0x1c96('0x2b')]===undefined?!![]:![]:!![],'where':_0x51fd52[_0x1c96('0x18')]?_0x51fd52[_0x1c96('0x18')][_0x1c96('0x1b')]||null:null,'attributes':[[_0x1c96('0x2c'),_0x1c96('0x2d')],[db['sequelize']['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db['sequelize'][_0x1c96('0x20')]('`state`\x20=\x200,\x201,\x20null'))),_0x1c96('0x2e')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db['sequelize'][_0x1c96('0x20')](_0x1c96('0x2f')))),_0x1c96('0x30')],[db[_0x1c96('0x1c')]['fn']('COUNT',db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')]['literal'](_0x1c96('0x31')))),_0x1c96('0x32')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x33')))),'outboundBusyCallsDay'],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x34')))),_0x1c96('0x35')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0x1c96('0x20')](_0x1c96('0x36')))),_0x1c96('0x37')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0x1c96('0x20')](_0x1c96('0x38')))),_0x1c96('0x39')],[db['sequelize']['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db['sequelize'][_0x1c96('0x20')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2013,\x201,\x20null'))),_0x1c96('0x3a')],[db['sequelize']['fn'](_0x1c96('0x1e'),db['sequelize']['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x3b')))),_0x1c96('0x3c')],[db['sequelize']['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')]('`state`\x20=\x2018,\x201,\x20null'))),_0x1c96('0x3d')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x3e')))),'outboundAnswerAgiCallsDay'],[db[_0x1c96('0x1c')]['fn']('COUNT',db[_0x1c96('0x1c')]['fn']('IF',db[_0x1c96('0x1c')]['literal']('`state`\x20=\x2020,\x201,\x20null'))),_0x1c96('0x3d')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db['sequelize']['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x3f')))),'outboundReCallsDay']],'group':['campaign']})[_0x1c96('0x9')](function(_0x534f61){logger['info']('GetVoiceQueueHopperHistory',_0x51fd52);logger['debug'](_0x1c96('0x2a'),_0x51fd52,JSON['stringify'](_0x534f61));_0x53214a(_0x534f61);})['catch'](function(_0x5c896e){logger[_0x1c96('0x10')](_0x1c96('0x2a'),_0x5c896e[_0x1c96('0x12')],_0x51fd52);_0x2adcb3(_0x30a200[_0x1c96('0x10')](0x1f4,_0x5c896e[_0x1c96('0x12')]));});});};exports[_0x1c96('0x40')]=function(_0x42ac0d){var _0x365116=this;return new Promise(function(_0x9e73ff,_0x4e4342){return db[_0x1c96('0x15')][_0x1c96('0x41')]({'raw':_0x42ac0d[_0x1c96('0x18')]?_0x42ac0d[_0x1c96('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x42ac0d[_0x1c96('0x18')]?_0x42ac0d[_0x1c96('0x18')][_0x1c96('0x1b')]||null:null,'attributes':[[_0x1c96('0x2c'),_0x1c96('0x2d')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db[_0x1c96('0x1c')]['col']('id')),_0x1c96('0x42')],[db[_0x1c96('0x1c')]['fn'](_0x1c96('0x1e'),db['sequelize']['fn']('IF',db[_0x1c96('0x1c')][_0x1c96('0x20')](_0x1c96('0x31')))),'ivrAnswerCallsDay']],'group':['campaign']})[_0x1c96('0x9')](function(_0x457332){logger['info']('GetCampaignHopperHistory',_0x42ac0d);logger['debug'](_0x1c96('0x40'),_0x42ac0d,JSON[_0x1c96('0xf')](_0x457332));_0x9e73ff(_0x457332);})[_0x1c96('0x19')](function(_0x1f63ac){logger['error'](_0x1c96('0x40'),_0x1f63ac[_0x1c96('0x12')],_0x42ac0d);_0x4e4342(_0x365116[_0x1c96('0x10')](0x1f4,_0x1f63ac[_0x1c96('0x12')]));});});}; \ No newline at end of file diff --git a/server/api/cmHopperHistory/index.js b/server/api/cmHopperHistory/index.js new file mode 100644 index 0000000..d681ef6 --- /dev/null +++ b/server/api/cmHopperHistory/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xeb41=['create','put','/:id','update','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x183a3c,_0x3f8402){var _0x31f8f1=function(_0x532279){while(--_0x532279){_0x183a3c['push'](_0x183a3c['shift']());}};_0x31f8f1(++_0x3f8402);}(_0xeb41,0x122));var _0x1eb4=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xeb41[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0x1eb4('0x0'));var util=require(_0x1eb4('0x1'));var path=require('path');var timeout=require(_0x1eb4('0x2'));var express=require(_0x1eb4('0x3'));var router=express[_0x1eb4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1eb4('0x5'));var interaction=require(_0x1eb4('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperHistory.controller');router[_0x1eb4('0x7')]('/',auth[_0x1eb4('0x8')](),controller[_0x1eb4('0x9')]);router[_0x1eb4('0x7')](_0x1eb4('0xa'),auth[_0x1eb4('0x8')](),controller[_0x1eb4('0xb')]);router[_0x1eb4('0x7')]('/:id',auth[_0x1eb4('0x8')](),controller[_0x1eb4('0xc')]);router[_0x1eb4('0xd')]('/',auth[_0x1eb4('0x8')](),controller[_0x1eb4('0xe')]);router[_0x1eb4('0xf')](_0x1eb4('0x10'),auth['isAuthenticated'](),controller[_0x1eb4('0x11')]);module[_0x1eb4('0x12')]=router; \ No newline at end of file diff --git a/server/api/cmList/cmList.attributes.js b/server/api/cmList/cmList.attributes.js new file mode 100644 index 0000000..b0b89e7 --- /dev/null +++ b/server/api/cmList/cmList.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3a0f=['STRING'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0x3a0f,0x145));var _0xf3a0=function(_0x55e001,_0x82fc54){_0x55e001=_0x55e001-0x0;var _0xf487fa=_0x3a0f[_0x55e001];return _0xf487fa;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xf3a0('0x0')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0xf3a0('0x0')]}}; \ No newline at end of file diff --git a/server/api/cmList/cmList.controller.js b/server/api/cmList/cmList.controller.js new file mode 100644 index 0000000..63d603b --- /dev/null +++ b/server/api/cmList/cmList.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa0e6=['raw','getContactsCsv','ContactItemType','OrderBy','alias','select','cm_contacts','c.ListId\x20=\x20?','field','c.cf_','item','from','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','findOne','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','sequelize','queryInterface','addColumn','findAndCountAll','getGlobalCustomFields','addAgents','spread','removeAgents','emit','userCmList:remove','getAgents','info','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','options','includeAll','CmList','findAll','rows','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','removeDispositions','CmContact','tags','isArray','push','each','omit','ids','success','errors','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d'];(function(_0x39f9ac,_0x2dae2d){var _0x500e6=function(_0x4b6bd4){while(--_0x4b6bd4){_0x39f9ac['push'](_0x39f9ac['shift']());}};_0x500e6(++_0x2dae2d);}(_0xa0e6,0xca));var _0x6a0e=function(_0x43eab0,_0x22ca92){_0x43eab0=_0x43eab0-0x0;var _0x1635bc=_0xa0e6[_0x43eab0];return _0x1635bc;};'use strict';var emlformat=require(_0x6a0e('0x0'));var rimraf=require(_0x6a0e('0x1'));var zipdir=require(_0x6a0e('0x2'));var jsonpatch=require(_0x6a0e('0x3'));var rp=require('request-promise');var moment=require(_0x6a0e('0x4'));var BPromise=require(_0x6a0e('0x5'));var Mustache=require(_0x6a0e('0x6'));var util=require(_0x6a0e('0x7'));var path=require(_0x6a0e('0x8'));var sox=require(_0x6a0e('0x9'));var csv=require(_0x6a0e('0xa'));var ejs=require(_0x6a0e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6a0e('0xc'));var crypto=require('crypto');var jsforce=require(_0x6a0e('0xd'));var deskjs=require(_0x6a0e('0xe'));var toCsv=require(_0x6a0e('0xa'));var querystring=require(_0x6a0e('0xf'));var Papa=require('papaparse');var Redis=require(_0x6a0e('0x10'));var authService=require(_0x6a0e('0x11'));var qs=require(_0x6a0e('0x12'));var as=require(_0x6a0e('0x13'));var hardwareService=require(_0x6a0e('0x14'));var logger=require('../../config/logger')(_0x6a0e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6a0e('0x16'));var db=require(_0x6a0e('0x17'))['db'];var csv_results;config['redis']=_[_0x6a0e('0x18')](config[_0x6a0e('0x19')],{'host':_0x6a0e('0x1a'),'port':0x18eb});var socket=require(_0x6a0e('0x1b'))(new Redis(config[_0x6a0e('0x19')]));require('./cmList.socket')[_0x6a0e('0x1c')](socket);function respondWithStatusCode(_0x1d848f,_0x4ef6c1){_0x4ef6c1=_0x4ef6c1||0xcc;return function(_0x1f8449){if(_0x1f8449){return _0x1d848f[_0x6a0e('0x1d')](_0x4ef6c1);}return _0x1d848f[_0x6a0e('0x1e')](_0x4ef6c1)[_0x6a0e('0x1f')]();};}function respondWithResult(_0x14583f,_0x445222){_0x445222=_0x445222||0xc8;return function(_0x5762fc){if(_0x5762fc){return _0x14583f[_0x6a0e('0x1e')](_0x445222)[_0x6a0e('0x20')](_0x5762fc);}};}function respondWithFilteredResult(_0x49c482,_0xe7825){return function(_0x54a100){if(_0x54a100){var _0x585629=typeof _0xe7825['offset']===_0x6a0e('0x21')&&typeof _0xe7825[_0x6a0e('0x22')]===_0x6a0e('0x21');var _0x555899=_0x54a100[_0x6a0e('0x23')];var _0x1fe84f=_0x585629?0x0:_0xe7825['offset'];var _0x5a8983=_0x585629?_0x54a100[_0x6a0e('0x23')]:_0xe7825['offset']+_0xe7825[_0x6a0e('0x22')];var _0x39a1be;if(_0x5a8983>=_0x555899){_0x5a8983=_0x555899;_0x39a1be=0xc8;}else{_0x39a1be=0xce;}_0x49c482[_0x6a0e('0x1e')](_0x39a1be);return _0x49c482[_0x6a0e('0x24')](_0x6a0e('0x25'),_0x1fe84f+'-'+_0x5a8983+'/'+_0x555899)[_0x6a0e('0x20')](_0x54a100);}return null;};}function patchUpdates(_0x5246cf){return function(_0x210596){try{jsonpatch[_0x6a0e('0x26')](_0x210596,_0x5246cf,!![]);}catch(_0x38e92f){return BPromise[_0x6a0e('0x27')](_0x38e92f);}return _0x210596[_0x6a0e('0x28')]();};}function saveUpdates(_0x22c863,_0x52f42a){return function(_0x24304b){if(_0x24304b){return _0x24304b[_0x6a0e('0x29')](_0x22c863)[_0x6a0e('0x2a')](function(_0x2dc853){return _0x2dc853;});}return null;};}function removeEntity(_0x21e549,_0x2966b0){return function(_0x2fcdd5){if(_0x2fcdd5){return _0x2fcdd5[_0x6a0e('0x2b')]()[_0x6a0e('0x2a')](function(){var _0x426a62=_0x2fcdd5[_0x6a0e('0x2c')]({'plain':!![]});var _0x4efb4e=_0x6a0e('0x2d');return db[_0x6a0e('0x2e')]['destroy']({'where':{'type':_0x4efb4e,'resourceId':_0x426a62['id']}})['then'](function(){return _0x2fcdd5;});})[_0x6a0e('0x2a')](function(){_0x21e549[_0x6a0e('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eb1a4,_0x5ad5d6){return function(_0x3160fc){if(!_0x3160fc){_0x5eb1a4[_0x6a0e('0x1d')](0x194);}return _0x3160fc;};}function handleError(_0x3374fa,_0x13604f){_0x13604f=_0x13604f||0x1f4;return function(_0x4effd3){logger[_0x6a0e('0x2f')](_0x4effd3[_0x6a0e('0x30')]);if(_0x4effd3[_0x6a0e('0x31')]){delete _0x4effd3[_0x6a0e('0x31')];}_0x3374fa['status'](_0x13604f)[_0x6a0e('0x32')](_0x4effd3);};}exports[_0x6a0e('0x33')]=function(_0x1b7dd5,_0x40a3f7){var _0x4ad104={},_0x53c4f0={},_0x7679ad={'count':0x0,'rows':[]};var _0x541dd2=_[_0x6a0e('0x34')](db['CmList'][_0x6a0e('0x35')],function(_0x453fb8){return{'name':_0x453fb8[_0x6a0e('0x36')],'type':_0x453fb8[_0x6a0e('0x37')]['key']};});_0x53c4f0[_0x6a0e('0x38')]=_[_0x6a0e('0x34')](_0x541dd2,_0x6a0e('0x31'));_0x53c4f0['query']=_[_0x6a0e('0x39')](_0x1b7dd5[_0x6a0e('0x3a')]);_0x53c4f0[_0x6a0e('0x3b')]=_[_0x6a0e('0x3c')](_0x53c4f0[_0x6a0e('0x38')],_0x53c4f0[_0x6a0e('0x3a')]);_0x4ad104['attributes']=_['intersection'](_0x53c4f0['model'],qs[_0x6a0e('0x3d')](_0x1b7dd5[_0x6a0e('0x3a')]['fields']));_0x4ad104[_0x6a0e('0x3e')]=_0x4ad104[_0x6a0e('0x3e')][_0x6a0e('0x3f')]?_0x4ad104[_0x6a0e('0x3e')]:_0x53c4f0[_0x6a0e('0x38')];if(!_0x1b7dd5[_0x6a0e('0x3a')][_0x6a0e('0x40')](_0x6a0e('0x41'))){_0x4ad104[_0x6a0e('0x22')]=qs[_0x6a0e('0x22')](_0x1b7dd5[_0x6a0e('0x3a')][_0x6a0e('0x22')]);_0x4ad104[_0x6a0e('0x42')]=qs[_0x6a0e('0x42')](_0x1b7dd5['query'][_0x6a0e('0x42')]);}_0x4ad104[_0x6a0e('0x43')]=qs[_0x6a0e('0x44')](_0x1b7dd5[_0x6a0e('0x3a')][_0x6a0e('0x44')]);_0x4ad104[_0x6a0e('0x45')]=qs['filters'](_[_0x6a0e('0x46')](_0x1b7dd5[_0x6a0e('0x3a')],_0x53c4f0[_0x6a0e('0x3b')]),_0x541dd2);if(_0x1b7dd5[_0x6a0e('0x3a')][_0x6a0e('0x47')]){_0x4ad104[_0x6a0e('0x45')]=_['merge'](_0x4ad104[_0x6a0e('0x45')],{'$or':_[_0x6a0e('0x34')](_0x541dd2,function(_0x1342ab){if(_0x1342ab[_0x6a0e('0x37')]!=='VIRTUAL'){var _0x432962={};_0x432962[_0x1342ab[_0x6a0e('0x31')]]={'$like':'%'+_0x1b7dd5[_0x6a0e('0x3a')][_0x6a0e('0x47')]+'%'};return _0x432962;}})});}_0x4ad104=_[_0x6a0e('0x48')]({},_0x4ad104,_0x1b7dd5[_0x6a0e('0x49')]);var _0x306bd6={'where':_0x4ad104[_0x6a0e('0x45')]};return db['CmList']['count'](_0x306bd6)['then'](function(_0x114b67){_0x7679ad[_0x6a0e('0x23')]=_0x114b67;if(_0x1b7dd5[_0x6a0e('0x3a')][_0x6a0e('0x4a')]){_0x4ad104['include']=[{'all':!![]}];}return db[_0x6a0e('0x4b')][_0x6a0e('0x4c')](_0x4ad104);})[_0x6a0e('0x2a')](function(_0x13f413){_0x7679ad[_0x6a0e('0x4d')]=_0x13f413;return _0x7679ad;})[_0x6a0e('0x2a')](respondWithFilteredResult(_0x40a3f7,_0x4ad104))[_0x6a0e('0x4e')](handleError(_0x40a3f7,null));};exports[_0x6a0e('0x4f')]=function(_0x5ce5d8,_0x1fa36b){var _0x5327ef={'raw':![],'where':{'id':_0x5ce5d8[_0x6a0e('0x50')]['id']}},_0x2d057b={};_0x2d057b['model']=_[_0x6a0e('0x39')](db[_0x6a0e('0x4b')]['rawAttributes']);_0x2d057b[_0x6a0e('0x3a')]=_[_0x6a0e('0x39')](_0x5ce5d8[_0x6a0e('0x3a')]);_0x2d057b[_0x6a0e('0x3b')]=_[_0x6a0e('0x3c')](_0x2d057b[_0x6a0e('0x38')],_0x2d057b[_0x6a0e('0x3a')]);_0x5327ef[_0x6a0e('0x3e')]=_[_0x6a0e('0x3c')](_0x2d057b[_0x6a0e('0x38')],qs[_0x6a0e('0x3d')](_0x5ce5d8['query'][_0x6a0e('0x3d')]));_0x5327ef[_0x6a0e('0x3e')]=_0x5327ef[_0x6a0e('0x3e')][_0x6a0e('0x3f')]?_0x5327ef['attributes']:_0x2d057b[_0x6a0e('0x38')];if(_0x5ce5d8[_0x6a0e('0x3a')][_0x6a0e('0x4a')]){_0x5327ef[_0x6a0e('0x51')]=[{'all':!![]}];}_0x5327ef=_[_0x6a0e('0x48')]({},_0x5327ef,_0x5ce5d8[_0x6a0e('0x49')]);return db[_0x6a0e('0x4b')]['find'](_0x5327ef)[_0x6a0e('0x2a')](handleEntityNotFound(_0x1fa36b,null))['then'](respondWithResult(_0x1fa36b,null))[_0x6a0e('0x4e')](handleError(_0x1fa36b,null));};exports[_0x6a0e('0x52')]=function(_0x5983a0,_0x3cb2fa){return db[_0x6a0e('0x4b')][_0x6a0e('0x52')](_0x5983a0[_0x6a0e('0x53')],{})['then'](function(_0x3acc80){var _0x4c2959=_0x5983a0[_0x6a0e('0x54')]['get']({'plain':!![]});if(!_0x4c2959)throw new Error(_0x6a0e('0x55'));if(_0x4c2959[_0x6a0e('0x56')]===_0x6a0e('0x54')){var _0x5b7b49=_0x3acc80['get']({'plain':!![]});var _0x16e15b=_0x6a0e('0x2d');return db[_0x6a0e('0x57')][_0x6a0e('0x58')]({'where':{'name':_0x16e15b,'userProfileId':_0x4c2959['userProfileId']},'raw':!![]})[_0x6a0e('0x2a')](function(_0x447f97){if(_0x447f97&&_0x447f97[_0x6a0e('0x59')]===0x0){return db[_0x6a0e('0x2e')][_0x6a0e('0x52')]({'name':_0x5b7b49['name'],'resourceId':_0x5b7b49['id'],'type':_0x447f97[_0x6a0e('0x31')],'sectionId':_0x447f97['id']},{})[_0x6a0e('0x2a')](function(){return _0x3acc80;});}else{return _0x3acc80;}})[_0x6a0e('0x4e')](function(_0x3fdfdd){logger[_0x6a0e('0x2f')](_0x6a0e('0x5a'),_0x3fdfdd);throw _0x3fdfdd;});}return _0x3acc80;})[_0x6a0e('0x2a')](respondWithResult(_0x3cb2fa,0xc9))[_0x6a0e('0x4e')](handleError(_0x3cb2fa,null));};exports['update']=function(_0x111434,_0x28b72a){if(_0x111434[_0x6a0e('0x53')]['id']){delete _0x111434[_0x6a0e('0x53')]['id'];}return db['CmList']['find']({'where':{'id':_0x111434[_0x6a0e('0x50')]['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x28b72a,null))['then'](saveUpdates(_0x111434[_0x6a0e('0x53')],null))[_0x6a0e('0x2a')](respondWithResult(_0x28b72a,null))[_0x6a0e('0x4e')](handleError(_0x28b72a,null));};exports['destroy']=function(_0x547395,_0x73f09f){return db[_0x6a0e('0x4b')]['find']({'where':{'id':_0x547395[_0x6a0e('0x50')]['id']}})['then'](handleEntityNotFound(_0x73f09f,null))[_0x6a0e('0x2a')](removeEntity(_0x73f09f,null))[_0x6a0e('0x4e')](handleError(_0x73f09f,null));};exports[_0x6a0e('0x5b')]=function(_0x387a1e,_0x4f734b){return db[_0x6a0e('0x4b')][_0x6a0e('0x5b')]()[_0x6a0e('0x2a')](respondWithResult(_0x4f734b,null))[_0x6a0e('0x4e')](handleError(_0x4f734b,null));};exports[_0x6a0e('0x5c')]=function(_0x3819d8,_0xd425d5,_0x4bcb80){if(_0x3819d8[_0x6a0e('0x53')]['id']){delete _0x3819d8[_0x6a0e('0x53')]['id'];}return db[_0x6a0e('0x4b')][_0x6a0e('0x58')]({'where':{'id':_0x3819d8[_0x6a0e('0x50')]['id']}})['then'](handleEntityNotFound(_0xd425d5,null))[_0x6a0e('0x2a')](function(_0x209d2c){if(_0x209d2c){_0x3819d8['body'][_0x6a0e('0x5d')]=_0x209d2c['id'];return db[_0x6a0e('0x5e')][_0x6a0e('0x52')](_0x3819d8[_0x6a0e('0x53')]);}})[_0x6a0e('0x2a')](respondWithResult(_0xd425d5,null))[_0x6a0e('0x4e')](handleError(_0xd425d5,null));};exports['getDispositions']=function(_0x37a4a1,_0x99cc1c,_0x2abc26){var _0xe30717={'raw':![],'where':{}};var _0x488ba2={};var _0x591a1f={'count':0x0,'rows':[]};return db[_0x6a0e('0x4b')]['findOne']({'where':{'id':_0x37a4a1[_0x6a0e('0x50')]['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x99cc1c,null))[_0x6a0e('0x2a')](function(_0x1c44aa){if(_0x1c44aa){_0x488ba2[_0x6a0e('0x38')]=_[_0x6a0e('0x39')](db[_0x6a0e('0x5e')][_0x6a0e('0x35')]);_0x488ba2[_0x6a0e('0x3a')]=_[_0x6a0e('0x39')](_0x37a4a1['query']);_0x488ba2['filters']=_[_0x6a0e('0x3c')](_0x488ba2[_0x6a0e('0x38')],_0x488ba2[_0x6a0e('0x3a')]);_0xe30717[_0x6a0e('0x3e')]=_[_0x6a0e('0x3c')](_0x488ba2['model'],qs[_0x6a0e('0x3d')](_0x37a4a1[_0x6a0e('0x3a')][_0x6a0e('0x3d')]));_0xe30717['attributes']=_0xe30717['attributes'][_0x6a0e('0x3f')]?_0xe30717[_0x6a0e('0x3e')]:_0x488ba2[_0x6a0e('0x38')];if(!_0x37a4a1[_0x6a0e('0x3a')]['hasOwnProperty']('nolimit')){_0xe30717[_0x6a0e('0x22')]=qs[_0x6a0e('0x22')](_0x37a4a1['query']['limit']);_0xe30717[_0x6a0e('0x42')]=qs[_0x6a0e('0x42')](_0x37a4a1['query'][_0x6a0e('0x42')]);}_0xe30717[_0x6a0e('0x43')]=qs[_0x6a0e('0x44')](_0x37a4a1[_0x6a0e('0x3a')][_0x6a0e('0x44')]);_0xe30717[_0x6a0e('0x45')]=qs[_0x6a0e('0x3b')](_[_0x6a0e('0x46')](_0x37a4a1[_0x6a0e('0x3a')],_0x488ba2[_0x6a0e('0x3b')]));_0xe30717[_0x6a0e('0x45')]['ListId']=_0x1c44aa['id'];if(_0x37a4a1['query'][_0x6a0e('0x47')]){_0xe30717[_0x6a0e('0x45')]=_[_0x6a0e('0x48')](_0xe30717[_0x6a0e('0x45')],{'$or':_['map'](_0xe30717[_0x6a0e('0x3e')],function(_0x2bf3be){var _0x1e502f={};_0x1e502f[_0x2bf3be]={'$like':'%'+_0x37a4a1['query'][_0x6a0e('0x47')]+'%'};return _0x1e502f;})});}_0xe30717=_['merge']({},_0xe30717,_0x37a4a1['options']);return db['Disposition'][_0x6a0e('0x23')]({'where':_0xe30717[_0x6a0e('0x45')]})['then'](function(_0x2e54be){_0x591a1f[_0x6a0e('0x23')]=_0x2e54be;if(_0x37a4a1[_0x6a0e('0x3a')][_0x6a0e('0x4a')]){_0xe30717['include']=[{'all':!![]}];}return db['Disposition'][_0x6a0e('0x4c')](_0xe30717);})[_0x6a0e('0x2a')](function(_0x523869){_0x591a1f[_0x6a0e('0x4d')]=_0x523869;return _0x591a1f;});}})['then'](respondWithFilteredResult(_0x99cc1c,_0xe30717))[_0x6a0e('0x4e')](handleError(_0x99cc1c,null));};exports[_0x6a0e('0x5f')]=function(_0x936c7a,_0x76ec97,_0x58766e){return db['CmList']['find']({'where':{'id':_0x936c7a['params']['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x76ec97,null))['then'](function(_0xc9d562){if(_0xc9d562){return _0xc9d562[_0x6a0e('0x5f')](_0x936c7a[_0x6a0e('0x3a')]['ids']);}})[_0x6a0e('0x2a')](respondWithStatusCode(_0x76ec97,null))[_0x6a0e('0x4e')](handleError(_0x76ec97,null));};exports['addContacts']=function(_0xb55ed6,_0x27b4d2,_0x4b1a2b){return db[_0x6a0e('0x4b')][_0x6a0e('0x58')]({'where':{'id':_0xb55ed6[_0x6a0e('0x50')]['id']}})['then'](handleEntityNotFound(_0x27b4d2,null))[_0x6a0e('0x2a')](function(_0x32f9c6){if(_0x32f9c6){var _0x383156=[];var _0x10b89f={'success':[],'errors':[]};return db[_0x6a0e('0x60')][_0x6a0e('0x5b')]()[_0x6a0e('0x2a')](function(_0x2e6f26){if(_0xb55ed6['body']['tags']&&_['isArray'](_0xb55ed6['body'][_0x6a0e('0x61')])){if(_0xb55ed6[_0x6a0e('0x53')]['tags'][_0x6a0e('0x3f')]){_0xb55ed6[_0x6a0e('0x53')]['tags']=_0xb55ed6[_0x6a0e('0x53')][_0x6a0e('0x61')]['join'](';')+';';}else{_0xb55ed6[_0x6a0e('0x53')][_0x6a0e('0x61')]=null;}}else{_0xb55ed6[_0x6a0e('0x53')][_0x6a0e('0x61')]=null;}if(_0xb55ed6[_0x6a0e('0x53')]&&_[_0x6a0e('0x62')](_0xb55ed6['body'])){for(var _0x11d897=0x0;_0x11d897<_0xb55ed6[_0x6a0e('0x53')][_0x6a0e('0x3f')];_0x11d897+=0x1){_0xb55ed6['body'][_0x11d897][_0x6a0e('0x5d')]=_0xb55ed6[_0x6a0e('0x50')]['id'];_0x383156[_0x6a0e('0x63')](_0xb55ed6['body'][_0x11d897]);}return BPromise[_0x6a0e('0x64')](_0x383156,function(_0x303587){return db['CmContact'][_0x6a0e('0x52')](_[_0x6a0e('0x65')](_0x303587,[_0x6a0e('0x66'),'id'])||{},{'fields':_['keys'](_0x2e6f26),'raw':!![]})[_0x6a0e('0x2a')](function(_0x4ed313){_0x10b89f[_0x6a0e('0x67')]['push'](_0x4ed313['dataValues']);})[_0x6a0e('0x4e')](function(_0x37bc89){_0x10b89f[_0x6a0e('0x68')]['push']({'data':_0x303587,'error':_0x37bc89['message']});});})['then'](function(_0x5442b1){return _0x10b89f;})[_0x6a0e('0x4e')](function(_0x237b10){return _0x237b10;});}else{_0x27b4d2[_0x6a0e('0x1e')](0x190)[_0x6a0e('0x20')]({'message':_0x6a0e('0x69')});}});}})[_0x6a0e('0x2a')](respondWithResult(_0x27b4d2,null))['catch'](handleError(_0x27b4d2,null));};exports[_0x6a0e('0x6a')]=function(_0x4426b3,_0x3233d8,_0x4ae3ba){var _0x20f520;return db[_0x6a0e('0x4b')]['find']({'where':{'id':_0x4426b3[_0x6a0e('0x50')]['id']},'include':[{'model':db[_0x6a0e('0x6b')],'as':_0x6a0e('0x6c')}]})[_0x6a0e('0x2a')](handleEntityNotFound(_0x3233d8,null))[_0x6a0e('0x2a')](function(_0x26adf0){if(_0x26adf0){_0x20f520=_0x26adf0;return db[_0x6a0e('0x60')][_0x6a0e('0x35')];}})[_0x6a0e('0x2a')](function(_0x94917f){if(_0x94917f){var _0x405633={};var _0x317cec={};_0x317cec[_0x6a0e('0x38')]=_[_0x6a0e('0x6d')](_['keys'](_0x94917f),_[_0x6a0e('0x34')](_0x20f520[_0x6a0e('0x6c')],function(_0x3a3872){return util[_0x6a0e('0x6e')](_0x6a0e('0x6f'),_0x3a3872['id']);}));_0x317cec[_0x6a0e('0x3a')]=_[_0x6a0e('0x39')](_0x4426b3[_0x6a0e('0x3a')]);_0x317cec[_0x6a0e('0x3b')]=_[_0x6a0e('0x3c')](_0x317cec[_0x6a0e('0x38')],_0x317cec['query']);_0x405633[_0x6a0e('0x3e')]=_[_0x6a0e('0x3c')](_0x317cec['model'],qs[_0x6a0e('0x3d')](_0x4426b3[_0x6a0e('0x3a')][_0x6a0e('0x3d')]));_0x405633[_0x6a0e('0x3e')]=_0x405633[_0x6a0e('0x3e')][_0x6a0e('0x3f')]?_0x405633[_0x6a0e('0x3e')]:_0x317cec[_0x6a0e('0x38')];if(!_0x4426b3['query'][_0x6a0e('0x40')](_0x6a0e('0x41'))){_0x405633[_0x6a0e('0x22')]=qs['limit'](_0x4426b3['query'][_0x6a0e('0x22')]);_0x405633[_0x6a0e('0x42')]=qs[_0x6a0e('0x42')](_0x4426b3['query'][_0x6a0e('0x42')]);}_0x405633['order']=qs['sort'](_0x4426b3['query'][_0x6a0e('0x44')]);_0x405633[_0x6a0e('0x45')]=qs['filters'](_[_0x6a0e('0x46')](_0x4426b3[_0x6a0e('0x3a')],_0x317cec[_0x6a0e('0x3b')]));_0x405633[_0x6a0e('0x70')]=!![];if(_0x4426b3[_0x6a0e('0x3a')][_0x6a0e('0x47')]){_0x405633[_0x6a0e('0x45')]=_['merge'](_0x405633[_0x6a0e('0x45')],{'$or':_[_0x6a0e('0x34')](_0x405633[_0x6a0e('0x3e')],function(_0x2b9554){var _0x1166c0={};_0x1166c0[_0x2b9554]={'$like':'%'+_0x4426b3[_0x6a0e('0x3a')][_0x6a0e('0x47')]+'%'};return _0x1166c0;})});}_0x405633=_[_0x6a0e('0x48')]({},_0x405633,_0x4426b3['options']);return _0x20f520[_0x6a0e('0x6a')](_0x405633);}})[_0x6a0e('0x2a')](respondWithResult(_0x3233d8,null))[_0x6a0e('0x4e')](handleError(_0x3233d8,null));};exports[_0x6a0e('0x71')]=function(_0x2017f6,_0x450cba,_0x1755c4){var _0x305566;var _0x2852d0;var _0x52a256;var _0xd8af5f=_0x2017f6[_0x6a0e('0x50')]['id'];csv_results=[];return db[_0x6a0e('0x72')][_0x6a0e('0x4c')]({'attributes':['id','name'],'raw':!![],'order':[_0x6a0e('0x73')]})[_0x6a0e('0x2a')](function(_0x181401){_0x305566=_0x181401;var _0x208198=_[_0x6a0e('0x39')](db[_0x6a0e('0x60')][_0x6a0e('0x35')]);return db[_0x6a0e('0x6b')][_0x6a0e('0x4c')]({'raw':!![],'attributes':['id',_0x6a0e('0x74')]})[_0x6a0e('0x2a')](function(_0x521e5d){_0x2852d0=_0x521e5d;var _0x269c29=squel[_0x6a0e('0x75')]()['fields'](_0x208198)['from'](_0x6a0e('0x76'),'c')[_0x6a0e('0x45')](_0x6a0e('0x77'),_0xd8af5f)[_0x6a0e('0x45')]('c.deletedAt\x20is\x20null')['distinct']();for(var _0x18dd17=0x0;_0x18dd17<_0x2852d0[_0x6a0e('0x3f')];_0x18dd17++){_0x269c29[_0x6a0e('0x78')](_0x6a0e('0x79')+_0x2852d0[_0x18dd17]['id'],'customField_'+_0x2852d0[_0x18dd17]['alias']);}for(var _0x18dd17=0x0;_0x18dd17<_0x305566[_0x6a0e('0x3f')];_0x18dd17++){_0x269c29[_0x6a0e('0x78')](squel[_0x6a0e('0x75')]()['field'](_0x6a0e('0x7a'))[_0x6a0e('0x7b')](_0x6a0e('0x7c'))[_0x6a0e('0x45')](_0x6a0e('0x7d'),_0x305566[_0x18dd17]['id'])[_0x6a0e('0x45')](_0x6a0e('0x7e')),'additionalPhone_'+_0x305566[_0x18dd17][_0x6a0e('0x31')]);_0x269c29[_0x6a0e('0x78')](squel['select']()[_0x6a0e('0x78')]('description')[_0x6a0e('0x7b')]('cm_contact_has_items')['where'](_0x6a0e('0x7d'),_0x305566[_0x18dd17]['id'])['where'](_0x6a0e('0x7e')),_0x6a0e('0x7f')+_0x305566[_0x18dd17]['name']);}var _0x704691=[];_0x704691[_0x6a0e('0x63')](_0x269c29[_0x6a0e('0x80')]());BPromise['each'](_0x704691,handleQuery)[_0x6a0e('0x2a')](function(_0x320f74){handleQuery(_0x269c29['toString']());var _0x4c5bc5=csv_results[0x0];if(!_['isEmpty'](_0x4c5bc5)){var _0x471dd5=toCsv(_0x4c5bc5);var _0x11889a=Date['now']();fs['writeFileSync'](util[_0x6a0e('0x6e')](_0x6a0e('0x81'),_0xd8af5f,_0x11889a),_0x471dd5);_0x450cba[_0x6a0e('0x82')]('Content-disposition',_0x6a0e('0x83')+util[_0x6a0e('0x6e')](_0x6a0e('0x84'),_0xd8af5f,_0x11889a));_0x450cba[_0x6a0e('0x82')](_0x6a0e('0x85'),_0x6a0e('0x86'));return _0x450cba[_0x6a0e('0x87')](util[_0x6a0e('0x6e')]('/tmp/list_%d_%s.csv',_0xd8af5f,_0x11889a));}else{return _0x450cba['sendStatus'](0xcc);}});});});};exports[_0x6a0e('0x88')]=function(_0x169866,_0x1ec278,_0x1d66ec){var _0x46adc8;delete _0x169866[_0x6a0e('0x53')]['id'];return db[_0x6a0e('0x4b')][_0x6a0e('0x89')]({'where':{'id':_0x169866[_0x6a0e('0x50')]['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x1ec278,null))['then'](function(_0x32b462){if(_0x32b462){return db['sequelize'][_0x6a0e('0x8a')](function(_0x47648b){return db[_0x6a0e('0x6b')][_0x6a0e('0x52')](_0x169866[_0x6a0e('0x53')],{'transaction':_0x47648b})['then'](function(_0x1605f6){_0x46adc8=_0x1605f6;return _0x32b462[_0x6a0e('0x8b')](_0x1605f6,{'transaction':_0x47648b});})[_0x6a0e('0x2a')](function(){var _0x16c0c8={'type':db[_0x6a0e('0x8c')][_0x6a0e('0x8d')],'transaction':_0x47648b};switch(_0x169866[_0x6a0e('0x53')]['type']){case'text':_0x16c0c8['type']=db[_0x6a0e('0x8c')][_0x6a0e('0x8d')];break;case _0x6a0e('0x8e'):_0x16c0c8[_0x6a0e('0x37')]=db[_0x6a0e('0x8c')][_0x6a0e('0x8f')];break;case _0x6a0e('0x90'):_0x16c0c8[_0x6a0e('0x37')]=db[_0x6a0e('0x8c')]['BOOLEAN'];_0x16c0c8['defaultValue']=![];break;default:}return db[_0x6a0e('0x91')][_0x6a0e('0x92')][_0x6a0e('0x93')]('cm_contacts',util[_0x6a0e('0x6e')]('cf_%s',_0x46adc8['id']),_0x16c0c8);})['then'](function(){return _0x46adc8;});});}})[_0x6a0e('0x2a')](respondWithResult(_0x1ec278,null))['catch'](handleError(_0x1ec278,null));};exports['getCustomFields']=function(_0x272306,_0x34f7a8,_0x3c4533){var _0x250dca={};var _0x212eb0={};var _0x1dd6af;var _0x130412;return db['CmList'][_0x6a0e('0x89')]({'where':{'id':_0x272306['params']['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x34f7a8,null))['then'](function(_0x5499e6){if(_0x5499e6){_0x1dd6af=_0x5499e6;_0x212eb0[_0x6a0e('0x38')]=_['keys'](db['CmCustomField']['rawAttributes']);_0x212eb0[_0x6a0e('0x3a')]=_[_0x6a0e('0x39')](_0x272306[_0x6a0e('0x3a')]);_0x212eb0['filters']=_[_0x6a0e('0x3c')](_0x212eb0[_0x6a0e('0x38')],_0x212eb0['query']);_0x250dca[_0x6a0e('0x3e')]=_[_0x6a0e('0x3c')](_0x212eb0['model'],qs[_0x6a0e('0x3d')](_0x272306[_0x6a0e('0x3a')][_0x6a0e('0x3d')]));_0x250dca['attributes']=_0x250dca[_0x6a0e('0x3e')][_0x6a0e('0x3f')]?_0x250dca[_0x6a0e('0x3e')]:_0x212eb0[_0x6a0e('0x38')];_0x250dca[_0x6a0e('0x43')]=qs[_0x6a0e('0x44')](_0x272306[_0x6a0e('0x3a')]['sort']);_0x250dca['where']=qs[_0x6a0e('0x3b')](_[_0x6a0e('0x46')](_0x272306[_0x6a0e('0x3a')],_0x212eb0[_0x6a0e('0x3b')]));_0x250dca['where']=_[_0x6a0e('0x48')](_0x250dca[_0x6a0e('0x45')],{'$or':[{'ListId':_0x5499e6['id']},{'ListId':null}]});if(_0x272306[_0x6a0e('0x3a')][_0x6a0e('0x47')]){_0x250dca[_0x6a0e('0x45')]=_[_0x6a0e('0x48')](_0x250dca[_0x6a0e('0x45')],{'$or':_['map'](_0x250dca['attributes'],function(_0x17dbaf){var _0x508089={};_0x508089[_0x17dbaf]={'$like':'%'+_0x272306[_0x6a0e('0x3a')][_0x6a0e('0x47')]+'%'};return _0x508089;})});}_0x250dca=_['merge']({},_0x250dca,_0x272306[_0x6a0e('0x49')]);return db[_0x6a0e('0x6b')][_0x6a0e('0x94')](_0x250dca);}})['then'](respondWithResult(_0x34f7a8,null))['catch'](handleError(_0x34f7a8,null));};exports[_0x6a0e('0x95')]=function(_0x4e9066,_0x1ef0ed){return db['CmCustomField'][_0x6a0e('0x94')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x1ef0ed,null))[_0x6a0e('0x2a')](function(_0x33f4ae){return _0x33f4ae;})['then'](respondWithResult(_0x1ef0ed,null))[_0x6a0e('0x4e')](handleError(_0x1ef0ed,null));};exports[_0x6a0e('0x96')]=function(_0x2ea1b9,_0x4d317c,_0x1f93c8){return db[_0x6a0e('0x4b')][_0x6a0e('0x58')]({'where':{'id':_0x2ea1b9[_0x6a0e('0x50')]['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x4d317c,null))[_0x6a0e('0x2a')](function(_0x14a22e){if(_0x14a22e){return _0x14a22e[_0x6a0e('0x96')](_0x2ea1b9['body'][_0x6a0e('0x66')],_['omit'](_0x2ea1b9['body'],['ids','id'])||{})[_0x6a0e('0x97')](function(_0x323b64){for(var _0x1c35ab=0x0;_0x1c35ab<_0x2ea1b9[_0x6a0e('0x53')][_0x6a0e('0x66')][_0x6a0e('0x3f')];_0x1c35ab+=0x1){socket['emit']('userCmList:save',{'UserId':Number(_0x2ea1b9[_0x6a0e('0x53')][_0x6a0e('0x66')][_0x1c35ab]),'CmListId':Number(_0x2ea1b9[_0x6a0e('0x50')]['id'])});}return _0x323b64;});}})[_0x6a0e('0x2a')](respondWithResult(_0x4d317c,null))[_0x6a0e('0x4e')](handleError(_0x4d317c,null));};exports[_0x6a0e('0x98')]=function(_0x1c7a47,_0x54c9f1,_0x5d4677){return db[_0x6a0e('0x4b')]['find']({'where':{'id':_0x1c7a47[_0x6a0e('0x50')]['id']}})['then'](handleEntityNotFound(_0x54c9f1,null))[_0x6a0e('0x2a')](function(_0x4baf05){if(_0x4baf05){return _0x4baf05[_0x6a0e('0x98')](_0x1c7a47[_0x6a0e('0x3a')][_0x6a0e('0x66')])[_0x6a0e('0x2a')](function(){if(_[_0x6a0e('0x62')](_0x1c7a47[_0x6a0e('0x3a')]['ids'])){for(var _0xb40b53=0x0;_0xb40b53<_0x1c7a47[_0x6a0e('0x3a')][_0x6a0e('0x66')][_0x6a0e('0x3f')];_0xb40b53+=0x1){socket[_0x6a0e('0x99')](_0x6a0e('0x9a'),{'UserId':Number(_0x1c7a47[_0x6a0e('0x3a')][_0x6a0e('0x66')][_0xb40b53]),'CmListId':Number(_0x1c7a47[_0x6a0e('0x50')]['id'])});}}else{socket[_0x6a0e('0x99')](_0x6a0e('0x9a'),{'UserId':Number(_0x1c7a47[_0x6a0e('0x3a')][_0x6a0e('0x66')]),'CmListId':Number(_0x1c7a47[_0x6a0e('0x50')]['id'])});}});}})[_0x6a0e('0x2a')](respondWithStatusCode(_0x54c9f1,null))['catch'](handleError(_0x54c9f1,null));};exports[_0x6a0e('0x9b')]=function(_0x8e0702,_0x370310,_0x36f141){var _0x4f3d77={};var _0x1a0465={};var _0x50c4a6;var _0x4a5467;return db['CmList'][_0x6a0e('0x89')]({'where':{'id':_0x8e0702[_0x6a0e('0x50')]['id']}})[_0x6a0e('0x2a')](handleEntityNotFound(_0x370310,null))[_0x6a0e('0x2a')](function(_0x1ab68f){if(_0x1ab68f){_0x50c4a6=_0x1ab68f;_0x1a0465[_0x6a0e('0x38')]=_[_0x6a0e('0x39')](db['User'][_0x6a0e('0x35')]);_0x1a0465[_0x6a0e('0x3a')]=_[_0x6a0e('0x39')](_0x8e0702[_0x6a0e('0x3a')]);_0x1a0465[_0x6a0e('0x3b')]=_[_0x6a0e('0x3c')](_0x1a0465[_0x6a0e('0x38')],_0x1a0465[_0x6a0e('0x3a')]);_0x4f3d77[_0x6a0e('0x3e')]=_['intersection'](_0x1a0465[_0x6a0e('0x38')],qs['fields'](_0x8e0702[_0x6a0e('0x3a')][_0x6a0e('0x3d')]));_0x4f3d77[_0x6a0e('0x3e')]=_0x4f3d77[_0x6a0e('0x3e')][_0x6a0e('0x3f')]?_0x4f3d77[_0x6a0e('0x3e')]:_0x1a0465[_0x6a0e('0x38')];_0x4f3d77[_0x6a0e('0x43')]=qs[_0x6a0e('0x44')](_0x8e0702['query'][_0x6a0e('0x44')]);_0x4f3d77[_0x6a0e('0x45')]=qs['filters'](_[_0x6a0e('0x46')](_0x8e0702[_0x6a0e('0x3a')],_0x1a0465['filters']));if(_0x8e0702[_0x6a0e('0x3a')][_0x6a0e('0x47')]){_0x4f3d77[_0x6a0e('0x45')]=_[_0x6a0e('0x48')](_0x4f3d77['where'],{'$or':_[_0x6a0e('0x34')](_0x4f3d77['attributes'],function(_0x2e1043){var _0x5a98e8={};_0x5a98e8[_0x2e1043]={'$like':'%'+_0x8e0702[_0x6a0e('0x3a')][_0x6a0e('0x47')]+'%'};return _0x5a98e8;})});}_0x4f3d77=_[_0x6a0e('0x48')]({},_0x4f3d77,_0x8e0702[_0x6a0e('0x49')]);return _0x50c4a6[_0x6a0e('0x9b')](_0x4f3d77);}})[_0x6a0e('0x2a')](function(_0x163492){if(_0x163492){_0x4a5467=_0x163492['length'];if(!_0x8e0702[_0x6a0e('0x3a')]['hasOwnProperty'](_0x6a0e('0x41'))){_0x4f3d77[_0x6a0e('0x22')]=qs[_0x6a0e('0x22')](_0x8e0702['query']['limit']);_0x4f3d77['offset']=qs['offset'](_0x8e0702['query'][_0x6a0e('0x42')]);}return _0x50c4a6[_0x6a0e('0x9b')](_0x4f3d77);}})[_0x6a0e('0x2a')](function(_0xbba243){if(_0xbba243){return _0xbba243?{'count':_0x4a5467,'rows':_0xbba243}:null;}})[_0x6a0e('0x2a')](respondWithResult(_0x370310,null))[_0x6a0e('0x4e')](handleError(_0x370310,null));};function handleQuery(_0x4acdf0){logger[_0x6a0e('0x9c')](_0x4acdf0);return db[_0x6a0e('0x91')][_0x6a0e('0x3a')](_0x4acdf0)[_0x6a0e('0x97')](function(_0x3c62c2){csv_results['push'](_0x3c62c2);})[_0x6a0e('0x4e')](function(_0x28b3f2){logger[_0x6a0e('0x2f')](_0x28b3f2['message']);});} \ No newline at end of file diff --git a/server/api/cmList/cmList.events.js b/server/api/cmList/cmList.events.js new file mode 100644 index 0000000..1c6c2b5 --- /dev/null +++ b/server/api/cmList/cmList.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e74,0x175));var _0x43e7=function(_0x59c0f4,_0x1074e6){_0x59c0f4=_0x59c0f4-0x0;var _0x4a87a3=_0x3e74[_0x59c0f4];return _0x4a87a3;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents; \ No newline at end of file diff --git a/server/api/cmList/cmList.model.js b/server/api/cmList/cmList.model.js new file mode 100644 index 0000000..ad2d43d --- /dev/null +++ b/server/api/cmList/cmList.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6f0d=['./cmList.attributes','define','CmList','cm_lists','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x2f1a01,_0x17cd42){_0x2f1a01=_0x2f1a01-0x0;var _0x323b3e=_0x6f0d[_0x2f1a01];return _0x323b3e;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6f0('0x4'));var fs=require('fs');var path=require(_0xd6f0('0x5'));var rimraf=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var attributes=require(_0xd6f0('0x8'));module['exports']=function(_0x2d2ce6,_0x4a8b0c){return _0x2d2ce6[_0xd6f0('0x9')](_0xd6f0('0xa'),attributes,{'tableName':_0xd6f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/cmList/cmList.rpc.js b/server/api/cmList/cmList.rpc.js new file mode 100644 index 0000000..a0ddec1 --- /dev/null +++ b/server/api/cmList/cmList.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xec35=['info','catch','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','register','request','then','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','CmList,\x20%s,\x20%s','message'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xec35,0x172));var _0x5ec3=function(_0x416391,_0x390681){_0x416391=_0x416391-0x0;var _0x4e48e9=_0xec35[_0x416391];return _0x4e48e9;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x5ec3('0x0'));var rs=require(_0x5ec3('0x1'));var fs=require('fs');var Redis=require(_0x5ec3('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x5ec3('0x3'));var logger=require(_0x5ec3('0x4'))(_0x5ec3('0x5'));var config=require(_0x5ec3('0x6'));var jayson=require(_0x5ec3('0x7'));var client=jayson['client'][_0x5ec3('0x8')]({'port':0x232a});config[_0x5ec3('0x9')]=_['defaults'](config[_0x5ec3('0x9')],{'host':_0x5ec3('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5ec3('0x9')]));require('./cmList.socket')[_0x5ec3('0xb')](socket);function respondWithRpcPromise(_0x3fea0d,_0x2d22b6,_0x2cf6db){return new BPromise(function(_0x2466b6,_0x244fb6){return client[_0x5ec3('0xc')](_0x3fea0d,_0x2cf6db)[_0x5ec3('0xd')](function(_0x4a2a47){logger['info']('CmList,\x20%s,\x20%s',_0x2d22b6,'request\x20sent');logger[_0x5ec3('0xe')](_0x5ec3('0xf'),_0x2d22b6,_0x5ec3('0x10'),JSON['stringify'](_0x4a2a47));if(_0x4a2a47[_0x5ec3('0x11')]){if(_0x4a2a47[_0x5ec3('0x11')][_0x5ec3('0x12')]===0x1f4){logger['error'](_0x5ec3('0x13'),_0x2d22b6,_0x4a2a47[_0x5ec3('0x11')][_0x5ec3('0x14')]);return _0x244fb6(_0x4a2a47['error'][_0x5ec3('0x14')]);}logger['error']('CmList,\x20%s,\x20%s',_0x2d22b6,_0x4a2a47['error'][_0x5ec3('0x14')]);return _0x2466b6(_0x4a2a47[_0x5ec3('0x11')][_0x5ec3('0x14')]);}else{logger[_0x5ec3('0x15')]('CmList,\x20%s,\x20%s',_0x2d22b6,_0x5ec3('0x10'));_0x2466b6(_0x4a2a47['result']['message']);}})[_0x5ec3('0x16')](function(_0x46bca1){logger[_0x5ec3('0x11')](_0x5ec3('0x13'),_0x2d22b6,_0x46bca1);_0x244fb6(_0x46bca1);});});} \ No newline at end of file diff --git a/server/api/cmList/cmList.socket.js b/server/api/cmList/cmList.socket.js new file mode 100644 index 0000000..4bf364e --- /dev/null +++ b/server/api/cmList/cmList.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x96ad=['save','remove','emit','removeListener','register','length','cmList:','./cmList.events'];(function(_0x20cb20,_0x256051){var _0x2fcf4b=function(_0x26200b){while(--_0x26200b){_0x20cb20['push'](_0x20cb20['shift']());}};_0x2fcf4b(++_0x256051);}(_0x96ad,0x147));var _0xd96a=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x96ad[_0x35da42];return _0x370035;};'use strict';var CmListEvents=require(_0xd96a('0x0'));var events=[_0xd96a('0x1'),_0xd96a('0x2'),'update'];function createListener(_0x17b71c,_0x4615a6){return function(_0x27b133){_0x4615a6[_0xd96a('0x3')](_0x17b71c,_0x27b133);};}function removeListener(_0x4f91a2,_0x558f82){return function(){CmListEvents[_0xd96a('0x4')](_0x4f91a2,_0x558f82);};}exports[_0xd96a('0x5')]=function(_0x5ea4ca){for(var _0x309300=0x0,_0x4bb53a=events[_0xd96a('0x6')];_0x309300<_0x4bb53a;_0x309300++){var _0x2aaae0=events[_0x309300];var _0x260d30=createListener(_0xd96a('0x7')+_0x2aaae0,_0x5ea4ca);CmListEvents['on'](_0x2aaae0,_0x260d30);}}; \ No newline at end of file diff --git a/server/api/cmList/index.js b/server/api/cmList/index.js new file mode 100644 index 0000000..da16ac2 --- /dev/null +++ b/server/api/cmList/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x952f=['update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmList.controller','get','isAuthenticated','index','/describe','describe','/global_fields','getGlobalCustomFields','/:id','show','getDispositions','getContacts','/:id/fields','getCustomFields','/:id/users','getAgents','create','post','/:id/dispositions','addDisposition','/:id/contacts','addContacts','addCustomField','put'];(function(_0x4d033a,_0x2aed96){var _0xddc28=function(_0x167936){while(--_0x167936){_0x4d033a['push'](_0x4d033a['shift']());}};_0xddc28(++_0x2aed96);}(_0x952f,0xad));var _0xf952=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0x952f[_0x45fc6a];return _0x14bcfd;};'use strict';var multer=require(_0xf952('0x0'));var util=require(_0xf952('0x1'));var path=require('path');var timeout=require(_0xf952('0x2'));var express=require('express');var router=express[_0xf952('0x3')]();var fs_extra=require(_0xf952('0x4'));var auth=require(_0xf952('0x5'));var interaction=require(_0xf952('0x6'));var config=require('../../config/environment');var controller=require(_0xf952('0x7'));router[_0xf952('0x8')]('/',auth[_0xf952('0x9')](),controller[_0xf952('0xa')]);router['get'](_0xf952('0xb'),auth[_0xf952('0x9')](),controller[_0xf952('0xc')]);router[_0xf952('0x8')](_0xf952('0xd'),auth[_0xf952('0x9')](),controller[_0xf952('0xe')]);router[_0xf952('0x8')](_0xf952('0xf'),auth[_0xf952('0x9')](),controller[_0xf952('0x10')]);router[_0xf952('0x8')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf952('0x11')]);router[_0xf952('0x8')]('/:id/contacts',auth[_0xf952('0x9')](),controller[_0xf952('0x12')]);router['get']('/:id/contacts/csv',auth[_0xf952('0x9')](),controller['getContactsCsv']);router[_0xf952('0x8')](_0xf952('0x13'),auth['isAuthenticated'](),controller[_0xf952('0x14')]);router[_0xf952('0x8')](_0xf952('0x15'),auth[_0xf952('0x9')](),controller[_0xf952('0x16')]);router['post']('/',auth[_0xf952('0x9')](),controller[_0xf952('0x17')]);router[_0xf952('0x18')](_0xf952('0x19'),auth['isAuthenticated'](),controller[_0xf952('0x1a')]);router[_0xf952('0x18')](_0xf952('0x1b'),auth[_0xf952('0x9')](),controller[_0xf952('0x1c')]);router['post'](_0xf952('0x13'),auth['isAuthenticated'](),controller[_0xf952('0x1d')]);router[_0xf952('0x18')](_0xf952('0x15'),auth['isAuthenticated'](),controller['addAgents']);router[_0xf952('0x1e')]('/:id',auth[_0xf952('0x9')](),controller[_0xf952('0x1f')]);router[_0xf952('0x20')](_0xf952('0xf'),auth[_0xf952('0x9')](),controller['destroy']);router['delete'](_0xf952('0x19'),auth[_0xf952('0x9')](),controller['removeDispositions']);router[_0xf952('0x20')](_0xf952('0x15'),auth[_0xf952('0x9')](),controller['removeAgents']);module[_0xf952('0x21')]=router; \ No newline at end of file diff --git a/server/api/condition/condition.attributes.js b/server/api/condition/condition.attributes.js new file mode 100644 index 0000000..efb9516 --- /dev/null +++ b/server/api/condition/condition.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6253=['exports','getDataValue','field','STRING'];(function(_0x3d39d4,_0x28426d){var _0x18f002=function(_0x3e6d34){while(--_0x3e6d34){_0x3d39d4['push'](_0x3d39d4['shift']());}};_0x18f002(++_0x28426d);}(_0x6253,0x1a0));var _0x3625=function(_0x3200ca,_0x23d1b3){_0x3200ca=_0x3200ca-0x0;var _0x562715=_0x6253[_0x3200ca];return _0x562715;};'use strict';var Sequelize=require('sequelize');module[_0x3625('0x0')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x48acff){return this[_0x3625('0x1')](_0x3625('0x2'));}},'field':{'type':Sequelize[_0x3625('0x3')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x3625('0x3')],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/condition/condition.controller.js b/server/api/condition/condition.controller.js new file mode 100644 index 0000000..d51f65a --- /dev/null +++ b/server/api/condition/condition.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x32eca1,_0xa4a407){var _0x202f7b=function(_0x41a85){while(--_0x41a85){_0x32eca1['push'](_0x32eca1['shift']());}};_0x202f7b(++_0xa4a407);}(_0x7a54,0x106));var _0x47a5=function(_0x7dda2e,_0x15f6d4){_0x7dda2e=_0x7dda2e-0x0;var _0x48db53=_0x7a54[_0x7dda2e];return _0x48db53;};'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 diff --git a/server/api/condition/condition.model.js b/server/api/condition/condition.model.js new file mode 100644 index 0000000..76d2802 --- /dev/null +++ b/server/api/condition/condition.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe57a=['rimraf','../../config/environment','./condition.attributes','exports','define','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x180c82,_0x2613c4){var _0x48b115=function(_0x1bbb9d){while(--_0x1bbb9d){_0x180c82['push'](_0x180c82['shift']());}};_0x48b115(++_0x2613c4);}(_0xe57a,0x13d));var _0xae57=function(_0x2fa9da,_0x2fb5ee){_0x2fa9da=_0x2fa9da-0x0;var _0x5ae45b=_0xe57a[_0x2fa9da];return _0x5ae45b;};'use strict';var _=require('lodash');var util=require(_0xae57('0x0'));var logger=require(_0xae57('0x1'))(_0xae57('0x2'));var moment=require(_0xae57('0x3'));var BPromise=require(_0xae57('0x4'));var rp=require(_0xae57('0x5'));var fs=require('fs');var path=require(_0xae57('0x6'));var rimraf=require(_0xae57('0x7'));var config=require(_0xae57('0x8'));var attributes=require(_0xae57('0x9'));module[_0xae57('0xa')]=function(_0x588e2e,_0x39dffe){return _0x588e2e[_0xae57('0xb')]('Condition',attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/condition/condition.rpc.js b/server/api/condition/condition.rpc.js new file mode 100644 index 0000000..04c004e --- /dev/null +++ b/server/api/condition/condition.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8bb9=['bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment'];(function(_0x38f8e8,_0x35eccc){var _0x4860f8=function(_0x3dd6eb){while(--_0x3dd6eb){_0x38f8e8['push'](_0x38f8e8['shift']());}};_0x4860f8(++_0x35eccc);}(_0x8bb9,0x1cb));var _0x98bb=function(_0x587fb5,_0x59cb3b){_0x587fb5=_0x587fb5-0x0;var _0x551105=_0x8bb9[_0x587fb5];return _0x551105;};'use strict';var _=require(_0x98bb('0x0'));var util=require(_0x98bb('0x1'));var moment=require(_0x98bb('0x2'));var BPromise=require(_0x98bb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x98bb('0x4'));var db=require(_0x98bb('0x5'))['db'];var utils=require(_0x98bb('0x6'));var logger=require('../../config/logger')(_0x98bb('0x7'));var config=require(_0x98bb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x98bb('0x9')][_0x98bb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58e9fb,_0x28c082,_0x2bb2db){return new BPromise(function(_0x28f287,_0x3d4d9e){return client[_0x98bb('0xb')](_0x58e9fb,_0x2bb2db)[_0x98bb('0xc')](function(_0x43ada6){logger[_0x98bb('0xd')](_0x98bb('0xe'),_0x28c082,_0x98bb('0xf'));logger[_0x98bb('0x10')]('Condition,\x20%s,\x20%s,\x20%s',_0x28c082,_0x98bb('0xf'),JSON['stringify'](_0x43ada6));if(_0x43ada6[_0x98bb('0x11')]){if(_0x43ada6[_0x98bb('0x11')][_0x98bb('0x12')]===0x1f4){logger['error'](_0x98bb('0xe'),_0x28c082,_0x43ada6['error']['message']);return _0x3d4d9e(_0x43ada6['error'][_0x98bb('0x13')]);}logger[_0x98bb('0x11')](_0x98bb('0xe'),_0x28c082,_0x43ada6[_0x98bb('0x11')][_0x98bb('0x13')]);return _0x28f287(_0x43ada6[_0x98bb('0x11')][_0x98bb('0x13')]);}else{logger[_0x98bb('0xd')](_0x98bb('0xe'),_0x28c082,_0x98bb('0xf'));_0x28f287(_0x43ada6[_0x98bb('0x14')]['message']);}})['catch'](function(_0x6b19da){logger[_0x98bb('0x11')](_0x98bb('0xe'),_0x28c082,_0x6b19da);_0x3d4d9e(_0x6b19da);});});} \ No newline at end of file diff --git a/server/api/condition/index.js b/server/api/condition/index.js new file mode 100644 index 0000000..a1c130b --- /dev/null +++ b/server/api/condition/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2b34=['express','Router','../../components/auth/service','../../components/interaction/service','./condition.controller','put','isAuthenticated','update','exports','multer','util','path'];(function(_0x519990,_0x57672f){var _0x4cf293=function(_0x4df638){while(--_0x4df638){_0x519990['push'](_0x519990['shift']());}};_0x4cf293(++_0x57672f);}(_0x2b34,0x1e9));var _0x42b3=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x2b34[_0x1e7b16];return _0x37fadc;};'use strict';var multer=require(_0x42b3('0x0'));var util=require(_0x42b3('0x1'));var path=require(_0x42b3('0x2'));var timeout=require('connect-timeout');var express=require(_0x42b3('0x3'));var router=express[_0x42b3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x42b3('0x5'));var interaction=require(_0x42b3('0x6'));var config=require('../../config/environment');var controller=require(_0x42b3('0x7'));router[_0x42b3('0x8')]('/:id',auth[_0x42b3('0x9')](),controller[_0x42b3('0xa')]);router['delete']('/:id',auth[_0x42b3('0x9')](),controller['destroy']);module[_0x42b3('0xb')]=router; \ No newline at end of file diff --git a/server/api/contactItemType/contactItemType.attributes.js b/server/api/contactItemType/contactItemType.attributes.js new file mode 100644 index 0000000..5a4659d --- /dev/null +++ b/server/api/contactItemType/contactItemType.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7dab=['STRING','sequelize','exports','name','INTEGER'];(function(_0xd21f28,_0x483c59){var _0x3405bf=function(_0x19e330){while(--_0x19e330){_0xd21f28['push'](_0xd21f28['shift']());}};_0x3405bf(++_0x483c59);}(_0x7dab,0x10a));var _0xb7da=function(_0x388334,_0x488ec6){_0x388334=_0x388334-0x0;var _0x42b7f5=_0x7dab[_0x388334];return _0x42b7f5;};'use strict';var Sequelize=require(_0xb7da('0x0'));module[_0xb7da('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb7da('0x2')},'OrderBy':{'type':Sequelize[_0xb7da('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xb7da('0x4')],'allowNull':!![]}}; \ No newline at end of file diff --git a/server/api/contactItemType/contactItemType.controller.js b/server/api/contactItemType/contactItemType.controller.js new file mode 100644 index 0000000..0be3596 --- /dev/null +++ b/server/api/contactItemType/contactItemType.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x28f2=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','Content-Range','apply','reject','save','update','then','destroy','get','ContactItemTypes','UserProfileResource','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','ContactItemType','count','include','findAll','rows','catch','show','keys','includeAll','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','params','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x38c189,_0x2a4e79){var _0x6a730e=function(_0x5b9cbe){while(--_0x5b9cbe){_0x38c189['push'](_0x38c189['shift']());}};_0x6a730e(++_0x2a4e79);}(_0x28f2,0x193));var _0x228f=function(_0x23ed25,_0x555ded){_0x23ed25=_0x23ed25-0x0;var _0x411de2=_0x28f2[_0x23ed25];return _0x411de2;};'use strict';var emlformat=require(_0x228f('0x0'));var rimraf=require(_0x228f('0x1'));var zipdir=require(_0x228f('0x2'));var jsonpatch=require(_0x228f('0x3'));var rp=require(_0x228f('0x4'));var moment=require('moment');var BPromise=require(_0x228f('0x5'));var Mustache=require(_0x228f('0x6'));var util=require(_0x228f('0x7'));var path=require(_0x228f('0x8'));var sox=require(_0x228f('0x9'));var csv=require(_0x228f('0xa'));var ejs=require(_0x228f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x228f('0xc'));var squel=require('squel');var crypto=require(_0x228f('0xd'));var jsforce=require(_0x228f('0xe'));var deskjs=require(_0x228f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x228f('0x10'));var Papa=require('papaparse');var Redis=require(_0x228f('0x11'));var authService=require(_0x228f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x228f('0x13'));var hardwareService=require(_0x228f('0x14'));var logger=require(_0x228f('0x15'))(_0x228f('0x16'));var utils=require(_0x228f('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x228f('0x18'));var db=require(_0x228f('0x19'))['db'];function respondWithStatusCode(_0x24f69c,_0x14073a){_0x14073a=_0x14073a||0xcc;return function(_0x2e1a43){if(_0x2e1a43){return _0x24f69c[_0x228f('0x1a')](_0x14073a);}return _0x24f69c[_0x228f('0x1b')](_0x14073a)[_0x228f('0x1c')]();};}function respondWithResult(_0x572535,_0x2fab95){_0x2fab95=_0x2fab95||0xc8;return function(_0xfb6aff){if(_0xfb6aff){return _0x572535[_0x228f('0x1b')](_0x2fab95)[_0x228f('0x1d')](_0xfb6aff);}};}function respondWithFilteredResult(_0x2a4d87,_0x21a913){return function(_0x272723){if(_0x272723){var _0x5b5abb=typeof _0x21a913[_0x228f('0x1e')]==='undefined'&&typeof _0x21a913[_0x228f('0x1f')]===_0x228f('0x20');var _0x195e65=_0x272723['count'];var _0x2d4819=_0x5b5abb?0x0:_0x21a913['offset'];var _0x33e32e=_0x5b5abb?_0x272723['count']:_0x21a913[_0x228f('0x1e')]+_0x21a913['limit'];var _0x5aa203;if(_0x33e32e>=_0x195e65){_0x33e32e=_0x195e65;_0x5aa203=0xc8;}else{_0x5aa203=0xce;}_0x2a4d87[_0x228f('0x1b')](_0x5aa203);return _0x2a4d87['set'](_0x228f('0x21'),_0x2d4819+'-'+_0x33e32e+'/'+_0x195e65)[_0x228f('0x1d')](_0x272723);}return null;};}function patchUpdates(_0x1294a8){return function(_0x3a623a){try{jsonpatch[_0x228f('0x22')](_0x3a623a,_0x1294a8,!![]);}catch(_0x313cf2){return BPromise[_0x228f('0x23')](_0x313cf2);}return _0x3a623a[_0x228f('0x24')]();};}function saveUpdates(_0x15d54f,_0x4ee0c9){return function(_0x1e96d4){if(_0x1e96d4){return _0x1e96d4[_0x228f('0x25')](_0x15d54f)[_0x228f('0x26')](function(_0x3c00ad){return _0x3c00ad;});}return null;};}function removeEntity(_0x1dad27,_0x194d1a){return function(_0x33e882){if(_0x33e882){return _0x33e882[_0x228f('0x27')]()[_0x228f('0x26')](function(){var _0x56fbc2=_0x33e882[_0x228f('0x28')]({'plain':!![]});var _0x306928=_0x228f('0x29');return db[_0x228f('0x2a')][_0x228f('0x27')]({'where':{'type':_0x306928,'resourceId':_0x56fbc2['id']}})['then'](function(){return _0x33e882;});})[_0x228f('0x26')](function(){_0x1dad27['status'](0xcc)[_0x228f('0x1c')]();});}};}function handleEntityNotFound(_0x5afa52,_0x58a151){return function(_0x2b9802){if(!_0x2b9802){_0x5afa52[_0x228f('0x1a')](0x194);}return _0x2b9802;};}function handleError(_0x2a7842,_0x3ab339){_0x3ab339=_0x3ab339||0x1f4;return function(_0x34c735){logger[_0x228f('0x2b')](_0x34c735[_0x228f('0x2c')]);if(_0x34c735[_0x228f('0x2d')]){delete _0x34c735[_0x228f('0x2d')];}_0x2a7842[_0x228f('0x1b')](_0x3ab339)[_0x228f('0x2e')](_0x34c735);};}exports[_0x228f('0x2f')]=function(_0xc25917,_0xc6921f){var _0x2a3677={},_0x4e9ca8={},_0x4148ff={'count':0x0,'rows':[]};var _0x40bf17=_[_0x228f('0x30')](db['ContactItemType'][_0x228f('0x31')],function(_0x41be2d){return{'name':_0x41be2d['fieldName'],'type':_0x41be2d[_0x228f('0x32')][_0x228f('0x33')]};});_0x4e9ca8[_0x228f('0x34')]=_[_0x228f('0x30')](_0x40bf17,'name');_0x4e9ca8[_0x228f('0x35')]=_['keys'](_0xc25917[_0x228f('0x35')]);_0x4e9ca8[_0x228f('0x36')]=_[_0x228f('0x37')](_0x4e9ca8[_0x228f('0x34')],_0x4e9ca8['query']);_0x2a3677[_0x228f('0x38')]=_[_0x228f('0x37')](_0x4e9ca8['model'],qs['fields'](_0xc25917['query'][_0x228f('0x39')]));_0x2a3677[_0x228f('0x38')]=_0x2a3677[_0x228f('0x38')][_0x228f('0x3a')]?_0x2a3677[_0x228f('0x38')]:_0x4e9ca8[_0x228f('0x34')];if(!_0xc25917[_0x228f('0x35')][_0x228f('0x3b')](_0x228f('0x3c'))){_0x2a3677['limit']=qs['limit'](_0xc25917[_0x228f('0x35')][_0x228f('0x1f')]);_0x2a3677[_0x228f('0x1e')]=qs[_0x228f('0x1e')](_0xc25917[_0x228f('0x35')][_0x228f('0x1e')]);}_0x2a3677[_0x228f('0x3d')]=qs[_0x228f('0x3e')](_0xc25917[_0x228f('0x35')][_0x228f('0x3e')]);_0x2a3677['where']=qs['filters'](_[_0x228f('0x3f')](_0xc25917[_0x228f('0x35')],_0x4e9ca8[_0x228f('0x36')]),_0x40bf17);if(_0xc25917[_0x228f('0x35')]['filter']){_0x2a3677[_0x228f('0x40')]=_[_0x228f('0x41')](_0x2a3677['where'],{'$or':_['map'](_0x40bf17,function(_0x3da115){if(_0x3da115[_0x228f('0x32')]!=='VIRTUAL'){var _0x12a750={};_0x12a750[_0x3da115[_0x228f('0x2d')]]={'$like':'%'+_0xc25917['query']['filter']+'%'};return _0x12a750;}})});}_0x2a3677=_[_0x228f('0x41')]({},_0x2a3677,_0xc25917['options']);var _0x323d68={'where':_0x2a3677[_0x228f('0x40')]};return db[_0x228f('0x42')][_0x228f('0x43')](_0x323d68)[_0x228f('0x26')](function(_0x20c178){_0x4148ff['count']=_0x20c178;if(_0xc25917[_0x228f('0x35')]['includeAll']){_0x2a3677[_0x228f('0x44')]=[{'all':!![]}];}return db[_0x228f('0x42')][_0x228f('0x45')](_0x2a3677);})[_0x228f('0x26')](function(_0x41cba5){_0x4148ff[_0x228f('0x46')]=_0x41cba5;return _0x4148ff;})[_0x228f('0x26')](respondWithFilteredResult(_0xc6921f,_0x2a3677))[_0x228f('0x47')](handleError(_0xc6921f,null));};exports[_0x228f('0x48')]=function(_0x2592a1,_0x788e8b){var _0x345114={'raw':!![],'where':{'id':_0x2592a1['params']['id']}},_0x19839d={};_0x19839d['model']=_[_0x228f('0x49')](db[_0x228f('0x42')][_0x228f('0x31')]);_0x19839d[_0x228f('0x35')]=_[_0x228f('0x49')](_0x2592a1[_0x228f('0x35')]);_0x19839d[_0x228f('0x36')]=_[_0x228f('0x37')](_0x19839d[_0x228f('0x34')],_0x19839d[_0x228f('0x35')]);_0x345114['attributes']=_[_0x228f('0x37')](_0x19839d[_0x228f('0x34')],qs['fields'](_0x2592a1[_0x228f('0x35')]['fields']));_0x345114[_0x228f('0x38')]=_0x345114['attributes'][_0x228f('0x3a')]?_0x345114['attributes']:_0x19839d[_0x228f('0x34')];if(_0x2592a1[_0x228f('0x35')][_0x228f('0x4a')]){_0x345114[_0x228f('0x44')]=[{'all':!![]}];}_0x345114=_[_0x228f('0x41')]({},_0x345114,_0x2592a1[_0x228f('0x4b')]);return db[_0x228f('0x42')][_0x228f('0x4c')](_0x345114)[_0x228f('0x26')](handleEntityNotFound(_0x788e8b,null))[_0x228f('0x26')](respondWithResult(_0x788e8b,null))[_0x228f('0x47')](handleError(_0x788e8b,null));};exports[_0x228f('0x4d')]=function(_0x4099d4,_0x250345){return db[_0x228f('0x42')][_0x228f('0x4d')](_0x4099d4[_0x228f('0x4e')],{})[_0x228f('0x26')](function(_0x1872e2){var _0x55e140=_0x4099d4['user'][_0x228f('0x28')]({'plain':!![]});if(!_0x55e140)throw new Error(_0x228f('0x4f'));if(_0x55e140[_0x228f('0x50')]==='user'){var _0x17bcd9=_0x1872e2[_0x228f('0x28')]({'plain':!![]});var _0x28f91e='ContactItemTypes';return db['UserProfileSection']['find']({'where':{'name':_0x28f91e,'userProfileId':_0x55e140[_0x228f('0x51')]},'raw':!![]})[_0x228f('0x26')](function(_0x208397){if(_0x208397&&_0x208397[_0x228f('0x52')]===0x0){return db[_0x228f('0x2a')][_0x228f('0x4d')]({'name':_0x17bcd9[_0x228f('0x2d')],'resourceId':_0x17bcd9['id'],'type':_0x208397[_0x228f('0x2d')],'sectionId':_0x208397['id']},{})[_0x228f('0x26')](function(){return _0x1872e2;});}else{return _0x1872e2;}})[_0x228f('0x47')](function(_0x43bbd2){logger[_0x228f('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x43bbd2);throw _0x43bbd2;});}return _0x1872e2;})[_0x228f('0x26')](respondWithResult(_0x250345,0xc9))[_0x228f('0x47')](handleError(_0x250345,null));};exports[_0x228f('0x25')]=function(_0x561144,_0x3e9f76){if(_0x561144[_0x228f('0x4e')]['id']){delete _0x561144[_0x228f('0x4e')]['id'];}return db[_0x228f('0x42')]['find']({'where':{'id':_0x561144[_0x228f('0x53')]['id']}})[_0x228f('0x26')](handleEntityNotFound(_0x3e9f76,null))[_0x228f('0x26')](saveUpdates(_0x561144[_0x228f('0x4e')],null))['then'](respondWithResult(_0x3e9f76,null))[_0x228f('0x47')](handleError(_0x3e9f76,null));};exports[_0x228f('0x27')]=function(_0x4b516e,_0x32787c){return db[_0x228f('0x42')][_0x228f('0x4c')]({'where':{'id':_0x4b516e[_0x228f('0x53')]['id']}})[_0x228f('0x26')](handleEntityNotFound(_0x32787c,null))[_0x228f('0x26')](db[_0x228f('0x54')][_0x228f('0x25')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x4b516e[_0x228f('0x53')]['id']}}))[_0x228f('0x26')](removeEntity(_0x32787c,null))['catch'](handleError(_0x32787c,null));}; \ No newline at end of file diff --git a/server/api/contactItemType/contactItemType.model.js b/server/api/contactItemType/contactItemType.model.js new file mode 100644 index 0000000..eeb9356 --- /dev/null +++ b/server/api/contactItemType/contactItemType.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf2a8=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./contactItemType.attributes','exports','ContactItemType'];(function(_0x5c1b40,_0x52af49){var _0x28c4e7=function(_0x3f2c8a){while(--_0x3f2c8a){_0x5c1b40['push'](_0x5c1b40['shift']());}};_0x28c4e7(++_0x52af49);}(_0xf2a8,0x14a));var _0x8f2a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xf2a8[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x8f2a('0x0'));var util=require(_0x8f2a('0x1'));var logger=require(_0x8f2a('0x2'))(_0x8f2a('0x3'));var moment=require('moment');var BPromise=require(_0x8f2a('0x4'));var rp=require(_0x8f2a('0x5'));var fs=require('fs');var path=require(_0x8f2a('0x6'));var rimraf=require(_0x8f2a('0x7'));var config=require('../../config/environment');var attributes=require(_0x8f2a('0x8'));module[_0x8f2a('0x9')]=function(_0x19b13,_0x40041e){return _0x19b13['define'](_0x8f2a('0xa'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/contactItemType/contactItemType.rpc.js b/server/api/contactItemType/contactItemType.rpc.js new file mode 100644 index 0000000..fbc1e88 --- /dev/null +++ b/server/api/contactItemType/contactItemType.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8882=['rpc','../../config/environment','client','http','request','then','info','ContactItemType,\x20%s,\x20%s','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger'];(function(_0xf6c630,_0x4c374b){var _0x45823c=function(_0x36f396){while(--_0x36f396){_0xf6c630['push'](_0xf6c630['shift']());}};_0x45823c(++_0x4c374b);}(_0x8882,0x169));var _0x2888=function(_0x446699,_0x25ae79){_0x446699=_0x446699-0x0;var _0x3b4e51=_0x8882[_0x446699];return _0x3b4e51;};'use strict';var _=require(_0x2888('0x0'));var util=require(_0x2888('0x1'));var moment=require(_0x2888('0x2'));var BPromise=require(_0x2888('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2888('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2888('0x5'));var logger=require(_0x2888('0x6'))(_0x2888('0x7'));var config=require(_0x2888('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2888('0x9')][_0x2888('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc1fddc,_0x3b22c0,_0x5c46e0){return new BPromise(function(_0x464b20,_0x77683b){return client[_0x2888('0xb')](_0xc1fddc,_0x5c46e0)[_0x2888('0xc')](function(_0x2e38b2){logger[_0x2888('0xd')](_0x2888('0xe'),_0x3b22c0,'request\x20sent');logger[_0x2888('0xf')](_0x2888('0x10'),_0x3b22c0,'request\x20sent',JSON[_0x2888('0x11')](_0x2e38b2));if(_0x2e38b2[_0x2888('0x12')]){if(_0x2e38b2[_0x2888('0x12')][_0x2888('0x13')]===0x1f4){logger['error'](_0x2888('0xe'),_0x3b22c0,_0x2e38b2['error']['message']);return _0x77683b(_0x2e38b2[_0x2888('0x12')][_0x2888('0x14')]);}logger[_0x2888('0x12')](_0x2888('0xe'),_0x3b22c0,_0x2e38b2['error'][_0x2888('0x14')]);return _0x464b20(_0x2e38b2[_0x2888('0x12')][_0x2888('0x14')]);}else{logger[_0x2888('0xd')](_0x2888('0xe'),_0x3b22c0,_0x2888('0x15'));_0x464b20(_0x2e38b2['result'][_0x2888('0x14')]);}})[_0x2888('0x16')](function(_0x5ae430){logger[_0x2888('0x12')](_0x2888('0xe'),_0x3b22c0,_0x5ae430);_0x77683b(_0x5ae430);});});} \ No newline at end of file diff --git a/server/api/contactItemType/index.js b/server/api/contactItemType/index.js new file mode 100644 index 0000000..b0505dd --- /dev/null +++ b/server/api/contactItemType/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x10ce=['show','post','isAuthenticated','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','index'];(function(_0x2fa28d,_0x5cab8f){var _0x4488cb=function(_0x103141){while(--_0x103141){_0x2fa28d['push'](_0x2fa28d['shift']());}};_0x4488cb(++_0x5cab8f);}(_0x10ce,0x1d7));var _0xe10c=function(_0x42900b,_0x47e957){_0x42900b=_0x42900b-0x0;var _0x2ff564=_0x10ce[_0x42900b];return _0x2ff564;};'use strict';var multer=require(_0xe10c('0x0'));var util=require(_0xe10c('0x1'));var path=require(_0xe10c('0x2'));var timeout=require(_0xe10c('0x3'));var express=require(_0xe10c('0x4'));var router=express['Router']();var fs_extra=require(_0xe10c('0x5'));var auth=require(_0xe10c('0x6'));var interaction=require(_0xe10c('0x7'));var config=require(_0xe10c('0x8'));var controller=require(_0xe10c('0x9'));router[_0xe10c('0xa')]('/',auth['isAuthenticated'](),controller[_0xe10c('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xe10c('0xc')]);router[_0xe10c('0xd')]('/',auth[_0xe10c('0xe')](),controller[_0xe10c('0xf')]);router['put'](_0xe10c('0x10'),auth[_0xe10c('0xe')](),controller[_0xe10c('0x11')]);router[_0xe10c('0x12')](_0xe10c('0x10'),auth['isAuthenticated'](),controller[_0xe10c('0x13')]);module[_0xe10c('0x14')]=router; \ No newline at end of file diff --git a/server/api/dashboard/dashboard.attributes.js b/server/api/dashboard/dashboard.attributes.js new file mode 100644 index 0000000..9f014fb --- /dev/null +++ b/server/api/dashboard/dashboard.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd8b0=['exports','sequelize'];(function(_0x212072,_0x203f9a){var _0x39595c=function(_0x269020){while(--_0x269020){_0x212072['push'](_0x212072['shift']());}};_0x39595c(++_0x203f9a);}(_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 diff --git a/server/api/dashboard/dashboard.controller.js b/server/api/dashboard/dashboard.controller.js new file mode 100644 index 0000000..6060402 --- /dev/null +++ b/server/api/dashboard/dashboard.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1fc7=['crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','sendStatus','error','send','index','map','Dashboard','rawAttributes','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','include','findAll','rows','catch','show','params','length','includeAll','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','autoAssociation','create','iframe','attrUrl','attrs','custom','attrPath','value','clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','findOne','order','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x1fc7,0x75));var _0x71fc=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x1fc7[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x71fc('0x0'));var rimraf=require(_0x71fc('0x1'));var zipdir=require(_0x71fc('0x2'));var jsonpatch=require(_0x71fc('0x3'));var rp=require(_0x71fc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x71fc('0x5'));var util=require(_0x71fc('0x6'));var path=require(_0x71fc('0x7'));var sox=require(_0x71fc('0x8'));var csv=require(_0x71fc('0x9'));var ejs=require(_0x71fc('0xa'));var fs=require('fs');var fs_extra=require(_0x71fc('0xb'));var _=require(_0x71fc('0xc'));var squel=require(_0x71fc('0xd'));var crypto=require(_0x71fc('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x71fc('0xf'));var toCsv=require(_0x71fc('0x9'));var querystring=require(_0x71fc('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x71fc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x71fc('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x71fc('0x13'))(_0x71fc('0x14'));var utils=require(_0x71fc('0x15'));var config=require(_0x71fc('0x16'));var licenseUtil=require(_0x71fc('0x17'));var db=require(_0x71fc('0x18'))['db'];config[_0x71fc('0x19')]=_[_0x71fc('0x1a')](config[_0x71fc('0x19')],{'host':_0x71fc('0x1b'),'port':0x18eb});var socket=require(_0x71fc('0x1c'))(new Redis(config[_0x71fc('0x19')]));require(_0x71fc('0x1d'))[_0x71fc('0x1e')](socket);function respondWithStatusCode(_0x2dde4a,_0x5ee73e){_0x5ee73e=_0x5ee73e||0xcc;return function(_0x5e25b3){if(_0x5e25b3){return _0x2dde4a['sendStatus'](_0x5ee73e);}return _0x2dde4a[_0x71fc('0x1f')](_0x5ee73e)[_0x71fc('0x20')]();};}function respondWithResult(_0x3852d5,_0x298d15){_0x298d15=_0x298d15||0xc8;return function(_0x13692c){if(_0x13692c){return _0x3852d5[_0x71fc('0x1f')](_0x298d15)[_0x71fc('0x21')](_0x13692c);}};}function respondWithFilteredResult(_0x38362d,_0x29908c){return function(_0x23e8dd){if(_0x23e8dd){var _0x1bef37=typeof _0x29908c[_0x71fc('0x22')]===_0x71fc('0x23')&&typeof _0x29908c[_0x71fc('0x24')]===_0x71fc('0x23');var _0x2581cc=_0x23e8dd[_0x71fc('0x25')];var _0xa2b0f=_0x1bef37?0x0:_0x29908c[_0x71fc('0x22')];var _0x5a2333=_0x1bef37?_0x23e8dd[_0x71fc('0x25')]:_0x29908c[_0x71fc('0x22')]+_0x29908c[_0x71fc('0x24')];var _0x2c8a43;if(_0x5a2333>=_0x2581cc){_0x5a2333=_0x2581cc;_0x2c8a43=0xc8;}else{_0x2c8a43=0xce;}_0x38362d['status'](_0x2c8a43);return _0x38362d['set'](_0x71fc('0x26'),_0xa2b0f+'-'+_0x5a2333+'/'+_0x2581cc)['json'](_0x23e8dd);}return null;};}function patchUpdates(_0x464c83){return function(_0x2d5eb1){try{jsonpatch[_0x71fc('0x27')](_0x2d5eb1,_0x464c83,!![]);}catch(_0x400b0f){return BPromise[_0x71fc('0x28')](_0x400b0f);}return _0x2d5eb1[_0x71fc('0x29')]();};}function saveUpdates(_0x5f4145,_0x3a366c){return function(_0x105428){if(_0x105428){return _0x105428[_0x71fc('0x2a')](_0x5f4145)[_0x71fc('0x2b')](function(_0x13cdec){return _0x13cdec;});}return null;};}function removeEntity(_0x26f677,_0x4ee7b6){return function(_0x5631b6){if(_0x5631b6){return _0x5631b6[_0x71fc('0x2c')]()[_0x71fc('0x2b')](function(){var _0x447033=_0x5631b6[_0x71fc('0x2d')]({'plain':!![]});var _0x3bdc4f=_0x71fc('0x2e');return db[_0x71fc('0x2f')][_0x71fc('0x2c')]({'where':{'type':_0x3bdc4f,'resourceId':_0x447033['id']}})[_0x71fc('0x2b')](function(){return _0x5631b6;});})['then'](function(){_0x26f677[_0x71fc('0x1f')](0xcc)[_0x71fc('0x20')]();});}};}function handleEntityNotFound(_0x219629,_0x22d3e7){return function(_0x2034ea){if(!_0x2034ea){_0x219629[_0x71fc('0x30')](0x194);}return _0x2034ea;};}function handleError(_0x40a417,_0x3bcb2b){_0x3bcb2b=_0x3bcb2b||0x1f4;return function(_0x2a9f5a){logger[_0x71fc('0x31')](_0x2a9f5a['stack']);if(_0x2a9f5a['name']){delete _0x2a9f5a['name'];}_0x40a417[_0x71fc('0x1f')](_0x3bcb2b)[_0x71fc('0x32')](_0x2a9f5a);};}exports[_0x71fc('0x33')]=function(_0x20abfe,_0x5ae86e){var _0x45266e={},_0x697941={},_0x3787bc={'count':0x0,'rows':[]};var _0x455db9=_[_0x71fc('0x34')](db[_0x71fc('0x35')][_0x71fc('0x36')],function(_0xeda424){return{'name':_0xeda424['fieldName'],'type':_0xeda424['type'][_0x71fc('0x37')]};});_0x697941[_0x71fc('0x38')]=_[_0x71fc('0x34')](_0x455db9,_0x71fc('0x39'));_0x697941[_0x71fc('0x3a')]=_[_0x71fc('0x3b')](_0x20abfe[_0x71fc('0x3a')]);_0x697941[_0x71fc('0x3c')]=_[_0x71fc('0x3d')](_0x697941['model'],_0x697941[_0x71fc('0x3a')]);_0x45266e[_0x71fc('0x3e')]=_[_0x71fc('0x3d')](_0x697941[_0x71fc('0x38')],qs[_0x71fc('0x3f')](_0x20abfe[_0x71fc('0x3a')][_0x71fc('0x3f')]));_0x45266e[_0x71fc('0x3e')]=_0x45266e[_0x71fc('0x3e')]['length']?_0x45266e[_0x71fc('0x3e')]:_0x697941[_0x71fc('0x38')];if(!_0x20abfe[_0x71fc('0x3a')][_0x71fc('0x40')](_0x71fc('0x41'))){_0x45266e['limit']=qs[_0x71fc('0x24')](_0x20abfe[_0x71fc('0x3a')][_0x71fc('0x24')]);_0x45266e[_0x71fc('0x22')]=qs[_0x71fc('0x22')](_0x20abfe[_0x71fc('0x3a')][_0x71fc('0x22')]);}_0x45266e['order']=qs['sort'](_0x20abfe['query'][_0x71fc('0x42')]);_0x45266e[_0x71fc('0x43')]=qs[_0x71fc('0x3c')](_[_0x71fc('0x44')](_0x20abfe[_0x71fc('0x3a')],_0x697941['filters']),_0x455db9);if(_0x20abfe[_0x71fc('0x3a')][_0x71fc('0x45')]){_0x45266e[_0x71fc('0x43')]=_[_0x71fc('0x46')](_0x45266e[_0x71fc('0x43')],{'$or':_[_0x71fc('0x34')](_0x455db9,function(_0xc11437){if(_0xc11437[_0x71fc('0x47')]!=='VIRTUAL'){var _0x182739={};_0x182739[_0xc11437[_0x71fc('0x39')]]={'$like':'%'+_0x20abfe[_0x71fc('0x3a')][_0x71fc('0x45')]+'%'};return _0x182739;}})});}_0x45266e=_[_0x71fc('0x46')]({},_0x45266e,_0x20abfe[_0x71fc('0x48')]);var _0x33f89b={'where':_0x45266e[_0x71fc('0x43')]};return db[_0x71fc('0x35')][_0x71fc('0x25')](_0x33f89b)[_0x71fc('0x2b')](function(_0x4be7ff){_0x3787bc[_0x71fc('0x25')]=_0x4be7ff;if(_0x20abfe['query']['includeAll']){_0x45266e[_0x71fc('0x49')]=[{'all':!![]}];}return db[_0x71fc('0x35')][_0x71fc('0x4a')](_0x45266e);})['then'](function(_0x5a7f23){_0x3787bc[_0x71fc('0x4b')]=_0x5a7f23;return _0x3787bc;})[_0x71fc('0x2b')](respondWithFilteredResult(_0x5ae86e,_0x45266e))[_0x71fc('0x4c')](handleError(_0x5ae86e,null));};exports[_0x71fc('0x4d')]=function(_0x1e99fd,_0x382319){var _0x6fe2bc={'raw':![],'where':{'id':_0x1e99fd[_0x71fc('0x4e')]['id']}},_0x4010ec={};_0x4010ec[_0x71fc('0x38')]=_[_0x71fc('0x3b')](db[_0x71fc('0x35')][_0x71fc('0x36')]);_0x4010ec[_0x71fc('0x3a')]=_[_0x71fc('0x3b')](_0x1e99fd[_0x71fc('0x3a')]);_0x4010ec[_0x71fc('0x3c')]=_[_0x71fc('0x3d')](_0x4010ec[_0x71fc('0x38')],_0x4010ec['query']);_0x6fe2bc['attributes']=_[_0x71fc('0x3d')](_0x4010ec[_0x71fc('0x38')],qs['fields'](_0x1e99fd['query'][_0x71fc('0x3f')]));_0x6fe2bc[_0x71fc('0x3e')]=_0x6fe2bc[_0x71fc('0x3e')][_0x71fc('0x4f')]?_0x6fe2bc[_0x71fc('0x3e')]:_0x4010ec[_0x71fc('0x38')];if(_0x1e99fd[_0x71fc('0x3a')][_0x71fc('0x50')]){_0x6fe2bc['include']=[{'all':!![]}];}_0x6fe2bc=_[_0x71fc('0x46')]({},_0x6fe2bc,_0x1e99fd[_0x71fc('0x48')]);return db['Dashboard']['find'](_0x6fe2bc)[_0x71fc('0x2b')](handleEntityNotFound(_0x382319,null))['then'](respondWithResult(_0x382319,null))[_0x71fc('0x4c')](handleError(_0x382319,null));};exports['create']=function(_0x39c4aa,_0x2c98a1){return db[_0x71fc('0x35')]['create'](_0x39c4aa[_0x71fc('0x51')],{})[_0x71fc('0x2b')](function(_0x4b5f54){var _0x5e56ab=_0x39c4aa[_0x71fc('0x52')][_0x71fc('0x2d')]({'plain':!![]});if(!_0x5e56ab)throw new Error(_0x71fc('0x53'));if(_0x5e56ab[_0x71fc('0x54')]==='user'){var _0x262037=_0x4b5f54[_0x71fc('0x2d')]({'plain':!![]});var _0x596539=_0x71fc('0x2e');return db['UserProfileSection'][_0x71fc('0x55')]({'where':{'name':_0x596539,'userProfileId':_0x5e56ab[_0x71fc('0x56')]},'raw':!![]})['then'](function(_0xcea7c6){if(_0xcea7c6&&_0xcea7c6['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x262037[_0x71fc('0x39')],'resourceId':_0x262037['id'],'type':_0xcea7c6['name'],'sectionId':_0xcea7c6['id']},{})[_0x71fc('0x2b')](function(){return _0x4b5f54;});}else{return _0x4b5f54;}})['catch'](function(_0x438848){logger['error'](_0x71fc('0x57'),_0x438848);throw _0x438848;});}return _0x4b5f54;})[_0x71fc('0x2b')](respondWithResult(_0x2c98a1,0xc9))[_0x71fc('0x4c')](handleError(_0x2c98a1,null));};exports[_0x71fc('0x58')]=function(_0x4bb791,_0x3a5ca9){var _0x409251={'where':{'id':_0x4bb791[_0x71fc('0x4e')]['id']}},_0x4a16b3={};_0x4a16b3['model']=_['keys'](db[_0x71fc('0x35')][_0x71fc('0x36')]);_0x409251['attributes']=_[_0x71fc('0x3d')](_0x4a16b3[_0x71fc('0x38')],qs[_0x71fc('0x3f')](_0x4bb791[_0x71fc('0x3a')][_0x71fc('0x3f')]));_0x409251[_0x71fc('0x3e')]=_0x409251['attributes'][_0x71fc('0x4f')]?_0x409251['attributes']:_0x4a16b3[_0x71fc('0x38')];if(_0x4bb791[_0x71fc('0x3a')][_0x71fc('0x50')]){_0x409251[_0x71fc('0x49')]=[{'all':!![]}];}_0x409251=_[_0x71fc('0x46')]({},_0x409251,_0x4bb791[_0x71fc('0x48')]);return db['Dashboard'][_0x71fc('0x55')](_0x409251)[_0x71fc('0x2b')](handleEntityNotFound(_0x3a5ca9,null))[_0x71fc('0x2b')](function(_0x449b73){if(_0x449b73){var _0x2d72c6=_0x449b73[_0x71fc('0x2d')]({'plain':!![]});_0x2d72c6=qs[_0x71fc('0x59')](_0x2d72c6,['id','createdAt',_0x71fc('0x5a')]);_0x4bb791[_0x71fc('0x51')]=_['omit'](_0x4bb791['body'],['id',_0x71fc('0x5b'),_0x71fc('0x5a')]);return db[_0x71fc('0x35')]['create'](_[_0x71fc('0x46')](_0x2d72c6,_0x4bb791[_0x71fc('0x51')]),{'include':_0x4bb791['query'][_0x71fc('0x50')]?[{'all':!![]}]:undefined})[_0x71fc('0x2b')](function(_0x44c7af){var _0x30d7e5=_0x4bb791[_0x71fc('0x52')][_0x71fc('0x2d')]({'plain':!![]});if(!_0x30d7e5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x30d7e5['role']===_0x71fc('0x52')){var _0x5a53ba=_0x44c7af['get']({'plain':!![]});var _0x3f6ecc='CustomDashboards';return db['UserProfileSection'][_0x71fc('0x55')]({'where':{'name':_0x3f6ecc,'userProfileId':_0x30d7e5[_0x71fc('0x56')]},'raw':!![]})[_0x71fc('0x2b')](function(_0x8a8a7b){if(_0x8a8a7b&&_0x8a8a7b[_0x71fc('0x5c')]===0x0){return db[_0x71fc('0x2f')][_0x71fc('0x5d')]({'name':_0x5a53ba['name'],'resourceId':_0x5a53ba['id'],'type':_0x8a8a7b['name'],'sectionId':_0x8a8a7b['id']},{})['then'](function(){return _0x44c7af;});}else{return _0x44c7af;}})[_0x71fc('0x4c')](function(_0x146ce2){logger[_0x71fc('0x31')](_0x71fc('0x57'),_0x146ce2);throw _0x146ce2;});}return _0x44c7af;});}})['then'](respondWithResult(_0x3a5ca9,0xc9))[_0x71fc('0x4c')](handleError(_0x3a5ca9,null));};exports[_0x71fc('0x2a')]=function(_0xbc392b,_0x1d14ab){if(_0xbc392b['body']['id']){delete _0xbc392b[_0x71fc('0x51')]['id'];}return db[_0x71fc('0x35')][_0x71fc('0x55')]({'where':{'id':_0xbc392b['params']['id']}})[_0x71fc('0x2b')](handleEntityNotFound(_0x1d14ab,null))[_0x71fc('0x2b')](saveUpdates(_0xbc392b['body'],null))[_0x71fc('0x2b')](respondWithResult(_0x1d14ab,null))[_0x71fc('0x4c')](handleError(_0x1d14ab,null));};exports[_0x71fc('0x2c')]=function(_0x2c1a2e,_0x8ef06){return db['Dashboard']['find']({'where':{'id':_0x2c1a2e[_0x71fc('0x4e')]['id']}})[_0x71fc('0x2b')](handleEntityNotFound(_0x8ef06,null))[_0x71fc('0x2b')](removeEntity(_0x8ef06,null))[_0x71fc('0x4c')](handleError(_0x8ef06,null));};function widgetAttributes(_0x58c78e){try{switch(_0x58c78e[_0x71fc('0x47')]){case _0x71fc('0x5e'):return[{'name':_0x71fc('0x5f'),'value':_0x58c78e[_0x71fc('0x5f')]||(_0x58c78e['attrs']&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e['attrs'][0x0]['value']:undefined)||'https://'}];case _0x71fc('0x61'):return[{'name':_0x71fc('0x62'),'value':_0x58c78e[_0x71fc('0x62')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e[_0x71fc('0x60')][0x0][_0x71fc('0x63')]:undefined)||''}];case _0x71fc('0x64'):return[{'name':'attrHourFormat','value':_0x58c78e[_0x71fc('0x65')]||(_0x58c78e['attrs']&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e['attrs'][0x0][_0x71fc('0x63')]:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x58c78e[_0x71fc('0x66')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e['attrs'][0x1]?_0x58c78e[_0x71fc('0x60')][0x1]['value']:undefined)||'0.00'},{'name':'attrFontSize','value':_0x58c78e[_0x71fc('0x67')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x2]?_0x58c78e[_0x71fc('0x60')][0x2][_0x71fc('0x63')]:undefined)||0xc}];case _0x71fc('0x68'):return[{'name':_0x71fc('0x69'),'value':_0x58c78e[_0x71fc('0x69')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e[_0x71fc('0x60')][0x0]['value']:undefined)||_0x71fc('0x6a')},{'name':_0x71fc('0x6b'),'value':_0x58c78e[_0x71fc('0x6b')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x1]?_0x58c78e[_0x71fc('0x60')][0x1][_0x71fc('0x63')]:undefined)||[]},{'name':_0x71fc('0x67'),'value':_0x58c78e[_0x71fc('0x67')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e['attrs'][0x2]?_0x58c78e[_0x71fc('0x60')][0x2][_0x71fc('0x63')]:undefined)||0x14},{'name':_0x71fc('0x6c'),'value':_0x58c78e['attrChannel']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e['attrs'][0x3]?_0x58c78e[_0x71fc('0x60')][0x3][_0x71fc('0x63')]:undefined)||_0x71fc('0x6d')},{'name':_0x71fc('0x6e'),'value':_0x58c78e[_0x71fc('0x6e')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x4]?_0x58c78e[_0x71fc('0x60')][0x4]['value']:undefined)||''},{'name':_0x71fc('0x6f'),'value':_0x58c78e[_0x71fc('0x6f')]||(_0x58c78e['attrs']&&_0x58c78e[_0x71fc('0x60')][0x5]?_0x58c78e['attrs'][0x5][_0x71fc('0x63')]:undefined)||''},{'name':_0x71fc('0x70'),'value':_0x58c78e['attrSmsAccounts']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x6]?_0x58c78e[_0x71fc('0x60')][0x6][_0x71fc('0x63')]:undefined)||''},{'name':_0x71fc('0x71'),'value':_0x58c78e[_0x71fc('0x71')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x7]?_0x58c78e[_0x71fc('0x60')][0x7][_0x71fc('0x63')]:undefined)||''},{'name':_0x71fc('0x72'),'value':_0x58c78e['attrWhatsappAccounts']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x8]?_0x58c78e[_0x71fc('0x60')][0x8]['value']:undefined)||''},{'name':_0x71fc('0x73'),'value':_0x58c78e[_0x71fc('0x73')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x9]?_0x58c78e[_0x71fc('0x60')][0x9][_0x71fc('0x63')]:undefined)||''}];case'multibar-chart':case _0x71fc('0x74'):return[{'name':_0x71fc('0x75'),'value':_0x58c78e[_0x71fc('0x75')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e['attrs'][0x0][_0x71fc('0x63')]:undefined)||_0x71fc('0x6a')},{'name':_0x71fc('0x76'),'value':_0x58c78e[_0x71fc('0x76')]||(_0x58c78e['attrs']&&_0x58c78e['attrs'][0x1]?_0x58c78e[_0x71fc('0x60')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x58c78e['attrSerie3']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x2]?_0x58c78e[_0x71fc('0x60')][0x2][_0x71fc('0x63')]:undefined)||null},{'name':_0x71fc('0x6b'),'value':_0x58c78e['attrVoiceQueues']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e['attrs'][0x3]?_0x58c78e['attrs'][0x3][_0x71fc('0x63')]:undefined)||[]},{'name':_0x71fc('0x6c'),'value':_0x58c78e[_0x71fc('0x6c')]||(_0x58c78e['attrs']&&_0x58c78e['attrs'][0x4]?_0x58c78e[_0x71fc('0x60')][0x4][_0x71fc('0x63')]:undefined)||_0x71fc('0x6d')},{'name':_0x71fc('0x6e'),'value':_0x58c78e['attrEmailAccounts']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x5]?_0x58c78e[_0x71fc('0x60')][0x5][_0x71fc('0x63')]:undefined)||''},{'name':_0x71fc('0x6f'),'value':_0x58c78e[_0x71fc('0x6f')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e['attrs'][0x6]?_0x58c78e['attrs'][0x6][_0x71fc('0x63')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x58c78e['attrSmsAccounts']||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e['attrs'][0x7]?_0x58c78e['attrs'][0x7][_0x71fc('0x63')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x58c78e[_0x71fc('0x71')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x8]?_0x58c78e[_0x71fc('0x60')][0x8][_0x71fc('0x63')]:undefined)||''},{'name':_0x71fc('0x72'),'value':_0x58c78e['attrWhatsappAccounts']||(_0x58c78e['attrs']&&_0x58c78e[_0x71fc('0x60')][0x9]?_0x58c78e[_0x71fc('0x60')][0x9][_0x71fc('0x63')]:undefined)||''},{'name':_0x71fc('0x73'),'value':_0x58c78e[_0x71fc('0x73')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0xa]?_0x58c78e['attrs'][0xa][_0x71fc('0x63')]:undefined)||''}];case _0x71fc('0x77'):return[{'name':_0x71fc('0x78'),'type':_0x58c78e[_0x71fc('0x79')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e[_0x71fc('0x60')][0x0]['type']:undefined)||null,'value':_0x58c78e[_0x71fc('0x78')]||(_0x58c78e['attrs']&&_0x58c78e[_0x71fc('0x60')][0x0]?_0x58c78e['attrs'][0x0][_0x71fc('0x63')]:undefined)||null},{'name':'attrRefresh','value':_0x58c78e[_0x71fc('0x7a')]||(_0x58c78e[_0x71fc('0x60')]&&_0x58c78e[_0x71fc('0x60')][0x1]?_0x58c78e[_0x71fc('0x60')][0x1][_0x71fc('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x14a5b2){logger[_0x71fc('0x31')](_0x71fc('0x7b'),JSON[_0x71fc('0x7c')](_0x14a5b2));return[];}}exports[_0x71fc('0x7d')]=function(_0x4a2340,_0x5c8a90,_0x4e1dbe){if(_0x4a2340[_0x71fc('0x51')]['id']){delete _0x4a2340[_0x71fc('0x51')]['id'];}return db['Dashboard'][_0x71fc('0x55')]({'where':{'id':_0x4a2340[_0x71fc('0x4e')]['id']}})[_0x71fc('0x2b')](handleEntityNotFound(_0x5c8a90,null))['then'](function(_0x4916b8){if(_0x4916b8){_0x4a2340[_0x71fc('0x51')][_0x71fc('0x7e')]=_0x4916b8['id'];_0x4a2340['body'][_0x71fc('0x60')]=widgetAttributes(_0x4a2340[_0x71fc('0x51')]);return db[_0x71fc('0x7f')][_0x71fc('0x5d')](_0x4a2340['body']);}})[_0x71fc('0x2b')](respondWithResult(_0x5c8a90,null))[_0x71fc('0x4c')](handleError(_0x5c8a90,null));};exports['getItems']=function(_0x37431f,_0x59fc81,_0x1f506f){var _0x1724f6={};var _0x6a49ad={};var _0x2d9401;var _0x15c297;return db['Dashboard'][_0x71fc('0x80')]({'where':{'id':_0x37431f[_0x71fc('0x4e')]['id']}})[_0x71fc('0x2b')](handleEntityNotFound(_0x59fc81,null))[_0x71fc('0x2b')](function(_0x5418d9){if(_0x5418d9){_0x2d9401=_0x5418d9;_0x6a49ad[_0x71fc('0x38')]=_[_0x71fc('0x3b')](db[_0x71fc('0x7f')][_0x71fc('0x36')]);_0x6a49ad[_0x71fc('0x3a')]=_[_0x71fc('0x3b')](_0x37431f['query']);_0x6a49ad[_0x71fc('0x3c')]=_['intersection'](_0x6a49ad[_0x71fc('0x38')],_0x6a49ad['query']);_0x1724f6['attributes']=_[_0x71fc('0x3d')](_0x6a49ad[_0x71fc('0x38')],qs[_0x71fc('0x3f')](_0x37431f['query'][_0x71fc('0x3f')]));_0x1724f6['attributes']=_0x1724f6[_0x71fc('0x3e')]['length']?_0x1724f6['attributes']:_0x6a49ad['model'];_0x1724f6[_0x71fc('0x81')]=qs[_0x71fc('0x42')](_0x37431f[_0x71fc('0x3a')]['sort']);_0x1724f6[_0x71fc('0x43')]=qs[_0x71fc('0x3c')](_[_0x71fc('0x44')](_0x37431f[_0x71fc('0x3a')],_0x6a49ad[_0x71fc('0x3c')]));if(_0x37431f['query'][_0x71fc('0x45')]){_0x1724f6['where']=_[_0x71fc('0x46')](_0x1724f6[_0x71fc('0x43')],{'$or':_['map'](_0x1724f6[_0x71fc('0x3e')],function(_0x18d4fd){var _0x52e006={};_0x52e006[_0x18d4fd]={'$like':'%'+_0x37431f[_0x71fc('0x3a')]['filter']+'%'};return _0x52e006;})});}_0x1724f6=_['merge']({},_0x1724f6,_0x37431f['options']);return _0x2d9401['getItems'](_0x1724f6);}})['then'](function(_0x7573ee){if(_0x7573ee){_0x15c297=_0x7573ee['length'];if(!_0x37431f[_0x71fc('0x3a')]['hasOwnProperty']('nolimit')){_0x1724f6[_0x71fc('0x24')]=qs[_0x71fc('0x24')](_0x37431f[_0x71fc('0x3a')]['limit']);_0x1724f6[_0x71fc('0x22')]=qs[_0x71fc('0x22')](_0x37431f[_0x71fc('0x3a')]['offset']);}return _0x2d9401[_0x71fc('0x82')](_0x1724f6);}})[_0x71fc('0x2b')](function(_0x459a27){if(_0x459a27){return _0x459a27?{'count':_0x15c297,'rows':_0x459a27}:null;}})[_0x71fc('0x2b')](respondWithResult(_0x59fc81,null))[_0x71fc('0x4c')](handleError(_0x59fc81,null));}; \ No newline at end of file diff --git a/server/api/dashboard/dashboard.events.js b/server/api/dashboard/dashboard.events.js new file mode 100644 index 0000000..f7da2e6 --- /dev/null +++ b/server/api/dashboard/dashboard.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0a01=['hasOwnProperty','exports','setMaxListeners','remove','emit'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x0a01,0x10b));var _0x10a0=function(_0x3a9acd,_0x77ca4c){_0x3a9acd=_0x3a9acd-0x0;var _0x4c8cdb=_0x0a01[_0x3a9acd];return _0x4c8cdb;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0x10a0('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x10a0('0x1')};function emitEvent(_0x4c9f4a){return function(_0x32a034,_0x3fc5fa,_0x290eb9){DashboardEvents[_0x10a0('0x2')](_0x4c9f4a+':'+_0x32a034['id'],_0x32a034);DashboardEvents[_0x10a0('0x2')](_0x4c9f4a,_0x32a034);_0x290eb9(null);};}for(var e in events){if(events[_0x10a0('0x3')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0x10a0('0x4')]=DashboardEvents; \ No newline at end of file diff --git a/server/api/dashboard/dashboard.model.js b/server/api/dashboard/dashboard.model.js new file mode 100644 index 0000000..4001c80 --- /dev/null +++ b/server/api/dashboard/dashboard.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x066f=['api','moment','bluebird','request-promise','path','../../config/environment','exports','define','Dashboard','dashboards','lodash','util','../../config/logger'];(function(_0x523710,_0x5c0909){var _0x3e4973=function(_0x450592){while(--_0x450592){_0x523710['push'](_0x523710['shift']());}};_0x3e4973(++_0x5c0909);}(_0x066f,0x101));var _0xf066=function(_0xe6db94,_0x342d69){_0xe6db94=_0xe6db94-0x0;var _0x31abe3=_0x066f[_0xe6db94];return _0x31abe3;};'use strict';var _=require(_0xf066('0x0'));var util=require(_0xf066('0x1'));var logger=require(_0xf066('0x2'))(_0xf066('0x3'));var moment=require(_0xf066('0x4'));var BPromise=require(_0xf066('0x5'));var rp=require(_0xf066('0x6'));var fs=require('fs');var path=require(_0xf066('0x7'));var rimraf=require('rimraf');var config=require(_0xf066('0x8'));var attributes=require('./dashboard.attributes');module[_0xf066('0x9')]=function(_0x45e244,_0xc3ac86){return _0x45e244[_0xf066('0xa')](_0xf066('0xb'),attributes,{'tableName':_0xf066('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/dashboard/dashboard.rpc.js b/server/api/dashboard/dashboard.rpc.js new file mode 100644 index 0000000..313ce12 --- /dev/null +++ b/server/api/dashboard/dashboard.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2224=['register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter'];(function(_0x1f07fa,_0x5e2e6c){var _0x48db19=function(_0x3c02ac){while(--_0x3c02ac){_0x1f07fa['push'](_0x1f07fa['shift']());}};_0x48db19(++_0x5e2e6c);}(_0x2224,0x85));var _0x4222=function(_0x1ec8f9,_0x22f5e7){_0x1ec8f9=_0x1ec8f9-0x0;var _0x17cd3d=_0x2224[_0x1ec8f9];return _0x17cd3d;};'use strict';var _=require(_0x4222('0x0'));var util=require(_0x4222('0x1'));var moment=require(_0x4222('0x2'));var BPromise=require('bluebird');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(_0x4222('0x3'))(_0x4222('0x4'));var config=require(_0x4222('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x4222('0x6')]['http']({'port':0x232a});config[_0x4222('0x7')]=_[_0x4222('0x8')](config[_0x4222('0x7')],{'host':_0x4222('0x9'),'port':0x18eb});var socket=require(_0x4222('0xa'))(new Redis(config[_0x4222('0x7')]));require('./dashboard.socket')[_0x4222('0xb')](socket);function respondWithRpcPromise(_0x472660,_0x16eb2d,_0x586f21){return new BPromise(function(_0x313181,_0x323356){return client[_0x4222('0xc')](_0x472660,_0x586f21)[_0x4222('0xd')](function(_0x7fceb7){logger[_0x4222('0xe')](_0x4222('0xf'),_0x16eb2d,_0x4222('0x10'));logger[_0x4222('0x11')](_0x4222('0x12'),_0x16eb2d,'request\x20sent',JSON[_0x4222('0x13')](_0x7fceb7));if(_0x7fceb7[_0x4222('0x14')]){if(_0x7fceb7[_0x4222('0x14')][_0x4222('0x15')]===0x1f4){logger[_0x4222('0x14')](_0x4222('0xf'),_0x16eb2d,_0x7fceb7[_0x4222('0x14')]['message']);return _0x323356(_0x7fceb7[_0x4222('0x14')][_0x4222('0x16')]);}logger[_0x4222('0x14')](_0x4222('0xf'),_0x16eb2d,_0x7fceb7[_0x4222('0x14')][_0x4222('0x16')]);return _0x313181(_0x7fceb7['error']['message']);}else{logger[_0x4222('0xe')]('Dashboard,\x20%s,\x20%s',_0x16eb2d,'request\x20sent');_0x313181(_0x7fceb7['result'][_0x4222('0x16')]);}})[_0x4222('0x17')](function(_0x429c6d){logger[_0x4222('0x14')](_0x4222('0xf'),_0x16eb2d,_0x429c6d);_0x323356(_0x429c6d);});});} \ No newline at end of file diff --git a/server/api/dashboard/dashboard.socket.js b/server/api/dashboard/dashboard.socket.js new file mode 100644 index 0000000..6228f2e --- /dev/null +++ b/server/api/dashboard/dashboard.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2da5=['dashboard:','./dashboard.events','save','remove','update','emit','removeListener','length'];(function(_0x4ee0a8,_0x1e7570){var _0x2ac1e9=function(_0x1be960){while(--_0x1be960){_0x4ee0a8['push'](_0x4ee0a8['shift']());}};_0x2ac1e9(++_0x1e7570);}(_0x2da5,0x71));var _0x52da=function(_0x5eecac,_0x2dcae9){_0x5eecac=_0x5eecac-0x0;var _0x3dea33=_0x2da5[_0x5eecac];return _0x3dea33;};'use strict';var DashboardEvents=require(_0x52da('0x0'));var events=[_0x52da('0x1'),_0x52da('0x2'),_0x52da('0x3')];function createListener(_0x1982ce,_0x5b9f3b){return function(_0xe54e6a){_0x5b9f3b[_0x52da('0x4')](_0x1982ce,_0xe54e6a);};}function removeListener(_0x127e92,_0x4551e7){return function(){DashboardEvents[_0x52da('0x5')](_0x127e92,_0x4551e7);};}exports['register']=function(_0x14c23c){for(var _0x113e54=0x0,_0x3e184e=events[_0x52da('0x6')];_0x113e54<_0x3e184e;_0x113e54++){var _0x585b74=events[_0x113e54];var _0x2bfe40=createListener(_0x52da('0x7')+_0x585b74,_0x14c23c);DashboardEvents['on'](_0x585b74,_0x2bfe40);}}; \ No newline at end of file diff --git a/server/api/dashboard/index.js b/server/api/dashboard/index.js new file mode 100644 index 0000000..61a44fb --- /dev/null +++ b/server/api/dashboard/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x82de=['Router','fs-extra','../../components/auth/service','../../config/environment','./dashboard.controller','get','isAuthenticated','/:id','show','/:id/items','create','/:id/clone','post','addItem','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x82de,0x19d));var _0xe82d=function(_0x4a5fa5,_0x51dadc){_0x4a5fa5=_0x4a5fa5-0x0;var _0x241266=_0x82de[_0x4a5fa5];return _0x241266;};'use strict';var multer=require(_0xe82d('0x0'));var util=require(_0xe82d('0x1'));var path=require(_0xe82d('0x2'));var timeout=require(_0xe82d('0x3'));var express=require(_0xe82d('0x4'));var router=express[_0xe82d('0x5')]();var fs_extra=require(_0xe82d('0x6'));var auth=require(_0xe82d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe82d('0x8'));var controller=require(_0xe82d('0x9'));router[_0xe82d('0xa')]('/',auth[_0xe82d('0xb')](),controller['index']);router[_0xe82d('0xa')](_0xe82d('0xc'),auth[_0xe82d('0xb')](),controller[_0xe82d('0xd')]);router[_0xe82d('0xa')](_0xe82d('0xe'),auth[_0xe82d('0xb')](),controller['getItems']);router['post']('/',auth['isAuthenticated'](),controller[_0xe82d('0xf')]);router['post'](_0xe82d('0x10'),auth[_0xe82d('0xb')](),controller['clone']);router[_0xe82d('0x11')](_0xe82d('0xe'),auth[_0xe82d('0xb')](),controller[_0xe82d('0x12')]);router['put'](_0xe82d('0xc'),auth[_0xe82d('0xb')](),controller[_0xe82d('0x13')]);router['delete'](_0xe82d('0xc'),auth[_0xe82d('0xb')](),controller[_0xe82d('0x14')]);module[_0xe82d('0x15')]=router; \ No newline at end of file diff --git a/server/api/dashboardItem/dashboardItem.attributes.js b/server/api/dashboardItem/dashboardItem.attributes.js new file mode 100644 index 0000000..fff6074 --- /dev/null +++ b/server/api/dashboardItem/dashboardItem.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb4c7=['TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x384706,_0xd1665b){_0x384706=_0x384706-0x0;var _0x2b67f4=_0xb4c7[_0x384706];return _0x2b67f4;};'use strict';var Sequelize=require(_0x7b4c('0x0'));var squel=require(_0x7b4c('0x1'));var _=require(_0x7b4c('0x2'));module[_0x7b4c('0x3')]={'title':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x7b4c('0x5')](_0x7b4c('0x6')),'get':function(){try{return JSON[_0x7b4c('0x7')](this[_0x7b4c('0x8')](_0x7b4c('0x9')));}catch(_0x5adec9){return[];}},'set':function(_0x1b0f57){try{this[_0x7b4c('0xa')](_0x7b4c('0x9'),JSON['stringify'](_0x1b0f57));}catch(_0x2d7b7e){this[_0x7b4c('0xa')]('attrs',JSON[_0x7b4c('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x7b4c('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x7b4c('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x7b4c('0xc')]},'col':{'type':Sequelize[_0x7b4c('0xc')]},'background':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![],'defaultValue':_0x7b4c('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![],'defaultValue':_0x7b4c('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x7b4c('0x4')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}}; \ No newline at end of file diff --git a/server/api/dashboardItem/dashboardItem.controller.js b/server/api/dashboardItem/dashboardItem.controller.js new file mode 100644 index 0000000..f72f95c --- /dev/null +++ b/server/api/dashboardItem/dashboardItem.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x16ce=['intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','params','type','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrChannel','web-report','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','ejs','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','../../config/environment','../../config/license/util','redis','defaults','localhost','./dashboardItem.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','show','model','keys','DashboardItem','rawAttributes','query','filters'];(function(_0x42fa90,_0x5b8ad7){var _0x3bf801=function(_0x4d645a){while(--_0x4d645a){_0x42fa90['push'](_0x42fa90['shift']());}};_0x3bf801(++_0x5b8ad7);}(_0x16ce,0xfb));var _0xe16c=function(_0x215f6f,_0x233f4e){_0x215f6f=_0x215f6f-0x0;var _0x4250f6=_0x16ce[_0x215f6f];return _0x4250f6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe16c('0x0'));var zipdir=require(_0xe16c('0x1'));var jsonpatch=require(_0xe16c('0x2'));var rp=require(_0xe16c('0x3'));var moment=require(_0xe16c('0x4'));var BPromise=require(_0xe16c('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xe16c('0x6'));var csv=require('to-csv');var ejs=require(_0xe16c('0x7'));var fs=require('fs');var fs_extra=require(_0xe16c('0x8'));var _=require(_0xe16c('0x9'));var squel=require(_0xe16c('0xa'));var crypto=require(_0xe16c('0xb'));var jsforce=require(_0xe16c('0xc'));var deskjs=require(_0xe16c('0xd'));var toCsv=require(_0xe16c('0xe'));var querystring=require('querystring');var Papa=require(_0xe16c('0xf'));var Redis=require(_0xe16c('0x10'));var authService=require(_0xe16c('0x11'));var qs=require(_0xe16c('0x12'));var as=require(_0xe16c('0x13'));var hardwareService=require(_0xe16c('0x14'));var logger=require(_0xe16c('0x15'))(_0xe16c('0x16'));var utils=require(_0xe16c('0x17'));var config=require(_0xe16c('0x18'));var licenseUtil=require(_0xe16c('0x19'));var db=require('../../mysqldb')['db'];config[_0xe16c('0x1a')]=_[_0xe16c('0x1b')](config[_0xe16c('0x1a')],{'host':_0xe16c('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe16c('0x1d'))[_0xe16c('0x1e')](socket);function respondWithStatusCode(_0xb1f263,_0x14fc33){_0x14fc33=_0x14fc33||0xcc;return function(_0x4a4a21){if(_0x4a4a21){return _0xb1f263[_0xe16c('0x1f')](_0x14fc33);}return _0xb1f263['status'](_0x14fc33)[_0xe16c('0x20')]();};}function respondWithResult(_0x7a62b9,_0x353a5b){_0x353a5b=_0x353a5b||0xc8;return function(_0x5b7439){if(_0x5b7439){return _0x7a62b9[_0xe16c('0x21')](_0x353a5b)[_0xe16c('0x22')](_0x5b7439);}};}function respondWithFilteredResult(_0x3a99db,_0x3bb637){return function(_0x2afddf){if(_0x2afddf){var _0x5121f8=typeof _0x3bb637[_0xe16c('0x23')]===_0xe16c('0x24')&&typeof _0x3bb637[_0xe16c('0x25')]==='undefined';var _0x52ef0f=_0x2afddf['count'];var _0x30e657=_0x5121f8?0x0:_0x3bb637[_0xe16c('0x23')];var _0x611939=_0x5121f8?_0x2afddf[_0xe16c('0x26')]:_0x3bb637[_0xe16c('0x23')]+_0x3bb637[_0xe16c('0x25')];var _0x48beef;if(_0x611939>=_0x52ef0f){_0x611939=_0x52ef0f;_0x48beef=0xc8;}else{_0x48beef=0xce;}_0x3a99db[_0xe16c('0x21')](_0x48beef);return _0x3a99db[_0xe16c('0x27')](_0xe16c('0x28'),_0x30e657+'-'+_0x611939+'/'+_0x52ef0f)[_0xe16c('0x22')](_0x2afddf);}return null;};}function patchUpdates(_0x5a88ed){return function(_0x27eb44){try{jsonpatch[_0xe16c('0x29')](_0x27eb44,_0x5a88ed,!![]);}catch(_0x453aed){return BPromise[_0xe16c('0x2a')](_0x453aed);}return _0x27eb44[_0xe16c('0x2b')]();};}function saveUpdates(_0x18669a,_0x1d888d){return function(_0x8a9b36){if(_0x8a9b36){return _0x8a9b36['update'](_0x18669a)[_0xe16c('0x2c')](function(_0x9fd053){return _0x9fd053;});}return null;};}function removeEntity(_0x4fdc91,_0xd0799){return function(_0x5b6ca6){if(_0x5b6ca6){return _0x5b6ca6[_0xe16c('0x2d')]()['then'](function(){_0x4fdc91[_0xe16c('0x21')](0xcc)[_0xe16c('0x20')]();});}};}function handleEntityNotFound(_0x234c26,_0x156de3){return function(_0x473025){if(!_0x473025){_0x234c26[_0xe16c('0x1f')](0x194);}return _0x473025;};}function handleError(_0xfa565a,_0x69cd87){_0x69cd87=_0x69cd87||0x1f4;return function(_0x3472ef){logger[_0xe16c('0x2e')](_0x3472ef['stack']);if(_0x3472ef[_0xe16c('0x2f')]){delete _0x3472ef[_0xe16c('0x2f')];}_0xfa565a[_0xe16c('0x21')](_0x69cd87)['send'](_0x3472ef);};}exports[_0xe16c('0x30')]=function(_0x48d6b3,_0x4a0548){var _0x1ce8f5={'raw':![],'where':{'id':_0x48d6b3['params']['id']}},_0x25ec64={};_0x25ec64[_0xe16c('0x31')]=_[_0xe16c('0x32')](db[_0xe16c('0x33')][_0xe16c('0x34')]);_0x25ec64[_0xe16c('0x35')]=_[_0xe16c('0x32')](_0x48d6b3['query']);_0x25ec64[_0xe16c('0x36')]=_[_0xe16c('0x37')](_0x25ec64['model'],_0x25ec64[_0xe16c('0x35')]);_0x1ce8f5[_0xe16c('0x38')]=_[_0xe16c('0x37')](_0x25ec64[_0xe16c('0x31')],qs[_0xe16c('0x39')](_0x48d6b3[_0xe16c('0x35')][_0xe16c('0x39')]));_0x1ce8f5['attributes']=_0x1ce8f5[_0xe16c('0x38')][_0xe16c('0x3a')]?_0x1ce8f5[_0xe16c('0x38')]:_0x25ec64[_0xe16c('0x31')];if(_0x48d6b3[_0xe16c('0x35')][_0xe16c('0x3b')]){_0x1ce8f5[_0xe16c('0x3c')]=[{'all':!![]}];}_0x1ce8f5=_[_0xe16c('0x3d')]({},_0x1ce8f5,_0x48d6b3[_0xe16c('0x3e')]);return db[_0xe16c('0x33')][_0xe16c('0x3f')](_0x1ce8f5)[_0xe16c('0x2c')](handleEntityNotFound(_0x4a0548,null))[_0xe16c('0x2c')](respondWithResult(_0x4a0548,null))[_0xe16c('0x40')](handleError(_0x4a0548,null));};exports[_0xe16c('0x2d')]=function(_0x46bc4b,_0x5a3351){return db[_0xe16c('0x33')][_0xe16c('0x3f')]({'where':{'id':_0x46bc4b[_0xe16c('0x41')]['id']}})[_0xe16c('0x2c')](handleEntityNotFound(_0x5a3351,null))[_0xe16c('0x2c')](removeEntity(_0x5a3351,null))['catch'](handleError(_0x5a3351,null));};function widgetAttributes(_0x4e9b4a){try{switch(_0x4e9b4a[_0xe16c('0x42')]){case _0xe16c('0x43'):return[{'name':_0xe16c('0x44'),'value':_0x4e9b4a[_0xe16c('0x44')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x0]?_0x4e9b4a[_0xe16c('0x45')][0x0][_0xe16c('0x46')]:undefined)||_0xe16c('0x47')}];case'custom':return[{'name':_0xe16c('0x48'),'value':_0x4e9b4a[_0xe16c('0x48')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x0]?_0x4e9b4a['attrs'][0x0][_0xe16c('0x46')]:undefined)||''}];case _0xe16c('0x49'):return[{'name':_0xe16c('0x4a'),'value':_0x4e9b4a[_0xe16c('0x4a')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x0]?_0x4e9b4a['attrs'][0x0][_0xe16c('0x46')]:undefined)||'HH:mm:ss'},{'name':_0xe16c('0x4b'),'value':_0x4e9b4a[_0xe16c('0x4b')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x1]?_0x4e9b4a[_0xe16c('0x45')][0x1]['value']:undefined)||_0xe16c('0x4c')},{'name':_0xe16c('0x4d'),'value':_0x4e9b4a[_0xe16c('0x4d')]||(_0x4e9b4a['attrs']&&_0x4e9b4a[_0xe16c('0x45')][0x2]?_0x4e9b4a[_0xe16c('0x45')][0x2][_0xe16c('0x46')]:undefined)||0xc}];case _0xe16c('0x4e'):return[{'name':'attrMetric','value':_0x4e9b4a[_0xe16c('0x4f')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x0]?_0x4e9b4a[_0xe16c('0x45')][0x0]['value']:undefined)||_0xe16c('0x50')},{'name':_0xe16c('0x51'),'value':_0x4e9b4a[_0xe16c('0x51')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x1]?_0x4e9b4a[_0xe16c('0x45')][0x1][_0xe16c('0x46')]:undefined)||[]},{'name':_0xe16c('0x4d'),'value':_0x4e9b4a[_0xe16c('0x4d')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x2]?_0x4e9b4a[_0xe16c('0x45')][0x2][_0xe16c('0x46')]:undefined)||0x14},{'name':'attrChannel','value':_0x4e9b4a['attrChannel']||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x3]?_0x4e9b4a[_0xe16c('0x45')][0x3][_0xe16c('0x46')]:undefined)||_0xe16c('0x52')},{'name':_0xe16c('0x53'),'value':_0x4e9b4a[_0xe16c('0x53')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x4]?_0x4e9b4a[_0xe16c('0x45')][0x4][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x54'),'value':_0x4e9b4a[_0xe16c('0x54')]||(_0x4e9b4a['attrs']&&_0x4e9b4a[_0xe16c('0x45')][0x5]?_0x4e9b4a[_0xe16c('0x45')][0x5][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x55'),'value':_0x4e9b4a[_0xe16c('0x55')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x6]?_0x4e9b4a[_0xe16c('0x45')][0x6][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x56'),'value':_0x4e9b4a[_0xe16c('0x56')]||(_0x4e9b4a['attrs']&&_0x4e9b4a['attrs'][0x7]?_0x4e9b4a['attrs'][0x7][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x57'),'value':_0x4e9b4a[_0xe16c('0x57')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x8]?_0x4e9b4a[_0xe16c('0x45')][0x8]['value']:undefined)||''},{'name':_0xe16c('0x58'),'value':_0x4e9b4a[_0xe16c('0x58')]||(_0x4e9b4a['attrs']&&_0x4e9b4a['attrs'][0x9]?_0x4e9b4a['attrs'][0x9]['value']:undefined)||''}];case _0xe16c('0x59'):case _0xe16c('0x5a'):return[{'name':_0xe16c('0x5b'),'value':_0x4e9b4a[_0xe16c('0x5b')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x0]?_0x4e9b4a[_0xe16c('0x45')][0x0]['value']:undefined)||'total'},{'name':_0xe16c('0x5c'),'value':_0x4e9b4a[_0xe16c('0x5c')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x1]?_0x4e9b4a[_0xe16c('0x45')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x4e9b4a[_0xe16c('0x5d')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x2]?_0x4e9b4a[_0xe16c('0x45')][0x2][_0xe16c('0x46')]:undefined)||null},{'name':_0xe16c('0x51'),'value':_0x4e9b4a[_0xe16c('0x51')]||(_0x4e9b4a['attrs']&&_0x4e9b4a[_0xe16c('0x45')][0x3]?_0x4e9b4a[_0xe16c('0x45')][0x3][_0xe16c('0x46')]:undefined)||[]},{'name':_0xe16c('0x5e'),'value':_0x4e9b4a['attrChannel']||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x4]?_0x4e9b4a[_0xe16c('0x45')][0x4][_0xe16c('0x46')]:undefined)||_0xe16c('0x52')},{'name':_0xe16c('0x53'),'value':_0x4e9b4a[_0xe16c('0x53')]||(_0x4e9b4a['attrs']&&_0x4e9b4a[_0xe16c('0x45')][0x5]?_0x4e9b4a[_0xe16c('0x45')][0x5]['value']:undefined)||''},{'name':_0xe16c('0x54'),'value':_0x4e9b4a[_0xe16c('0x54')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x6]?_0x4e9b4a[_0xe16c('0x45')][0x6][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x55'),'value':_0x4e9b4a[_0xe16c('0x55')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x7]?_0x4e9b4a['attrs'][0x7][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x56'),'value':_0x4e9b4a[_0xe16c('0x56')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x8]?_0x4e9b4a['attrs'][0x8]['value']:undefined)||''},{'name':_0xe16c('0x57'),'value':_0x4e9b4a[_0xe16c('0x57')]||(_0x4e9b4a['attrs']&&_0x4e9b4a['attrs'][0x9]?_0x4e9b4a[_0xe16c('0x45')][0x9][_0xe16c('0x46')]:undefined)||''},{'name':_0xe16c('0x58'),'value':_0x4e9b4a[_0xe16c('0x58')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0xa]?_0x4e9b4a[_0xe16c('0x45')][0xa][_0xe16c('0x46')]:undefined)||''}];case _0xe16c('0x5f'):return[{'name':'attrReport','type':_0x4e9b4a[_0xe16c('0x60')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a[_0xe16c('0x45')][0x0]?_0x4e9b4a['attrs'][0x0]['type']:undefined)||null,'value':_0x4e9b4a['attrReport']||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x0]?_0x4e9b4a['attrs'][0x0][_0xe16c('0x46')]:undefined)||null},{'name':_0xe16c('0x61'),'value':_0x4e9b4a[_0xe16c('0x61')]||(_0x4e9b4a[_0xe16c('0x45')]&&_0x4e9b4a['attrs'][0x1]?_0x4e9b4a[_0xe16c('0x45')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1937e3){logger[_0xe16c('0x2e')](_0xe16c('0x62'),JSON['stringify'](_0x1937e3));return[];}}exports[_0xe16c('0x63')]=function(_0x4f8e03,_0x998487){if(_0x4f8e03[_0xe16c('0x64')]){_0x4f8e03[_0xe16c('0x64')][_0xe16c('0x45')]=widgetAttributes(_0x4f8e03['body']);}return db[_0xe16c('0x33')][_0xe16c('0x63')](_0x4f8e03['body'],{})[_0xe16c('0x2c')](respondWithResult(_0x998487,0xc9))['catch'](handleError(_0x998487,null));};exports[_0xe16c('0x65')]=function(_0x18ed00,_0x33b10d){if(_0x18ed00[_0xe16c('0x64')]['id']){delete _0x18ed00['body']['id'];}_0x18ed00['body'][_0xe16c('0x45')]=widgetAttributes(_0x18ed00[_0xe16c('0x64')]);return db['DashboardItem'][_0xe16c('0x3f')]({'where':{'id':_0x18ed00[_0xe16c('0x41')]['id']}})['then'](handleEntityNotFound(_0x33b10d,null))['then'](saveUpdates(_0x18ed00[_0xe16c('0x64')],null))[_0xe16c('0x2c')](respondWithResult(_0x33b10d,null))['catch'](handleError(_0x33b10d,null));}; \ No newline at end of file diff --git a/server/api/dashboardItem/dashboardItem.events.js b/server/api/dashboardItem/dashboardItem.events.js new file mode 100644 index 0000000..0ac87e6 --- /dev/null +++ b/server/api/dashboardItem/dashboardItem.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6ad6=['hook','events','../../mysqldb','DashboardItem','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x31ea8f,_0x2d1cbe){var _0x3bc2ac=function(_0xb57e34){while(--_0xb57e34){_0x31ea8f['push'](_0x31ea8f['shift']());}};_0x3bc2ac(++_0x2d1cbe);}(_0x6ad6,0x1e7));var _0x66ad=function(_0x3dc7c3,_0x369f51){_0x3dc7c3=_0x3dc7c3-0x0;var _0x147d13=_0x6ad6[_0x3dc7c3];return _0x147d13;};'use strict';var EventEmitter=require(_0x66ad('0x0'));var DashboardItem=require(_0x66ad('0x1'))['db'][_0x66ad('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x66ad('0x3')](0x0);var events={'afterCreate':_0x66ad('0x4'),'afterUpdate':_0x66ad('0x5'),'afterDestroy':'remove'};function emitEvent(_0x25dad2){return function(_0x1b3e06,_0x1ef58f,_0x375e22){DashboardItemEvents[_0x66ad('0x6')](_0x25dad2+':'+_0x1b3e06['id'],_0x1b3e06);DashboardItemEvents[_0x66ad('0x6')](_0x25dad2,_0x1b3e06);_0x375e22(null);};}for(var e in events){if(events[_0x66ad('0x7')](e)){var event=events[e];DashboardItem[_0x66ad('0x8')](e,emitEvent(event));}}module['exports']=DashboardItemEvents; \ No newline at end of file diff --git a/server/api/dashboardItem/dashboardItem.model.js b/server/api/dashboardItem/dashboardItem.model.js new file mode 100644 index 0000000..8c97227 --- /dev/null +++ b/server/api/dashboardItem/dashboardItem.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb9e1=['./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x27e7c3,_0x4d10cf){var _0x3a866f=function(_0x1848cf){while(--_0x1848cf){_0x27e7c3['push'](_0x27e7c3['shift']());}};_0x3a866f(++_0x4d10cf);}(_0xb9e1,0xad));var _0x1b9e=function(_0x4913a8,_0x5a8cbd){_0x4913a8=_0x4913a8-0x0;var _0x50a4de=_0xb9e1[_0x4913a8];return _0x50a4de;};'use strict';var _=require(_0x1b9e('0x0'));var util=require(_0x1b9e('0x1'));var logger=require(_0x1b9e('0x2'))(_0x1b9e('0x3'));var moment=require(_0x1b9e('0x4'));var BPromise=require(_0x1b9e('0x5'));var rp=require(_0x1b9e('0x6'));var fs=require('fs');var path=require(_0x1b9e('0x7'));var rimraf=require('rimraf');var config=require(_0x1b9e('0x8'));var attributes=require(_0x1b9e('0x9'));module[_0x1b9e('0xa')]=function(_0x1ab7b7,_0xbe882){return _0x1ab7b7[_0x1b9e('0xb')](_0x1b9e('0xc'),attributes,{'tableName':_0x1b9e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/dashboardItem/dashboardItem.rpc.js b/server/api/dashboardItem/dashboardItem.rpc.js new file mode 100644 index 0000000..adb2698 --- /dev/null +++ b/server/api/dashboardItem/dashboardItem.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa116=['stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s'];(function(_0x1bca90,_0x5560af){var _0x244736=function(_0x4453b2){while(--_0x4453b2){_0x1bca90['push'](_0x1bca90['shift']());}};_0x244736(++_0x5560af);}(_0xa116,0x1a9));var _0x6a11=function(_0x6987b,_0x5b3226){_0x6987b=_0x6987b-0x0;var _0x29703b=_0xa116[_0x6987b];return _0x29703b;};'use strict';var _=require('lodash');var util=require(_0x6a11('0x0'));var moment=require(_0x6a11('0x1'));var BPromise=require(_0x6a11('0x2'));var rs=require(_0x6a11('0x3'));var fs=require('fs');var Redis=require(_0x6a11('0x4'));var db=require(_0x6a11('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a11('0x6'))(_0x6a11('0x7'));var config=require(_0x6a11('0x8'));var jayson=require(_0x6a11('0x9'));var client=jayson[_0x6a11('0xa')][_0x6a11('0xb')]({'port':0x232a});config[_0x6a11('0xc')]=_[_0x6a11('0xd')](config[_0x6a11('0xc')],{'host':_0x6a11('0xe'),'port':0x18eb});var socket=require(_0x6a11('0xf'))(new Redis(config['redis']));require(_0x6a11('0x10'))[_0x6a11('0x11')](socket);function respondWithRpcPromise(_0x38bba9,_0x50192d,_0x471fb5){return new BPromise(function(_0x5691b1,_0x495f56){return client[_0x6a11('0x12')](_0x38bba9,_0x471fb5)[_0x6a11('0x13')](function(_0x50d2ab){logger[_0x6a11('0x14')](_0x6a11('0x15'),_0x50192d,_0x6a11('0x16'));logger[_0x6a11('0x17')](_0x6a11('0x18'),_0x50192d,_0x6a11('0x16'),JSON[_0x6a11('0x19')](_0x50d2ab));if(_0x50d2ab[_0x6a11('0x1a')]){if(_0x50d2ab[_0x6a11('0x1a')][_0x6a11('0x1b')]===0x1f4){logger[_0x6a11('0x1a')]('DashboardItem,\x20%s,\x20%s',_0x50192d,_0x50d2ab['error']['message']);return _0x495f56(_0x50d2ab['error'][_0x6a11('0x1c')]);}logger[_0x6a11('0x1a')]('DashboardItem,\x20%s,\x20%s',_0x50192d,_0x50d2ab[_0x6a11('0x1a')]['message']);return _0x5691b1(_0x50d2ab[_0x6a11('0x1a')][_0x6a11('0x1c')]);}else{logger['info']('DashboardItem,\x20%s,\x20%s',_0x50192d,'request\x20sent');_0x5691b1(_0x50d2ab[_0x6a11('0x1d')][_0x6a11('0x1c')]);}})['catch'](function(_0x40c1e7){logger[_0x6a11('0x1a')](_0x6a11('0x15'),_0x50192d,_0x40c1e7);_0x495f56(_0x40c1e7);});});} \ No newline at end of file diff --git a/server/api/dashboardItem/dashboardItem.socket.js b/server/api/dashboardItem/dashboardItem.socket.js new file mode 100644 index 0000000..a47cdcb --- /dev/null +++ b/server/api/dashboardItem/dashboardItem.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2984=['register','length','./dashboardItem.events','remove','update','emit','removeListener'];(function(_0x3c5945,_0x3ff23b){var _0x571d02=function(_0x5972ec){while(--_0x5972ec){_0x3c5945['push'](_0x3c5945['shift']());}};_0x571d02(++_0x3ff23b);}(_0x2984,0x198));var _0x4298=function(_0xf285c1,_0x420382){_0xf285c1=_0xf285c1-0x0;var _0x1598a0=_0x2984[_0xf285c1];return _0x1598a0;};'use strict';var DashboardItemEvents=require(_0x4298('0x0'));var events=['save',_0x4298('0x1'),_0x4298('0x2')];function createListener(_0x3892e7,_0x574652){return function(_0x6f9a07){_0x574652[_0x4298('0x3')](_0x3892e7,_0x6f9a07);};}function removeListener(_0x4dca7d,_0x1ae389){return function(){DashboardItemEvents[_0x4298('0x4')](_0x4dca7d,_0x1ae389);};}exports[_0x4298('0x5')]=function(_0xef3ef4){for(var _0x3d7364=0x0,_0x1ea092=events[_0x4298('0x6')];_0x3d7364<_0x1ea092;_0x3d7364++){var _0x4f7e3d=events[_0x3d7364];var _0x326c52=createListener('dashboardItem:'+_0x4f7e3d,_0xef3ef4);DashboardItemEvents['on'](_0x4f7e3d,_0x326c52);}}; \ No newline at end of file diff --git a/server/api/dashboardItem/index.js b/server/api/dashboardItem/index.js new file mode 100644 index 0000000..a2ab5f8 --- /dev/null +++ b/server/api/dashboardItem/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe58a=['isAuthenticated','create','put','update','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','/:id','show'];(function(_0x9ee10f,_0xafc95c){var _0x507077=function(_0x227d80){while(--_0x227d80){_0x9ee10f['push'](_0x9ee10f['shift']());}};_0x507077(++_0xafc95c);}(_0xe58a,0x85));var _0xae58=function(_0x542f22,_0x10db96){_0x542f22=_0x542f22-0x0;var _0x52a182=_0xe58a[_0x542f22];return _0x52a182;};'use strict';var multer=require(_0xae58('0x0'));var util=require(_0xae58('0x1'));var path=require('path');var timeout=require(_0xae58('0x2'));var express=require(_0xae58('0x3'));var router=express[_0xae58('0x4')]();var fs_extra=require(_0xae58('0x5'));var auth=require(_0xae58('0x6'));var interaction=require(_0xae58('0x7'));var config=require(_0xae58('0x8'));var controller=require('./dashboardItem.controller');router['get'](_0xae58('0x9'),auth['isAuthenticated'](),controller[_0xae58('0xa')]);router['post']('/',auth[_0xae58('0xb')](),controller[_0xae58('0xc')]);router[_0xae58('0xd')](_0xae58('0x9'),auth['isAuthenticated'](),controller[_0xae58('0xe')]);router['delete'](_0xae58('0x9'),auth[_0xae58('0xb')](),controller['destroy']);module[_0xae58('0xf')]=router; \ No newline at end of file diff --git a/server/api/disposition/disposition.attributes.js b/server/api/disposition/disposition.attributes.js new file mode 100644 index 0000000..e5662fd --- /dev/null +++ b/server/api/disposition/disposition.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6d4f=['first','second','third','sequelize','exports','STRING','ENUM'];(function(_0x26d636,_0x2f9033){var _0x5c2902=function(_0x23c7c3){while(--_0x23c7c3){_0x26d636['push'](_0x26d636['shift']());}};_0x5c2902(++_0x2f9033);}(_0x6d4f,0x15a));var _0xf6d4=function(_0x543bf6,_0x763bd7){_0x543bf6=_0x543bf6-0x0;var _0x4187b3=_0x6d4f[_0x543bf6];return _0x4187b3;};'use strict';var Sequelize=require(_0xf6d4('0x0'));module[_0xf6d4('0x1')]={'name':{'type':Sequelize[_0xf6d4('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xf6d4('0x3')](_0xf6d4('0x4'),_0xf6d4('0x5'),_0xf6d4('0x6')),'allowNull':![],'defaultValue':_0xf6d4('0x4')},'description':{'type':Sequelize[_0xf6d4('0x2')]}}; \ No newline at end of file diff --git a/server/api/disposition/disposition.controller.js b/server/api/disposition/disposition.controller.js new file mode 100644 index 0000000..b6c691c --- /dev/null +++ b/server/api/disposition/disposition.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5941=['name','send','index','map','Disposition','rawAttributes','type','query','keys','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','findAll','show','includeAll','options','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Dispositions','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','reject','save','update','then','destroy','get','stack'];(function(_0xbc6b83,_0x35652f){var _0x5ef384=function(_0x407f02){while(--_0x407f02){_0xbc6b83['push'](_0xbc6b83['shift']());}};_0x5ef384(++_0x35652f);}(_0x5941,0x74));var _0x1594=function(_0x590f0c,_0x366f61){_0x590f0c=_0x590f0c-0x0;var _0x5dc4b6=_0x5941[_0x590f0c];return _0x5dc4b6;};'use strict';var emlformat=require(_0x1594('0x0'));var rimraf=require(_0x1594('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1594('0x2'));var rp=require(_0x1594('0x3'));var moment=require(_0x1594('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1594('0x5'));var util=require(_0x1594('0x6'));var path=require('path');var sox=require(_0x1594('0x7'));var csv=require(_0x1594('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1594('0x9'));var _=require(_0x1594('0xa'));var squel=require('squel');var crypto=require(_0x1594('0xb'));var jsforce=require(_0x1594('0xc'));var deskjs=require(_0x1594('0xd'));var toCsv=require(_0x1594('0x8'));var querystring=require(_0x1594('0xe'));var Papa=require('papaparse');var Redis=require(_0x1594('0xf'));var authService=require(_0x1594('0x10'));var qs=require(_0x1594('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1594('0x12'));var logger=require(_0x1594('0x13'))('api');var utils=require(_0x1594('0x14'));var config=require(_0x1594('0x15'));var licenseUtil=require(_0x1594('0x16'));var db=require(_0x1594('0x17'))['db'];function respondWithStatusCode(_0x5d7084,_0x40c68f){_0x40c68f=_0x40c68f||0xcc;return function(_0x12de5a){if(_0x12de5a){return _0x5d7084[_0x1594('0x18')](_0x40c68f);}return _0x5d7084['status'](_0x40c68f)[_0x1594('0x19')]();};}function respondWithResult(_0x16953e,_0x13bdee){_0x13bdee=_0x13bdee||0xc8;return function(_0x2e0c58){if(_0x2e0c58){return _0x16953e[_0x1594('0x1a')](_0x13bdee)[_0x1594('0x1b')](_0x2e0c58);}};}function respondWithFilteredResult(_0x1ba0eb,_0x28ee51){return function(_0x5c9587){if(_0x5c9587){var _0x33063e=typeof _0x28ee51[_0x1594('0x1c')]===_0x1594('0x1d')&&typeof _0x28ee51['limit']==='undefined';var _0x328d69=_0x5c9587[_0x1594('0x1e')];var _0x2926bb=_0x33063e?0x0:_0x28ee51[_0x1594('0x1c')];var _0xe1bb78=_0x33063e?_0x5c9587[_0x1594('0x1e')]:_0x28ee51[_0x1594('0x1c')]+_0x28ee51[_0x1594('0x1f')];var _0x3a6cda;if(_0xe1bb78>=_0x328d69){_0xe1bb78=_0x328d69;_0x3a6cda=0xc8;}else{_0x3a6cda=0xce;}_0x1ba0eb[_0x1594('0x1a')](_0x3a6cda);return _0x1ba0eb[_0x1594('0x20')]('Content-Range',_0x2926bb+'-'+_0xe1bb78+'/'+_0x328d69)[_0x1594('0x1b')](_0x5c9587);}return null;};}function patchUpdates(_0x5a5508){return function(_0x179b8e){try{jsonpatch['apply'](_0x179b8e,_0x5a5508,!![]);}catch(_0x22354e){return BPromise[_0x1594('0x21')](_0x22354e);}return _0x179b8e[_0x1594('0x22')]();};}function saveUpdates(_0x1f3531,_0x5ae541){return function(_0x5b46da){if(_0x5b46da){return _0x5b46da[_0x1594('0x23')](_0x1f3531)[_0x1594('0x24')](function(_0x84fec7){return _0x84fec7;});}return null;};}function removeEntity(_0x412a20,_0x4e6a19){return function(_0x5ec175){if(_0x5ec175){return _0x5ec175[_0x1594('0x25')]()[_0x1594('0x24')](function(){var _0x2fc26e=_0x5ec175[_0x1594('0x26')]({'plain':!![]});var _0x2bf790='Dispositions';return db['UserProfileResource'][_0x1594('0x25')]({'where':{'type':_0x2bf790,'resourceId':_0x2fc26e['id']}})[_0x1594('0x24')](function(){return _0x5ec175;});})[_0x1594('0x24')](function(){_0x412a20[_0x1594('0x1a')](0xcc)[_0x1594('0x19')]();});}};}function handleEntityNotFound(_0x11a7a9,_0x557a78){return function(_0x246fe7){if(!_0x246fe7){_0x11a7a9['sendStatus'](0x194);}return _0x246fe7;};}function handleError(_0x4939a6,_0x57197b){_0x57197b=_0x57197b||0x1f4;return function(_0x12b70e){logger['error'](_0x12b70e[_0x1594('0x27')]);if(_0x12b70e[_0x1594('0x28')]){delete _0x12b70e[_0x1594('0x28')];}_0x4939a6[_0x1594('0x1a')](_0x57197b)[_0x1594('0x29')](_0x12b70e);};}exports[_0x1594('0x2a')]=function(_0x43bcc9,_0x4b9f75){var _0x578335={},_0x93dcf3={},_0x530e42={'count':0x0,'rows':[]};var _0x30a7d=_[_0x1594('0x2b')](db[_0x1594('0x2c')][_0x1594('0x2d')],function(_0x18732e){return{'name':_0x18732e['fieldName'],'type':_0x18732e[_0x1594('0x2e')]['key']};});_0x93dcf3['model']=_[_0x1594('0x2b')](_0x30a7d,_0x1594('0x28'));_0x93dcf3[_0x1594('0x2f')]=_[_0x1594('0x30')](_0x43bcc9[_0x1594('0x2f')]);_0x93dcf3['filters']=_['intersection'](_0x93dcf3[_0x1594('0x31')],_0x93dcf3[_0x1594('0x2f')]);_0x578335[_0x1594('0x32')]=_['intersection'](_0x93dcf3['model'],qs[_0x1594('0x33')](_0x43bcc9[_0x1594('0x2f')]['fields']));_0x578335['attributes']=_0x578335[_0x1594('0x32')][_0x1594('0x34')]?_0x578335['attributes']:_0x93dcf3[_0x1594('0x31')];if(!_0x43bcc9['query'][_0x1594('0x35')](_0x1594('0x36'))){_0x578335[_0x1594('0x1f')]=qs[_0x1594('0x1f')](_0x43bcc9[_0x1594('0x2f')][_0x1594('0x1f')]);_0x578335[_0x1594('0x1c')]=qs[_0x1594('0x1c')](_0x43bcc9[_0x1594('0x2f')][_0x1594('0x1c')]);}_0x578335[_0x1594('0x37')]=qs[_0x1594('0x38')](_0x43bcc9[_0x1594('0x2f')][_0x1594('0x38')]);_0x578335[_0x1594('0x39')]=qs['filters'](_[_0x1594('0x3a')](_0x43bcc9['query'],_0x93dcf3[_0x1594('0x3b')]),_0x30a7d);if(_0x43bcc9[_0x1594('0x2f')][_0x1594('0x3c')]){_0x578335['where']=_[_0x1594('0x3d')](_0x578335[_0x1594('0x39')],{'$or':_[_0x1594('0x2b')](_0x30a7d,function(_0x498950){if(_0x498950['type']!==_0x1594('0x3e')){var _0x39df6b={};_0x39df6b[_0x498950[_0x1594('0x28')]]={'$like':'%'+_0x43bcc9['query'][_0x1594('0x3c')]+'%'};return _0x39df6b;}})});}_0x578335=_[_0x1594('0x3d')]({},_0x578335,_0x43bcc9['options']);var _0x1124aa={'where':_0x578335[_0x1594('0x39')]};return db[_0x1594('0x2c')][_0x1594('0x1e')](_0x1124aa)[_0x1594('0x24')](function(_0x591eab){_0x530e42[_0x1594('0x1e')]=_0x591eab;if(_0x43bcc9[_0x1594('0x2f')]['includeAll']){_0x578335['include']=[{'all':!![]}];}return db[_0x1594('0x2c')][_0x1594('0x3f')](_0x578335);})[_0x1594('0x24')](function(_0x5d6abc){_0x530e42['rows']=_0x5d6abc;return _0x530e42;})[_0x1594('0x24')](respondWithFilteredResult(_0x4b9f75,_0x578335))['catch'](handleError(_0x4b9f75,null));};exports[_0x1594('0x40')]=function(_0x14637e,_0x1ef110){var _0x2011c2={'raw':!![],'where':{'id':_0x14637e['params']['id']}},_0x811ade={};_0x811ade['model']=_['keys'](db[_0x1594('0x2c')][_0x1594('0x2d')]);_0x811ade[_0x1594('0x2f')]=_[_0x1594('0x30')](_0x14637e[_0x1594('0x2f')]);_0x811ade[_0x1594('0x3b')]=_['intersection'](_0x811ade[_0x1594('0x31')],_0x811ade['query']);_0x2011c2['attributes']=_['intersection'](_0x811ade[_0x1594('0x31')],qs[_0x1594('0x33')](_0x14637e[_0x1594('0x2f')][_0x1594('0x33')]));_0x2011c2['attributes']=_0x2011c2[_0x1594('0x32')][_0x1594('0x34')]?_0x2011c2['attributes']:_0x811ade[_0x1594('0x31')];if(_0x14637e[_0x1594('0x2f')][_0x1594('0x41')]){_0x2011c2['include']=[{'all':!![]}];}_0x2011c2=_[_0x1594('0x3d')]({},_0x2011c2,_0x14637e[_0x1594('0x42')]);return db[_0x1594('0x2c')]['find'](_0x2011c2)[_0x1594('0x24')](handleEntityNotFound(_0x1ef110,null))[_0x1594('0x24')](respondWithResult(_0x1ef110,null))[_0x1594('0x43')](handleError(_0x1ef110,null));};exports[_0x1594('0x44')]=function(_0x44a5a8,_0x41af24){return db['Disposition'][_0x1594('0x44')](_0x44a5a8[_0x1594('0x45')],{})[_0x1594('0x24')](function(_0x406bbc){var _0x194a3c=_0x44a5a8['user'][_0x1594('0x26')]({'plain':!![]});if(!_0x194a3c)throw new Error(_0x1594('0x46'));if(_0x194a3c['role']===_0x1594('0x47')){var _0x32dd13=_0x406bbc[_0x1594('0x26')]({'plain':!![]});var _0x122f86=_0x1594('0x48');return db[_0x1594('0x49')][_0x1594('0x4a')]({'where':{'name':_0x122f86,'userProfileId':_0x194a3c['userProfileId']},'raw':!![]})[_0x1594('0x24')](function(_0x499b4d){if(_0x499b4d&&_0x499b4d[_0x1594('0x4b')]===0x0){return db['UserProfileResource']['create']({'name':_0x32dd13[_0x1594('0x28')],'resourceId':_0x32dd13['id'],'type':_0x499b4d[_0x1594('0x28')],'sectionId':_0x499b4d['id']},{})[_0x1594('0x24')](function(){return _0x406bbc;});}else{return _0x406bbc;}})[_0x1594('0x43')](function(_0x1b4418){logger['error'](_0x1594('0x4c'),_0x1b4418);throw _0x1b4418;});}return _0x406bbc;})[_0x1594('0x24')](respondWithResult(_0x41af24,0xc9))[_0x1594('0x43')](handleError(_0x41af24,null));};exports[_0x1594('0x23')]=function(_0x2e035d,_0x2fc36d){if(_0x2e035d[_0x1594('0x45')]['id']){delete _0x2e035d[_0x1594('0x45')]['id'];}return db[_0x1594('0x2c')][_0x1594('0x4a')]({'where':{'id':_0x2e035d[_0x1594('0x4d')]['id']}})[_0x1594('0x24')](handleEntityNotFound(_0x2fc36d,null))[_0x1594('0x24')](saveUpdates(_0x2e035d[_0x1594('0x45')],null))[_0x1594('0x24')](respondWithResult(_0x2fc36d,null))['catch'](handleError(_0x2fc36d,null));};exports[_0x1594('0x25')]=function(_0x46aa15,_0x54b23b){return db[_0x1594('0x2c')]['find']({'where':{'id':_0x46aa15[_0x1594('0x4d')]['id']}})[_0x1594('0x24')](handleEntityNotFound(_0x54b23b,null))[_0x1594('0x24')](removeEntity(_0x54b23b,null))[_0x1594('0x43')](handleError(_0x54b23b,null));}; \ No newline at end of file diff --git a/server/api/disposition/disposition.model.js b/server/api/disposition/disposition.model.js new file mode 100644 index 0000000..4a7f02f --- /dev/null +++ b/server/api/disposition/disposition.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8537=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Disposition','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','name_fax','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','../../config/logger','api'];(function(_0x46db90,_0x267ff5){var _0x153352=function(_0x1e9feb){while(--_0x1e9feb){_0x46db90['push'](_0x46db90['shift']());}};_0x153352(++_0x267ff5);}(_0x8537,0xe3));var _0x7853=function(_0x3eff71,_0x37fc3b){_0x3eff71=_0x3eff71-0x0;var _0xe29c5d=_0x8537[_0x3eff71];return _0xe29c5d;};'use strict';var _=require(_0x7853('0x0'));var util=require('util');var logger=require(_0x7853('0x1'))(_0x7853('0x2'));var moment=require(_0x7853('0x3'));var BPromise=require(_0x7853('0x4'));var rp=require(_0x7853('0x5'));var fs=require('fs');var path=require(_0x7853('0x6'));var rimraf=require(_0x7853('0x7'));var config=require(_0x7853('0x8'));var attributes=require('./disposition.attributes');module[_0x7853('0x9')]=function(_0x45f681,_0x59d52d){return _0x45f681[_0x7853('0xa')](_0x7853('0xb'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x7853('0xc'),_0x7853('0xd')]},{'unique':!![],'name':_0x7853('0xe'),'fields':[_0x7853('0xc'),_0x7853('0xf')]},{'unique':!![],'name':_0x7853('0x10'),'fields':['name',_0x7853('0x11')]},{'unique':!![],'name':_0x7853('0x12'),'fields':[_0x7853('0xc'),'SmsAccountId']},{'unique':!![],'name':_0x7853('0x13'),'fields':[_0x7853('0xc'),'FaxAccountId']},{'unique':!![],'name':_0x7853('0x14'),'fields':[_0x7853('0xc'),_0x7853('0x15')]},{'unique':!![],'name':'name_whatsapp','fields':[_0x7853('0xc'),_0x7853('0x16')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/disposition/disposition.rpc.js b/server/api/disposition/disposition.rpc.js new file mode 100644 index 0000000..2e6ada1 --- /dev/null +++ b/server/api/disposition/disposition.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x4dd6c8,_0x551d14){var _0x5ce168=function(_0x5614f1){while(--_0x5614f1){_0x4dd6c8['push'](_0x4dd6c8['shift']());}};_0x5ce168(++_0x551d14);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'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 diff --git a/server/api/disposition/index.js b/server/api/disposition/index.js new file mode 100644 index 0000000..cf76f1a --- /dev/null +++ b/server/api/disposition/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3788=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','index','/:id','isAuthenticated','show','post','create','update','exports','multer','util','path'];(function(_0x570504,_0x13b26a){var _0x48b63e=function(_0x129c8a){while(--_0x129c8a){_0x570504['push'](_0x570504['shift']());}};_0x48b63e(++_0x13b26a);}(_0x3788,0x1a6));var _0x8378=function(_0x37d567,_0xe34ef6){_0x37d567=_0x37d567-0x0;var _0x5d2a27=_0x3788[_0x37d567];return _0x5d2a27;};'use strict';var multer=require(_0x8378('0x0'));var util=require(_0x8378('0x1'));var path=require(_0x8378('0x2'));var timeout=require(_0x8378('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8378('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8378('0x5'));var config=require(_0x8378('0x6'));var controller=require(_0x8378('0x7'));router[_0x8378('0x8')]('/',auth['isAuthenticated'](),controller[_0x8378('0x9')]);router[_0x8378('0x8')](_0x8378('0xa'),auth[_0x8378('0xb')](),controller[_0x8378('0xc')]);router[_0x8378('0xd')]('/',auth['isAuthenticated'](),controller[_0x8378('0xe')]);router['put'](_0x8378('0xa'),auth[_0x8378('0xb')](),controller[_0x8378('0xf')]);router['delete'](_0x8378('0xa'),auth[_0x8378('0xb')](),controller['destroy']);module[_0x8378('0x10')]=router; \ No newline at end of file diff --git a/server/api/faxAccount/faxAccount.attributes.js b/server/api/faxAccount/faxAccount.attributes.js new file mode 100644 index 0000000..a1863a0 --- /dev/null +++ b/server/api/faxAccount/faxAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8f64=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','2400','4800','9600','12000','14400','7200','v17,v27,v29','INTEGER','SIP','BOOLEAN'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8f64,0x69));var _0x48f6=function(_0x3bba27,_0x4416d7){_0x3bba27=_0x3bba27-0x0;var _0x20888c=_0x8f64[_0x3bba27];return _0x20888c;};'use strict';var Sequelize=require(_0x48f6('0x0'));module[_0x48f6('0x1')]={'name':{'type':Sequelize[_0x48f6('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x48f6('0x2')]},'ecm':{'type':Sequelize[_0x48f6('0x3')](_0x48f6('0x4'),'no'),'defaultValue':_0x48f6('0x4')},'headerinfo':{'type':Sequelize[_0x48f6('0x2')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x48f6('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x48f6('0x3')](_0x48f6('0x5'),_0x48f6('0x6'),'7200',_0x48f6('0x7'),_0x48f6('0x8'),_0x48f6('0x9')),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM']('2400','4800',_0x48f6('0xa'),_0x48f6('0x7'),_0x48f6('0x8'),_0x48f6('0x9')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x48f6('0x2')],'defaultValue':_0x48f6('0xb')},'gateway':{'type':Sequelize[_0x48f6('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x48f6('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x48f6('0x3')](_0x48f6('0xd'),'IAX','DADHI','KHOMP'),'defaultValue':_0x48f6('0xd')},'key':{'type':Sequelize[_0x48f6('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}
{{#queue}}Queue:\x20{{queue.name}}
{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x48f6('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x48f6('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x48f6('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x48f6('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x48f6('0xf')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x48f6('0x10'),'set':function(_0x56cd78){if(!_0x56cd78)this['setDataValue'](_0x48f6('0x11'),null);this[_0x48f6('0x12')](_0x48f6('0x13'),_0x56cd78);}}}; \ No newline at end of file diff --git a/server/api/faxAccount/faxAccount.controller.js b/server/api/faxAccount/faxAccount.controller.js new file mode 100644 index 0000000..36cde27 --- /dev/null +++ b/server/api/faxAccount/faxAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe695=['addAgents','omit','spread','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','User','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','http','client','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','update','destroy','FaxAccounts','UserProfileResource','stack','name','index','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','key','keys','query','filters','model','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','include','rows','show','params','Pause','attributes','includeAll','options','find','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','describe','FaxAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','FaxInteraction','addInteraction','getInteractions','CmContact','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','finally','send','getApplications','context','from-voip-provider','exten','localstationid','app','type','system','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','Wait','ReceiveFax','addAccountApplications','updateAccountApplications','VoiceExtension','bulkCreate','tech','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','server/files/attachments','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','fax','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s'];(function(_0x265517,_0x4e3929){var _0xd024de=function(_0x801724){while(--_0x801724){_0x265517['push'](_0x265517['shift']());}};_0xd024de(++_0x4e3929);}(_0xe695,0xd0));var _0x5e69=function(_0x14f553,_0x2a4c41){_0x14f553=_0x14f553-0x0;var _0x22165f=_0xe695[_0x14f553];return _0x22165f;};'use strict';var emlformat=require(_0x5e69('0x0'));var rimraf=require(_0x5e69('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e69('0x2'));var rp=require('request-promise');var moment=require(_0x5e69('0x3'));var BPromise=require(_0x5e69('0x4'));var Mustache=require(_0x5e69('0x5'));var util=require(_0x5e69('0x6'));var path=require(_0x5e69('0x7'));var sox=require(_0x5e69('0x8'));var csv=require(_0x5e69('0x9'));var ejs=require(_0x5e69('0xa'));var fs=require('fs');var fs_extra=require(_0x5e69('0xb'));var _=require(_0x5e69('0xc'));var squel=require(_0x5e69('0xd'));var crypto=require('crypto');var jsforce=require(_0x5e69('0xe'));var deskjs=require(_0x5e69('0xf'));var toCsv=require(_0x5e69('0x9'));var querystring=require(_0x5e69('0x10'));var Papa=require('papaparse');var Redis=require(_0x5e69('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5e69('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5e69('0x13'));var config=require(_0x5e69('0x14'));var licenseUtil=require(_0x5e69('0x15'));var db=require(_0x5e69('0x16'))['db'];config[_0x5e69('0x17')]=_[_0x5e69('0x18')](config[_0x5e69('0x17')],{'host':_0x5e69('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5e69('0x17')]));require('./faxAccount.socket')[_0x5e69('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x5e69('0x1b')]({'port':0x232c});var client9002=jayson[_0x5e69('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e5c68,_0x207609,_0x25e0dc,_0x54697f){return new BPromise(function(_0x5eba48,_0x22e43f){var _0x1b25ce=_0x54697f||client;return _0x1b25ce[_0x5e69('0x1d')](_0x2e5c68,_0x25e0dc)[_0x5e69('0x1e')](function(_0x38b01a){logger[_0x5e69('0x1f')](_0x5e69('0x20'),_0x207609,_0x5e69('0x21'));logger[_0x5e69('0x22')](_0x5e69('0x23'),_0x207609,_0x5e69('0x21'),JSON[_0x5e69('0x24')](_0x38b01a));if(_0x38b01a[_0x5e69('0x25')]){if(_0x38b01a[_0x5e69('0x25')]['code']===0x1f4){logger[_0x5e69('0x25')](_0x5e69('0x20'),_0x207609,_0x38b01a['error'][_0x5e69('0x26')]);return _0x22e43f(_0x38b01a['error']['message']);}logger[_0x5e69('0x25')](_0x5e69('0x20'),_0x207609,_0x38b01a[_0x5e69('0x25')][_0x5e69('0x26')]);return _0x5eba48(_0x38b01a['error']['message']);}else{logger[_0x5e69('0x1f')](_0x5e69('0x20'),_0x207609,_0x5e69('0x21'));_0x5eba48(_0x38b01a['result']['message']);}})[_0x5e69('0x27')](function(_0x4069ce){logger['error'](_0x5e69('0x20'),_0x207609,_0x4069ce);_0x22e43f(_0x4069ce);});});}function respondWithStatusCode(_0x1be0ed,_0x2a05b3){_0x2a05b3=_0x2a05b3||0xcc;return function(_0x1c1851){if(_0x1c1851){return _0x1be0ed[_0x5e69('0x28')](_0x2a05b3);}return _0x1be0ed[_0x5e69('0x29')](_0x2a05b3)[_0x5e69('0x2a')]();};}function respondWithResult(_0x297fb3,_0x42c4c8){_0x42c4c8=_0x42c4c8||0xc8;return function(_0x12b91a){if(_0x12b91a){return _0x297fb3['status'](_0x42c4c8)[_0x5e69('0x2b')](_0x12b91a);}};}function respondWithFilteredResult(_0x28cda0,_0x516c43){return function(_0x2328f4){if(_0x2328f4){var _0x2ec0b3=typeof _0x516c43['offset']===_0x5e69('0x2c')&&typeof _0x516c43[_0x5e69('0x2d')]===_0x5e69('0x2c');var _0x470928=_0x2328f4[_0x5e69('0x2e')];var _0x368ef2=_0x2ec0b3?0x0:_0x516c43[_0x5e69('0x2f')];var _0x3f506c=_0x2ec0b3?_0x2328f4[_0x5e69('0x2e')]:_0x516c43['offset']+_0x516c43[_0x5e69('0x2d')];var _0x19981a;if(_0x3f506c>=_0x470928){_0x3f506c=_0x470928;_0x19981a=0xc8;}else{_0x19981a=0xce;}_0x28cda0[_0x5e69('0x29')](_0x19981a);return _0x28cda0[_0x5e69('0x30')](_0x5e69('0x31'),_0x368ef2+'-'+_0x3f506c+'/'+_0x470928)['json'](_0x2328f4);}return null;};}function patchUpdates(_0x5cb7ef){return function(_0x41d8ea){try{jsonpatch['apply'](_0x41d8ea,_0x5cb7ef,!![]);}catch(_0x386a58){return BPromise[_0x5e69('0x32')](_0x386a58);}return _0x41d8ea['save']();};}function saveUpdates(_0x2a361d,_0x289026){return function(_0xfb400e){if(_0xfb400e){return _0xfb400e[_0x5e69('0x33')](_0x2a361d)[_0x5e69('0x1e')](function(_0x12c19d){return _0x12c19d;});}return null;};}function removeEntity(_0x6a01b3,_0x57c5aa){return function(_0x18cd15){if(_0x18cd15){return _0x18cd15[_0x5e69('0x34')]()['then'](function(){var _0x382b0=_0x18cd15['get']({'plain':!![]});var _0x27a310=_0x5e69('0x35');return db[_0x5e69('0x36')][_0x5e69('0x34')]({'where':{'type':_0x27a310,'resourceId':_0x382b0['id']}})['then'](function(){return _0x18cd15;});})['then'](function(){_0x6a01b3[_0x5e69('0x29')](0xcc)[_0x5e69('0x2a')]();});}};}function handleEntityNotFound(_0x5a9e6a,_0x284578){return function(_0x529383){if(!_0x529383){_0x5a9e6a[_0x5e69('0x28')](0x194);}return _0x529383;};}function handleError(_0x4743ac,_0x2d09f4){_0x2d09f4=_0x2d09f4||0x1f4;return function(_0x30964e){logger[_0x5e69('0x25')](_0x30964e[_0x5e69('0x37')]);if(_0x30964e[_0x5e69('0x38')]){delete _0x30964e[_0x5e69('0x38')];}_0x4743ac[_0x5e69('0x29')](_0x2d09f4)['send'](_0x30964e);};}exports[_0x5e69('0x39')]=function(_0x41b3f5,_0x4f99a8){var _0x51f6a7={'include':[{'model':db['Pause'],'as':_0x5e69('0x3a')}]},_0x5c0572={},_0x39b28e={'count':0x0,'rows':[]};var _0xcf145c=_[_0x5e69('0x3b')](db[_0x5e69('0x3c')][_0x5e69('0x3d')],function(_0x260695){return{'name':_0x260695[_0x5e69('0x3e')],'type':_0x260695['type'][_0x5e69('0x3f')]};});_0x5c0572['model']=_['map'](_0xcf145c,'name');_0x5c0572['query']=_[_0x5e69('0x40')](_0x41b3f5[_0x5e69('0x41')]);_0x5c0572[_0x5e69('0x42')]=_['intersection'](_0x5c0572[_0x5e69('0x43')],_0x5c0572['query']);_0x51f6a7['attributes']=_[_0x5e69('0x44')](_0x5c0572[_0x5e69('0x43')],qs[_0x5e69('0x45')](_0x41b3f5[_0x5e69('0x41')]['fields']));_0x51f6a7['attributes']=_0x51f6a7['attributes'][_0x5e69('0x46')]?_0x51f6a7['attributes']:_0x5c0572['model'];if(!_0x41b3f5[_0x5e69('0x41')][_0x5e69('0x47')](_0x5e69('0x48'))){_0x51f6a7[_0x5e69('0x2d')]=qs['limit'](_0x41b3f5[_0x5e69('0x41')][_0x5e69('0x2d')]);_0x51f6a7[_0x5e69('0x2f')]=qs[_0x5e69('0x2f')](_0x41b3f5[_0x5e69('0x41')][_0x5e69('0x2f')]);}_0x51f6a7[_0x5e69('0x49')]=qs[_0x5e69('0x4a')](_0x41b3f5['query'][_0x5e69('0x4a')]);_0x51f6a7['where']=qs['filters'](_[_0x5e69('0x4b')](_0x41b3f5[_0x5e69('0x41')],_0x5c0572[_0x5e69('0x42')]),_0xcf145c);if(_0x41b3f5[_0x5e69('0x41')][_0x5e69('0x4c')]){_0x51f6a7[_0x5e69('0x4d')]=_[_0x5e69('0x4e')](_0x51f6a7['where'],{'$or':_[_0x5e69('0x3b')](_0xcf145c,function(_0x2c68f4){if(_0x2c68f4['type']!==_0x5e69('0x4f')){var _0x352eaf={};_0x352eaf[_0x2c68f4[_0x5e69('0x38')]]={'$like':'%'+_0x41b3f5[_0x5e69('0x41')][_0x5e69('0x4c')]+'%'};return _0x352eaf;}})});}_0x51f6a7=_['merge']({},_0x51f6a7,_0x41b3f5['options']);var _0x299b5a={'where':_0x51f6a7['where']};return db[_0x5e69('0x3c')][_0x5e69('0x2e')](_0x299b5a)['then'](function(_0x294ae7){_0x39b28e[_0x5e69('0x2e')]=_0x294ae7;if(_0x41b3f5['query']['includeAll']){_0x51f6a7[_0x5e69('0x50')]=[{'all':!![]}];}return db[_0x5e69('0x3c')]['findAll'](_0x51f6a7);})['then'](function(_0x1c3d81){_0x39b28e[_0x5e69('0x51')]=_0x1c3d81;return _0x39b28e;})['then'](respondWithFilteredResult(_0x4f99a8,_0x51f6a7))['catch'](handleError(_0x4f99a8,null));};exports[_0x5e69('0x52')]=function(_0x4c33df,_0x4609c7){var _0x21831c={'raw':![],'where':{'id':_0x4c33df[_0x5e69('0x53')]['id']},'include':[{'model':db[_0x5e69('0x54')],'as':_0x5e69('0x3a')}]},_0x4f589a={};_0x4f589a['model']=_[_0x5e69('0x40')](db[_0x5e69('0x3c')][_0x5e69('0x3d')]);_0x4f589a['query']=_[_0x5e69('0x40')](_0x4c33df[_0x5e69('0x41')]);_0x4f589a[_0x5e69('0x42')]=_['intersection'](_0x4f589a[_0x5e69('0x43')],_0x4f589a[_0x5e69('0x41')]);_0x21831c[_0x5e69('0x55')]=_[_0x5e69('0x44')](_0x4f589a[_0x5e69('0x43')],qs[_0x5e69('0x45')](_0x4c33df[_0x5e69('0x41')][_0x5e69('0x45')]));_0x21831c[_0x5e69('0x55')]=_0x21831c[_0x5e69('0x55')][_0x5e69('0x46')]?_0x21831c['attributes']:_0x4f589a[_0x5e69('0x43')];if(_0x4c33df[_0x5e69('0x41')][_0x5e69('0x56')]){_0x21831c[_0x5e69('0x50')]=[{'all':!![]}];}_0x21831c=_[_0x5e69('0x4e')]({},_0x21831c,_0x4c33df[_0x5e69('0x57')]);return db[_0x5e69('0x3c')][_0x5e69('0x58')](_0x21831c)[_0x5e69('0x1e')](handleEntityNotFound(_0x4609c7,null))[_0x5e69('0x1e')](respondWithResult(_0x4609c7,null))['catch'](handleError(_0x4609c7,null));};exports[_0x5e69('0x59')]=function(_0x36f8cb,_0x6ad79e){return db[_0x5e69('0x3c')][_0x5e69('0x59')](_0x36f8cb[_0x5e69('0x5a')],{})[_0x5e69('0x1e')](function(_0x5b7bb3){var _0x150c8f=_0x36f8cb[_0x5e69('0x5b')][_0x5e69('0x5c')]({'plain':!![]});if(!_0x150c8f)throw new Error(_0x5e69('0x5d'));if(_0x150c8f[_0x5e69('0x5e')]==='user'){var _0x2d9eaa=_0x5b7bb3[_0x5e69('0x5c')]({'plain':!![]});var _0x37113c=_0x5e69('0x35');return db[_0x5e69('0x5f')][_0x5e69('0x58')]({'where':{'name':_0x37113c,'userProfileId':_0x150c8f[_0x5e69('0x60')]},'raw':!![]})[_0x5e69('0x1e')](function(_0x477742){if(_0x477742&&_0x477742[_0x5e69('0x61')]===0x0){return db[_0x5e69('0x36')][_0x5e69('0x59')]({'name':_0x2d9eaa[_0x5e69('0x38')],'resourceId':_0x2d9eaa['id'],'type':_0x477742[_0x5e69('0x38')],'sectionId':_0x477742['id']},{})[_0x5e69('0x1e')](function(){return _0x5b7bb3;});}else{return _0x5b7bb3;}})[_0x5e69('0x27')](function(_0x45281c){logger[_0x5e69('0x25')](_0x5e69('0x62'),_0x45281c);throw _0x45281c;});}return _0x5b7bb3;})[_0x5e69('0x1e')](respondWithResult(_0x6ad79e,0xc9))['catch'](handleError(_0x6ad79e,null));};exports[_0x5e69('0x33')]=function(_0x307ea7,_0xb3a4f3){if(_0x307ea7[_0x5e69('0x5a')]['id']){delete _0x307ea7[_0x5e69('0x5a')]['id'];}return db[_0x5e69('0x3c')][_0x5e69('0x58')]({'where':{'id':_0x307ea7[_0x5e69('0x53')]['id']},'include':[{'model':db[_0x5e69('0x54')],'as':_0x5e69('0x3a')}]})[_0x5e69('0x1e')](handleEntityNotFound(_0xb3a4f3,null))['then'](saveUpdates(_0x307ea7[_0x5e69('0x5a')],null))['then'](respondWithResult(_0xb3a4f3,null))[_0x5e69('0x27')](handleError(_0xb3a4f3,null));};exports[_0x5e69('0x34')]=function(_0xbe1b32,_0x55ac22){return db[_0x5e69('0x3c')][_0x5e69('0x58')]({'where':{'id':_0xbe1b32[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x55ac22,null))[_0x5e69('0x1e')](removeEntity(_0x55ac22,null))[_0x5e69('0x27')](handleError(_0x55ac22,null));};exports[_0x5e69('0x63')]=function(_0x331a3f,_0x12fd44){return db['FaxAccount'][_0x5e69('0x63')]()[_0x5e69('0x1e')](respondWithResult(_0x12fd44,null))[_0x5e69('0x27')](handleError(_0x12fd44,null));};exports['addDisposition']=function(_0x683aaa,_0x4919db,_0x3ec1e0){if(_0x683aaa['body']['id']){delete _0x683aaa[_0x5e69('0x5a')]['id'];}return db['FaxAccount'][_0x5e69('0x58')]({'where':{'id':_0x683aaa[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x4919db,null))[_0x5e69('0x1e')](function(_0xe1d7b4){if(_0xe1d7b4){_0x683aaa['body'][_0x5e69('0x64')]=_0xe1d7b4['id'];return db[_0x5e69('0x65')][_0x5e69('0x59')](_0x683aaa[_0x5e69('0x5a')]);}})[_0x5e69('0x1e')](respondWithResult(_0x4919db,null))[_0x5e69('0x27')](handleError(_0x4919db,null));};exports[_0x5e69('0x66')]=function(_0x55a97f,_0x2a91ba,_0x42e3d8){var _0x3a040a={'raw':![],'where':{}};var _0x350382={};var _0x124b9b={'count':0x0,'rows':[]};return db[_0x5e69('0x3c')][_0x5e69('0x67')]({'where':{'id':_0x55a97f['params']['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x2a91ba,null))[_0x5e69('0x1e')](function(_0x4475ff){if(_0x4475ff){_0x350382[_0x5e69('0x43')]=_[_0x5e69('0x40')](db[_0x5e69('0x65')][_0x5e69('0x3d')]);_0x350382[_0x5e69('0x41')]=_[_0x5e69('0x40')](_0x55a97f[_0x5e69('0x41')]);_0x350382[_0x5e69('0x42')]=_[_0x5e69('0x44')](_0x350382[_0x5e69('0x43')],_0x350382[_0x5e69('0x41')]);_0x3a040a[_0x5e69('0x55')]=_[_0x5e69('0x44')](_0x350382[_0x5e69('0x43')],qs['fields'](_0x55a97f['query']['fields']));_0x3a040a[_0x5e69('0x55')]=_0x3a040a['attributes'][_0x5e69('0x46')]?_0x3a040a[_0x5e69('0x55')]:_0x350382[_0x5e69('0x43')];if(!_0x55a97f['query'][_0x5e69('0x47')](_0x5e69('0x48'))){_0x3a040a[_0x5e69('0x2d')]=qs[_0x5e69('0x2d')](_0x55a97f['query'][_0x5e69('0x2d')]);_0x3a040a[_0x5e69('0x2f')]=qs['offset'](_0x55a97f['query'][_0x5e69('0x2f')]);}_0x3a040a['order']=qs[_0x5e69('0x4a')](_0x55a97f[_0x5e69('0x41')][_0x5e69('0x4a')]);_0x3a040a['where']=qs[_0x5e69('0x42')](_[_0x5e69('0x4b')](_0x55a97f[_0x5e69('0x41')],_0x350382['filters']));_0x3a040a[_0x5e69('0x4d')][_0x5e69('0x64')]=_0x4475ff['id'];if(_0x55a97f['query']['filter']){_0x3a040a[_0x5e69('0x4d')]=_['merge'](_0x3a040a['where'],{'$or':_['map'](_0x3a040a['attributes'],function(_0x3b6c47){var _0x414380={};_0x414380[_0x3b6c47]={'$like':'%'+_0x55a97f[_0x5e69('0x41')][_0x5e69('0x4c')]+'%'};return _0x414380;})});}_0x3a040a=_[_0x5e69('0x4e')]({},_0x3a040a,_0x55a97f[_0x5e69('0x57')]);return db[_0x5e69('0x65')][_0x5e69('0x2e')]({'where':_0x3a040a[_0x5e69('0x4d')]})[_0x5e69('0x1e')](function(_0x4ea1cb){_0x124b9b[_0x5e69('0x2e')]=_0x4ea1cb;if(_0x55a97f[_0x5e69('0x41')][_0x5e69('0x56')]){_0x3a040a['include']=[{'all':!![]}];}return db['Disposition'][_0x5e69('0x68')](_0x3a040a);})[_0x5e69('0x1e')](function(_0x3e5efb){_0x124b9b[_0x5e69('0x51')]=_0x3e5efb;return _0x124b9b;});}})['then'](respondWithFilteredResult(_0x2a91ba,_0x3a040a))[_0x5e69('0x27')](handleError(_0x2a91ba,null));};exports['removeDispositions']=function(_0x411841,_0x17dd1a,_0x52f7bb){return db[_0x5e69('0x3c')][_0x5e69('0x58')]({'where':{'id':_0x411841[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x17dd1a,null))[_0x5e69('0x1e')](function(_0x5bf625){if(_0x5bf625){return _0x5bf625[_0x5e69('0x69')](_0x411841[_0x5e69('0x41')]['ids']);}})['then'](respondWithStatusCode(_0x17dd1a,null))[_0x5e69('0x27')](handleError(_0x17dd1a,null));};exports[_0x5e69('0x6a')]=function(_0x195785,_0x5c1343,_0x24ca37){if(_0x195785[_0x5e69('0x5a')]['id']){delete _0x195785[_0x5e69('0x5a')]['id'];}return db[_0x5e69('0x3c')]['find']({'where':{'id':_0x195785[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x5c1343,null))[_0x5e69('0x1e')](function(_0x2df7e9){if(_0x2df7e9){_0x195785[_0x5e69('0x5a')]['FaxAccountId']=_0x2df7e9['id'];return db[_0x5e69('0x6b')][_0x5e69('0x59')](_0x195785[_0x5e69('0x5a')]);}})[_0x5e69('0x1e')](respondWithResult(_0x5c1343,null))[_0x5e69('0x27')](handleError(_0x5c1343,null));};exports['getAnswers']=function(_0x7e7a99,_0x2d7c9b,_0x1fe5ee){var _0x10ad1f={'raw':![],'where':{}};var _0xc09c={};var _0x2232f2={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x7e7a99[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x2d7c9b,null))[_0x5e69('0x1e')](function(_0xe4fe8){if(_0xe4fe8){_0xc09c['model']=_[_0x5e69('0x40')](db[_0x5e69('0x6b')][_0x5e69('0x3d')]);_0xc09c[_0x5e69('0x41')]=_[_0x5e69('0x40')](_0x7e7a99['query']);_0xc09c[_0x5e69('0x42')]=_[_0x5e69('0x44')](_0xc09c['model'],_0xc09c['query']);_0x10ad1f[_0x5e69('0x55')]=_[_0x5e69('0x44')](_0xc09c[_0x5e69('0x43')],qs[_0x5e69('0x45')](_0x7e7a99[_0x5e69('0x41')][_0x5e69('0x45')]));_0x10ad1f[_0x5e69('0x55')]=_0x10ad1f['attributes']['length']?_0x10ad1f[_0x5e69('0x55')]:_0xc09c[_0x5e69('0x43')];if(!_0x7e7a99['query'][_0x5e69('0x47')](_0x5e69('0x48'))){_0x10ad1f['limit']=qs[_0x5e69('0x2d')](_0x7e7a99[_0x5e69('0x41')]['limit']);_0x10ad1f[_0x5e69('0x2f')]=qs[_0x5e69('0x2f')](_0x7e7a99[_0x5e69('0x41')]['offset']);}_0x10ad1f[_0x5e69('0x49')]=qs['sort'](_0x7e7a99[_0x5e69('0x41')]['sort']);_0x10ad1f[_0x5e69('0x4d')]=qs[_0x5e69('0x42')](_[_0x5e69('0x4b')](_0x7e7a99[_0x5e69('0x41')],_0xc09c['filters']));_0x10ad1f[_0x5e69('0x4d')]['FaxAccountId']=_0xe4fe8['id'];if(_0x7e7a99['query'][_0x5e69('0x4c')]){_0x10ad1f[_0x5e69('0x4d')]=_['merge'](_0x10ad1f[_0x5e69('0x4d')],{'$or':_[_0x5e69('0x3b')](_0x10ad1f[_0x5e69('0x55')],function(_0x5b3aab){var _0x2db7c2={};_0x2db7c2[_0x5b3aab]={'$like':'%'+_0x7e7a99[_0x5e69('0x41')]['filter']+'%'};return _0x2db7c2;})});}_0x10ad1f=_['merge']({},_0x10ad1f,_0x7e7a99[_0x5e69('0x57')]);return db[_0x5e69('0x6b')][_0x5e69('0x2e')]({'where':_0x10ad1f[_0x5e69('0x4d')]})[_0x5e69('0x1e')](function(_0x121774){_0x2232f2[_0x5e69('0x2e')]=_0x121774;if(_0x7e7a99[_0x5e69('0x41')][_0x5e69('0x56')]){_0x10ad1f[_0x5e69('0x50')]=[{'all':!![]}];}return db['CannedAnswer'][_0x5e69('0x68')](_0x10ad1f);})[_0x5e69('0x1e')](function(_0x20c7c5){_0x2232f2[_0x5e69('0x51')]=_0x20c7c5;return _0x2232f2;});}})[_0x5e69('0x1e')](respondWithFilteredResult(_0x2d7c9b,_0x10ad1f))['catch'](handleError(_0x2d7c9b,null));};exports[_0x5e69('0x6c')]=function(_0xe32600,_0x11cd7e,_0x337ad0){return db['FaxAccount'][_0x5e69('0x58')]({'where':{'id':_0xe32600[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x11cd7e,null))[_0x5e69('0x1e')](function(_0x1980af){if(_0x1980af){return _0x1980af[_0x5e69('0x6c')](_0xe32600[_0x5e69('0x41')][_0x5e69('0x6d')]);}})[_0x5e69('0x1e')](respondWithStatusCode(_0x11cd7e,null))['catch'](handleError(_0x11cd7e,null));};exports['addInteraction']=function(_0x331bc3,_0x3db60e,_0x50992e){return db[_0x5e69('0x6e')][_0x5e69('0x58')]({'where':{'id':_0x331bc3['params']['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x3db60e,null))[_0x5e69('0x1e')](function(_0x52f7b7){if(_0x52f7b7){return _0x52f7b7[_0x5e69('0x6f')](_0x331bc3[_0x5e69('0x5a')][_0x5e69('0x6d')],_['omit'](_0x331bc3['body'],[_0x5e69('0x6d'),'id'])||{});}})[_0x5e69('0x1e')](respondWithResult(_0x3db60e,null))[_0x5e69('0x27')](handleError(_0x3db60e,null));};exports[_0x5e69('0x70')]=function(_0x13a43e,_0x1c465a,_0x17b393){var _0x46939a={'raw':![],'where':{}};var _0x1f5b3b={};var _0x78ee2f={'count':0x0,'rows':[]};return db[_0x5e69('0x3c')][_0x5e69('0x67')]({'where':{'id':_0x13a43e[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x1c465a,null))[_0x5e69('0x1e')](function(_0x3baf06){if(_0x3baf06){_0x1f5b3b['model']=_[_0x5e69('0x40')](db[_0x5e69('0x6e')]['rawAttributes']);_0x1f5b3b[_0x5e69('0x41')]=_['keys'](_0x13a43e[_0x5e69('0x41')]);_0x1f5b3b[_0x5e69('0x42')]=_[_0x5e69('0x44')](_0x1f5b3b[_0x5e69('0x43')],_0x1f5b3b['query']);_0x46939a['attributes']=_[_0x5e69('0x44')](_0x1f5b3b[_0x5e69('0x43')],qs[_0x5e69('0x45')](_0x13a43e['query'][_0x5e69('0x45')]));_0x46939a[_0x5e69('0x55')]=_0x46939a['attributes'][_0x5e69('0x46')]?_0x46939a['attributes']:_0x1f5b3b[_0x5e69('0x43')];if(!_0x13a43e[_0x5e69('0x41')]['hasOwnProperty'](_0x5e69('0x48'))){_0x46939a[_0x5e69('0x2d')]=qs['limit'](_0x13a43e[_0x5e69('0x41')][_0x5e69('0x2d')]);_0x46939a[_0x5e69('0x2f')]=qs[_0x5e69('0x2f')](_0x13a43e[_0x5e69('0x41')][_0x5e69('0x2f')]);}_0x46939a['order']=qs[_0x5e69('0x4a')](_0x13a43e[_0x5e69('0x41')][_0x5e69('0x4a')]);_0x46939a[_0x5e69('0x4d')]=qs[_0x5e69('0x42')](_[_0x5e69('0x4b')](_0x13a43e[_0x5e69('0x41')],_0x1f5b3b['filters']));_0x46939a[_0x5e69('0x4d')][_0x5e69('0x64')]=_0x3baf06['id'];if(_0x13a43e['query']['filter']){_0x46939a[_0x5e69('0x4d')]=_[_0x5e69('0x4e')](_0x46939a[_0x5e69('0x4d')],{'$or':_[_0x5e69('0x3b')](_0x46939a[_0x5e69('0x55')],function(_0x4ee006){var _0xe4dce9={};_0xe4dce9[_0x4ee006]={'$like':'%'+_0x13a43e[_0x5e69('0x41')][_0x5e69('0x4c')]+'%'};return _0xe4dce9;})});}_0x46939a=_[_0x5e69('0x4e')]({},_0x46939a,_0x13a43e[_0x5e69('0x57')]);return db[_0x5e69('0x6e')][_0x5e69('0x2e')]({'where':_0x46939a['where']})[_0x5e69('0x1e')](function(_0x14943e){_0x78ee2f[_0x5e69('0x2e')]=_0x14943e;if(_0x13a43e[_0x5e69('0x41')]['includeAll']){_0x46939a[_0x5e69('0x50')]=[{'model':db[_0x5e69('0x71')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x5e69('0x72'),'attributes':[_0x5e69('0x38'),_0x5e69('0x73'),_0x5e69('0x74')],'required':![]},{'model':db[_0x5e69('0x75')],'as':_0x5e69('0x76'),'attributes':['id',_0x5e69('0x38'),_0x5e69('0x77')],'where':_0x13a43e['query'][_0x5e69('0x78')]?{'id':_0x13a43e[_0x5e69('0x41')][_0x5e69('0x78')]}:undefined,'required':_0x13a43e[_0x5e69('0x41')][_0x5e69('0x78')]?!![]:![]}];}return db['FaxInteraction'][_0x5e69('0x68')](_0x46939a);})[_0x5e69('0x1e')](function(_0x57ded4){_0x78ee2f[_0x5e69('0x51')]=_0x57ded4;return _0x78ee2f;});}})[_0x5e69('0x1e')](respondWithFilteredResult(_0x1c465a,_0x46939a))[_0x5e69('0x27')](handleError(_0x1c465a,null));};exports[_0x5e69('0x79')]=function(_0x3b7b84,_0x3f5235){var _0x6b6b00=_0x3b7b84[_0x5e69('0x53')]['id'];var _0x5a9068=_0x3b7b84[_0x5e69('0x5a')];var _0x585077=0xc8;var _0x59ae05=null;return db['sequelize'][_0x5e69('0x7a')]({'isolationLevel':db[_0x5e69('0x7b')][_0x5e69('0x7c')][_0x5e69('0x7d')][_0x5e69('0x7e')]},function(_0xc74076){return db['FaxAccount'][_0x5e69('0x67')]({'where':{'id':_0x6b6b00},'transaction':_0xc74076})['then'](function(_0x266201){if(_0x266201){return db[_0x5e69('0x7f')][_0x5e69('0x34')]({'where':{'FaxAccountId':_0x6b6b00},'transaction':_0xc74076})[_0x5e69('0x1e')](function(){var _0x36f0db=_[_0x5e69('0x3b')](_0x5a9068,function(_0x6c8a32){_0x6c8a32['FaxAccountId']=_0x6b6b00;return _0x6c8a32;});return db[_0x5e69('0x7f')]['bulkCreate'](_0x36f0db,{'transaction':_0xc74076});});}else{_0x585077=0x194;_0x59ae05=[];}});})[_0x5e69('0x1e')](function(){if(_0x585077!==0x194){return db[_0x5e69('0x7f')][_0x5e69('0x80')]({'where':{'FaxAccountId':_0x6b6b00},'order':_0x5e69('0x81')})['then'](function(_0x494989){_0x59ae05=_0x494989;});}})[_0x5e69('0x27')](function(_0x2db16a){_0x585077=0x1f4;logger['error'](_0x2db16a[_0x5e69('0x37')]);if(_0x2db16a[_0x5e69('0x38')]){delete _0x2db16a[_0x5e69('0x38')];}_0x59ae05=_0x2db16a;})[_0x5e69('0x82')](function(){if(_0x59ae05===null){_0x3f5235['sendStatus'](_0x585077);}else{if(_0x585077===0x1f4){_0x3f5235[_0x5e69('0x29')](_0x585077)[_0x5e69('0x83')](_0x59ae05);}else{_0x3f5235['status'](_0x585077)[_0x5e69('0x2b')](_0x59ae05);}}});};exports[_0x5e69('0x84')]=function(_0x51a54d,_0x41a006,_0x385398){var _0x3a21ae={};var _0x4eed1c={};var _0x1221ad;var _0x17801f;return db[_0x5e69('0x3c')][_0x5e69('0x67')]({'where':{'id':_0x51a54d[_0x5e69('0x53')]['id']}})['then'](handleEntityNotFound(_0x41a006,null))[_0x5e69('0x1e')](function(_0x5d75e5){if(_0x5d75e5){_0x1221ad=_0x5d75e5;_0x4eed1c[_0x5e69('0x43')]=_['keys'](db[_0x5e69('0x7f')]['rawAttributes']);_0x4eed1c['query']=_[_0x5e69('0x40')](_0x51a54d['query']);_0x4eed1c['filters']=_[_0x5e69('0x44')](_0x4eed1c[_0x5e69('0x43')],_0x4eed1c['query']);_0x3a21ae[_0x5e69('0x55')]=_[_0x5e69('0x44')](_0x4eed1c[_0x5e69('0x43')],qs['fields'](_0x51a54d[_0x5e69('0x41')][_0x5e69('0x45')]));_0x3a21ae[_0x5e69('0x55')]=_0x3a21ae[_0x5e69('0x55')][_0x5e69('0x46')]?_0x3a21ae['attributes']:_0x4eed1c[_0x5e69('0x43')];_0x3a21ae[_0x5e69('0x49')]=qs[_0x5e69('0x4a')](_0x51a54d['query'][_0x5e69('0x4a')]);_0x3a21ae[_0x5e69('0x4d')]=qs[_0x5e69('0x42')](_['pick'](_0x51a54d[_0x5e69('0x41')],_0x4eed1c[_0x5e69('0x42')]));if(_0x51a54d[_0x5e69('0x41')]['filter']){_0x3a21ae[_0x5e69('0x4d')]=_[_0x5e69('0x4e')](_0x3a21ae[_0x5e69('0x4d')],{'$or':_['map'](_0x3a21ae['attributes'],function(_0x3c5f01){var _0xba0dc3={};_0xba0dc3[_0x3c5f01]={'$like':'%'+_0x51a54d[_0x5e69('0x41')][_0x5e69('0x4c')]+'%'};return _0xba0dc3;})});}_0x3a21ae=_['merge']({},_0x3a21ae,_0x51a54d[_0x5e69('0x57')]);return _0x1221ad[_0x5e69('0x84')](_0x3a21ae);}})[_0x5e69('0x1e')](function(_0x2e4fb8){if(_0x2e4fb8){_0x17801f=_0x2e4fb8[_0x5e69('0x46')];if(!_0x51a54d[_0x5e69('0x41')][_0x5e69('0x47')](_0x5e69('0x48'))){_0x3a21ae[_0x5e69('0x2d')]=qs[_0x5e69('0x2d')](_0x51a54d[_0x5e69('0x41')][_0x5e69('0x2d')]);_0x3a21ae[_0x5e69('0x2f')]=qs[_0x5e69('0x2f')](_0x51a54d['query']['offset']);}return _0x1221ad['getApplications'](_0x3a21ae);}})[_0x5e69('0x1e')](function(_0x448a37){if(_0x448a37){return _0x448a37?{'count':_0x17801f,'rows':_0x448a37}:null;}})[_0x5e69('0x1e')](respondWithResult(_0x41a006,null))[_0x5e69('0x27')](handleError(_0x41a006,null));};function Extension(_0x4c8d0d,_0x26b8df,_0x2812cf,_0x40dcca){this[_0x5e69('0x85')]=_0x5e69('0x86');this[_0x5e69('0x87')]=_0x4c8d0d[_0x5e69('0x88')];this[_0x5e69('0x89')]=_0x40dcca;this[_0x5e69('0x8a')]=_0x5e69('0x8b');this['description']=_0x5e69('0x8c');this[_0x5e69('0x64')]=_0x4c8d0d['id'];this['priority']=_0x26b8df;this[_0x5e69('0x8d')]=_0x2812cf;}function createExtensionsReciveFax(_0x350023){var _0x46ae68=0x1;var _0x4b1348=[];_0x4b1348[_0x5e69('0x8e')](new Extension(_0x350023,_0x46ae68,'',_0x5e69('0x8f')));_0x46ae68+=0x1;_0x4b1348[_0x5e69('0x8e')](new Extension(_0x350023,_0x46ae68,_0x5e69('0x90'),_0x5e69('0x91')));_0x46ae68+=0x1;for(var _0x302ade in _0x350023){if(_0x350023[_0x5e69('0x47')](_0x302ade)&&(_0x302ade===_0x5e69('0x92')||_0x302ade===_0x5e69('0x88')||_0x302ade===_0x5e69('0x93')||_0x302ade===_0x5e69('0x94')||_0x302ade===_0x5e69('0x95')||_0x302ade===_0x5e69('0x96')||_0x302ade===_0x5e69('0x97')||_0x302ade===_0x5e69('0x98')||_0x302ade===_0x5e69('0x99'))){_0x4b1348['push'](new Extension(_0x350023,_0x46ae68,'FAXOPT('+_0x302ade+')='+_0x350023[_0x302ade],'Set'));_0x46ae68+=0x1;}}_0x4b1348[_0x5e69('0x8e')](new Extension(_0x350023,_0x46ae68,'6',_0x5e69('0x9a')));_0x46ae68+=0x1;_0x4b1348[_0x5e69('0x8e')](new Extension(_0x350023,_0x46ae68,'/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',_0x5e69('0x9b')));_0x46ae68=0x0;return _0x4b1348;}exports[_0x5e69('0x9c')]=function(_0x474838,_0xa17b28,_0x4e84a0){var _0x1f12db;return db['sequelize'][_0x5e69('0x7a')](function(_0xac6521){return db[_0x5e69('0x3c')]['create'](_0x474838[_0x5e69('0x5a')],{'transaction':_0xac6521})[_0x5e69('0x1e')](function(_0x5dfb51){_0x1f12db=_0x5dfb51['get']({'plain':!![]});return db['VoiceExtension']['bulkCreate'](createExtensionsReciveFax(_0x1f12db),{'transaction':_0xac6521});});})[_0x5e69('0x1e')](function(){return _0x1f12db;})['then'](respondWithResult(_0xa17b28,null))[_0x5e69('0x27')](handleError(_0xa17b28,null));};exports[_0x5e69('0x9d')]=function(_0x1d5c18,_0x4d54ca,_0x22030f){var _0x3550b4;return db[_0x5e69('0x7b')][_0x5e69('0x7a')](function(_0x99157f){return db[_0x5e69('0x3c')][_0x5e69('0x33')](_0x1d5c18[_0x5e69('0x5a')],{'where':{'id':_0x1d5c18[_0x5e69('0x5a')]['id']},'transaction':_0x99157f})[_0x5e69('0x1e')](function(_0x32a384){return db[_0x5e69('0x9e')][_0x5e69('0x34')]({'where':{'FaxAccountId':_0x1d5c18[_0x5e69('0x5a')]['id']},'transaction':_0x99157f})['then'](function(_0x2682a3){return db[_0x5e69('0x9e')][_0x5e69('0x9f')](createExtensionsReciveFax(_['omit'](_0x1d5c18[_0x5e69('0x5a')],[_0x5e69('0xa0'),'key','createdAt',_0x5e69('0xa1'),_0x5e69('0xa2'),_0x5e69('0xa3')])),{'transaction':_0x99157f});});});})['then'](function(){return db[_0x5e69('0x3c')][_0x5e69('0xa4')](_0x1d5c18['body']['id']);})[_0x5e69('0x1e')](respondWithResult(_0x4d54ca,null))[_0x5e69('0x27')](handleError(_0x4d54ca,null));};exports['getMessages']=function(_0x5ea585,_0x247d5a,_0x34c189){var _0x1c4b0c={'raw':!![],'where':{}};var _0x3be393={};var _0x30a259={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x5ea585[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x247d5a,null))[_0x5e69('0x1e')](function(_0x5dd015){if(_0x5dd015){_0x3be393[_0x5e69('0x43')]=_['keys'](db[_0x5e69('0xa5')]['rawAttributes']);_0x3be393[_0x5e69('0x41')]=_['keys'](_0x5ea585[_0x5e69('0x41')]);_0x3be393[_0x5e69('0x42')]=_[_0x5e69('0x44')](_0x3be393['model'],_0x3be393[_0x5e69('0x41')]);_0x1c4b0c['attributes']=_[_0x5e69('0x44')](_0x3be393[_0x5e69('0x43')],qs[_0x5e69('0x45')](_0x5ea585[_0x5e69('0x41')][_0x5e69('0x45')]));_0x1c4b0c[_0x5e69('0x55')]=_0x1c4b0c[_0x5e69('0x55')][_0x5e69('0x46')]?_0x1c4b0c[_0x5e69('0x55')]:_0x3be393[_0x5e69('0x43')];if(!_0x5ea585[_0x5e69('0x41')][_0x5e69('0x47')](_0x5e69('0x48'))){_0x1c4b0c[_0x5e69('0x2d')]=qs[_0x5e69('0x2d')](_0x5ea585[_0x5e69('0x41')][_0x5e69('0x2d')]);_0x1c4b0c[_0x5e69('0x2f')]=qs[_0x5e69('0x2f')](_0x5ea585['query'][_0x5e69('0x2f')]);}_0x1c4b0c[_0x5e69('0x49')]=qs[_0x5e69('0x4a')](_0x5ea585[_0x5e69('0x41')]['sort']);_0x1c4b0c[_0x5e69('0x4d')]=qs[_0x5e69('0x42')](_[_0x5e69('0x4b')](_0x5ea585[_0x5e69('0x41')],_0x3be393['filters']));_0x1c4b0c['where']['FaxAccountId']=_0x5dd015['id'];if(_0x5ea585['query']['filter']){_0x1c4b0c[_0x5e69('0x4d')]=_[_0x5e69('0x4e')](_0x1c4b0c[_0x5e69('0x4d')],{'$or':_['map'](_0x1c4b0c[_0x5e69('0x55')],function(_0x4374f4){var _0x4d39d8={};_0x4d39d8[_0x4374f4]={'$like':'%'+_0x5ea585['query'][_0x5e69('0x4c')]+'%'};return _0x4d39d8;})});}if(_0x5ea585[_0x5e69('0x41')]['$gte']){var _0x226813=_0x5ea585['query'][_0x5e69('0xa6')][_0x5e69('0xa7')](',');var _0x421092={};_0x421092[_0x226813[0x0]]={'$gte':moment(_0x226813[0x1])['format'](_0x5e69('0xa8'))};_0x1c4b0c['where']=_[_0x5e69('0x4e')](_0x1c4b0c[_0x5e69('0x4d')],_0x421092);}_0x1c4b0c=_['merge']({},_0x1c4b0c,_0x5ea585[_0x5e69('0x57')]);return db[_0x5e69('0xa5')]['count']({'where':_0x1c4b0c['where']})[_0x5e69('0x1e')](function(_0x1aaa29){_0x30a259[_0x5e69('0x2e')]=_0x1aaa29;if(_0x5ea585[_0x5e69('0x41')][_0x5e69('0x56')]){_0x1c4b0c[_0x5e69('0x50')]=[{'all':!![]}];}return db[_0x5e69('0xa5')][_0x5e69('0x68')](_0x1c4b0c);})['then'](function(_0x4247f6){_0x30a259[_0x5e69('0x51')]=_0x4247f6;return _0x30a259;});}})['then'](respondWithFilteredResult(_0x247d5a,_0x1c4b0c))[_0x5e69('0x27')](handleError(_0x247d5a,null));};exports[_0x5e69('0x83')]=function(_0x41090d,_0x20770a,_0x32528c){var _0x491175,_0xd4862={},_0x23fcd1;if(_0x41090d[_0x5e69('0x5a')]['to']){_0x23fcd1=_0x41090d[_0x5e69('0x5a')]['to'][0x0];}return db[_0x5e69('0x3c')][_0x5e69('0x58')]({'where':{'id':_0x41090d[_0x5e69('0x53')]['id']},'include':[{'model':db[_0x5e69('0xa9')],'as':_0x5e69('0xaa'),'include':[{'model':db[_0x5e69('0x71')],'as':_0x5e69('0xab'),'where':{'fax':_0x23fcd1},'limit':0x1,'order':[[_0x5e69('0xa1'),_0x5e69('0xac')]]}]}]})[_0x5e69('0x1e')](handleEntityNotFound(_0x20770a,null))[_0x5e69('0x1e')](function(_0x2d051c){_0x491175=_0x2d051c;if(_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')]&&_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][_0x5e69('0x46')]){for(var _0x5a413a=0x0;_0x5a413a<_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][_0x5e69('0x46')];_0x5a413a+=0x1){_0x41090d[_0x5e69('0x5a')]['attachments'][_0x5a413a]={'filename':_0x41090d['body'][_0x5e69('0xad')][_0x5a413a]['name'],'id':_0x41090d['body'][_0x5e69('0xad')][_0x5a413a]['id'],'path':path['join'](config['root'],_0x5e69('0xae'),_0x41090d[_0x5e69('0x5a')]['attachments'][_0x5a413a]['basename'])};}}return respondWithRpcPromise(_0x5e69('0xaf'),_0x5e69('0xaf'),{'FaxAccountId':_['isNil'](_0x41090d[_0x5e69('0x53')]['id'])?undefined:_0x41090d[_0x5e69('0x53')]['id'],'path':_[_0x5e69('0xb0')](_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][0x0]['path'])?undefined:_0x41090d['body'][_0x5e69('0xad')][0x0][_0x5e69('0x7')],'fax':_[_0x5e69('0xb0')](_0x41090d['body']['to'][0x0])?undefined:_0x41090d[_0x5e69('0x5a')]['to'][0x0]},client9002);})[_0x5e69('0x1e')](function(){if(_0x491175){if(_['isNil'](_0x41090d[_0x5e69('0x5a')][_0x5e69('0xb1')])){_0x41090d[_0x5e69('0x5a')][_0x5e69('0xb1')]=util[_0x5e69('0xb2')](_0x5e69('0xb3'),_0x491175[_0x5e69('0x38')],_0x491175[_0x5e69('0xb4')]);}if(_0x491175[_0x5e69('0xaa')]){if(_0x491175[_0x5e69('0xaa')][_0x5e69('0xab')]['length']){return _0x491175[_0x5e69('0xaa')]['Contacts'][0x0];}else{return db['CmContact'][_0x5e69('0x59')](_['defaults'](_0x41090d[_0x5e69('0x5a')],{'firstName':_0x41090d['body']['to'][0x0],'phone':_0x41090d[_0x5e69('0x5a')]['to'][0x0],'fax':_0x41090d['body']['to'][0x0],'ListId':_0x491175[_0x5e69('0xa3')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x5e69('0xb5'));}})[_0x5e69('0x1e')](function(_0x195980){if(_0x195980){return db['FaxInteraction']['find']({'where':{'ContactId':_0x195980['id'],'closed':![],'FaxAccountId':_0x491175['id']}})['then'](function(_0x40d856){if(_0x40d856){return[_0x40d856,![]];}return db['FaxInteraction'][_0x5e69('0x59')]({'UserId':_0x41090d['user']['id'],'ContactId':_0x195980['id'],'FaxAccountId':_0x491175['id'],'fax':_0x41090d['body']['to'][0x0],'firstMsgDirection':_0x5e69('0xb6'),'Messages':[_['merge'](_0x41090d[_0x5e69('0x5a')],{'read':![],'body':_0x41090d['body'][_0x5e69('0xad')][0x0][_0x5e69('0xb7')],'FaxAccountId':_0x491175['id'],'UserId':_0x41090d[_0x5e69('0x5b')]['id'],'ContactId':_0x195980['id'],'AttachmentId':_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x5e69('0xb8')}]})[_0x5e69('0x1e')](function(_0x866ed7){return[_0x866ed7,!![]];});});}else{throw new Error(_0x5e69('0xb9'));}})['spread'](function(_0x213787,_0x1d774c){if(_0x1d774c){return _0x213787;}return db[_0x5e69('0xa5')][_0x5e69('0x59')]({'direction':_0x5e69('0xb6'),'read':![],'body':_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][0x0][_0x5e69('0xb7')],'FaxAccountId':_0x491175['id'],'FaxInteractionId':_0x213787['id'],'UserId':_0x41090d[_0x5e69('0x5b')]['id'],'ContactId':_0x213787[_0x5e69('0xba')],'AttachmentId':_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][0x0]['id']})['then'](function(_0x17cabd){_0x213787[_0x5e69('0xbb')][_0x5e69('0xb8')]=[];_0x213787['dataValues'][_0x5e69('0xb8')][_0x5e69('0x8e')](_0x17cabd[_0x5e69('0xbb')]);return _0x213787;});})[_0x5e69('0x1e')](function(_0x1bdd0a){respondWithRpcPromise(_0x5e69('0xbc'),_0x5e69('0xbc'),{'FaxAccountId':_[_0x5e69('0xb0')](_0x41090d[_0x5e69('0x53')]['id'])?undefined:_0x41090d[_0x5e69('0x53')]['id'],'path':_[_0x5e69('0xb0')](_0x41090d[_0x5e69('0x5a')]['attachments'][0x0][_0x5e69('0x7')])?undefined:_0x41090d[_0x5e69('0x5a')]['attachments'][0x0][_0x5e69('0x7')],'fax':_[_0x5e69('0xb0')](_0x41090d[_0x5e69('0x5a')]['to'][0x0])?undefined:_0x41090d[_0x5e69('0x5a')]['to'][0x0],'AttachmentId':_0x41090d[_0x5e69('0x5a')][_0x5e69('0xad')][0x0]['id']},client9002)[_0x5e69('0x1e')](function(_0xf52a40){logger[_0x5e69('0x1f')](_0x5e69('0xbd'),_0xf52a40);})[_0x5e69('0x27')](function(_0x1570b3){logger[_0x5e69('0x1f')](_0x5e69('0xbd'),_0x1570b3);});return _0x1bdd0a;})[_0x5e69('0x1e')](respondWithResult(_0x20770a,null))[_0x5e69('0x27')](handleError(_0x20770a,null));};exports['addAgents']=function(_0x253253,_0x80d7e6,_0xc889d9){return db['FaxAccount']['find']({'where':{'id':_0x253253['params']['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x80d7e6,null))[_0x5e69('0x1e')](function(_0x42ba98){if(_0x42ba98){return _0x42ba98[_0x5e69('0xbe')](_0x253253['body']['ids'],_[_0x5e69('0xbf')](_0x253253[_0x5e69('0x5a')],[_0x5e69('0x6d'),'id'])||{})[_0x5e69('0xc0')](function(_0x2d27b2){for(var _0x23d97c=0x0;_0x23d97c<_0x253253[_0x5e69('0x5a')]['ids']['length'];_0x23d97c+=0x1){socket['emit']('userFaxAccount:save',{'UserId':Number(_0x253253[_0x5e69('0x5a')][_0x5e69('0x6d')][_0x23d97c]),'FaxAccountId':Number(_0x253253[_0x5e69('0x53')]['id'])});}return _0x2d27b2;});}})[_0x5e69('0x1e')](respondWithResult(_0x80d7e6,null))[_0x5e69('0x27')](handleError(_0x80d7e6,null));};exports[_0x5e69('0xc1')]=function(_0x89bebf,_0x408adb,_0x1848b2){return db[_0x5e69('0x3c')][_0x5e69('0x58')]({'where':{'id':_0x89bebf['params']['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x408adb,null))[_0x5e69('0x1e')](function(_0x4ec826){if(_0x4ec826){return _0x4ec826['removeAgents'](_0x89bebf['query'][_0x5e69('0x6d')])[_0x5e69('0x1e')](function(){if(_[_0x5e69('0xc2')](_0x89bebf['query']['ids'])){for(var _0x3fbc2c=0x0;_0x3fbc2c<_0x89bebf[_0x5e69('0x41')][_0x5e69('0x6d')][_0x5e69('0x46')];_0x3fbc2c+=0x1){socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x89bebf[_0x5e69('0x41')]['ids'][_0x3fbc2c]),'FaxAccountId':Number(_0x89bebf[_0x5e69('0x53')]['id'])});}}else{socket[_0x5e69('0xc3')](_0x5e69('0xc4'),{'UserId':Number(_0x89bebf[_0x5e69('0x41')][_0x5e69('0x6d')]),'FaxAccountId':Number(_0x89bebf[_0x5e69('0x53')]['id'])});}});}})[_0x5e69('0x1e')](respondWithStatusCode(_0x408adb,null))[_0x5e69('0x27')](handleError(_0x408adb,null));};exports[_0x5e69('0xc5')]=function(_0x4d31f7,_0x35e5d8,_0x2f163f){var _0x54c821={};var _0x3fb082={};var _0x424546;var _0x53c95f;return db[_0x5e69('0x3c')][_0x5e69('0x67')]({'where':{'id':_0x4d31f7[_0x5e69('0x53')]['id']}})[_0x5e69('0x1e')](handleEntityNotFound(_0x35e5d8,null))['then'](function(_0x376882){if(_0x376882){_0x424546=_0x376882;_0x3fb082[_0x5e69('0x43')]=_[_0x5e69('0x40')](db[_0x5e69('0xc6')][_0x5e69('0x3d')]);_0x3fb082[_0x5e69('0x41')]=_[_0x5e69('0x40')](_0x4d31f7[_0x5e69('0x41')]);_0x3fb082[_0x5e69('0x42')]=_[_0x5e69('0x44')](_0x3fb082[_0x5e69('0x43')],_0x3fb082[_0x5e69('0x41')]);_0x54c821['attributes']=_[_0x5e69('0x44')](_0x3fb082[_0x5e69('0x43')],qs[_0x5e69('0x45')](_0x4d31f7['query'][_0x5e69('0x45')]));_0x54c821[_0x5e69('0x55')]=_0x54c821['attributes'][_0x5e69('0x46')]?_0x54c821[_0x5e69('0x55')]:_0x3fb082[_0x5e69('0x43')];_0x54c821[_0x5e69('0x49')]=qs[_0x5e69('0x4a')](_0x4d31f7['query'][_0x5e69('0x4a')]);_0x54c821[_0x5e69('0x4d')]=qs[_0x5e69('0x42')](_[_0x5e69('0x4b')](_0x4d31f7['query'],_0x3fb082[_0x5e69('0x42')]));if(_0x4d31f7[_0x5e69('0x41')][_0x5e69('0x4c')]){_0x54c821[_0x5e69('0x4d')]=_['merge'](_0x54c821[_0x5e69('0x4d')],{'$or':_['map'](_0x54c821[_0x5e69('0x55')],function(_0x16addf){var _0x4844d4={};_0x4844d4[_0x16addf]={'$like':'%'+_0x4d31f7[_0x5e69('0x41')][_0x5e69('0x4c')]+'%'};return _0x4844d4;})});}_0x54c821=_[_0x5e69('0x4e')]({},_0x54c821,_0x4d31f7['options']);return _0x424546['getAgents'](_0x54c821);}})[_0x5e69('0x1e')](function(_0x1d7675){if(_0x1d7675){_0x53c95f=_0x1d7675[_0x5e69('0x46')];if(!_0x4d31f7[_0x5e69('0x41')]['hasOwnProperty']('nolimit')){_0x54c821[_0x5e69('0x2d')]=qs[_0x5e69('0x2d')](_0x4d31f7['query']['limit']);_0x54c821['offset']=qs[_0x5e69('0x2f')](_0x4d31f7[_0x5e69('0x41')][_0x5e69('0x2f')]);}return _0x424546['getAgents'](_0x54c821);}})['then'](function(_0x44f365){if(_0x44f365){return _0x44f365?{'count':_0x53c95f,'rows':_0x44f365}:null;}})[_0x5e69('0x1e')](respondWithResult(_0x35e5d8,null))['catch'](handleError(_0x35e5d8,null));}; \ No newline at end of file diff --git a/server/api/faxAccount/faxAccount.events.js b/server/api/faxAccount/faxAccount.events.js new file mode 100644 index 0000000..dc00a52 --- /dev/null +++ b/server/api/faxAccount/faxAccount.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x01dd=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update','remove','emit'];(function(_0x3d6897,_0x49156b){var _0x33a9f9=function(_0x2947e4){while(--_0x2947e4){_0x3d6897['push'](_0x3d6897['shift']());}};_0x33a9f9(++_0x49156b);}(_0x01dd,0x1b0));var _0xd01d=function(_0x238671,_0x34aea0){_0x238671=_0x238671-0x0;var _0x474844=_0x01dd[_0x238671];return _0x474844;};'use strict';var EventEmitter=require(_0xd01d('0x0'));var FaxAccount=require(_0xd01d('0x1'))['db'][_0xd01d('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xd01d('0x3')](0x0);var events={'afterCreate':_0xd01d('0x4'),'afterUpdate':_0xd01d('0x5'),'afterDestroy':_0xd01d('0x6')};function emitEvent(_0x389eff){return function(_0x4fcf16,_0x1eee02,_0x32f59b){FaxAccountEvents[_0xd01d('0x7')](_0x389eff+':'+_0x4fcf16['id'],_0x4fcf16);FaxAccountEvents[_0xd01d('0x7')](_0x389eff,_0x4fcf16);_0x32f59b(null);};}for(var e in events){if(events[_0xd01d('0x8')](e)){var event=events[e];FaxAccount[_0xd01d('0x9')](e,emitEvent(event));}}module[_0xd01d('0xa')]=FaxAccountEvents; \ No newline at end of file diff --git a/server/api/faxAccount/faxAccount.model.js b/server/api/faxAccount/faxAccount.model.js new file mode 100644 index 0000000..727b5d7 --- /dev/null +++ b/server/api/faxAccount/faxAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4415=['bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','fax_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x141d9d,_0x19f8b2){var _0x5e89e8=function(_0x4df965){while(--_0x4df965){_0x141d9d['push'](_0x141d9d['shift']());}};_0x5e89e8(++_0x19f8b2);}(_0x4415,0x133));var _0x5441=function(_0x368fb9,_0x1a9895){_0x368fb9=_0x368fb9-0x0;var _0x4892fb=_0x4415[_0x368fb9];return _0x4892fb;};'use strict';var _=require(_0x5441('0x0'));var util=require(_0x5441('0x1'));var logger=require(_0x5441('0x2'))(_0x5441('0x3'));var moment=require(_0x5441('0x4'));var BPromise=require(_0x5441('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5441('0x6'));var rimraf=require(_0x5441('0x7'));var config=require(_0x5441('0x8'));var attributes=require(_0x5441('0x9'));module[_0x5441('0xa')]=function(_0x4466fa,_0x170322){return _0x4466fa[_0x5441('0xb')]('FaxAccount',attributes,{'tableName':_0x5441('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/faxAccount/faxAccount.rpc.js b/server/api/faxAccount/faxAccount.rpc.js new file mode 100644 index 0000000..24dd92d --- /dev/null +++ b/server/api/faxAccount/faxAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3d0c=['http','redis','socket.io-emitter','./faxAccount.socket','register','request','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','catch','FaxAccount','findAll','options','where','attributes','include','map','model','GetFaxAccount','debug','NotifyFaxAccount','body','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','get','list','orderBy','applications','priority','asc','length','create','contact','fax','FaxInteraction','Contact\x20not\x20found','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x51bbb0,_0xd9ea53){var _0x4afad1=function(_0x25f2a3){while(--_0x25f2a3){_0x51bbb0['push'](_0x51bbb0['shift']());}};_0x4afad1(++_0xd9ea53);}(_0x3d0c,0x1c7));var _0xc3d0=function(_0x290694,_0x281935){_0x290694=_0x290694-0x0;var _0x5a0f2e=_0x3d0c[_0x290694];return _0x5a0f2e;};'use strict';var _=require(_0xc3d0('0x0'));var util=require(_0xc3d0('0x1'));var moment=require(_0xc3d0('0x2'));var BPromise=require(_0xc3d0('0x3'));var rs=require(_0xc3d0('0x4'));var fs=require('fs');var Redis=require(_0xc3d0('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc3d0('0x6'))('rpc');var config=require(_0xc3d0('0x7'));var jayson=require(_0xc3d0('0x8'));var client=jayson[_0xc3d0('0x9')][_0xc3d0('0xa')]({'port':0x232c});config[_0xc3d0('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc3d0('0xc'))(new Redis(config[_0xc3d0('0xb')]));require(_0xc3d0('0xd'))[_0xc3d0('0xe')](socket);function respondWithRpcPromise(_0x1051e2,_0x5e8b21,_0x525aa5){return new BPromise(function(_0x35acf9,_0x10b7b0){return client[_0xc3d0('0xf')](_0x1051e2,_0x525aa5)[_0xc3d0('0x10')](function(_0x33c86b){logger[_0xc3d0('0x11')]('FaxAccount,\x20%s,\x20%s',_0x5e8b21,_0xc3d0('0x12'));logger['debug'](_0xc3d0('0x13'),_0x5e8b21,'request\x20sent',JSON[_0xc3d0('0x14')](_0x33c86b));if(_0x33c86b[_0xc3d0('0x15')]){if(_0x33c86b[_0xc3d0('0x15')][_0xc3d0('0x16')]===0x1f4){logger[_0xc3d0('0x15')](_0xc3d0('0x17'),_0x5e8b21,_0x33c86b[_0xc3d0('0x15')]['message']);return _0x10b7b0(_0x33c86b[_0xc3d0('0x15')][_0xc3d0('0x18')]);}logger[_0xc3d0('0x15')](_0xc3d0('0x17'),_0x5e8b21,_0x33c86b[_0xc3d0('0x15')][_0xc3d0('0x18')]);return _0x35acf9(_0x33c86b[_0xc3d0('0x15')][_0xc3d0('0x18')]);}else{logger['info'](_0xc3d0('0x17'),_0x5e8b21,_0xc3d0('0x12'));_0x35acf9(_0x33c86b['result'][_0xc3d0('0x18')]);}})[_0xc3d0('0x19')](function(_0x40eab7){logger[_0xc3d0('0x15')](_0xc3d0('0x17'),_0x5e8b21,_0x40eab7);_0x10b7b0(_0x40eab7);});});}exports['GetFaxAccount']=function(_0x3b87b1){var _0x57e440=this;return new Promise(function(_0x573e13,_0x2b4c17){return db[_0xc3d0('0x1a')][_0xc3d0('0x1b')]({'raw':_0x3b87b1['options']?_0x3b87b1['options']['raw']===undefined?!![]:![]:!![],'where':_0x3b87b1['options']?_0x3b87b1[_0xc3d0('0x1c')][_0xc3d0('0x1d')]||null:null,'attributes':_0x3b87b1['options']?_0x3b87b1[_0xc3d0('0x1c')][_0xc3d0('0x1e')]||null:null,'limit':_0x3b87b1['options']?_0x3b87b1['options']['limit']||null:null,'include':_0x3b87b1[_0xc3d0('0x1c')]?_0x3b87b1[_0xc3d0('0x1c')][_0xc3d0('0x1f')]?_[_0xc3d0('0x20')](_0x3b87b1[_0xc3d0('0x1c')][_0xc3d0('0x1f')],function(_0x152182){return{'model':db[_0x152182[_0xc3d0('0x21')]],'as':_0x152182['as'],'attributes':_0x152182[_0xc3d0('0x1e')],'include':_0x152182[_0xc3d0('0x1f')]?_[_0xc3d0('0x20')](_0x152182[_0xc3d0('0x1f')],function(_0x4f03d8){return{'model':db[_0x4f03d8[_0xc3d0('0x21')]],'as':_0x4f03d8['as'],'attributes':_0x4f03d8[_0xc3d0('0x1e')],'include':_0x4f03d8[_0xc3d0('0x1f')]?_[_0xc3d0('0x20')](_0x4f03d8[_0xc3d0('0x1f')],function(_0x216c11){return{'model':db[_0x216c11[_0xc3d0('0x21')]],'as':_0x216c11['as'],'attributes':_0x216c11[_0xc3d0('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x766cca){logger['info'](_0xc3d0('0x22'),_0x3b87b1);logger[_0xc3d0('0x23')](_0xc3d0('0x22'),_0x3b87b1,JSON['stringify'](_0x766cca));_0x573e13(_0x766cca);})[_0xc3d0('0x19')](function(_0x91ee70){logger[_0xc3d0('0x15')]('GetFaxAccount',_0x91ee70['message'],_0x3b87b1);_0x2b4c17(_0x57e440[_0xc3d0('0x15')](0x1f4,_0x91ee70[_0xc3d0('0x18')]));});});};exports[_0xc3d0('0x24')]=function(_0x4c9540,_0x501d85,_0x31d516){var _0xeb84df=this;return new Promise(function(_0x100ef8,_0xdf95a6){var _0x18735a={'body':_0x4c9540[_0xc3d0('0x25')],'channel':'fax'};var _0x58eb7c=[];var _0x3c4936=[];var _0x14294d={};return db[_0xc3d0('0x26')][_0xc3d0('0x27')]()[_0xc3d0('0x10')](function(_0x14684f){if(!_0x14684f){throw new db[(_0xc3d0('0x28'))][(_0xc3d0('0x29'))](_0xc3d0('0x2a'));}_0x58eb7c=_[_0xc3d0('0x2b')](_[_0xc3d0('0x2c')](_0x14684f),[_0xc3d0('0x2d'),_0xc3d0('0x2e')]);_0x3c4936=_[_0xc3d0('0x2b')](_['keys'](_0x14684f),[_0xc3d0('0x2d'),_0xc3d0('0x2e'),_0xc3d0('0x2f'),_0xc3d0('0x30')]);if(_0x4c9540[_0xc3d0('0x25')]['id']){delete _0x4c9540['body']['id'];}if(_[_0xc3d0('0x31')](_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x32')])){throw new db[(_0xc3d0('0x28'))][(_0xc3d0('0x29'))](_0xc3d0('0x33'));}if(_[_0xc3d0('0x31')](_0x4c9540['body'][_0xc3d0('0x25')])||_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x25')]===''){throw new db['Sequelize'][(_0xc3d0('0x29'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xc3d0('0x31')](_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x34')])){throw new db[(_0xc3d0('0x28'))][(_0xc3d0('0x29'))](_0xc3d0('0x35')+_0x3c4936);}if(!_[_0xc3d0('0x36')](_0x3c4936,_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x34')])){throw new db[(_0xc3d0('0x28'))]['ValidationError'](_0xc3d0('0x37')+_0x3c4936);}_0x14294d[_0x4c9540['body'][_0xc3d0('0x34')]]=_0x4c9540['body'][_0xc3d0('0x32')];})['then'](function(){return db['FaxAccount'][_0xc3d0('0x38')]({'where':{'id':_0x4c9540[_0xc3d0('0x39')]['id']},'include':[{'model':db[_0xc3d0('0x3a')],'as':_0xc3d0('0x3b'),'include':[{'model':db[_0xc3d0('0x26')],'as':_0xc3d0('0x3c'),'where':_0x14294d,'limit':0x1,'order':[[_0xc3d0('0x2e'),_0xc3d0('0x3d')]]}]},{'model':db[_0xc3d0('0x3e')],'as':_0xc3d0('0x3f')}]});})[_0xc3d0('0x10')](function(_0x3af87d){if(_0x3af87d&&_0x3af87d[_0xc3d0('0x3b')]){var _0x178102=_0x3af87d[_0xc3d0('0x40')]({'plain':!![]});_0x18735a[_0xc3d0('0x39')]=_0x178102;_0x18735a['applications']=_0x178102[_0xc3d0('0x3f')];_0x18735a[_0xc3d0('0x41')]=_0x178102[_0xc3d0('0x3b')];_0x18735a['applications']=_[_0xc3d0('0x42')](_0x18735a[_0xc3d0('0x43')],[_0xc3d0('0x44')],[_0xc3d0('0x45')]);if(_0x18735a[_0xc3d0('0x39')]['Applications']){delete _0x18735a[_0xc3d0('0x39')][_0xc3d0('0x3f')];}if(_0x18735a[_0xc3d0('0x39')][_0xc3d0('0x3b')]&&_0x18735a[_0xc3d0('0x39')][_0xc3d0('0x3b')][_0xc3d0('0x3c')][_0xc3d0('0x46')]){return _0x18735a[_0xc3d0('0x39')]['List']['Contacts'][0x0];}var _0x2d0973=_['defaults'](_0x4c9540[_0xc3d0('0x25')],{'firstName':_0x4c9540['body'][_0xc3d0('0x32')],'ListId':_0x178102[_0xc3d0('0x30')]});_0x2d0973[_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x34')]]=_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x32')];return db['CmContact'][_0xc3d0('0x47')](_0x2d0973,{'fields':_0x58eb7c,'raw':!![]});}})[_0xc3d0('0x10')](function(_0x538add){_0x18735a[_0xc3d0('0x48')]=_0x538add;if(_0x538add){var _0x1ec40f={'ContactId':_0x538add['id'],'FaxAccountId':_0x4c9540[_0xc3d0('0x39')]['id'],'fax':_0x538add[_0xc3d0('0x49')]};return db['FaxInteraction'][_0xc3d0('0x38')]({'where':{'ContactId':_0x538add['id'],'closed':![],'FaxAccountId':_0x4c9540['account']['id']}})[_0xc3d0('0x10')](function(_0x43256d){if(_0x43256d){return[_0x43256d,![]];}return db[_0xc3d0('0x4a')][_0xc3d0('0x47')](_0x1ec40f)[_0xc3d0('0x10')](function(_0x4cab94){return[_0x4cab94,!![]];});});}else{throw new Error(_0xc3d0('0x4b'));}})['spread'](function(_0x58bc3c,_0x578a5a){var _0x5da6dd=_0x58bc3c['get']({'plain':!![]});if(_0x578a5a){if(_0x18735a[_0xc3d0('0x39')][_0xc3d0('0x4c')]){_0x18735a[_0xc3d0('0x43')][_0xc3d0('0x4d')]({'id':0x0,'priority':_0x18735a['applications'][_0xc3d0('0x46')]+0x1,'app':_0xc3d0('0x4e'),'appdata':_0xc3d0('0x4f'),'interval':_0xc3d0('0x50')});}_0x5da6dd[_0xc3d0('0x51')]=!![];}else{_0x5da6dd[_0xc3d0('0x51')]=![];}_0x18735a[_0xc3d0('0x52')]=_0x5da6dd;return db[_0xc3d0('0x53')][_0xc3d0('0x47')]({'body':_0x4c9540[_0xc3d0('0x25')][_0xc3d0('0x25')],'FaxAccountId':_0x4c9540[_0xc3d0('0x39')]['id'],'FaxInteractionId':_0x58bc3c['id'],'direction':'in','ContactId':_0x58bc3c[_0xc3d0('0x54')],'AttachmentId':_0x4c9540[_0xc3d0('0x25')]['AttachmentId']});})[_0xc3d0('0x10')](function(_0x418da2){_0x18735a[_0xc3d0('0x18')]=_0x418da2;if(_0x18735a[_0xc3d0('0x52')][_0xc3d0('0x55')]){return db[_0xc3d0('0x56')][_0xc3d0('0x38')]({'attributes':['id',_0xc3d0('0x57')],'where':{'id':_0x18735a[_0xc3d0('0x52')][_0xc3d0('0x55')]}})[_0xc3d0('0x10')](function(_0x584a6b){if(_0x584a6b){_0x18735a[_0xc3d0('0x43')][_0xc3d0('0x58')]({'id':0x0,'priority':0x0,'app':_0xc3d0('0x59'),'appdata':_0x584a6b[_0xc3d0('0x57')]+','+(_0x18735a['account'][_0xc3d0('0x5a')]||0xa),'interval':_0xc3d0('0x50')});}return respondWithRpcPromise(_0xc3d0('0x5b'),_0xc3d0('0x5c'),_0x18735a);});}return respondWithRpcPromise(_0xc3d0('0x5b'),'startRouting',_0x18735a);})[_0xc3d0('0x10')](function(_0x559416){_0x100ef8(_0x559416);})[_0xc3d0('0x19')](function(_0x5de807){_0xdf95a6(_0xeb84df[_0xc3d0('0x15')](0x1f4,_0x5de807[_0xc3d0('0x18')]));});});}; \ No newline at end of file diff --git a/server/api/faxAccount/faxAccount.socket.js b/server/api/faxAccount/faxAccount.socket.js new file mode 100644 index 0000000..4b3e1b4 --- /dev/null +++ b/server/api/faxAccount/faxAccount.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x404e=['save','update','emit','removeListener','register','length','faxAccount:','./faxAccount.events'];(function(_0x21f4e4,_0x326a84){var _0x5d7709=function(_0x572f77){while(--_0x572f77){_0x21f4e4['push'](_0x21f4e4['shift']());}};_0x5d7709(++_0x326a84);}(_0x404e,0x8f));var _0xe404=function(_0x39bc44,_0x1d4373){_0x39bc44=_0x39bc44-0x0;var _0x2916d8=_0x404e[_0x39bc44];return _0x2916d8;};'use strict';var FaxAccountEvents=require(_0xe404('0x0'));var events=[_0xe404('0x1'),'remove',_0xe404('0x2')];function createListener(_0x18249e,_0x31463e){return function(_0x4d0a2f){_0x31463e[_0xe404('0x3')](_0x18249e,_0x4d0a2f);};}function removeListener(_0x1764b0,_0x20ca04){return function(){FaxAccountEvents[_0xe404('0x4')](_0x1764b0,_0x20ca04);};}exports[_0xe404('0x5')]=function(_0xd51058){for(var _0x3f12d8=0x0,_0x39a1ef=events[_0xe404('0x6')];_0x3f12d8<_0x39a1ef;_0x3f12d8++){var _0x1fc0df=events[_0x3f12d8];var _0x535a92=createListener(_0xe404('0x7')+_0x1fc0df,_0xd51058);FaxAccountEvents['on'](_0x1fc0df,_0x535a92);}}; \ No newline at end of file diff --git a/server/api/faxAccount/index.js b/server/api/faxAccount/index.js new file mode 100644 index 0000000..072641e --- /dev/null +++ b/server/api/faxAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x17a0b0,_0x247cb7){var _0x445ead=function(_0x36dcdc){while(--_0x36dcdc){_0x17a0b0['push'](_0x17a0b0['shift']());}};_0x445ead(++_0x247cb7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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 diff --git a/server/api/faxApplication/faxApplication.attributes.js b/server/api/faxApplication/faxApplication.attributes.js new file mode 100644 index 0000000..c945150 --- /dev/null +++ b/server/api/faxApplication/faxApplication.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4119=['sequelize','exports','STRING','noop'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x4119,0x11c));var _0x9411=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x4119[_0x40ac5e];return _0x2839d6;};'use strict';var Sequelize=require(_0x9411('0x0'));module[_0x9411('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x9411('0x2')],'allowNull':![],'defaultValue':_0x9411('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9411('0x2')]},'interval':{'type':Sequelize[_0x9411('0x2')],'defaultValue':'*,*,*,*'}}; \ No newline at end of file diff --git a/server/api/faxApplication/faxApplication.controller.js b/server/api/faxApplication/faxApplication.controller.js new file mode 100644 index 0000000..87de51b --- /dev/null +++ b/server/api/faxApplication/faxApplication.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf57d=['findAll','rows','catch','show','params','merge','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','destroy','then','error','stack','name','index','map','FaxApplication','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','options','includeAll','include'];(function(_0x19b834,_0x590212){var _0x43f4f1=function(_0x5a5834){while(--_0x5a5834){_0x19b834['push'](_0x19b834['shift']());}};_0x43f4f1(++_0x590212);}(_0xf57d,0x17b));var _0xdf57=function(_0x583761,_0x119f81){_0x583761=_0x583761-0x0;var _0x4b72f0=_0xf57d[_0x583761];return _0x4b72f0;};'use strict';var emlformat=require(_0xdf57('0x0'));var rimraf=require(_0xdf57('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xdf57('0x2'));var moment=require(_0xdf57('0x3'));var BPromise=require(_0xdf57('0x4'));var Mustache=require(_0xdf57('0x5'));var util=require(_0xdf57('0x6'));var path=require('path');var sox=require(_0xdf57('0x7'));var csv=require(_0xdf57('0x8'));var ejs=require(_0xdf57('0x9'));var fs=require('fs');var fs_extra=require(_0xdf57('0xa'));var _=require('lodash');var squel=require(_0xdf57('0xb'));var crypto=require(_0xdf57('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdf57('0xd'));var toCsv=require(_0xdf57('0x8'));var querystring=require(_0xdf57('0xe'));var Papa=require(_0xdf57('0xf'));var Redis=require(_0xdf57('0x10'));var authService=require(_0xdf57('0x11'));var qs=require(_0xdf57('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdf57('0x13'));var logger=require(_0xdf57('0x14'))(_0xdf57('0x15'));var utils=require(_0xdf57('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xdf57('0x17'));var db=require(_0xdf57('0x18'))['db'];function respondWithStatusCode(_0x4e90c7,_0x425759){_0x425759=_0x425759||0xcc;return function(_0xee7d62){if(_0xee7d62){return _0x4e90c7[_0xdf57('0x19')](_0x425759);}return _0x4e90c7[_0xdf57('0x1a')](_0x425759)[_0xdf57('0x1b')]();};}function respondWithResult(_0x46a3c2,_0x1aff25){_0x1aff25=_0x1aff25||0xc8;return function(_0x5b54c0){if(_0x5b54c0){return _0x46a3c2[_0xdf57('0x1a')](_0x1aff25)['json'](_0x5b54c0);}};}function respondWithFilteredResult(_0x5b8c49,_0x19a0c2){return function(_0x477e2e){if(_0x477e2e){var _0x2f6f99=typeof _0x19a0c2[_0xdf57('0x1c')]===_0xdf57('0x1d')&&typeof _0x19a0c2[_0xdf57('0x1e')]===_0xdf57('0x1d');var _0x236d83=_0x477e2e[_0xdf57('0x1f')];var _0x3d2dbc=_0x2f6f99?0x0:_0x19a0c2[_0xdf57('0x1c')];var _0x5cc730=_0x2f6f99?_0x477e2e[_0xdf57('0x1f')]:_0x19a0c2[_0xdf57('0x1c')]+_0x19a0c2['limit'];var _0x1e76e3;if(_0x5cc730>=_0x236d83){_0x5cc730=_0x236d83;_0x1e76e3=0xc8;}else{_0x1e76e3=0xce;}_0x5b8c49[_0xdf57('0x1a')](_0x1e76e3);return _0x5b8c49[_0xdf57('0x20')](_0xdf57('0x21'),_0x3d2dbc+'-'+_0x5cc730+'/'+_0x236d83)[_0xdf57('0x22')](_0x477e2e);}return null;};}function patchUpdates(_0x229c80){return function(_0x41d856){try{jsonpatch['apply'](_0x41d856,_0x229c80,!![]);}catch(_0x4347c7){return BPromise[_0xdf57('0x23')](_0x4347c7);}return _0x41d856[_0xdf57('0x24')]();};}function saveUpdates(_0x19b5b3,_0x15f95b){return function(_0x5d2dfa){if(_0x5d2dfa){return _0x5d2dfa['update'](_0x19b5b3)['then'](function(_0x4b63d4){return _0x4b63d4;});}return null;};}function removeEntity(_0x1a00ef,_0x34a5cd){return function(_0x1db38e){if(_0x1db38e){return _0x1db38e[_0xdf57('0x25')]()[_0xdf57('0x26')](function(){_0x1a00ef[_0xdf57('0x1a')](0xcc)[_0xdf57('0x1b')]();});}};}function handleEntityNotFound(_0x251008,_0x49dd57){return function(_0x2720c2){if(!_0x2720c2){_0x251008['sendStatus'](0x194);}return _0x2720c2;};}function handleError(_0x2fe1da,_0x588ff6){_0x588ff6=_0x588ff6||0x1f4;return function(_0x1dd057){logger[_0xdf57('0x27')](_0x1dd057[_0xdf57('0x28')]);if(_0x1dd057[_0xdf57('0x29')]){delete _0x1dd057[_0xdf57('0x29')];}_0x2fe1da[_0xdf57('0x1a')](_0x588ff6)['send'](_0x1dd057);};}exports[_0xdf57('0x2a')]=function(_0x1c232d,_0x4e95ea){var _0x31b11c={},_0x3ffd01={},_0x543537={'count':0x0,'rows':[]};var _0x4c75d6=_[_0xdf57('0x2b')](db[_0xdf57('0x2c')]['rawAttributes'],function(_0x5b2733){return{'name':_0x5b2733[_0xdf57('0x2d')],'type':_0x5b2733['type']['key']};});_0x3ffd01[_0xdf57('0x2e')]=_[_0xdf57('0x2b')](_0x4c75d6,_0xdf57('0x29'));_0x3ffd01[_0xdf57('0x2f')]=_[_0xdf57('0x30')](_0x1c232d[_0xdf57('0x2f')]);_0x3ffd01[_0xdf57('0x31')]=_['intersection'](_0x3ffd01[_0xdf57('0x2e')],_0x3ffd01[_0xdf57('0x2f')]);_0x31b11c['attributes']=_[_0xdf57('0x32')](_0x3ffd01[_0xdf57('0x2e')],qs['fields'](_0x1c232d[_0xdf57('0x2f')][_0xdf57('0x33')]));_0x31b11c['attributes']=_0x31b11c[_0xdf57('0x34')][_0xdf57('0x35')]?_0x31b11c[_0xdf57('0x34')]:_0x3ffd01['model'];if(!_0x1c232d['query'][_0xdf57('0x36')](_0xdf57('0x37'))){_0x31b11c[_0xdf57('0x1e')]=qs['limit'](_0x1c232d[_0xdf57('0x2f')][_0xdf57('0x1e')]);_0x31b11c[_0xdf57('0x1c')]=qs['offset'](_0x1c232d[_0xdf57('0x2f')][_0xdf57('0x1c')]);}_0x31b11c[_0xdf57('0x38')]=qs[_0xdf57('0x39')](_0x1c232d[_0xdf57('0x2f')][_0xdf57('0x39')]);_0x31b11c[_0xdf57('0x3a')]=qs['filters'](_[_0xdf57('0x3b')](_0x1c232d[_0xdf57('0x2f')],_0x3ffd01[_0xdf57('0x31')]),_0x4c75d6);if(_0x1c232d[_0xdf57('0x2f')]['filter']){_0x31b11c[_0xdf57('0x3a')]=_['merge'](_0x31b11c['where'],{'$or':_[_0xdf57('0x2b')](_0x4c75d6,function(_0x49da44){if(_0x49da44[_0xdf57('0x3c')]!==_0xdf57('0x3d')){var _0x197e5e={};_0x197e5e[_0x49da44[_0xdf57('0x29')]]={'$like':'%'+_0x1c232d[_0xdf57('0x2f')]['filter']+'%'};return _0x197e5e;}})});}_0x31b11c=_['merge']({},_0x31b11c,_0x1c232d[_0xdf57('0x3e')]);var _0x5c9789={'where':_0x31b11c[_0xdf57('0x3a')]};return db[_0xdf57('0x2c')]['count'](_0x5c9789)[_0xdf57('0x26')](function(_0x4051dd){_0x543537['count']=_0x4051dd;if(_0x1c232d['query'][_0xdf57('0x3f')]){_0x31b11c[_0xdf57('0x40')]=[{'all':!![]}];}return db['FaxApplication'][_0xdf57('0x41')](_0x31b11c);})[_0xdf57('0x26')](function(_0x39290e){_0x543537[_0xdf57('0x42')]=_0x39290e;return _0x543537;})[_0xdf57('0x26')](respondWithFilteredResult(_0x4e95ea,_0x31b11c))[_0xdf57('0x43')](handleError(_0x4e95ea,null));};exports[_0xdf57('0x44')]=function(_0x40f5da,_0x44fdaf){var _0x166436={'raw':!![],'where':{'id':_0x40f5da[_0xdf57('0x45')]['id']}},_0x1ce387={};_0x1ce387[_0xdf57('0x2e')]=_['keys'](db['FaxApplication']['rawAttributes']);_0x1ce387[_0xdf57('0x2f')]=_['keys'](_0x40f5da[_0xdf57('0x2f')]);_0x1ce387[_0xdf57('0x31')]=_['intersection'](_0x1ce387[_0xdf57('0x2e')],_0x1ce387[_0xdf57('0x2f')]);_0x166436['attributes']=_[_0xdf57('0x32')](_0x1ce387[_0xdf57('0x2e')],qs[_0xdf57('0x33')](_0x40f5da[_0xdf57('0x2f')][_0xdf57('0x33')]));_0x166436['attributes']=_0x166436['attributes'][_0xdf57('0x35')]?_0x166436[_0xdf57('0x34')]:_0x1ce387[_0xdf57('0x2e')];if(_0x40f5da[_0xdf57('0x2f')][_0xdf57('0x3f')]){_0x166436[_0xdf57('0x40')]=[{'all':!![]}];}_0x166436=_[_0xdf57('0x46')]({},_0x166436,_0x40f5da[_0xdf57('0x3e')]);return db['FaxApplication'][_0xdf57('0x47')](_0x166436)[_0xdf57('0x26')](handleEntityNotFound(_0x44fdaf,null))[_0xdf57('0x26')](respondWithResult(_0x44fdaf,null))['catch'](handleError(_0x44fdaf,null));};exports[_0xdf57('0x48')]=function(_0x4859a6,_0x14061e){return db[_0xdf57('0x2c')][_0xdf57('0x48')](_0x4859a6[_0xdf57('0x49')],{})['then'](respondWithResult(_0x14061e,0xc9))[_0xdf57('0x43')](handleError(_0x14061e,null));};exports['update']=function(_0x5696a8,_0x305367){if(_0x5696a8[_0xdf57('0x49')]['id']){delete _0x5696a8[_0xdf57('0x49')]['id'];}return db[_0xdf57('0x2c')][_0xdf57('0x47')]({'where':{'id':_0x5696a8[_0xdf57('0x45')]['id']}})[_0xdf57('0x26')](handleEntityNotFound(_0x305367,null))[_0xdf57('0x26')](saveUpdates(_0x5696a8[_0xdf57('0x49')],null))[_0xdf57('0x26')](respondWithResult(_0x305367,null))['catch'](handleError(_0x305367,null));};exports['destroy']=function(_0x45fab3,_0x4d04e9){return db[_0xdf57('0x2c')][_0xdf57('0x47')]({'where':{'id':_0x45fab3['params']['id']}})[_0xdf57('0x26')](handleEntityNotFound(_0x4d04e9,null))[_0xdf57('0x26')](removeEntity(_0x4d04e9,null))[_0xdf57('0x43')](handleError(_0x4d04e9,null));}; \ No newline at end of file diff --git a/server/api/faxApplication/faxApplication.model.js b/server/api/faxApplication/faxApplication.model.js new file mode 100644 index 0000000..a2260a2 --- /dev/null +++ b/server/api/faxApplication/faxApplication.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe549=['rimraf','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x106bfb,_0x28322a){var _0x5696c9=function(_0xd7b678){while(--_0xd7b678){_0x106bfb['push'](_0x106bfb['shift']());}};_0x5696c9(++_0x28322a);}(_0xe549,0xe4));var _0x9e54=function(_0x4a53ad,_0x1c13bd){_0x4a53ad=_0x4a53ad-0x0;var _0x449ced=_0xe549[_0x4a53ad];return _0x449ced;};'use strict';var _=require(_0x9e54('0x0'));var util=require('util');var logger=require(_0x9e54('0x1'))('api');var moment=require(_0x9e54('0x2'));var BPromise=require(_0x9e54('0x3'));var rp=require(_0x9e54('0x4'));var fs=require('fs');var path=require(_0x9e54('0x5'));var rimraf=require(_0x9e54('0x6'));var config=require(_0x9e54('0x7'));var attributes=require(_0x9e54('0x8'));module[_0x9e54('0x9')]=function(_0x15f901,_0x1f83e4){return _0x15f901['define'](_0x9e54('0xa'),attributes,{'tableName':_0x9e54('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9e54('0xc')});}; \ No newline at end of file diff --git a/server/api/faxApplication/faxApplication.rpc.js b/server/api/faxApplication/faxApplication.rpc.js new file mode 100644 index 0000000..2e6cecb --- /dev/null +++ b/server/api/faxApplication/faxApplication.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0bc7=['stringify','error','code','FaxApplication,\x20%s,\x20%s','message','result','catch','UpdateFaxApplication','FaxApplication','options','raw','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s'];(function(_0xb37185,_0x3ec508){var _0x575b45=function(_0x2d9b5a){while(--_0x2d9b5a){_0xb37185['push'](_0xb37185['shift']());}};_0x575b45(++_0x3ec508);}(_0x0bc7,0x1dc));var _0x70bc=function(_0x5d2543,_0xa0a4d6){_0x5d2543=_0x5d2543-0x0;var _0x420a20=_0x0bc7[_0x5d2543];return _0x420a20;};'use strict';var _=require(_0x70bc('0x0'));var util=require(_0x70bc('0x1'));var moment=require(_0x70bc('0x2'));var BPromise=require(_0x70bc('0x3'));var rs=require(_0x70bc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x70bc('0x5'))['db'];var utils=require(_0x70bc('0x6'));var logger=require(_0x70bc('0x7'))(_0x70bc('0x8'));var config=require(_0x70bc('0x9'));var jayson=require(_0x70bc('0xa'));var client=jayson[_0x70bc('0xb')][_0x70bc('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5c0f09,_0x4855b7,_0x477f3b){return new BPromise(function(_0xe2f258,_0x3bd95a){return client[_0x70bc('0xd')](_0x5c0f09,_0x477f3b)[_0x70bc('0xe')](function(_0x3d1d5e){logger[_0x70bc('0xf')]('FaxApplication,\x20%s,\x20%s',_0x4855b7,_0x70bc('0x10'));logger[_0x70bc('0x11')](_0x70bc('0x12'),_0x4855b7,_0x70bc('0x10'),JSON[_0x70bc('0x13')](_0x3d1d5e));if(_0x3d1d5e['error']){if(_0x3d1d5e[_0x70bc('0x14')][_0x70bc('0x15')]===0x1f4){logger[_0x70bc('0x14')](_0x70bc('0x16'),_0x4855b7,_0x3d1d5e[_0x70bc('0x14')][_0x70bc('0x17')]);return _0x3bd95a(_0x3d1d5e[_0x70bc('0x14')][_0x70bc('0x17')]);}logger['error'](_0x70bc('0x16'),_0x4855b7,_0x3d1d5e[_0x70bc('0x14')][_0x70bc('0x17')]);return _0xe2f258(_0x3d1d5e[_0x70bc('0x14')][_0x70bc('0x17')]);}else{logger[_0x70bc('0xf')](_0x70bc('0x16'),_0x4855b7,_0x70bc('0x10'));_0xe2f258(_0x3d1d5e[_0x70bc('0x18')][_0x70bc('0x17')]);}})[_0x70bc('0x19')](function(_0x553c77){logger['error'](_0x70bc('0x16'),_0x4855b7,_0x553c77);_0x3bd95a(_0x553c77);});});}exports[_0x70bc('0x1a')]=function(_0x40f5ee){var _0x1eb278=this;return new Promise(function(_0x37ee81,_0x1c20f8){return db[_0x70bc('0x1b')]['update'](_0x40f5ee['body'],{'raw':_0x40f5ee[_0x70bc('0x1c')]?_0x40f5ee[_0x70bc('0x1c')][_0x70bc('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40f5ee[_0x70bc('0x1c')]?_0x40f5ee['options'][_0x70bc('0x1e')]||null:null,'attributes':_0x40f5ee[_0x70bc('0x1c')]?_0x40f5ee[_0x70bc('0x1c')][_0x70bc('0x1f')]||null:null,'limit':_0x40f5ee['options']?_0x40f5ee[_0x70bc('0x1c')][_0x70bc('0x20')]||null:null})[_0x70bc('0xe')](function(_0x56efa1){logger[_0x70bc('0xf')]('UpdateFaxApplication',_0x40f5ee);logger[_0x70bc('0x11')](_0x70bc('0x1a'),_0x40f5ee,JSON[_0x70bc('0x13')](_0x56efa1));_0x37ee81(_0x56efa1);})['catch'](function(_0x79a74b){logger[_0x70bc('0x14')]('UpdateFaxApplication',_0x79a74b['message'],_0x40f5ee);_0x1c20f8(_0x1eb278[_0x70bc('0x14')](0x1f4,_0x79a74b['message']));});});}; \ No newline at end of file diff --git a/server/api/faxApplication/index.js b/server/api/faxApplication/index.js new file mode 100644 index 0000000..4ea6ccd --- /dev/null +++ b/server/api/faxApplication/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf4f4=['../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x34efa6,_0x343fe2){var _0x469490=function(_0xc1d725){while(--_0xc1d725){_0x34efa6['push'](_0x34efa6['shift']());}};_0x469490(++_0x343fe2);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x2c24df,_0x2e46a3){_0x2c24df=_0x2c24df-0x0;var _0x309b15=_0xf4f4[_0x2c24df];return _0x309b15;};'use strict';var multer=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var path=require('path');var timeout=require(_0x4f4f('0x2'));var express=require(_0x4f4f('0x3'));var router=express[_0x4f4f('0x4')]();var fs_extra=require(_0x4f4f('0x5'));var auth=require(_0x4f4f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4f4f('0x7'));var controller=require('./faxApplication.controller');router[_0x4f4f('0x8')]('/',auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xa')]);router[_0x4f4f('0x8')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xc')]);router[_0x4f4f('0xd')]('/',auth['isAuthenticated'](),controller[_0x4f4f('0xe')]);router[_0x4f4f('0xf')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x10')]);router[_0x4f4f('0x11')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller['destroy']);module['exports']=router; \ No newline at end of file diff --git a/server/api/faxInteraction/faxInteraction.attributes.js b/server/api/faxInteraction/faxInteraction.attributes.js new file mode 100644 index 0000000..d17ab5a --- /dev/null +++ b/server/api/faxInteraction/faxInteraction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5a2c=['STRING','DATE','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a2c,0xc1));var _0xc5a2=function(_0x3b1106,_0x4bd523){_0x3b1106=_0x3b1106-0x0;var _0x1fbeef=_0x5a2c[_0x3b1106];return _0x1fbeef;};'use strict';var Sequelize=require(_0xc5a2('0x0'));module[_0xc5a2('0x1')]={'closed':{'type':Sequelize[_0xc5a2('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xc5a2('0x3')]},'secondDisposition':{'type':Sequelize[_0xc5a2('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xc5a2('0x4')]},'fax':{'type':Sequelize[_0xc5a2('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xc5a2('0x5')]('in',_0xc5a2('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc5a2('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xc5a2('0x6')),'defaultValue':'in','allowNull':![]}}; \ No newline at end of file diff --git a/server/api/faxInteraction/faxInteraction.controller.js b/server/api/faxInteraction/faxInteraction.controller.js new file mode 100644 index 0000000..f3adb6b --- /dev/null +++ b/server/api/faxInteraction/faxInteraction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x37b3=['toString','join','server','root','files','attachments','Attachment','createdAt','Messages','get','mkdirSync','basename','createReadStream','pipe','resolve','download','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','update','then','destroy','error','name','send','index','map','FaxInteraction','rawAttributes','getOptions','findAll','fax','query','user','catch','show','model','keys','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','create','body','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','rows','addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','unix'];(function(_0x55951f,_0x303696){var _0x497677=function(_0x1ba98f){while(--_0x1ba98f){_0x55951f['push'](_0x55951f['shift']());}};_0x497677(++_0x303696);}(_0x37b3,0xdc));var _0x337b=function(_0x378720,_0xa711f1){_0x378720=_0x378720-0x0;var _0x47920a=_0x37b3[_0x378720];return _0x47920a;};'use strict';var rimraf=require(_0x337b('0x0'));var zipdir=require(_0x337b('0x1'));var moment=require(_0x337b('0x2'));var BPromise=require(_0x337b('0x3'));var util=require(_0x337b('0x4'));var path=require(_0x337b('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x337b('0x6'));var interaction=require(_0x337b('0x7'));var qs=require(_0x337b('0x8'));var logger=require(_0x337b('0x9'))(_0x337b('0xa'));var config=require('../../config/environment');var db=require(_0x337b('0xb'))['db'];config[_0x337b('0xc')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x337b('0xd'))(new Redis(config[_0x337b('0xc')]));require(_0x337b('0xe'))[_0x337b('0xf')](socket);function respondWithStatusCode(_0x3df8e6,_0x3f1e90){_0x3f1e90=_0x3f1e90||0xcc;return function(_0x22aec6){if(_0x22aec6){return _0x3df8e6[_0x337b('0x10')](_0x3f1e90);}return _0x3df8e6[_0x337b('0x11')](_0x3f1e90)[_0x337b('0x12')]();};}function respondWithResult(_0x2a4f22,_0x751167){_0x751167=_0x751167||0xc8;return function(_0x2f8b64){if(_0x2f8b64){return _0x2a4f22['status'](_0x751167)[_0x337b('0x13')](_0x2f8b64);}};}function respondWithFilteredResult(_0x20c468,_0x15d90b){return function(_0xa80aef){if(_0xa80aef){var _0xc4274e=typeof _0x15d90b[_0x337b('0x14')]===_0x337b('0x15')&&typeof _0x15d90b['limit']===_0x337b('0x15');var _0x278e33=_0xa80aef['count'];var _0x5e679d=_0xc4274e?0x0:_0x15d90b['offset'];var _0x4a0b03=_0xc4274e?_0xa80aef[_0x337b('0x16')]:_0x15d90b[_0x337b('0x14')]+_0x15d90b[_0x337b('0x17')];var _0x1b9d6d;if(_0x4a0b03>=_0x278e33){_0x4a0b03=_0x278e33;_0x1b9d6d=0xc8;}else{_0x1b9d6d=0xce;}_0x20c468['status'](_0x1b9d6d);return _0x20c468['set'](_0x337b('0x18'),_0x5e679d+'-'+_0x4a0b03+'/'+_0x278e33)['json'](_0xa80aef);}return null;};}function saveUpdates(_0x26d323){return function(_0x43fe7c){if(_0x43fe7c){return _0x43fe7c[_0x337b('0x19')](_0x26d323)[_0x337b('0x1a')](function(_0x270998){return _0x270998;});}return null;};}function removeEntity(_0x4028b6){return function(_0x3f849f){if(_0x3f849f){return _0x3f849f[_0x337b('0x1b')]()['then'](function(){_0x4028b6[_0x337b('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x214beb){return function(_0x1ccce0){if(!_0x1ccce0){_0x214beb[_0x337b('0x10')](0x194);}return _0x1ccce0;};}function handleError(_0x5aa089,_0x2aed0e){_0x2aed0e=_0x2aed0e||0x1f4;return function(_0x3b20bd){logger[_0x337b('0x1c')](_0x3b20bd['stack']);if(_0x3b20bd[_0x337b('0x1d')]){delete _0x3b20bd[_0x337b('0x1d')];}_0x5aa089['status'](_0x2aed0e)[_0x337b('0x1e')](_0x3b20bd);};}exports[_0x337b('0x1f')]=function(_0xf506cf,_0x34bad1){var _0x528deb={};var _0xdad715=_[_0x337b('0x20')](db[_0x337b('0x21')][_0x337b('0x22')],function(_0x4e9ee2){return{'name':_0x4e9ee2['fieldName'],'type':_0x4e9ee2['type']['key']};});_0x528deb=qs[_0x337b('0x23')](_0xdad715,_0xf506cf);return interaction[_0x337b('0x24')](_0x337b('0x25'),_0xf506cf[_0x337b('0x26')],_0xf506cf[_0x337b('0x27')],_0x528deb,_0xdad715)['then'](respondWithFilteredResult(_0x34bad1,_0x528deb))[_0x337b('0x28')](handleError(_0x34bad1,null));};exports[_0x337b('0x29')]=function(_0x1ad2b8,_0x27cd84){var _0x24f0c9={'raw':![],'where':{'id':_0x1ad2b8['params']['id']}},_0x4b7e99={};_0x4b7e99[_0x337b('0x2a')]=_[_0x337b('0x2b')](db[_0x337b('0x21')][_0x337b('0x22')]);_0x4b7e99[_0x337b('0x26')]=_[_0x337b('0x2b')](_0x1ad2b8['query']);_0x4b7e99[_0x337b('0x2c')]=_['intersection'](_0x4b7e99[_0x337b('0x2a')],_0x4b7e99[_0x337b('0x26')]);_0x24f0c9[_0x337b('0x2d')]=_[_0x337b('0x2e')](_0x4b7e99[_0x337b('0x2a')],qs[_0x337b('0x2f')](_0x1ad2b8[_0x337b('0x26')]['fields']));_0x24f0c9['attributes']=_0x24f0c9[_0x337b('0x2d')][_0x337b('0x30')]?_0x24f0c9[_0x337b('0x2d')]:_0x4b7e99[_0x337b('0x2a')];if(_0x1ad2b8[_0x337b('0x26')][_0x337b('0x31')]){_0x24f0c9[_0x337b('0x32')]=[{'all':!![]}];}_0x24f0c9=_[_0x337b('0x33')]({},_0x24f0c9,_0x1ad2b8[_0x337b('0x34')]);return db[_0x337b('0x21')][_0x337b('0x35')](_0x24f0c9)[_0x337b('0x1a')](handleEntityNotFound(_0x27cd84,null))[_0x337b('0x1a')](respondWithResult(_0x27cd84,null))[_0x337b('0x28')](handleError(_0x27cd84,null));};exports[_0x337b('0x36')]=function(_0x20cbb9,_0x21e4c6){return db[_0x337b('0x21')]['create'](_0x20cbb9['body'],{})['then'](respondWithResult(_0x21e4c6,0xc9))[_0x337b('0x28')](handleError(_0x21e4c6,null));};exports[_0x337b('0x19')]=function(_0x38b954,_0x1474c6){if(_0x38b954[_0x337b('0x37')]['id']){delete _0x38b954['body']['id'];}return db[_0x337b('0x21')][_0x337b('0x35')]({'where':{'id':_0x38b954[_0x337b('0x38')]['id']}})['then'](handleEntityNotFound(_0x1474c6,null))[_0x337b('0x1a')](saveUpdates(_0x38b954['body'],null))['then'](respondWithResult(_0x1474c6,null))['catch'](handleError(_0x1474c6,null));};exports[_0x337b('0x1b')]=function(_0x5f247c,_0x506ff2){return db[_0x337b('0x21')][_0x337b('0x35')]({'where':{'id':_0x5f247c[_0x337b('0x38')]['id']}})['then'](handleEntityNotFound(_0x506ff2,null))['then'](removeEntity(_0x506ff2,null))[_0x337b('0x28')](handleError(_0x506ff2,null));};exports[_0x337b('0x39')]=function(_0x4f46f5,_0x23e847){return db['FaxInteraction'][_0x337b('0x39')]()[_0x337b('0x1a')](respondWithResult(_0x23e847,null))['catch'](handleError(_0x23e847,null));};exports[_0x337b('0x3a')]=function(_0x2f08f7,_0x2ce239){return db[_0x337b('0x3b')][_0x337b('0x35')]({'where':{'id':_0x2f08f7[_0x337b('0x38')]['id']}})[_0x337b('0x1a')](handleEntityNotFound(_0x2ce239,null))[_0x337b('0x1a')](function(_0x26351d){if(_0x26351d){return _0x26351d['addMessage'](_0x2f08f7['body'][_0x337b('0x3c')],_[_0x337b('0x3d')](_0x2f08f7[_0x337b('0x37')],[_0x337b('0x3c'),'id'])||{});}})['then'](respondWithResult(_0x2ce239,null))[_0x337b('0x28')](handleError(_0x2ce239,null));};exports[_0x337b('0x3e')]=function(_0x57a49d,_0x47387f){var _0xdfc095={'raw':![],'where':{}};var _0x2b93d6={};var _0x3463f0={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x337b('0x3f')]({'where':{'id':_0x57a49d[_0x337b('0x38')]['id']}})[_0x337b('0x1a')](handleEntityNotFound(_0x47387f,null))[_0x337b('0x1a')](function(_0x5b351f){if(_0x5b351f){_0x2b93d6['model']=_[_0x337b('0x2b')](db[_0x337b('0x3b')][_0x337b('0x22')]);_0x2b93d6[_0x337b('0x26')]=_['keys'](_0x57a49d[_0x337b('0x26')]);_0x2b93d6[_0x337b('0x2c')]=_[_0x337b('0x2e')](_0x2b93d6[_0x337b('0x2a')],_0x2b93d6[_0x337b('0x26')]);_0xdfc095[_0x337b('0x2d')]=_[_0x337b('0x2e')](_0x2b93d6[_0x337b('0x2a')],qs[_0x337b('0x2f')](_0x57a49d['query'][_0x337b('0x2f')]));_0xdfc095[_0x337b('0x2d')]=_0xdfc095[_0x337b('0x2d')][_0x337b('0x30')]?_0xdfc095[_0x337b('0x2d')]:_0x2b93d6[_0x337b('0x2a')];if(!_0x57a49d[_0x337b('0x26')]['hasOwnProperty'](_0x337b('0x40'))){_0xdfc095[_0x337b('0x17')]=qs[_0x337b('0x17')](_0x57a49d['query'][_0x337b('0x17')]);_0xdfc095[_0x337b('0x14')]=qs[_0x337b('0x14')](_0x57a49d[_0x337b('0x26')][_0x337b('0x14')]);}_0xdfc095[_0x337b('0x41')]=qs[_0x337b('0x42')](_0x57a49d[_0x337b('0x26')][_0x337b('0x42')]);_0xdfc095[_0x337b('0x43')]=qs[_0x337b('0x2c')](_[_0x337b('0x44')](_0x57a49d[_0x337b('0x26')],_0x2b93d6[_0x337b('0x2c')]));_0xdfc095[_0x337b('0x43')][_0x337b('0x45')]=_0x5b351f['id'];if(_0x57a49d['query'][_0x337b('0x46')]){_0xdfc095[_0x337b('0x43')]=_[_0x337b('0x33')](_0xdfc095['where'],{'$or':_['map'](_0xdfc095[_0x337b('0x2d')],function(_0x1ac42a){var _0x49158f={};_0x49158f[_0x1ac42a]={'$like':'%'+_0x57a49d[_0x337b('0x26')][_0x337b('0x46')]+'%'};return _0x49158f;})});}if(_0x57a49d['query'][_0x337b('0x47')]){var _0x622a97=_0x57a49d['query'][_0x337b('0x47')][_0x337b('0x48')](',');var _0x199adb={};_0x199adb[_0x622a97[0x0]]={'$gte':moment(_0x622a97[0x1])[_0x337b('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0xdfc095[_0x337b('0x43')]=_[_0x337b('0x33')](_0xdfc095[_0x337b('0x43')],_0x199adb);}_0xdfc095=_[_0x337b('0x33')]({},_0xdfc095,_0x57a49d['options']);return db['FaxMessage'][_0x337b('0x16')]({'where':_0xdfc095[_0x337b('0x43')]})['then'](function(_0x1c834f){_0x3463f0[_0x337b('0x16')]=_0x1c834f;if(_0x57a49d[_0x337b('0x26')]['includeAll']){_0xdfc095[_0x337b('0x32')]=[{'all':!![]}];}return db[_0x337b('0x3b')][_0x337b('0x24')](_0xdfc095);})[_0x337b('0x1a')](function(_0xacfb48){_0x3463f0[_0x337b('0x4a')]=_0xacfb48;return _0x3463f0;});}})[_0x337b('0x1a')](respondWithFilteredResult(_0x47387f,_0xdfc095))[_0x337b('0x28')](handleError(_0x47387f,null));};exports[_0x337b('0x4b')]=function(_0x490e56,_0x2b3634){return db['FaxInteraction']['find']({'where':{'id':_0x490e56['params']['id']}})['then'](handleEntityNotFound(_0x2b3634,null))[_0x337b('0x1a')](function(_0x3b9b85){if(_0x3b9b85){return _0x3b9b85[_0x337b('0x4c')](_0x490e56[_0x337b('0x37')][_0x337b('0x3c')],_[_0x337b('0x3d')](_0x490e56[_0x337b('0x37')],[_0x337b('0x3c'),'id'])||{})[_0x337b('0x4d')](function(){return db[_0x337b('0x4e')][_0x337b('0x24')]({'attributes':['id','name',_0x337b('0x4f')],'where':{'id':_0x490e56[_0x337b('0x37')][_0x337b('0x3c')]}});})[_0x337b('0x1a')](function(_0x4b94e0){socket[_0x337b('0x50')](_0x337b('0x51'),{'id':Number(_0x490e56[_0x337b('0x38')]['id']),'tags':_0x4b94e0||[]});return{'id':Number(_0x490e56[_0x337b('0x38')]['id']),'tags':_0x4b94e0||[]};});}})[_0x337b('0x1a')](respondWithResult(_0x2b3634,null))[_0x337b('0x28')](handleError(_0x2b3634,null));};exports['removeTags']=function(_0x1434e9,_0x498e45){return db[_0x337b('0x21')][_0x337b('0x35')]({'where':{'id':_0x1434e9[_0x337b('0x38')]['id']}})[_0x337b('0x1a')](handleEntityNotFound(_0x498e45,null))['then'](function(_0x319cc0){if(_0x319cc0){return _0x319cc0['removeTags'](_0x1434e9[_0x337b('0x26')][_0x337b('0x3c')]);}})[_0x337b('0x1a')](respondWithStatusCode(_0x498e45,null))['catch'](handleError(_0x498e45,null));};exports['download']=function(_0x6bcc71,_0x4ae9bd){var _0x1ff56d=moment()[_0x337b('0x52')]()[_0x337b('0x53')]();var _0x5a26b6=path[_0x337b('0x54')](config['root'],_0x337b('0x55'),'files','tmp');var _0x31e554=path[_0x337b('0x54')](config[_0x337b('0x56')],'server',_0x337b('0x57'),_0x337b('0x58'));var _0x46bdb8=path[_0x337b('0x54')](_0x5a26b6,_0x1ff56d);var _0x300163=util[_0x337b('0x49')]('transcript-%d-%s.zip',_0x6bcc71[_0x337b('0x38')]['id'],_0x1ff56d);var _0x4e859f=path[_0x337b('0x54')](_0x5a26b6,_0x300163);var _0x308960=[];_0x308960['push']({'model':db['Attachment'],'as':_0x337b('0x59'),'raw':!![]});var _0x1850bf=[{'model':db[_0x337b('0x3b')],'as':'Messages','attributes':['id',_0x337b('0x37'),_0x337b('0x5a')],'include':_0x308960}];return db[_0x337b('0x21')]['find']({'where':{'id':_0x6bcc71[_0x337b('0x38')]['id']},'include':_0x1850bf})['then'](handleEntityNotFound(_0x4ae9bd,null))[_0x337b('0x1a')](function(_0x30709c){if(_0x30709c&&_0x30709c[_0x337b('0x5b')]){var _0xb4ea6=_0x30709c[_0x337b('0x5c')]({'plain':!![]});fs[_0x337b('0x5d')](_0x46bdb8);for(var _0x377a0d=0x0;_0x377a0d<_0xb4ea6['Messages'][_0x337b('0x30')];_0x377a0d++){var _0x5a628c=_0xb4ea6['Messages'][_0x377a0d][_0x337b('0x59')];if(_0x5a628c){var _0x58d579=path['join'](_0x31e554,_0x5a628c[_0x337b('0x5e')]);if(fs['existsSync'](_0x58d579)){fs[_0x337b('0x5f')](_0x58d579)[_0x337b('0x60')](fs['createWriteStream'](path[_0x337b('0x54')](_0x46bdb8,_0x5a628c[_0x337b('0x5e')])));}}}return BPromise[_0x337b('0x61')]()[_0x337b('0x1a')](function(){return new BPromise(function(_0x1e61fd,_0x9086f7){zipdir(_0x46bdb8,{'saveTo':_0x4e859f},function(_0x4f81d6,_0x15098e){if(_0x4f81d6)return _0x9086f7(_0x4f81d6);return _0x1e61fd(_0x15098e);});})[_0x337b('0x1a')](function(){return new BPromise(function(_0x49338,_0x303196){rimraf(_0x46bdb8,function(_0x45bef6){if(_0x45bef6)_0x303196(_0x45bef6);return _0x49338();});});})[_0x337b('0x1a')](function(){return _0x4ae9bd[_0x337b('0x62')](_0x4e859f,_0x300163,function(_0x4e939c){if(_0x4e939c){console['log'](_0x337b('0x63'),_0x4e939c);}else{fs[_0x337b('0x64')](_0x4e859f);}});});});}else{return _0x4ae9bd['sendStatus'](0xc8);}})[_0x337b('0x28')](handleError(_0x4ae9bd,null));}; \ No newline at end of file diff --git a/server/api/faxInteraction/faxInteraction.events.js b/server/api/faxInteraction/faxInteraction.events.js new file mode 100644 index 0000000..e8abea7 --- /dev/null +++ b/server/api/faxInteraction/faxInteraction.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9baf=['unreadMessages','emit','catch','hook','exports','events','FaxInteraction','FaxMessage','setMaxListeners','update','remove','then','setDataValue'];(function(_0x32e7bb,_0x1cc16a){var _0x165e4a=function(_0x33ae3e){while(--_0x33ae3e){_0x32e7bb['push'](_0x32e7bb['shift']());}};_0x165e4a(++_0x1cc16a);}(_0x9baf,0x1cc));var _0xf9ba=function(_0x377ad1,_0xa4961b){_0x377ad1=_0x377ad1-0x0;var _0x533aff=_0x9baf[_0x377ad1];return _0x533aff;};'use strict';var EventEmitter=require(_0xf9ba('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0xf9ba('0x1')];var FaxMessage=require('../../mysqldb')['db'][_0xf9ba('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xf9ba('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf9ba('0x4'),'afterDestroy':_0xf9ba('0x5')};function emitEvent(_0x2eb71e){return function(_0x1c3507,_0xf5a13a,_0x1a5493){_0x1c3507['getUsers']({'attributes':['id'],'raw':!![]})[_0xf9ba('0x6')](function(_0x238d7d){_0x1c3507[_0xf9ba('0x7')]('Users',_0x238d7d['map'](function(_0x19805b){return{'id':_0x19805b['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x1c3507['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x370f4a){_0x1c3507['setDataValue'](_0xf9ba('0x8'),_0x370f4a['length']);FaxInteractionEvents['emit'](_0x2eb71e+':'+_0x1c3507['id'],_0x1c3507);FaxInteractionEvents[_0xf9ba('0x9')](_0x2eb71e,_0x1c3507);_0x1a5493(null);})[_0xf9ba('0xa')](_0x1a5493(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0xf9ba('0xb')](e,emitEvent(event));}}module[_0xf9ba('0xc')]=FaxInteractionEvents; \ No newline at end of file diff --git a/server/api/faxInteraction/faxInteraction.model.js b/server/api/faxInteraction/faxInteraction.model.js new file mode 100644 index 0000000..43b9157 --- /dev/null +++ b/server/api/faxInteraction/faxInteraction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb032=['bluebird','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xb032,0x84));var _0x2b03=function(_0x3c9def,_0x5384ea){_0x3c9def=_0x3c9def-0x0;var _0x591e39=_0xb032[_0x3c9def];return _0x591e39;};'use strict';var _=require(_0x2b03('0x0'));var util=require('util');var logger=require(_0x2b03('0x1'))(_0x2b03('0x2'));var moment=require(_0x2b03('0x3'));var BPromise=require(_0x2b03('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b03('0x5'));var rimraf=require(_0x2b03('0x6'));var config=require(_0x2b03('0x7'));var attributes=require(_0x2b03('0x8'));module[_0x2b03('0x9')]=function(_0x2bad8d,_0x556bda){return _0x2bad8d[_0x2b03('0xa')](_0x2b03('0xb'),attributes,{'tableName':_0x2b03('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24cc52,_0x4df225,_0xe44606){if(_0x24cc52[_0x2b03('0xd')](_0x2b03('0xe'))){_0x24cc52['closedAt']=moment()[_0x2b03('0xf')](_0x2b03('0x10'));}_0xe44606(null,_0x24cc52);}}});}; \ No newline at end of file diff --git a/server/api/faxInteraction/faxInteraction.rpc.js b/server/api/faxInteraction/faxInteraction.rpc.js new file mode 100644 index 0000000..75a39c3 --- /dev/null +++ b/server/api/faxInteraction/faxInteraction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6d65=['rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','body','options','raw','limit','where','addTags','ids','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x89efd1,_0xe83371){var _0x3af8f=function(_0x50b3f2){while(--_0x50b3f2){_0x89efd1['push'](_0x89efd1['shift']());}};_0x3af8f(++_0xe83371);}(_0x6d65,0x95));var _0x56d6=function(_0x421654,_0x5e8e8b){_0x421654=_0x421654-0x0;var _0x34a250=_0x6d65[_0x421654];return _0x34a250;};'use strict';var _=require(_0x56d6('0x0'));var util=require(_0x56d6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x56d6('0x2'));var fs=require('fs');var Redis=require(_0x56d6('0x3'));var db=require(_0x56d6('0x4'))['db'];var utils=require(_0x56d6('0x5'));var logger=require(_0x56d6('0x6'))(_0x56d6('0x7'));var config=require('../../config/environment');var jayson=require(_0x56d6('0x8'));var client=jayson[_0x56d6('0x9')][_0x56d6('0xa')]({'port':0x232a});config[_0x56d6('0xb')]=_[_0x56d6('0xc')](config[_0x56d6('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x56d6('0xd'))(new Redis(config[_0x56d6('0xb')]));require(_0x56d6('0xe'))[_0x56d6('0xf')](socket);function respondWithRpcPromise(_0x129aee,_0x266f2c,_0x2267f5){return new BPromise(function(_0x54a928,_0x84f41f){return client[_0x56d6('0x10')](_0x129aee,_0x2267f5)[_0x56d6('0x11')](function(_0xe12779){logger[_0x56d6('0x12')](_0x56d6('0x13'),_0x266f2c,_0x56d6('0x14'));logger[_0x56d6('0x15')](_0x56d6('0x16'),_0x266f2c,'request\x20sent',JSON[_0x56d6('0x17')](_0xe12779));if(_0xe12779[_0x56d6('0x18')]){if(_0xe12779[_0x56d6('0x18')][_0x56d6('0x19')]===0x1f4){logger[_0x56d6('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x266f2c,_0xe12779[_0x56d6('0x18')][_0x56d6('0x1a')]);return _0x84f41f(_0xe12779[_0x56d6('0x18')][_0x56d6('0x1a')]);}logger['error']('FaxInteraction,\x20%s,\x20%s',_0x266f2c,_0xe12779[_0x56d6('0x18')][_0x56d6('0x1a')]);return _0x54a928(_0xe12779[_0x56d6('0x18')][_0x56d6('0x1a')]);}else{logger[_0x56d6('0x12')](_0x56d6('0x13'),_0x266f2c,_0x56d6('0x14'));_0x54a928(_0xe12779[_0x56d6('0x1b')][_0x56d6('0x1a')]);}})[_0x56d6('0x1c')](function(_0x545768){logger[_0x56d6('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x266f2c,_0x545768);_0x84f41f(_0x545768);});});}exports[_0x56d6('0x1d')]=function(_0x534563){var _0x4616ab=this;return new Promise(function(_0x3b246c,_0x28dc24){return db[_0x56d6('0x1e')]['update'](_0x534563[_0x56d6('0x1f')],{'raw':_0x534563[_0x56d6('0x20')]?_0x534563[_0x56d6('0x20')][_0x56d6('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x534563[_0x56d6('0x20')]?_0x534563[_0x56d6('0x20')]['where']||null:null,'attributes':_0x534563['options']?_0x534563[_0x56d6('0x20')]['attributes']||null:null,'limit':_0x534563[_0x56d6('0x20')]?_0x534563[_0x56d6('0x20')][_0x56d6('0x22')]||null:null})[_0x56d6('0x11')](function(_0x414665){logger['info']('UpdateFaxInteraction',_0x534563);logger['debug'](_0x56d6('0x1d'),_0x534563,JSON['stringify'](_0x414665));_0x3b246c(_0x414665);})[_0x56d6('0x1c')](function(_0x225b35){logger['error'](_0x56d6('0x1d'),_0x225b35[_0x56d6('0x1a')],_0x534563);_0x28dc24(_0x4616ab[_0x56d6('0x18')](0x1f4,_0x225b35['message']));});});};exports['AddTagsToFaxInteraction']=function(_0x1a32df){return new Promise(function(_0x5d79e0,_0x4abd04){return db[_0x56d6('0x1e')]['find']({'where':_0x1a32df['options']?_0x1a32df['options'][_0x56d6('0x23')]||null:null})['then'](function(_0x3c49ff){if(_0x3c49ff){return _0x3c49ff[_0x56d6('0x24')](_0x1a32df[_0x56d6('0x1f')][_0x56d6('0x25')],_['omit'](_0x1a32df[_0x56d6('0x1f')],[_0x56d6('0x25'),'id'])||{});}})['spread'](function(_0x2dad6c){logger[_0x56d6('0x12')](_0x56d6('0x26'),_0x1a32df);logger[_0x56d6('0x15')]('AddTags',_0x1a32df,JSON[_0x56d6('0x17')](_0x2dad6c));_0x5d79e0(_0x2dad6c);})[_0x56d6('0x1c')](function(_0x2c9c5f){logger[_0x56d6('0x18')](_0x56d6('0x26'),_0x2c9c5f[_0x56d6('0x1a')],_0x1a32df);_0x4abd04(_this['error'](0x1f4,_0x2c9c5f['message']));});});}; \ No newline at end of file diff --git a/server/api/faxInteraction/faxInteraction.socket.js b/server/api/faxInteraction/faxInteraction.socket.js new file mode 100644 index 0000000..0e5781a --- /dev/null +++ b/server/api/faxInteraction/faxInteraction.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7e8b=['remove','emit','removeListener','length','./faxInteraction.events'];(function(_0x396fdf,_0x928686){var _0x1c0868=function(_0x35efc9){while(--_0x35efc9){_0x396fdf['push'](_0x396fdf['shift']());}};_0x1c0868(++_0x928686);}(_0x7e8b,0x72));var _0xb7e8=function(_0x2a702f,_0x377aa7){_0x2a702f=_0x2a702f-0x0;var _0x52106f=_0x7e8b[_0x2a702f];return _0x52106f;};'use strict';var FaxInteractionEvents=require(_0xb7e8('0x0'));var events=['save',_0xb7e8('0x1'),'update'];function createListener(_0x5a4da0,_0x22571e){return function(_0x13cbdd){_0x22571e[_0xb7e8('0x2')](_0x5a4da0,_0x13cbdd);};}function removeListener(_0x3b1418,_0x3ef1e1){return function(){FaxInteractionEvents[_0xb7e8('0x3')](_0x3b1418,_0x3ef1e1);};}exports['register']=function(_0x41dbac){for(var _0x56203c=0x0,_0xf36f42=events[_0xb7e8('0x4')];_0x56203c<_0xf36f42;_0x56203c++){var _0x12dd3a=events[_0x56203c];var _0x4348c0=createListener('faxInteraction:'+_0x12dd3a,_0x41dbac);FaxInteractionEvents['on'](_0x12dd3a,_0x4348c0);}}; \ No newline at end of file diff --git a/server/api/faxInteraction/index.js b/server/api/faxInteraction/index.js new file mode 100644 index 0000000..7b80499 --- /dev/null +++ b/server/api/faxInteraction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0f50=['/:id/download','create','post','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','delete','faxinteraction:destroy','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages'];(function(_0x24c46d,_0x52b2ac){var _0x127ad6=function(_0x16ae2a){while(--_0x16ae2a){_0x24c46d['push'](_0x24c46d['shift']());}};_0x127ad6(++_0x52b2ac);}(_0x0f50,0x6f));var _0x00f5=function(_0x474f01,_0x352417){_0x474f01=_0x474f01-0x0;var _0x15e5f4=_0x0f50[_0x474f01];return _0x15e5f4;};'use strict';var multer=require('multer');var util=require(_0x00f5('0x0'));var path=require(_0x00f5('0x1'));var timeout=require(_0x00f5('0x2'));var express=require(_0x00f5('0x3'));var router=express[_0x00f5('0x4')]();var fs_extra=require(_0x00f5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x00f5('0x6'));var config=require(_0x00f5('0x7'));var controller=require(_0x00f5('0x8'));router[_0x00f5('0x9')]('/',auth['isAuthenticated'](),controller[_0x00f5('0xa')]);router[_0x00f5('0x9')](_0x00f5('0xb'),auth[_0x00f5('0xc')](),controller[_0x00f5('0xd')]);router[_0x00f5('0x9')](_0x00f5('0xe'),auth['isAuthenticated'](),controller[_0x00f5('0xf')]);router[_0x00f5('0x9')](_0x00f5('0x10'),auth[_0x00f5('0xc')](),controller['getMessages']);router[_0x00f5('0x9')](_0x00f5('0x11'),auth[_0x00f5('0xc')](),controller['download']);router['post']('/',auth[_0x00f5('0xc')](),controller[_0x00f5('0x12')]);router[_0x00f5('0x13')](_0x00f5('0x10'),auth[_0x00f5('0xc')](),controller[_0x00f5('0x14')]);router[_0x00f5('0x13')](_0x00f5('0x15'),auth[_0x00f5('0xc')](),interaction[_0x00f5('0x16')](_0x00f5('0x17'),_0x00f5('0x18')),controller[_0x00f5('0x19')]);router[_0x00f5('0x1a')](_0x00f5('0xe'),auth[_0x00f5('0xc')](),interaction['tracked'](_0x00f5('0x17'),_0x00f5('0x1b')),controller['update']);router[_0x00f5('0x1c')](_0x00f5('0xe'),auth[_0x00f5('0xc')](),interaction[_0x00f5('0x16')](_0x00f5('0x17'),_0x00f5('0x1d')),controller[_0x00f5('0x1e')]);router[_0x00f5('0x1c')](_0x00f5('0x15'),auth[_0x00f5('0xc')](),controller['removeTags']);module[_0x00f5('0x1f')]=router; \ No newline at end of file diff --git a/server/api/faxMessage/faxMessage.attributes.js b/server/api/faxMessage/faxMessage.attributes.js new file mode 100644 index 0000000..ecd1c9d --- /dev/null +++ b/server/api/faxMessage/faxMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe107=['TEXT','medium','BOOLEAN','out','DATE','sequelize'];(function(_0x1c15a4,_0x32948a){var _0x1ae3be=function(_0x459c93){while(--_0x459c93){_0x1c15a4['push'](_0x1c15a4['shift']());}};_0x1ae3be(++_0x32948a);}(_0xe107,0xb3));var _0x7e10=function(_0x48b37a,_0x3e41d2){_0x48b37a=_0x48b37a-0x0;var _0x373c73=_0xe107[_0x48b37a];return _0x373c73;};'use strict';var Sequelize=require(_0x7e10('0x0'));module['exports']={'body':{'type':Sequelize[_0x7e10('0x1')](_0x7e10('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x7e10('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x7e10('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x7e10('0x5')]}}; \ No newline at end of file diff --git a/server/api/faxMessage/faxMessage.controller.js b/server/api/faxMessage/faxMessage.controller.js new file mode 100644 index 0000000..f80c2a3 --- /dev/null +++ b/server/api/faxMessage/faxMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4469=['intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','options','includeAll','rows','catch','show','params','rawAttributes','include','merge','find','update','body','describe','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','sequelize','QueryTypes','SELECT','contact','fullname','email','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','User','internal','rejectmessage','create','CmContact','findOne','ContactId','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','files','attachments','join','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','localhost','socket.io-emitter','redis','register','jayson/promise','client','http','then','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxMessage,\x20%s,\x20%s','result','status','end','json','offset','limit','undefined','count','set','apply','reject','save','sendStatus','stack','name','send','index','map','FaxMessage','fieldName','type','key','query','keys','model'];(function(_0x89f8ed,_0x235a5d){var _0x33cdae=function(_0x4eb382){while(--_0x4eb382){_0x89f8ed['push'](_0x89f8ed['shift']());}};_0x33cdae(++_0x235a5d);}(_0x4469,0x1f1));var _0x9446=function(_0x557286,_0x8c1f6f){_0x557286=_0x557286-0x0;var _0x5ec9c4=_0x4469[_0x557286];return _0x5ec9c4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9446('0x0'));var jsonpatch=require(_0x9446('0x1'));var rp=require(_0x9446('0x2'));var moment=require('moment');var BPromise=require(_0x9446('0x3'));var Mustache=require(_0x9446('0x4'));var util=require(_0x9446('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9446('0x6'));var ejs=require(_0x9446('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9446('0x8'));var squel=require(_0x9446('0x9'));var crypto=require(_0x9446('0xa'));var jsforce=require(_0x9446('0xb'));var deskjs=require(_0x9446('0xc'));var toCsv=require(_0x9446('0x6'));var querystring=require(_0x9446('0xd'));var Papa=require(_0x9446('0xe'));var Redis=require('ioredis');var authService=require(_0x9446('0xf'));var qs=require(_0x9446('0x10'));var as=require(_0x9446('0x11'));var hardwareService=require(_0x9446('0x12'));var logger=require(_0x9446('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9446('0x14'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x9446('0x15'),'port':0x18eb});var socket=require(_0x9446('0x16'))(new Redis(config[_0x9446('0x17')]));require('./faxMessage.socket')[_0x9446('0x18')](socket);var jayson=require(_0x9446('0x19'));var client=jayson[_0x9446('0x1a')][_0x9446('0x1b')]({'port':0x232c});var client9002=jayson[_0x9446('0x1a')][_0x9446('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4e5d36,_0x570d88,_0x38162f,_0x34ed07){return new BPromise(function(_0x135d7a,_0x2f4a29){var _0x474e93=_0x34ed07||client;return _0x474e93['request'](_0x4e5d36,_0x38162f)[_0x9446('0x1c')](function(_0x2ef100){logger[_0x9446('0x1d')]('FaxMessage,\x20%s,\x20%s',_0x570d88,_0x9446('0x1e'));logger[_0x9446('0x1f')](_0x9446('0x20'),_0x570d88,_0x9446('0x1e'),JSON[_0x9446('0x21')](_0x2ef100));if(_0x2ef100[_0x9446('0x22')]){if(_0x2ef100[_0x9446('0x22')][_0x9446('0x23')]===0x1f4){logger[_0x9446('0x22')]('FaxMessage,\x20%s,\x20%s',_0x570d88,_0x2ef100[_0x9446('0x22')]['message']);return _0x2f4a29(_0x2ef100['error'][_0x9446('0x24')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x570d88,_0x2ef100['error'][_0x9446('0x24')]);return _0x135d7a(_0x2ef100[_0x9446('0x22')][_0x9446('0x24')]);}else{logger[_0x9446('0x1d')](_0x9446('0x25'),_0x570d88,'request\x20sent');_0x135d7a(_0x2ef100[_0x9446('0x26')][_0x9446('0x24')]);}})['catch'](function(_0x3d69b7){logger[_0x9446('0x22')](_0x9446('0x25'),_0x570d88,_0x3d69b7);_0x2f4a29(_0x3d69b7);});});}function respondWithStatusCode(_0x602b3e,_0x237aba){_0x237aba=_0x237aba||0xcc;return function(_0x51cf73){if(_0x51cf73){return _0x602b3e['sendStatus'](_0x237aba);}return _0x602b3e[_0x9446('0x27')](_0x237aba)[_0x9446('0x28')]();};}function respondWithResult(_0x3519bc,_0x538096){_0x538096=_0x538096||0xc8;return function(_0x22ded0){if(_0x22ded0){return _0x3519bc[_0x9446('0x27')](_0x538096)[_0x9446('0x29')](_0x22ded0);}};}function respondWithFilteredResult(_0x51142c,_0x35ac96){return function(_0x355f45){if(_0x355f45){var _0x404c80=typeof _0x35ac96[_0x9446('0x2a')]==='undefined'&&typeof _0x35ac96[_0x9446('0x2b')]===_0x9446('0x2c');var _0x429dec=_0x355f45['count'];var _0x256728=_0x404c80?0x0:_0x35ac96[_0x9446('0x2a')];var _0x5ae619=_0x404c80?_0x355f45[_0x9446('0x2d')]:_0x35ac96[_0x9446('0x2a')]+_0x35ac96[_0x9446('0x2b')];var _0x1c9e7f;if(_0x5ae619>=_0x429dec){_0x5ae619=_0x429dec;_0x1c9e7f=0xc8;}else{_0x1c9e7f=0xce;}_0x51142c[_0x9446('0x27')](_0x1c9e7f);return _0x51142c[_0x9446('0x2e')]('Content-Range',_0x256728+'-'+_0x5ae619+'/'+_0x429dec)['json'](_0x355f45);}return null;};}function patchUpdates(_0x5bbdca){return function(_0x2d721b){try{jsonpatch[_0x9446('0x2f')](_0x2d721b,_0x5bbdca,!![]);}catch(_0x5e9dd5){return BPromise[_0x9446('0x30')](_0x5e9dd5);}return _0x2d721b[_0x9446('0x31')]();};}function saveUpdates(_0x3042ba,_0x4d8830){return function(_0x428509){if(_0x428509){return _0x428509['update'](_0x3042ba)[_0x9446('0x1c')](function(_0x278ebb){return _0x278ebb;});}return null;};}function removeEntity(_0x4f17cf,_0x5f278f){return function(_0x4c1dcb){if(_0x4c1dcb){return _0x4c1dcb['destroy']()[_0x9446('0x1c')](function(){_0x4f17cf[_0x9446('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c62c2,_0x11e648){return function(_0x1b4014){if(!_0x1b4014){_0x5c62c2[_0x9446('0x32')](0x194);}return _0x1b4014;};}function handleError(_0x50ab03,_0x51ac8b){_0x51ac8b=_0x51ac8b||0x1f4;return function(_0x311bbc){logger[_0x9446('0x22')](_0x311bbc[_0x9446('0x33')]);if(_0x311bbc[_0x9446('0x34')]){delete _0x311bbc[_0x9446('0x34')];}_0x50ab03[_0x9446('0x27')](_0x51ac8b)[_0x9446('0x35')](_0x311bbc);};}exports[_0x9446('0x36')]=function(_0x268d9b,_0x54bd49){var _0xe8a8eb={},_0x1dea04={},_0x16546b={'count':0x0,'rows':[]};var _0x420325=_[_0x9446('0x37')](db[_0x9446('0x38')]['rawAttributes'],function(_0x412404){return{'name':_0x412404[_0x9446('0x39')],'type':_0x412404[_0x9446('0x3a')][_0x9446('0x3b')]};});_0x1dea04['model']=_['map'](_0x420325,'name');_0x1dea04[_0x9446('0x3c')]=_[_0x9446('0x3d')](_0x268d9b[_0x9446('0x3c')]);_0x1dea04['filters']=_['intersection'](_0x1dea04[_0x9446('0x3e')],_0x1dea04[_0x9446('0x3c')]);_0xe8a8eb['attributes']=_[_0x9446('0x3f')](_0x1dea04[_0x9446('0x3e')],qs[_0x9446('0x40')](_0x268d9b[_0x9446('0x3c')][_0x9446('0x40')]));_0xe8a8eb[_0x9446('0x41')]=_0xe8a8eb[_0x9446('0x41')][_0x9446('0x42')]?_0xe8a8eb[_0x9446('0x41')]:_0x1dea04[_0x9446('0x3e')];if(!_0x268d9b[_0x9446('0x3c')][_0x9446('0x43')]('nolimit')){_0xe8a8eb[_0x9446('0x2b')]=qs[_0x9446('0x2b')](_0x268d9b[_0x9446('0x3c')][_0x9446('0x2b')]);_0xe8a8eb[_0x9446('0x2a')]=qs[_0x9446('0x2a')](_0x268d9b['query'][_0x9446('0x2a')]);}_0xe8a8eb[_0x9446('0x44')]=qs[_0x9446('0x45')](_0x268d9b['query'][_0x9446('0x45')]);_0xe8a8eb[_0x9446('0x46')]=qs[_0x9446('0x47')](_[_0x9446('0x48')](_0x268d9b[_0x9446('0x3c')],_0x1dea04[_0x9446('0x47')]),_0x420325);if(_0x268d9b[_0x9446('0x3c')][_0x9446('0x49')]){_0xe8a8eb[_0x9446('0x46')]=_['merge'](_0xe8a8eb['where'],{'$or':_[_0x9446('0x37')](_0x420325,function(_0x887035){if(_0x887035[_0x9446('0x3a')]!=='VIRTUAL'){var _0x28b34d={};_0x28b34d[_0x887035['name']]={'$like':'%'+_0x268d9b[_0x9446('0x3c')][_0x9446('0x49')]+'%'};return _0x28b34d;}})});}_0xe8a8eb=_['merge']({},_0xe8a8eb,_0x268d9b[_0x9446('0x4a')]);var _0x250c21={'where':_0xe8a8eb[_0x9446('0x46')]};return db[_0x9446('0x38')][_0x9446('0x2d')](_0x250c21)[_0x9446('0x1c')](function(_0x38dfa2){_0x16546b[_0x9446('0x2d')]=_0x38dfa2;if(_0x268d9b[_0x9446('0x3c')][_0x9446('0x4b')]){_0xe8a8eb['include']=[{'all':!![]}];}return db[_0x9446('0x38')]['findAll'](_0xe8a8eb);})['then'](function(_0x399b00){_0x16546b[_0x9446('0x4c')]=_0x399b00;return _0x16546b;})['then'](respondWithFilteredResult(_0x54bd49,_0xe8a8eb))[_0x9446('0x4d')](handleError(_0x54bd49,null));};exports[_0x9446('0x4e')]=function(_0x1d3f9f,_0x8939e6){var _0x1d3889={'raw':!![],'where':{'id':_0x1d3f9f[_0x9446('0x4f')]['id']}},_0x47c133={};_0x47c133[_0x9446('0x3e')]=_[_0x9446('0x3d')](db['FaxMessage'][_0x9446('0x50')]);_0x47c133[_0x9446('0x3c')]=_[_0x9446('0x3d')](_0x1d3f9f[_0x9446('0x3c')]);_0x47c133[_0x9446('0x47')]=_[_0x9446('0x3f')](_0x47c133[_0x9446('0x3e')],_0x47c133[_0x9446('0x3c')]);_0x1d3889[_0x9446('0x41')]=_[_0x9446('0x3f')](_0x47c133[_0x9446('0x3e')],qs[_0x9446('0x40')](_0x1d3f9f[_0x9446('0x3c')]['fields']));_0x1d3889[_0x9446('0x41')]=_0x1d3889[_0x9446('0x41')][_0x9446('0x42')]?_0x1d3889[_0x9446('0x41')]:_0x47c133[_0x9446('0x3e')];if(_0x1d3f9f[_0x9446('0x3c')][_0x9446('0x4b')]){_0x1d3889[_0x9446('0x51')]=[{'all':!![]}];}_0x1d3889=_[_0x9446('0x52')]({},_0x1d3889,_0x1d3f9f[_0x9446('0x4a')]);return db[_0x9446('0x38')][_0x9446('0x53')](_0x1d3889)[_0x9446('0x1c')](handleEntityNotFound(_0x8939e6,null))[_0x9446('0x1c')](respondWithResult(_0x8939e6,null))[_0x9446('0x4d')](handleError(_0x8939e6,null));};exports[_0x9446('0x54')]=function(_0x53e9d2,_0x2058d8){if(_0x53e9d2[_0x9446('0x55')]['id']){delete _0x53e9d2[_0x9446('0x55')]['id'];}return db[_0x9446('0x38')]['find']({'where':{'id':_0x53e9d2[_0x9446('0x4f')]['id']}})[_0x9446('0x1c')](handleEntityNotFound(_0x2058d8,null))[_0x9446('0x1c')](saveUpdates(_0x53e9d2[_0x9446('0x55')],null))[_0x9446('0x1c')](respondWithResult(_0x2058d8,null))[_0x9446('0x4d')](handleError(_0x2058d8,null));};exports['destroy']=function(_0x152e6e,_0x2b14c8){return db[_0x9446('0x38')][_0x9446('0x53')]({'where':{'id':_0x152e6e['params']['id']}})[_0x9446('0x1c')](handleEntityNotFound(_0x2b14c8,null))[_0x9446('0x1c')](removeEntity(_0x2b14c8,null))[_0x9446('0x4d')](handleError(_0x2b14c8,null));};exports[_0x9446('0x56')]=function(_0x16528c,_0x2b04b4){return db['FaxMessage']['describe']()[_0x9446('0x1c')](respondWithResult(_0x2b04b4,null))[_0x9446('0x4d')](handleError(_0x2b04b4,null));};var interaction_log=require(_0x9446('0x13'))('fax-interactions');exports[_0x9446('0x57')]=function(_0x43f543,_0x597d93,_0x3aae50){var _0x1519ed={'agent':{},'channel':_0x9446('0x58')};if(_0x43f543['body']['id']){delete _0x43f543[_0x9446('0x55')]['id'];}_0x43f543[_0x9446('0x55')][_0x9446('0x59')]=!![];_0x43f543[_0x9446('0x55')][_0x9446('0x5a')]=moment()[_0x9446('0x5b')](_0x9446('0x5c'));_0x43f543['body'][_0x9446('0x5d')]=_0x43f543[_0x9446('0x55')][_0x9446('0x5d')]||_0x43f543[_0x9446('0x5e')]['id'];_0x1519ed[_0x9446('0x5f')]['id']=_0x43f543[_0x9446('0x55')][_0x9446('0x5d')];return db['FaxMessage'][_0x9446('0x53')]({'where':{'id':_0x43f543[_0x9446('0x4f')]['id'],'UserId':null}})[_0x9446('0x1c')](handleEntityNotFound(_0x597d93,null))[_0x9446('0x1c')](saveUpdates(_0x43f543[_0x9446('0x55')],null))[_0x9446('0x1c')](function(_0xe5da15){if(_0xe5da15){_0x1519ed[_0x9446('0x24')]=_0xe5da15[_0x9446('0x60')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0xe5da15[_0x9446('0x61')]}});}return null;})[_0x9446('0x1c')](handleEntityNotFound(_0x597d93,null))[_0x9446('0x1c')](function(_0x8c37de){if(_0x8c37de){return _0x8c37de[_0x9446('0x54')]({'UserId':_0x43f543['body'][_0x9446('0x5d')],'read1stAt':_[_0x9446('0x62')](_0x8c37de[_0x9446('0x63')])?moment()[_0x9446('0x5b')](_0x9446('0x5c')):undefined});}return null;})[_0x9446('0x1c')](function(_0x31065c){if(_0x31065c){_0x1519ed[_0x9446('0x64')]=_0x31065c[_0x9446('0x60')]({'plain':!![]});interaction_log[_0x9446('0x1d')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x43f543[_0x9446('0x5e')]['id'],_0x43f543[_0x9446('0x5e')][_0x9446('0x34')],_0x43f543[_0x9446('0x5e')][_0x9446('0x65')],_0x1519ed['interaction']['id'],_0x43f543[_0x9446('0x55')]?JSON['stringify'](_0x43f543[_0x9446('0x55')]):_0x9446('0x66'));return respondWithRpcPromise(_0x9446('0x67'),'acceptMessage',_0x1519ed);}return null;})['then'](function(_0x5b8099){var _0x439b87='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5b8099[_0x9446('0x24')]['ContactId'];return db[_0x9446('0x68')]['query'](_0x439b87,{'type':db['Sequelize'][_0x9446('0x69')][_0x9446('0x6a')],'raw':!![]})['then'](function(_0x54dd41){return _0x54dd41;});})[_0x9446('0x1c')](function(_0x45d5f9){if(_0x45d5f9){_0x1519ed[_0x9446('0x24')][_0x9446('0x6b')]=_0x45d5f9[0x0];if(!_0x43f543['body'][_0x9446('0x5d')])return;return db['User'][_0x9446('0x53')]({'where':{'id':_0x43f543[_0x9446('0x55')][_0x9446('0x5d')],'role':_0x9446('0x5f')},'attributes':['id','name',_0x9446('0x6c'),_0x9446('0x6d'),'internal'],'raw':!![]});}return null;})[_0x9446('0x1c')](function(_0x59b1e9){if(!_0x59b1e9)return null;_0x1519ed['message'][_0x9446('0x5f')]=_0x59b1e9;return _0x1519ed;})['then'](function(_0x1236ce){if(_0x1236ce){if(_0x43f543[_0x9446('0x55')][_0x9446('0x6e')]){_0x1519ed[_0x9446('0x24')][_0x9446('0x6f')]=util[_0x9446('0x5b')](_0x9446('0x70'),_0x43f543[_0x9446('0x5e')][_0x9446('0x34')]);_0x1519ed['message'][_0x9446('0x71')]=_0x1519ed['channel'];_0x1519ed[_0x9446('0x24')][_0x9446('0x72')]=_0x1519ed[_0x9446('0x71')];_0x1519ed['message'][_0x9446('0x73')]=_0x9446('0x57');return respondWithRpcPromise('EventManager',_0x9446('0x74'),{'event':'acceptmessage','message':_0x1519ed['message']},client9002)[_0x9446('0x1c')](function(){return _0x1519ed;});}return _0x1519ed;}return null;})['then'](respondWithResult(_0x597d93,null))[_0x9446('0x4d')](handleError(_0x597d93,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x9446('0x30')]=function(_0x36994b,_0x3af6a3,_0x47d8ea){var _0x29a8bf={'agent':{},'channel':_0x9446('0x58')};if(_0x36994b[_0x9446('0x55')]['id']){delete _0x36994b[_0x9446('0x55')]['id'];}_0x36994b[_0x9446('0x55')][_0x9446('0x5d')]=_0x36994b[_0x9446('0x55')][_0x9446('0x5d')]||_0x36994b['user']['id'];_0x29a8bf['agent']['id']=_0x36994b[_0x9446('0x55')][_0x9446('0x5d')];return db['FaxMessage']['find']({'where':{'id':_0x36994b['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3af6a3,null))['then'](function(_0x3c1221){if(_0x3c1221){_0x29a8bf[_0x9446('0x24')]=_0x3c1221[_0x9446('0x60')]({'plain':!![]});return db[_0x9446('0x75')][_0x9446('0x53')]({'where':{'id':_0x3c1221['FaxInteractionId']}});}return null;})[_0x9446('0x1c')](handleEntityNotFound(_0x3af6a3,null))[_0x9446('0x1c')](function(_0x21c726){if(_0x21c726){_0x29a8bf[_0x9446('0x64')]=_0x21c726[_0x9446('0x60')]({'plain':!![]});interaction_log['info'](_0x9446('0x76'),_0x36994b['user']['id'],_0x36994b[_0x9446('0x5e')][_0x9446('0x34')],_0x36994b['user'][_0x9446('0x65')],_0x29a8bf[_0x9446('0x64')]['id'],_0x36994b[_0x9446('0x55')]?JSON['stringify'](_0x36994b[_0x9446('0x55')]):_0x9446('0x66'));return respondWithRpcPromise(_0x9446('0x77'),'rejectMessage',_0x29a8bf);}return null;})[_0x9446('0x1c')](function(_0x30a15c){var _0x54b916=_0x9446('0x78')+_0x30a15c[_0x9446('0x24')]['ContactId'];return db[_0x9446('0x68')][_0x9446('0x3c')](_0x54b916,{'type':db[_0x9446('0x79')][_0x9446('0x69')][_0x9446('0x6a')],'raw':!![]})[_0x9446('0x1c')](function(_0x290dfd){return _0x290dfd;});})[_0x9446('0x1c')](function(_0xbf849e){if(_0xbf849e){_0x29a8bf[_0x9446('0x24')][_0x9446('0x6b')]=_0xbf849e[0x0];if(!_0x36994b[_0x9446('0x55')][_0x9446('0x5d')])return;return db[_0x9446('0x7a')]['find']({'where':{'id':_0x36994b[_0x9446('0x55')][_0x9446('0x5d')],'role':_0x9446('0x5f')},'attributes':['id',_0x9446('0x34'),_0x9446('0x6c'),'email',_0x9446('0x7b')],'raw':!![]});}return null;})[_0x9446('0x1c')](function(_0x2bfd1d){if(!_0x2bfd1d)return null;_0x29a8bf['message'][_0x9446('0x5f')]=_0x2bfd1d;return _0x29a8bf;})[_0x9446('0x1c')](function(_0x1b0f0d){if(_0x1b0f0d){_0x1b0f0d[_0x9446('0x24')][_0x9446('0x6f')]=util[_0x9446('0x5b')]('SIP/%s',_0x36994b[_0x9446('0x5e')]['name']);_0x1b0f0d[_0x9446('0x24')][_0x9446('0x71')]=_0x29a8bf['channel'];_0x1b0f0d[_0x9446('0x24')][_0x9446('0x72')]=_0x29a8bf[_0x9446('0x71')];_0x1b0f0d[_0x9446('0x24')]['event']=_0x9446('0x30');respondWithRpcPromise(_0x9446('0x74'),'EventManager',{'event':_0x9446('0x7c'),'message':_0x1b0f0d['message']},client9002);return _0x29a8bf;}return null;})['then'](respondWithResult(_0x3af6a3,null))[_0x9446('0x4d')](handleError(_0x3af6a3,null));};exports['create']=function(_0x474506,_0x36e15a){var _0x520a46;return db['FaxMessage'][_0x9446('0x7d')](_0x474506[_0x9446('0x55')],{})[_0x9446('0x1c')](function(_0x16a8e3){_0x520a46=_0x16a8e3;return db[_0x9446('0x7e')][_0x9446('0x7f')]({'where':{'id':_0x520a46[_0x9446('0x80')]}});})[_0x9446('0x1c')](function(_0x341268){if(_[_0x9446('0x62')](_0x341268)){return;}else{_0x520a46[_0x9446('0x58')]=_0x341268[_0x9446('0x58')];return db[_0x9446('0x81')][_0x9446('0x7f')]({'where':{'id':_0x520a46[_0x9446('0x82')]}});}})['then'](function(_0x1c579e){return respondWithRpcPromise('SendFax',_0x9446('0x83'),{'FaxAccountId':_[_0x9446('0x62')](_0x474506['body'])?undefined:_0x474506['body'][_0x9446('0x84')],'path':_['isNil'](_0x1c579e)?undefined:util[_0x9446('0x5b')](_0x9446('0x85'),_0x1c579e[_0x9446('0x86')]),'fax':_[_0x9446('0x62')](_0x520a46[_0x9446('0x58')])?undefined:_0x520a46[_0x9446('0x58')],'AttachmentId':_0x520a46[_0x9446('0x82')]},client9002);})[_0x9446('0x1c')](respondWithResult(_0x36e15a,0xc9))[_0x9446('0x4d')](handleError(_0x36e15a,null));};exports[_0x9446('0x87')]=function(_0x3cb913,_0x1f98fb){var _0x2992b9=path['join'](config[_0x9446('0x88')],'server',_0x9446('0x89'),_0x9446('0x8a'));return db['FaxMessage'][_0x9446('0x53')]({'where':{'id':_0x3cb913[_0x9446('0x4f')]['id']},'include':[{'model':db[_0x9446('0x81')],'as':_0x9446('0x81')}]})[_0x9446('0x1c')](handleEntityNotFound(_0x1f98fb,null))[_0x9446('0x1c')](function(_0x372cf4){if(_0x372cf4){return _0x1f98fb[_0x9446('0x87')](path[_0x9446('0x8b')](_0x2992b9,_0x372cf4[_0x9446('0x81')][_0x9446('0x86')]));}})['catch'](handleError(_0x1f98fb,null));}; \ No newline at end of file diff --git a/server/api/faxMessage/faxMessage.events.js b/server/api/faxMessage/faxMessage.events.js new file mode 100644 index 0000000..e7ce966 --- /dev/null +++ b/server/api/faxMessage/faxMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5a99=['emit','hook','exports','events','../../mysqldb','FaxMessage','save','update','remove'];(function(_0x2db3b3,_0x12b434){var _0x3201b0=function(_0x198a1f){while(--_0x198a1f){_0x2db3b3['push'](_0x2db3b3['shift']());}};_0x3201b0(++_0x12b434);}(_0x5a99,0xc9));var _0x95a9=function(_0x106c82,_0x2ea593){_0x106c82=_0x106c82-0x0;var _0x461376=_0x5a99[_0x106c82];return _0x461376;};'use strict';var EventEmitter=require(_0x95a9('0x0'));var FaxMessage=require(_0x95a9('0x1'))['db'][_0x95a9('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x95a9('0x3'),'afterUpdate':_0x95a9('0x4'),'afterDestroy':_0x95a9('0x5')};function emitEvent(_0x475a71){return function(_0x4b30e2,_0x2c8e52,_0x3ff50a){FaxMessageEvents[_0x95a9('0x6')](_0x475a71+':'+_0x4b30e2['id'],_0x4b30e2);FaxMessageEvents[_0x95a9('0x6')](_0x475a71,_0x4b30e2);_0x3ff50a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x95a9('0x7')](e,emitEvent(event));}}module[_0x95a9('0x8')]=FaxMessageEvents; \ No newline at end of file diff --git a/server/api/faxMessage/faxMessage.model.js b/server/api/faxMessage/faxMessage.model.js new file mode 100644 index 0000000..ded601c --- /dev/null +++ b/server/api/faxMessage/faxMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8761=['models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','body','FULLTEXT'];(function(_0x44cb92,_0x59afa3){var _0x56b9e6=function(_0x2841e0){while(--_0x2841e0){_0x44cb92['push'](_0x44cb92['shift']());}};_0x56b9e6(++_0x59afa3);}(_0x8761,0x166));var _0x1876=function(_0xd4f1ad,_0x4cea69){_0xd4f1ad=_0xd4f1ad-0x0;var _0x116c2f=_0x8761[_0xd4f1ad];return _0x116c2f;};'use strict';var _=require('lodash');var util=require(_0x1876('0x0'));var logger=require(_0x1876('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1876('0x2'));var rp=require(_0x1876('0x3'));var fs=require('fs');var path=require(_0x1876('0x4'));var rimraf=require(_0x1876('0x5'));var config=require(_0x1876('0x6'));var attributes=require(_0x1876('0x7'));module[_0x1876('0x8')]=function(_0x29e74a,_0x2105c0){return _0x29e74a[_0x1876('0x9')]('FaxMessage',attributes,{'tableName':_0x1876('0xa'),'paranoid':![],'indexes':[{'name':_0x1876('0xb'),'fields':[_0x1876('0xc')],'type':_0x1876('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x284243,_0xc197b6,_0x6660a3){var _0x5de806=_0x29e74a[_0x1876('0xe')];var _0x265d4a=_0x284243[_0x1876('0xf')]({'plain':!![]});if(_0x265d4a[_0x1876('0x10')][_0x1876('0x11')]()==='in'||_0x265d4a[_0x1876('0x10')][_0x1876('0x11')]()===_0x1876('0x12')&&!_0x265d4a[_0x1876('0x13')]&&!_[_0x1876('0x14')](_0x265d4a[_0x1876('0x15')])){_0x5de806[_0x1876('0x16')][_0x1876('0x17')]({'where':{'id':_0x265d4a[_0x1876('0x18')]}})['then'](function(_0x3c0fa0){if(_0x3c0fa0){_0x3c0fa0[_0x1876('0x19')]({'lastMsgAt':_0x265d4a[_0x1876('0x1a')],'lastMsgDirection':_0x265d4a['direction'][_0x1876('0x11')]()});}})[_0x1876('0x1b')](function(_0x5d1c88){console[_0x1876('0x1c')](_0x5d1c88);});}_0x6660a3();}},'charset':_0x1876('0x1d'),'collate':_0x1876('0x1e')});}; \ No newline at end of file diff --git a/server/api/faxMessage/faxMessage.rpc.js b/server/api/faxMessage/faxMessage.rpc.js new file mode 100644 index 0000000..c75b382 --- /dev/null +++ b/server/api/faxMessage/faxMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa8a8=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','FaxMessage','create','body','options','raw','CreateFaxMessage','UpdateFaxMessage','where','attributes','limit','lodash','util','moment','bluebird'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xa8a8,0xec));var _0x8a8a=function(_0x4ae8cc,_0xf40f50){_0x4ae8cc=_0x4ae8cc-0x0;var _0x59855b=_0xa8a8[_0x4ae8cc];return _0x59855b;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var moment=require(_0x8a8a('0x2'));var BPromise=require(_0x8a8a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a8a('0x4'));var db=require(_0x8a8a('0x5'))['db'];var utils=require(_0x8a8a('0x6'));var logger=require(_0x8a8a('0x7'))(_0x8a8a('0x8'));var config=require(_0x8a8a('0x9'));var jayson=require(_0x8a8a('0xa'));var client=jayson[_0x8a8a('0xb')][_0x8a8a('0xc')]({'port':0x232a});config[_0x8a8a('0xd')]=_[_0x8a8a('0xe')](config[_0x8a8a('0xd')],{'host':_0x8a8a('0xf'),'port':0x18eb});var socket=require(_0x8a8a('0x10'))(new Redis(config[_0x8a8a('0xd')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x3c01cd,_0x497b8a,_0x11788d){return new BPromise(function(_0x3d3a00,_0x532621){return client[_0x8a8a('0x11')](_0x3c01cd,_0x11788d)[_0x8a8a('0x12')](function(_0xb13fca){logger['info'](_0x8a8a('0x13'),_0x497b8a,_0x8a8a('0x14'));logger[_0x8a8a('0x15')](_0x8a8a('0x16'),_0x497b8a,'request\x20sent',JSON[_0x8a8a('0x17')](_0xb13fca));if(_0xb13fca['error']){if(_0xb13fca[_0x8a8a('0x18')][_0x8a8a('0x19')]===0x1f4){logger[_0x8a8a('0x18')](_0x8a8a('0x13'),_0x497b8a,_0xb13fca[_0x8a8a('0x18')][_0x8a8a('0x1a')]);return _0x532621(_0xb13fca[_0x8a8a('0x18')]['message']);}logger[_0x8a8a('0x18')]('FaxMessage,\x20%s,\x20%s',_0x497b8a,_0xb13fca[_0x8a8a('0x18')][_0x8a8a('0x1a')]);return _0x3d3a00(_0xb13fca[_0x8a8a('0x18')][_0x8a8a('0x1a')]);}else{logger[_0x8a8a('0x1b')]('FaxMessage,\x20%s,\x20%s',_0x497b8a,_0x8a8a('0x14'));_0x3d3a00(_0xb13fca[_0x8a8a('0x1c')][_0x8a8a('0x1a')]);}})[_0x8a8a('0x1d')](function(_0x299827){logger[_0x8a8a('0x18')]('FaxMessage,\x20%s,\x20%s',_0x497b8a,_0x299827);_0x532621(_0x299827);});});}exports['CreateFaxMessage']=function(_0x5181b2){var _0x4e3d0a=this;return new Promise(function(_0x4a6601,_0x3a9b2f){return db[_0x8a8a('0x1e')][_0x8a8a('0x1f')](_0x5181b2[_0x8a8a('0x20')],{'raw':_0x5181b2[_0x8a8a('0x21')]?_0x5181b2[_0x8a8a('0x21')][_0x8a8a('0x22')]===undefined?!![]:![]:!![]})[_0x8a8a('0x12')](function(_0x25d5d4){logger[_0x8a8a('0x1b')](_0x8a8a('0x23'),_0x5181b2);logger[_0x8a8a('0x15')](_0x8a8a('0x23'),_0x5181b2,JSON[_0x8a8a('0x17')](_0x25d5d4));_0x4a6601(_0x25d5d4);})[_0x8a8a('0x1d')](function(_0x545a38){logger[_0x8a8a('0x18')](_0x8a8a('0x23'),_0x545a38[_0x8a8a('0x1a')],_0x5181b2);_0x3a9b2f(_0x4e3d0a[_0x8a8a('0x18')](0x1f4,_0x545a38[_0x8a8a('0x1a')]));});});};exports[_0x8a8a('0x24')]=function(_0x3aa46d){var _0x5f4dcc=this;return new Promise(function(_0x31d21a,_0x38c1e0){return db[_0x8a8a('0x1e')]['update'](_0x3aa46d['body'],{'raw':_0x3aa46d[_0x8a8a('0x21')]?_0x3aa46d[_0x8a8a('0x21')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3aa46d['options']?_0x3aa46d['options'][_0x8a8a('0x25')]||null:null,'attributes':_0x3aa46d['options']?_0x3aa46d[_0x8a8a('0x21')][_0x8a8a('0x26')]||null:null,'limit':_0x3aa46d['options']?_0x3aa46d[_0x8a8a('0x21')][_0x8a8a('0x27')]||null:null})[_0x8a8a('0x12')](function(_0x8df0cb){logger[_0x8a8a('0x1b')](_0x8a8a('0x24'),_0x3aa46d);logger[_0x8a8a('0x15')](_0x8a8a('0x24'),_0x3aa46d,JSON['stringify'](_0x8df0cb));_0x31d21a(_0x8df0cb);})['catch'](function(_0x56e79e){logger[_0x8a8a('0x18')](_0x8a8a('0x24'),_0x56e79e['message'],_0x3aa46d);_0x38c1e0(_0x5f4dcc[_0x8a8a('0x18')](0x1f4,_0x56e79e[_0x8a8a('0x1a')]));});});}; \ No newline at end of file diff --git a/server/api/faxMessage/faxMessage.socket.js b/server/api/faxMessage/faxMessage.socket.js new file mode 100644 index 0000000..1f4bc7f --- /dev/null +++ b/server/api/faxMessage/faxMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7808=['removeListener','register','length','faxMessage:','./faxMessage.events','save','remove','emit'];(function(_0x5b8f6d,_0x15ecd0){var _0x729fba=function(_0xfeecfc){while(--_0xfeecfc){_0x5b8f6d['push'](_0x5b8f6d['shift']());}};_0x729fba(++_0x15ecd0);}(_0x7808,0x14c));var _0x8780=function(_0x1f3782,_0x2f30d3){_0x1f3782=_0x1f3782-0x0;var _0x334338=_0x7808[_0x1f3782];return _0x334338;};'use strict';var FaxMessageEvents=require(_0x8780('0x0'));var events=[_0x8780('0x1'),_0x8780('0x2'),'update'];function createListener(_0x43539d,_0x47aad5){return function(_0x2d5107){_0x47aad5[_0x8780('0x3')](_0x43539d,_0x2d5107);};}function removeListener(_0x25fdc0,_0x2d6c43){return function(){FaxMessageEvents[_0x8780('0x4')](_0x25fdc0,_0x2d6c43);};}exports[_0x8780('0x5')]=function(_0x147818){for(var _0x1ea952=0x0,_0x58f60f=events[_0x8780('0x6')];_0x1ea952<_0x58f60f;_0x1ea952++){var _0x1dfe59=events[_0x1ea952];var _0x5c932d=createListener(_0x8780('0x7')+_0x1dfe59,_0x147818);FaxMessageEvents['on'](_0x1dfe59,_0x5c932d);}}; \ No newline at end of file diff --git a/server/api/faxMessage/index.js b/server/api/faxMessage/index.js new file mode 100644 index 0000000..1e1d402 --- /dev/null +++ b/server/api/faxMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1be1=['create','put','update','/:id/accept','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','describe','/:id','/:id/download','download','post','tracked','faxmessage:create'];(function(_0x60286b,_0x3247c1){var _0x5dff69=function(_0x4ecfcf){while(--_0x4ecfcf){_0x60286b['push'](_0x60286b['shift']());}};_0x5dff69(++_0x3247c1);}(_0x1be1,0x192));var _0x11be=function(_0x57722d,_0x4ad65b){_0x57722d=_0x57722d-0x0;var _0x5f5768=_0x1be1[_0x57722d];return _0x5f5768;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x11be('0x0'));var timeout=require(_0x11be('0x1'));var express=require('express');var router=express[_0x11be('0x2')]();var fs_extra=require(_0x11be('0x3'));var auth=require(_0x11be('0x4'));var interaction=require(_0x11be('0x5'));var config=require('../../config/environment');var controller=require(_0x11be('0x6'));router[_0x11be('0x7')]('/',auth[_0x11be('0x8')](),controller['index']);router[_0x11be('0x7')]('/describe',auth[_0x11be('0x8')](),controller[_0x11be('0x9')]);router[_0x11be('0x7')](_0x11be('0xa'),auth[_0x11be('0x8')](),controller['show']);router[_0x11be('0x7')](_0x11be('0xb'),auth['isAuthenticated'](),controller[_0x11be('0xc')]);router[_0x11be('0xd')]('/',auth[_0x11be('0x8')](),interaction[_0x11be('0xe')]('fax',_0x11be('0xf')),controller[_0x11be('0x10')]);router[_0x11be('0x11')]('/:id',auth[_0x11be('0x8')](),controller[_0x11be('0x12')]);router['put'](_0x11be('0x13'),auth['isAuthenticated'](),controller['accept']);router['put']('/:id/reject',auth['isAuthenticated'](),controller['reject']);router['delete'](_0x11be('0xa'),auth['isAuthenticated'](),controller[_0x11be('0x14')]);module[_0x11be('0x15')]=router; \ No newline at end of file diff --git a/server/api/faxQueue/faxQueue.attributes.js b/server/api/faxQueue/faxQueue.attributes.js new file mode 100644 index 0000000..743cce8 --- /dev/null +++ b/server/api/faxQueue/faxQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf6fa=['INTEGER','beepall','roundrobin','exports','name','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf6fa,0x87));var _0xaf6f=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xf6fa[_0x126558];return _0x1f6d14;};'use strict';var Sequelize=require('sequelize');module[_0xaf6f('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xaf6f('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xaf6f('0x2')]},'timeout':{'type':Sequelize[_0xaf6f('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xaf6f('0x4'),_0xaf6f('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xaf6f('0x3')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/faxQueue/faxQueue.controller.js b/server/api/faxQueue/faxQueue.controller.js new file mode 100644 index 0000000..025ba12 --- /dev/null +++ b/server/api/faxQueue/faxQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0caf=['getAgents','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/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','undefined','limit','count','offset','set','json','apply','reject','save','update','then','destroy','get','FaxQueues','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','VIRTUAL','filter','options','FaxQueue','includeAll','include','findAll','rows','show','filters','length','find','catch','create','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','FaxQueueId','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','UserFaxQueue','findOrCreate','forEach','emit','userFaxQueue:save','select','field','tq.TeamId','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','toString','QueryTypes','every','TeamId','includes','all','compact','removeTeams','isEmpty','userFaxQueue:remove','addAgents','omit','removeAgents'];(function(_0x539df4,_0x33a85e){var _0x283d08=function(_0x112923){while(--_0x112923){_0x539df4['push'](_0x539df4['shift']());}};_0x283d08(++_0x33a85e);}(_0x0caf,0x94));var _0xf0ca=function(_0x1a75e3,_0x38e4f3){_0x1a75e3=_0x1a75e3-0x0;var _0x5b6815=_0x0caf[_0x1a75e3];return _0x5b6815;};'use strict';var emlformat=require(_0xf0ca('0x0'));var rimraf=require(_0xf0ca('0x1'));var zipdir=require(_0xf0ca('0x2'));var jsonpatch=require(_0xf0ca('0x3'));var rp=require(_0xf0ca('0x4'));var moment=require(_0xf0ca('0x5'));var BPromise=require(_0xf0ca('0x6'));var Mustache=require(_0xf0ca('0x7'));var util=require('util');var path=require(_0xf0ca('0x8'));var sox=require(_0xf0ca('0x9'));var csv=require(_0xf0ca('0xa'));var ejs=require(_0xf0ca('0xb'));var fs=require('fs');var fs_extra=require(_0xf0ca('0xc'));var _=require(_0xf0ca('0xd'));var squel=require(_0xf0ca('0xe'));var crypto=require(_0xf0ca('0xf'));var jsforce=require(_0xf0ca('0x10'));var deskjs=require(_0xf0ca('0x11'));var toCsv=require(_0xf0ca('0xa'));var querystring=require(_0xf0ca('0x12'));var Papa=require(_0xf0ca('0x13'));var Redis=require(_0xf0ca('0x14'));var authService=require(_0xf0ca('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xf0ca('0x16'));var hardwareService=require(_0xf0ca('0x17'));var logger=require(_0xf0ca('0x18'))(_0xf0ca('0x19'));var utils=require(_0xf0ca('0x1a'));var config=require(_0xf0ca('0x1b'));var licenseUtil=require(_0xf0ca('0x1c'));var db=require(_0xf0ca('0x1d'))['db'];config['redis']=_[_0xf0ca('0x1e')](config[_0xf0ca('0x1f')],{'host':_0xf0ca('0x20'),'port':0x18eb});var socket=require(_0xf0ca('0x21'))(new Redis(config[_0xf0ca('0x1f')]));require(_0xf0ca('0x22'))[_0xf0ca('0x23')](socket);function respondWithStatusCode(_0x5a58aa,_0xecf980){_0xecf980=_0xecf980||0xcc;return function(_0x1962db){if(_0x1962db){return _0x5a58aa['sendStatus'](_0xecf980);}return _0x5a58aa[_0xf0ca('0x24')](_0xecf980)[_0xf0ca('0x25')]();};}function respondWithResult(_0x20b49b,_0x5188a0){_0x5188a0=_0x5188a0||0xc8;return function(_0x1e6243){if(_0x1e6243){return _0x20b49b[_0xf0ca('0x24')](_0x5188a0)['json'](_0x1e6243);}};}function respondWithFilteredResult(_0x53e8a5,_0x34ee44){return function(_0x48906d){if(_0x48906d){var _0x4dedae=typeof _0x34ee44['offset']===_0xf0ca('0x26')&&typeof _0x34ee44[_0xf0ca('0x27')]==='undefined';var _0x32d362=_0x48906d[_0xf0ca('0x28')];var _0x155e92=_0x4dedae?0x0:_0x34ee44[_0xf0ca('0x29')];var _0x1f38c6=_0x4dedae?_0x48906d[_0xf0ca('0x28')]:_0x34ee44[_0xf0ca('0x29')]+_0x34ee44[_0xf0ca('0x27')];var _0x54c012;if(_0x1f38c6>=_0x32d362){_0x1f38c6=_0x32d362;_0x54c012=0xc8;}else{_0x54c012=0xce;}_0x53e8a5[_0xf0ca('0x24')](_0x54c012);return _0x53e8a5[_0xf0ca('0x2a')]('Content-Range',_0x155e92+'-'+_0x1f38c6+'/'+_0x32d362)[_0xf0ca('0x2b')](_0x48906d);}return null;};}function patchUpdates(_0x270928){return function(_0x5d1897){try{jsonpatch[_0xf0ca('0x2c')](_0x5d1897,_0x270928,!![]);}catch(_0x855a93){return BPromise[_0xf0ca('0x2d')](_0x855a93);}return _0x5d1897[_0xf0ca('0x2e')]();};}function saveUpdates(_0x9f62ed,_0x3c141e){return function(_0x57c2aa){if(_0x57c2aa){return _0x57c2aa[_0xf0ca('0x2f')](_0x9f62ed)[_0xf0ca('0x30')](function(_0x11e8d6){return _0x11e8d6;});}return null;};}function removeEntity(_0x11d4d6,_0x45cc37){return function(_0x2433a9){if(_0x2433a9){return _0x2433a9[_0xf0ca('0x31')]()[_0xf0ca('0x30')](function(){var _0x2d3399=_0x2433a9[_0xf0ca('0x32')]({'plain':!![]});var _0x4a902c=_0xf0ca('0x33');return db[_0xf0ca('0x34')]['destroy']({'where':{'type':_0x4a902c,'resourceId':_0x2d3399['id']}})[_0xf0ca('0x30')](function(){return _0x2433a9;});})[_0xf0ca('0x30')](function(){_0x11d4d6[_0xf0ca('0x24')](0xcc)[_0xf0ca('0x25')]();});}};}function handleEntityNotFound(_0x24551f,_0x4c8d59){return function(_0x19b1b9){if(!_0x19b1b9){_0x24551f[_0xf0ca('0x35')](0x194);}return _0x19b1b9;};}function handleError(_0x1a8d06,_0x417a68){_0x417a68=_0x417a68||0x1f4;return function(_0x5a6e71){logger[_0xf0ca('0x36')](_0x5a6e71[_0xf0ca('0x37')]);if(_0x5a6e71[_0xf0ca('0x38')]){delete _0x5a6e71[_0xf0ca('0x38')];}_0x1a8d06[_0xf0ca('0x24')](_0x417a68)['send'](_0x5a6e71);};}exports[_0xf0ca('0x39')]=function(_0x28832f,_0xa067f6){var _0x190370={},_0x143173={},_0x219bce={'count':0x0,'rows':[]};var _0x54c391=_[_0xf0ca('0x3a')](db['FaxQueue'][_0xf0ca('0x3b')],function(_0x5cfa7b){return{'name':_0x5cfa7b[_0xf0ca('0x3c')],'type':_0x5cfa7b['type'][_0xf0ca('0x3d')]};});_0x143173[_0xf0ca('0x3e')]=_['map'](_0x54c391,_0xf0ca('0x38'));_0x143173[_0xf0ca('0x3f')]=_[_0xf0ca('0x40')](_0x28832f[_0xf0ca('0x3f')]);_0x143173['filters']=_[_0xf0ca('0x41')](_0x143173[_0xf0ca('0x3e')],_0x143173[_0xf0ca('0x3f')]);_0x190370[_0xf0ca('0x42')]=_[_0xf0ca('0x41')](_0x143173[_0xf0ca('0x3e')],qs[_0xf0ca('0x43')](_0x28832f[_0xf0ca('0x3f')]['fields']));_0x190370['attributes']=_0x190370['attributes']['length']?_0x190370[_0xf0ca('0x42')]:_0x143173[_0xf0ca('0x3e')];if(!_0x28832f[_0xf0ca('0x3f')][_0xf0ca('0x44')](_0xf0ca('0x45'))){_0x190370['limit']=qs[_0xf0ca('0x27')](_0x28832f[_0xf0ca('0x3f')][_0xf0ca('0x27')]);_0x190370[_0xf0ca('0x29')]=qs['offset'](_0x28832f[_0xf0ca('0x3f')]['offset']);}_0x190370[_0xf0ca('0x46')]=qs[_0xf0ca('0x47')](_0x28832f['query']['sort']);_0x190370['where']=qs['filters'](_[_0xf0ca('0x48')](_0x28832f[_0xf0ca('0x3f')],_0x143173['filters']),_0x54c391);if(_0x28832f[_0xf0ca('0x3f')]['filter']){_0x190370[_0xf0ca('0x49')]=_[_0xf0ca('0x4a')](_0x190370[_0xf0ca('0x49')],{'$or':_['map'](_0x54c391,function(_0x11d59b){if(_0x11d59b[_0xf0ca('0x4b')]!==_0xf0ca('0x4c')){var _0x177318={};_0x177318[_0x11d59b[_0xf0ca('0x38')]]={'$like':'%'+_0x28832f[_0xf0ca('0x3f')][_0xf0ca('0x4d')]+'%'};return _0x177318;}})});}_0x190370=_[_0xf0ca('0x4a')]({},_0x190370,_0x28832f[_0xf0ca('0x4e')]);var _0x20243c={'where':_0x190370['where']};return db[_0xf0ca('0x4f')][_0xf0ca('0x28')](_0x20243c)[_0xf0ca('0x30')](function(_0x3eb8d0){_0x219bce[_0xf0ca('0x28')]=_0x3eb8d0;if(_0x28832f['query'][_0xf0ca('0x50')]){_0x190370[_0xf0ca('0x51')]=[{'all':!![]}];}return db[_0xf0ca('0x4f')][_0xf0ca('0x52')](_0x190370);})[_0xf0ca('0x30')](function(_0x59fa3b){_0x219bce[_0xf0ca('0x53')]=_0x59fa3b;return _0x219bce;})['then'](respondWithFilteredResult(_0xa067f6,_0x190370))['catch'](handleError(_0xa067f6,null));};exports[_0xf0ca('0x54')]=function(_0x525404,_0xa19590){var _0x4097ab={'raw':!![],'where':{'id':_0x525404['params']['id']}},_0x26ded9={};_0x26ded9[_0xf0ca('0x3e')]=_[_0xf0ca('0x40')](db[_0xf0ca('0x4f')][_0xf0ca('0x3b')]);_0x26ded9[_0xf0ca('0x3f')]=_[_0xf0ca('0x40')](_0x525404[_0xf0ca('0x3f')]);_0x26ded9[_0xf0ca('0x55')]=_[_0xf0ca('0x41')](_0x26ded9['model'],_0x26ded9[_0xf0ca('0x3f')]);_0x4097ab[_0xf0ca('0x42')]=_[_0xf0ca('0x41')](_0x26ded9['model'],qs[_0xf0ca('0x43')](_0x525404[_0xf0ca('0x3f')][_0xf0ca('0x43')]));_0x4097ab[_0xf0ca('0x42')]=_0x4097ab[_0xf0ca('0x42')][_0xf0ca('0x56')]?_0x4097ab[_0xf0ca('0x42')]:_0x26ded9[_0xf0ca('0x3e')];if(_0x525404[_0xf0ca('0x3f')][_0xf0ca('0x50')]){_0x4097ab['include']=[{'all':!![]}];}_0x4097ab=_[_0xf0ca('0x4a')]({},_0x4097ab,_0x525404[_0xf0ca('0x4e')]);return db[_0xf0ca('0x4f')][_0xf0ca('0x57')](_0x4097ab)[_0xf0ca('0x30')](handleEntityNotFound(_0xa19590,null))[_0xf0ca('0x30')](respondWithResult(_0xa19590,null))[_0xf0ca('0x58')](handleError(_0xa19590,null));};exports[_0xf0ca('0x59')]=function(_0x22a0ba,_0x578c11){return db[_0xf0ca('0x4f')][_0xf0ca('0x59')](_0x22a0ba['body'],{})[_0xf0ca('0x30')](function(_0x56424f){var _0xcbe72c=_0x22a0ba[_0xf0ca('0x5a')][_0xf0ca('0x32')]({'plain':!![]});if(!_0xcbe72c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xcbe72c[_0xf0ca('0x5b')]===_0xf0ca('0x5a')){var _0x3f77c4=_0x56424f['get']({'plain':!![]});var _0x382901='FaxQueues';return db[_0xf0ca('0x5c')]['find']({'where':{'name':_0x382901,'userProfileId':_0xcbe72c['userProfileId']},'raw':!![]})['then'](function(_0x1883a0){if(_0x1883a0&&_0x1883a0[_0xf0ca('0x5d')]===0x0){return db[_0xf0ca('0x34')][_0xf0ca('0x59')]({'name':_0x3f77c4[_0xf0ca('0x38')],'resourceId':_0x3f77c4['id'],'type':_0x1883a0[_0xf0ca('0x38')],'sectionId':_0x1883a0['id']},{})[_0xf0ca('0x30')](function(){return _0x56424f;});}else{return _0x56424f;}})['catch'](function(_0x9ca603){logger[_0xf0ca('0x36')](_0xf0ca('0x5e'),_0x9ca603);throw _0x9ca603;});}return _0x56424f;})[_0xf0ca('0x30')](respondWithResult(_0x578c11,0xc9))[_0xf0ca('0x58')](handleError(_0x578c11,null));};exports[_0xf0ca('0x2f')]=function(_0x3ef354,_0x1749e5){if(_0x3ef354[_0xf0ca('0x5f')]['id']){delete _0x3ef354['body']['id'];}return db['FaxQueue'][_0xf0ca('0x57')]({'where':{'id':_0x3ef354[_0xf0ca('0x60')]['id']}})[_0xf0ca('0x30')](handleEntityNotFound(_0x1749e5,null))[_0xf0ca('0x30')](saveUpdates(_0x3ef354[_0xf0ca('0x5f')],null))[_0xf0ca('0x30')](respondWithResult(_0x1749e5,null))[_0xf0ca('0x58')](handleError(_0x1749e5,null));};exports[_0xf0ca('0x31')]=function(_0x1e4243,_0x36f2c8){return db['FaxQueue']['find']({'where':{'id':_0x1e4243[_0xf0ca('0x60')]['id']}})[_0xf0ca('0x30')](handleEntityNotFound(_0x36f2c8,null))[_0xf0ca('0x30')](removeEntity(_0x36f2c8,null))[_0xf0ca('0x58')](handleError(_0x36f2c8,null));};exports[_0xf0ca('0x61')]=function(_0x3ce1a1,_0x413794){return db[_0xf0ca('0x4f')][_0xf0ca('0x61')]()[_0xf0ca('0x30')](respondWithResult(_0x413794,null))[_0xf0ca('0x58')](handleError(_0x413794,null));};exports['getMembers']=function(_0xfa2436,_0xb6ed34,_0x135aed){var _0x581765={'raw':!![],'where':{}},_0x2cb570={},_0xf4d07;return db[_0xf0ca('0x4f')][_0xf0ca('0x62')]({'where':{'id':_0xfa2436[_0xf0ca('0x60')]['id']}})['then'](handleEntityNotFound(_0xb6ed34,null))[_0xf0ca('0x30')](function(_0x131cba){if(_0x131cba){_0xf4d07=_0x131cba[_0xf0ca('0x32')]({'plain':!![]});_0x2cb570[_0xf0ca('0x3e')]=_[_0xf0ca('0x40')](db['UserFaxQueue'][_0xf0ca('0x3b')]);_0x2cb570[_0xf0ca('0x3f')]=_['keys'](_0xfa2436[_0xf0ca('0x3f')]);_0x2cb570[_0xf0ca('0x55')]=_[_0xf0ca('0x41')](_0x2cb570['model'],_0x2cb570[_0xf0ca('0x3f')]);_0x581765[_0xf0ca('0x42')]=_['intersection'](_0x2cb570[_0xf0ca('0x3e')],qs[_0xf0ca('0x43')](_0xfa2436['query'][_0xf0ca('0x43')]));_0x581765[_0xf0ca('0x42')]=_0x581765['attributes'][_0xf0ca('0x56')]?_0x581765[_0xf0ca('0x42')]:_0x2cb570[_0xf0ca('0x3e')];if(!_0xfa2436[_0xf0ca('0x3f')][_0xf0ca('0x44')](_0xf0ca('0x45'))){_0x581765[_0xf0ca('0x27')]=qs[_0xf0ca('0x27')](_0xfa2436[_0xf0ca('0x3f')]['limit']);_0x581765[_0xf0ca('0x29')]=qs[_0xf0ca('0x29')](_0xfa2436[_0xf0ca('0x3f')]['offset']);}_0x581765[_0xf0ca('0x46')]=qs[_0xf0ca('0x47')](_0xfa2436['query'][_0xf0ca('0x47')]);_0x581765[_0xf0ca('0x49')]=qs[_0xf0ca('0x55')](_[_0xf0ca('0x48')](_0xfa2436['query'],_0x2cb570[_0xf0ca('0x55')]));_0x581765[_0xf0ca('0x49')][_0xf0ca('0x63')]=_0x131cba['id'];if(_0xfa2436[_0xf0ca('0x3f')]['filter']){_0x581765[_0xf0ca('0x49')]=_['merge'](_0x581765[_0xf0ca('0x49')],{'$or':_[_0xf0ca('0x3a')](_0x581765['attributes'],function(_0x33b2f7){var _0xa49432={};_0xa49432[_0x33b2f7]={'$like':'%'+_0xfa2436[_0xf0ca('0x3f')]['filter']+'%'};return _0xa49432;})});}_0x581765=_['merge']({},_0x581765,_0xfa2436[_0xf0ca('0x4e')]);return db['UserFaxQueue']['findAll'](_0x581765);}})['then'](function(_0x3ce7cb){if(_0x3ce7cb){return db['User']['findAndCountAll']({'where':{'id':_[_0xf0ca('0x3a')](_0x3ce7cb,_0xf0ca('0x64')),'role':_0xf0ca('0x65')},'attributes':['id',_0xf0ca('0x38'),_0xf0ca('0x66'),_0xf0ca('0x67'),_0xf0ca('0x68')]});}})[_0xf0ca('0x30')](function(_0x1d839a){if(_0x1d839a){return{'count':_0x1d839a[_0xf0ca('0x28')],'rows':_[_0xf0ca('0x3a')](_0x1d839a[_0xf0ca('0x53')],function(_0x2c1620){return{'membername':_0x2c1620['name'],'UserId':_0x2c1620['id'],'queue_name':_0xf4d07[_0xf0ca('0x38')],'FaxQueueId':_0xf4d07['id'],'interface':util[_0xf0ca('0x69')](_0xf0ca('0x6a'),_0xf0ca('0x6b'),_0x2c1620[_0xf0ca('0x38')]),'penalty':0x0,'paused':_0x2c1620[_0xf0ca('0x66')],'createdAt':_0x2c1620[_0xf0ca('0x68')],'updatedAt':_0x2c1620[_0xf0ca('0x67')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf0ca('0x30')](respondWithFilteredResult(_0xb6ed34,_0x581765))['catch'](handleError(_0xb6ed34,null));};exports[_0xf0ca('0x6c')]=function(_0x855c56,_0xbe38d2,_0x1c34a9){var _0x5c4eec={};var _0x58e36c={};var _0x2e0fcb;var _0x44249c;return db[_0xf0ca('0x4f')][_0xf0ca('0x62')]({'where':{'id':_0x855c56[_0xf0ca('0x60')]['id']}})[_0xf0ca('0x30')](handleEntityNotFound(_0xbe38d2,null))['then'](function(_0x856a31){if(_0x856a31){_0x2e0fcb=_0x856a31;_0x58e36c[_0xf0ca('0x3e')]=_[_0xf0ca('0x40')](db[_0xf0ca('0x6d')][_0xf0ca('0x3b')]);_0x58e36c[_0xf0ca('0x3f')]=_['keys'](_0x855c56[_0xf0ca('0x3f')]);_0x58e36c[_0xf0ca('0x55')]=_['intersection'](_0x58e36c[_0xf0ca('0x3e')],_0x58e36c[_0xf0ca('0x3f')]);_0x5c4eec[_0xf0ca('0x42')]=_['intersection'](_0x58e36c[_0xf0ca('0x3e')],qs[_0xf0ca('0x43')](_0x855c56[_0xf0ca('0x3f')][_0xf0ca('0x43')]));_0x5c4eec[_0xf0ca('0x42')]=_0x5c4eec[_0xf0ca('0x42')][_0xf0ca('0x56')]?_0x5c4eec[_0xf0ca('0x42')]:_0x58e36c[_0xf0ca('0x3e')];_0x5c4eec[_0xf0ca('0x46')]=qs[_0xf0ca('0x47')](_0x855c56['query']['sort']);_0x5c4eec[_0xf0ca('0x49')]=qs[_0xf0ca('0x55')](_['pick'](_0x855c56['query'],_0x58e36c['filters']));if(_0x855c56[_0xf0ca('0x3f')][_0xf0ca('0x4d')]){_0x5c4eec[_0xf0ca('0x49')]=_[_0xf0ca('0x4a')](_0x5c4eec[_0xf0ca('0x49')],{'$or':_[_0xf0ca('0x3a')](_0x5c4eec[_0xf0ca('0x42')],function(_0x1cd571){var _0x2b0128={};_0x2b0128[_0x1cd571]={'$like':'%'+_0x855c56[_0xf0ca('0x3f')][_0xf0ca('0x4d')]+'%'};return _0x2b0128;})});}_0x5c4eec=_[_0xf0ca('0x4a')]({},_0x5c4eec,_0x855c56['options']);return _0x2e0fcb['getTeams'](_0x5c4eec);}})['then'](function(_0x2e93d8){if(_0x2e93d8){_0x44249c=_0x2e93d8[_0xf0ca('0x56')];if(!_0x855c56[_0xf0ca('0x3f')][_0xf0ca('0x44')]('nolimit')){_0x5c4eec['limit']=qs[_0xf0ca('0x27')](_0x855c56['query'][_0xf0ca('0x27')]);_0x5c4eec[_0xf0ca('0x29')]=qs[_0xf0ca('0x29')](_0x855c56[_0xf0ca('0x3f')]['offset']);}return _0x2e0fcb[_0xf0ca('0x6c')](_0x5c4eec);}})['then'](function(_0x3c3952){if(_0x3c3952){return _0x3c3952?{'count':_0x44249c,'rows':_0x3c3952}:null;}})['then'](respondWithResult(_0xbe38d2,null))[_0xf0ca('0x58')](handleError(_0xbe38d2,null));};exports[_0xf0ca('0x6e')]=function(_0x593c42,_0x2733e6,_0x3edacb){var _0x2ecf2d=_0x593c42[_0xf0ca('0x5f')][_0xf0ca('0x6f')];return db[_0xf0ca('0x6d')]['findAll']({'where':{'id':_0x2ecf2d},'attributes':['id'],'include':[{'model':db[_0xf0ca('0x70')],'as':_0xf0ca('0x71'),'attributes':['id',_0xf0ca('0x38'),_0xf0ca('0x72'),_0xf0ca('0x73'),_0xf0ca('0x74')],'raw':!![]}]})[_0xf0ca('0x30')](function(_0x47a4ba){if(_0x47a4ba){var _0xa829f2=_[_0xf0ca('0x75')](_0x47a4ba,function(_0x4d278a){var _0x3ebf1c=_0x4d278a[_0xf0ca('0x32')]({'plain':!![]});return _0x3ebf1c[_0xf0ca('0x71')];});return db[_0xf0ca('0x4f')][_0xf0ca('0x57')]({'where':{'id':_0x593c42[_0xf0ca('0x60')]['id']}})[_0xf0ca('0x30')](function(_0x2ae210){return db[_0xf0ca('0x76')][_0xf0ca('0x77')](function(_0x3b6941){return _0x2ae210[_0xf0ca('0x6e')](_0x2ecf2d,{'transaction':_0x3b6941})['then'](function(){return BPromise[_0xf0ca('0x78')](_0xa829f2,function(_0xd59ba0){return db[_0xf0ca('0x79')][_0xf0ca('0x7a')]({'where':{'UserId':_0xd59ba0['id'],'FaxQueueId':_0x593c42[_0xf0ca('0x60')]['id']},'transaction':_0x3b6941});});})[_0xf0ca('0x30')](function(){_0xa829f2[_0xf0ca('0x7b')](function(_0x1aeddc){socket[_0xf0ca('0x7c')](_0xf0ca('0x7d'),{'UserId':_0x1aeddc['id'],'FaxQueueId':_0x2ae210['id']});});});});});}})['then'](respondWithStatusCode(_0x2733e6,null))[_0xf0ca('0x58')](handleError(_0x2733e6,null));};exports['removeTeams']=function(_0x4e73c5,_0x461207,_0x3fcd9b){return db['Team'][_0xf0ca('0x52')]({'where':{'id':_0x4e73c5[_0xf0ca('0x3f')][_0xf0ca('0x6f')]},'attributes':['id'],'include':[{'model':db[_0xf0ca('0x70')],'as':_0xf0ca('0x71'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x461207,null))[_0xf0ca('0x30')](function(_0x4ec19b){var _0x1e6e9=_[_0xf0ca('0x3a')](_0x4ec19b,'id');var _0x2876e0=[];var _0x73a7f3=[];var _0x5a69d4=squel[_0xf0ca('0x7e')]();_0x5a69d4[_0xf0ca('0x7f')](_0xf0ca('0x80'))['from'](_0xf0ca('0x81'),'tq')['join'](_0xf0ca('0x82'),'ut',_0xf0ca('0x83'))['where']('FaxQueueId\x20=\x20?',_0x4e73c5[_0xf0ca('0x60')]['id']);for(var _0x5c42d4=0x0;_0x5c42d4<_0x4ec19b[_0xf0ca('0x56')];_0x5c42d4+=0x1){let _0x15fa4a=_0x4ec19b[_0x5c42d4];for(var _0xf41037=0x0;_0xf41037<_0x15fa4a[_0xf0ca('0x71')][_0xf0ca('0x56')];_0xf41037+=0x1){let _0x40a0ee=_0x15fa4a[_0xf0ca('0x71')][_0xf41037];var _0x2b7d82=_0x5a69d4[_0xf0ca('0x84')]();_0x2b7d82[_0xf0ca('0x49')]('ut.UserId\x20=\x20?',_0x40a0ee['id']);_0x73a7f3['push'](db[_0xf0ca('0x76')]['query'](_0x2b7d82[_0xf0ca('0x85')](),{'type':db[_0xf0ca('0x76')][_0xf0ca('0x86')]['SELECT']})['then'](function(_0x18f9ac){if(_0x18f9ac[_0xf0ca('0x56')]===0x1){return _0x40a0ee['id'];}else{var _0x2fb457=_[_0xf0ca('0x87')](_[_0xf0ca('0x3a')](_0x18f9ac,_0xf0ca('0x88')),function(_0x23b6d8){return _[_0xf0ca('0x89')](_0x1e6e9,_0x23b6d8);});if(_0x2fb457){return _0x40a0ee['id'];}}}));}}return BPromise[_0xf0ca('0x8a')](_0x73a7f3)[_0xf0ca('0x30')](function(_0x3376c7){_0x2876e0=_(_0x2876e0)['union'](_0x3376c7)[_0xf0ca('0x8b')]()['value']();return db[_0xf0ca('0x4f')][_0xf0ca('0x57')]({'where':{'id':_0x4e73c5[_0xf0ca('0x60')]['id']}})[_0xf0ca('0x30')](function(_0x18f131){return db[_0xf0ca('0x76')]['transaction'](function(_0x39a464){return _0x18f131[_0xf0ca('0x8c')](_0x4e73c5[_0xf0ca('0x3f')][_0xf0ca('0x6f')],{'transaction':_0x39a464})['then'](function(){if(!_[_0xf0ca('0x8d')](_0x2876e0)){return _0x18f131['removeAgents'](_0x2876e0,{'transaction':_0x39a464});}})[_0xf0ca('0x30')](function(){_0x2876e0[_0xf0ca('0x7b')](function(_0x518eaf){socket[_0xf0ca('0x7c')](_0xf0ca('0x8e'),{'UserId':_0x518eaf,'FaxQueueId':_0x18f131['id']});});});});});});})[_0xf0ca('0x30')](respondWithStatusCode(_0x461207,null))['catch'](handleError(_0x461207,null));};exports[_0xf0ca('0x8f')]=function(_0x45d25a,_0x2cd8e5,_0x5aad4c){return db['FaxQueue'][_0xf0ca('0x57')]({'where':{'id':_0x45d25a[_0xf0ca('0x60')]['id']}})['then'](handleEntityNotFound(_0x2cd8e5,null))[_0xf0ca('0x30')](function(_0x5de79e){if(_0x5de79e){return _0x5de79e[_0xf0ca('0x8f')](_0x45d25a[_0xf0ca('0x5f')]['ids'],_[_0xf0ca('0x90')](_0x45d25a[_0xf0ca('0x5f')],[_0xf0ca('0x6f'),'id'])||{})['spread'](function(_0x4ff343){for(var _0x9db3=0x0;_0x9db3<_0x45d25a[_0xf0ca('0x5f')][_0xf0ca('0x6f')]['length'];_0x9db3+=0x1){socket[_0xf0ca('0x7c')]('userFaxQueue:save',{'UserId':Number(_0x45d25a['body'][_0xf0ca('0x6f')][_0x9db3]),'FaxQueueId':Number(_0x45d25a[_0xf0ca('0x60')]['id'])});}return _0x4ff343;});}})[_0xf0ca('0x30')](respondWithResult(_0x2cd8e5,null))['catch'](handleError(_0x2cd8e5,null));};exports[_0xf0ca('0x91')]=function(_0x229b27,_0x545008,_0x2c2fda){return db[_0xf0ca('0x4f')]['find']({'where':{'id':_0x229b27['params']['id']}})['then'](handleEntityNotFound(_0x545008,null))['then'](function(_0x16700b){if(_0x16700b){return _0x16700b[_0xf0ca('0x91')](_0x229b27[_0xf0ca('0x3f')]['ids'])[_0xf0ca('0x30')](function(){if(_['isArray'](_0x229b27[_0xf0ca('0x3f')][_0xf0ca('0x6f')])){for(var _0x53f164=0x0;_0x53f164<_0x229b27[_0xf0ca('0x3f')]['ids']['length'];_0x53f164+=0x1){socket[_0xf0ca('0x7c')](_0xf0ca('0x8e'),{'UserId':Number(_0x229b27[_0xf0ca('0x3f')]['ids'][_0x53f164]),'FaxQueueId':Number(_0x229b27['params']['id'])});}}else{socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x229b27['query'][_0xf0ca('0x6f')]),'FaxQueueId':Number(_0x229b27[_0xf0ca('0x60')]['id'])});}});}})[_0xf0ca('0x30')](respondWithStatusCode(_0x545008,null))[_0xf0ca('0x58')](handleError(_0x545008,null));};exports[_0xf0ca('0x92')]=function(_0x63fecd,_0x2a0c66,_0x56ed8d){var _0x30cc34={};var _0x2115e5={};var _0x20c378;var _0x3432b5;return db[_0xf0ca('0x4f')][_0xf0ca('0x62')]({'where':{'id':_0x63fecd[_0xf0ca('0x60')]['id']}})[_0xf0ca('0x30')](handleEntityNotFound(_0x2a0c66,null))[_0xf0ca('0x30')](function(_0x45bf6b){if(_0x45bf6b){_0x20c378=_0x45bf6b;_0x2115e5[_0xf0ca('0x3e')]=_['keys'](db[_0xf0ca('0x70')][_0xf0ca('0x3b')]);_0x2115e5['query']=_[_0xf0ca('0x40')](_0x63fecd[_0xf0ca('0x3f')]);_0x2115e5[_0xf0ca('0x55')]=_['intersection'](_0x2115e5[_0xf0ca('0x3e')],_0x2115e5[_0xf0ca('0x3f')]);_0x30cc34['attributes']=_['intersection'](_0x2115e5['model'],qs[_0xf0ca('0x43')](_0x63fecd[_0xf0ca('0x3f')]['fields']));_0x30cc34[_0xf0ca('0x42')]=_0x30cc34[_0xf0ca('0x42')][_0xf0ca('0x56')]?_0x30cc34['attributes']:_0x2115e5[_0xf0ca('0x3e')];_0x30cc34['order']=qs[_0xf0ca('0x47')](_0x63fecd[_0xf0ca('0x3f')][_0xf0ca('0x47')]);_0x30cc34[_0xf0ca('0x49')]=qs[_0xf0ca('0x55')](_[_0xf0ca('0x48')](_0x63fecd[_0xf0ca('0x3f')],_0x2115e5[_0xf0ca('0x55')]));if(_0x63fecd[_0xf0ca('0x3f')][_0xf0ca('0x4d')]){_0x30cc34[_0xf0ca('0x49')]=_[_0xf0ca('0x4a')](_0x30cc34[_0xf0ca('0x49')],{'$or':_[_0xf0ca('0x3a')](_0x30cc34['attributes'],function(_0x3ad78c){var _0x5e0b67={};_0x5e0b67[_0x3ad78c]={'$like':'%'+_0x63fecd[_0xf0ca('0x3f')][_0xf0ca('0x4d')]+'%'};return _0x5e0b67;})});}_0x30cc34=_['merge']({},_0x30cc34,_0x63fecd[_0xf0ca('0x4e')]);return _0x20c378[_0xf0ca('0x92')](_0x30cc34);}})['then'](function(_0x50eefb){if(_0x50eefb){_0x3432b5=_0x50eefb[_0xf0ca('0x56')];if(!_0x63fecd[_0xf0ca('0x3f')][_0xf0ca('0x44')](_0xf0ca('0x45'))){_0x30cc34[_0xf0ca('0x27')]=qs['limit'](_0x63fecd[_0xf0ca('0x3f')][_0xf0ca('0x27')]);_0x30cc34[_0xf0ca('0x29')]=qs['offset'](_0x63fecd['query'][_0xf0ca('0x29')]);}return _0x20c378[_0xf0ca('0x92')](_0x30cc34);}})[_0xf0ca('0x30')](function(_0x21e5a3){if(_0x21e5a3){return _0x21e5a3?{'count':_0x3432b5,'rows':_0x21e5a3}:null;}})[_0xf0ca('0x30')](respondWithResult(_0x2a0c66,null))[_0xf0ca('0x58')](handleError(_0x2a0c66,null));}; \ No newline at end of file diff --git a/server/api/faxQueue/faxQueue.events.js b/server/api/faxQueue/faxQueue.events.js new file mode 100644 index 0000000..c6cb750 --- /dev/null +++ b/server/api/faxQueue/faxQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7662=['hook','exports','../../mysqldb','FaxQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3e27c9,_0x405b8e){var _0x190107=function(_0x4ffbb5){while(--_0x4ffbb5){_0x3e27c9['push'](_0x3e27c9['shift']());}};_0x190107(++_0x405b8e);}(_0x7662,0xde));var _0x2766=function(_0x591a2d,_0x29f758){_0x591a2d=_0x591a2d-0x0;var _0x27cd88=_0x7662[_0x591a2d];return _0x27cd88;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x2766('0x0'))['db'][_0x2766('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x2766('0x2')](0x0);var events={'afterCreate':_0x2766('0x3'),'afterUpdate':_0x2766('0x4'),'afterDestroy':_0x2766('0x5')};function emitEvent(_0x542c6e){return function(_0x343af4,_0x7bad87,_0x1bc69e){FaxQueueEvents[_0x2766('0x6')](_0x542c6e+':'+_0x343af4['id'],_0x343af4);FaxQueueEvents['emit'](_0x542c6e,_0x343af4);_0x1bc69e(null);};}for(var e in events){if(events[_0x2766('0x7')](e)){var event=events[e];FaxQueue[_0x2766('0x8')](e,emitEvent(event));}}module[_0x2766('0x9')]=FaxQueueEvents; \ No newline at end of file diff --git a/server/api/faxQueue/faxQueue.model.js b/server/api/faxQueue/faxQueue.model.js new file mode 100644 index 0000000..1ebe0bf --- /dev/null +++ b/server/api/faxQueue/faxQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3f53=['request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','fax_queues','lodash','util','api','bluebird'];(function(_0x2f42d3,_0x362e7a){var _0x25a67e=function(_0x103ce2){while(--_0x103ce2){_0x2f42d3['push'](_0x2f42d3['shift']());}};_0x25a67e(++_0x362e7a);}(_0x3f53,0x193));var _0x33f5=function(_0x58dce3,_0x50e978){_0x58dce3=_0x58dce3-0x0;var _0x55794f=_0x3f53[_0x58dce3];return _0x55794f;};'use strict';var _=require(_0x33f5('0x0'));var util=require(_0x33f5('0x1'));var logger=require('../../config/logger')(_0x33f5('0x2'));var moment=require('moment');var BPromise=require(_0x33f5('0x3'));var rp=require(_0x33f5('0x4'));var fs=require('fs');var path=require(_0x33f5('0x5'));var rimraf=require(_0x33f5('0x6'));var config=require(_0x33f5('0x7'));var attributes=require(_0x33f5('0x8'));module[_0x33f5('0x9')]=function(_0x1b3a49,_0x371a2a){return _0x1b3a49['define']('FaxQueue',attributes,{'tableName':_0x33f5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/faxQueue/faxQueue.rpc.js b/server/api/faxQueue/faxQueue.rpc.js new file mode 100644 index 0000000..593a62f --- /dev/null +++ b/server/api/faxQueue/faxQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1af6=['options','raw','where','attributes','limit','include','map','model','then','catch','ShowFaxQueue','FaxQueue','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','http','redis','defaults','./faxQueue.socket','register','request','info','FaxQueue,\x20%s,\x20%s','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','GetFaxQueue','findAll'];(function(_0x1c367a,_0x4f872b){var _0xc3001f=function(_0x3a53a8){while(--_0x3a53a8){_0x1c367a['push'](_0x1c367a['shift']());}};_0xc3001f(++_0x4f872b);}(_0x1af6,0x108));var _0x61af=function(_0x5c5587,_0x367180){_0x5c5587=_0x5c5587-0x0;var _0x41c868=_0x1af6[_0x5c5587];return _0x41c868;};'use strict';var _=require(_0x61af('0x0'));var util=require(_0x61af('0x1'));var moment=require(_0x61af('0x2'));var BPromise=require(_0x61af('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x61af('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x61af('0x5'))(_0x61af('0x6'));var config=require(_0x61af('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x61af('0x8')]({'port':0x232a});config[_0x61af('0x9')]=_[_0x61af('0xa')](config[_0x61af('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x61af('0x9')]));require(_0x61af('0xb'))[_0x61af('0xc')](socket);function respondWithRpcPromise(_0x4ac6d7,_0x32dc37,_0x228eb6){return new BPromise(function(_0xbdb5d6,_0x195ff2){return client[_0x61af('0xd')](_0x4ac6d7,_0x228eb6)['then'](function(_0x51b327){logger[_0x61af('0xe')](_0x61af('0xf'),_0x32dc37,'request\x20sent');logger[_0x61af('0x10')](_0x61af('0x11'),_0x32dc37,'request\x20sent',JSON[_0x61af('0x12')](_0x51b327));if(_0x51b327[_0x61af('0x13')]){if(_0x51b327[_0x61af('0x13')]['code']===0x1f4){logger[_0x61af('0x13')](_0x61af('0xf'),_0x32dc37,_0x51b327[_0x61af('0x13')]['message']);return _0x195ff2(_0x51b327[_0x61af('0x13')][_0x61af('0x14')]);}logger[_0x61af('0x13')](_0x61af('0xf'),_0x32dc37,_0x51b327[_0x61af('0x13')][_0x61af('0x14')]);return _0xbdb5d6(_0x51b327[_0x61af('0x13')][_0x61af('0x14')]);}else{logger[_0x61af('0xe')](_0x61af('0xf'),_0x32dc37,_0x61af('0x15'));_0xbdb5d6(_0x51b327['result'][_0x61af('0x14')]);}})['catch'](function(_0x3f0c97){logger['error'](_0x61af('0xf'),_0x32dc37,_0x3f0c97);_0x195ff2(_0x3f0c97);});});}exports[_0x61af('0x16')]=function(_0x25e41d){var _0x55f394=this;return new Promise(function(_0x9dfff7,_0x3a8dbb){return db['FaxQueue'][_0x61af('0x17')]({'raw':_0x25e41d[_0x61af('0x18')]?_0x25e41d[_0x61af('0x18')][_0x61af('0x19')]===undefined?!![]:![]:!![],'where':_0x25e41d['options']?_0x25e41d['options'][_0x61af('0x1a')]||null:null,'attributes':_0x25e41d['options']?_0x25e41d['options'][_0x61af('0x1b')]||null:null,'limit':_0x25e41d[_0x61af('0x18')]?_0x25e41d[_0x61af('0x18')][_0x61af('0x1c')]||null:null,'include':_0x25e41d[_0x61af('0x18')]?_0x25e41d[_0x61af('0x18')][_0x61af('0x1d')]?_[_0x61af('0x1e')](_0x25e41d[_0x61af('0x18')]['include'],function(_0x40a1b5){return{'model':db[_0x40a1b5[_0x61af('0x1f')]],'as':_0x40a1b5['as'],'attributes':_0x40a1b5[_0x61af('0x1b')],'include':_0x40a1b5['include']?_[_0x61af('0x1e')](_0x40a1b5[_0x61af('0x1d')],function(_0x110873){return{'model':db[_0x110873[_0x61af('0x1f')]],'as':_0x110873['as'],'attributes':_0x110873['attributes'],'include':_0x110873[_0x61af('0x1d')]?_[_0x61af('0x1e')](_0x110873['include'],function(_0xb4c2c5){return{'model':db[_0xb4c2c5[_0x61af('0x1f')]],'as':_0xb4c2c5['as'],'attributes':_0xb4c2c5[_0x61af('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x61af('0x20')](function(_0x473dc1){logger[_0x61af('0xe')](_0x61af('0x16'),_0x25e41d);logger[_0x61af('0x10')]('GetFaxQueue',_0x25e41d,JSON[_0x61af('0x12')](_0x473dc1));_0x9dfff7(_0x473dc1);})[_0x61af('0x21')](function(_0x38d05e){logger[_0x61af('0x13')](_0x61af('0x16'),_0x38d05e[_0x61af('0x14')],_0x25e41d);_0x3a8dbb(_0x55f394[_0x61af('0x13')](0x1f4,_0x38d05e[_0x61af('0x14')]));});});};exports[_0x61af('0x22')]=function(_0x36e68d){var _0x49f8cf=this;return new Promise(function(_0x16410a,_0x105c3e){return db[_0x61af('0x23')]['find']({'raw':_0x36e68d[_0x61af('0x18')]?_0x36e68d['options'][_0x61af('0x19')]===undefined?!![]:![]:!![],'where':_0x36e68d[_0x61af('0x18')]?_0x36e68d[_0x61af('0x18')][_0x61af('0x1a')]||null:null,'attributes':_0x36e68d[_0x61af('0x18')]?_0x36e68d[_0x61af('0x18')]['attributes']||null:null,'include':_0x36e68d[_0x61af('0x18')]?_0x36e68d[_0x61af('0x18')]['include']?_[_0x61af('0x1e')](_0x36e68d[_0x61af('0x18')]['include'],function(_0x10b7bb){return{'model':db[_0x10b7bb['model']],'as':_0x10b7bb['as'],'attributes':_0x10b7bb['attributes'],'include':_0x10b7bb[_0x61af('0x1d')]?_['map'](_0x10b7bb[_0x61af('0x1d')],function(_0xf08351){return{'model':db[_0xf08351[_0x61af('0x1f')]],'as':_0xf08351['as'],'attributes':_0xf08351[_0x61af('0x1b')],'include':_0xf08351['include']?_[_0x61af('0x1e')](_0xf08351['include'],function(_0x1eaae8){return{'model':db[_0x1eaae8[_0x61af('0x1f')]],'as':_0x1eaae8['as'],'attributes':_0x1eaae8[_0x61af('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29928a){logger[_0x61af('0xe')](_0x61af('0x22'),_0x36e68d);logger[_0x61af('0x10')](_0x61af('0x22'),_0x36e68d,JSON[_0x61af('0x12')](_0x29928a));_0x16410a(_0x29928a);})['catch'](function(_0xc3b7c9){logger['error']('ShowFaxQueue',_0xc3b7c9[_0x61af('0x14')],_0x36e68d);_0x105c3e(_0x49f8cf[_0x61af('0x13')](0x1f4,_0xc3b7c9['message']));});});}; \ No newline at end of file diff --git a/server/api/faxQueue/faxQueue.socket.js b/server/api/faxQueue/faxQueue.socket.js new file mode 100644 index 0000000..1a55f05 --- /dev/null +++ b/server/api/faxQueue/faxQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdc12=['remove','update','emit','removeListener','length','./faxQueue.events','save'];(function(_0x4e9f29,_0x1bbcbf){var _0x8e1ab3=function(_0x4a4e6b){while(--_0x4a4e6b){_0x4e9f29['push'](_0x4e9f29['shift']());}};_0x8e1ab3(++_0x1bbcbf);}(_0xdc12,0x10f));var _0x2dc1=function(_0x1e82cb,_0xd849d0){_0x1e82cb=_0x1e82cb-0x0;var _0x57bbda=_0xdc12[_0x1e82cb];return _0x57bbda;};'use strict';var FaxQueueEvents=require(_0x2dc1('0x0'));var events=[_0x2dc1('0x1'),_0x2dc1('0x2'),_0x2dc1('0x3')];function createListener(_0x2c15fd,_0x1e22a8){return function(_0x4f1ca5){_0x1e22a8[_0x2dc1('0x4')](_0x2c15fd,_0x4f1ca5);};}function removeListener(_0x4caa07,_0x5c4b4e){return function(){FaxQueueEvents[_0x2dc1('0x5')](_0x4caa07,_0x5c4b4e);};}exports['register']=function(_0x526f5c){for(var _0x2296a4=0x0,_0x36751e=events[_0x2dc1('0x6')];_0x2296a4<_0x36751e;_0x2296a4++){var _0x1c2b83=events[_0x2296a4];var _0x1aeb2b=createListener('faxQueue:'+_0x1c2b83,_0x526f5c);FaxQueueEvents['on'](_0x1c2b83,_0x1aeb2b);}}; \ No newline at end of file diff --git a/server/api/faxQueue/index.js b/server/api/faxQueue/index.js new file mode 100644 index 0000000..0670114 --- /dev/null +++ b/server/api/faxQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x964b=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','./faxQueue.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x549d30,_0x2e827c){var _0x46b0f2=function(_0x27e331){while(--_0x27e331){_0x549d30['push'](_0x549d30['shift']());}};_0x46b0f2(++_0x2e827c);}(_0x964b,0x112));var _0xb964=function(_0x147975,_0x41fe99){_0x147975=_0x147975-0x0;var _0x1db28a=_0x964b[_0x147975];return _0x1db28a;};'use strict';var multer=require(_0xb964('0x0'));var util=require(_0xb964('0x1'));var path=require('path');var timeout=require(_0xb964('0x2'));var express=require(_0xb964('0x3'));var router=express[_0xb964('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb964('0x5'));var config=require('../../config/environment');var controller=require(_0xb964('0x6'));router[_0xb964('0x7')]('/',auth[_0xb964('0x8')](),controller[_0xb964('0x9')]);router[_0xb964('0x7')](_0xb964('0xa'),auth[_0xb964('0x8')](),controller['describe']);router['get'](_0xb964('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xb964('0x7')](_0xb964('0xc'),auth[_0xb964('0x8')](),controller[_0xb964('0xd')]);router[_0xb964('0x7')](_0xb964('0xe'),auth['isAuthenticated'](),controller[_0xb964('0xf')]);router[_0xb964('0x7')](_0xb964('0x10'),auth[_0xb964('0x8')](),controller['getAgents']);router[_0xb964('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb964('0x11')](_0xb964('0xe'),auth[_0xb964('0x8')](),controller[_0xb964('0x12')]);router[_0xb964('0x11')](_0xb964('0x10'),auth[_0xb964('0x8')](),controller['addAgents']);router[_0xb964('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xb964('0x14')]);router[_0xb964('0x15')](_0xb964('0xb'),auth[_0xb964('0x8')](),controller[_0xb964('0x16')]);router[_0xb964('0x15')](_0xb964('0xe'),auth[_0xb964('0x8')](),controller[_0xb964('0x17')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb964('0x18')]);module[_0xb964('0x19')]=router; \ No newline at end of file diff --git a/server/api/faxQueueReport/faxQueueReport.attributes.js b/server/api/faxQueueReport/faxQueueReport.attributes.js new file mode 100644 index 0000000..13595a8 --- /dev/null +++ b/server/api/faxQueueReport/faxQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4ee6=['exports','STRING','DATE','moment','sequelize'];(function(_0x130705,_0x2d266b){var _0x1fa991=function(_0x395639){while(--_0x395639){_0x130705['push'](_0x130705['shift']());}};_0x1fa991(++_0x2d266b);}(_0x4ee6,0x193));var _0x64ee=function(_0x2422e5,_0x18fbfa){_0x2422e5=_0x2422e5-0x0;var _0x434454=_0x4ee6[_0x2422e5];return _0x434454;};'use strict';var moment=require(_0x64ee('0x0'));var Sequelize=require(_0x64ee('0x1'));module[_0x64ee('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x64ee('0x3')]},'joinAt':{'type':Sequelize[_0x64ee('0x4')]},'leaveAt':{'type':Sequelize[_0x64ee('0x4')]},'acceptAt':{'type':Sequelize[_0x64ee('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/faxQueueReport/faxQueueReport.controller.js b/server/api/faxQueueReport/faxQueueReport.controller.js new file mode 100644 index 0000000..1293623 --- /dev/null +++ b/server/api/faxQueueReport/faxQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8ebf=['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','limit','undefined','count','set','Content-Range','apply','save','then','destroy','error','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','type','options','includeAll','include','model','catch','create','body','update','find','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel'];(function(_0x3c643d,_0xff5bf0){var _0x5e93ff=function(_0x5c53ed){while(--_0x5c53ed){_0x3c643d['push'](_0x3c643d['shift']());}};_0x5e93ff(++_0xff5bf0);}(_0x8ebf,0x15c));var _0xf8eb=function(_0x41d432,_0x20e878){_0x41d432=_0x41d432-0x0;var _0x1650f9=_0x8ebf[_0x41d432];return _0x1650f9;};'use strict';var emlformat=require(_0xf8eb('0x0'));var rimraf=require(_0xf8eb('0x1'));var zipdir=require(_0xf8eb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf8eb('0x3'));var moment=require(_0xf8eb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf8eb('0x5'));var util=require(_0xf8eb('0x6'));var path=require(_0xf8eb('0x7'));var sox=require('sox');var csv=require(_0xf8eb('0x8'));var ejs=require(_0xf8eb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf8eb('0xa'));var squel=require(_0xf8eb('0xb'));var crypto=require(_0xf8eb('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf8eb('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf8eb('0xe'));var Papa=require('papaparse');var Redis=require(_0xf8eb('0xf'));var authService=require(_0xf8eb('0x10'));var qs=require(_0xf8eb('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf8eb('0x12'));var logger=require(_0xf8eb('0x13'))(_0xf8eb('0x14'));var utils=require(_0xf8eb('0x15'));var config=require(_0xf8eb('0x16'));var licenseUtil=require(_0xf8eb('0x17'));var db=require(_0xf8eb('0x18'))['db'];function respondWithStatusCode(_0x253455,_0x4c6109){_0x4c6109=_0x4c6109||0xcc;return function(_0x325dcd){if(_0x325dcd){return _0x253455[_0xf8eb('0x19')](_0x4c6109);}return _0x253455[_0xf8eb('0x1a')](_0x4c6109)[_0xf8eb('0x1b')]();};}function respondWithResult(_0x4bed5d,_0x55ee4b){_0x55ee4b=_0x55ee4b||0xc8;return function(_0x5f24bc){if(_0x5f24bc){return _0x4bed5d['status'](_0x55ee4b)[_0xf8eb('0x1c')](_0x5f24bc);}};}function respondWithFilteredResult(_0x22af2e,_0x48e97f){return function(_0x24277e){if(_0x24277e){var _0x10415f=typeof _0x48e97f[_0xf8eb('0x1d')]==='undefined'&&typeof _0x48e97f[_0xf8eb('0x1e')]===_0xf8eb('0x1f');var _0x2f052d=_0x24277e[_0xf8eb('0x20')];var _0x3038b7=_0x10415f?0x0:_0x48e97f[_0xf8eb('0x1d')];var _0x4b6e70=_0x10415f?_0x24277e['count']:_0x48e97f[_0xf8eb('0x1d')]+_0x48e97f[_0xf8eb('0x1e')];var _0xce86f9;if(_0x4b6e70>=_0x2f052d){_0x4b6e70=_0x2f052d;_0xce86f9=0xc8;}else{_0xce86f9=0xce;}_0x22af2e[_0xf8eb('0x1a')](_0xce86f9);return _0x22af2e[_0xf8eb('0x21')](_0xf8eb('0x22'),_0x3038b7+'-'+_0x4b6e70+'/'+_0x2f052d)[_0xf8eb('0x1c')](_0x24277e);}return null;};}function patchUpdates(_0x139b1d){return function(_0x5a577a){try{jsonpatch[_0xf8eb('0x23')](_0x5a577a,_0x139b1d,!![]);}catch(_0x4b7d89){return BPromise['reject'](_0x4b7d89);}return _0x5a577a[_0xf8eb('0x24')]();};}function saveUpdates(_0x1bf4fc,_0xb9ea72){return function(_0x17a27e){if(_0x17a27e){return _0x17a27e['update'](_0x1bf4fc)[_0xf8eb('0x25')](function(_0x301f40){return _0x301f40;});}return null;};}function removeEntity(_0xd71d3a,_0x3f153f){return function(_0x58f0b3){if(_0x58f0b3){return _0x58f0b3[_0xf8eb('0x26')]()[_0xf8eb('0x25')](function(){_0xd71d3a[_0xf8eb('0x1a')](0xcc)[_0xf8eb('0x1b')]();});}};}function handleEntityNotFound(_0xa208f0,_0x3547ee){return function(_0x2aaeaf){if(!_0x2aaeaf){_0xa208f0[_0xf8eb('0x19')](0x194);}return _0x2aaeaf;};}function handleError(_0x674c51,_0x6164d5){_0x6164d5=_0x6164d5||0x1f4;return function(_0x20738e){logger[_0xf8eb('0x27')](_0x20738e['stack']);if(_0x20738e[_0xf8eb('0x28')]){delete _0x20738e['name'];}_0x674c51[_0xf8eb('0x1a')](_0x6164d5)[_0xf8eb('0x29')](_0x20738e);};}exports[_0xf8eb('0x2a')]=function(_0xa39e74,_0x45348a){var _0x1716db={},_0x5bf35a={},_0x3c8448={'count':0x0,'rows':[]};var _0x3618bb=_[_0xf8eb('0x2b')](db[_0xf8eb('0x2c')][_0xf8eb('0x2d')],function(_0x2951cd){return{'name':_0x2951cd[_0xf8eb('0x2e')],'type':_0x2951cd['type']['key']};});_0x5bf35a['model']=_[_0xf8eb('0x2b')](_0x3618bb,_0xf8eb('0x28'));_0x5bf35a[_0xf8eb('0x2f')]=_[_0xf8eb('0x30')](_0xa39e74['query']);_0x5bf35a[_0xf8eb('0x31')]=_['intersection'](_0x5bf35a['model'],_0x5bf35a['query']);_0x1716db['attributes']=_[_0xf8eb('0x32')](_0x5bf35a['model'],qs[_0xf8eb('0x33')](_0xa39e74[_0xf8eb('0x2f')][_0xf8eb('0x33')]));_0x1716db[_0xf8eb('0x34')]=_0x1716db[_0xf8eb('0x34')][_0xf8eb('0x35')]?_0x1716db[_0xf8eb('0x34')]:_0x5bf35a['model'];if(!_0xa39e74[_0xf8eb('0x2f')][_0xf8eb('0x36')]('nolimit')){_0x1716db[_0xf8eb('0x1e')]=qs['limit'](_0xa39e74[_0xf8eb('0x2f')][_0xf8eb('0x1e')]);_0x1716db[_0xf8eb('0x1d')]=qs['offset'](_0xa39e74[_0xf8eb('0x2f')]['offset']);}_0x1716db['order']=qs[_0xf8eb('0x37')](_0xa39e74[_0xf8eb('0x2f')][_0xf8eb('0x37')]);_0x1716db[_0xf8eb('0x38')]=qs[_0xf8eb('0x31')](_[_0xf8eb('0x39')](_0xa39e74['query'],_0x5bf35a[_0xf8eb('0x31')]),_0x3618bb);if(_0xa39e74['query'][_0xf8eb('0x3a')]){_0x1716db[_0xf8eb('0x38')]=_[_0xf8eb('0x3b')](_0x1716db[_0xf8eb('0x38')],{'$or':_[_0xf8eb('0x2b')](_0x3618bb,function(_0x1b9e5f){if(_0x1b9e5f[_0xf8eb('0x3c')]!=='VIRTUAL'){var _0x31ca46={};_0x31ca46[_0x1b9e5f[_0xf8eb('0x28')]]={'$like':'%'+_0xa39e74[_0xf8eb('0x2f')]['filter']+'%'};return _0x31ca46;}})});}_0x1716db=_['merge']({},_0x1716db,_0xa39e74[_0xf8eb('0x3d')]);var _0x597cfc={'where':_0x1716db[_0xf8eb('0x38')]};return db[_0xf8eb('0x2c')][_0xf8eb('0x20')](_0x597cfc)[_0xf8eb('0x25')](function(_0xeae7b8){_0x3c8448[_0xf8eb('0x20')]=_0xeae7b8;if(_0xa39e74[_0xf8eb('0x2f')][_0xf8eb('0x3e')]){_0x1716db[_0xf8eb('0x3f')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x1716db);})[_0xf8eb('0x25')](function(_0x4cc676){_0x3c8448['rows']=_0x4cc676;return _0x3c8448;})[_0xf8eb('0x25')](respondWithFilteredResult(_0x45348a,_0x1716db))['catch'](handleError(_0x45348a,null));};exports['show']=function(_0x469ec0,_0x418610){var _0xe6d395={'raw':!![],'where':{'id':_0x469ec0['params']['id']}},_0x4abd69={};_0x4abd69['model']=_['keys'](db['FaxQueueReport'][_0xf8eb('0x2d')]);_0x4abd69[_0xf8eb('0x2f')]=_[_0xf8eb('0x30')](_0x469ec0[_0xf8eb('0x2f')]);_0x4abd69[_0xf8eb('0x31')]=_['intersection'](_0x4abd69[_0xf8eb('0x40')],_0x4abd69[_0xf8eb('0x2f')]);_0xe6d395[_0xf8eb('0x34')]=_[_0xf8eb('0x32')](_0x4abd69[_0xf8eb('0x40')],qs[_0xf8eb('0x33')](_0x469ec0[_0xf8eb('0x2f')][_0xf8eb('0x33')]));_0xe6d395[_0xf8eb('0x34')]=_0xe6d395[_0xf8eb('0x34')]['length']?_0xe6d395[_0xf8eb('0x34')]:_0x4abd69['model'];if(_0x469ec0['query'][_0xf8eb('0x3e')]){_0xe6d395[_0xf8eb('0x3f')]=[{'all':!![]}];}_0xe6d395=_[_0xf8eb('0x3b')]({},_0xe6d395,_0x469ec0[_0xf8eb('0x3d')]);return db[_0xf8eb('0x2c')]['find'](_0xe6d395)['then'](handleEntityNotFound(_0x418610,null))[_0xf8eb('0x25')](respondWithResult(_0x418610,null))[_0xf8eb('0x41')](handleError(_0x418610,null));};exports['create']=function(_0x354c2d,_0x1b313b){return db[_0xf8eb('0x2c')][_0xf8eb('0x42')](_0x354c2d[_0xf8eb('0x43')],{})[_0xf8eb('0x25')](respondWithResult(_0x1b313b,0xc9))['catch'](handleError(_0x1b313b,null));};exports[_0xf8eb('0x44')]=function(_0x4023f8,_0x5e9502){if(_0x4023f8[_0xf8eb('0x43')]['id']){delete _0x4023f8[_0xf8eb('0x43')]['id'];}return db[_0xf8eb('0x2c')][_0xf8eb('0x45')]({'where':{'id':_0x4023f8[_0xf8eb('0x46')]['id']}})['then'](handleEntityNotFound(_0x5e9502,null))['then'](saveUpdates(_0x4023f8[_0xf8eb('0x43')],null))[_0xf8eb('0x25')](respondWithResult(_0x5e9502,null))[_0xf8eb('0x41')](handleError(_0x5e9502,null));};exports[_0xf8eb('0x26')]=function(_0x3589e3,_0x1fce7d){return db['FaxQueueReport'][_0xf8eb('0x45')]({'where':{'id':_0x3589e3[_0xf8eb('0x46')]['id']}})[_0xf8eb('0x25')](handleEntityNotFound(_0x1fce7d,null))[_0xf8eb('0x25')](removeEntity(_0x1fce7d,null))[_0xf8eb('0x41')](handleError(_0x1fce7d,null));};exports[_0xf8eb('0x47')]=function(_0x393138,_0x53f0fc){return db[_0xf8eb('0x2c')]['describe']()[_0xf8eb('0x25')](respondWithResult(_0x53f0fc,null))[_0xf8eb('0x41')](handleError(_0x53f0fc,null));}; \ No newline at end of file diff --git a/server/api/faxQueueReport/faxQueueReport.model.js b/server/api/faxQueueReport/faxQueueReport.model.js new file mode 100644 index 0000000..e67a132 --- /dev/null +++ b/server/api/faxQueueReport/faxQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x1ec620,_0x4c3cac){var _0x4a8711=function(_0x19a9b0){while(--_0x19a9b0){_0x1ec620['push'](_0x1ec620['shift']());}};_0x4a8711(++_0x4c3cac);}(_0xe14b,0x93));var _0xbe14=function(_0x3c3cfe,_0x3d2e5a){_0x3c3cfe=_0x3c3cfe-0x0;var _0x338384=_0xe14b[_0x3c3cfe];return _0x338384;};'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':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/faxQueueReport/faxQueueReport.rpc.js b/server/api/faxQueueReport/faxQueueReport.rpc.js new file mode 100644 index 0000000..f48ab9e --- /dev/null +++ b/server/api/faxQueueReport/faxQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4f98=['debug','FaxQueueReport','update','options','where','attributes','limit','UpdateFaxQueueReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','body','raw','CreateFaxQueueReport'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x4f98,0x15d));var _0x84f9=function(_0x3c504b,_0x437693){_0x3c504b=_0x3c504b-0x0;var _0x2e5354=_0x4f98[_0x3c504b];return _0x2e5354;};'use strict';var _=require(_0x84f9('0x0'));var util=require(_0x84f9('0x1'));var moment=require(_0x84f9('0x2'));var BPromise=require('bluebird');var rs=require(_0x84f9('0x3'));var fs=require('fs');var Redis=require(_0x84f9('0x4'));var db=require(_0x84f9('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x84f9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x84f9('0x7')][_0x84f9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1f50b5,_0x35f042,_0x4e529b){return new BPromise(function(_0x303543,_0x141a7f){return client[_0x84f9('0x9')](_0x1f50b5,_0x4e529b)[_0x84f9('0xa')](function(_0x2eed80){logger[_0x84f9('0xb')](_0x84f9('0xc'),_0x35f042,_0x84f9('0xd'));logger['debug']('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x35f042,_0x84f9('0xd'),JSON[_0x84f9('0xe')](_0x2eed80));if(_0x2eed80['error']){if(_0x2eed80[_0x84f9('0xf')][_0x84f9('0x10')]===0x1f4){logger[_0x84f9('0xf')](_0x84f9('0xc'),_0x35f042,_0x2eed80[_0x84f9('0xf')][_0x84f9('0x11')]);return _0x141a7f(_0x2eed80[_0x84f9('0xf')][_0x84f9('0x11')]);}logger['error'](_0x84f9('0xc'),_0x35f042,_0x2eed80['error'][_0x84f9('0x11')]);return _0x303543(_0x2eed80[_0x84f9('0xf')][_0x84f9('0x11')]);}else{logger[_0x84f9('0xb')](_0x84f9('0xc'),_0x35f042,_0x84f9('0xd'));_0x303543(_0x2eed80[_0x84f9('0x12')]['message']);}})[_0x84f9('0x13')](function(_0x19245e){logger[_0x84f9('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x35f042,_0x19245e);_0x141a7f(_0x19245e);});});}exports['CreateFaxQueueReport']=function(_0x192e94){var _0x37d8ef=this;return new Promise(function(_0x371f1f,_0x4858bb){return db['FaxQueueReport']['create'](_0x192e94[_0x84f9('0x14')],{'raw':_0x192e94['options']?_0x192e94['options'][_0x84f9('0x15')]===undefined?!![]:![]:!![]})[_0x84f9('0xa')](function(_0x4a7627){logger[_0x84f9('0xb')](_0x84f9('0x16'),_0x192e94);logger[_0x84f9('0x17')](_0x84f9('0x16'),_0x192e94,JSON[_0x84f9('0xe')](_0x4a7627));_0x371f1f(_0x4a7627);})[_0x84f9('0x13')](function(_0x419ca2){logger['error']('CreateFaxQueueReport',_0x419ca2[_0x84f9('0x11')],_0x192e94);_0x4858bb(_0x37d8ef[_0x84f9('0xf')](0x1f4,_0x419ca2[_0x84f9('0x11')]));});});};exports['UpdateFaxQueueReport']=function(_0x2c165c){var _0x84783d=this;return new Promise(function(_0x210120,_0x3ea33f){return db[_0x84f9('0x18')][_0x84f9('0x19')](_0x2c165c[_0x84f9('0x14')],{'raw':_0x2c165c[_0x84f9('0x1a')]?_0x2c165c[_0x84f9('0x1a')][_0x84f9('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c165c[_0x84f9('0x1a')]?_0x2c165c[_0x84f9('0x1a')][_0x84f9('0x1b')]||null:null,'attributes':_0x2c165c['options']?_0x2c165c[_0x84f9('0x1a')][_0x84f9('0x1c')]||null:null,'limit':_0x2c165c['options']?_0x2c165c[_0x84f9('0x1a')][_0x84f9('0x1d')]||null:null})[_0x84f9('0xa')](function(_0x22dcc0){logger[_0x84f9('0xb')](_0x84f9('0x1e'),_0x2c165c);logger[_0x84f9('0x17')](_0x84f9('0x1e'),_0x2c165c,JSON['stringify'](_0x22dcc0));_0x210120(_0x22dcc0);})['catch'](function(_0x1508f4){logger['error']('UpdateFaxQueueReport',_0x1508f4[_0x84f9('0x11')],_0x2c165c);_0x3ea33f(_0x84783d['error'](0x1f4,_0x1508f4['message']));});});}; \ No newline at end of file diff --git a/server/api/faxQueueReport/index.js b/server/api/faxQueueReport/index.js new file mode 100644 index 0000000..e1a8f5d --- /dev/null +++ b/server/api/faxQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe65a=['get','index','/describe','describe','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller'];(function(_0x289035,_0x76742c){var _0x4c8db5=function(_0x26a333){while(--_0x26a333){_0x289035['push'](_0x289035['shift']());}};_0x4c8db5(++_0x76742c);}(_0xe65a,0x1b1));var _0xae65=function(_0x420b24,_0x382adc){_0x420b24=_0x420b24-0x0;var _0x4da552=_0xe65a[_0x420b24];return _0x4da552;};'use strict';var multer=require('multer');var util=require(_0xae65('0x0'));var path=require(_0xae65('0x1'));var timeout=require('connect-timeout');var express=require(_0xae65('0x2'));var router=express['Router']();var fs_extra=require(_0xae65('0x3'));var auth=require(_0xae65('0x4'));var interaction=require(_0xae65('0x5'));var config=require(_0xae65('0x6'));var controller=require(_0xae65('0x7'));router[_0xae65('0x8')]('/',auth['isAuthenticated'](),controller[_0xae65('0x9')]);router[_0xae65('0x8')](_0xae65('0xa'),auth['isAuthenticated'](),controller[_0xae65('0xb')]);router['get'](_0xae65('0xc'),auth[_0xae65('0xd')](),controller[_0xae65('0xe')]);router[_0xae65('0xf')]('/',auth['isAuthenticated'](),controller[_0xae65('0x10')]);router['put'](_0xae65('0xc'),auth[_0xae65('0xd')](),controller[_0xae65('0x11')]);router[_0xae65('0x12')]('/:id',auth[_0xae65('0xd')](),controller[_0xae65('0x13')]);module[_0xae65('0x14')]=router; \ No newline at end of file diff --git a/server/api/faxTransferReport/faxTransferReport.attributes.js b/server/api/faxTransferReport/faxTransferReport.attributes.js new file mode 100644 index 0000000..c149cec --- /dev/null +++ b/server/api/faxTransferReport/faxTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0xd549e9,_0x45f009){var _0x4febe4=function(_0x1bcf97){while(--_0x1bcf97){_0xd549e9['push'](_0xd549e9['shift']());}};_0x4febe4(++_0x45f009);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x8bb4c1,_0x2d6e53){_0x8bb4c1=_0x8bb4c1-0x0;var _0x67a6e1=_0xf3cd[_0x8bb4c1];return _0x67a6e1;};'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 diff --git a/server/api/faxTransferReport/faxTransferReport.controller.js b/server/api/faxTransferReport/faxTransferReport.controller.js new file mode 100644 index 0000000..2ad7c24 --- /dev/null +++ b/server/api/faxTransferReport/faxTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1650=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','FaxTransferReport','rawAttributes','fieldName','model','map','query','filters','intersection','fields','attributes','nolimit','offset','order','sort','where','pick','merge','type','VIRTUAL','filter','findAll','rows','catch','params','keys','length','includeAll','include','options','find','create','body','describe','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0xc36b,_0x1650bd){var _0x44a4b6=function(_0x30cd77){while(--_0x30cd77){_0xc36b['push'](_0xc36b['shift']());}};_0x44a4b6(++_0x1650bd);}(_0x1650,0xd3));var _0x0165=function(_0x403fc7,_0x32931a){_0x403fc7=_0x403fc7-0x0;var _0x5d0827=_0x1650[_0x403fc7];return _0x5d0827;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0165('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0165('0x1'));var moment=require('moment');var BPromise=require(_0x0165('0x2'));var Mustache=require(_0x0165('0x3'));var util=require(_0x0165('0x4'));var path=require(_0x0165('0x5'));var sox=require(_0x0165('0x6'));var csv=require(_0x0165('0x7'));var ejs=require(_0x0165('0x8'));var fs=require('fs');var fs_extra=require(_0x0165('0x9'));var _=require(_0x0165('0xa'));var squel=require('squel');var crypto=require(_0x0165('0xb'));var jsforce=require(_0x0165('0xc'));var deskjs=require(_0x0165('0xd'));var toCsv=require(_0x0165('0x7'));var querystring=require(_0x0165('0xe'));var Papa=require(_0x0165('0xf'));var Redis=require(_0x0165('0x10'));var authService=require(_0x0165('0x11'));var qs=require(_0x0165('0x12'));var as=require(_0x0165('0x13'));var hardwareService=require(_0x0165('0x14'));var logger=require('../../config/logger')(_0x0165('0x15'));var utils=require(_0x0165('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0165('0x17'));var db=require(_0x0165('0x18'))['db'];function respondWithStatusCode(_0x31ead2,_0x58f962){_0x58f962=_0x58f962||0xcc;return function(_0x1e68f1){if(_0x1e68f1){return _0x31ead2[_0x0165('0x19')](_0x58f962);}return _0x31ead2['status'](_0x58f962)[_0x0165('0x1a')]();};}function respondWithResult(_0x27010d,_0x5bb7c7){_0x5bb7c7=_0x5bb7c7||0xc8;return function(_0x3c5e4e){if(_0x3c5e4e){return _0x27010d['status'](_0x5bb7c7)[_0x0165('0x1b')](_0x3c5e4e);}};}function respondWithFilteredResult(_0x141dd2,_0x4c535d){return function(_0x1c2e86){if(_0x1c2e86){var _0x47ee14=typeof _0x4c535d['offset']===_0x0165('0x1c')&&typeof _0x4c535d[_0x0165('0x1d')]===_0x0165('0x1c');var _0x3697fe=_0x1c2e86['count'];var _0x2853d9=_0x47ee14?0x0:_0x4c535d['offset'];var _0x5a5e0a=_0x47ee14?_0x1c2e86[_0x0165('0x1e')]:_0x4c535d['offset']+_0x4c535d[_0x0165('0x1d')];var _0x211080;if(_0x5a5e0a>=_0x3697fe){_0x5a5e0a=_0x3697fe;_0x211080=0xc8;}else{_0x211080=0xce;}_0x141dd2[_0x0165('0x1f')](_0x211080);return _0x141dd2[_0x0165('0x20')](_0x0165('0x21'),_0x2853d9+'-'+_0x5a5e0a+'/'+_0x3697fe)['json'](_0x1c2e86);}return null;};}function patchUpdates(_0x2d723f){return function(_0x470f34){try{jsonpatch[_0x0165('0x22')](_0x470f34,_0x2d723f,!![]);}catch(_0x277428){return BPromise[_0x0165('0x23')](_0x277428);}return _0x470f34[_0x0165('0x24')]();};}function saveUpdates(_0x19d318,_0x123d04){return function(_0x28210f){if(_0x28210f){return _0x28210f[_0x0165('0x25')](_0x19d318)['then'](function(_0x3d9748){return _0x3d9748;});}return null;};}function removeEntity(_0xb92b75,_0x77ea3c){return function(_0x585db5){if(_0x585db5){return _0x585db5[_0x0165('0x26')]()[_0x0165('0x27')](function(){_0xb92b75[_0x0165('0x1f')](0xcc)[_0x0165('0x1a')]();});}};}function handleEntityNotFound(_0x4ef64b,_0x5a190d){return function(_0x37b0e6){if(!_0x37b0e6){_0x4ef64b[_0x0165('0x19')](0x194);}return _0x37b0e6;};}function handleError(_0x48aa81,_0xd93177){_0xd93177=_0xd93177||0x1f4;return function(_0xeb260a){logger[_0x0165('0x28')](_0xeb260a['stack']);if(_0xeb260a['name']){delete _0xeb260a[_0x0165('0x29')];}_0x48aa81[_0x0165('0x1f')](_0xd93177)[_0x0165('0x2a')](_0xeb260a);};}exports['index']=function(_0x352cd4,_0x2b78a2){var _0x4b1393={},_0x5531fc={},_0x3f3482={'count':0x0,'rows':[]};var _0x1063f6=_['map'](db[_0x0165('0x2b')][_0x0165('0x2c')],function(_0x141427){return{'name':_0x141427[_0x0165('0x2d')],'type':_0x141427['type']['key']};});_0x5531fc[_0x0165('0x2e')]=_[_0x0165('0x2f')](_0x1063f6,_0x0165('0x29'));_0x5531fc['query']=_['keys'](_0x352cd4[_0x0165('0x30')]);_0x5531fc[_0x0165('0x31')]=_[_0x0165('0x32')](_0x5531fc[_0x0165('0x2e')],_0x5531fc[_0x0165('0x30')]);_0x4b1393['attributes']=_['intersection'](_0x5531fc[_0x0165('0x2e')],qs[_0x0165('0x33')](_0x352cd4[_0x0165('0x30')][_0x0165('0x33')]));_0x4b1393['attributes']=_0x4b1393[_0x0165('0x34')]['length']?_0x4b1393['attributes']:_0x5531fc[_0x0165('0x2e')];if(!_0x352cd4[_0x0165('0x30')]['hasOwnProperty'](_0x0165('0x35'))){_0x4b1393[_0x0165('0x1d')]=qs[_0x0165('0x1d')](_0x352cd4['query']['limit']);_0x4b1393[_0x0165('0x36')]=qs[_0x0165('0x36')](_0x352cd4['query'][_0x0165('0x36')]);}_0x4b1393[_0x0165('0x37')]=qs[_0x0165('0x38')](_0x352cd4[_0x0165('0x30')]['sort']);_0x4b1393[_0x0165('0x39')]=qs['filters'](_[_0x0165('0x3a')](_0x352cd4[_0x0165('0x30')],_0x5531fc[_0x0165('0x31')]),_0x1063f6);if(_0x352cd4['query']['filter']){_0x4b1393[_0x0165('0x39')]=_[_0x0165('0x3b')](_0x4b1393[_0x0165('0x39')],{'$or':_[_0x0165('0x2f')](_0x1063f6,function(_0x1f9cc1){if(_0x1f9cc1[_0x0165('0x3c')]!==_0x0165('0x3d')){var _0x41ea9c={};_0x41ea9c[_0x1f9cc1[_0x0165('0x29')]]={'$like':'%'+_0x352cd4[_0x0165('0x30')][_0x0165('0x3e')]+'%'};return _0x41ea9c;}})});}_0x4b1393=_[_0x0165('0x3b')]({},_0x4b1393,_0x352cd4['options']);var _0x57b093={'where':_0x4b1393[_0x0165('0x39')]};return db[_0x0165('0x2b')][_0x0165('0x1e')](_0x57b093)[_0x0165('0x27')](function(_0x4738c0){_0x3f3482[_0x0165('0x1e')]=_0x4738c0;if(_0x352cd4['query']['includeAll']){_0x4b1393['include']=[{'all':!![]}];}return db[_0x0165('0x2b')][_0x0165('0x3f')](_0x4b1393);})[_0x0165('0x27')](function(_0x31833e){_0x3f3482[_0x0165('0x40')]=_0x31833e;return _0x3f3482;})[_0x0165('0x27')](respondWithFilteredResult(_0x2b78a2,_0x4b1393))[_0x0165('0x41')](handleError(_0x2b78a2,null));};exports['show']=function(_0x28cea5,_0xb93535){var _0x317e7e={'raw':!![],'where':{'id':_0x28cea5[_0x0165('0x42')]['id']}},_0x391086={};_0x391086['model']=_[_0x0165('0x43')](db['FaxTransferReport'][_0x0165('0x2c')]);_0x391086['query']=_[_0x0165('0x43')](_0x28cea5['query']);_0x391086[_0x0165('0x31')]=_[_0x0165('0x32')](_0x391086[_0x0165('0x2e')],_0x391086[_0x0165('0x30')]);_0x317e7e[_0x0165('0x34')]=_['intersection'](_0x391086[_0x0165('0x2e')],qs[_0x0165('0x33')](_0x28cea5[_0x0165('0x30')][_0x0165('0x33')]));_0x317e7e[_0x0165('0x34')]=_0x317e7e[_0x0165('0x34')][_0x0165('0x44')]?_0x317e7e[_0x0165('0x34')]:_0x391086[_0x0165('0x2e')];if(_0x28cea5[_0x0165('0x30')][_0x0165('0x45')]){_0x317e7e[_0x0165('0x46')]=[{'all':!![]}];}_0x317e7e=_[_0x0165('0x3b')]({},_0x317e7e,_0x28cea5[_0x0165('0x47')]);return db[_0x0165('0x2b')][_0x0165('0x48')](_0x317e7e)[_0x0165('0x27')](handleEntityNotFound(_0xb93535,null))[_0x0165('0x27')](respondWithResult(_0xb93535,null))[_0x0165('0x41')](handleError(_0xb93535,null));};exports['create']=function(_0x10b9c6,_0x2f8dec){return db['FaxTransferReport'][_0x0165('0x49')](_0x10b9c6[_0x0165('0x4a')],{})['then'](respondWithResult(_0x2f8dec,0xc9))[_0x0165('0x41')](handleError(_0x2f8dec,null));};exports[_0x0165('0x25')]=function(_0x398476,_0x4193f1){if(_0x398476[_0x0165('0x4a')]['id']){delete _0x398476[_0x0165('0x4a')]['id'];}return db[_0x0165('0x2b')][_0x0165('0x48')]({'where':{'id':_0x398476['params']['id']}})[_0x0165('0x27')](handleEntityNotFound(_0x4193f1,null))[_0x0165('0x27')](saveUpdates(_0x398476[_0x0165('0x4a')],null))[_0x0165('0x27')](respondWithResult(_0x4193f1,null))[_0x0165('0x41')](handleError(_0x4193f1,null));};exports[_0x0165('0x26')]=function(_0x222d48,_0x5d6379){return db[_0x0165('0x2b')][_0x0165('0x48')]({'where':{'id':_0x222d48[_0x0165('0x42')]['id']}})['then'](handleEntityNotFound(_0x5d6379,null))[_0x0165('0x27')](removeEntity(_0x5d6379,null))['catch'](handleError(_0x5d6379,null));};exports[_0x0165('0x4b')]=function(_0xd22673,_0xa7ea4e){return db['FaxTransferReport'][_0x0165('0x4b')]()[_0x0165('0x27')](respondWithResult(_0xa7ea4e,null))['catch'](handleError(_0xa7ea4e,null));}; \ No newline at end of file diff --git a/server/api/faxTransferReport/faxTransferReport.model.js b/server/api/faxTransferReport/faxTransferReport.model.js new file mode 100644 index 0000000..0a5923a --- /dev/null +++ b/server/api/faxTransferReport/faxTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf84a=['bluebird','path','rimraf','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer','uniqueid','../../config/logger','api','moment'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xf84a,0x97));var _0xaf84=function(_0x31fd85,_0x2e7c56){_0x31fd85=_0x31fd85-0x0;var _0x406165=_0xf84a[_0x31fd85];return _0x406165;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xaf84('0x0'))(_0xaf84('0x1'));var moment=require(_0xaf84('0x2'));var BPromise=require(_0xaf84('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaf84('0x4'));var rimraf=require(_0xaf84('0x5'));var config=require('../../config/environment');var attributes=require(_0xaf84('0x6'));module[_0xaf84('0x7')]=function(_0x246ab7,_0x3db4e9){return _0x246ab7['define'](_0xaf84('0x8'),attributes,{'tableName':_0xaf84('0x9'),'paranoid':![],'indexes':[{'name':_0xaf84('0xa'),'fields':[_0xaf84('0xa')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/faxTransferReport/faxTransferReport.rpc.js b/server/api/faxTransferReport/faxTransferReport.rpc.js new file mode 100644 index 0000000..324f1c6 --- /dev/null +++ b/server/api/faxTransferReport/faxTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x17ee=['client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','rpc','../../config/environment','jayson/promise'];(function(_0x4c4bd,_0x1cb75a){var _0x59cd87=function(_0x127042){while(--_0x127042){_0x4c4bd['push'](_0x4c4bd['shift']());}};_0x59cd87(++_0x1cb75a);}(_0x17ee,0x1d3));var _0xe17e=function(_0x4ec64d,_0x248423){_0x4ec64d=_0x4ec64d-0x0;var _0x246fc8=_0x17ee[_0x4ec64d];return _0x246fc8;};'use strict';var _=require(_0xe17e('0x0'));var util=require(_0xe17e('0x1'));var moment=require(_0xe17e('0x2'));var BPromise=require('bluebird');var rs=require(_0xe17e('0x3'));var fs=require('fs');var Redis=require(_0xe17e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe17e('0x5'));var config=require(_0xe17e('0x6'));var jayson=require(_0xe17e('0x7'));var client=jayson[_0xe17e('0x8')][_0xe17e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14a119,_0x2d9f2a,_0xe71e37){return new BPromise(function(_0x4d2744,_0x50ac4d){return client[_0xe17e('0xa')](_0x14a119,_0xe71e37)[_0xe17e('0xb')](function(_0x487e5d){logger[_0xe17e('0xc')](_0xe17e('0xd'),_0x2d9f2a,_0xe17e('0xe'));logger['debug']('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x2d9f2a,_0xe17e('0xe'),JSON[_0xe17e('0xf')](_0x487e5d));if(_0x487e5d[_0xe17e('0x10')]){if(_0x487e5d[_0xe17e('0x10')]['code']===0x1f4){logger['error'](_0xe17e('0xd'),_0x2d9f2a,_0x487e5d[_0xe17e('0x10')][_0xe17e('0x11')]);return _0x50ac4d(_0x487e5d['error'][_0xe17e('0x11')]);}logger[_0xe17e('0x10')](_0xe17e('0xd'),_0x2d9f2a,_0x487e5d[_0xe17e('0x10')][_0xe17e('0x11')]);return _0x4d2744(_0x487e5d[_0xe17e('0x10')][_0xe17e('0x11')]);}else{logger[_0xe17e('0xc')](_0xe17e('0xd'),_0x2d9f2a,'request\x20sent');_0x4d2744(_0x487e5d[_0xe17e('0x12')][_0xe17e('0x11')]);}})['catch'](function(_0x4d651){logger[_0xe17e('0x10')](_0xe17e('0xd'),_0x2d9f2a,_0x4d651);_0x50ac4d(_0x4d651);});});} \ No newline at end of file diff --git a/server/api/faxTransferReport/index.js b/server/api/faxTransferReport/index.js new file mode 100644 index 0000000..4ba5d02 --- /dev/null +++ b/server/api/faxTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7e7b=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxTransferReport.controller','get','isAuthenticated','/describe','describe','show','post','put','update','/:id','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0x7e7b,0x8e));var _0xb7e7=function(_0x357681,_0x7447cc){_0x357681=_0x357681-0x0;var _0xa009ba=_0x7e7b[_0x357681];return _0xa009ba;};'use strict';var multer=require(_0xb7e7('0x0'));var util=require(_0xb7e7('0x1'));var path=require(_0xb7e7('0x2'));var timeout=require(_0xb7e7('0x3'));var express=require(_0xb7e7('0x4'));var router=express[_0xb7e7('0x5')]();var fs_extra=require(_0xb7e7('0x6'));var auth=require(_0xb7e7('0x7'));var interaction=require(_0xb7e7('0x8'));var config=require('../../config/environment');var controller=require(_0xb7e7('0x9'));router[_0xb7e7('0xa')]('/',auth[_0xb7e7('0xb')](),controller['index']);router['get'](_0xb7e7('0xc'),auth[_0xb7e7('0xb')](),controller[_0xb7e7('0xd')]);router['get']('/:id',auth[_0xb7e7('0xb')](),controller[_0xb7e7('0xe')]);router[_0xb7e7('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb7e7('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xb7e7('0x11')]);router['delete'](_0xb7e7('0x12'),auth[_0xb7e7('0xb')](),controller[_0xb7e7('0x13')]);module[_0xb7e7('0x14')]=router; \ No newline at end of file diff --git a/server/api/intDeskAccount/index.js b/server/api/intDeskAccount/index.js new file mode 100644 index 0000000..f2a6523 --- /dev/null +++ b/server/api/intDeskAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5226=['getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','isAuthenticated','index','get','/:id','show'];(function(_0x3c7350,_0xbff380){var _0x5a0666=function(_0x435607){while(--_0x435607){_0x3c7350['push'](_0x3c7350['shift']());}};_0x5a0666(++_0xbff380);}(_0x5226,0x137));var _0x6522=function(_0x5b6a49,_0x3621d3){_0x5b6a49=_0x5b6a49-0x0;var _0x52cb4d=_0x5226[_0x5b6a49];return _0x52cb4d;};'use strict';var multer=require(_0x6522('0x0'));var util=require(_0x6522('0x1'));var path=require(_0x6522('0x2'));var timeout=require(_0x6522('0x3'));var express=require(_0x6522('0x4'));var router=express['Router']();var fs_extra=require(_0x6522('0x5'));var auth=require(_0x6522('0x6'));var interaction=require(_0x6522('0x7'));var config=require('../../config/environment');var controller=require(_0x6522('0x8'));router['get']('/',auth[_0x6522('0x9')](),controller[_0x6522('0xa')]);router[_0x6522('0xb')](_0x6522('0xc'),auth[_0x6522('0x9')](),controller[_0x6522('0xd')]);router[_0x6522('0xb')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x6522('0xe')]);router[_0x6522('0xb')](_0x6522('0xf'),auth[_0x6522('0x9')](),controller[_0x6522('0x10')]);router[_0x6522('0x11')]('/',auth[_0x6522('0x9')](),controller[_0x6522('0x12')]);router[_0x6522('0x11')](_0x6522('0x13'),auth[_0x6522('0x9')](),controller[_0x6522('0x14')]);router[_0x6522('0x15')]('/:id',auth[_0x6522('0x9')](),controller[_0x6522('0x16')]);router[_0x6522('0x17')](_0x6522('0xc'),auth[_0x6522('0x9')](),controller['destroy']);module[_0x6522('0x18')]=router; \ No newline at end of file diff --git a/server/api/intDeskAccount/intDeskAccount.attributes.js b/server/api/intDeskAccount/intDeskAccount.attributes.js new file mode 100644 index 0000000..25e6bc1 --- /dev/null +++ b/server/api/intDeskAccount/intDeskAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xae88=['newTab','sequelize','exports','STRING','ENUM','basic','integrationTab'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xae88,0x1a5));var _0x8ae8=function(_0x3fdfff,_0x3a02b6){_0x3fdfff=_0x3fdfff-0x0;var _0x3c7681=_0xae88[_0x3fdfff];return _0x3c7681;};'use strict';var Sequelize=require(_0x8ae8('0x0'));module[_0x8ae8('0x1')]={'name':{'type':Sequelize[_0x8ae8('0x2')]},'description':{'type':Sequelize[_0x8ae8('0x2')]},'username':{'type':Sequelize[_0x8ae8('0x2')]},'remoteUri':{'type':Sequelize[_0x8ae8('0x2')]},'authType':{'type':Sequelize[_0x8ae8('0x3')](_0x8ae8('0x4')),'defaultValue':'basic'},'password':{'type':Sequelize[_0x8ae8('0x2')]},'consumerKey':{'type':Sequelize[_0x8ae8('0x2')]},'consumerSecret':{'type':Sequelize[_0x8ae8('0x2')]},'token':{'type':Sequelize[_0x8ae8('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x8ae8('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8ae8('0x3')](_0x8ae8('0x5'),_0x8ae8('0x6')),'defaultValue':_0x8ae8('0x5')}}; \ No newline at end of file diff --git a/server/api/intDeskAccount/intDeskAccount.controller.js b/server/api/intDeskAccount/intDeskAccount.controller.js new file mode 100644 index 0000000..c0d1d5b --- /dev/null +++ b/server/api/intDeskAccount/intDeskAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe3b7=['length','Subjects','getSubjects','channel','getDescriptions','DeskField','Descriptions','priority','authType','username','consumerSecret','token','tokenSecret','remoteUri','substring','lastIndexOf','format','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','password','toString','concat','_embedded','active','label','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','reject','save','update','destroy','then','error','name','send','index','map','DeskAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','getConfigurations','findOne','DeskConfiguration'];(function(_0x56fd04,_0x5da37b){var _0x362197=function(_0x491948){while(--_0x491948){_0x56fd04['push'](_0x56fd04['shift']());}};_0x362197(++_0x5da37b);}(_0xe3b7,0x1d0));var _0x7e3b=function(_0x40bffc,_0x3a45d7){_0x40bffc=_0x40bffc-0x0;var _0x3007e9=_0xe3b7[_0x40bffc];return _0x3007e9;};'use strict';var emlformat=require(_0x7e3b('0x0'));var rimraf=require(_0x7e3b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7e3b('0x2'));var rp=require(_0x7e3b('0x3'));var moment=require(_0x7e3b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7e3b('0x5'));var util=require('util');var path=require(_0x7e3b('0x6'));var sox=require(_0x7e3b('0x7'));var csv=require('to-csv');var ejs=require(_0x7e3b('0x8'));var fs=require('fs');var fs_extra=require(_0x7e3b('0x9'));var _=require(_0x7e3b('0xa'));var squel=require(_0x7e3b('0xb'));var crypto=require(_0x7e3b('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7e3b('0xd'));var querystring=require(_0x7e3b('0xe'));var Papa=require(_0x7e3b('0xf'));var Redis=require(_0x7e3b('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7e3b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7e3b('0x12'))(_0x7e3b('0x13'));var utils=require(_0x7e3b('0x14'));var config=require(_0x7e3b('0x15'));var licenseUtil=require(_0x7e3b('0x16'));var db=require(_0x7e3b('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x28aa72,_0x39628a){_0x39628a=_0x39628a||0xcc;return function(_0x424676){if(_0x424676){return _0x28aa72[_0x7e3b('0x18')](_0x39628a);}return _0x28aa72['status'](_0x39628a)[_0x7e3b('0x19')]();};}function respondWithResult(_0x1f108c,_0x503518){_0x503518=_0x503518||0xc8;return function(_0x532333){if(_0x532333){return _0x1f108c['status'](_0x503518)[_0x7e3b('0x1a')](_0x532333);}};}function respondWithFilteredResult(_0x5324a7,_0x1909ca){return function(_0x4e7967){if(_0x4e7967){var _0x179dc8=typeof _0x1909ca[_0x7e3b('0x1b')]===_0x7e3b('0x1c')&&typeof _0x1909ca[_0x7e3b('0x1d')]===_0x7e3b('0x1c');var _0x1967df=_0x4e7967[_0x7e3b('0x1e')];var _0x15c0e=_0x179dc8?0x0:_0x1909ca[_0x7e3b('0x1b')];var _0x236e6=_0x179dc8?_0x4e7967[_0x7e3b('0x1e')]:_0x1909ca[_0x7e3b('0x1b')]+_0x1909ca[_0x7e3b('0x1d')];var _0x34be79;if(_0x236e6>=_0x1967df){_0x236e6=_0x1967df;_0x34be79=0xc8;}else{_0x34be79=0xce;}_0x5324a7[_0x7e3b('0x1f')](_0x34be79);return _0x5324a7[_0x7e3b('0x20')]('Content-Range',_0x15c0e+'-'+_0x236e6+'/'+_0x1967df)[_0x7e3b('0x1a')](_0x4e7967);}return null;};}function patchUpdates(_0x33393f){return function(_0x11607a){try{jsonpatch['apply'](_0x11607a,_0x33393f,!![]);}catch(_0xf8a244){return BPromise[_0x7e3b('0x21')](_0xf8a244);}return _0x11607a[_0x7e3b('0x22')]();};}function saveUpdates(_0x21f098,_0x356423){return function(_0x1b319d){if(_0x1b319d){return _0x1b319d[_0x7e3b('0x23')](_0x21f098)['then'](function(_0x5b2559){return _0x5b2559;});}return null;};}function removeEntity(_0x9e6ec3,_0x5214c5){return function(_0xf6a900){if(_0xf6a900){return _0xf6a900[_0x7e3b('0x24')]()[_0x7e3b('0x25')](function(){_0x9e6ec3['status'](0xcc)[_0x7e3b('0x19')]();});}};}function handleEntityNotFound(_0x59a92f,_0x12b36b){return function(_0x5d54ba){if(!_0x5d54ba){_0x59a92f[_0x7e3b('0x18')](0x194);}return _0x5d54ba;};}function handleError(_0x3b96d3,_0x60e7c2){_0x60e7c2=_0x60e7c2||0x1f4;return function(_0x1fc199){logger[_0x7e3b('0x26')](_0x1fc199['stack']);if(_0x1fc199['name']){delete _0x1fc199[_0x7e3b('0x27')];}_0x3b96d3[_0x7e3b('0x1f')](_0x60e7c2)[_0x7e3b('0x28')](_0x1fc199);};}exports[_0x7e3b('0x29')]=function(_0x1d7303,_0x1a21ce){var _0xa54046={},_0x1f3d9d={},_0x208992={'count':0x0,'rows':[]};var _0x9ba38c=_[_0x7e3b('0x2a')](db[_0x7e3b('0x2b')][_0x7e3b('0x2c')],function(_0x37ecf8){return{'name':_0x37ecf8['fieldName'],'type':_0x37ecf8['type'][_0x7e3b('0x2d')]};});_0x1f3d9d[_0x7e3b('0x2e')]=_['map'](_0x9ba38c,_0x7e3b('0x27'));_0x1f3d9d[_0x7e3b('0x2f')]=_[_0x7e3b('0x30')](_0x1d7303[_0x7e3b('0x2f')]);_0x1f3d9d[_0x7e3b('0x31')]=_[_0x7e3b('0x32')](_0x1f3d9d[_0x7e3b('0x2e')],_0x1f3d9d[_0x7e3b('0x2f')]);_0xa54046[_0x7e3b('0x33')]=_['intersection'](_0x1f3d9d[_0x7e3b('0x2e')],qs[_0x7e3b('0x34')](_0x1d7303['query'][_0x7e3b('0x34')]));_0xa54046[_0x7e3b('0x33')]=_0xa54046[_0x7e3b('0x33')]['length']?_0xa54046['attributes']:_0x1f3d9d[_0x7e3b('0x2e')];if(!_0x1d7303[_0x7e3b('0x2f')][_0x7e3b('0x35')](_0x7e3b('0x36'))){_0xa54046[_0x7e3b('0x1d')]=qs[_0x7e3b('0x1d')](_0x1d7303[_0x7e3b('0x2f')][_0x7e3b('0x1d')]);_0xa54046['offset']=qs[_0x7e3b('0x1b')](_0x1d7303[_0x7e3b('0x2f')][_0x7e3b('0x1b')]);}_0xa54046[_0x7e3b('0x37')]=qs[_0x7e3b('0x38')](_0x1d7303[_0x7e3b('0x2f')]['sort']);_0xa54046['where']=qs[_0x7e3b('0x31')](_[_0x7e3b('0x39')](_0x1d7303[_0x7e3b('0x2f')],_0x1f3d9d['filters']),_0x9ba38c);if(_0x1d7303['query'][_0x7e3b('0x3a')]){_0xa54046[_0x7e3b('0x3b')]=_[_0x7e3b('0x3c')](_0xa54046[_0x7e3b('0x3b')],{'$or':_[_0x7e3b('0x2a')](_0x9ba38c,function(_0x36f600){if(_0x36f600[_0x7e3b('0x3d')]!=='VIRTUAL'){var _0xeef891={};_0xeef891[_0x36f600[_0x7e3b('0x27')]]={'$like':'%'+_0x1d7303[_0x7e3b('0x2f')][_0x7e3b('0x3a')]+'%'};return _0xeef891;}})});}_0xa54046=_[_0x7e3b('0x3c')]({},_0xa54046,_0x1d7303['options']);var _0x58dc87={'where':_0xa54046[_0x7e3b('0x3b')]};return db[_0x7e3b('0x2b')][_0x7e3b('0x1e')](_0x58dc87)[_0x7e3b('0x25')](function(_0x173827){_0x208992[_0x7e3b('0x1e')]=_0x173827;if(_0x1d7303[_0x7e3b('0x2f')]['includeAll']){_0xa54046[_0x7e3b('0x3e')]=[{'all':!![]}];}return db[_0x7e3b('0x2b')][_0x7e3b('0x3f')](_0xa54046);})[_0x7e3b('0x25')](function(_0x4e6ccf){_0x208992[_0x7e3b('0x40')]=_0x4e6ccf;return _0x208992;})[_0x7e3b('0x25')](respondWithFilteredResult(_0x1a21ce,_0xa54046))[_0x7e3b('0x41')](handleError(_0x1a21ce,null));};exports[_0x7e3b('0x42')]=function(_0x4e8cfb,_0x2e292c){var _0x38ad2a={'raw':![],'where':{'id':_0x4e8cfb[_0x7e3b('0x43')]['id']}},_0x1b4e12={};_0x1b4e12[_0x7e3b('0x2e')]=_[_0x7e3b('0x30')](db[_0x7e3b('0x2b')][_0x7e3b('0x2c')]);_0x1b4e12['query']=_['keys'](_0x4e8cfb[_0x7e3b('0x2f')]);_0x1b4e12[_0x7e3b('0x31')]=_[_0x7e3b('0x32')](_0x1b4e12[_0x7e3b('0x2e')],_0x1b4e12[_0x7e3b('0x2f')]);_0x38ad2a[_0x7e3b('0x33')]=_[_0x7e3b('0x32')](_0x1b4e12[_0x7e3b('0x2e')],qs[_0x7e3b('0x34')](_0x4e8cfb[_0x7e3b('0x2f')][_0x7e3b('0x34')]));_0x38ad2a['attributes']=_0x38ad2a[_0x7e3b('0x33')]['length']?_0x38ad2a[_0x7e3b('0x33')]:_0x1b4e12[_0x7e3b('0x2e')];if(_0x4e8cfb[_0x7e3b('0x2f')][_0x7e3b('0x44')]){_0x38ad2a[_0x7e3b('0x3e')]=[{'all':!![]}];}_0x38ad2a=_['merge']({},_0x38ad2a,_0x4e8cfb[_0x7e3b('0x45')]);return db[_0x7e3b('0x2b')][_0x7e3b('0x46')](_0x38ad2a)[_0x7e3b('0x25')](handleEntityNotFound(_0x2e292c,null))[_0x7e3b('0x25')](respondWithResult(_0x2e292c,null))[_0x7e3b('0x41')](handleError(_0x2e292c,null));};exports[_0x7e3b('0x47')]=function(_0xb4a844,_0x2e5a8d){return db[_0x7e3b('0x2b')][_0x7e3b('0x47')](_0xb4a844[_0x7e3b('0x48')],{})['then'](respondWithResult(_0x2e5a8d,0xc9))[_0x7e3b('0x41')](handleError(_0x2e5a8d,null));};exports[_0x7e3b('0x23')]=function(_0x15c8fb,_0x4f39c5){if(_0x15c8fb[_0x7e3b('0x48')]['id']){delete _0x15c8fb[_0x7e3b('0x48')]['id'];}return db[_0x7e3b('0x2b')][_0x7e3b('0x46')]({'where':{'id':_0x15c8fb[_0x7e3b('0x43')]['id']}})[_0x7e3b('0x25')](handleEntityNotFound(_0x4f39c5,null))[_0x7e3b('0x25')](saveUpdates(_0x15c8fb[_0x7e3b('0x48')],null))[_0x7e3b('0x25')](respondWithResult(_0x4f39c5,null))[_0x7e3b('0x41')](handleError(_0x4f39c5,null));};exports[_0x7e3b('0x24')]=function(_0x116cc2,_0x2ce0fd){return db[_0x7e3b('0x2b')]['find']({'where':{'id':_0x116cc2['params']['id']}})[_0x7e3b('0x25')](handleEntityNotFound(_0x2ce0fd,null))['then'](removeEntity(_0x2ce0fd,null))[_0x7e3b('0x41')](handleError(_0x2ce0fd,null));};exports[_0x7e3b('0x49')]=function(_0x2064c9,_0x3917f2,_0x2b93c5){var _0x527e4b={};var _0x4f6b2d={};var _0x358bf9;var _0x1a48c9;return db[_0x7e3b('0x2b')][_0x7e3b('0x4a')]({'where':{'id':_0x2064c9[_0x7e3b('0x43')]['id']}})['then'](handleEntityNotFound(_0x3917f2,null))[_0x7e3b('0x25')](function(_0x6baaa){if(_0x6baaa){_0x358bf9=_0x6baaa;_0x4f6b2d[_0x7e3b('0x2e')]=_[_0x7e3b('0x30')](db[_0x7e3b('0x4b')]['rawAttributes']);_0x4f6b2d[_0x7e3b('0x2f')]=_[_0x7e3b('0x30')](_0x2064c9[_0x7e3b('0x2f')]);_0x4f6b2d[_0x7e3b('0x31')]=_[_0x7e3b('0x32')](_0x4f6b2d[_0x7e3b('0x2e')],_0x4f6b2d[_0x7e3b('0x2f')]);_0x527e4b[_0x7e3b('0x33')]=_['intersection'](_0x4f6b2d['model'],qs[_0x7e3b('0x34')](_0x2064c9[_0x7e3b('0x2f')][_0x7e3b('0x34')]));_0x527e4b['attributes']=_0x527e4b['attributes'][_0x7e3b('0x4c')]?_0x527e4b[_0x7e3b('0x33')]:_0x4f6b2d['model'];_0x527e4b['order']=qs['sort'](_0x2064c9[_0x7e3b('0x2f')][_0x7e3b('0x38')]);_0x527e4b['where']=qs[_0x7e3b('0x31')](_['pick'](_0x2064c9[_0x7e3b('0x2f')],_0x4f6b2d[_0x7e3b('0x31')]));if(_0x2064c9['query'][_0x7e3b('0x3a')]){_0x527e4b[_0x7e3b('0x3b')]=_[_0x7e3b('0x3c')](_0x527e4b[_0x7e3b('0x3b')],{'$or':_['map'](_0x527e4b[_0x7e3b('0x33')],function(_0x11c29e){var _0x5d7acf={};_0x5d7acf[_0x11c29e]={'$like':'%'+_0x2064c9[_0x7e3b('0x2f')][_0x7e3b('0x3a')]+'%'};return _0x5d7acf;})});}_0x527e4b=_[_0x7e3b('0x3c')]({},_0x527e4b,_0x2064c9[_0x7e3b('0x45')]);return _0x358bf9[_0x7e3b('0x49')](_0x527e4b);}})[_0x7e3b('0x25')](function(_0x44c65b){if(_0x44c65b){_0x1a48c9=_0x44c65b[_0x7e3b('0x4c')];if(!_0x2064c9[_0x7e3b('0x2f')][_0x7e3b('0x35')](_0x7e3b('0x36'))){_0x527e4b['limit']=qs['limit'](_0x2064c9[_0x7e3b('0x2f')][_0x7e3b('0x1d')]);_0x527e4b[_0x7e3b('0x1b')]=qs[_0x7e3b('0x1b')](_0x2064c9[_0x7e3b('0x2f')][_0x7e3b('0x1b')]);}return _0x358bf9[_0x7e3b('0x49')](_0x527e4b);}})['then'](function(_0x412699){if(_0x412699){return _0x412699?{'count':_0x1a48c9,'rows':_0x412699}:null;}})[_0x7e3b('0x25')](respondWithResult(_0x3917f2,null))[_0x7e3b('0x41')](handleError(_0x3917f2,null));};exports['addConfiguration']=function(_0x68a221,_0x323272,_0x5ef0b0){if(_0x68a221[_0x7e3b('0x48')]['id']){delete _0x68a221[_0x7e3b('0x48')]['id'];}return db[_0x7e3b('0x2b')][_0x7e3b('0x4a')]({'where':{'id':_0x68a221['params']['id']}})[_0x7e3b('0x25')](handleEntityNotFound(_0x323272,null))[_0x7e3b('0x25')](function(_0x5566ff){if(_0x5566ff){_0x68a221[_0x7e3b('0x48')]['AccountId']=_0x5566ff['id'];_0x68a221[_0x7e3b('0x48')][_0x7e3b('0x4d')]=integrations[_0x7e3b('0x4e')](_0x68a221[_0x7e3b('0x48')][_0x7e3b('0x4f')],_0x68a221['body']['type']);_0x68a221['body']['Descriptions']=integrations[_0x7e3b('0x50')](_0x68a221[_0x7e3b('0x48')][_0x7e3b('0x4f')],_0x68a221[_0x7e3b('0x48')][_0x7e3b('0x3d')]);return db[_0x7e3b('0x4b')][_0x7e3b('0x47')](_0x68a221[_0x7e3b('0x48')],{'include':[{'model':db[_0x7e3b('0x51')],'as':_0x7e3b('0x4d')},{'model':db[_0x7e3b('0x51')],'as':_0x7e3b('0x52')}]});}return null;})[_0x7e3b('0x25')](respondWithResult(_0x323272,null))[_0x7e3b('0x41')](handleError(_0x323272,null));};exports['getFields']=function(_0x52d727,_0x15534f,_0x2e8af2){var _0x1fbd00=[{'name':_0x7e3b('0x53'),'label':_0x7e3b('0x53'),'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 _0x5e1699='';return db[_0x7e3b('0x2b')][_0x7e3b('0x4a')]({'where':{'id':_0x52d727[_0x7e3b('0x43')]['id']},'attributes':['id','remoteUri',_0x7e3b('0x54'),_0x7e3b('0x55'),'password','consumerKey',_0x7e3b('0x56'),_0x7e3b('0x57'),_0x7e3b('0x58')]})[_0x7e3b('0x25')](handleEntityNotFound(_0x15534f,null))[_0x7e3b('0x25')](function(_0x102814){if(_0x102814){_0x5e1699=_0x102814[_0x7e3b('0x59')];var _0x5b3101=_0x5e1699['slice'](-0x1);if(_0x5b3101==='/'){_0x5e1699=_0x5e1699[_0x7e3b('0x5a')](0x0,_0x5e1699[_0x7e3b('0x5b')](_0x5b3101));}var _0x33cd3e={'method':'GET','uri':util[_0x7e3b('0x5c')]('%s/custom_fields',_0x5e1699),'headers':{'Content-Type':_0x7e3b('0x5d'),'Accept':'application/json'},'json':!![]};if(_0x102814[_0x7e3b('0x54')]===_0x7e3b('0x5e')){_0x33cd3e[_0x7e3b('0x5f')][_0x7e3b('0x60')]=util[_0x7e3b('0x5c')](_0x7e3b('0x61'),new Buffer(util[_0x7e3b('0x5c')](_0x7e3b('0x62'),_0x102814[_0x7e3b('0x55')],_0x102814[_0x7e3b('0x63')]))[_0x7e3b('0x64')]('base64'));}return rp(_0x33cd3e)[_0x7e3b('0x25')](function(_0x318fa0){return _0x1fbd00[_0x7e3b('0x65')](_[_0x7e3b('0x2a')](_0x318fa0[_0x7e3b('0x66')]['entries'],function(_0x2490cf){return{'id':_0x2490cf['name'],'name':_0x2490cf[_0x7e3b('0x27')],'type':_0x2490cf[_0x7e3b('0x3d')],'active':_0x2490cf[_0x7e3b('0x67')],'label':_0x2490cf[_0x7e3b('0x68')],'custom':!![]};}));});}})['then'](function(_0x4f8b56){return{'count':_0x4f8b56[_0x7e3b('0x4c')],'rows':_0x4f8b56};})[_0x7e3b('0x25')](respondWithResult(_0x15534f,null))[_0x7e3b('0x41')](function(_0x337cce){var _0x2d5b49=_0x52d727['query']['test']?0x1f4:_0x337cce['statusCode']||0x1f4;logger[_0x7e3b('0x26')](_0x7e3b('0x69'),'getFields',_0x2d5b49,JSON[_0x7e3b('0x6a')](_0x337cce));delete _0x337cce['name'];if(_0x2d5b49===0x191){_0x2d5b49=0x190;}_0x15534f[_0x7e3b('0x1f')](_0x2d5b49)['send'](_0x52d727[_0x7e3b('0x2f')]['test']?{'message':_0x7e3b('0x6b'),'statusCode':_0x337cce['statusCode']}:_0x337cce);});}; \ No newline at end of file diff --git a/server/api/intDeskAccount/intDeskAccount.model.js b/server/api/intDeskAccount/intDeskAccount.model.js new file mode 100644 index 0000000..0f9ba27 --- /dev/null +++ b/server/api/intDeskAccount/intDeskAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf839=['../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intDeskAccount.attributes'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xf839,0x1cb));var _0x9f83=function(_0x4370a3,_0x3adfa3){_0x4370a3=_0x4370a3-0x0;var _0x21fb72=_0xf839[_0x4370a3];return _0x21fb72;};'use strict';var _=require('lodash');var util=require(_0x9f83('0x0'));var logger=require(_0x9f83('0x1'))(_0x9f83('0x2'));var moment=require(_0x9f83('0x3'));var BPromise=require(_0x9f83('0x4'));var rp=require(_0x9f83('0x5'));var fs=require('fs');var path=require(_0x9f83('0x6'));var rimraf=require('rimraf');var config=require(_0x9f83('0x7'));var attributes=require(_0x9f83('0x8'));var integrations=require(_0x9f83('0x9'));module['exports']=function(_0x5560f9,_0x2964e0){return _0x5560f9[_0x9f83('0xa')](_0x9f83('0xb'),attributes,{'tableName':_0x9f83('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intDeskAccount/intDeskAccount.rpc.js b/server/api/intDeskAccount/intDeskAccount.rpc.js new file mode 100644 index 0000000..4a0af1b --- /dev/null +++ b/server/api/intDeskAccount/intDeskAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf9c7=['then','info','DeskAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','catch','GetDeskAccount','findAll','options','raw','attributes','include','model','map','ShowDeskAccount','DeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xf9c7,0x1e9));var _0x7f9c=function(_0x49fb35,_0x121edc){_0x49fb35=_0x49fb35-0x0;var _0xd05ed7=_0xf9c7[_0x49fb35];return _0xd05ed7;};'use strict';var _=require(_0x7f9c('0x0'));var util=require(_0x7f9c('0x1'));var moment=require(_0x7f9c('0x2'));var BPromise=require(_0x7f9c('0x3'));var rs=require(_0x7f9c('0x4'));var fs=require('fs');var Redis=require(_0x7f9c('0x5'));var db=require(_0x7f9c('0x6'))['db'];var utils=require(_0x7f9c('0x7'));var logger=require(_0x7f9c('0x8'))(_0x7f9c('0x9'));var config=require(_0x7f9c('0xa'));var jayson=require(_0x7f9c('0xb'));var client=jayson[_0x7f9c('0xc')][_0x7f9c('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x130e95,_0x2f6891,_0x47d406){return new BPromise(function(_0x2128e6,_0x2421ea){return client[_0x7f9c('0xe')](_0x130e95,_0x47d406)[_0x7f9c('0xf')](function(_0x2e122d){logger[_0x7f9c('0x10')](_0x7f9c('0x11'),_0x2f6891,'request\x20sent');logger[_0x7f9c('0x12')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x2f6891,'request\x20sent',JSON[_0x7f9c('0x13')](_0x2e122d));if(_0x2e122d[_0x7f9c('0x14')]){if(_0x2e122d[_0x7f9c('0x14')][_0x7f9c('0x15')]===0x1f4){logger[_0x7f9c('0x14')](_0x7f9c('0x11'),_0x2f6891,_0x2e122d[_0x7f9c('0x14')][_0x7f9c('0x16')]);return _0x2421ea(_0x2e122d[_0x7f9c('0x14')][_0x7f9c('0x16')]);}logger[_0x7f9c('0x14')](_0x7f9c('0x11'),_0x2f6891,_0x2e122d[_0x7f9c('0x14')]['message']);return _0x2128e6(_0x2e122d[_0x7f9c('0x14')][_0x7f9c('0x16')]);}else{logger['info'](_0x7f9c('0x11'),_0x2f6891,_0x7f9c('0x17'));_0x2128e6(_0x2e122d['result']['message']);}})[_0x7f9c('0x18')](function(_0x2b74ed){logger['error'](_0x7f9c('0x11'),_0x2f6891,_0x2b74ed);_0x2421ea(_0x2b74ed);});});}exports[_0x7f9c('0x19')]=function(_0x15e08c){var _0x186599=this;return new Promise(function(_0x4fb29c,_0x3113e4){return db['DeskAccount'][_0x7f9c('0x1a')]({'raw':_0x15e08c[_0x7f9c('0x1b')]?_0x15e08c['options'][_0x7f9c('0x1c')]===undefined?!![]:![]:!![],'where':_0x15e08c[_0x7f9c('0x1b')]?_0x15e08c[_0x7f9c('0x1b')]['where']||null:null,'attributes':_0x15e08c[_0x7f9c('0x1b')]?_0x15e08c[_0x7f9c('0x1b')][_0x7f9c('0x1d')]||null:null,'limit':_0x15e08c['options']?_0x15e08c[_0x7f9c('0x1b')]['limit']||null:null,'include':_0x15e08c['options']?_0x15e08c[_0x7f9c('0x1b')]['include']?_['map'](_0x15e08c[_0x7f9c('0x1b')][_0x7f9c('0x1e')],function(_0xf879a6){return{'model':db[_0xf879a6[_0x7f9c('0x1f')]],'as':_0xf879a6['as'],'attributes':_0xf879a6[_0x7f9c('0x1d')],'include':_0xf879a6[_0x7f9c('0x1e')]?_[_0x7f9c('0x20')](_0xf879a6[_0x7f9c('0x1e')],function(_0x181d42){return{'model':db[_0x181d42[_0x7f9c('0x1f')]],'as':_0x181d42['as'],'attributes':_0x181d42['attributes'],'include':_0x181d42[_0x7f9c('0x1e')]?_[_0x7f9c('0x20')](_0x181d42[_0x7f9c('0x1e')],function(_0x2c49d8){return{'model':db[_0x2c49d8[_0x7f9c('0x1f')]],'as':_0x2c49d8['as'],'attributes':_0x2c49d8[_0x7f9c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7f9c('0xf')](function(_0x2787b2){logger[_0x7f9c('0x10')]('GetDeskAccount',_0x15e08c);logger[_0x7f9c('0x12')](_0x7f9c('0x19'),_0x15e08c,JSON[_0x7f9c('0x13')](_0x2787b2));_0x4fb29c(_0x2787b2);})[_0x7f9c('0x18')](function(_0xf43824){logger['error']('GetDeskAccount',_0xf43824[_0x7f9c('0x16')],_0x15e08c);_0x3113e4(_0x186599[_0x7f9c('0x14')](0x1f4,_0xf43824[_0x7f9c('0x16')]));});});};exports[_0x7f9c('0x21')]=function(_0x4d77e8){var _0x13f6bd=this;return new Promise(function(_0x3b5baa,_0x1c67c2){return db[_0x7f9c('0x22')][_0x7f9c('0x23')]({'raw':_0x4d77e8[_0x7f9c('0x1b')]?_0x4d77e8[_0x7f9c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4d77e8['options']?_0x4d77e8[_0x7f9c('0x1b')]['where']||null:null,'attributes':_0x4d77e8[_0x7f9c('0x1b')]?_0x4d77e8[_0x7f9c('0x1b')][_0x7f9c('0x1d')]||null:null,'include':_0x4d77e8[_0x7f9c('0x1b')]?_0x4d77e8['options'][_0x7f9c('0x1e')]?_['map'](_0x4d77e8[_0x7f9c('0x1b')][_0x7f9c('0x1e')],function(_0x1382e6){return{'model':db[_0x1382e6[_0x7f9c('0x1f')]],'as':_0x1382e6['as'],'attributes':_0x1382e6[_0x7f9c('0x1d')],'include':_0x1382e6[_0x7f9c('0x1e')]?_[_0x7f9c('0x20')](_0x1382e6[_0x7f9c('0x1e')],function(_0x267be4){return{'model':db[_0x267be4[_0x7f9c('0x1f')]],'as':_0x267be4['as'],'attributes':_0x267be4[_0x7f9c('0x1d')],'include':_0x267be4[_0x7f9c('0x1e')]?_['map'](_0x267be4[_0x7f9c('0x1e')],function(_0xba2c71){return{'model':db[_0xba2c71['model']],'as':_0xba2c71['as'],'attributes':_0xba2c71[_0x7f9c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x351ee4){logger['info'](_0x7f9c('0x21'),_0x4d77e8);logger[_0x7f9c('0x12')]('ShowDeskAccount',_0x4d77e8,JSON[_0x7f9c('0x13')](_0x351ee4));_0x3b5baa(_0x351ee4);})['catch'](function(_0x34a733){logger[_0x7f9c('0x14')](_0x7f9c('0x21'),_0x34a733[_0x7f9c('0x16')],_0x4d77e8);_0x1c67c2(_0x13f6bd[_0x7f9c('0x14')](0x1f4,_0x34a733[_0x7f9c('0x16')]));});});}; \ No newline at end of file diff --git a/server/api/intDeskConfiguration/index.js b/server/api/intDeskConfiguration/index.js new file mode 100644 index 0000000..415296f --- /dev/null +++ b/server/api/intDeskConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x3eee0a,_0x915548){var _0x1051b4=function(_0x309bb8){while(--_0x309bb8){_0x3eee0a['push'](_0x3eee0a['shift']());}};_0x1051b4(++_0x915548);}(_0x9c44,0x178));var _0x49c4=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x9c44[_0x565c49];return _0x20ca34;};'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['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router; \ No newline at end of file diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js b/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js new file mode 100644 index 0000000..9c796e3 --- /dev/null +++ b/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x71f9=['STRING','sequelize'];(function(_0x56d0d0,_0x36961a){var _0x20b608=function(_0x1657c4){while(--_0x1657c4){_0x56d0d0['push'](_0x56d0d0['shift']());}};_0x20b608(++_0x36961a);}(_0x71f9,0xff));var _0x971f=function(_0xed1ba6,_0x23f317){_0xed1ba6=_0xed1ba6-0x0;var _0xd9036b=_0x71f9[_0xed1ba6];return _0xd9036b;};'use strict';var Sequelize=require(_0x971f('0x0'));module['exports']={'name':{'type':Sequelize[_0x971f('0x1')]},'description':{'type':Sequelize[_0x971f('0x1')]}}; \ No newline at end of file diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.controller.js b/server/api/intDeskConfiguration/intDeskConfiguration.controller.js new file mode 100644 index 0000000..2d214d4 --- /dev/null +++ b/server/api/intDeskConfiguration/intDeskConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4c5e=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','includeAll','include','find','create','body','update','getFields','findOne','params','DeskField','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','DeskConfiguration','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty'];(function(_0x3542d2,_0x4586bb){var _0x175eac=function(_0x471df9){while(--_0x471df9){_0x3542d2['push'](_0x3542d2['shift']());}};_0x175eac(++_0x4586bb);}(_0x4c5e,0x73));var _0xe4c5=function(_0x367954,_0x54cdcc){_0x367954=_0x367954-0x0;var _0x4268aa=_0x4c5e[_0x367954];return _0x4268aa;};'use strict';var emlformat=require(_0xe4c5('0x0'));var rimraf=require(_0xe4c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe4c5('0x2'));var rp=require(_0xe4c5('0x3'));var moment=require(_0xe4c5('0x4'));var BPromise=require(_0xe4c5('0x5'));var Mustache=require(_0xe4c5('0x6'));var util=require(_0xe4c5('0x7'));var path=require(_0xe4c5('0x8'));var sox=require(_0xe4c5('0x9'));var csv=require(_0xe4c5('0xa'));var ejs=require(_0xe4c5('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe4c5('0xc'));var crypto=require(_0xe4c5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe4c5('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe4c5('0xf'));var Papa=require(_0xe4c5('0x10'));var Redis=require('ioredis');var authService=require(_0xe4c5('0x11'));var qs=require(_0xe4c5('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe4c5('0x13'));var logger=require(_0xe4c5('0x14'))(_0xe4c5('0x15'));var utils=require('../../config/utils');var config=require(_0xe4c5('0x16'));var licenseUtil=require(_0xe4c5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x253dde,_0x103844){_0x103844=_0x103844||0xcc;return function(_0xe673ed){if(_0xe673ed){return _0x253dde[_0xe4c5('0x18')](_0x103844);}return _0x253dde[_0xe4c5('0x19')](_0x103844)[_0xe4c5('0x1a')]();};}function respondWithResult(_0x5c8819,_0x1e91a7){_0x1e91a7=_0x1e91a7||0xc8;return function(_0x3e98b4){if(_0x3e98b4){return _0x5c8819[_0xe4c5('0x19')](_0x1e91a7)[_0xe4c5('0x1b')](_0x3e98b4);}};}function respondWithFilteredResult(_0x70094d,_0x20a4aa){return function(_0x4d834f){if(_0x4d834f){var _0x2c7e3c=typeof _0x20a4aa['offset']==='undefined'&&typeof _0x20a4aa[_0xe4c5('0x1c')]===_0xe4c5('0x1d');var _0x3ba63c=_0x4d834f[_0xe4c5('0x1e')];var _0x1cbb32=_0x2c7e3c?0x0:_0x20a4aa[_0xe4c5('0x1f')];var _0x2a9178=_0x2c7e3c?_0x4d834f['count']:_0x20a4aa[_0xe4c5('0x1f')]+_0x20a4aa[_0xe4c5('0x1c')];var _0x477a2e;if(_0x2a9178>=_0x3ba63c){_0x2a9178=_0x3ba63c;_0x477a2e=0xc8;}else{_0x477a2e=0xce;}_0x70094d[_0xe4c5('0x19')](_0x477a2e);return _0x70094d[_0xe4c5('0x20')](_0xe4c5('0x21'),_0x1cbb32+'-'+_0x2a9178+'/'+_0x3ba63c)[_0xe4c5('0x1b')](_0x4d834f);}return null;};}function patchUpdates(_0x86454b){return function(_0x59ac74){try{jsonpatch[_0xe4c5('0x22')](_0x59ac74,_0x86454b,!![]);}catch(_0x3b6f68){return BPromise['reject'](_0x3b6f68);}return _0x59ac74[_0xe4c5('0x23')]();};}function saveUpdates(_0x17c980,_0xe0cf68){return function(_0x496540){if(_0x496540){return _0x496540['update'](_0x17c980)[_0xe4c5('0x24')](function(_0xd0669e){return _0xd0669e;});}return null;};}function removeEntity(_0x23c08b,_0x4505d3){return function(_0x4fd9f3){if(_0x4fd9f3){return _0x4fd9f3[_0xe4c5('0x25')]()[_0xe4c5('0x24')](function(){_0x23c08b[_0xe4c5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b516f,_0x4507bf){return function(_0x5c85c8){if(!_0x5c85c8){_0x4b516f['sendStatus'](0x194);}return _0x5c85c8;};}function handleError(_0x5f5d53,_0x366949){_0x366949=_0x366949||0x1f4;return function(_0x47dd35){logger[_0xe4c5('0x26')](_0x47dd35[_0xe4c5('0x27')]);if(_0x47dd35['name']){delete _0x47dd35[_0xe4c5('0x28')];}_0x5f5d53[_0xe4c5('0x19')](_0x366949)[_0xe4c5('0x29')](_0x47dd35);};}exports[_0xe4c5('0x2a')]=function(_0x35ef84,_0x56a802){var _0x44e92b={},_0x450e1f={},_0x4205fc={'count':0x0,'rows':[]};var _0x4179aa=_[_0xe4c5('0x2b')](db[_0xe4c5('0x2c')][_0xe4c5('0x2d')],function(_0x4f2bbf){return{'name':_0x4f2bbf[_0xe4c5('0x2e')],'type':_0x4f2bbf['type'][_0xe4c5('0x2f')]};});_0x450e1f['model']=_[_0xe4c5('0x2b')](_0x4179aa,_0xe4c5('0x28'));_0x450e1f[_0xe4c5('0x30')]=_[_0xe4c5('0x31')](_0x35ef84['query']);_0x450e1f[_0xe4c5('0x32')]=_['intersection'](_0x450e1f[_0xe4c5('0x33')],_0x450e1f[_0xe4c5('0x30')]);_0x44e92b[_0xe4c5('0x34')]=_[_0xe4c5('0x35')](_0x450e1f['model'],qs[_0xe4c5('0x36')](_0x35ef84[_0xe4c5('0x30')][_0xe4c5('0x36')]));_0x44e92b['attributes']=_0x44e92b[_0xe4c5('0x34')][_0xe4c5('0x37')]?_0x44e92b['attributes']:_0x450e1f[_0xe4c5('0x33')];if(!_0x35ef84[_0xe4c5('0x30')][_0xe4c5('0x38')](_0xe4c5('0x39'))){_0x44e92b['limit']=qs[_0xe4c5('0x1c')](_0x35ef84[_0xe4c5('0x30')]['limit']);_0x44e92b[_0xe4c5('0x1f')]=qs[_0xe4c5('0x1f')](_0x35ef84[_0xe4c5('0x30')][_0xe4c5('0x1f')]);}_0x44e92b[_0xe4c5('0x3a')]=qs[_0xe4c5('0x3b')](_0x35ef84['query'][_0xe4c5('0x3b')]);_0x44e92b[_0xe4c5('0x3c')]=qs[_0xe4c5('0x32')](_[_0xe4c5('0x3d')](_0x35ef84[_0xe4c5('0x30')],_0x450e1f[_0xe4c5('0x32')]),_0x4179aa);if(_0x35ef84[_0xe4c5('0x30')][_0xe4c5('0x3e')]){_0x44e92b[_0xe4c5('0x3c')]=_[_0xe4c5('0x3f')](_0x44e92b[_0xe4c5('0x3c')],{'$or':_[_0xe4c5('0x2b')](_0x4179aa,function(_0x58297d){if(_0x58297d['type']!==_0xe4c5('0x40')){var _0x2254a4={};_0x2254a4[_0x58297d['name']]={'$like':'%'+_0x35ef84[_0xe4c5('0x30')][_0xe4c5('0x3e')]+'%'};return _0x2254a4;}})});}_0x44e92b=_[_0xe4c5('0x3f')]({},_0x44e92b,_0x35ef84[_0xe4c5('0x41')]);var _0xd52523={'where':_0x44e92b[_0xe4c5('0x3c')]};return db['DeskConfiguration'][_0xe4c5('0x1e')](_0xd52523)['then'](function(_0x491f60){_0x4205fc['count']=_0x491f60;if(_0x35ef84['query']['includeAll']){_0x44e92b['include']=[{'all':!![]}];}return db['DeskConfiguration'][_0xe4c5('0x42')](_0x44e92b);})['then'](function(_0x7b502c){_0x4205fc[_0xe4c5('0x43')]=_0x7b502c;return _0x4205fc;})[_0xe4c5('0x24')](respondWithFilteredResult(_0x56a802,_0x44e92b))[_0xe4c5('0x44')](handleError(_0x56a802,null));};exports[_0xe4c5('0x45')]=function(_0x33b768,_0x4989d4){var _0x4d2c41={'raw':![],'where':{'id':_0x33b768['params']['id']}},_0x145437={};_0x145437[_0xe4c5('0x33')]=_[_0xe4c5('0x31')](db['DeskConfiguration'][_0xe4c5('0x2d')]);_0x145437[_0xe4c5('0x30')]=_[_0xe4c5('0x31')](_0x33b768[_0xe4c5('0x30')]);_0x145437[_0xe4c5('0x32')]=_['intersection'](_0x145437[_0xe4c5('0x33')],_0x145437['query']);_0x4d2c41['attributes']=_[_0xe4c5('0x35')](_0x145437['model'],qs[_0xe4c5('0x36')](_0x33b768[_0xe4c5('0x30')]['fields']));_0x4d2c41[_0xe4c5('0x34')]=_0x4d2c41[_0xe4c5('0x34')]['length']?_0x4d2c41[_0xe4c5('0x34')]:_0x145437[_0xe4c5('0x33')];if(_0x33b768[_0xe4c5('0x30')][_0xe4c5('0x46')]){_0x4d2c41[_0xe4c5('0x47')]=[{'all':!![]}];}_0x4d2c41=_[_0xe4c5('0x3f')]({},_0x4d2c41,_0x33b768[_0xe4c5('0x41')]);return db[_0xe4c5('0x2c')][_0xe4c5('0x48')](_0x4d2c41)[_0xe4c5('0x24')](handleEntityNotFound(_0x4989d4,null))[_0xe4c5('0x24')](respondWithResult(_0x4989d4,null))['catch'](handleError(_0x4989d4,null));};exports['create']=function(_0x3f0f6c,_0x41f381){return db[_0xe4c5('0x2c')][_0xe4c5('0x49')](_0x3f0f6c[_0xe4c5('0x4a')],{})[_0xe4c5('0x24')](respondWithResult(_0x41f381,0xc9))[_0xe4c5('0x44')](handleError(_0x41f381,null));};exports[_0xe4c5('0x4b')]=function(_0x3c3a93,_0x162fa0){if(_0x3c3a93[_0xe4c5('0x4a')]['id']){delete _0x3c3a93[_0xe4c5('0x4a')]['id'];}return db[_0xe4c5('0x2c')][_0xe4c5('0x48')]({'where':{'id':_0x3c3a93['params']['id']}})['then'](handleEntityNotFound(_0x162fa0,null))[_0xe4c5('0x24')](saveUpdates(_0x3c3a93[_0xe4c5('0x4a')],null))[_0xe4c5('0x24')](respondWithResult(_0x162fa0,null))[_0xe4c5('0x44')](handleError(_0x162fa0,null));};exports[_0xe4c5('0x25')]=function(_0x5c7d7c,_0x3753af){return db[_0xe4c5('0x2c')]['find']({'where':{'id':_0x5c7d7c['params']['id']}})[_0xe4c5('0x24')](handleEntityNotFound(_0x3753af,null))[_0xe4c5('0x24')](removeEntity(_0x3753af,null))[_0xe4c5('0x44')](handleError(_0x3753af,null));};exports[_0xe4c5('0x4c')]=function(_0x10d13c,_0x21292b,_0x22201a){var _0x7860f8={};var _0x55edf9={};var _0x4540b4;var _0x357774;return db[_0xe4c5('0x2c')][_0xe4c5('0x4d')]({'where':{'id':_0x10d13c[_0xe4c5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x21292b,null))[_0xe4c5('0x24')](function(_0x23c6f7){if(_0x23c6f7){_0x4540b4=_0x23c6f7;_0x55edf9['model']=_['keys'](db[_0xe4c5('0x4f')][_0xe4c5('0x2d')]);_0x55edf9[_0xe4c5('0x30')]=_[_0xe4c5('0x31')](_0x10d13c['query']);_0x55edf9[_0xe4c5('0x32')]=_[_0xe4c5('0x35')](_0x55edf9['model'],_0x55edf9[_0xe4c5('0x30')]);_0x7860f8['attributes']=_[_0xe4c5('0x35')](_0x55edf9[_0xe4c5('0x33')],qs[_0xe4c5('0x36')](_0x10d13c[_0xe4c5('0x30')]['fields']));_0x7860f8[_0xe4c5('0x34')]=_0x7860f8[_0xe4c5('0x34')][_0xe4c5('0x37')]?_0x7860f8[_0xe4c5('0x34')]:_0x55edf9['model'];_0x7860f8[_0xe4c5('0x3a')]=qs[_0xe4c5('0x3b')](_0x10d13c['query'][_0xe4c5('0x3b')]);_0x7860f8[_0xe4c5('0x3c')]=qs['filters'](_[_0xe4c5('0x3d')](_0x10d13c['query'],_0x55edf9[_0xe4c5('0x32')]));if(_0x10d13c[_0xe4c5('0x30')][_0xe4c5('0x3e')]){_0x7860f8[_0xe4c5('0x3c')]=_[_0xe4c5('0x3f')](_0x7860f8['where'],{'$or':_[_0xe4c5('0x2b')](_0x7860f8[_0xe4c5('0x34')],function(_0x1270a8){var _0x10e0ee={};_0x10e0ee[_0x1270a8]={'$like':'%'+_0x10d13c['query'][_0xe4c5('0x3e')]+'%'};return _0x10e0ee;})});}_0x7860f8=_[_0xe4c5('0x3f')]({},_0x7860f8,_0x10d13c['options']);return _0x4540b4[_0xe4c5('0x4c')](_0x7860f8);}})['then'](function(_0x12ed92){if(_0x12ed92){_0x357774=_0x12ed92[_0xe4c5('0x37')];if(!_0x10d13c['query'][_0xe4c5('0x38')](_0xe4c5('0x39'))){_0x7860f8[_0xe4c5('0x1c')]=qs[_0xe4c5('0x1c')](_0x10d13c['query'][_0xe4c5('0x1c')]);_0x7860f8['offset']=qs['offset'](_0x10d13c[_0xe4c5('0x30')][_0xe4c5('0x1f')]);}return _0x4540b4[_0xe4c5('0x4c')](_0x7860f8);}})[_0xe4c5('0x24')](function(_0x1df1d0){if(_0x1df1d0){return _0x1df1d0?{'count':_0x357774,'rows':_0x1df1d0}:null;}})[_0xe4c5('0x24')](respondWithResult(_0x21292b,null))[_0xe4c5('0x44')](handleError(_0x21292b,null));};exports[_0xe4c5('0x50')]=function(_0x54ae1f,_0x277c3c,_0x53f346){var _0x137adf={};var _0x54bf20={};var _0x2f3f04;var _0x257cdd;return db[_0xe4c5('0x2c')]['findOne']({'where':{'id':_0x54ae1f[_0xe4c5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x277c3c,null))[_0xe4c5('0x24')](function(_0x4925f0){if(_0x4925f0){_0x2f3f04=_0x4925f0;_0x54bf20[_0xe4c5('0x33')]=_['keys'](db[_0xe4c5('0x4f')][_0xe4c5('0x2d')]);_0x54bf20[_0xe4c5('0x30')]=_[_0xe4c5('0x31')](_0x54ae1f['query']);_0x54bf20[_0xe4c5('0x32')]=_['intersection'](_0x54bf20['model'],_0x54bf20[_0xe4c5('0x30')]);_0x137adf[_0xe4c5('0x34')]=_[_0xe4c5('0x35')](_0x54bf20[_0xe4c5('0x33')],qs[_0xe4c5('0x36')](_0x54ae1f['query'][_0xe4c5('0x36')]));_0x137adf[_0xe4c5('0x34')]=_0x137adf['attributes']['length']?_0x137adf[_0xe4c5('0x34')]:_0x54bf20[_0xe4c5('0x33')];_0x137adf[_0xe4c5('0x3a')]=qs[_0xe4c5('0x3b')](_0x54ae1f[_0xe4c5('0x30')][_0xe4c5('0x3b')]);_0x137adf[_0xe4c5('0x3c')]=qs[_0xe4c5('0x32')](_['pick'](_0x54ae1f[_0xe4c5('0x30')],_0x54bf20[_0xe4c5('0x32')]));if(_0x54ae1f['query'][_0xe4c5('0x3e')]){_0x137adf['where']=_['merge'](_0x137adf[_0xe4c5('0x3c')],{'$or':_['map'](_0x137adf[_0xe4c5('0x34')],function(_0x322ec2){var _0x436ff2={};_0x436ff2[_0x322ec2]={'$like':'%'+_0x54ae1f[_0xe4c5('0x30')][_0xe4c5('0x3e')]+'%'};return _0x436ff2;})});}_0x137adf=_[_0xe4c5('0x3f')]({},_0x137adf,_0x54ae1f[_0xe4c5('0x41')]);return _0x2f3f04['getSubjects'](_0x137adf);}})[_0xe4c5('0x24')](function(_0x3ea1b8){if(_0x3ea1b8){_0x257cdd=_0x3ea1b8[_0xe4c5('0x37')];if(!_0x54ae1f[_0xe4c5('0x30')][_0xe4c5('0x38')]('nolimit')){_0x137adf[_0xe4c5('0x1c')]=qs['limit'](_0x54ae1f[_0xe4c5('0x30')][_0xe4c5('0x1c')]);_0x137adf[_0xe4c5('0x1f')]=qs['offset'](_0x54ae1f[_0xe4c5('0x30')][_0xe4c5('0x1f')]);}return _0x2f3f04['getSubjects'](_0x137adf);}})[_0xe4c5('0x24')](function(_0x17662e){if(_0x17662e){return _0x17662e?{'count':_0x257cdd,'rows':_0x17662e}:null;}})['then'](respondWithResult(_0x277c3c,null))[_0xe4c5('0x44')](handleError(_0x277c3c,null));};exports['getDescriptions']=function(_0x1a0992,_0x4ccee8,_0x12edba){var _0x1e3fab={};var _0x533490={};var _0x287390;var _0x18feea;return db[_0xe4c5('0x2c')][_0xe4c5('0x4d')]({'where':{'id':_0x1a0992[_0xe4c5('0x4e')]['id']}})[_0xe4c5('0x24')](handleEntityNotFound(_0x4ccee8,null))[_0xe4c5('0x24')](function(_0x3952ab){if(_0x3952ab){_0x287390=_0x3952ab;_0x533490[_0xe4c5('0x33')]=_[_0xe4c5('0x31')](db['DeskField'][_0xe4c5('0x2d')]);_0x533490[_0xe4c5('0x30')]=_[_0xe4c5('0x31')](_0x1a0992[_0xe4c5('0x30')]);_0x533490['filters']=_[_0xe4c5('0x35')](_0x533490[_0xe4c5('0x33')],_0x533490[_0xe4c5('0x30')]);_0x1e3fab[_0xe4c5('0x34')]=_['intersection'](_0x533490[_0xe4c5('0x33')],qs[_0xe4c5('0x36')](_0x1a0992[_0xe4c5('0x30')][_0xe4c5('0x36')]));_0x1e3fab['attributes']=_0x1e3fab[_0xe4c5('0x34')]['length']?_0x1e3fab['attributes']:_0x533490[_0xe4c5('0x33')];_0x1e3fab['order']=qs[_0xe4c5('0x3b')](_0x1a0992[_0xe4c5('0x30')]['sort']);_0x1e3fab[_0xe4c5('0x3c')]=qs['filters'](_['pick'](_0x1a0992['query'],_0x533490[_0xe4c5('0x32')]));if(_0x1a0992[_0xe4c5('0x30')][_0xe4c5('0x3e')]){_0x1e3fab[_0xe4c5('0x3c')]=_[_0xe4c5('0x3f')](_0x1e3fab['where'],{'$or':_[_0xe4c5('0x2b')](_0x1e3fab[_0xe4c5('0x34')],function(_0x4babb0){var _0x354c1e={};_0x354c1e[_0x4babb0]={'$like':'%'+_0x1a0992[_0xe4c5('0x30')][_0xe4c5('0x3e')]+'%'};return _0x354c1e;})});}_0x1e3fab=_[_0xe4c5('0x3f')]({},_0x1e3fab,_0x1a0992[_0xe4c5('0x41')]);return _0x287390[_0xe4c5('0x51')](_0x1e3fab);}})[_0xe4c5('0x24')](function(_0x2e27f1){if(_0x2e27f1){_0x18feea=_0x2e27f1[_0xe4c5('0x37')];if(!_0x1a0992[_0xe4c5('0x30')][_0xe4c5('0x38')](_0xe4c5('0x39'))){_0x1e3fab['limit']=qs[_0xe4c5('0x1c')](_0x1a0992[_0xe4c5('0x30')][_0xe4c5('0x1c')]);_0x1e3fab[_0xe4c5('0x1f')]=qs['offset'](_0x1a0992[_0xe4c5('0x30')][_0xe4c5('0x1f')]);}return _0x287390[_0xe4c5('0x51')](_0x1e3fab);}})['then'](function(_0x32dfcc){if(_0x32dfcc){return _0x32dfcc?{'count':_0x18feea,'rows':_0x32dfcc}:null;}})[_0xe4c5('0x24')](respondWithResult(_0x4ccee8,null))[_0xe4c5('0x44')](handleError(_0x4ccee8,null));};exports[_0xe4c5('0x52')]=function(_0x2ad71e,_0x432115,_0xacfba3){var _0x312d0d={};var _0x222c49={};var _0x1cf87c;var _0x32fd7f;return db['DeskConfiguration']['findOne']({'where':{'id':_0x2ad71e[_0xe4c5('0x4e')]['id']}})[_0xe4c5('0x24')](handleEntityNotFound(_0x432115,null))[_0xe4c5('0x24')](function(_0x12fd09){if(_0x12fd09){_0x1cf87c=_0x12fd09;_0x222c49[_0xe4c5('0x33')]=_[_0xe4c5('0x31')](db[_0xe4c5('0x53')][_0xe4c5('0x2d')]);_0x222c49[_0xe4c5('0x30')]=_[_0xe4c5('0x31')](_0x2ad71e[_0xe4c5('0x30')]);_0x222c49['filters']=_[_0xe4c5('0x35')](_0x222c49['model'],_0x222c49[_0xe4c5('0x30')]);_0x312d0d[_0xe4c5('0x34')]=_[_0xe4c5('0x35')](_0x222c49[_0xe4c5('0x33')],qs[_0xe4c5('0x36')](_0x2ad71e['query'][_0xe4c5('0x36')]));_0x312d0d[_0xe4c5('0x34')]=_0x312d0d[_0xe4c5('0x34')][_0xe4c5('0x37')]?_0x312d0d['attributes']:_0x222c49['model'];_0x312d0d[_0xe4c5('0x3a')]=qs['sort'](_0x2ad71e[_0xe4c5('0x30')][_0xe4c5('0x3b')]);_0x312d0d[_0xe4c5('0x3c')]=qs[_0xe4c5('0x32')](_['pick'](_0x2ad71e[_0xe4c5('0x30')],_0x222c49['filters']));if(_0x2ad71e[_0xe4c5('0x30')][_0xe4c5('0x3e')]){_0x312d0d[_0xe4c5('0x3c')]=_[_0xe4c5('0x3f')](_0x312d0d[_0xe4c5('0x3c')],{'$or':_['map'](_0x312d0d[_0xe4c5('0x34')],function(_0x3d358f){var _0xd898f0={};_0xd898f0[_0x3d358f]={'$like':'%'+_0x2ad71e[_0xe4c5('0x30')][_0xe4c5('0x3e')]+'%'};return _0xd898f0;})});}_0x312d0d=_['merge']({},_0x312d0d,_0x2ad71e[_0xe4c5('0x41')]);return _0x1cf87c[_0xe4c5('0x52')](_0x312d0d);}})[_0xe4c5('0x24')](function(_0x4445c3){if(_0x4445c3){_0x32fd7f=_0x4445c3[_0xe4c5('0x37')];if(!_0x2ad71e[_0xe4c5('0x30')][_0xe4c5('0x38')](_0xe4c5('0x39'))){_0x312d0d[_0xe4c5('0x1c')]=qs[_0xe4c5('0x1c')](_0x2ad71e[_0xe4c5('0x30')][_0xe4c5('0x1c')]);_0x312d0d[_0xe4c5('0x1f')]=qs['offset'](_0x2ad71e[_0xe4c5('0x30')][_0xe4c5('0x1f')]);}return _0x1cf87c[_0xe4c5('0x52')](_0x312d0d);}})['then'](function(_0x7038bd){if(_0x7038bd){return _0x7038bd?{'count':_0x32fd7f,'rows':_0x7038bd}:null;}})[_0xe4c5('0x24')](respondWithResult(_0x432115,null))[_0xe4c5('0x44')](handleError(_0x432115,null));};exports[_0xe4c5('0x54')]=function(_0x2a7d28,_0x185c32,_0x1079fc){if(_0x2a7d28['body']['id']){delete _0x2a7d28[_0xe4c5('0x4a')]['id'];}return db[_0xe4c5('0x2c')][_0xe4c5('0x4d')]({'where':{'id':_0x2a7d28['params']['id']}})[_0xe4c5('0x24')](handleEntityNotFound(_0x185c32,null))[_0xe4c5('0x24')](function(_0x47e83a){if(_0x47e83a){return _0x47e83a['setTags'](_0x2a7d28[_0xe4c5('0x4a')][_0xe4c5('0x55')]||[]);}return null;})[_0xe4c5('0x24')](respondWithResult(_0x185c32,null))[_0xe4c5('0x44')](handleError(_0x185c32,null));}; \ No newline at end of file diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.model.js b/server/api/intDeskConfiguration/intDeskConfiguration.model.js new file mode 100644 index 0000000..7831b23 --- /dev/null +++ b/server/api/intDeskConfiguration/intDeskConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8808=['lodash','util','api','bluebird','request-promise','path','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations'];(function(_0x2ab3d9,_0x50e716){var _0x210a54=function(_0x24c479){while(--_0x24c479){_0x2ab3d9['push'](_0x2ab3d9['shift']());}};_0x210a54(++_0x50e716);}(_0x8808,0x8f));var _0x8880=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x8808[_0x465028];return _0xb783d4;};'use strict';var _=require(_0x8880('0x0'));var util=require(_0x8880('0x1'));var logger=require('../../config/logger')(_0x8880('0x2'));var moment=require('moment');var BPromise=require(_0x8880('0x3'));var rp=require(_0x8880('0x4'));var fs=require('fs');var path=require(_0x8880('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8880('0x6'));module[_0x8880('0x7')]=function(_0x3897fc,_0x5cc732){return _0x3897fc[_0x8880('0x8')](_0x8880('0x9'),attributes,{'tableName':_0x8880('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js b/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js new file mode 100644 index 0000000..4a6081b --- /dev/null +++ b/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4d4e=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','moment','bluebird','ioredis'];(function(_0x602ca8,_0x568e82){var _0x26e8ab=function(_0x3fb700){while(--_0x3fb700){_0x602ca8['push'](_0x602ca8['shift']());}};_0x26e8ab(++_0x568e82);}(_0x4d4e,0xa4));var _0xe4d4=function(_0x1e6db3,_0x5643ac){_0x1e6db3=_0x1e6db3-0x0;var _0x1de886=_0x4d4e[_0x1e6db3];return _0x1de886;};'use strict';var _=require(_0xe4d4('0x0'));var util=require('util');var moment=require(_0xe4d4('0x1'));var BPromise=require(_0xe4d4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe4d4('0x3'));var db=require(_0xe4d4('0x4'))['db'];var utils=require(_0xe4d4('0x5'));var logger=require(_0xe4d4('0x6'))(_0xe4d4('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe4d4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b6652,_0x4e9d70,_0xf010c6){return new BPromise(function(_0x3e422b,_0x14ec7a){return client[_0xe4d4('0x9')](_0x5b6652,_0xf010c6)[_0xe4d4('0xa')](function(_0x58cce7){logger['info'](_0xe4d4('0xb'),_0x4e9d70,_0xe4d4('0xc'));logger[_0xe4d4('0xd')](_0xe4d4('0xe'),_0x4e9d70,_0xe4d4('0xc'),JSON[_0xe4d4('0xf')](_0x58cce7));if(_0x58cce7[_0xe4d4('0x10')]){if(_0x58cce7[_0xe4d4('0x10')]['code']===0x1f4){logger[_0xe4d4('0x10')](_0xe4d4('0xb'),_0x4e9d70,_0x58cce7[_0xe4d4('0x10')]['message']);return _0x14ec7a(_0x58cce7[_0xe4d4('0x10')][_0xe4d4('0x11')]);}logger[_0xe4d4('0x10')](_0xe4d4('0xb'),_0x4e9d70,_0x58cce7['error']['message']);return _0x3e422b(_0x58cce7[_0xe4d4('0x10')]['message']);}else{logger[_0xe4d4('0x12')](_0xe4d4('0xb'),_0x4e9d70,'request\x20sent');_0x3e422b(_0x58cce7[_0xe4d4('0x13')][_0xe4d4('0x11')]);}})[_0xe4d4('0x14')](function(_0xad05a7){logger[_0xe4d4('0x10')](_0xe4d4('0xb'),_0x4e9d70,_0xad05a7);_0x14ec7a(_0xad05a7);});});} \ No newline at end of file diff --git a/server/api/intDeskField/index.js b/server/api/intDeskField/index.js new file mode 100644 index 0000000..b61485b --- /dev/null +++ b/server/api/intDeskField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5746=['update','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','post','put'];(function(_0x324a9e,_0x15c28a){var _0x15b6fd=function(_0x45594b){while(--_0x45594b){_0x324a9e['push'](_0x324a9e['shift']());}};_0x15b6fd(++_0x15c28a);}(_0x5746,0x1f2));var _0x6574=function(_0x232162,_0x56a665){_0x232162=_0x232162-0x0;var _0x15b4c5=_0x5746[_0x232162];return _0x15b4c5;};'use strict';var multer=require(_0x6574('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6574('0x1'));var express=require(_0x6574('0x2'));var router=express['Router']();var fs_extra=require(_0x6574('0x3'));var auth=require(_0x6574('0x4'));var interaction=require(_0x6574('0x5'));var config=require(_0x6574('0x6'));var controller=require(_0x6574('0x7'));router[_0x6574('0x8')]('/',auth[_0x6574('0x9')](),controller[_0x6574('0xa')]);router['get'](_0x6574('0xb'),auth[_0x6574('0x9')](),controller['show']);router[_0x6574('0xc')]('/',auth[_0x6574('0x9')](),controller['create']);router[_0x6574('0xd')](_0x6574('0xb'),auth[_0x6574('0x9')](),controller[_0x6574('0xe')]);router['delete']('/:id',auth[_0x6574('0x9')](),controller[_0x6574('0xf')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/intDeskField/intDeskField.attributes.js b/server/api/intDeskField/intDeskField.attributes.js new file mode 100644 index 0000000..a8c236e --- /dev/null +++ b/server/api/intDeskField/intDeskField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc0d4=['variable','keyValue','picklist','string','STRING','customVariable','BOOLEAN','sequelize'];(function(_0xdd42ac,_0x1d31f1){var _0x4ddf3f=function(_0x2b4543){while(--_0x2b4543){_0xdd42ac['push'](_0xdd42ac['shift']());}};_0x4ddf3f(++_0x1d31f1);}(_0xc0d4,0x197));var _0x4c0d=function(_0x189b3b,_0x484de8){_0x189b3b=_0x189b3b-0x0;var _0x7c4721=_0xc0d4[_0x189b3b];return _0x7c4721;};'use strict';var Sequelize=require(_0x4c0d('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0x4c0d('0x1'),'customVariable',_0x4c0d('0x2'),_0x4c0d('0x3')),'defaultValue':_0x4c0d('0x4')},'content':{'type':Sequelize[_0x4c0d('0x5')]},'key':{'type':Sequelize[_0x4c0d('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0x4c0d('0x1'),_0x4c0d('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4c0d('0x5')]},'nameField':{'type':Sequelize[_0x4c0d('0x5')]},'customField':{'type':Sequelize[_0x4c0d('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4c0d('0x5')]}}; \ No newline at end of file diff --git a/server/api/intDeskField/intDeskField.controller.js b/server/api/intDeskField/intDeskField.controller.js new file mode 100644 index 0000000..3b798b4 --- /dev/null +++ b/server/api/intDeskField/intDeskField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcd0d=['error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','options','findAll','rows','show','params','length','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus'];(function(_0x598ad4,_0xce00c){var _0x498436=function(_0x35702e){while(--_0x35702e){_0x598ad4['push'](_0x598ad4['shift']());}};_0x498436(++_0xce00c);}(_0xcd0d,0x10a));var _0xdcd0=function(_0x36bc58,_0x27f03c){_0x36bc58=_0x36bc58-0x0;var _0x4a547e=_0xcd0d[_0x36bc58];return _0x4a547e;};'use strict';var emlformat=require(_0xdcd0('0x0'));var rimraf=require(_0xdcd0('0x1'));var zipdir=require(_0xdcd0('0x2'));var jsonpatch=require(_0xdcd0('0x3'));var rp=require(_0xdcd0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdcd0('0x5'));var path=require('path');var sox=require(_0xdcd0('0x6'));var csv=require(_0xdcd0('0x7'));var ejs=require(_0xdcd0('0x8'));var fs=require('fs');var fs_extra=require(_0xdcd0('0x9'));var _=require(_0xdcd0('0xa'));var squel=require(_0xdcd0('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdcd0('0x7'));var querystring=require(_0xdcd0('0xc'));var Papa=require(_0xdcd0('0xd'));var Redis=require('ioredis');var authService=require(_0xdcd0('0xe'));var qs=require(_0xdcd0('0xf'));var as=require(_0xdcd0('0x10'));var hardwareService=require(_0xdcd0('0x11'));var logger=require(_0xdcd0('0x12'))(_0xdcd0('0x13'));var utils=require(_0xdcd0('0x14'));var config=require(_0xdcd0('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdcd0('0x16'))['db'];function respondWithStatusCode(_0x30cbff,_0x25e3db){_0x25e3db=_0x25e3db||0xcc;return function(_0x1a7407){if(_0x1a7407){return _0x30cbff['sendStatus'](_0x25e3db);}return _0x30cbff[_0xdcd0('0x17')](_0x25e3db)['end']();};}function respondWithResult(_0x367d7d,_0x5c1640){_0x5c1640=_0x5c1640||0xc8;return function(_0x2a4bf1){if(_0x2a4bf1){return _0x367d7d['status'](_0x5c1640)[_0xdcd0('0x18')](_0x2a4bf1);}};}function respondWithFilteredResult(_0x3ec4f7,_0x26e8d6){return function(_0x5a4584){if(_0x5a4584){var _0x488387=typeof _0x26e8d6['offset']==='undefined'&&typeof _0x26e8d6['limit']==='undefined';var _0x261c23=_0x5a4584['count'];var _0x3c45f3=_0x488387?0x0:_0x26e8d6[_0xdcd0('0x19')];var _0x10bf00=_0x488387?_0x5a4584[_0xdcd0('0x1a')]:_0x26e8d6[_0xdcd0('0x19')]+_0x26e8d6[_0xdcd0('0x1b')];var _0x53890d;if(_0x10bf00>=_0x261c23){_0x10bf00=_0x261c23;_0x53890d=0xc8;}else{_0x53890d=0xce;}_0x3ec4f7[_0xdcd0('0x17')](_0x53890d);return _0x3ec4f7[_0xdcd0('0x1c')](_0xdcd0('0x1d'),_0x3c45f3+'-'+_0x10bf00+'/'+_0x261c23)[_0xdcd0('0x18')](_0x5a4584);}return null;};}function patchUpdates(_0x10af21){return function(_0x3b2262){try{jsonpatch[_0xdcd0('0x1e')](_0x3b2262,_0x10af21,!![]);}catch(_0x88154a){return BPromise[_0xdcd0('0x1f')](_0x88154a);}return _0x3b2262[_0xdcd0('0x20')]();};}function saveUpdates(_0x394c93,_0x56ebe8){return function(_0x2a9925){if(_0x2a9925){return _0x2a9925[_0xdcd0('0x21')](_0x394c93)[_0xdcd0('0x22')](function(_0x4eca7f){return _0x4eca7f;});}return null;};}function removeEntity(_0x3535ff,_0x5debf0){return function(_0x3f96aa){if(_0x3f96aa){return _0x3f96aa[_0xdcd0('0x23')]()[_0xdcd0('0x22')](function(){_0x3535ff[_0xdcd0('0x17')](0xcc)[_0xdcd0('0x24')]();});}};}function handleEntityNotFound(_0x13697d,_0x2d128d){return function(_0x2810d0){if(!_0x2810d0){_0x13697d[_0xdcd0('0x25')](0x194);}return _0x2810d0;};}function handleError(_0x3f3013,_0x535e9f){_0x535e9f=_0x535e9f||0x1f4;return function(_0x249b5c){logger[_0xdcd0('0x26')](_0x249b5c[_0xdcd0('0x27')]);if(_0x249b5c[_0xdcd0('0x28')]){delete _0x249b5c[_0xdcd0('0x28')];}_0x3f3013[_0xdcd0('0x17')](_0x535e9f)[_0xdcd0('0x29')](_0x249b5c);};}exports[_0xdcd0('0x2a')]=function(_0x4f75f8,_0x4ac778){var _0x6bd7d={},_0x2c5334={},_0x22f04d={'count':0x0,'rows':[]};var _0x1e769a=_[_0xdcd0('0x2b')](db[_0xdcd0('0x2c')][_0xdcd0('0x2d')],function(_0x2ae3ac){return{'name':_0x2ae3ac[_0xdcd0('0x2e')],'type':_0x2ae3ac[_0xdcd0('0x2f')][_0xdcd0('0x30')]};});_0x2c5334[_0xdcd0('0x31')]=_[_0xdcd0('0x2b')](_0x1e769a,_0xdcd0('0x28'));_0x2c5334[_0xdcd0('0x32')]=_[_0xdcd0('0x33')](_0x4f75f8[_0xdcd0('0x32')]);_0x2c5334['filters']=_[_0xdcd0('0x34')](_0x2c5334['model'],_0x2c5334[_0xdcd0('0x32')]);_0x6bd7d[_0xdcd0('0x35')]=_[_0xdcd0('0x34')](_0x2c5334[_0xdcd0('0x31')],qs[_0xdcd0('0x36')](_0x4f75f8['query'][_0xdcd0('0x36')]));_0x6bd7d[_0xdcd0('0x35')]=_0x6bd7d[_0xdcd0('0x35')]['length']?_0x6bd7d[_0xdcd0('0x35')]:_0x2c5334[_0xdcd0('0x31')];if(!_0x4f75f8['query'][_0xdcd0('0x37')](_0xdcd0('0x38'))){_0x6bd7d['limit']=qs[_0xdcd0('0x1b')](_0x4f75f8[_0xdcd0('0x32')]['limit']);_0x6bd7d[_0xdcd0('0x19')]=qs[_0xdcd0('0x19')](_0x4f75f8[_0xdcd0('0x32')][_0xdcd0('0x19')]);}_0x6bd7d[_0xdcd0('0x39')]=qs[_0xdcd0('0x3a')](_0x4f75f8[_0xdcd0('0x32')][_0xdcd0('0x3a')]);_0x6bd7d['where']=qs['filters'](_[_0xdcd0('0x3b')](_0x4f75f8[_0xdcd0('0x32')],_0x2c5334[_0xdcd0('0x3c')]),_0x1e769a);if(_0x4f75f8[_0xdcd0('0x32')][_0xdcd0('0x3d')]){_0x6bd7d[_0xdcd0('0x3e')]=_[_0xdcd0('0x3f')](_0x6bd7d[_0xdcd0('0x3e')],{'$or':_[_0xdcd0('0x2b')](_0x1e769a,function(_0x1da43e){if(_0x1da43e['type']!==_0xdcd0('0x40')){var _0x5476bb={};_0x5476bb[_0x1da43e['name']]={'$like':'%'+_0x4f75f8[_0xdcd0('0x32')][_0xdcd0('0x3d')]+'%'};return _0x5476bb;}})});}_0x6bd7d=_[_0xdcd0('0x3f')]({},_0x6bd7d,_0x4f75f8[_0xdcd0('0x41')]);var _0x1efa35={'where':_0x6bd7d[_0xdcd0('0x3e')]};return db[_0xdcd0('0x2c')]['count'](_0x1efa35)['then'](function(_0xb927ae){_0x22f04d[_0xdcd0('0x1a')]=_0xb927ae;if(_0x4f75f8[_0xdcd0('0x32')]['includeAll']){_0x6bd7d['include']=[{'all':!![]}];}return db[_0xdcd0('0x2c')][_0xdcd0('0x42')](_0x6bd7d);})[_0xdcd0('0x22')](function(_0x5078aa){_0x22f04d[_0xdcd0('0x43')]=_0x5078aa;return _0x22f04d;})[_0xdcd0('0x22')](respondWithFilteredResult(_0x4ac778,_0x6bd7d))['catch'](handleError(_0x4ac778,null));};exports[_0xdcd0('0x44')]=function(_0x4c8049,_0x3910cd){var _0x1bd8af={'raw':!![],'where':{'id':_0x4c8049[_0xdcd0('0x45')]['id']}},_0x3034e0={};_0x3034e0[_0xdcd0('0x31')]=_['keys'](db[_0xdcd0('0x2c')][_0xdcd0('0x2d')]);_0x3034e0[_0xdcd0('0x32')]=_[_0xdcd0('0x33')](_0x4c8049['query']);_0x3034e0[_0xdcd0('0x3c')]=_[_0xdcd0('0x34')](_0x3034e0['model'],_0x3034e0['query']);_0x1bd8af[_0xdcd0('0x35')]=_['intersection'](_0x3034e0['model'],qs['fields'](_0x4c8049['query'][_0xdcd0('0x36')]));_0x1bd8af['attributes']=_0x1bd8af[_0xdcd0('0x35')][_0xdcd0('0x46')]?_0x1bd8af[_0xdcd0('0x35')]:_0x3034e0[_0xdcd0('0x31')];if(_0x4c8049['query'][_0xdcd0('0x47')]){_0x1bd8af['include']=[{'all':!![]}];}_0x1bd8af=_[_0xdcd0('0x3f')]({},_0x1bd8af,_0x4c8049[_0xdcd0('0x41')]);return db[_0xdcd0('0x2c')][_0xdcd0('0x48')](_0x1bd8af)[_0xdcd0('0x22')](handleEntityNotFound(_0x3910cd,null))['then'](respondWithResult(_0x3910cd,null))[_0xdcd0('0x49')](handleError(_0x3910cd,null));};exports[_0xdcd0('0x4a')]=function(_0x2e8e47,_0x383636){return db[_0xdcd0('0x2c')][_0xdcd0('0x4a')](_0x2e8e47['body'],{})['then'](respondWithResult(_0x383636,0xc9))[_0xdcd0('0x49')](handleError(_0x383636,null));};exports[_0xdcd0('0x21')]=function(_0x2e7d4d,_0x4bf058){if(_0x2e7d4d['body']['id']){delete _0x2e7d4d['body']['id'];}return db[_0xdcd0('0x2c')][_0xdcd0('0x48')]({'where':{'id':_0x2e7d4d[_0xdcd0('0x45')]['id']}})['then'](handleEntityNotFound(_0x4bf058,null))[_0xdcd0('0x22')](saveUpdates(_0x2e7d4d[_0xdcd0('0x4b')],null))['then'](respondWithResult(_0x4bf058,null))['catch'](handleError(_0x4bf058,null));};exports[_0xdcd0('0x23')]=function(_0x1dddcd,_0xcc0262){return db[_0xdcd0('0x2c')]['find']({'where':{'id':_0x1dddcd[_0xdcd0('0x45')]['id']}})[_0xdcd0('0x22')](handleEntityNotFound(_0xcc0262,null))[_0xdcd0('0x22')](removeEntity(_0xcc0262,null))[_0xdcd0('0x49')](handleError(_0xcc0262,null));}; \ No newline at end of file diff --git a/server/api/intDeskField/intDeskField.model.js b/server/api/intDeskField/intDeskField.model.js new file mode 100644 index 0000000..820e505 --- /dev/null +++ b/server/api/intDeskField/intDeskField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe48c=['DeskField','desk_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define'];(function(_0x455d37,_0x9b1de3){var _0x10d3e1=function(_0x7a6ba2){while(--_0x7a6ba2){_0x455d37['push'](_0x455d37['shift']());}};_0x10d3e1(++_0x9b1de3);}(_0xe48c,0xf4));var _0xce48=function(_0x26df27,_0x163361){_0x26df27=_0x26df27-0x0;var _0x2fa81c=_0xe48c[_0x26df27];return _0x2fa81c;};'use strict';var _=require(_0xce48('0x0'));var util=require('util');var logger=require(_0xce48('0x1'))(_0xce48('0x2'));var moment=require(_0xce48('0x3'));var BPromise=require(_0xce48('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xce48('0x5'));var rimraf=require(_0xce48('0x6'));var config=require(_0xce48('0x7'));var attributes=require(_0xce48('0x8'));module[_0xce48('0x9')]=function(_0x577fd0,_0x3a4856){return _0x577fd0[_0xce48('0xa')](_0xce48('0xb'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0xce48('0xc'),'fields':[_0xce48('0xd'),_0xce48('0xe')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intDeskField/intDeskField.rpc.js b/server/api/intDeskField/intDeskField.rpc.js new file mode 100644 index 0000000..6928765 --- /dev/null +++ b/server/api/intDeskField/intDeskField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfc8c=['error','code','message','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xfc8c,0x1a1));var _0xcfc8=function(_0x1ac053,_0x39267a){_0x1ac053=_0x1ac053-0x0;var _0x2d209a=_0xfc8c[_0x1ac053];return _0x2d209a;};'use strict';var _=require(_0xcfc8('0x0'));var util=require(_0xcfc8('0x1'));var moment=require(_0xcfc8('0x2'));var BPromise=require(_0xcfc8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcfc8('0x4'));var db=require(_0xcfc8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcfc8('0x6'))(_0xcfc8('0x7'));var config=require(_0xcfc8('0x8'));var jayson=require(_0xcfc8('0x9'));var client=jayson[_0xcfc8('0xa')][_0xcfc8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x486f64,_0x1a0043,_0x3df924){return new BPromise(function(_0x3cbfe2,_0x53c23f){return client[_0xcfc8('0xc')](_0x486f64,_0x3df924)[_0xcfc8('0xd')](function(_0x3e43bc){logger[_0xcfc8('0xe')](_0xcfc8('0xf'),_0x1a0043,_0xcfc8('0x10'));logger[_0xcfc8('0x11')](_0xcfc8('0x12'),_0x1a0043,_0xcfc8('0x10'),JSON[_0xcfc8('0x13')](_0x3e43bc));if(_0x3e43bc[_0xcfc8('0x14')]){if(_0x3e43bc[_0xcfc8('0x14')][_0xcfc8('0x15')]===0x1f4){logger[_0xcfc8('0x14')](_0xcfc8('0xf'),_0x1a0043,_0x3e43bc[_0xcfc8('0x14')][_0xcfc8('0x16')]);return _0x53c23f(_0x3e43bc['error'][_0xcfc8('0x16')]);}logger['error'](_0xcfc8('0xf'),_0x1a0043,_0x3e43bc[_0xcfc8('0x14')]['message']);return _0x3cbfe2(_0x3e43bc[_0xcfc8('0x14')][_0xcfc8('0x16')]);}else{logger['info']('DeskField,\x20%s,\x20%s',_0x1a0043,'request\x20sent');_0x3cbfe2(_0x3e43bc['result'][_0xcfc8('0x16')]);}})['catch'](function(_0x21cf5d){logger['error'](_0xcfc8('0xf'),_0x1a0043,_0x21cf5d);_0x53c23f(_0x21cf5d);});});} \ No newline at end of file diff --git a/server/api/intDynamics365Account/index.js b/server/api/intDynamics365Account/index.js new file mode 100644 index 0000000..7139770 --- /dev/null +++ b/server/api/intDynamics365Account/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd3b0=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x4f1eb9,_0x27e51d){var _0x5151c5=function(_0xdd7174){while(--_0xdd7174){_0x4f1eb9['push'](_0x4f1eb9['shift']());}};_0x5151c5(++_0x27e51d);}(_0xd3b0,0xa4));var _0x0d3b=function(_0x6b8ca3,_0x18bfa2){_0x6b8ca3=_0x6b8ca3-0x0;var _0x382b4a=_0xd3b0[_0x6b8ca3];return _0x382b4a;};'use strict';var multer=require(_0x0d3b('0x0'));var util=require(_0x0d3b('0x1'));var path=require(_0x0d3b('0x2'));var timeout=require(_0x0d3b('0x3'));var express=require(_0x0d3b('0x4'));var router=express[_0x0d3b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0d3b('0x6'));var interaction=require(_0x0d3b('0x7'));var config=require(_0x0d3b('0x8'));var controller=require(_0x0d3b('0x9'));router[_0x0d3b('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x0d3b('0xb'),auth['isAuthenticated'](),controller[_0x0d3b('0xc')]);router[_0x0d3b('0xa')](_0x0d3b('0xd'),auth[_0x0d3b('0xe')](),controller[_0x0d3b('0xf')]);router[_0x0d3b('0xa')](_0x0d3b('0x10'),auth[_0x0d3b('0xe')](),controller['getFields']);router[_0x0d3b('0x11')]('/',auth[_0x0d3b('0xe')](),controller[_0x0d3b('0x12')]);router[_0x0d3b('0x11')](_0x0d3b('0xd'),auth[_0x0d3b('0xe')](),controller['addConfiguration']);router[_0x0d3b('0x13')](_0x0d3b('0xb'),auth[_0x0d3b('0xe')](),controller[_0x0d3b('0x14')]);router[_0x0d3b('0x15')](_0x0d3b('0xb'),auth['isAuthenticated'](),controller[_0x0d3b('0x16')]);module[_0x0d3b('0x17')]=router; \ No newline at end of file diff --git a/server/api/intDynamics365Account/intDynamics365Account.attributes.js b/server/api/intDynamics365Account/intDynamics365Account.attributes.js new file mode 100644 index 0000000..2720e4c --- /dev/null +++ b/server/api/intDynamics365Account/intDynamics365Account.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xaa48=['STRING','BOOLEAN','sequelize','exports'];(function(_0x3f0eae,_0x3477b9){var _0x334345=function(_0x6f2cf4){while(--_0x6f2cf4){_0x3f0eae['push'](_0x3f0eae['shift']());}};_0x334345(++_0x3477b9);}(_0xaa48,0x15a));var _0x8aa4=function(_0x3c02a9,_0x3e383b){_0x3c02a9=_0x3c02a9-0x0;var _0x43433f=_0xaa48[_0x3c02a9];return _0x43433f;};'use strict';var Sequelize=require(_0x8aa4('0x0'));module[_0x8aa4('0x1')]={'name':{'type':Sequelize[_0x8aa4('0x2')]},'username':{'type':Sequelize[_0x8aa4('0x2')]},'password':{'type':Sequelize[_0x8aa4('0x2')]},'remoteUri':{'type':Sequelize[_0x8aa4('0x2')]},'tenantId':{'type':Sequelize[_0x8aa4('0x2')]},'clientId':{'type':Sequelize[_0x8aa4('0x2')]},'clientSecret':{'type':Sequelize[_0x8aa4('0x2')]},'serverUrl':{'type':Sequelize[_0x8aa4('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x8aa4('0x2')]},'modernAuthentication':{'type':Sequelize[_0x8aa4('0x3')],'defaultValue':!![]}}; \ No newline at end of file diff --git a/server/api/intDynamics365Account/intDynamics365Account.controller.js b/server/api/intDynamics365Account/intDynamics365Account.controller.js new file mode 100644 index 0000000..80033a8 --- /dev/null +++ b/server/api/intDynamics365Account/intDynamics365Account.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x00d0=['Dynamics365Account','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','destroy','find','getConfigurations','findOne','Dynamics365Configuration','addConfiguration','Subjects','getSubjects','channel','Dynamics365Field','slice','substring','lastIndexOf','%s/api/data/v9.0/','getFields','ticketType','incident','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','directioncode','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','productidname','productserialnumber','resolveby','responseby','responsiblecontactidname','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientId','clientSecret','CloudProvider','data7','access_token','data5','/oauth2/token','password','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','Attributes','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','BooleanAttributeMetadata','StringAttributeMetadata','BigIntAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','UserLocalizedLabel','Label','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','../../components/parsers/qs','../../config/logger','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','update','then','sendStatus','error','stack','name','send','map'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0x00d0,0x163));var _0x000d=function(_0x4a36b1,_0x3759b6){_0x4a36b1=_0x4a36b1-0x0;var _0x265219=_0x00d0[_0x4a36b1];return _0x265219;};'use strict';var rp=require(_0x000d('0x0'));var util=require(_0x000d('0x1'));var _=require('lodash');var qs=require(_0x000d('0x2'));var logger=require(_0x000d('0x3'))('api');var db=require('../../mysqldb')['db'];var integrations=require(_0x000d('0x4'));function respondWithResult(_0x6d02aa,_0x55cade){_0x55cade=_0x55cade||0xc8;return function(_0x1bd3fc){if(_0x1bd3fc){return _0x6d02aa[_0x000d('0x5')](_0x55cade)[_0x000d('0x6')](_0x1bd3fc);}};}function respondWithFilteredResult(_0x442d81,_0x5a80e3){return function(_0x5af8bf){if(_0x5af8bf){var _0x3da096=typeof _0x5a80e3[_0x000d('0x7')]===_0x000d('0x8')&&typeof _0x5a80e3[_0x000d('0x9')]===_0x000d('0x8');var _0xaeffc=_0x5af8bf['count'];var _0x35ac59=_0x3da096?0x0:_0x5a80e3[_0x000d('0x7')];var _0x5689a4=_0x3da096?_0x5af8bf[_0x000d('0xa')]:_0x5a80e3['offset']+_0x5a80e3[_0x000d('0x9')];var _0x31c8cc;if(_0x5689a4>=_0xaeffc){_0x5689a4=_0xaeffc;_0x31c8cc=0xc8;}else{_0x31c8cc=0xce;}_0x442d81[_0x000d('0x5')](_0x31c8cc);return _0x442d81[_0x000d('0xb')](_0x000d('0xc'),_0x35ac59+'-'+_0x5689a4+'/'+_0xaeffc)[_0x000d('0x6')](_0x5af8bf);}return null;};}function saveUpdates(_0x85debd){return function(_0x5c3ece){if(_0x5c3ece){return _0x5c3ece[_0x000d('0xd')](_0x85debd)[_0x000d('0xe')](function(_0xbe54a9){return _0xbe54a9;});}return null;};}function removeEntity(_0x198089){return function(_0x2616ff){if(_0x2616ff){return _0x2616ff['destroy']()[_0x000d('0xe')](function(){_0x198089[_0x000d('0x5')](0xcc)['end']();});}};}function handleEntityNotFound(_0x457923){return function(_0x336835){if(!_0x336835){_0x457923[_0x000d('0xf')](0x194);}return _0x336835;};}function handleError(_0x3955c3,_0x4091bd){_0x4091bd=_0x4091bd||0x1f4;return function(_0x173d69){logger[_0x000d('0x10')](_0x173d69[_0x000d('0x11')]);if(_0x173d69['name']){delete _0x173d69[_0x000d('0x12')];}_0x3955c3['status'](_0x4091bd)[_0x000d('0x13')](_0x173d69);};}exports['index']=function(_0x5fc197,_0x262d25){var _0x416fd3={},_0x36469a={},_0x322d20={'count':0x0,'rows':[]};var _0x3f36f5=_[_0x000d('0x14')](db[_0x000d('0x15')][_0x000d('0x16')],function(_0x48d5b1){return{'name':_0x48d5b1[_0x000d('0x17')],'type':_0x48d5b1[_0x000d('0x18')][_0x000d('0x19')]};});_0x36469a['model']=_[_0x000d('0x14')](_0x3f36f5,'name');_0x36469a['query']=_[_0x000d('0x1a')](_0x5fc197[_0x000d('0x1b')]);_0x36469a[_0x000d('0x1c')]=_[_0x000d('0x1d')](_0x36469a[_0x000d('0x1e')],_0x36469a[_0x000d('0x1b')]);_0x416fd3[_0x000d('0x1f')]=_[_0x000d('0x1d')](_0x36469a[_0x000d('0x1e')],qs[_0x000d('0x20')](_0x5fc197[_0x000d('0x1b')]['fields']));_0x416fd3[_0x000d('0x1f')]=_0x416fd3['attributes'][_0x000d('0x21')]?_0x416fd3[_0x000d('0x1f')]:_0x36469a[_0x000d('0x1e')];if(!_0x5fc197['query'][_0x000d('0x22')](_0x000d('0x23'))){_0x416fd3[_0x000d('0x9')]=qs[_0x000d('0x9')](_0x5fc197[_0x000d('0x1b')][_0x000d('0x9')]);_0x416fd3['offset']=qs['offset'](_0x5fc197[_0x000d('0x1b')][_0x000d('0x7')]);}_0x416fd3[_0x000d('0x24')]=qs[_0x000d('0x25')](_0x5fc197[_0x000d('0x1b')]['sort']);_0x416fd3[_0x000d('0x26')]=qs[_0x000d('0x1c')](_[_0x000d('0x27')](_0x5fc197['query'],_0x36469a[_0x000d('0x1c')]),_0x3f36f5);if(_0x5fc197['query'][_0x000d('0x28')]){_0x416fd3[_0x000d('0x26')]=_[_0x000d('0x29')](_0x416fd3['where'],{'$or':_[_0x000d('0x14')](_0x3f36f5,function(_0x2e5a02){if(_0x2e5a02[_0x000d('0x18')]!==_0x000d('0x2a')){var _0x395779={};_0x395779[_0x2e5a02[_0x000d('0x12')]]={'$like':'%'+_0x5fc197[_0x000d('0x1b')][_0x000d('0x28')]+'%'};return _0x395779;}})});}_0x416fd3=_['merge']({},_0x416fd3,_0x5fc197[_0x000d('0x2b')]);var _0x48a0d7={'where':_0x416fd3[_0x000d('0x26')]};return db['Dynamics365Account'][_0x000d('0xa')](_0x48a0d7)['then'](function(_0x1c9637){_0x322d20[_0x000d('0xa')]=_0x1c9637;if(_0x5fc197[_0x000d('0x1b')][_0x000d('0x2c')]){_0x416fd3[_0x000d('0x2d')]=[{'all':!![]}];}return db['Dynamics365Account'][_0x000d('0x2e')](_0x416fd3);})[_0x000d('0xe')](function(_0xa9e9dd){_0x322d20[_0x000d('0x2f')]=_0xa9e9dd;return _0x322d20;})['then'](respondWithFilteredResult(_0x262d25,_0x416fd3))[_0x000d('0x30')](handleError(_0x262d25,null));};exports['show']=function(_0x2ac3ac,_0x566fc2){var _0x5cd99b={'raw':![],'where':{'id':_0x2ac3ac[_0x000d('0x31')]['id']}},_0x57594f={};_0x57594f[_0x000d('0x1e')]=_[_0x000d('0x1a')](db[_0x000d('0x15')][_0x000d('0x16')]);_0x57594f[_0x000d('0x1b')]=_[_0x000d('0x1a')](_0x2ac3ac[_0x000d('0x1b')]);_0x57594f[_0x000d('0x1c')]=_['intersection'](_0x57594f['model'],_0x57594f[_0x000d('0x1b')]);_0x5cd99b[_0x000d('0x1f')]=_[_0x000d('0x1d')](_0x57594f[_0x000d('0x1e')],qs[_0x000d('0x20')](_0x2ac3ac['query'][_0x000d('0x20')]));_0x5cd99b['attributes']=_0x5cd99b['attributes'][_0x000d('0x21')]?_0x5cd99b[_0x000d('0x1f')]:_0x57594f['model'];if(_0x2ac3ac['query'][_0x000d('0x2c')]){_0x5cd99b[_0x000d('0x2d')]=[{'all':!![]}];}_0x5cd99b=_[_0x000d('0x29')]({},_0x5cd99b,_0x2ac3ac[_0x000d('0x2b')]);return db[_0x000d('0x15')]['find'](_0x5cd99b)[_0x000d('0xe')](handleEntityNotFound(_0x566fc2,null))[_0x000d('0xe')](respondWithResult(_0x566fc2,null))[_0x000d('0x30')](handleError(_0x566fc2,null));};exports[_0x000d('0x32')]=function(_0x830c67,_0x3c52d6){return db[_0x000d('0x15')][_0x000d('0x32')](_0x830c67['body'],{})[_0x000d('0xe')](respondWithResult(_0x3c52d6,0xc9))[_0x000d('0x30')](handleError(_0x3c52d6,null));};exports[_0x000d('0xd')]=function(_0x4db665,_0x2d3599){if(_0x4db665[_0x000d('0x33')]['id']){delete _0x4db665['body']['id'];}return db[_0x000d('0x15')]['find']({'where':{'id':_0x4db665['params']['id']}})[_0x000d('0xe')](handleEntityNotFound(_0x2d3599,null))[_0x000d('0xe')](saveUpdates(_0x4db665[_0x000d('0x33')],null))[_0x000d('0xe')](respondWithResult(_0x2d3599,null))[_0x000d('0x30')](handleError(_0x2d3599,null));};exports[_0x000d('0x34')]=function(_0x4bdf62,_0x23284b){return db[_0x000d('0x15')][_0x000d('0x35')]({'where':{'id':_0x4bdf62[_0x000d('0x31')]['id']}})[_0x000d('0xe')](handleEntityNotFound(_0x23284b,null))[_0x000d('0xe')](removeEntity(_0x23284b,null))['catch'](handleError(_0x23284b,null));};exports[_0x000d('0x36')]=function(_0x335821,_0x97eb75){var _0x583201={};var _0x542270={};var _0x414b97;var _0x17a968;return db[_0x000d('0x15')][_0x000d('0x37')]({'where':{'id':_0x335821[_0x000d('0x31')]['id']}})[_0x000d('0xe')](handleEntityNotFound(_0x97eb75,null))[_0x000d('0xe')](function(_0x54fd9c){if(_0x54fd9c){_0x414b97=_0x54fd9c;_0x542270[_0x000d('0x1e')]=_['keys'](db[_0x000d('0x38')][_0x000d('0x16')]);_0x542270[_0x000d('0x1b')]=_[_0x000d('0x1a')](_0x335821[_0x000d('0x1b')]);_0x542270[_0x000d('0x1c')]=_[_0x000d('0x1d')](_0x542270[_0x000d('0x1e')],_0x542270[_0x000d('0x1b')]);_0x583201[_0x000d('0x1f')]=_[_0x000d('0x1d')](_0x542270[_0x000d('0x1e')],qs[_0x000d('0x20')](_0x335821[_0x000d('0x1b')][_0x000d('0x20')]));_0x583201['attributes']=_0x583201[_0x000d('0x1f')][_0x000d('0x21')]?_0x583201['attributes']:_0x542270['model'];_0x583201[_0x000d('0x24')]=qs[_0x000d('0x25')](_0x335821[_0x000d('0x1b')][_0x000d('0x25')]);_0x583201['where']=qs[_0x000d('0x1c')](_['pick'](_0x335821[_0x000d('0x1b')],_0x542270[_0x000d('0x1c')]));if(_0x335821[_0x000d('0x1b')][_0x000d('0x28')]){_0x583201[_0x000d('0x26')]=_[_0x000d('0x29')](_0x583201[_0x000d('0x26')],{'$or':_[_0x000d('0x14')](_0x583201['attributes'],function(_0x296de3){var _0x5df25a={};_0x5df25a[_0x296de3]={'$like':'%'+_0x335821[_0x000d('0x1b')][_0x000d('0x28')]+'%'};return _0x5df25a;})});}_0x583201=_[_0x000d('0x29')]({},_0x583201,_0x335821[_0x000d('0x2b')]);return _0x414b97[_0x000d('0x36')](_0x583201);}})[_0x000d('0xe')](function(_0x4c47ef){if(_0x4c47ef){_0x17a968=_0x4c47ef[_0x000d('0x21')];if(!_0x335821[_0x000d('0x1b')][_0x000d('0x22')](_0x000d('0x23'))){_0x583201[_0x000d('0x9')]=qs[_0x000d('0x9')](_0x335821[_0x000d('0x1b')]['limit']);_0x583201[_0x000d('0x7')]=qs[_0x000d('0x7')](_0x335821[_0x000d('0x1b')]['offset']);}return _0x414b97['getConfigurations'](_0x583201);}})['then'](function(_0x4c879b){if(_0x4c879b){return _0x4c879b?{'count':_0x17a968,'rows':_0x4c879b}:null;}})[_0x000d('0xe')](respondWithResult(_0x97eb75,null))[_0x000d('0x30')](handleError(_0x97eb75,null));};exports[_0x000d('0x39')]=function(_0x56d61a,_0x230f57){if(_0x56d61a['body']['id']){delete _0x56d61a[_0x000d('0x33')]['id'];}return db[_0x000d('0x15')][_0x000d('0x37')]({'where':{'id':_0x56d61a[_0x000d('0x31')]['id']}})[_0x000d('0xe')](handleEntityNotFound(_0x230f57,null))[_0x000d('0xe')](function(_0x43b932){if(_0x43b932){_0x56d61a[_0x000d('0x33')]['AccountId']=_0x43b932['id'];_0x56d61a[_0x000d('0x33')][_0x000d('0x3a')]=integrations[_0x000d('0x3b')](_0x56d61a[_0x000d('0x33')][_0x000d('0x3c')],_0x56d61a[_0x000d('0x33')]['type']);_0x56d61a[_0x000d('0x33')]['Descriptions']=integrations['getDescriptions'](_0x56d61a[_0x000d('0x33')][_0x000d('0x3c')],_0x56d61a['body'][_0x000d('0x18')]);return db[_0x000d('0x38')][_0x000d('0x32')](_0x56d61a['body'],{'include':[{'model':db[_0x000d('0x3d')],'as':_0x000d('0x3a')},{'model':db[_0x000d('0x3d')],'as':'Descriptions'}]});}return null;})[_0x000d('0xe')](respondWithResult(_0x230f57,null))[_0x000d('0x30')](handleError(_0x230f57,null));};function sanitizeRemoteUri(_0x325c58){var _0xec7f32=_0x325c58[_0x000d('0x3e')](-0x1);if(_0xec7f32==='/')return _0x325c58[_0x000d('0x3f')](0x0,_0x325c58[_0x000d('0x40')](_0xec7f32));return _0x325c58;}function getWebApiUrl(_0x3853b6){return util['format'](_0x000d('0x41'),_0x3853b6);}exports[_0x000d('0x42')]=function(_0x33918d,_0x3a0960){var _0x2a3921=_0x33918d[_0x000d('0x1b')][_0x000d('0x43')];var _0x35b886=_0x2a3921===_0x000d('0x44')?'Incident':'PhoneCall';var _0x33c6e5='';var _0x135e2e='';var _0x1d25bd='';var _0x59ffc2='';var _0x643b36='';var _0x2414ec='';var _0x5548da='';var _0x583f64='';var _0x22410e=[_0x000d('0x45'),_0x000d('0x46'),_0x000d('0x47'),_0x000d('0x48'),_0x000d('0x49'),_0x000d('0x4a'),_0x000d('0x4b'),'regardingobjectid',_0x000d('0x4c'),'phonecall_activity_parties'];var _0x2c49d1=[_0x000d('0x4d'),_0x000d('0x4e'),_0x000d('0x4f'),_0x000d('0x50'),_0x000d('0x51'),'contactidyominame',_0x000d('0x52'),_0x000d('0x53'),_0x000d('0x54'),'createdbyexternalpartyyominame',_0x000d('0x55'),'createdbyyominame','createdon','createdonbehalfbyname',_0x000d('0x56'),_0x000d('0x57'),_0x000d('0x58'),_0x000d('0x59'),_0x000d('0x5a'),_0x000d('0x5b'),_0x000d('0x5c'),_0x000d('0x5d'),_0x000d('0x5e'),_0x000d('0x5f'),'firstresponsebykpiidname',_0x000d('0x60'),_0x000d('0x61'),_0x000d('0x62'),_0x000d('0x63'),_0x000d('0x64'),_0x000d('0x65'),'modifiedbyexternalpartyname',_0x000d('0x66'),'modifiedbyname',_0x000d('0x67'),_0x000d('0x68'),_0x000d('0x69'),_0x000d('0x6a'),_0x000d('0x6b'),_0x000d('0x6c'),_0x000d('0x6d'),_0x000d('0x6e'),_0x000d('0x6f'),_0x000d('0x70'),_0x000d('0x71'),_0x000d('0x72'),_0x000d('0x73'),_0x000d('0x74'),'primarycontactidyominame',_0x000d('0x75'),_0x000d('0x76'),_0x000d('0x77'),_0x000d('0x78'),'resolvebykpiidname',_0x000d('0x79'),_0x000d('0x7a'),_0x000d('0x7b'),'sentimentvalue',_0x000d('0x7c'),_0x000d('0x7d'),_0x000d('0x7e'),_0x000d('0x7f'),_0x000d('0x80'),'subjectidname',_0x000d('0x81'),_0x000d('0x82'),_0x000d('0x83'),_0x000d('0x84'),_0x000d('0x85'),_0x000d('0x86')];var _0x312283=_0x22410e[_0x000d('0x87')](_0x2c49d1);return db['Dynamics365Account']['findOne']({'where':{'id':_0x33918d[_0x000d('0x31')]['id']},'attributes':['id',_0x000d('0x88'),'password',_0x000d('0x89'),_0x000d('0x8a'),_0x000d('0x8b'),_0x000d('0x8c'),'modernAuthentication'],'include':[{'model':db['CloudProvider'],'as':_0x000d('0x8d'),'attributes':['id','data5',_0x000d('0x8e')]}]})[_0x000d('0xe')](handleEntityNotFound(_0x3a0960,null))['then'](function(_0x3bae4d){if(_0x3bae4d){if(_0x3bae4d['modernAuthentication']){_0x3bae4d[_0x000d('0x8f')]=_0x3bae4d[_0x000d('0x8d')][_0x000d('0x90')];_0x583f64=sanitizeRemoteUri(_0x3bae4d[_0x000d('0x8d')]['data7']);_0x5548da=getWebApiUrl(_0x583f64);return _0x3bae4d;}_0x583f64=sanitizeRemoteUri(_0x3bae4d[_0x000d('0x89')]);_0x5548da=getWebApiUrl(_0x583f64);var _0x25b227={'method':'POST','uri':'https://login.microsoftonline.com/'+_0x3bae4d['tenantId']+_0x000d('0x91'),'form':{'client_id':_0x3bae4d[_0x000d('0x8b')],'resource':_0x583f64,'username':_0x3bae4d['username'],'password':_0x3bae4d[_0x000d('0x92')],'grant_type':_0x000d('0x92'),'client_secret':_0x3bae4d[_0x000d('0x8c')]},'json':!![]};return rp(_0x25b227);}})[_0x000d('0xe')](function(_0x404a1b){_0x2414ec=_0x404a1b[_0x000d('0x8f')];var _0x580979={'method':_0x000d('0x93'),'uri':encodeURI(_0x5548da+_0x000d('0x94')+_0x35b886+'\x27'),'headers':{'Authorization':_0x000d('0x95')+_0x2414ec,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x580979);})[_0x000d('0xe')](function(_0x22c529){var _0x4a3c7d=_0x22c529[_0x000d('0x96')][0x0];var _0x539ee9=_0x4a3c7d[_0x000d('0x97')];var _0x2ce680={'method':'GET','uri':_0x5548da+_0x000d('0x98')+_0x539ee9+_0x000d('0x99'),'headers':{'Authorization':_0x000d('0x95')+_0x2414ec,'If-None-Match':null,'OData-Version':_0x000d('0x9a')},'json':!![]};return rp(_0x2ce680);})['then'](function(_0x5e6b28){_0x33c6e5=_0x5e6b28;_0x135e2e=_0x33c6e5[_0x000d('0x9b')];_0x135e2e=_[_0x000d('0x9c')](_0x135e2e,function(_0x1fe661){return!_0x312283[_0x000d('0x9d')](_0x1fe661[_0x000d('0x9e')]);});var _0x4ff887=[];var _0x36f54e=[];_0x135e2e[_0x000d('0x9f')](function(_0x55c220){if(_0x55c220['@odata.type']){var _0x3a4d07=_0x55c220[_0x000d('0xa0')][_0x000d('0x3f')](_0x55c220[_0x000d('0xa0')][_0x000d('0x40')]('.')+0x1);if(_0x3a4d07===_0x000d('0xa1')){_0x4ff887[_0x000d('0xa2')](getSelectList(_0x5548da,_0x2a3921,_0x36f54e,_0x33c6e5[_0x000d('0x97')],_0x55c220[_0x000d('0x97')],_0x2414ec));}}});return Promise[_0x000d('0xa3')](_0x4ff887);})[_0x000d('0xe')](function(_0x40cf09){_0x1d25bd=_0x40cf09[0x0];var _0x2c8cf8=[];var _0x5bdd14=[];_0x135e2e[_0x000d('0x9f')](function(_0x47455a){if(!_['isNil'](_0x47455a[_0x000d('0xa0')])){var _0xcd54c8=_0x47455a[_0x000d('0xa0')][_0x000d('0x3f')](_0x47455a['@odata.type'][_0x000d('0x40')]('.')+0x1);if(_0xcd54c8===_0x000d('0xa4')){_0x2c8cf8[_0x000d('0xa2')](getBooleanList(_0x5548da,_0x2a3921,_0x5bdd14,_0x33c6e5['MetadataId'],_0x47455a[_0x000d('0x97')],_0x2414ec));}}});return Promise['all'](_0x2c8cf8);})[_0x000d('0xe')](function(_0x3273d3){_0x59ffc2=_0x3273d3[0x0];var _0x41ad5b=[];var _0xab8d3b=[];_0x135e2e[_0x000d('0x9f')](function(_0x4e4854){if(_0x4e4854['@odata.type']){var _0x731476=_0x4e4854[_0x000d('0xa0')][_0x000d('0x3f')](_0x4e4854[_0x000d('0xa0')][_0x000d('0x40')]('.')+0x1);if(_0x731476===_0x000d('0xa5')||_0x731476==='DoubleAttributeMetadata'||_0x731476===_0x000d('0xa6')||_0x731476==='IntegerAttributeMetadata'||_0x731476===_0x000d('0xa7')||_0x731476===_0x000d('0xa8')||_0x731476===_0x000d('0xa9')||_0x731476==='EntityNameAttributeMetadata'||_0x731476===_0x000d('0xaa')||_0x731476==='DecimalAttributeMetadata'){_0x41ad5b[_0x000d('0xa2')](getInputList(_0x5548da,_0x2a3921,_0x731476,_0xab8d3b,_0x33c6e5[_0x000d('0x97')],_0x4e4854[_0x000d('0x97')],_0x2414ec));}}});return Promise[_0x000d('0xa3')](_0x41ad5b);})[_0x000d('0xe')](function(_0x3daaef){_0x643b36=_0x3daaef[0x0];var _0xdb2fb3=_0x1d25bd[_0x000d('0x87')](_0x59ffc2)[_0x000d('0x87')](_0x643b36);var _0x329455={'count':_0xdb2fb3['length'],'rows':_0xdb2fb3};return _0x329455;})[_0x000d('0xe')](respondWithResult(_0x3a0960,null))[_0x000d('0x30')](function(_0xaf0e91){var _0x3c6fc9=_0x33918d['query'][_0x000d('0xab')]?0x1f4:_0xaf0e91[_0x000d('0xac')]||0x1f4;logger[_0x000d('0x10')](_0xaf0e91[_0x000d('0x11')]);delete _0xaf0e91['name'];if(_0x3c6fc9===0x191){_0x3c6fc9=0x190;}_0x3a0960[_0x000d('0x5')](_0x3c6fc9)[_0x000d('0x13')](_0x33918d[_0x000d('0x1b')]['test']?{'message':_0x000d('0xad'),'statusCode':_0xaf0e91['statusCode']}:_0xaf0e91);});};function getSelectList(_0x381028,_0x1844f1,_0x8260c2,_0x7881d2,_0x3fa8d7,_0x5db68a){var _0x5b210e={'method':_0x000d('0x93'),'uri':_0x381028+_0x000d('0x98')+_0x7881d2+_0x000d('0xae')+_0x3fa8d7+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x000d('0xaf'),'headers':{'Authorization':_0x000d('0x95')+_0x5db68a,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5b210e)['then'](function(_0x2dc352){var _0x4600c9=[];var _0x11d870=_0x2dc352[_0x000d('0xb0')]['Options'];_0x11d870[_0x000d('0x9f')](function(_0x4e1a08){_0x4600c9[_0x000d('0xa2')]({'name':_0x4e1a08['Label'][_0x000d('0xb1')][_0x000d('0xb2')],'value':String(_0x4e1a08[_0x000d('0xb3')])});});var _0x9c993d={'id':_0x1844f1+'_'+_0x2dc352['LogicalName'],'name':_0x2dc352[_0x000d('0xb4')][_0x000d('0xb1')][_0x000d('0xb2')],'custom':![],'options':_0x4600c9};_0x8260c2[_0x000d('0xa2')](_0x9c993d);return _0x8260c2;});}function getBooleanList(_0x33e32b,_0x3ec12b,_0x376ce0,_0x92acf9,_0x35dfaf,_0x2365ef){var _0x2a1a22={'method':_0x000d('0x93'),'uri':_0x33e32b+_0x000d('0x98')+_0x92acf9+_0x000d('0xae')+_0x35dfaf+_0x000d('0xb5'),'headers':{'Authorization':_0x000d('0x95')+_0x2365ef,'If-None-Match':null,'OData-Version':_0x000d('0x9a')},'json':!![]};return rp(_0x2a1a22)[_0x000d('0xe')](function(_0x2d8f54){var _0x58db2d=[];_0x58db2d[_0x000d('0xa2')]({'name':_0x2d8f54['OptionSet'][_0x000d('0xb6')][_0x000d('0xb2')][_0x000d('0xb1')][_0x000d('0xb2')],'value':_0x000d('0xb7')},{'name':_0x2d8f54['OptionSet'][_0x000d('0xb8')][_0x000d('0xb2')][_0x000d('0xb1')][_0x000d('0xb2')],'value':_0x000d('0xb9')});var _0xe73f26={'id':_0x3ec12b+'_'+_0x2d8f54['LogicalName'],'name':_0x2d8f54[_0x000d('0xb4')][_0x000d('0xb1')][_0x000d('0xb2')],'custom':![],'options':_0x58db2d};_0x376ce0[_0x000d('0xa2')](_0xe73f26);return _0x376ce0;});}function getInputList(_0x2c360f,_0x4d1ab3,_0x590f87,_0x1c3291,_0x13aaa1,_0x24f8d6,_0x969d2d){var _0x3d74d6={'method':_0x000d('0x93'),'uri':_0x2c360f+_0x000d('0x98')+_0x13aaa1+')/Attributes('+_0x24f8d6+_0x000d('0xba')+_0x590f87+_0x000d('0xbb'),'headers':{'Authorization':_0x000d('0x95')+_0x969d2d,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3d74d6)[_0x000d('0xe')](function(_0x39d1c9){var _0x18a83f={'id':_0x4d1ab3+'_'+_0x39d1c9['LogicalName'],'name':_0x39d1c9[_0x000d('0xb4')][_0x000d('0xb1')]?_0x39d1c9['DisplayName'][_0x000d('0xb1')][_0x000d('0xb2')]:_0x39d1c9['LogicalName'],'custom':![],'options':[]};_0x1c3291[_0x000d('0xa2')](_0x18a83f);return _0x1c3291;});} \ No newline at end of file diff --git a/server/api/intDynamics365Account/intDynamics365Account.model.js b/server/api/intDynamics365Account/intDynamics365Account.model.js new file mode 100644 index 0000000..06c207c --- /dev/null +++ b/server/api/intDynamics365Account/intDynamics365Account.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x57143c,_0x576da8){var _0x4d4410=function(_0x332ddd){while(--_0x332ddd){_0x57143c['push'](_0x57143c['shift']());}};_0x4d4410(++_0x576da8);}(_0xb7e7,0x121));var _0x7b7e=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0xb7e7[_0x369151];return _0x4292d5;};'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'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intDynamics365Account/intDynamics365Account.rpc.js b/server/api/intDynamics365Account/intDynamics365Account.rpc.js new file mode 100644 index 0000000..306bc0b --- /dev/null +++ b/server/api/intDynamics365Account/intDynamics365Account.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbddc=['message','catch','GetDynamics365Account','Dynamics365Account','options','where','attributes','limit','include','map','model','ShowDynamics365Account','find','raw','debug','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4a5ed5,_0x80fce9){var _0x2410de=function(_0x520865){while(--_0x520865){_0x4a5ed5['push'](_0x4a5ed5['shift']());}};_0x2410de(++_0x80fce9);}(_0xbddc,0xfd));var _0xcbdd=function(_0xde81cc,_0x26c733){_0xde81cc=_0xde81cc-0x0;var _0x53a3fc=_0xbddc[_0xde81cc];return _0x53a3fc;};'use strict';var _=require(_0xcbdd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcbdd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbdd('0x2'));var db=require(_0xcbdd('0x3'))['db'];var utils=require(_0xcbdd('0x4'));var logger=require(_0xcbdd('0x5'))(_0xcbdd('0x6'));var config=require(_0xcbdd('0x7'));var jayson=require(_0xcbdd('0x8'));var client=jayson[_0xcbdd('0x9')][_0xcbdd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f1dd9,_0x32c764,_0x7b69ad){return new BPromise(function(_0x43c1d6,_0x1560be){return client[_0xcbdd('0xb')](_0x2f1dd9,_0x7b69ad)[_0xcbdd('0xc')](function(_0x55636c){logger[_0xcbdd('0xd')](_0xcbdd('0xe'),_0x32c764,_0xcbdd('0xf'));logger['debug'](_0xcbdd('0x10'),_0x32c764,_0xcbdd('0xf'),JSON[_0xcbdd('0x11')](_0x55636c));if(_0x55636c[_0xcbdd('0x12')]){if(_0x55636c['error']['code']===0x1f4){logger[_0xcbdd('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x32c764,_0x55636c[_0xcbdd('0x12')][_0xcbdd('0x13')]);return _0x1560be(_0x55636c['error'][_0xcbdd('0x13')]);}logger[_0xcbdd('0x12')](_0xcbdd('0xe'),_0x32c764,_0x55636c[_0xcbdd('0x12')][_0xcbdd('0x13')]);return _0x43c1d6(_0x55636c['error']['message']);}else{logger[_0xcbdd('0xd')](_0xcbdd('0xe'),_0x32c764,_0xcbdd('0xf'));_0x43c1d6(_0x55636c['result'][_0xcbdd('0x13')]);}})[_0xcbdd('0x14')](function(_0x31d976){logger[_0xcbdd('0x12')](_0xcbdd('0xe'),_0x32c764,_0x31d976);_0x1560be(_0x31d976);});});}exports[_0xcbdd('0x15')]=function(_0x5169c7){var _0x335fc9=this;return new Promise(function(_0x4de712,_0x16ac2e){return db[_0xcbdd('0x16')]['findAll']({'raw':_0x5169c7['options']?_0x5169c7[_0xcbdd('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5169c7[_0xcbdd('0x17')]?_0x5169c7['options'][_0xcbdd('0x18')]||null:null,'attributes':_0x5169c7['options']?_0x5169c7[_0xcbdd('0x17')][_0xcbdd('0x19')]||null:null,'limit':_0x5169c7[_0xcbdd('0x17')]?_0x5169c7['options'][_0xcbdd('0x1a')]||null:null,'include':_0x5169c7['options']?_0x5169c7[_0xcbdd('0x17')][_0xcbdd('0x1b')]?_[_0xcbdd('0x1c')](_0x5169c7[_0xcbdd('0x17')][_0xcbdd('0x1b')],function(_0x4b658e){return{'model':db[_0x4b658e[_0xcbdd('0x1d')]],'as':_0x4b658e['as'],'attributes':_0x4b658e[_0xcbdd('0x19')],'include':_0x4b658e['include']?_[_0xcbdd('0x1c')](_0x4b658e[_0xcbdd('0x1b')],function(_0x5e3d59){return{'model':db[_0x5e3d59['model']],'as':_0x5e3d59['as'],'attributes':_0x5e3d59[_0xcbdd('0x19')],'include':_0x5e3d59[_0xcbdd('0x1b')]?_[_0xcbdd('0x1c')](_0x5e3d59[_0xcbdd('0x1b')],function(_0x8547e4){return{'model':db[_0x8547e4[_0xcbdd('0x1d')]],'as':_0x8547e4['as'],'attributes':_0x8547e4[_0xcbdd('0x19')]};}):[]};}):[]};}):[]:[]})[_0xcbdd('0xc')](function(_0xab2eed){logger[_0xcbdd('0xd')]('GetDynamics365Account',_0x5169c7);logger['debug'](_0xcbdd('0x15'),_0x5169c7,JSON['stringify'](_0xab2eed));_0x4de712(_0xab2eed);})[_0xcbdd('0x14')](function(_0x493757){logger[_0xcbdd('0x12')](_0xcbdd('0x15'),_0x493757[_0xcbdd('0x13')],_0x5169c7);_0x16ac2e(_0x335fc9[_0xcbdd('0x12')](0x1f4,_0x493757[_0xcbdd('0x13')]));});});};exports[_0xcbdd('0x1e')]=function(_0x361f3b){var _0x25335e=this;return new Promise(function(_0x5bf494,_0x57c15d){return db[_0xcbdd('0x16')][_0xcbdd('0x1f')]({'raw':_0x361f3b[_0xcbdd('0x17')]?_0x361f3b[_0xcbdd('0x17')][_0xcbdd('0x20')]===undefined?!![]:![]:!![],'where':_0x361f3b[_0xcbdd('0x17')]?_0x361f3b[_0xcbdd('0x17')][_0xcbdd('0x18')]||null:null,'attributes':_0x361f3b[_0xcbdd('0x17')]?_0x361f3b[_0xcbdd('0x17')][_0xcbdd('0x19')]||null:null,'include':_0x361f3b[_0xcbdd('0x17')]?_0x361f3b[_0xcbdd('0x17')][_0xcbdd('0x1b')]?_[_0xcbdd('0x1c')](_0x361f3b['options'][_0xcbdd('0x1b')],function(_0x47dcab){return{'model':db[_0x47dcab['model']],'as':_0x47dcab['as'],'attributes':_0x47dcab[_0xcbdd('0x19')],'include':_0x47dcab[_0xcbdd('0x1b')]?_[_0xcbdd('0x1c')](_0x47dcab['include'],function(_0x949f33){return{'model':db[_0x949f33[_0xcbdd('0x1d')]],'as':_0x949f33['as'],'attributes':_0x949f33[_0xcbdd('0x19')],'include':_0x949f33[_0xcbdd('0x1b')]?_[_0xcbdd('0x1c')](_0x949f33['include'],function(_0x18a99e){return{'model':db[_0x18a99e['model']],'as':_0x18a99e['as'],'attributes':_0x18a99e[_0xcbdd('0x19')]};}):[]};}):[]};}):[]:[]})[_0xcbdd('0xc')](function(_0x3c5a16){logger['info'](_0xcbdd('0x1e'),_0x361f3b);logger[_0xcbdd('0x21')](_0xcbdd('0x1e'),_0x361f3b,JSON[_0xcbdd('0x11')](_0x3c5a16));_0x5bf494(_0x3c5a16);})['catch'](function(_0xa1d4b1){logger[_0xcbdd('0x12')]('ShowDynamics365Account',_0xa1d4b1[_0xcbdd('0x13')],_0x361f3b);_0x57c15d(_0x25335e[_0xcbdd('0x12')](0x1f4,_0xa1d4b1['message']));});});}; \ No newline at end of file diff --git a/server/api/intDynamics365Configuration/index.js b/server/api/intDynamics365Configuration/index.js new file mode 100644 index 0000000..0ab02ce --- /dev/null +++ b/server/api/intDynamics365Configuration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2143=['create','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','post'];(function(_0xe544e9,_0x101cb6){var _0x567259=function(_0x50705d){while(--_0x50705d){_0xe544e9['push'](_0xe544e9['shift']());}};_0x567259(++_0x101cb6);}(_0x2143,0x114));var _0x3214=function(_0x5cfb92,_0x5797e6){_0x5cfb92=_0x5cfb92-0x0;var _0x1cd7c2=_0x2143[_0x5cfb92];return _0x1cd7c2;};'use strict';var multer=require(_0x3214('0x0'));var util=require(_0x3214('0x1'));var path=require(_0x3214('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3214('0x3')]();var fs_extra=require(_0x3214('0x4'));var auth=require(_0x3214('0x5'));var interaction=require(_0x3214('0x6'));var config=require(_0x3214('0x7'));var controller=require(_0x3214('0x8'));router[_0x3214('0x9')]('/',auth[_0x3214('0xa')](),controller[_0x3214('0xb')]);router[_0x3214('0x9')](_0x3214('0xc'),auth[_0x3214('0xa')](),controller[_0x3214('0xd')]);router[_0x3214('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x3214('0xe')]);router[_0x3214('0x9')](_0x3214('0xf'),auth[_0x3214('0xa')](),controller[_0x3214('0x10')]);router[_0x3214('0x9')]('/:id/descriptions',auth[_0x3214('0xa')](),controller['getDescriptions']);router[_0x3214('0x11')]('/',auth[_0x3214('0xa')](),controller[_0x3214('0x12')]);router['put'](_0x3214('0xc'),auth[_0x3214('0xa')](),controller['update']);router['delete'](_0x3214('0xc'),auth['isAuthenticated'](),controller[_0x3214('0x13')]);module[_0x3214('0x14')]=router; \ No newline at end of file diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js new file mode 100644 index 0000000..6eb320e --- /dev/null +++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2596=['sequelize','exports','STRING','ENUM','incident','phonecall','contact','BOOLEAN'];(function(_0x5da8a9,_0x26ee48){var _0x26f36f=function(_0x23328d){while(--_0x23328d){_0x5da8a9['push'](_0x5da8a9['shift']());}};_0x26f36f(++_0x26ee48);}(_0x2596,0x70));var _0x6259=function(_0x2edee2,_0x4dd048){_0x2edee2=_0x2edee2-0x0;var _0x5b1d2d=_0x2596[_0x2edee2];return _0x5b1d2d;};'use strict';var Sequelize=require(_0x6259('0x0'));module[_0x6259('0x1')]={'name':{'type':Sequelize[_0x6259('0x2')]},'description':{'type':Sequelize[_0x6259('0x2')]},'ticketType':{'type':Sequelize[_0x6259('0x3')](_0x6259('0x4'),_0x6259('0x5')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize[_0x6259('0x3')](_0x6259('0x6'),'nothing'),'defaultValue':_0x6259('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x6259('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x6259('0x7')],'defaultValue':!![]}}; \ No newline at end of file diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js new file mode 100644 index 0000000..029d878 --- /dev/null +++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c5a=['merge','where','options','Dynamics365Configuration','includeAll','include','rows','catch','show','params','find','create','body','destroy','getFields','Dynamics365Field','order','getSubjects','findOne','getDescriptions','eml-format','rimraf','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter'];(function(_0x12b683,_0x124186){var _0xfb150b=function(_0x565ce7){while(--_0x565ce7){_0x12b683['push'](_0x12b683['shift']());}};_0xfb150b(++_0x124186);}(_0x9c5a,0x1dc));var _0xa9c5=function(_0x2b402b,_0x28d77d){_0x2b402b=_0x2b402b-0x0;var _0x286f3c=_0x9c5a[_0x2b402b];return _0x286f3c;};'use strict';var emlformat=require(_0xa9c5('0x0'));var rimraf=require(_0xa9c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9c5('0x2'));var rp=require('request-promise');var moment=require(_0xa9c5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa9c5('0x4'));var util=require(_0xa9c5('0x5'));var path=require('path');var sox=require(_0xa9c5('0x6'));var csv=require(_0xa9c5('0x7'));var ejs=require(_0xa9c5('0x8'));var fs=require('fs');var fs_extra=require(_0xa9c5('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa9c5('0xa'));var jsforce=require(_0xa9c5('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xa9c5('0x7'));var querystring=require(_0xa9c5('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa9c5('0xd'));var qs=require(_0xa9c5('0xe'));var as=require(_0xa9c5('0xf'));var hardwareService=require(_0xa9c5('0x10'));var logger=require('../../config/logger')(_0xa9c5('0x11'));var utils=require(_0xa9c5('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa9c5('0x13'))['db'];function respondWithStatusCode(_0x4d670e,_0x1cad4c){_0x1cad4c=_0x1cad4c||0xcc;return function(_0x32ea19){if(_0x32ea19){return _0x4d670e['sendStatus'](_0x1cad4c);}return _0x4d670e[_0xa9c5('0x14')](_0x1cad4c)[_0xa9c5('0x15')]();};}function respondWithResult(_0x2b8202,_0x57b0fb){_0x57b0fb=_0x57b0fb||0xc8;return function(_0x41ac6d){if(_0x41ac6d){return _0x2b8202[_0xa9c5('0x14')](_0x57b0fb)[_0xa9c5('0x16')](_0x41ac6d);}};}function respondWithFilteredResult(_0x21dd33,_0x570781){return function(_0x1bba24){if(_0x1bba24){var _0x167b40=typeof _0x570781['offset']==='undefined'&&typeof _0x570781[_0xa9c5('0x17')]===_0xa9c5('0x18');var _0xd54791=_0x1bba24[_0xa9c5('0x19')];var _0x36e81a=_0x167b40?0x0:_0x570781['offset'];var _0x18ea3b=_0x167b40?_0x1bba24['count']:_0x570781[_0xa9c5('0x1a')]+_0x570781[_0xa9c5('0x17')];var _0x18f3c8;if(_0x18ea3b>=_0xd54791){_0x18ea3b=_0xd54791;_0x18f3c8=0xc8;}else{_0x18f3c8=0xce;}_0x21dd33[_0xa9c5('0x14')](_0x18f3c8);return _0x21dd33[_0xa9c5('0x1b')](_0xa9c5('0x1c'),_0x36e81a+'-'+_0x18ea3b+'/'+_0xd54791)[_0xa9c5('0x16')](_0x1bba24);}return null;};}function patchUpdates(_0x21cd7b){return function(_0x49b335){try{jsonpatch['apply'](_0x49b335,_0x21cd7b,!![]);}catch(_0x4bb3d1){return BPromise[_0xa9c5('0x1d')](_0x4bb3d1);}return _0x49b335['save']();};}function saveUpdates(_0x2663b4,_0x3cafa9){return function(_0x1f754c){if(_0x1f754c){return _0x1f754c[_0xa9c5('0x1e')](_0x2663b4)['then'](function(_0x5c7a26){return _0x5c7a26;});}return null;};}function removeEntity(_0x14f460,_0x6227c9){return function(_0x57616c){if(_0x57616c){return _0x57616c['destroy']()[_0xa9c5('0x1f')](function(){_0x14f460[_0xa9c5('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0xac00c7,_0x3398ca){return function(_0x4acf1a){if(!_0x4acf1a){_0xac00c7[_0xa9c5('0x20')](0x194);}return _0x4acf1a;};}function handleError(_0x1ef516,_0x2d8c44){_0x2d8c44=_0x2d8c44||0x1f4;return function(_0x16fff4){logger[_0xa9c5('0x21')](_0x16fff4[_0xa9c5('0x22')]);if(_0x16fff4[_0xa9c5('0x23')]){delete _0x16fff4[_0xa9c5('0x23')];}_0x1ef516[_0xa9c5('0x14')](_0x2d8c44)[_0xa9c5('0x24')](_0x16fff4);};}exports[_0xa9c5('0x25')]=function(_0x835800,_0x15e275){var _0x4b5a59={},_0x442f6c={},_0x152812={'count':0x0,'rows':[]};var _0x506f82=_[_0xa9c5('0x26')](db['Dynamics365Configuration'][_0xa9c5('0x27')],function(_0x33b7ed){return{'name':_0x33b7ed[_0xa9c5('0x28')],'type':_0x33b7ed[_0xa9c5('0x29')][_0xa9c5('0x2a')]};});_0x442f6c[_0xa9c5('0x2b')]=_[_0xa9c5('0x26')](_0x506f82,'name');_0x442f6c[_0xa9c5('0x2c')]=_[_0xa9c5('0x2d')](_0x835800['query']);_0x442f6c['filters']=_[_0xa9c5('0x2e')](_0x442f6c[_0xa9c5('0x2b')],_0x442f6c[_0xa9c5('0x2c')]);_0x4b5a59['attributes']=_['intersection'](_0x442f6c[_0xa9c5('0x2b')],qs[_0xa9c5('0x2f')](_0x835800[_0xa9c5('0x2c')][_0xa9c5('0x2f')]));_0x4b5a59['attributes']=_0x4b5a59[_0xa9c5('0x30')][_0xa9c5('0x31')]?_0x4b5a59[_0xa9c5('0x30')]:_0x442f6c[_0xa9c5('0x2b')];if(!_0x835800[_0xa9c5('0x2c')][_0xa9c5('0x32')](_0xa9c5('0x33'))){_0x4b5a59[_0xa9c5('0x17')]=qs[_0xa9c5('0x17')](_0x835800[_0xa9c5('0x2c')][_0xa9c5('0x17')]);_0x4b5a59[_0xa9c5('0x1a')]=qs[_0xa9c5('0x1a')](_0x835800['query']['offset']);}_0x4b5a59['order']=qs[_0xa9c5('0x34')](_0x835800[_0xa9c5('0x2c')]['sort']);_0x4b5a59['where']=qs[_0xa9c5('0x35')](_[_0xa9c5('0x36')](_0x835800[_0xa9c5('0x2c')],_0x442f6c[_0xa9c5('0x35')]),_0x506f82);if(_0x835800['query'][_0xa9c5('0x37')]){_0x4b5a59['where']=_[_0xa9c5('0x38')](_0x4b5a59[_0xa9c5('0x39')],{'$or':_[_0xa9c5('0x26')](_0x506f82,function(_0x534b6d){if(_0x534b6d[_0xa9c5('0x29')]!=='VIRTUAL'){var _0x20a8c4={};_0x20a8c4[_0x534b6d[_0xa9c5('0x23')]]={'$like':'%'+_0x835800[_0xa9c5('0x2c')]['filter']+'%'};return _0x20a8c4;}})});}_0x4b5a59=_[_0xa9c5('0x38')]({},_0x4b5a59,_0x835800[_0xa9c5('0x3a')]);var _0x55cd13={'where':_0x4b5a59['where']};return db[_0xa9c5('0x3b')][_0xa9c5('0x19')](_0x55cd13)[_0xa9c5('0x1f')](function(_0x39b043){_0x152812[_0xa9c5('0x19')]=_0x39b043;if(_0x835800[_0xa9c5('0x2c')][_0xa9c5('0x3c')]){_0x4b5a59[_0xa9c5('0x3d')]=[{'all':!![]}];}return db['Dynamics365Configuration']['findAll'](_0x4b5a59);})[_0xa9c5('0x1f')](function(_0x1d45df){_0x152812[_0xa9c5('0x3e')]=_0x1d45df;return _0x152812;})[_0xa9c5('0x1f')](respondWithFilteredResult(_0x15e275,_0x4b5a59))[_0xa9c5('0x3f')](handleError(_0x15e275,null));};exports[_0xa9c5('0x40')]=function(_0x1fb259,_0x87b868){var _0x392f84={'raw':![],'where':{'id':_0x1fb259[_0xa9c5('0x41')]['id']}},_0x54b236={};_0x54b236[_0xa9c5('0x2b')]=_[_0xa9c5('0x2d')](db[_0xa9c5('0x3b')][_0xa9c5('0x27')]);_0x54b236[_0xa9c5('0x2c')]=_['keys'](_0x1fb259[_0xa9c5('0x2c')]);_0x54b236[_0xa9c5('0x35')]=_[_0xa9c5('0x2e')](_0x54b236[_0xa9c5('0x2b')],_0x54b236[_0xa9c5('0x2c')]);_0x392f84[_0xa9c5('0x30')]=_['intersection'](_0x54b236['model'],qs[_0xa9c5('0x2f')](_0x1fb259[_0xa9c5('0x2c')]['fields']));_0x392f84['attributes']=_0x392f84[_0xa9c5('0x30')][_0xa9c5('0x31')]?_0x392f84[_0xa9c5('0x30')]:_0x54b236[_0xa9c5('0x2b')];if(_0x1fb259[_0xa9c5('0x2c')]['includeAll']){_0x392f84[_0xa9c5('0x3d')]=[{'all':!![]}];}_0x392f84=_[_0xa9c5('0x38')]({},_0x392f84,_0x1fb259['options']);return db[_0xa9c5('0x3b')][_0xa9c5('0x42')](_0x392f84)['then'](handleEntityNotFound(_0x87b868,null))[_0xa9c5('0x1f')](respondWithResult(_0x87b868,null))[_0xa9c5('0x3f')](handleError(_0x87b868,null));};exports[_0xa9c5('0x43')]=function(_0x18421f,_0x2de938){return db[_0xa9c5('0x3b')][_0xa9c5('0x43')](_0x18421f[_0xa9c5('0x44')],{})[_0xa9c5('0x1f')](respondWithResult(_0x2de938,0xc9))[_0xa9c5('0x3f')](handleError(_0x2de938,null));};exports['update']=function(_0x2234cc,_0x45d5ed){if(_0x2234cc['body']['id']){delete _0x2234cc[_0xa9c5('0x44')]['id'];}return db['Dynamics365Configuration'][_0xa9c5('0x42')]({'where':{'id':_0x2234cc[_0xa9c5('0x41')]['id']}})[_0xa9c5('0x1f')](handleEntityNotFound(_0x45d5ed,null))['then'](saveUpdates(_0x2234cc[_0xa9c5('0x44')],null))[_0xa9c5('0x1f')](respondWithResult(_0x45d5ed,null))[_0xa9c5('0x3f')](handleError(_0x45d5ed,null));};exports[_0xa9c5('0x45')]=function(_0x1346b4,_0x138bcd){return db['Dynamics365Configuration'][_0xa9c5('0x42')]({'where':{'id':_0x1346b4[_0xa9c5('0x41')]['id']}})[_0xa9c5('0x1f')](handleEntityNotFound(_0x138bcd,null))[_0xa9c5('0x1f')](removeEntity(_0x138bcd,null))['catch'](handleError(_0x138bcd,null));};exports[_0xa9c5('0x46')]=function(_0x338d5b,_0x133358,_0x2e058a){var _0x59722a={};var _0x37951a={};var _0x5d68be;var _0x174f71;return db[_0xa9c5('0x3b')]['findOne']({'where':{'id':_0x338d5b['params']['id']}})['then'](handleEntityNotFound(_0x133358,null))[_0xa9c5('0x1f')](function(_0x2bc9f6){if(_0x2bc9f6){_0x5d68be=_0x2bc9f6;_0x37951a[_0xa9c5('0x2b')]=_[_0xa9c5('0x2d')](db[_0xa9c5('0x47')][_0xa9c5('0x27')]);_0x37951a[_0xa9c5('0x2c')]=_[_0xa9c5('0x2d')](_0x338d5b[_0xa9c5('0x2c')]);_0x37951a[_0xa9c5('0x35')]=_['intersection'](_0x37951a[_0xa9c5('0x2b')],_0x37951a[_0xa9c5('0x2c')]);_0x59722a[_0xa9c5('0x30')]=_[_0xa9c5('0x2e')](_0x37951a[_0xa9c5('0x2b')],qs[_0xa9c5('0x2f')](_0x338d5b[_0xa9c5('0x2c')]['fields']));_0x59722a[_0xa9c5('0x30')]=_0x59722a['attributes'][_0xa9c5('0x31')]?_0x59722a[_0xa9c5('0x30')]:_0x37951a['model'];_0x59722a[_0xa9c5('0x48')]=qs[_0xa9c5('0x34')](_0x338d5b['query'][_0xa9c5('0x34')]);_0x59722a[_0xa9c5('0x39')]=qs[_0xa9c5('0x35')](_[_0xa9c5('0x36')](_0x338d5b[_0xa9c5('0x2c')],_0x37951a[_0xa9c5('0x35')]));if(_0x338d5b[_0xa9c5('0x2c')]['filter']){_0x59722a[_0xa9c5('0x39')]=_['merge'](_0x59722a[_0xa9c5('0x39')],{'$or':_['map'](_0x59722a['attributes'],function(_0xf62d77){var _0x3413ed={};_0x3413ed[_0xf62d77]={'$like':'%'+_0x338d5b[_0xa9c5('0x2c')][_0xa9c5('0x37')]+'%'};return _0x3413ed;})});}_0x59722a=_['merge']({},_0x59722a,_0x338d5b[_0xa9c5('0x3a')]);return _0x5d68be[_0xa9c5('0x46')](_0x59722a);}})['then'](function(_0x5ef317){if(_0x5ef317){_0x174f71=_0x5ef317[_0xa9c5('0x31')];if(!_0x338d5b['query'][_0xa9c5('0x32')]('nolimit')){_0x59722a[_0xa9c5('0x17')]=qs[_0xa9c5('0x17')](_0x338d5b[_0xa9c5('0x2c')][_0xa9c5('0x17')]);_0x59722a['offset']=qs[_0xa9c5('0x1a')](_0x338d5b['query'][_0xa9c5('0x1a')]);}return _0x5d68be[_0xa9c5('0x46')](_0x59722a);}})[_0xa9c5('0x1f')](function(_0x4a84fc){if(_0x4a84fc){return _0x4a84fc?{'count':_0x174f71,'rows':_0x4a84fc}:null;}})[_0xa9c5('0x1f')](respondWithResult(_0x133358,null))['catch'](handleError(_0x133358,null));};exports[_0xa9c5('0x49')]=function(_0x58bc65,_0x5e3786,_0x20c90c){var _0x594242={};var _0x355137={};var _0x5279c3;var _0x580583;return db['Dynamics365Configuration'][_0xa9c5('0x4a')]({'where':{'id':_0x58bc65[_0xa9c5('0x41')]['id']}})['then'](handleEntityNotFound(_0x5e3786,null))[_0xa9c5('0x1f')](function(_0x3ce43b){if(_0x3ce43b){_0x5279c3=_0x3ce43b;_0x355137['model']=_['keys'](db[_0xa9c5('0x47')][_0xa9c5('0x27')]);_0x355137[_0xa9c5('0x2c')]=_['keys'](_0x58bc65[_0xa9c5('0x2c')]);_0x355137[_0xa9c5('0x35')]=_[_0xa9c5('0x2e')](_0x355137['model'],_0x355137[_0xa9c5('0x2c')]);_0x594242[_0xa9c5('0x30')]=_[_0xa9c5('0x2e')](_0x355137[_0xa9c5('0x2b')],qs['fields'](_0x58bc65[_0xa9c5('0x2c')][_0xa9c5('0x2f')]));_0x594242[_0xa9c5('0x30')]=_0x594242['attributes']['length']?_0x594242[_0xa9c5('0x30')]:_0x355137[_0xa9c5('0x2b')];_0x594242[_0xa9c5('0x48')]=qs[_0xa9c5('0x34')](_0x58bc65[_0xa9c5('0x2c')][_0xa9c5('0x34')]);_0x594242[_0xa9c5('0x39')]=qs[_0xa9c5('0x35')](_[_0xa9c5('0x36')](_0x58bc65['query'],_0x355137[_0xa9c5('0x35')]));if(_0x58bc65[_0xa9c5('0x2c')][_0xa9c5('0x37')]){_0x594242['where']=_[_0xa9c5('0x38')](_0x594242['where'],{'$or':_['map'](_0x594242['attributes'],function(_0x3e167a){var _0x365e02={};_0x365e02[_0x3e167a]={'$like':'%'+_0x58bc65[_0xa9c5('0x2c')]['filter']+'%'};return _0x365e02;})});}_0x594242=_[_0xa9c5('0x38')]({},_0x594242,_0x58bc65['options']);return _0x5279c3[_0xa9c5('0x49')](_0x594242);}})[_0xa9c5('0x1f')](function(_0x2f55c9){if(_0x2f55c9){_0x580583=_0x2f55c9['length'];if(!_0x58bc65[_0xa9c5('0x2c')][_0xa9c5('0x32')](_0xa9c5('0x33'))){_0x594242[_0xa9c5('0x17')]=qs['limit'](_0x58bc65['query'][_0xa9c5('0x17')]);_0x594242[_0xa9c5('0x1a')]=qs[_0xa9c5('0x1a')](_0x58bc65['query'][_0xa9c5('0x1a')]);}return _0x5279c3['getSubjects'](_0x594242);}})['then'](function(_0x192828){if(_0x192828){return _0x192828?{'count':_0x580583,'rows':_0x192828}:null;}})['then'](respondWithResult(_0x5e3786,null))[_0xa9c5('0x3f')](handleError(_0x5e3786,null));};exports['getDescriptions']=function(_0x11f605,_0x8ed5f4,_0xe7b266){var _0x2acd09={};var _0x18551a={};var _0x3f3b08;var _0x49ef2f;return db[_0xa9c5('0x3b')][_0xa9c5('0x4a')]({'where':{'id':_0x11f605[_0xa9c5('0x41')]['id']}})[_0xa9c5('0x1f')](handleEntityNotFound(_0x8ed5f4,null))['then'](function(_0xa17c35){if(_0xa17c35){_0x3f3b08=_0xa17c35;_0x18551a['model']=_[_0xa9c5('0x2d')](db[_0xa9c5('0x47')][_0xa9c5('0x27')]);_0x18551a['query']=_[_0xa9c5('0x2d')](_0x11f605[_0xa9c5('0x2c')]);_0x18551a[_0xa9c5('0x35')]=_[_0xa9c5('0x2e')](_0x18551a[_0xa9c5('0x2b')],_0x18551a[_0xa9c5('0x2c')]);_0x2acd09[_0xa9c5('0x30')]=_[_0xa9c5('0x2e')](_0x18551a[_0xa9c5('0x2b')],qs[_0xa9c5('0x2f')](_0x11f605[_0xa9c5('0x2c')]['fields']));_0x2acd09[_0xa9c5('0x30')]=_0x2acd09['attributes']['length']?_0x2acd09[_0xa9c5('0x30')]:_0x18551a[_0xa9c5('0x2b')];_0x2acd09[_0xa9c5('0x48')]=qs[_0xa9c5('0x34')](_0x11f605['query'][_0xa9c5('0x34')]);_0x2acd09[_0xa9c5('0x39')]=qs['filters'](_['pick'](_0x11f605[_0xa9c5('0x2c')],_0x18551a[_0xa9c5('0x35')]));if(_0x11f605[_0xa9c5('0x2c')][_0xa9c5('0x37')]){_0x2acd09[_0xa9c5('0x39')]=_[_0xa9c5('0x38')](_0x2acd09[_0xa9c5('0x39')],{'$or':_[_0xa9c5('0x26')](_0x2acd09[_0xa9c5('0x30')],function(_0x159dae){var _0x2a5d8d={};_0x2a5d8d[_0x159dae]={'$like':'%'+_0x11f605[_0xa9c5('0x2c')][_0xa9c5('0x37')]+'%'};return _0x2a5d8d;})});}_0x2acd09=_[_0xa9c5('0x38')]({},_0x2acd09,_0x11f605[_0xa9c5('0x3a')]);return _0x3f3b08[_0xa9c5('0x4b')](_0x2acd09);}})['then'](function(_0x3140e6){if(_0x3140e6){_0x49ef2f=_0x3140e6['length'];if(!_0x11f605[_0xa9c5('0x2c')][_0xa9c5('0x32')](_0xa9c5('0x33'))){_0x2acd09[_0xa9c5('0x17')]=qs['limit'](_0x11f605[_0xa9c5('0x2c')][_0xa9c5('0x17')]);_0x2acd09['offset']=qs['offset'](_0x11f605['query'][_0xa9c5('0x1a')]);}return _0x3f3b08['getDescriptions'](_0x2acd09);}})['then'](function(_0x5662ca){if(_0x5662ca){return _0x5662ca?{'count':_0x49ef2f,'rows':_0x5662ca}:null;}})[_0xa9c5('0x1f')](respondWithResult(_0x8ed5f4,null))[_0xa9c5('0x3f')](handleError(_0x8ed5f4,null));}; \ No newline at end of file diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js new file mode 100644 index 0000000..af52194 --- /dev/null +++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9bde=['request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util','api','bluebird'];(function(_0x50a856,_0x3c02bc){var _0x32d03b=function(_0x1503fb){while(--_0x1503fb){_0x50a856['push'](_0x50a856['shift']());}};_0x32d03b(++_0x3c02bc);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2ee997,_0xb4f79c){_0x2ee997=_0x2ee997-0x0;var _0x2c6aa2=_0x9bde[_0x2ee997];return _0x2c6aa2;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var moment=require('moment');var BPromise=require(_0xe9bd('0x2'));var rp=require(_0xe9bd('0x3'));var fs=require('fs');var path=require(_0xe9bd('0x4'));var rimraf=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var attributes=require(_0xe9bd('0x7'));module[_0xe9bd('0x8')]=function(_0x4fd7b8,_0x4763e9){return _0x4fd7b8[_0xe9bd('0x9')](_0xe9bd('0xa'),attributes,{'tableName':_0xe9bd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js new file mode 100644 index 0000000..a71fb74 --- /dev/null +++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3c13=['info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x34d7a9,_0x33017e){var _0x49ae7e=function(_0x3896ac){while(--_0x3896ac){_0x34d7a9['push'](_0x34d7a9['shift']());}};_0x49ae7e(++_0x33017e);}(_0x3c13,0x129));var _0x33c1=function(_0x4a5c80,_0x12678f){_0x4a5c80=_0x4a5c80-0x0;var _0x2f5dcc=_0x3c13[_0x4a5c80];return _0x2f5dcc;};'use strict';var _=require('lodash');var util=require(_0x33c1('0x0'));var moment=require(_0x33c1('0x1'));var BPromise=require(_0x33c1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x33c1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x33c1('0x4'));var logger=require('../../config/logger')(_0x33c1('0x5'));var config=require(_0x33c1('0x6'));var jayson=require(_0x33c1('0x7'));var client=jayson[_0x33c1('0x8')][_0x33c1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f71d0,_0x129be0,_0x374299){return new BPromise(function(_0x20ed02,_0x3d489d){return client[_0x33c1('0xa')](_0x1f71d0,_0x374299)['then'](function(_0xfc080a){logger[_0x33c1('0xb')](_0x33c1('0xc'),_0x129be0,_0x33c1('0xd'));logger[_0x33c1('0xe')](_0x33c1('0xf'),_0x129be0,_0x33c1('0xd'),JSON[_0x33c1('0x10')](_0xfc080a));if(_0xfc080a['error']){if(_0xfc080a[_0x33c1('0x11')][_0x33c1('0x12')]===0x1f4){logger[_0x33c1('0x11')](_0x33c1('0xc'),_0x129be0,_0xfc080a['error'][_0x33c1('0x13')]);return _0x3d489d(_0xfc080a[_0x33c1('0x11')][_0x33c1('0x13')]);}logger['error'](_0x33c1('0xc'),_0x129be0,_0xfc080a[_0x33c1('0x11')]['message']);return _0x20ed02(_0xfc080a[_0x33c1('0x11')][_0x33c1('0x13')]);}else{logger[_0x33c1('0xb')](_0x33c1('0xc'),_0x129be0,_0x33c1('0xd'));_0x20ed02(_0xfc080a[_0x33c1('0x14')][_0x33c1('0x13')]);}})[_0x33c1('0x15')](function(_0x210c82){logger[_0x33c1('0x11')](_0x33c1('0xc'),_0x129be0,_0x210c82);_0x3d489d(_0x210c82);});});} \ No newline at end of file diff --git a/server/api/intDynamics365Field/index.js b/server/api/intDynamics365Field/index.js new file mode 100644 index 0000000..7c7780b --- /dev/null +++ b/server/api/intDynamics365Field/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7e83=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','get','isAuthenticated','/:id','show','post','put','delete','destroy','exports'];(function(_0x578673,_0x1e1792){var _0x4f0782=function(_0x572782){while(--_0x572782){_0x578673['push'](_0x578673['shift']());}};_0x4f0782(++_0x1e1792);}(_0x7e83,0x66));var _0x37e8=function(_0x22dbd1,_0x47e0bb){_0x22dbd1=_0x22dbd1-0x0;var _0x50a4fd=_0x7e83[_0x22dbd1];return _0x50a4fd;};'use strict';var multer=require('multer');var util=require(_0x37e8('0x0'));var path=require(_0x37e8('0x1'));var timeout=require(_0x37e8('0x2'));var express=require('express');var router=express[_0x37e8('0x3')]();var fs_extra=require(_0x37e8('0x4'));var auth=require(_0x37e8('0x5'));var interaction=require(_0x37e8('0x6'));var config=require('../../config/environment');var controller=require(_0x37e8('0x7'));router[_0x37e8('0x8')]('/',auth[_0x37e8('0x9')](),controller['index']);router['get'](_0x37e8('0xa'),auth['isAuthenticated'](),controller[_0x37e8('0xb')]);router[_0x37e8('0xc')]('/',auth[_0x37e8('0x9')](),controller['create']);router[_0x37e8('0xd')](_0x37e8('0xa'),auth[_0x37e8('0x9')](),controller['update']);router[_0x37e8('0xe')]('/:id',auth[_0x37e8('0x9')](),controller[_0x37e8('0xf')]);module[_0x37e8('0x10')]=router; \ No newline at end of file diff --git a/server/api/intDynamics365Field/intDynamics365Field.attributes.js b/server/api/intDynamics365Field/intDynamics365Field.attributes.js new file mode 100644 index 0000000..3b12112 --- /dev/null +++ b/server/api/intDynamics365Field/intDynamics365Field.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8c5e=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x8c5e,0x12f));var _0xe8c5=function(_0x51e321,_0x4b3ed7){_0x51e321=_0x51e321-0x0;var _0x6c3f43=_0x8c5e[_0x51e321];return _0x6c3f43;};'use strict';var Sequelize=require(_0xe8c5('0x0'));module[_0xe8c5('0x1')]={'type':{'type':Sequelize[_0xe8c5('0x2')](_0xe8c5('0x3'),_0xe8c5('0x4'),_0xe8c5('0x5'),_0xe8c5('0x6'),_0xe8c5('0x7')),'defaultValue':_0xe8c5('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe8c5('0x2')](_0xe8c5('0x3'),_0xe8c5('0x4'),_0xe8c5('0x5'))},'keyContent':{'type':Sequelize[_0xe8c5('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xe8c5('0x8')]},'customField':{'type':Sequelize[_0xe8c5('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/intDynamics365Field/intDynamics365Field.controller.js b/server/api/intDynamics365Field/intDynamics365Field.controller.js new file mode 100644 index 0000000..8ae47a0 --- /dev/null +++ b/server/api/intDynamics365Field/intDynamics365Field.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x424d=['pick','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','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/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','Dynamics365Field','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where'];(function(_0x5bb34e,_0x528c8e){var _0x11cd7f=function(_0x330dca){while(--_0x330dca){_0x5bb34e['push'](_0x5bb34e['shift']());}};_0x11cd7f(++_0x528c8e);}(_0x424d,0x1f2));var _0xd424=function(_0x3b9d79,_0x42f721){_0x3b9d79=_0x3b9d79-0x0;var _0x16d93e=_0x424d[_0x3b9d79];return _0x16d93e;};'use strict';var emlformat=require(_0xd424('0x0'));var rimraf=require(_0xd424('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd424('0x2'));var rp=require(_0xd424('0x3'));var moment=require(_0xd424('0x4'));var BPromise=require(_0xd424('0x5'));var Mustache=require(_0xd424('0x6'));var util=require(_0xd424('0x7'));var path=require(_0xd424('0x8'));var sox=require(_0xd424('0x9'));var csv=require('to-csv');var ejs=require(_0xd424('0xa'));var fs=require('fs');var fs_extra=require(_0xd424('0xb'));var _=require(_0xd424('0xc'));var squel=require(_0xd424('0xd'));var crypto=require(_0xd424('0xe'));var jsforce=require(_0xd424('0xf'));var deskjs=require(_0xd424('0x10'));var toCsv=require(_0xd424('0x11'));var querystring=require('querystring');var Papa=require(_0xd424('0x12'));var Redis=require(_0xd424('0x13'));var authService=require(_0xd424('0x14'));var qs=require(_0xd424('0x15'));var as=require(_0xd424('0x16'));var hardwareService=require(_0xd424('0x17'));var logger=require(_0xd424('0x18'))(_0xd424('0x19'));var utils=require('../../config/utils');var config=require(_0xd424('0x1a'));var licenseUtil=require(_0xd424('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ba46d,_0x44bce7){_0x44bce7=_0x44bce7||0xcc;return function(_0xc43b67){if(_0xc43b67){return _0x3ba46d[_0xd424('0x1c')](_0x44bce7);}return _0x3ba46d[_0xd424('0x1d')](_0x44bce7)[_0xd424('0x1e')]();};}function respondWithResult(_0x4bce33,_0x4dbe4e){_0x4dbe4e=_0x4dbe4e||0xc8;return function(_0x1623b2){if(_0x1623b2){return _0x4bce33['status'](_0x4dbe4e)[_0xd424('0x1f')](_0x1623b2);}};}function respondWithFilteredResult(_0x40d681,_0x5c66f7){return function(_0x17b828){if(_0x17b828){var _0x3b04a5=typeof _0x5c66f7[_0xd424('0x20')]===_0xd424('0x21')&&typeof _0x5c66f7['limit']===_0xd424('0x21');var _0x3ced68=_0x17b828[_0xd424('0x22')];var _0x50a791=_0x3b04a5?0x0:_0x5c66f7[_0xd424('0x20')];var _0x368fd2=_0x3b04a5?_0x17b828[_0xd424('0x22')]:_0x5c66f7[_0xd424('0x20')]+_0x5c66f7[_0xd424('0x23')];var _0x1c53f6;if(_0x368fd2>=_0x3ced68){_0x368fd2=_0x3ced68;_0x1c53f6=0xc8;}else{_0x1c53f6=0xce;}_0x40d681[_0xd424('0x1d')](_0x1c53f6);return _0x40d681[_0xd424('0x24')](_0xd424('0x25'),_0x50a791+'-'+_0x368fd2+'/'+_0x3ced68)[_0xd424('0x1f')](_0x17b828);}return null;};}function patchUpdates(_0x1fc6de){return function(_0x148b78){try{jsonpatch[_0xd424('0x26')](_0x148b78,_0x1fc6de,!![]);}catch(_0x15af4a){return BPromise[_0xd424('0x27')](_0x15af4a);}return _0x148b78['save']();};}function saveUpdates(_0xb197f5,_0x5d0c57){return function(_0x42f250){if(_0x42f250){return _0x42f250[_0xd424('0x28')](_0xb197f5)[_0xd424('0x29')](function(_0x3fe3b0){return _0x3fe3b0;});}return null;};}function removeEntity(_0x8527e8,_0x36cfcb){return function(_0x172cab){if(_0x172cab){return _0x172cab[_0xd424('0x2a')]()[_0xd424('0x29')](function(){_0x8527e8['status'](0xcc)[_0xd424('0x1e')]();});}};}function handleEntityNotFound(_0x293f63,_0x3675c0){return function(_0x3c5a31){if(!_0x3c5a31){_0x293f63[_0xd424('0x1c')](0x194);}return _0x3c5a31;};}function handleError(_0x394d40,_0x199a71){_0x199a71=_0x199a71||0x1f4;return function(_0x32ea28){logger[_0xd424('0x2b')](_0x32ea28['stack']);if(_0x32ea28['name']){delete _0x32ea28[_0xd424('0x2c')];}_0x394d40[_0xd424('0x1d')](_0x199a71)[_0xd424('0x2d')](_0x32ea28);};}exports[_0xd424('0x2e')]=function(_0x9024b5,_0x402e90){var _0xe96684={},_0x29e579={},_0x1c9ead={'count':0x0,'rows':[]};var _0x5534e0=_['map'](db[_0xd424('0x2f')][_0xd424('0x30')],function(_0x3feed5){return{'name':_0x3feed5[_0xd424('0x31')],'type':_0x3feed5['type'][_0xd424('0x32')]};});_0x29e579[_0xd424('0x33')]=_[_0xd424('0x34')](_0x5534e0,'name');_0x29e579[_0xd424('0x35')]=_[_0xd424('0x36')](_0x9024b5['query']);_0x29e579['filters']=_[_0xd424('0x37')](_0x29e579['model'],_0x29e579[_0xd424('0x35')]);_0xe96684[_0xd424('0x38')]=_[_0xd424('0x37')](_0x29e579[_0xd424('0x33')],qs[_0xd424('0x39')](_0x9024b5['query'][_0xd424('0x39')]));_0xe96684[_0xd424('0x38')]=_0xe96684[_0xd424('0x38')]['length']?_0xe96684[_0xd424('0x38')]:_0x29e579[_0xd424('0x33')];if(!_0x9024b5['query'][_0xd424('0x3a')](_0xd424('0x3b'))){_0xe96684[_0xd424('0x23')]=qs[_0xd424('0x23')](_0x9024b5['query'][_0xd424('0x23')]);_0xe96684['offset']=qs[_0xd424('0x20')](_0x9024b5[_0xd424('0x35')][_0xd424('0x20')]);}_0xe96684['order']=qs[_0xd424('0x3c')](_0x9024b5[_0xd424('0x35')]['sort']);_0xe96684[_0xd424('0x3d')]=qs['filters'](_[_0xd424('0x3e')](_0x9024b5[_0xd424('0x35')],_0x29e579[_0xd424('0x3f')]),_0x5534e0);if(_0x9024b5[_0xd424('0x35')][_0xd424('0x40')]){_0xe96684[_0xd424('0x3d')]=_[_0xd424('0x41')](_0xe96684['where'],{'$or':_[_0xd424('0x34')](_0x5534e0,function(_0xaaf6f4){if(_0xaaf6f4[_0xd424('0x42')]!==_0xd424('0x43')){var _0x472716={};_0x472716[_0xaaf6f4[_0xd424('0x2c')]]={'$like':'%'+_0x9024b5[_0xd424('0x35')][_0xd424('0x40')]+'%'};return _0x472716;}})});}_0xe96684=_[_0xd424('0x41')]({},_0xe96684,_0x9024b5['options']);var _0x43f914={'where':_0xe96684['where']};return db[_0xd424('0x2f')][_0xd424('0x22')](_0x43f914)[_0xd424('0x29')](function(_0x945b02){_0x1c9ead[_0xd424('0x22')]=_0x945b02;if(_0x9024b5[_0xd424('0x35')][_0xd424('0x44')]){_0xe96684[_0xd424('0x45')]=[{'all':!![]}];}return db[_0xd424('0x2f')][_0xd424('0x46')](_0xe96684);})[_0xd424('0x29')](function(_0x2d37ed){_0x1c9ead[_0xd424('0x47')]=_0x2d37ed;return _0x1c9ead;})[_0xd424('0x29')](respondWithFilteredResult(_0x402e90,_0xe96684))[_0xd424('0x48')](handleError(_0x402e90,null));};exports[_0xd424('0x49')]=function(_0x5776ae,_0x4425f6){var _0x478fad={'raw':!![],'where':{'id':_0x5776ae[_0xd424('0x4a')]['id']}},_0x16bd3d={};_0x16bd3d[_0xd424('0x33')]=_[_0xd424('0x36')](db[_0xd424('0x2f')][_0xd424('0x30')]);_0x16bd3d['query']=_['keys'](_0x5776ae[_0xd424('0x35')]);_0x16bd3d[_0xd424('0x3f')]=_[_0xd424('0x37')](_0x16bd3d[_0xd424('0x33')],_0x16bd3d[_0xd424('0x35')]);_0x478fad[_0xd424('0x38')]=_['intersection'](_0x16bd3d['model'],qs[_0xd424('0x39')](_0x5776ae[_0xd424('0x35')]['fields']));_0x478fad['attributes']=_0x478fad[_0xd424('0x38')][_0xd424('0x4b')]?_0x478fad[_0xd424('0x38')]:_0x16bd3d[_0xd424('0x33')];if(_0x5776ae[_0xd424('0x35')][_0xd424('0x44')]){_0x478fad[_0xd424('0x45')]=[{'all':!![]}];}_0x478fad=_[_0xd424('0x41')]({},_0x478fad,_0x5776ae[_0xd424('0x4c')]);return db[_0xd424('0x2f')][_0xd424('0x4d')](_0x478fad)[_0xd424('0x29')](handleEntityNotFound(_0x4425f6,null))[_0xd424('0x29')](respondWithResult(_0x4425f6,null))[_0xd424('0x48')](handleError(_0x4425f6,null));};exports[_0xd424('0x4e')]=function(_0x105191,_0x590f58){return db['Dynamics365Field'][_0xd424('0x4e')](_0x105191['body'],{})['then'](respondWithResult(_0x590f58,0xc9))['catch'](handleError(_0x590f58,null));};exports[_0xd424('0x28')]=function(_0x55867f,_0x364d32){if(_0x55867f[_0xd424('0x4f')]['id']){delete _0x55867f[_0xd424('0x4f')]['id'];}return db[_0xd424('0x2f')][_0xd424('0x4d')]({'where':{'id':_0x55867f[_0xd424('0x4a')]['id']}})[_0xd424('0x29')](handleEntityNotFound(_0x364d32,null))[_0xd424('0x29')](saveUpdates(_0x55867f['body'],null))['then'](respondWithResult(_0x364d32,null))[_0xd424('0x48')](handleError(_0x364d32,null));};exports[_0xd424('0x2a')]=function(_0x949ab9,_0x4dd093){return db[_0xd424('0x2f')][_0xd424('0x4d')]({'where':{'id':_0x949ab9[_0xd424('0x4a')]['id']}})[_0xd424('0x29')](handleEntityNotFound(_0x4dd093,null))['then'](removeEntity(_0x4dd093,null))[_0xd424('0x48')](handleError(_0x4dd093,null));}; \ No newline at end of file diff --git a/server/api/intDynamics365Field/intDynamics365Field.model.js b/server/api/intDynamics365Field/intDynamics365Field.model.js new file mode 100644 index 0000000..299d8b2 --- /dev/null +++ b/server/api/intDynamics365Field/intDynamics365Field.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x344a=['request-promise','rimraf','../../config/environment','./intDynamics365Field.attributes','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird'];(function(_0x4103ba,_0x261f7d){var _0x25af60=function(_0x235419){while(--_0x235419){_0x4103ba['push'](_0x4103ba['shift']());}};_0x25af60(++_0x261f7d);}(_0x344a,0xa0));var _0xa344=function(_0xa4aa58,_0x62a66a){_0xa4aa58=_0xa4aa58-0x0;var _0x159c8c=_0x344a[_0xa4aa58];return _0x159c8c;};'use strict';var _=require(_0xa344('0x0'));var util=require(_0xa344('0x1'));var logger=require(_0xa344('0x2'))(_0xa344('0x3'));var moment=require('moment');var BPromise=require(_0xa344('0x4'));var rp=require(_0xa344('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa344('0x6'));var config=require(_0xa344('0x7'));var attributes=require(_0xa344('0x8'));module['exports']=function(_0xcd737d,_0x15cc63){return _0xcd737d[_0xa344('0x9')](_0xa344('0xa'),attributes,{'tableName':_0xa344('0xb'),'paranoid':![],'indexes':[{'name':_0xa344('0xc'),'fields':[_0xa344('0xd'),_0xa344('0xe')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intDynamics365Field/intDynamics365Field.rpc.js b/server/api/intDynamics365Field/intDynamics365Field.rpc.js new file mode 100644 index 0000000..9393278 --- /dev/null +++ b/server/api/intDynamics365Field/intDynamics365Field.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfdbc=['debug','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent'];(function(_0x56ed28,_0x5bedfe){var _0x1c2f7f=function(_0x27c9bc){while(--_0x27c9bc){_0x56ed28['push'](_0x56ed28['shift']());}};_0x1c2f7f(++_0x5bedfe);}(_0xfdbc,0xba));var _0xcfdb=function(_0x570845,_0x4935ca){_0x570845=_0x570845-0x0;var _0x393e6c=_0xfdbc[_0x570845];return _0x393e6c;};'use strict';var _=require(_0xcfdb('0x0'));var util=require(_0xcfdb('0x1'));var moment=require(_0xcfdb('0x2'));var BPromise=require('bluebird');var rs=require(_0xcfdb('0x3'));var fs=require('fs');var Redis=require(_0xcfdb('0x4'));var db=require(_0xcfdb('0x5'))['db'];var utils=require(_0xcfdb('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xcfdb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcfdb('0x8')][_0xcfdb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x318adb,_0x465b6f,_0x514512){return new BPromise(function(_0x37b30a,_0x12ddf6){return client[_0xcfdb('0xa')](_0x318adb,_0x514512)['then'](function(_0x3e9e83){logger[_0xcfdb('0xb')](_0xcfdb('0xc'),_0x465b6f,_0xcfdb('0xd'));logger[_0xcfdb('0xe')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x465b6f,'request\x20sent',JSON['stringify'](_0x3e9e83));if(_0x3e9e83[_0xcfdb('0xf')]){if(_0x3e9e83[_0xcfdb('0xf')][_0xcfdb('0x10')]===0x1f4){logger[_0xcfdb('0xf')](_0xcfdb('0xc'),_0x465b6f,_0x3e9e83[_0xcfdb('0xf')][_0xcfdb('0x11')]);return _0x12ddf6(_0x3e9e83[_0xcfdb('0xf')][_0xcfdb('0x11')]);}logger[_0xcfdb('0xf')](_0xcfdb('0xc'),_0x465b6f,_0x3e9e83[_0xcfdb('0xf')][_0xcfdb('0x11')]);return _0x37b30a(_0x3e9e83['error'][_0xcfdb('0x11')]);}else{logger['info'](_0xcfdb('0xc'),_0x465b6f,_0xcfdb('0xd'));_0x37b30a(_0x3e9e83[_0xcfdb('0x12')]['message']);}})[_0xcfdb('0x13')](function(_0x25aece){logger['error'](_0xcfdb('0xc'),_0x465b6f,_0x25aece);_0x12ddf6(_0x25aece);});});} \ No newline at end of file diff --git a/server/api/intFreshdeskAccount/index.js b/server/api/intFreshdeskAccount/index.js new file mode 100644 index 0000000..820681e --- /dev/null +++ b/server/api/intFreshdeskAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe4a6=['/:id','show','/:id/configurations','/:id/fields','getFields','create','post','addConfiguration','put','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index'];(function(_0x79496f,_0x2f9747){var _0x39f0bc=function(_0x368044){while(--_0x368044){_0x79496f['push'](_0x79496f['shift']());}};_0x39f0bc(++_0x2f9747);}(_0xe4a6,0x68));var _0x6e4a=function(_0x16b13d,_0x2faf09){_0x16b13d=_0x16b13d-0x0;var _0x1f1e77=_0xe4a6[_0x16b13d];return _0x1f1e77;};'use strict';var multer=require(_0x6e4a('0x0'));var util=require('util');var path=require(_0x6e4a('0x1'));var timeout=require('connect-timeout');var express=require(_0x6e4a('0x2'));var router=express[_0x6e4a('0x3')]();var fs_extra=require(_0x6e4a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6e4a('0x5'));var config=require(_0x6e4a('0x6'));var controller=require(_0x6e4a('0x7'));router[_0x6e4a('0x8')]('/',auth[_0x6e4a('0x9')](),controller[_0x6e4a('0xa')]);router[_0x6e4a('0x8')](_0x6e4a('0xb'),auth[_0x6e4a('0x9')](),controller[_0x6e4a('0xc')]);router[_0x6e4a('0x8')](_0x6e4a('0xd'),auth[_0x6e4a('0x9')](),controller['getConfigurations']);router['get'](_0x6e4a('0xe'),auth[_0x6e4a('0x9')](),controller[_0x6e4a('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6e4a('0x10')]);router[_0x6e4a('0x11')]('/:id/configurations',auth[_0x6e4a('0x9')](),controller[_0x6e4a('0x12')]);router[_0x6e4a('0x13')](_0x6e4a('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6e4a('0x14')](_0x6e4a('0xb'),auth[_0x6e4a('0x9')](),controller[_0x6e4a('0x15')]);module[_0x6e4a('0x16')]=router; \ No newline at end of file diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js new file mode 100644 index 0000000..28b1651 --- /dev/null +++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3423=['username','remoteUri','STRING'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3342('0x0')]},'description':{'type':Sequelize[_0x3342('0x0')]},'username':{'type':Sequelize[_0x3342('0x0')],'unique':_0x3342('0x1')},'apiKey':{'type':Sequelize[_0x3342('0x0')]},'remoteUri':{'type':Sequelize[_0x3342('0x0')],'unique':_0x3342('0x2')},'serverUrl':{'type':Sequelize[_0x3342('0x0')],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js new file mode 100644 index 0000000..113ee27 --- /dev/null +++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e5c=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','then','error','stack','name','index','map','rawAttributes','fieldName','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','FreshdeskAccount','rows','catch','show','params','include','create','body','update','destroy','find','findOne','FreshdeskConfiguration','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','remoteUri','apiKey','slice','substring','lastIndexOf','format','%s/%s','api/v2/ticket_fields','toString','base64','subject','agent','priority','group','ticket_type','company','remove','default','custom_text','choices','test','statusCode','getFields','stringify','eml-format','zip-dir','request-promise','moment','bluebird','sox','to-csv'];(function(_0x313de9,_0x4ecb09){var _0x3ca6a7=function(_0x23f961){while(--_0x23f961){_0x313de9['push'](_0x313de9['shift']());}};_0x3ca6a7(++_0x4ecb09);}(_0x4e5c,0x149));var _0xc4e5=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x4e5c[_0xaa1b3e];return _0x454d7d;};'use strict';var emlformat=require(_0xc4e5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc4e5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc4e5('0x2'));var moment=require(_0xc4e5('0x3'));var BPromise=require(_0xc4e5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc4e5('0x5'));var csv=require(_0xc4e5('0x6'));var ejs=require(_0xc4e5('0x7'));var fs=require('fs');var fs_extra=require(_0xc4e5('0x8'));var _=require(_0xc4e5('0x9'));var squel=require(_0xc4e5('0xa'));var crypto=require(_0xc4e5('0xb'));var jsforce=require(_0xc4e5('0xc'));var deskjs=require(_0xc4e5('0xd'));var toCsv=require(_0xc4e5('0x6'));var querystring=require(_0xc4e5('0xe'));var Papa=require(_0xc4e5('0xf'));var Redis=require('ioredis');var authService=require(_0xc4e5('0x10'));var qs=require(_0xc4e5('0x11'));var as=require(_0xc4e5('0x12'));var hardwareService=require(_0xc4e5('0x13'));var logger=require('../../config/logger')(_0xc4e5('0x14'));var utils=require(_0xc4e5('0x15'));var config=require(_0xc4e5('0x16'));var licenseUtil=require(_0xc4e5('0x17'));var db=require(_0xc4e5('0x18'))['db'];var integrations=require(_0xc4e5('0x19'));function respondWithStatusCode(_0x3fa318,_0x54c5a7){_0x54c5a7=_0x54c5a7||0xcc;return function(_0x5f00d8){if(_0x5f00d8){return _0x3fa318[_0xc4e5('0x1a')](_0x54c5a7);}return _0x3fa318['status'](_0x54c5a7)[_0xc4e5('0x1b')]();};}function respondWithResult(_0x7cd002,_0x303037){_0x303037=_0x303037||0xc8;return function(_0x2404a7){if(_0x2404a7){return _0x7cd002['status'](_0x303037)[_0xc4e5('0x1c')](_0x2404a7);}};}function respondWithFilteredResult(_0x528de4,_0x338c37){return function(_0x3beb59){if(_0x3beb59){var _0x2937d9=typeof _0x338c37[_0xc4e5('0x1d')]===_0xc4e5('0x1e')&&typeof _0x338c37[_0xc4e5('0x1f')]===_0xc4e5('0x1e');var _0x1156ce=_0x3beb59[_0xc4e5('0x20')];var _0x57042c=_0x2937d9?0x0:_0x338c37[_0xc4e5('0x1d')];var _0x154486=_0x2937d9?_0x3beb59['count']:_0x338c37[_0xc4e5('0x1d')]+_0x338c37[_0xc4e5('0x1f')];var _0x5003e5;if(_0x154486>=_0x1156ce){_0x154486=_0x1156ce;_0x5003e5=0xc8;}else{_0x5003e5=0xce;}_0x528de4[_0xc4e5('0x21')](_0x5003e5);return _0x528de4['set']('Content-Range',_0x57042c+'-'+_0x154486+'/'+_0x1156ce)[_0xc4e5('0x1c')](_0x3beb59);}return null;};}function patchUpdates(_0x7dbe6d){return function(_0x4933b7){try{jsonpatch[_0xc4e5('0x22')](_0x4933b7,_0x7dbe6d,!![]);}catch(_0x5be68b){return BPromise[_0xc4e5('0x23')](_0x5be68b);}return _0x4933b7[_0xc4e5('0x24')]();};}function saveUpdates(_0x505078,_0x546949){return function(_0x45abe3){if(_0x45abe3){return _0x45abe3['update'](_0x505078)[_0xc4e5('0x25')](function(_0x41467f){return _0x41467f;});}return null;};}function removeEntity(_0x4bb973,_0x4ed1ff){return function(_0x44299a){if(_0x44299a){return _0x44299a['destroy']()[_0xc4e5('0x25')](function(){_0x4bb973['status'](0xcc)[_0xc4e5('0x1b')]();});}};}function handleEntityNotFound(_0x234b31,_0x53f7cd){return function(_0x5f48fc){if(!_0x5f48fc){_0x234b31['sendStatus'](0x194);}return _0x5f48fc;};}function handleError(_0x23889c,_0x183ec7){_0x183ec7=_0x183ec7||0x1f4;return function(_0x143e66){logger[_0xc4e5('0x26')](_0x143e66[_0xc4e5('0x27')]);if(_0x143e66[_0xc4e5('0x28')]){delete _0x143e66[_0xc4e5('0x28')];}_0x23889c[_0xc4e5('0x21')](_0x183ec7)['send'](_0x143e66);};}exports[_0xc4e5('0x29')]=function(_0x2ad4be,_0x261b88){var _0x23383b={},_0x94dcd0={},_0x4805b2={'count':0x0,'rows':[]};var _0x205f41=_[_0xc4e5('0x2a')](db['FreshdeskAccount'][_0xc4e5('0x2b')],function(_0x598212){return{'name':_0x598212[_0xc4e5('0x2c')],'type':_0x598212['type'][_0xc4e5('0x2d')]};});_0x94dcd0['model']=_[_0xc4e5('0x2a')](_0x205f41,'name');_0x94dcd0['query']=_[_0xc4e5('0x2e')](_0x2ad4be[_0xc4e5('0x2f')]);_0x94dcd0[_0xc4e5('0x30')]=_[_0xc4e5('0x31')](_0x94dcd0['model'],_0x94dcd0[_0xc4e5('0x2f')]);_0x23383b[_0xc4e5('0x32')]=_[_0xc4e5('0x31')](_0x94dcd0[_0xc4e5('0x33')],qs['fields'](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x34')]));_0x23383b[_0xc4e5('0x32')]=_0x23383b[_0xc4e5('0x32')][_0xc4e5('0x35')]?_0x23383b['attributes']:_0x94dcd0[_0xc4e5('0x33')];if(!_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x36')]('nolimit')){_0x23383b[_0xc4e5('0x1f')]=qs[_0xc4e5('0x1f')](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x1f')]);_0x23383b['offset']=qs['offset'](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x1d')]);}_0x23383b[_0xc4e5('0x37')]=qs[_0xc4e5('0x38')](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x38')]);_0x23383b[_0xc4e5('0x39')]=qs[_0xc4e5('0x30')](_[_0xc4e5('0x3a')](_0x2ad4be['query'],_0x94dcd0['filters']),_0x205f41);if(_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x3b')]){_0x23383b[_0xc4e5('0x39')]=_[_0xc4e5('0x3c')](_0x23383b[_0xc4e5('0x39')],{'$or':_['map'](_0x205f41,function(_0x2a77dd){if(_0x2a77dd[_0xc4e5('0x3d')]!==_0xc4e5('0x3e')){var _0x2c754b={};_0x2c754b[_0x2a77dd[_0xc4e5('0x28')]]={'$like':'%'+_0x2ad4be['query'][_0xc4e5('0x3b')]+'%'};return _0x2c754b;}})});}_0x23383b=_[_0xc4e5('0x3c')]({},_0x23383b,_0x2ad4be[_0xc4e5('0x3f')]);var _0x35f940={'where':_0x23383b['where']};return db['FreshdeskAccount']['count'](_0x35f940)[_0xc4e5('0x25')](function(_0x5292a4){_0x4805b2[_0xc4e5('0x20')]=_0x5292a4;if(_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x40')]){_0x23383b['include']=[{'all':!![]}];}return db[_0xc4e5('0x41')]['findAll'](_0x23383b);})[_0xc4e5('0x25')](function(_0x46184f){_0x4805b2[_0xc4e5('0x42')]=_0x46184f;return _0x4805b2;})['then'](respondWithFilteredResult(_0x261b88,_0x23383b))[_0xc4e5('0x43')](handleError(_0x261b88,null));};exports[_0xc4e5('0x44')]=function(_0x1117e1,_0xba5c47){var _0x2ea4a8={'raw':![],'where':{'id':_0x1117e1[_0xc4e5('0x45')]['id']}},_0x409a3f={};_0x409a3f[_0xc4e5('0x33')]=_['keys'](db[_0xc4e5('0x41')][_0xc4e5('0x2b')]);_0x409a3f[_0xc4e5('0x2f')]=_[_0xc4e5('0x2e')](_0x1117e1[_0xc4e5('0x2f')]);_0x409a3f[_0xc4e5('0x30')]=_[_0xc4e5('0x31')](_0x409a3f[_0xc4e5('0x33')],_0x409a3f[_0xc4e5('0x2f')]);_0x2ea4a8[_0xc4e5('0x32')]=_[_0xc4e5('0x31')](_0x409a3f[_0xc4e5('0x33')],qs['fields'](_0x1117e1['query'][_0xc4e5('0x34')]));_0x2ea4a8[_0xc4e5('0x32')]=_0x2ea4a8[_0xc4e5('0x32')][_0xc4e5('0x35')]?_0x2ea4a8['attributes']:_0x409a3f[_0xc4e5('0x33')];if(_0x1117e1['query']['includeAll']){_0x2ea4a8[_0xc4e5('0x46')]=[{'all':!![]}];}_0x2ea4a8=_[_0xc4e5('0x3c')]({},_0x2ea4a8,_0x1117e1['options']);return db[_0xc4e5('0x41')]['find'](_0x2ea4a8)[_0xc4e5('0x25')](handleEntityNotFound(_0xba5c47,null))[_0xc4e5('0x25')](respondWithResult(_0xba5c47,null))[_0xc4e5('0x43')](handleError(_0xba5c47,null));};exports[_0xc4e5('0x47')]=function(_0xd73e5c,_0x347d7c){return db[_0xc4e5('0x41')][_0xc4e5('0x47')](_0xd73e5c[_0xc4e5('0x48')],{})['then'](respondWithResult(_0x347d7c,0xc9))[_0xc4e5('0x43')](handleError(_0x347d7c,null));};exports[_0xc4e5('0x49')]=function(_0x452a5e,_0x14614b){if(_0x452a5e[_0xc4e5('0x48')]['id']){delete _0x452a5e[_0xc4e5('0x48')]['id'];}return db[_0xc4e5('0x41')]['find']({'where':{'id':_0x452a5e[_0xc4e5('0x45')]['id']}})['then'](handleEntityNotFound(_0x14614b,null))[_0xc4e5('0x25')](saveUpdates(_0x452a5e[_0xc4e5('0x48')],null))['then'](respondWithResult(_0x14614b,null))[_0xc4e5('0x43')](handleError(_0x14614b,null));};exports[_0xc4e5('0x4a')]=function(_0x5c536c,_0x51e1d6){return db[_0xc4e5('0x41')][_0xc4e5('0x4b')]({'where':{'id':_0x5c536c[_0xc4e5('0x45')]['id']}})[_0xc4e5('0x25')](handleEntityNotFound(_0x51e1d6,null))['then'](removeEntity(_0x51e1d6,null))[_0xc4e5('0x43')](handleError(_0x51e1d6,null));};exports['getConfigurations']=function(_0x15fb9c,_0x466da5,_0x235d25){var _0x37bed4={};var _0x42c752={};var _0x4a7244;var _0x2c067c;return db[_0xc4e5('0x41')][_0xc4e5('0x4c')]({'where':{'id':_0x15fb9c[_0xc4e5('0x45')]['id']}})[_0xc4e5('0x25')](handleEntityNotFound(_0x466da5,null))[_0xc4e5('0x25')](function(_0x465e27){if(_0x465e27){_0x4a7244=_0x465e27;_0x42c752['model']=_[_0xc4e5('0x2e')](db[_0xc4e5('0x4d')][_0xc4e5('0x2b')]);_0x42c752[_0xc4e5('0x2f')]=_[_0xc4e5('0x2e')](_0x15fb9c[_0xc4e5('0x2f')]);_0x42c752[_0xc4e5('0x30')]=_[_0xc4e5('0x31')](_0x42c752[_0xc4e5('0x33')],_0x42c752[_0xc4e5('0x2f')]);_0x37bed4[_0xc4e5('0x32')]=_['intersection'](_0x42c752['model'],qs[_0xc4e5('0x34')](_0x15fb9c['query']['fields']));_0x37bed4[_0xc4e5('0x32')]=_0x37bed4[_0xc4e5('0x32')][_0xc4e5('0x35')]?_0x37bed4['attributes']:_0x42c752[_0xc4e5('0x33')];_0x37bed4[_0xc4e5('0x37')]=qs[_0xc4e5('0x38')](_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x38')]);_0x37bed4['where']=qs[_0xc4e5('0x30')](_[_0xc4e5('0x3a')](_0x15fb9c[_0xc4e5('0x2f')],_0x42c752[_0xc4e5('0x30')]));if(_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x3b')]){_0x37bed4[_0xc4e5('0x39')]=_[_0xc4e5('0x3c')](_0x37bed4[_0xc4e5('0x39')],{'$or':_[_0xc4e5('0x2a')](_0x37bed4[_0xc4e5('0x32')],function(_0x237c7f){var _0x66c974={};_0x66c974[_0x237c7f]={'$like':'%'+_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x3b')]+'%'};return _0x66c974;})});}_0x37bed4=_[_0xc4e5('0x3c')]({},_0x37bed4,_0x15fb9c[_0xc4e5('0x3f')]);return _0x4a7244[_0xc4e5('0x4e')](_0x37bed4);}})[_0xc4e5('0x25')](function(_0x505aae){if(_0x505aae){_0x2c067c=_0x505aae['length'];if(!_0x15fb9c[_0xc4e5('0x2f')]['hasOwnProperty'](_0xc4e5('0x4f'))){_0x37bed4[_0xc4e5('0x1f')]=qs[_0xc4e5('0x1f')](_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x1f')]);_0x37bed4[_0xc4e5('0x1d')]=qs[_0xc4e5('0x1d')](_0x15fb9c['query'][_0xc4e5('0x1d')]);}return _0x4a7244['getConfigurations'](_0x37bed4);}})[_0xc4e5('0x25')](function(_0x5dbeee){if(_0x5dbeee){return _0x5dbeee?{'count':_0x2c067c,'rows':_0x5dbeee}:null;}})[_0xc4e5('0x25')](respondWithResult(_0x466da5,null))['catch'](handleError(_0x466da5,null));};exports[_0xc4e5('0x50')]=function(_0x23a43e,_0xf776e0,_0x4b5a6a){if(_0x23a43e[_0xc4e5('0x48')]['id']){delete _0x23a43e['body']['id'];}return db[_0xc4e5('0x41')][_0xc4e5('0x4c')]({'where':{'id':_0x23a43e[_0xc4e5('0x45')]['id']}})[_0xc4e5('0x25')](handleEntityNotFound(_0xf776e0,null))[_0xc4e5('0x25')](function(_0x2d528b){if(_0x2d528b){_0x23a43e['body'][_0xc4e5('0x51')]=_0x2d528b['id'];_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x52')]=integrations[_0xc4e5('0x53')](_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x54')],_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x3d')]);_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x55')]=integrations[_0xc4e5('0x56')](_0x23a43e['body'][_0xc4e5('0x54')],_0x23a43e[_0xc4e5('0x48')]['type']);return db[_0xc4e5('0x4d')][_0xc4e5('0x47')](_0x23a43e[_0xc4e5('0x48')],{'include':[{'model':db[_0xc4e5('0x57')],'as':_0xc4e5('0x52')},{'model':db[_0xc4e5('0x57')],'as':'Descriptions'}]});}return null;})[_0xc4e5('0x25')](respondWithResult(_0xf776e0,null))[_0xc4e5('0x43')](handleError(_0xf776e0,null));};exports['getFields']=function(_0x37da48,_0x267886,_0x5d953b){var _0x4bc266='';return db[_0xc4e5('0x41')][_0xc4e5('0x4c')]({'where':{'id':_0x37da48[_0xc4e5('0x45')]['id']},'attributes':['id',_0xc4e5('0x58'),_0xc4e5('0x59')]})[_0xc4e5('0x25')](handleEntityNotFound(_0x267886,null))['then'](function(_0x5ba867){if(_0x5ba867){_0x4bc266=_0x5ba867[_0xc4e5('0x58')];var _0xc14634=_0x4bc266[_0xc4e5('0x5a')](-0x1);if(_0xc14634==='/'){_0x4bc266=_0x4bc266[_0xc4e5('0x5b')](0x0,_0x4bc266[_0xc4e5('0x5c')](_0xc14634));}return rp({'method':'GET','uri':util[_0xc4e5('0x5d')](_0xc4e5('0x5e'),_0x4bc266,_0xc4e5('0x5f')),'headers':{'Authorization':util[_0xc4e5('0x5d')]('Basic\x20%s',new Buffer(util[_0xc4e5('0x5d')]('%s:X',_0x5ba867[_0xc4e5('0x59')]))[_0xc4e5('0x60')](_0xc4e5('0x61')))},'json':!![]});}})['then'](function(_0x52e2e5){if(_0x52e2e5){var _0x5ad018=['requester',_0xc4e5('0x62'),_0xc4e5('0x63'),'description','status',_0xc4e5('0x64'),_0xc4e5('0x65'),'source',_0xc4e5('0x66'),_0xc4e5('0x65'),_0xc4e5('0x67')];_[_0xc4e5('0x68')](_0x52e2e5,function(_0x255e96){return _0x5ad018['includes'](_0x255e96[_0xc4e5('0x28')])||!_0x255e96[_0xc4e5('0x69')]&&_0x255e96[_0xc4e5('0x3d')]!==_0xc4e5('0x6a')&&_0x255e96['type']!=='custom_dropdown';});return{'count':_0x52e2e5[_0xc4e5('0x35')],'rows':_[_0xc4e5('0x2a')](_0x52e2e5,function(_0xec7a48){return{'id':_0xec7a48['name'],'name':_0xec7a48['label'],'custom':!_0xec7a48[_0xc4e5('0x69')],'options':_0xec7a48[_0xc4e5('0x6b')]?_['map'](_0xec7a48[_0xc4e5('0x6b')],function(_0x44367f){return{'name':_['capitalize'](_0x44367f),'value':_0x44367f};}):[]};})};}})['then'](respondWithResult(_0x267886,null))[_0xc4e5('0x43')](function(_0x213aa7){var _0x3492e6=_0x37da48[_0xc4e5('0x2f')][_0xc4e5('0x6c')]?0x1f4:_0x213aa7[_0xc4e5('0x6d')]||0x1f4;logger[_0xc4e5('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0xc4e5('0x6e'),_0x3492e6,JSON[_0xc4e5('0x6f')](_0x213aa7));delete _0x213aa7['name'];if(_0x3492e6===0x191){_0x3492e6=0x190;}_0x267886[_0xc4e5('0x21')](_0x3492e6)['send'](_0x37da48[_0xc4e5('0x2f')][_0xc4e5('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x213aa7[_0xc4e5('0x6d')]}:_0x213aa7);});}; \ No newline at end of file diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js new file mode 100644 index 0000000..fc70dea --- /dev/null +++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xad5e=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','int_freshdesk_accounts','lodash','util','../../config/logger','moment'];(function(_0x56fd29,_0x17790b){var _0x2a0bf7=function(_0x568f20){while(--_0x568f20){_0x56fd29['push'](_0x56fd29['shift']());}};_0x2a0bf7(++_0x17790b);}(_0xad5e,0x68));var _0xead5=function(_0x529bde,_0x32d640){_0x529bde=_0x529bde-0x0;var _0xb7109c=_0xad5e[_0x529bde];return _0xb7109c;};'use strict';var _=require(_0xead5('0x0'));var util=require(_0xead5('0x1'));var logger=require(_0xead5('0x2'))('api');var moment=require(_0xead5('0x3'));var BPromise=require(_0xead5('0x4'));var rp=require(_0xead5('0x5'));var fs=require('fs');var path=require(_0xead5('0x6'));var rimraf=require(_0xead5('0x7'));var config=require(_0xead5('0x8'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xead5('0x9')]=function(_0x3dc137,_0x236585){return _0x3dc137[_0xead5('0xa')]('FreshdeskAccount',attributes,{'tableName':_0xead5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js new file mode 100644 index 0000000..3565a35 --- /dev/null +++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7aa7=['limit','include','map','model','attributes','ShowFreshdeskAccount','find','raw','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshdeskAccount,\x20%s,\x20%s','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where'];(function(_0x4a0355,_0xd5f57){var _0x40727b=function(_0x501ab7){while(--_0x501ab7){_0x4a0355['push'](_0x4a0355['shift']());}};_0x40727b(++_0xd5f57);}(_0x7aa7,0xfd));var _0x77aa=function(_0x56ca45,_0x4b2e91){_0x56ca45=_0x56ca45-0x0;var _0x588fd4=_0x7aa7[_0x56ca45];return _0x588fd4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x77aa('0x0'));var BPromise=require(_0x77aa('0x1'));var rs=require(_0x77aa('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77aa('0x3'))['db'];var utils=require(_0x77aa('0x4'));var logger=require(_0x77aa('0x5'))(_0x77aa('0x6'));var config=require(_0x77aa('0x7'));var jayson=require(_0x77aa('0x8'));var client=jayson[_0x77aa('0x9')][_0x77aa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x549193,_0x45a4f1,_0x16aae6){return new BPromise(function(_0x4e28b,_0x62d7a7){return client[_0x77aa('0xb')](_0x549193,_0x16aae6)[_0x77aa('0xc')](function(_0x2e837b){logger['info'](_0x77aa('0xd'),_0x45a4f1,'request\x20sent');logger['debug'](_0x77aa('0xe'),_0x45a4f1,_0x77aa('0xf'),JSON[_0x77aa('0x10')](_0x2e837b));if(_0x2e837b[_0x77aa('0x11')]){if(_0x2e837b[_0x77aa('0x11')]['code']===0x1f4){logger[_0x77aa('0x11')](_0x77aa('0xd'),_0x45a4f1,_0x2e837b[_0x77aa('0x11')][_0x77aa('0x12')]);return _0x62d7a7(_0x2e837b['error'][_0x77aa('0x12')]);}logger[_0x77aa('0x11')](_0x77aa('0xd'),_0x45a4f1,_0x2e837b['error'][_0x77aa('0x12')]);return _0x4e28b(_0x2e837b['error'][_0x77aa('0x12')]);}else{logger[_0x77aa('0x13')](_0x77aa('0xd'),_0x45a4f1,_0x77aa('0xf'));_0x4e28b(_0x2e837b[_0x77aa('0x14')][_0x77aa('0x12')]);}})[_0x77aa('0x15')](function(_0x2f8d7d){logger[_0x77aa('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0x45a4f1,_0x2f8d7d);_0x62d7a7(_0x2f8d7d);});});}exports[_0x77aa('0x16')]=function(_0x2febb6){var _0x2f51fe=this;return new Promise(function(_0x609e37,_0x56f087){return db[_0x77aa('0x17')][_0x77aa('0x18')]({'raw':_0x2febb6[_0x77aa('0x19')]?_0x2febb6[_0x77aa('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x2febb6[_0x77aa('0x19')]?_0x2febb6['options'][_0x77aa('0x1a')]||null:null,'attributes':_0x2febb6[_0x77aa('0x19')]?_0x2febb6['options']['attributes']||null:null,'limit':_0x2febb6[_0x77aa('0x19')]?_0x2febb6[_0x77aa('0x19')][_0x77aa('0x1b')]||null:null,'include':_0x2febb6[_0x77aa('0x19')]?_0x2febb6['options'][_0x77aa('0x1c')]?_[_0x77aa('0x1d')](_0x2febb6[_0x77aa('0x19')]['include'],function(_0x5af6b9){return{'model':db[_0x5af6b9[_0x77aa('0x1e')]],'as':_0x5af6b9['as'],'attributes':_0x5af6b9['attributes'],'include':_0x5af6b9['include']?_['map'](_0x5af6b9[_0x77aa('0x1c')],function(_0x445c45){return{'model':db[_0x445c45[_0x77aa('0x1e')]],'as':_0x445c45['as'],'attributes':_0x445c45[_0x77aa('0x1f')],'include':_0x445c45[_0x77aa('0x1c')]?_[_0x77aa('0x1d')](_0x445c45[_0x77aa('0x1c')],function(_0x286691){return{'model':db[_0x286691['model']],'as':_0x286691['as'],'attributes':_0x286691[_0x77aa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x77aa('0xc')](function(_0x3eb851){logger['info']('GetFreshdeskAccount',_0x2febb6);logger['debug'](_0x77aa('0x16'),_0x2febb6,JSON['stringify'](_0x3eb851));_0x609e37(_0x3eb851);})['catch'](function(_0x58f427){logger['error'](_0x77aa('0x16'),_0x58f427[_0x77aa('0x12')],_0x2febb6);_0x56f087(_0x2f51fe['error'](0x1f4,_0x58f427['message']));});});};exports[_0x77aa('0x20')]=function(_0x1ec1ab){var _0x5c29b0=this;return new Promise(function(_0xab7732,_0x26e0db){return db['FreshdeskAccount'][_0x77aa('0x21')]({'raw':_0x1ec1ab[_0x77aa('0x19')]?_0x1ec1ab['options'][_0x77aa('0x22')]===undefined?!![]:![]:!![],'where':_0x1ec1ab[_0x77aa('0x19')]?_0x1ec1ab[_0x77aa('0x19')][_0x77aa('0x1a')]||null:null,'attributes':_0x1ec1ab[_0x77aa('0x19')]?_0x1ec1ab[_0x77aa('0x19')][_0x77aa('0x1f')]||null:null,'include':_0x1ec1ab['options']?_0x1ec1ab[_0x77aa('0x19')]['include']?_[_0x77aa('0x1d')](_0x1ec1ab['options']['include'],function(_0x32594f){return{'model':db[_0x32594f[_0x77aa('0x1e')]],'as':_0x32594f['as'],'attributes':_0x32594f['attributes'],'include':_0x32594f[_0x77aa('0x1c')]?_[_0x77aa('0x1d')](_0x32594f[_0x77aa('0x1c')],function(_0x418e04){return{'model':db[_0x418e04[_0x77aa('0x1e')]],'as':_0x418e04['as'],'attributes':_0x418e04[_0x77aa('0x1f')],'include':_0x418e04[_0x77aa('0x1c')]?_[_0x77aa('0x1d')](_0x418e04[_0x77aa('0x1c')],function(_0x32bc30){return{'model':db[_0x32bc30[_0x77aa('0x1e')]],'as':_0x32bc30['as'],'attributes':_0x32bc30['attributes']};}):[]};}):[]};}):[]:[]})[_0x77aa('0xc')](function(_0x46553d){logger[_0x77aa('0x13')](_0x77aa('0x20'),_0x1ec1ab);logger['debug'](_0x77aa('0x20'),_0x1ec1ab,JSON[_0x77aa('0x10')](_0x46553d));_0xab7732(_0x46553d);})['catch'](function(_0x5c5ea3){logger[_0x77aa('0x11')]('ShowFreshdeskAccount',_0x5c5ea3['message'],_0x1ec1ab);_0x26e0db(_0x5c29b0['error'](0x1f4,_0x5c5ea3[_0x77aa('0x12')]));});});}; \ No newline at end of file diff --git a/server/api/intFreshdeskConfiguration/index.js b/server/api/intFreshdeskConfiguration/index.js new file mode 100644 index 0000000..0ececfd --- /dev/null +++ b/server/api/intFreshdeskConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7c94=['fs-extra','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x24c2e3,_0x988100){var _0xf129fc=function(_0x268069){while(--_0x268069){_0x24c2e3['push'](_0x24c2e3['shift']());}};_0xf129fc(++_0x988100);}(_0x7c94,0x119));var _0x47c9=function(_0x2c66ed,_0x158377){_0x2c66ed=_0x2c66ed-0x0;var _0x2f0974=_0x7c94[_0x2c66ed];return _0x2f0974;};'use strict';var multer=require(_0x47c9('0x0'));var util=require(_0x47c9('0x1'));var path=require(_0x47c9('0x2'));var timeout=require(_0x47c9('0x3'));var express=require(_0x47c9('0x4'));var router=express['Router']();var fs_extra=require(_0x47c9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x47c9('0x6'));var config=require('../../config/environment');var controller=require(_0x47c9('0x7'));router[_0x47c9('0x8')]('/',auth[_0x47c9('0x9')](),controller[_0x47c9('0xa')]);router[_0x47c9('0x8')](_0x47c9('0xb'),auth[_0x47c9('0x9')](),controller[_0x47c9('0xc')]);router[_0x47c9('0x8')](_0x47c9('0xd'),auth[_0x47c9('0x9')](),controller[_0x47c9('0xe')]);router[_0x47c9('0x8')]('/:id/subjects',auth[_0x47c9('0x9')](),controller[_0x47c9('0xf')]);router[_0x47c9('0x8')](_0x47c9('0x10'),auth[_0x47c9('0x9')](),controller[_0x47c9('0x11')]);router['get'](_0x47c9('0x12'),auth[_0x47c9('0x9')](),controller[_0x47c9('0x13')]);router[_0x47c9('0x14')]('/',auth['isAuthenticated'](),controller[_0x47c9('0x15')]);router[_0x47c9('0x14')](_0x47c9('0x12'),auth[_0x47c9('0x9')](),controller['setTags']);router[_0x47c9('0x16')](_0x47c9('0xb'),auth[_0x47c9('0x9')](),controller[_0x47c9('0x17')]);router['delete'](_0x47c9('0xb'),auth[_0x47c9('0x9')](),controller[_0x47c9('0x18')]);module[_0x47c9('0x19')]=router; \ No newline at end of file diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js new file mode 100644 index 0000000..6f6db7a --- /dev/null +++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb61a=['exports','STRING'];(function(_0x412c8f,_0x11ec94){var _0x27c005=function(_0x127059){while(--_0x127059){_0x412c8f['push'](_0x412c8f['shift']());}};_0x27c005(++_0x11ec94);}(_0xb61a,0xfa));var _0xab61=function(_0x335b86,_0x848570){_0x335b86=_0x335b86-0x0;var _0x47f662=_0xb61a[_0x335b86];return _0x47f662;};'use strict';var Sequelize=require('sequelize');module[_0xab61('0x0')]={'name':{'type':Sequelize[_0xab61('0x1')]},'description':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js new file mode 100644 index 0000000..e29e0fb --- /dev/null +++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9514=['reject','then','error','stack','name','send','index','map','FreshdeskConfiguration','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','include','findAll','rows','show','params','rawAttributes','fields','includeAll','options','find','catch','create','body','update','findOne','FreshdeskField','order','pick','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','count','Content-Range','json','apply'];(function(_0x4a7a63,_0x529128){var _0x682e4e=function(_0x2179d5){while(--_0x2179d5){_0x4a7a63['push'](_0x4a7a63['shift']());}};_0x682e4e(++_0x529128);}(_0x9514,0x129));var _0x4951=function(_0x27aa1d,_0x211021){_0x27aa1d=_0x27aa1d-0x0;var _0x46deb2=_0x9514[_0x27aa1d];return _0x46deb2;};'use strict';var emlformat=require(_0x4951('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4951('0x1'));var jsonpatch=require(_0x4951('0x2'));var rp=require(_0x4951('0x3'));var moment=require(_0x4951('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x4951('0x5'));var sox=require(_0x4951('0x6'));var csv=require(_0x4951('0x7'));var ejs=require(_0x4951('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4951('0x9'));var squel=require(_0x4951('0xa'));var crypto=require(_0x4951('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4951('0xc'));var Redis=require(_0x4951('0xd'));var authService=require(_0x4951('0xe'));var qs=require(_0x4951('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4951('0x10'));var logger=require(_0x4951('0x11'))(_0x4951('0x12'));var utils=require(_0x4951('0x13'));var config=require(_0x4951('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4951('0x15'))['db'];function respondWithStatusCode(_0x31ef65,_0x58f6b6){_0x58f6b6=_0x58f6b6||0xcc;return function(_0x2377e3){if(_0x2377e3){return _0x31ef65[_0x4951('0x16')](_0x58f6b6);}return _0x31ef65[_0x4951('0x17')](_0x58f6b6)[_0x4951('0x18')]();};}function respondWithResult(_0x391e2f,_0x37d9fa){_0x37d9fa=_0x37d9fa||0xc8;return function(_0x5c4009){if(_0x5c4009){return _0x391e2f[_0x4951('0x17')](_0x37d9fa)['json'](_0x5c4009);}};}function respondWithFilteredResult(_0x4bd69e,_0x29a9ea){return function(_0x3ba497){if(_0x3ba497){var _0x18f1a8=typeof _0x29a9ea[_0x4951('0x19')]==='undefined'&&typeof _0x29a9ea[_0x4951('0x1a')]==='undefined';var _0x1474f8=_0x3ba497[_0x4951('0x1b')];var _0x3440a9=_0x18f1a8?0x0:_0x29a9ea['offset'];var _0x3848f7=_0x18f1a8?_0x3ba497['count']:_0x29a9ea[_0x4951('0x19')]+_0x29a9ea['limit'];var _0x55cea5;if(_0x3848f7>=_0x1474f8){_0x3848f7=_0x1474f8;_0x55cea5=0xc8;}else{_0x55cea5=0xce;}_0x4bd69e[_0x4951('0x17')](_0x55cea5);return _0x4bd69e['set'](_0x4951('0x1c'),_0x3440a9+'-'+_0x3848f7+'/'+_0x1474f8)[_0x4951('0x1d')](_0x3ba497);}return null;};}function patchUpdates(_0x4c6155){return function(_0x33cc16){try{jsonpatch[_0x4951('0x1e')](_0x33cc16,_0x4c6155,!![]);}catch(_0x947b29){return BPromise[_0x4951('0x1f')](_0x947b29);}return _0x33cc16['save']();};}function saveUpdates(_0x579a74,_0x21a757){return function(_0x58e1d6){if(_0x58e1d6){return _0x58e1d6['update'](_0x579a74)[_0x4951('0x20')](function(_0xb85998){return _0xb85998;});}return null;};}function removeEntity(_0x4337aa,_0x139238){return function(_0x53e36d){if(_0x53e36d){return _0x53e36d['destroy']()['then'](function(){_0x4337aa[_0x4951('0x17')](0xcc)[_0x4951('0x18')]();});}};}function handleEntityNotFound(_0x4bfba3,_0x48dbb3){return function(_0x1a819a){if(!_0x1a819a){_0x4bfba3[_0x4951('0x16')](0x194);}return _0x1a819a;};}function handleError(_0x19ce64,_0xbdbc95){_0xbdbc95=_0xbdbc95||0x1f4;return function(_0x463c1e){logger[_0x4951('0x21')](_0x463c1e[_0x4951('0x22')]);if(_0x463c1e[_0x4951('0x23')]){delete _0x463c1e['name'];}_0x19ce64[_0x4951('0x17')](_0xbdbc95)[_0x4951('0x24')](_0x463c1e);};}exports[_0x4951('0x25')]=function(_0x58d7ab,_0x1c04a9){var _0x2321c0={},_0x3d915b={},_0x40976c={'count':0x0,'rows':[]};var _0x1582d2=_[_0x4951('0x26')](db[_0x4951('0x27')]['rawAttributes'],function(_0x528043){return{'name':_0x528043[_0x4951('0x28')],'type':_0x528043[_0x4951('0x29')][_0x4951('0x2a')]};});_0x3d915b[_0x4951('0x2b')]=_['map'](_0x1582d2,'name');_0x3d915b[_0x4951('0x2c')]=_[_0x4951('0x2d')](_0x58d7ab['query']);_0x3d915b['filters']=_[_0x4951('0x2e')](_0x3d915b[_0x4951('0x2b')],_0x3d915b[_0x4951('0x2c')]);_0x2321c0[_0x4951('0x2f')]=_['intersection'](_0x3d915b[_0x4951('0x2b')],qs['fields'](_0x58d7ab[_0x4951('0x2c')]['fields']));_0x2321c0[_0x4951('0x2f')]=_0x2321c0[_0x4951('0x2f')][_0x4951('0x30')]?_0x2321c0[_0x4951('0x2f')]:_0x3d915b['model'];if(!_0x58d7ab[_0x4951('0x2c')][_0x4951('0x31')](_0x4951('0x32'))){_0x2321c0[_0x4951('0x1a')]=qs[_0x4951('0x1a')](_0x58d7ab[_0x4951('0x2c')][_0x4951('0x1a')]);_0x2321c0[_0x4951('0x19')]=qs['offset'](_0x58d7ab[_0x4951('0x2c')][_0x4951('0x19')]);}_0x2321c0['order']=qs[_0x4951('0x33')](_0x58d7ab[_0x4951('0x2c')][_0x4951('0x33')]);_0x2321c0[_0x4951('0x34')]=qs[_0x4951('0x35')](_['pick'](_0x58d7ab[_0x4951('0x2c')],_0x3d915b[_0x4951('0x35')]),_0x1582d2);if(_0x58d7ab[_0x4951('0x2c')][_0x4951('0x36')]){_0x2321c0['where']=_[_0x4951('0x37')](_0x2321c0[_0x4951('0x34')],{'$or':_[_0x4951('0x26')](_0x1582d2,function(_0x2ced64){if(_0x2ced64[_0x4951('0x29')]!==_0x4951('0x38')){var _0x129d1a={};_0x129d1a[_0x2ced64[_0x4951('0x23')]]={'$like':'%'+_0x58d7ab[_0x4951('0x2c')][_0x4951('0x36')]+'%'};return _0x129d1a;}})});}_0x2321c0=_['merge']({},_0x2321c0,_0x58d7ab['options']);var _0x47fdb6={'where':_0x2321c0['where']};return db['FreshdeskConfiguration']['count'](_0x47fdb6)['then'](function(_0x48aa43){_0x40976c[_0x4951('0x1b')]=_0x48aa43;if(_0x58d7ab['query']['includeAll']){_0x2321c0[_0x4951('0x39')]=[{'all':!![]}];}return db[_0x4951('0x27')][_0x4951('0x3a')](_0x2321c0);})[_0x4951('0x20')](function(_0xc023ad){_0x40976c[_0x4951('0x3b')]=_0xc023ad;return _0x40976c;})[_0x4951('0x20')](respondWithFilteredResult(_0x1c04a9,_0x2321c0))['catch'](handleError(_0x1c04a9,null));};exports[_0x4951('0x3c')]=function(_0x21af43,_0x38e4b8){var _0x45a15e={'raw':![],'where':{'id':_0x21af43[_0x4951('0x3d')]['id']}},_0x1009e1={};_0x1009e1[_0x4951('0x2b')]=_[_0x4951('0x2d')](db[_0x4951('0x27')][_0x4951('0x3e')]);_0x1009e1[_0x4951('0x2c')]=_['keys'](_0x21af43[_0x4951('0x2c')]);_0x1009e1[_0x4951('0x35')]=_['intersection'](_0x1009e1[_0x4951('0x2b')],_0x1009e1[_0x4951('0x2c')]);_0x45a15e['attributes']=_[_0x4951('0x2e')](_0x1009e1['model'],qs[_0x4951('0x3f')](_0x21af43[_0x4951('0x2c')][_0x4951('0x3f')]));_0x45a15e[_0x4951('0x2f')]=_0x45a15e['attributes'][_0x4951('0x30')]?_0x45a15e[_0x4951('0x2f')]:_0x1009e1[_0x4951('0x2b')];if(_0x21af43[_0x4951('0x2c')][_0x4951('0x40')]){_0x45a15e[_0x4951('0x39')]=[{'all':!![]}];}_0x45a15e=_[_0x4951('0x37')]({},_0x45a15e,_0x21af43[_0x4951('0x41')]);return db['FreshdeskConfiguration'][_0x4951('0x42')](_0x45a15e)[_0x4951('0x20')](handleEntityNotFound(_0x38e4b8,null))[_0x4951('0x20')](respondWithResult(_0x38e4b8,null))[_0x4951('0x43')](handleError(_0x38e4b8,null));};exports[_0x4951('0x44')]=function(_0x186430,_0x154c5c){return db[_0x4951('0x27')][_0x4951('0x44')](_0x186430[_0x4951('0x45')],{})[_0x4951('0x20')](respondWithResult(_0x154c5c,0xc9))[_0x4951('0x43')](handleError(_0x154c5c,null));};exports[_0x4951('0x46')]=function(_0x1019fc,_0x301b18){if(_0x1019fc['body']['id']){delete _0x1019fc['body']['id'];}return db[_0x4951('0x27')][_0x4951('0x42')]({'where':{'id':_0x1019fc[_0x4951('0x3d')]['id']}})[_0x4951('0x20')](handleEntityNotFound(_0x301b18,null))[_0x4951('0x20')](saveUpdates(_0x1019fc['body'],null))[_0x4951('0x20')](respondWithResult(_0x301b18,null))['catch'](handleError(_0x301b18,null));};exports['destroy']=function(_0x2352ad,_0xa0c8ed){return db['FreshdeskConfiguration']['find']({'where':{'id':_0x2352ad[_0x4951('0x3d')]['id']}})['then'](handleEntityNotFound(_0xa0c8ed,null))[_0x4951('0x20')](removeEntity(_0xa0c8ed,null))[_0x4951('0x43')](handleError(_0xa0c8ed,null));};exports['getFields']=function(_0x3cefe4,_0x499776,_0x24f97d){var _0x41e84c={};var _0x4e4ba3={};var _0x3ab91c;var _0x3370e9;return db[_0x4951('0x27')][_0x4951('0x47')]({'where':{'id':_0x3cefe4[_0x4951('0x3d')]['id']}})[_0x4951('0x20')](handleEntityNotFound(_0x499776,null))['then'](function(_0x444ab0){if(_0x444ab0){_0x3ab91c=_0x444ab0;_0x4e4ba3['model']=_[_0x4951('0x2d')](db[_0x4951('0x48')]['rawAttributes']);_0x4e4ba3['query']=_[_0x4951('0x2d')](_0x3cefe4['query']);_0x4e4ba3[_0x4951('0x35')]=_[_0x4951('0x2e')](_0x4e4ba3[_0x4951('0x2b')],_0x4e4ba3['query']);_0x41e84c[_0x4951('0x2f')]=_[_0x4951('0x2e')](_0x4e4ba3[_0x4951('0x2b')],qs[_0x4951('0x3f')](_0x3cefe4[_0x4951('0x2c')][_0x4951('0x3f')]));_0x41e84c[_0x4951('0x2f')]=_0x41e84c['attributes'][_0x4951('0x30')]?_0x41e84c['attributes']:_0x4e4ba3[_0x4951('0x2b')];_0x41e84c[_0x4951('0x49')]=qs[_0x4951('0x33')](_0x3cefe4[_0x4951('0x2c')][_0x4951('0x33')]);_0x41e84c['where']=qs['filters'](_[_0x4951('0x4a')](_0x3cefe4[_0x4951('0x2c')],_0x4e4ba3[_0x4951('0x35')]));if(_0x3cefe4[_0x4951('0x2c')][_0x4951('0x36')]){_0x41e84c[_0x4951('0x34')]=_[_0x4951('0x37')](_0x41e84c[_0x4951('0x34')],{'$or':_[_0x4951('0x26')](_0x41e84c[_0x4951('0x2f')],function(_0x1e1a94){var _0x1c47b7={};_0x1c47b7[_0x1e1a94]={'$like':'%'+_0x3cefe4[_0x4951('0x2c')][_0x4951('0x36')]+'%'};return _0x1c47b7;})});}_0x41e84c=_[_0x4951('0x37')]({},_0x41e84c,_0x3cefe4[_0x4951('0x41')]);return _0x3ab91c[_0x4951('0x4b')](_0x41e84c);}})[_0x4951('0x20')](function(_0x2a685f){if(_0x2a685f){_0x3370e9=_0x2a685f[_0x4951('0x30')];if(!_0x3cefe4[_0x4951('0x2c')]['hasOwnProperty'](_0x4951('0x32'))){_0x41e84c[_0x4951('0x1a')]=qs[_0x4951('0x1a')](_0x3cefe4[_0x4951('0x2c')]['limit']);_0x41e84c[_0x4951('0x19')]=qs[_0x4951('0x19')](_0x3cefe4[_0x4951('0x2c')]['offset']);}return _0x3ab91c[_0x4951('0x4b')](_0x41e84c);}})[_0x4951('0x20')](function(_0x11991d){if(_0x11991d){return _0x11991d?{'count':_0x3370e9,'rows':_0x11991d}:null;}})[_0x4951('0x20')](respondWithResult(_0x499776,null))['catch'](handleError(_0x499776,null));};exports[_0x4951('0x4c')]=function(_0x479337,_0x32dea6,_0x5a6dc2){var _0x59c1fc={};var _0x81d39a={};var _0x22ddcd;var _0x41b19f;return db[_0x4951('0x27')][_0x4951('0x47')]({'where':{'id':_0x479337[_0x4951('0x3d')]['id']}})[_0x4951('0x20')](handleEntityNotFound(_0x32dea6,null))[_0x4951('0x20')](function(_0x3df2da){if(_0x3df2da){_0x22ddcd=_0x3df2da;_0x81d39a['model']=_[_0x4951('0x2d')](db[_0x4951('0x48')][_0x4951('0x3e')]);_0x81d39a[_0x4951('0x2c')]=_[_0x4951('0x2d')](_0x479337[_0x4951('0x2c')]);_0x81d39a['filters']=_[_0x4951('0x2e')](_0x81d39a[_0x4951('0x2b')],_0x81d39a[_0x4951('0x2c')]);_0x59c1fc[_0x4951('0x2f')]=_[_0x4951('0x2e')](_0x81d39a['model'],qs[_0x4951('0x3f')](_0x479337['query']['fields']));_0x59c1fc['attributes']=_0x59c1fc[_0x4951('0x2f')][_0x4951('0x30')]?_0x59c1fc[_0x4951('0x2f')]:_0x81d39a['model'];_0x59c1fc[_0x4951('0x49')]=qs[_0x4951('0x33')](_0x479337[_0x4951('0x2c')][_0x4951('0x33')]);_0x59c1fc[_0x4951('0x34')]=qs[_0x4951('0x35')](_[_0x4951('0x4a')](_0x479337[_0x4951('0x2c')],_0x81d39a[_0x4951('0x35')]));if(_0x479337[_0x4951('0x2c')][_0x4951('0x36')]){_0x59c1fc['where']=_['merge'](_0x59c1fc['where'],{'$or':_[_0x4951('0x26')](_0x59c1fc[_0x4951('0x2f')],function(_0x5dc4a8){var _0x3d8cd7={};_0x3d8cd7[_0x5dc4a8]={'$like':'%'+_0x479337[_0x4951('0x2c')][_0x4951('0x36')]+'%'};return _0x3d8cd7;})});}_0x59c1fc=_[_0x4951('0x37')]({},_0x59c1fc,_0x479337[_0x4951('0x41')]);return _0x22ddcd['getSubjects'](_0x59c1fc);}})[_0x4951('0x20')](function(_0x38c01b){if(_0x38c01b){_0x41b19f=_0x38c01b[_0x4951('0x30')];if(!_0x479337['query'][_0x4951('0x31')](_0x4951('0x32'))){_0x59c1fc['limit']=qs[_0x4951('0x1a')](_0x479337[_0x4951('0x2c')][_0x4951('0x1a')]);_0x59c1fc[_0x4951('0x19')]=qs['offset'](_0x479337['query'][_0x4951('0x19')]);}return _0x22ddcd[_0x4951('0x4c')](_0x59c1fc);}})['then'](function(_0x5dda6a){if(_0x5dda6a){return _0x5dda6a?{'count':_0x41b19f,'rows':_0x5dda6a}:null;}})['then'](respondWithResult(_0x32dea6,null))['catch'](handleError(_0x32dea6,null));};exports[_0x4951('0x4d')]=function(_0x464549,_0x8d6581,_0x336484){var _0x33c3b2={};var _0x4cbeb5={};var _0x4bb39a;var _0x5c7809;return db[_0x4951('0x27')][_0x4951('0x47')]({'where':{'id':_0x464549[_0x4951('0x3d')]['id']}})[_0x4951('0x20')](handleEntityNotFound(_0x8d6581,null))[_0x4951('0x20')](function(_0x4d0f4){if(_0x4d0f4){_0x4bb39a=_0x4d0f4;_0x4cbeb5[_0x4951('0x2b')]=_[_0x4951('0x2d')](db[_0x4951('0x48')]['rawAttributes']);_0x4cbeb5['query']=_['keys'](_0x464549['query']);_0x4cbeb5[_0x4951('0x35')]=_[_0x4951('0x2e')](_0x4cbeb5['model'],_0x4cbeb5[_0x4951('0x2c')]);_0x33c3b2[_0x4951('0x2f')]=_[_0x4951('0x2e')](_0x4cbeb5[_0x4951('0x2b')],qs[_0x4951('0x3f')](_0x464549[_0x4951('0x2c')]['fields']));_0x33c3b2[_0x4951('0x2f')]=_0x33c3b2[_0x4951('0x2f')]['length']?_0x33c3b2[_0x4951('0x2f')]:_0x4cbeb5[_0x4951('0x2b')];_0x33c3b2[_0x4951('0x49')]=qs[_0x4951('0x33')](_0x464549[_0x4951('0x2c')][_0x4951('0x33')]);_0x33c3b2['where']=qs[_0x4951('0x35')](_['pick'](_0x464549[_0x4951('0x2c')],_0x4cbeb5['filters']));if(_0x464549[_0x4951('0x2c')][_0x4951('0x36')]){_0x33c3b2[_0x4951('0x34')]=_[_0x4951('0x37')](_0x33c3b2['where'],{'$or':_['map'](_0x33c3b2[_0x4951('0x2f')],function(_0x48a15f){var _0x1bcd57={};_0x1bcd57[_0x48a15f]={'$like':'%'+_0x464549[_0x4951('0x2c')][_0x4951('0x36')]+'%'};return _0x1bcd57;})});}_0x33c3b2=_[_0x4951('0x37')]({},_0x33c3b2,_0x464549[_0x4951('0x41')]);return _0x4bb39a[_0x4951('0x4d')](_0x33c3b2);}})[_0x4951('0x20')](function(_0x20dea8){if(_0x20dea8){_0x5c7809=_0x20dea8[_0x4951('0x30')];if(!_0x464549[_0x4951('0x2c')]['hasOwnProperty']('nolimit')){_0x33c3b2[_0x4951('0x1a')]=qs[_0x4951('0x1a')](_0x464549[_0x4951('0x2c')]['limit']);_0x33c3b2['offset']=qs['offset'](_0x464549[_0x4951('0x2c')][_0x4951('0x19')]);}return _0x4bb39a['getDescriptions'](_0x33c3b2);}})[_0x4951('0x20')](function(_0x3f991c){if(_0x3f991c){return _0x3f991c?{'count':_0x5c7809,'rows':_0x3f991c}:null;}})[_0x4951('0x20')](respondWithResult(_0x8d6581,null))[_0x4951('0x43')](handleError(_0x8d6581,null));};exports[_0x4951('0x4e')]=function(_0x23e0a8,_0x3b18e9,_0x1a94f4){var _0x482f4f={};var _0x22eebd={};var _0x3e924f;var _0x30b5f1;return db[_0x4951('0x27')][_0x4951('0x47')]({'where':{'id':_0x23e0a8[_0x4951('0x3d')]['id']}})[_0x4951('0x20')](handleEntityNotFound(_0x3b18e9,null))[_0x4951('0x20')](function(_0x3f0b95){if(_0x3f0b95){_0x3e924f=_0x3f0b95;_0x22eebd[_0x4951('0x2b')]=_['keys'](db[_0x4951('0x4f')]['rawAttributes']);_0x22eebd[_0x4951('0x2c')]=_[_0x4951('0x2d')](_0x23e0a8[_0x4951('0x2c')]);_0x22eebd['filters']=_[_0x4951('0x2e')](_0x22eebd['model'],_0x22eebd[_0x4951('0x2c')]);_0x482f4f[_0x4951('0x2f')]=_[_0x4951('0x2e')](_0x22eebd['model'],qs[_0x4951('0x3f')](_0x23e0a8[_0x4951('0x2c')]['fields']));_0x482f4f[_0x4951('0x2f')]=_0x482f4f[_0x4951('0x2f')][_0x4951('0x30')]?_0x482f4f[_0x4951('0x2f')]:_0x22eebd[_0x4951('0x2b')];_0x482f4f['order']=qs['sort'](_0x23e0a8[_0x4951('0x2c')][_0x4951('0x33')]);_0x482f4f[_0x4951('0x34')]=qs['filters'](_[_0x4951('0x4a')](_0x23e0a8[_0x4951('0x2c')],_0x22eebd[_0x4951('0x35')]));if(_0x23e0a8[_0x4951('0x2c')][_0x4951('0x36')]){_0x482f4f['where']=_['merge'](_0x482f4f[_0x4951('0x34')],{'$or':_['map'](_0x482f4f[_0x4951('0x2f')],function(_0x118232){var _0x558a1f={};_0x558a1f[_0x118232]={'$like':'%'+_0x23e0a8[_0x4951('0x2c')]['filter']+'%'};return _0x558a1f;})});}_0x482f4f=_[_0x4951('0x37')]({},_0x482f4f,_0x23e0a8[_0x4951('0x41')]);return _0x3e924f[_0x4951('0x4e')](_0x482f4f);}})['then'](function(_0xe58e89){if(_0xe58e89){_0x30b5f1=_0xe58e89[_0x4951('0x30')];if(!_0x23e0a8[_0x4951('0x2c')][_0x4951('0x31')]('nolimit')){_0x482f4f['limit']=qs[_0x4951('0x1a')](_0x23e0a8[_0x4951('0x2c')]['limit']);_0x482f4f[_0x4951('0x19')]=qs[_0x4951('0x19')](_0x23e0a8['query'][_0x4951('0x19')]);}return _0x3e924f[_0x4951('0x4e')](_0x482f4f);}})[_0x4951('0x20')](function(_0x3402c0){if(_0x3402c0){return _0x3402c0?{'count':_0x30b5f1,'rows':_0x3402c0}:null;}})[_0x4951('0x20')](respondWithResult(_0x3b18e9,null))[_0x4951('0x43')](handleError(_0x3b18e9,null));};exports[_0x4951('0x50')]=function(_0x2d4e18,_0x1d1a12,_0xdc3d8c){if(_0x2d4e18['body']['id']){delete _0x2d4e18[_0x4951('0x45')]['id'];}return db[_0x4951('0x27')]['findOne']({'where':{'id':_0x2d4e18[_0x4951('0x3d')]['id']}})[_0x4951('0x20')](handleEntityNotFound(_0x1d1a12,null))[_0x4951('0x20')](function(_0x4b5cd9){if(_0x4b5cd9){return _0x4b5cd9[_0x4951('0x50')](_0x2d4e18[_0x4951('0x45')][_0x4951('0x51')]||[]);}return null;})[_0x4951('0x20')](respondWithResult(_0x1d1a12,null))[_0x4951('0x43')](handleError(_0x1d1a12,null));}; \ No newline at end of file diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js new file mode 100644 index 0000000..9755b24 --- /dev/null +++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5498=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x5533bc,_0x259123){var _0x5c0c0e=function(_0x49557a){while(--_0x49557a){_0x5533bc['push'](_0x5533bc['shift']());}};_0x5c0c0e(++_0x259123);}(_0x5498,0x1ad));var _0x8549=function(_0x54482d,_0x48e95d){_0x54482d=_0x54482d-0x0;var _0x610d61=_0x5498[_0x54482d];return _0x610d61;};'use strict';var _=require(_0x8549('0x0'));var util=require(_0x8549('0x1'));var logger=require(_0x8549('0x2'))(_0x8549('0x3'));var moment=require(_0x8549('0x4'));var BPromise=require(_0x8549('0x5'));var rp=require(_0x8549('0x6'));var fs=require('fs');var path=require(_0x8549('0x7'));var rimraf=require(_0x8549('0x8'));var config=require(_0x8549('0x9'));var attributes=require(_0x8549('0xa'));module['exports']=function(_0x531c70,_0x8c61a){return _0x531c70[_0x8549('0xb')](_0x8549('0xc'),attributes,{'tableName':_0x8549('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js new file mode 100644 index 0000000..2a11f4d --- /dev/null +++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x46ca=['error','code','message','info','result','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x53f44c,_0x497bdc){var _0x3e8278=function(_0x4d8a93){while(--_0x4d8a93){_0x53f44c['push'](_0x53f44c['shift']());}};_0x3e8278(++_0x497bdc);}(_0x46ca,0x6e));var _0xa46c=function(_0x5c16ad,_0x24312a){_0x5c16ad=_0x5c16ad-0x0;var _0xf9d36e=_0x46ca[_0x5c16ad];return _0xf9d36e;};'use strict';var _=require(_0xa46c('0x0'));var util=require('util');var moment=require(_0xa46c('0x1'));var BPromise=require(_0xa46c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa46c('0x3'));var db=require(_0xa46c('0x4'))['db'];var utils=require(_0xa46c('0x5'));var logger=require(_0xa46c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa46c('0x7'));var client=jayson[_0xa46c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c6438,_0x362940,_0x101215){return new BPromise(function(_0x42c85e,_0x54dff2){return client[_0xa46c('0x9')](_0x5c6438,_0x101215)[_0xa46c('0xa')](function(_0x2f40b3){logger['info'](_0xa46c('0xb'),_0x362940,_0xa46c('0xc'));logger[_0xa46c('0xd')](_0xa46c('0xe'),_0x362940,_0xa46c('0xc'),JSON[_0xa46c('0xf')](_0x2f40b3));if(_0x2f40b3[_0xa46c('0x10')]){if(_0x2f40b3[_0xa46c('0x10')][_0xa46c('0x11')]===0x1f4){logger[_0xa46c('0x10')](_0xa46c('0xb'),_0x362940,_0x2f40b3[_0xa46c('0x10')]['message']);return _0x54dff2(_0x2f40b3[_0xa46c('0x10')][_0xa46c('0x12')]);}logger[_0xa46c('0x10')](_0xa46c('0xb'),_0x362940,_0x2f40b3[_0xa46c('0x10')][_0xa46c('0x12')]);return _0x42c85e(_0x2f40b3[_0xa46c('0x10')]['message']);}else{logger[_0xa46c('0x13')](_0xa46c('0xb'),_0x362940,_0xa46c('0xc'));_0x42c85e(_0x2f40b3[_0xa46c('0x14')][_0xa46c('0x12')]);}})['catch'](function(_0x144961){logger[_0xa46c('0x10')](_0xa46c('0xb'),_0x362940,_0x144961);_0x54dff2(_0x144961);});});} \ No newline at end of file diff --git a/server/api/intFreshdeskField/index.js b/server/api/intFreshdeskField/index.js new file mode 100644 index 0000000..3ddfbe1 --- /dev/null +++ b/server/api/intFreshdeskField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xde41=['delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','create'];(function(_0x196e6b,_0x5cf260){var _0x3b004f=function(_0x4ac09b){while(--_0x4ac09b){_0x196e6b['push'](_0x196e6b['shift']());}};_0x3b004f(++_0x5cf260);}(_0xde41,0xe2));var _0x1de4=function(_0x1af442,_0x578f22){_0x1af442=_0x1af442-0x0;var _0x1e8244=_0xde41[_0x1af442];return _0x1e8244;};'use strict';var multer=require(_0x1de4('0x0'));var util=require('util');var path=require(_0x1de4('0x1'));var timeout=require(_0x1de4('0x2'));var express=require('express');var router=express[_0x1de4('0x3')]();var fs_extra=require(_0x1de4('0x4'));var auth=require(_0x1de4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1de4('0x6'));router[_0x1de4('0x7')]('/',auth[_0x1de4('0x8')](),controller[_0x1de4('0x9')]);router[_0x1de4('0x7')](_0x1de4('0xa'),auth[_0x1de4('0x8')](),controller['show']);router['post']('/',auth[_0x1de4('0x8')](),controller[_0x1de4('0xb')]);router['put']('/:id',auth[_0x1de4('0x8')](),controller['update']);router[_0x1de4('0xc')](_0x1de4('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1de4('0xd')]=router; \ No newline at end of file diff --git a/server/api/intFreshdeskField/intFreshdeskField.attributes.js b/server/api/intFreshdeskField/intFreshdeskField.attributes.js new file mode 100644 index 0000000..bfab2ab --- /dev/null +++ b/server/api/intFreshdeskField/intFreshdeskField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0547=['BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING','variable'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0x0547,0x191));var _0x7054=function(_0x57fc56,_0x2b8490){_0x57fc56=_0x57fc56-0x0;var _0x83205b=_0x0547[_0x57fc56];return _0x83205b;};'use strict';var Sequelize=require(_0x7054('0x0'));module[_0x7054('0x1')]={'type':{'type':Sequelize[_0x7054('0x2')](_0x7054('0x3'),'variable',_0x7054('0x4'),_0x7054('0x5'),_0x7054('0x6')),'defaultValue':_0x7054('0x3')},'content':{'type':Sequelize[_0x7054('0x7')]},'key':{'type':Sequelize[_0x7054('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x7054('0x3'),_0x7054('0x8'),_0x7054('0x4'))},'keyContent':{'type':Sequelize[_0x7054('0x7')]},'idField':{'type':Sequelize[_0x7054('0x7')]},'nameField':{'type':Sequelize[_0x7054('0x7')]},'customField':{'type':Sequelize[_0x7054('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7054('0x7')]}}; \ No newline at end of file diff --git a/server/api/intFreshdeskField/intFreshdeskField.controller.js b/server/api/intFreshdeskField/intFreshdeskField.controller.js new file mode 100644 index 0000000..c3d412e --- /dev/null +++ b/server/api/intFreshdeskField/intFreshdeskField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x04b8=['undefined','count','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','FreshdeskField','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','update','find','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','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','sendStatus','status','end','json','offset','limit'];(function(_0x47745c,_0x1c6c5d){var _0x1ce8cc=function(_0x3e93d5){while(--_0x3e93d5){_0x47745c['push'](_0x47745c['shift']());}};_0x1ce8cc(++_0x1c6c5d);}(_0x04b8,0x159));var _0x804b=function(_0x4ed632,_0x5195a3){_0x4ed632=_0x4ed632-0x0;var _0x3e809e=_0x04b8[_0x4ed632];return _0x3e809e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x804b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x804b('0x1'));var rp=require(_0x804b('0x2'));var moment=require('moment');var BPromise=require(_0x804b('0x3'));var Mustache=require(_0x804b('0x4'));var util=require('util');var path=require(_0x804b('0x5'));var sox=require(_0x804b('0x6'));var csv=require(_0x804b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x804b('0x8'));var _=require(_0x804b('0x9'));var squel=require(_0x804b('0xa'));var crypto=require('crypto');var jsforce=require(_0x804b('0xb'));var deskjs=require(_0x804b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x804b('0xd'));var Papa=require(_0x804b('0xe'));var Redis=require(_0x804b('0xf'));var authService=require(_0x804b('0x10'));var qs=require(_0x804b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x804b('0x12'));var logger=require(_0x804b('0x13'))(_0x804b('0x14'));var utils=require(_0x804b('0x15'));var config=require(_0x804b('0x16'));var licenseUtil=require(_0x804b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15a4eb,_0x5303cc){_0x5303cc=_0x5303cc||0xcc;return function(_0x23ee57){if(_0x23ee57){return _0x15a4eb[_0x804b('0x18')](_0x5303cc);}return _0x15a4eb[_0x804b('0x19')](_0x5303cc)[_0x804b('0x1a')]();};}function respondWithResult(_0x581fbf,_0x215825){_0x215825=_0x215825||0xc8;return function(_0x1b01a7){if(_0x1b01a7){return _0x581fbf[_0x804b('0x19')](_0x215825)[_0x804b('0x1b')](_0x1b01a7);}};}function respondWithFilteredResult(_0x4ff1be,_0x2fd593){return function(_0x8ccbe0){if(_0x8ccbe0){var _0x5e1cfe=typeof _0x2fd593[_0x804b('0x1c')]==='undefined'&&typeof _0x2fd593[_0x804b('0x1d')]===_0x804b('0x1e');var _0x13662e=_0x8ccbe0[_0x804b('0x1f')];var _0x3a05c0=_0x5e1cfe?0x0:_0x2fd593['offset'];var _0x871d6c=_0x5e1cfe?_0x8ccbe0['count']:_0x2fd593[_0x804b('0x1c')]+_0x2fd593[_0x804b('0x1d')];var _0x42cceb;if(_0x871d6c>=_0x13662e){_0x871d6c=_0x13662e;_0x42cceb=0xc8;}else{_0x42cceb=0xce;}_0x4ff1be[_0x804b('0x19')](_0x42cceb);return _0x4ff1be['set'](_0x804b('0x20'),_0x3a05c0+'-'+_0x871d6c+'/'+_0x13662e)[_0x804b('0x1b')](_0x8ccbe0);}return null;};}function patchUpdates(_0x427166){return function(_0x11eaf6){try{jsonpatch[_0x804b('0x21')](_0x11eaf6,_0x427166,!![]);}catch(_0x267878){return BPromise[_0x804b('0x22')](_0x267878);}return _0x11eaf6[_0x804b('0x23')]();};}function saveUpdates(_0xaa9521,_0x2b7271){return function(_0x1acc48){if(_0x1acc48){return _0x1acc48['update'](_0xaa9521)[_0x804b('0x24')](function(_0x5a77e0){return _0x5a77e0;});}return null;};}function removeEntity(_0x5585f8,_0x44a921){return function(_0x367024){if(_0x367024){return _0x367024[_0x804b('0x25')]()[_0x804b('0x24')](function(){_0x5585f8[_0x804b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2de812,_0x7d9c33){return function(_0x4e7266){if(!_0x4e7266){_0x2de812[_0x804b('0x18')](0x194);}return _0x4e7266;};}function handleError(_0x2366b6,_0x1117a5){_0x1117a5=_0x1117a5||0x1f4;return function(_0x27d5ec){logger[_0x804b('0x26')](_0x27d5ec['stack']);if(_0x27d5ec[_0x804b('0x27')]){delete _0x27d5ec[_0x804b('0x27')];}_0x2366b6[_0x804b('0x19')](_0x1117a5)[_0x804b('0x28')](_0x27d5ec);};}exports[_0x804b('0x29')]=function(_0x4a6079,_0x3eb531){var _0x2931ff={},_0x410871={},_0x5c7026={'count':0x0,'rows':[]};var _0x3dbd41=_[_0x804b('0x2a')](db[_0x804b('0x2b')]['rawAttributes'],function(_0x408857){return{'name':_0x408857[_0x804b('0x2c')],'type':_0x408857['type'][_0x804b('0x2d')]};});_0x410871[_0x804b('0x2e')]=_[_0x804b('0x2a')](_0x3dbd41,_0x804b('0x27'));_0x410871[_0x804b('0x2f')]=_[_0x804b('0x30')](_0x4a6079['query']);_0x410871[_0x804b('0x31')]=_[_0x804b('0x32')](_0x410871[_0x804b('0x2e')],_0x410871[_0x804b('0x2f')]);_0x2931ff[_0x804b('0x33')]=_[_0x804b('0x32')](_0x410871[_0x804b('0x2e')],qs[_0x804b('0x34')](_0x4a6079[_0x804b('0x2f')][_0x804b('0x34')]));_0x2931ff[_0x804b('0x33')]=_0x2931ff[_0x804b('0x33')][_0x804b('0x35')]?_0x2931ff[_0x804b('0x33')]:_0x410871[_0x804b('0x2e')];if(!_0x4a6079[_0x804b('0x2f')][_0x804b('0x36')](_0x804b('0x37'))){_0x2931ff[_0x804b('0x1d')]=qs[_0x804b('0x1d')](_0x4a6079[_0x804b('0x2f')][_0x804b('0x1d')]);_0x2931ff[_0x804b('0x1c')]=qs[_0x804b('0x1c')](_0x4a6079[_0x804b('0x2f')]['offset']);}_0x2931ff['order']=qs['sort'](_0x4a6079[_0x804b('0x2f')][_0x804b('0x38')]);_0x2931ff[_0x804b('0x39')]=qs['filters'](_['pick'](_0x4a6079['query'],_0x410871[_0x804b('0x31')]),_0x3dbd41);if(_0x4a6079[_0x804b('0x2f')][_0x804b('0x3a')]){_0x2931ff[_0x804b('0x39')]=_[_0x804b('0x3b')](_0x2931ff[_0x804b('0x39')],{'$or':_[_0x804b('0x2a')](_0x3dbd41,function(_0xc5eefa){if(_0xc5eefa[_0x804b('0x3c')]!==_0x804b('0x3d')){var _0x878dac={};_0x878dac[_0xc5eefa[_0x804b('0x27')]]={'$like':'%'+_0x4a6079[_0x804b('0x2f')]['filter']+'%'};return _0x878dac;}})});}_0x2931ff=_[_0x804b('0x3b')]({},_0x2931ff,_0x4a6079[_0x804b('0x3e')]);var _0xb877d6={'where':_0x2931ff[_0x804b('0x39')]};return db[_0x804b('0x2b')]['count'](_0xb877d6)['then'](function(_0x203890){_0x5c7026[_0x804b('0x1f')]=_0x203890;if(_0x4a6079[_0x804b('0x2f')]['includeAll']){_0x2931ff[_0x804b('0x3f')]=[{'all':!![]}];}return db['FreshdeskField'][_0x804b('0x40')](_0x2931ff);})[_0x804b('0x24')](function(_0x20ccc7){_0x5c7026[_0x804b('0x41')]=_0x20ccc7;return _0x5c7026;})[_0x804b('0x24')](respondWithFilteredResult(_0x3eb531,_0x2931ff))[_0x804b('0x42')](handleError(_0x3eb531,null));};exports[_0x804b('0x43')]=function(_0x51c8ff,_0x17972a){var _0x1c0363={'raw':!![],'where':{'id':_0x51c8ff[_0x804b('0x44')]['id']}},_0x1dcec8={};_0x1dcec8['model']=_[_0x804b('0x30')](db[_0x804b('0x2b')][_0x804b('0x45')]);_0x1dcec8[_0x804b('0x2f')]=_[_0x804b('0x30')](_0x51c8ff[_0x804b('0x2f')]);_0x1dcec8[_0x804b('0x31')]=_[_0x804b('0x32')](_0x1dcec8['model'],_0x1dcec8[_0x804b('0x2f')]);_0x1c0363['attributes']=_['intersection'](_0x1dcec8['model'],qs[_0x804b('0x34')](_0x51c8ff['query'][_0x804b('0x34')]));_0x1c0363[_0x804b('0x33')]=_0x1c0363[_0x804b('0x33')][_0x804b('0x35')]?_0x1c0363['attributes']:_0x1dcec8[_0x804b('0x2e')];if(_0x51c8ff[_0x804b('0x2f')][_0x804b('0x46')]){_0x1c0363['include']=[{'all':!![]}];}_0x1c0363=_[_0x804b('0x3b')]({},_0x1c0363,_0x51c8ff[_0x804b('0x3e')]);return db[_0x804b('0x2b')]['find'](_0x1c0363)[_0x804b('0x24')](handleEntityNotFound(_0x17972a,null))[_0x804b('0x24')](respondWithResult(_0x17972a,null))[_0x804b('0x42')](handleError(_0x17972a,null));};exports[_0x804b('0x47')]=function(_0x1051e9,_0x3a39f5){return db[_0x804b('0x2b')][_0x804b('0x47')](_0x1051e9[_0x804b('0x48')],{})[_0x804b('0x24')](respondWithResult(_0x3a39f5,0xc9))[_0x804b('0x42')](handleError(_0x3a39f5,null));};exports[_0x804b('0x49')]=function(_0x20862f,_0x2c1796){if(_0x20862f['body']['id']){delete _0x20862f['body']['id'];}return db[_0x804b('0x2b')][_0x804b('0x4a')]({'where':{'id':_0x20862f[_0x804b('0x44')]['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x2c1796,null))[_0x804b('0x24')](saveUpdates(_0x20862f['body'],null))[_0x804b('0x24')](respondWithResult(_0x2c1796,null))[_0x804b('0x42')](handleError(_0x2c1796,null));};exports[_0x804b('0x25')]=function(_0x3ca9ff,_0x47247c){return db[_0x804b('0x2b')]['find']({'where':{'id':_0x3ca9ff['params']['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x47247c,null))[_0x804b('0x24')](removeEntity(_0x47247c,null))['catch'](handleError(_0x47247c,null));}; \ No newline at end of file diff --git a/server/api/intFreshdeskField/intFreshdeskField.model.js b/server/api/intFreshdeskField/intFreshdeskField.model.js new file mode 100644 index 0000000..fb7323a --- /dev/null +++ b/server/api/intFreshdeskField/intFreshdeskField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8d5b=['rimraf','../../config/environment','./intFreshdeskField.attributes','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','FieldId','lodash','api','moment','bluebird','path'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x8d5b,0x19f));var _0xb8d5=function(_0x5311a1,_0x304912){_0x5311a1=_0x5311a1-0x0;var _0x2acb9f=_0x8d5b[_0x5311a1];return _0x2acb9f;};'use strict';var _=require(_0xb8d5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb8d5('0x1'));var moment=require(_0xb8d5('0x2'));var BPromise=require(_0xb8d5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb8d5('0x4'));var rimraf=require(_0xb8d5('0x5'));var config=require(_0xb8d5('0x6'));var attributes=require(_0xb8d5('0x7'));module['exports']=function(_0x5eb975,_0x3a841b){return _0x5eb975['define'](_0xb8d5('0x8'),attributes,{'tableName':_0xb8d5('0x9'),'paranoid':![],'indexes':[{'name':_0xb8d5('0xa'),'fields':['idField',_0xb8d5('0xb')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intFreshdeskField/intFreshdeskField.rpc.js b/server/api/intFreshdeskField/intFreshdeskField.rpc.js new file mode 100644 index 0000000..6e96a0c --- /dev/null +++ b/server/api/intFreshdeskField/intFreshdeskField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6501=['request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info'];(function(_0xb30a60,_0x19580f){var _0x381a7b=function(_0x27f846){while(--_0x27f846){_0xb30a60['push'](_0xb30a60['shift']());}};_0x381a7b(++_0x19580f);}(_0x6501,0x179));var _0x1650=function(_0x2ba540,_0x38dc1f){_0x2ba540=_0x2ba540-0x0;var _0x1d611f=_0x6501[_0x2ba540];return _0x1d611f;};'use strict';var _=require(_0x1650('0x0'));var util=require(_0x1650('0x1'));var moment=require(_0x1650('0x2'));var BPromise=require(_0x1650('0x3'));var rs=require(_0x1650('0x4'));var fs=require('fs');var Redis=require(_0x1650('0x5'));var db=require(_0x1650('0x6'))['db'];var utils=require(_0x1650('0x7'));var logger=require(_0x1650('0x8'))(_0x1650('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1650('0xa')][_0x1650('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4713cc,_0x31f411,_0xa309f2){return new BPromise(function(_0x86612e,_0x4f1505){return client['request'](_0x4713cc,_0xa309f2)[_0x1650('0xc')](function(_0x348397){logger[_0x1650('0xd')]('FreshdeskField,\x20%s,\x20%s',_0x31f411,_0x1650('0xe'));logger['debug'](_0x1650('0xf'),_0x31f411,_0x1650('0xe'),JSON[_0x1650('0x10')](_0x348397));if(_0x348397[_0x1650('0x11')]){if(_0x348397[_0x1650('0x11')][_0x1650('0x12')]===0x1f4){logger['error'](_0x1650('0x13'),_0x31f411,_0x348397['error'][_0x1650('0x14')]);return _0x4f1505(_0x348397[_0x1650('0x11')][_0x1650('0x14')]);}logger['error'](_0x1650('0x13'),_0x31f411,_0x348397[_0x1650('0x11')][_0x1650('0x14')]);return _0x86612e(_0x348397['error']['message']);}else{logger[_0x1650('0xd')](_0x1650('0x13'),_0x31f411,'request\x20sent');_0x86612e(_0x348397[_0x1650('0x15')][_0x1650('0x14')]);}})[_0x1650('0x16')](function(_0x2dbd13){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x31f411,_0x2dbd13);_0x4f1505(_0x2dbd13);});});} \ No newline at end of file diff --git a/server/api/intFreshsalesAccount/index.js b/server/api/intFreshsalesAccount/index.js new file mode 100644 index 0000000..be79d4f --- /dev/null +++ b/server/api/intFreshsalesAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2547=['addConfiguration','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','create'];(function(_0x1b4076,_0x48a507){var _0x1458d4=function(_0x4cbf89){while(--_0x4cbf89){_0x1b4076['push'](_0x1b4076['shift']());}};_0x1458d4(++_0x48a507);}(_0x2547,0x1cd));var _0x7254=function(_0x4fec5c,_0x2e3d55){_0x4fec5c=_0x4fec5c-0x0;var _0x336d9c=_0x2547[_0x4fec5c];return _0x336d9c;};'use strict';var multer=require('multer');var util=require(_0x7254('0x0'));var path=require(_0x7254('0x1'));var timeout=require(_0x7254('0x2'));var express=require(_0x7254('0x3'));var router=express[_0x7254('0x4')]();var fs_extra=require(_0x7254('0x5'));var auth=require(_0x7254('0x6'));var interaction=require(_0x7254('0x7'));var config=require('../../config/environment');var controller=require(_0x7254('0x8'));router[_0x7254('0x9')]('/',auth[_0x7254('0xa')](),controller[_0x7254('0xb')]);router['get'](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0xd')]);router['get'](_0x7254('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0x7254('0xf'),auth[_0x7254('0xa')](),controller[_0x7254('0x10')]);router[_0x7254('0x11')]('/',auth[_0x7254('0xa')](),controller[_0x7254('0x12')]);router['post'](_0x7254('0xe'),auth['isAuthenticated'](),controller[_0x7254('0x13')]);router['put'](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0x14')]);router[_0x7254('0x15')](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0x16')]);module[_0x7254('0x17')]=router; \ No newline at end of file diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js new file mode 100644 index 0000000..b9b89d9 --- /dev/null +++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7096=['exports','STRING','username','remoteUri'];(function(_0xaf3f37,_0x9c7557){var _0x39966a=function(_0x2442fa){while(--_0x2442fa){_0xaf3f37['push'](_0xaf3f37['shift']());}};_0x39966a(++_0x9c7557);}(_0x7096,0x10c));var _0x6709=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x7096[_0x5b561d];return _0x431060;};'use strict';var Sequelize=require('sequelize');module[_0x6709('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6709('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x6709('0x2')},'apiKey':{'type':Sequelize[_0x6709('0x1')]},'remoteUri':{'type':Sequelize[_0x6709('0x1')],'unique':_0x6709('0x3')},'serverUrl':{'type':Sequelize[_0x6709('0x1')],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js new file mode 100644 index 0000000..f7c38be --- /dev/null +++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8ea0=['VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','intersection','find','update','body','params','getConfigurations','findOne','FreshsalesConfiguration','filter','addConfiguration','AccountId','getSubjects','Descriptions','channel','FreshsalesField','getFields','username','remoteUri','apiKey','substring','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','then','destroy','error','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge'];(function(_0x2fb25f,_0x19f264){var _0x2a2ccd=function(_0x270ee9){while(--_0x270ee9){_0x2fb25f['push'](_0x2fb25f['shift']());}};_0x2a2ccd(++_0x19f264);}(_0x8ea0,0xf5));var _0x08ea=function(_0x26b947,_0x561f91){_0x26b947=_0x26b947-0x0;var _0x4fb87a=_0x8ea0[_0x26b947];return _0x4fb87a;};'use strict';var emlformat=require(_0x08ea('0x0'));var rimraf=require(_0x08ea('0x1'));var zipdir=require(_0x08ea('0x2'));var jsonpatch=require(_0x08ea('0x3'));var rp=require('request-promise');var moment=require(_0x08ea('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x08ea('0x5'));var util=require(_0x08ea('0x6'));var path=require(_0x08ea('0x7'));var sox=require(_0x08ea('0x8'));var csv=require(_0x08ea('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x08ea('0xa'));var _=require(_0x08ea('0xb'));var squel=require(_0x08ea('0xc'));var crypto=require(_0x08ea('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x08ea('0xe'));var toCsv=require('to-csv');var querystring=require(_0x08ea('0xf'));var Papa=require('papaparse');var Redis=require(_0x08ea('0x10'));var authService=require(_0x08ea('0x11'));var qs=require(_0x08ea('0x12'));var as=require(_0x08ea('0x13'));var hardwareService=require(_0x08ea('0x14'));var logger=require(_0x08ea('0x15'))(_0x08ea('0x16'));var utils=require('../../config/utils');var config=require(_0x08ea('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x08ea('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2b0dd3,_0x4860af){_0x4860af=_0x4860af||0xcc;return function(_0x1d3604){if(_0x1d3604){return _0x2b0dd3[_0x08ea('0x19')](_0x4860af);}return _0x2b0dd3[_0x08ea('0x1a')](_0x4860af)[_0x08ea('0x1b')]();};}function respondWithResult(_0x53453a,_0x178e12){_0x178e12=_0x178e12||0xc8;return function(_0x50c186){if(_0x50c186){return _0x53453a['status'](_0x178e12)[_0x08ea('0x1c')](_0x50c186);}};}function respondWithFilteredResult(_0x43b3d5,_0x70c6d9){return function(_0x5ca343){if(_0x5ca343){var _0x2455bd=typeof _0x70c6d9[_0x08ea('0x1d')]===_0x08ea('0x1e')&&typeof _0x70c6d9['limit']==='undefined';var _0x245022=_0x5ca343[_0x08ea('0x1f')];var _0xff5145=_0x2455bd?0x0:_0x70c6d9[_0x08ea('0x1d')];var _0x1884b5=_0x2455bd?_0x5ca343[_0x08ea('0x1f')]:_0x70c6d9[_0x08ea('0x1d')]+_0x70c6d9[_0x08ea('0x20')];var _0x581caf;if(_0x1884b5>=_0x245022){_0x1884b5=_0x245022;_0x581caf=0xc8;}else{_0x581caf=0xce;}_0x43b3d5['status'](_0x581caf);return _0x43b3d5[_0x08ea('0x21')]('Content-Range',_0xff5145+'-'+_0x1884b5+'/'+_0x245022)[_0x08ea('0x1c')](_0x5ca343);}return null;};}function patchUpdates(_0x383c6b){return function(_0x1fbc74){try{jsonpatch['apply'](_0x1fbc74,_0x383c6b,!![]);}catch(_0x11776e){return BPromise[_0x08ea('0x22')](_0x11776e);}return _0x1fbc74[_0x08ea('0x23')]();};}function saveUpdates(_0x4cf1b8,_0x5b3281){return function(_0x38f762){if(_0x38f762){return _0x38f762['update'](_0x4cf1b8)[_0x08ea('0x24')](function(_0x11f252){return _0x11f252;});}return null;};}function removeEntity(_0x5260bc,_0x23ab6e){return function(_0x37da2a){if(_0x37da2a){return _0x37da2a[_0x08ea('0x25')]()[_0x08ea('0x24')](function(){_0x5260bc['status'](0xcc)[_0x08ea('0x1b')]();});}};}function handleEntityNotFound(_0x8fc50,_0x265187){return function(_0xab63f7){if(!_0xab63f7){_0x8fc50[_0x08ea('0x19')](0x194);}return _0xab63f7;};}function handleError(_0x50bf0d,_0x28d88a){_0x28d88a=_0x28d88a||0x1f4;return function(_0x38871f){logger[_0x08ea('0x26')](_0x38871f['stack']);if(_0x38871f[_0x08ea('0x27')]){delete _0x38871f[_0x08ea('0x27')];}_0x50bf0d[_0x08ea('0x1a')](_0x28d88a)[_0x08ea('0x28')](_0x38871f);};}exports[_0x08ea('0x29')]=function(_0x45a899,_0xb8aab4){var _0x2408a1={},_0x374211={},_0x4d5b1e={'count':0x0,'rows':[]};var _0x174de9=_[_0x08ea('0x2a')](db[_0x08ea('0x2b')][_0x08ea('0x2c')],function(_0x1e450e){return{'name':_0x1e450e[_0x08ea('0x2d')],'type':_0x1e450e[_0x08ea('0x2e')][_0x08ea('0x2f')]};});_0x374211[_0x08ea('0x30')]=_[_0x08ea('0x2a')](_0x174de9,'name');_0x374211[_0x08ea('0x31')]=_['keys'](_0x45a899[_0x08ea('0x31')]);_0x374211[_0x08ea('0x32')]=_['intersection'](_0x374211[_0x08ea('0x30')],_0x374211[_0x08ea('0x31')]);_0x2408a1[_0x08ea('0x33')]=_['intersection'](_0x374211[_0x08ea('0x30')],qs[_0x08ea('0x34')](_0x45a899[_0x08ea('0x31')][_0x08ea('0x34')]));_0x2408a1[_0x08ea('0x33')]=_0x2408a1[_0x08ea('0x33')][_0x08ea('0x35')]?_0x2408a1[_0x08ea('0x33')]:_0x374211['model'];if(!_0x45a899['query'][_0x08ea('0x36')](_0x08ea('0x37'))){_0x2408a1[_0x08ea('0x20')]=qs[_0x08ea('0x20')](_0x45a899[_0x08ea('0x31')][_0x08ea('0x20')]);_0x2408a1['offset']=qs[_0x08ea('0x1d')](_0x45a899['query']['offset']);}_0x2408a1[_0x08ea('0x38')]=qs['sort'](_0x45a899[_0x08ea('0x31')][_0x08ea('0x39')]);_0x2408a1[_0x08ea('0x3a')]=qs[_0x08ea('0x32')](_[_0x08ea('0x3b')](_0x45a899['query'],_0x374211[_0x08ea('0x32')]),_0x174de9);if(_0x45a899[_0x08ea('0x31')]['filter']){_0x2408a1[_0x08ea('0x3a')]=_[_0x08ea('0x3c')](_0x2408a1[_0x08ea('0x3a')],{'$or':_['map'](_0x174de9,function(_0x567831){if(_0x567831[_0x08ea('0x2e')]!==_0x08ea('0x3d')){var _0x28fd67={};_0x28fd67[_0x567831[_0x08ea('0x27')]]={'$like':'%'+_0x45a899[_0x08ea('0x31')]['filter']+'%'};return _0x28fd67;}})});}_0x2408a1=_[_0x08ea('0x3c')]({},_0x2408a1,_0x45a899[_0x08ea('0x3e')]);var _0x129bea={'where':_0x2408a1[_0x08ea('0x3a')]};return db[_0x08ea('0x2b')][_0x08ea('0x1f')](_0x129bea)[_0x08ea('0x24')](function(_0x4f20b7){_0x4d5b1e['count']=_0x4f20b7;if(_0x45a899[_0x08ea('0x31')][_0x08ea('0x3f')]){_0x2408a1[_0x08ea('0x40')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x08ea('0x41')](_0x2408a1);})[_0x08ea('0x24')](function(_0x4e110a){_0x4d5b1e[_0x08ea('0x42')]=_0x4e110a;return _0x4d5b1e;})[_0x08ea('0x24')](respondWithFilteredResult(_0xb8aab4,_0x2408a1))[_0x08ea('0x43')](handleError(_0xb8aab4,null));};exports[_0x08ea('0x44')]=function(_0x546713,_0x13a33e){var _0x2112d3={'raw':![],'where':{'id':_0x546713['params']['id']}},_0x55d687={};_0x55d687[_0x08ea('0x30')]=_[_0x08ea('0x45')](db[_0x08ea('0x2b')]['rawAttributes']);_0x55d687[_0x08ea('0x31')]=_[_0x08ea('0x45')](_0x546713['query']);_0x55d687[_0x08ea('0x32')]=_[_0x08ea('0x46')](_0x55d687[_0x08ea('0x30')],_0x55d687[_0x08ea('0x31')]);_0x2112d3[_0x08ea('0x33')]=_[_0x08ea('0x46')](_0x55d687[_0x08ea('0x30')],qs[_0x08ea('0x34')](_0x546713['query']['fields']));_0x2112d3[_0x08ea('0x33')]=_0x2112d3['attributes']['length']?_0x2112d3[_0x08ea('0x33')]:_0x55d687[_0x08ea('0x30')];if(_0x546713[_0x08ea('0x31')][_0x08ea('0x3f')]){_0x2112d3[_0x08ea('0x40')]=[{'all':!![]}];}_0x2112d3=_[_0x08ea('0x3c')]({},_0x2112d3,_0x546713[_0x08ea('0x3e')]);return db['FreshsalesAccount'][_0x08ea('0x47')](_0x2112d3)[_0x08ea('0x24')](handleEntityNotFound(_0x13a33e,null))[_0x08ea('0x24')](respondWithResult(_0x13a33e,null))[_0x08ea('0x43')](handleError(_0x13a33e,null));};exports['create']=function(_0x514f77,_0xc0d0aa){return db[_0x08ea('0x2b')]['create'](_0x514f77['body'],{})['then'](respondWithResult(_0xc0d0aa,0xc9))[_0x08ea('0x43')](handleError(_0xc0d0aa,null));};exports[_0x08ea('0x48')]=function(_0x20158d,_0x55577e){if(_0x20158d[_0x08ea('0x49')]['id']){delete _0x20158d['body']['id'];}return db[_0x08ea('0x2b')]['find']({'where':{'id':_0x20158d[_0x08ea('0x4a')]['id']}})[_0x08ea('0x24')](handleEntityNotFound(_0x55577e,null))['then'](saveUpdates(_0x20158d[_0x08ea('0x49')],null))[_0x08ea('0x24')](respondWithResult(_0x55577e,null))['catch'](handleError(_0x55577e,null));};exports[_0x08ea('0x25')]=function(_0x5119bc,_0x219c97){return db[_0x08ea('0x2b')]['find']({'where':{'id':_0x5119bc[_0x08ea('0x4a')]['id']}})['then'](handleEntityNotFound(_0x219c97,null))[_0x08ea('0x24')](removeEntity(_0x219c97,null))[_0x08ea('0x43')](handleError(_0x219c97,null));};exports[_0x08ea('0x4b')]=function(_0x237688,_0x55c31c,_0x324cd6){var _0xe322ea={};var _0x420007={};var _0x305442;var _0x3bf410;return db[_0x08ea('0x2b')][_0x08ea('0x4c')]({'where':{'id':_0x237688[_0x08ea('0x4a')]['id']}})[_0x08ea('0x24')](handleEntityNotFound(_0x55c31c,null))[_0x08ea('0x24')](function(_0x4e3099){if(_0x4e3099){_0x305442=_0x4e3099;_0x420007['model']=_[_0x08ea('0x45')](db[_0x08ea('0x4d')][_0x08ea('0x2c')]);_0x420007['query']=_[_0x08ea('0x45')](_0x237688[_0x08ea('0x31')]);_0x420007[_0x08ea('0x32')]=_[_0x08ea('0x46')](_0x420007[_0x08ea('0x30')],_0x420007[_0x08ea('0x31')]);_0xe322ea['attributes']=_['intersection'](_0x420007[_0x08ea('0x30')],qs[_0x08ea('0x34')](_0x237688[_0x08ea('0x31')][_0x08ea('0x34')]));_0xe322ea[_0x08ea('0x33')]=_0xe322ea['attributes'][_0x08ea('0x35')]?_0xe322ea['attributes']:_0x420007[_0x08ea('0x30')];_0xe322ea['order']=qs[_0x08ea('0x39')](_0x237688[_0x08ea('0x31')][_0x08ea('0x39')]);_0xe322ea['where']=qs[_0x08ea('0x32')](_[_0x08ea('0x3b')](_0x237688[_0x08ea('0x31')],_0x420007['filters']));if(_0x237688['query'][_0x08ea('0x4e')]){_0xe322ea[_0x08ea('0x3a')]=_[_0x08ea('0x3c')](_0xe322ea[_0x08ea('0x3a')],{'$or':_['map'](_0xe322ea[_0x08ea('0x33')],function(_0x4ea71f){var _0x401be2={};_0x401be2[_0x4ea71f]={'$like':'%'+_0x237688['query'][_0x08ea('0x4e')]+'%'};return _0x401be2;})});}_0xe322ea=_[_0x08ea('0x3c')]({},_0xe322ea,_0x237688['options']);return _0x305442['getConfigurations'](_0xe322ea);}})['then'](function(_0x5e410f){if(_0x5e410f){_0x3bf410=_0x5e410f[_0x08ea('0x35')];if(!_0x237688[_0x08ea('0x31')][_0x08ea('0x36')](_0x08ea('0x37'))){_0xe322ea['limit']=qs[_0x08ea('0x20')](_0x237688[_0x08ea('0x31')]['limit']);_0xe322ea['offset']=qs[_0x08ea('0x1d')](_0x237688[_0x08ea('0x31')][_0x08ea('0x1d')]);}return _0x305442[_0x08ea('0x4b')](_0xe322ea);}})[_0x08ea('0x24')](function(_0x45508b){if(_0x45508b){return _0x45508b?{'count':_0x3bf410,'rows':_0x45508b}:null;}})[_0x08ea('0x24')](respondWithResult(_0x55c31c,null))[_0x08ea('0x43')](handleError(_0x55c31c,null));};exports[_0x08ea('0x4f')]=function(_0x12c035,_0x262073,_0x29024b){if(_0x12c035[_0x08ea('0x49')]['id']){delete _0x12c035[_0x08ea('0x49')]['id'];}return db[_0x08ea('0x2b')][_0x08ea('0x4c')]({'where':{'id':_0x12c035[_0x08ea('0x4a')]['id']}})[_0x08ea('0x24')](handleEntityNotFound(_0x262073,null))['then'](function(_0x58fb99){if(_0x58fb99){_0x12c035[_0x08ea('0x49')][_0x08ea('0x50')]=_0x58fb99['id'];_0x12c035[_0x08ea('0x49')]['Subjects']=integrations[_0x08ea('0x51')](_0x12c035['body']['channel'],_0x12c035[_0x08ea('0x49')][_0x08ea('0x2e')]);_0x12c035[_0x08ea('0x49')][_0x08ea('0x52')]=integrations['getDescriptions'](_0x12c035['body'][_0x08ea('0x53')],_0x12c035[_0x08ea('0x49')][_0x08ea('0x2e')]);return db[_0x08ea('0x4d')]['create'](_0x12c035[_0x08ea('0x49')],{'include':[{'model':db[_0x08ea('0x54')],'as':'Subjects'},{'model':db[_0x08ea('0x54')],'as':_0x08ea('0x52')}]});}return null;})[_0x08ea('0x24')](respondWithResult(_0x262073,null))[_0x08ea('0x43')](handleError(_0x262073,null));};exports[_0x08ea('0x55')]=function(_0x4d01d9,_0x32f79c,_0x7b63bb){var _0x44f30a='';var _0x3ea6dd='';return db[_0x08ea('0x2b')]['findOne']({'where':{'id':_0x4d01d9[_0x08ea('0x4a')]['id']},'attributes':['id',_0x08ea('0x56'),_0x08ea('0x57'),_0x08ea('0x58')]})[_0x08ea('0x24')](handleEntityNotFound(_0x32f79c,null))[_0x08ea('0x24')](function(_0x4e27d4){if(_0x4e27d4){_0x3ea6dd=_0x4e27d4['username'];_0x44f30a=_0x4e27d4['remoteUri'];var _0x6f8811=_0x4e27d4['remoteUri']['slice'](-0x1);if(_0x6f8811==='/'){_0x44f30a=_0x44f30a[_0x08ea('0x59')](0x0,_0x44f30a[_0x08ea('0x5a')](_0x6f8811));}return rp({'method':'GET','uri':util[_0x08ea('0x5b')](_0x08ea('0x5c'),_0x44f30a,_0x08ea('0x5d')),'headers':{'Authorization':_0x08ea('0x5e')+_0x4e27d4[_0x08ea('0x58')]},'json':!![]});}})[_0x08ea('0x24')](function(_0x286448){if(_0x286448){var _0x1095ed=_0x286448[_0x08ea('0x5f')];var _0x1d8b06=![];var _0x1b26dc=null;for(_0x1b26dc=0x0;_0x1b26dc<_0x1095ed['length'];_0x1b26dc++){if(_0x1095ed[_0x1b26dc][_0x08ea('0x60')]===_0x3ea6dd){_0x1d8b06=!![];}}if(_0x1d8b06){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x08ea('0x61')});}}})[_0x08ea('0x24')](respondWithResult(_0x32f79c,null))[_0x08ea('0x43')](function(_0xd2b61){var _0x526c2d=_0x4d01d9[_0x08ea('0x31')][_0x08ea('0x62')]?0x1f4:_0xd2b61[_0x08ea('0x63')]||0x1f4;logger[_0x08ea('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x08ea('0x55'),_0x526c2d,JSON[_0x08ea('0x64')](_0xd2b61));delete _0xd2b61[_0x08ea('0x27')];if(_0x526c2d===0x191){_0x526c2d=0x190;}_0x32f79c['status'](_0x526c2d)[_0x08ea('0x28')](_0x4d01d9['query'][_0x08ea('0x62')]?{'message':_0x08ea('0x65'),'statusCode':_0xd2b61[_0x08ea('0x63')]}:_0xd2b61);});}; \ No newline at end of file diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js new file mode 100644 index 0000000..57e8e8e --- /dev/null +++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0120=['../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x15c550,_0x171e41){var _0x512ab4=function(_0x277ad4){while(--_0x277ad4){_0x15c550['push'](_0x15c550['shift']());}};_0x512ab4(++_0x171e41);}(_0x0120,0x6f));var _0x0012=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0120[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x0012('0x0'));var util=require(_0x0012('0x1'));var logger=require(_0x0012('0x2'))(_0x0012('0x3'));var moment=require(_0x0012('0x4'));var BPromise=require(_0x0012('0x5'));var rp=require(_0x0012('0x6'));var fs=require('fs');var path=require(_0x0012('0x7'));var rimraf=require(_0x0012('0x8'));var config=require(_0x0012('0x9'));var attributes=require(_0x0012('0xa'));var integrations=require(_0x0012('0xb'));module['exports']=function(_0x4b396c,_0x59980a){return _0x4b396c[_0x0012('0xc')](_0x0012('0xd'),attributes,{'tableName':_0x0012('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js new file mode 100644 index 0000000..a266ebd --- /dev/null +++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1623=['../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','limit','include','map','model','attributes','find','ShowFreshsalesAccount','lodash','bluebird','randomstring','ioredis'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0x1623,0xab));var _0x3162=function(_0x53326c,_0x47cda1){_0x53326c=_0x53326c-0x0;var _0x471fd3=_0x1623[_0x53326c];return _0x471fd3;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3162('0x1'));var rs=require(_0x3162('0x2'));var fs=require('fs');var Redis=require(_0x3162('0x3'));var db=require(_0x3162('0x4'))['db'];var utils=require(_0x3162('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x3162('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3162('0x7')][_0x3162('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53260d,_0xffe9b6,_0x2dc07e){return new BPromise(function(_0x26ee32,_0x36609e){return client[_0x3162('0x9')](_0x53260d,_0x2dc07e)[_0x3162('0xa')](function(_0xe43099){logger[_0x3162('0xb')]('FreshsalesAccount,\x20%s,\x20%s',_0xffe9b6,'request\x20sent');logger[_0x3162('0xc')](_0x3162('0xd'),_0xffe9b6,_0x3162('0xe'),JSON[_0x3162('0xf')](_0xe43099));if(_0xe43099[_0x3162('0x10')]){if(_0xe43099[_0x3162('0x10')][_0x3162('0x11')]===0x1f4){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x36609e(_0xe43099['error'][_0x3162('0x13')]);}logger[_0x3162('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x26ee32(_0xe43099[_0x3162('0x10')][_0x3162('0x13')]);}else{logger['info'](_0x3162('0x12'),_0xffe9b6,_0x3162('0xe'));_0x26ee32(_0xe43099[_0x3162('0x14')]['message']);}})[_0x3162('0x15')](function(_0x42cf7d){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0x42cf7d);_0x36609e(_0x42cf7d);});});}exports[_0x3162('0x16')]=function(_0x1eed46){var _0x391d97=this;return new Promise(function(_0x4b2bf3,_0x42f283){return db[_0x3162('0x17')][_0x3162('0x18')]({'raw':_0x1eed46[_0x3162('0x19')]?_0x1eed46['options'][_0x3162('0x1a')]===undefined?!![]:![]:!![],'where':_0x1eed46['options']?_0x1eed46['options'][_0x3162('0x1b')]||null:null,'attributes':_0x1eed46[_0x3162('0x19')]?_0x1eed46[_0x3162('0x19')]['attributes']||null:null,'limit':_0x1eed46['options']?_0x1eed46[_0x3162('0x19')][_0x3162('0x1c')]||null:null,'include':_0x1eed46[_0x3162('0x19')]?_0x1eed46[_0x3162('0x19')][_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x1eed46[_0x3162('0x19')][_0x3162('0x1d')],function(_0x5a4994){return{'model':db[_0x5a4994[_0x3162('0x1f')]],'as':_0x5a4994['as'],'attributes':_0x5a4994[_0x3162('0x20')],'include':_0x5a4994[_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x5a4994[_0x3162('0x1d')],function(_0x3c543e){return{'model':db[_0x3c543e[_0x3162('0x1f')]],'as':_0x3c543e['as'],'attributes':_0x3c543e[_0x3162('0x20')],'include':_0x3c543e[_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x3c543e[_0x3162('0x1d')],function(_0x2f62d7){return{'model':db[_0x2f62d7[_0x3162('0x1f')]],'as':_0x2f62d7['as'],'attributes':_0x2f62d7['attributes']};}):[]};}):[]};}):[]:[]})[_0x3162('0xa')](function(_0x552469){logger[_0x3162('0xb')](_0x3162('0x16'),_0x1eed46);logger[_0x3162('0xc')]('GetFreshsalesAccount',_0x1eed46,JSON['stringify'](_0x552469));_0x4b2bf3(_0x552469);})[_0x3162('0x15')](function(_0xaa1f35){logger[_0x3162('0x10')](_0x3162('0x16'),_0xaa1f35[_0x3162('0x13')],_0x1eed46);_0x42f283(_0x391d97['error'](0x1f4,_0xaa1f35[_0x3162('0x13')]));});});};exports['ShowFreshsalesAccount']=function(_0xf11765){var _0x3a188e=this;return new Promise(function(_0x41e933,_0x221b38){return db[_0x3162('0x17')][_0x3162('0x21')]({'raw':_0xf11765[_0x3162('0x19')]?_0xf11765[_0x3162('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xf11765[_0x3162('0x19')]?_0xf11765[_0x3162('0x19')]['where']||null:null,'attributes':_0xf11765[_0x3162('0x19')]?_0xf11765[_0x3162('0x19')]['attributes']||null:null,'include':_0xf11765['options']?_0xf11765[_0x3162('0x19')]['include']?_[_0x3162('0x1e')](_0xf11765[_0x3162('0x19')][_0x3162('0x1d')],function(_0x551442){return{'model':db[_0x551442['model']],'as':_0x551442['as'],'attributes':_0x551442[_0x3162('0x20')],'include':_0x551442[_0x3162('0x1d')]?_['map'](_0x551442[_0x3162('0x1d')],function(_0x4d4f74){return{'model':db[_0x4d4f74[_0x3162('0x1f')]],'as':_0x4d4f74['as'],'attributes':_0x4d4f74[_0x3162('0x20')],'include':_0x4d4f74[_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x4d4f74[_0x3162('0x1d')],function(_0x3b6c91){return{'model':db[_0x3b6c91[_0x3162('0x1f')]],'as':_0x3b6c91['as'],'attributes':_0x3b6c91[_0x3162('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3162('0xa')](function(_0x16c5d6){logger[_0x3162('0xb')]('ShowFreshsalesAccount',_0xf11765);logger[_0x3162('0xc')](_0x3162('0x22'),_0xf11765,JSON[_0x3162('0xf')](_0x16c5d6));_0x41e933(_0x16c5d6);})['catch'](function(_0x59759d){logger[_0x3162('0x10')](_0x3162('0x22'),_0x59759d[_0x3162('0x13')],_0xf11765);_0x221b38(_0x3a188e[_0x3162('0x10')](0x1f4,_0x59759d['message']));});});}; \ No newline at end of file diff --git a/server/api/intFreshsalesConfiguration/index.js b/server/api/intFreshsalesConfiguration/index.js new file mode 100644 index 0000000..8f7511e --- /dev/null +++ b/server/api/intFreshsalesConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4a3a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','index','get','/:id','show','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','create','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x5418e8,_0xb90ac){var _0x3e3481=function(_0x10deb2){while(--_0x10deb2){_0x5418e8['push'](_0x5418e8['shift']());}};_0x3e3481(++_0xb90ac);}(_0x4a3a,0x1c4));var _0xa4a3=function(_0x345be3,_0x140abd){_0x345be3=_0x345be3-0x0;var _0x43efcb=_0x4a3a[_0x345be3];return _0x43efcb;};'use strict';var multer=require(_0xa4a3('0x0'));var util=require(_0xa4a3('0x1'));var path=require('path');var timeout=require(_0xa4a3('0x2'));var express=require(_0xa4a3('0x3'));var router=express[_0xa4a3('0x4')]();var fs_extra=require(_0xa4a3('0x5'));var auth=require(_0xa4a3('0x6'));var interaction=require(_0xa4a3('0x7'));var config=require(_0xa4a3('0x8'));var controller=require(_0xa4a3('0x9'));router['get']('/',auth[_0xa4a3('0xa')](),controller[_0xa4a3('0xb')]);router[_0xa4a3('0xc')](_0xa4a3('0xd'),auth[_0xa4a3('0xa')](),controller[_0xa4a3('0xe')]);router[_0xa4a3('0xc')]('/:id/subjects',auth[_0xa4a3('0xa')](),controller[_0xa4a3('0xf')]);router['get'](_0xa4a3('0x10'),auth[_0xa4a3('0xa')](),controller[_0xa4a3('0x11')]);router[_0xa4a3('0xc')](_0xa4a3('0x12'),auth['isAuthenticated'](),controller[_0xa4a3('0x13')]);router['post']('/',auth[_0xa4a3('0xa')](),controller[_0xa4a3('0x14')]);router['put'](_0xa4a3('0xd'),auth[_0xa4a3('0xa')](),controller['update']);router[_0xa4a3('0x15')](_0xa4a3('0xd'),auth['isAuthenticated'](),controller[_0xa4a3('0x16')]);module[_0xa4a3('0x17')]=router; \ No newline at end of file diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js new file mode 100644 index 0000000..612b6e6 --- /dev/null +++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe775=['sequelize','exports','STRING'];(function(_0x1ee119,_0x51fd98){var _0x4c8234=function(_0x20355c){while(--_0x20355c){_0x1ee119['push'](_0x1ee119['shift']());}};_0x4c8234(++_0x51fd98);}(_0xe775,0x17a));var _0x5e77=function(_0x1b1a3b,_0x52a88a){_0x1b1a3b=_0x1b1a3b-0x0;var _0x385347=_0xe775[_0x1b1a3b];return _0x385347;};'use strict';var Sequelize=require(_0x5e77('0x0'));module[_0x5e77('0x1')]={'name':{'type':Sequelize[_0x5e77('0x2')]},'description':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js new file mode 100644 index 0000000..17de4be --- /dev/null +++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe2d8=['where','filter','merge','map','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','getSubjects','FreshsalesField','getDescriptions','findOne','pick','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','save','update','then','destroy','error','stack','name','send','index','FreshsalesConfiguration','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x2421e3,_0x15e64a){var _0x514927=function(_0x3345ff){while(--_0x3345ff){_0x2421e3['push'](_0x2421e3['shift']());}};_0x514927(++_0x15e64a);}(_0xe2d8,0x102));var _0x8e2d=function(_0xf979e6,_0x1cb147){_0xf979e6=_0xf979e6-0x0;var _0x59217d=_0xe2d8[_0xf979e6];return _0x59217d;};'use strict';var emlformat=require(_0x8e2d('0x0'));var rimraf=require(_0x8e2d('0x1'));var zipdir=require(_0x8e2d('0x2'));var jsonpatch=require(_0x8e2d('0x3'));var rp=require(_0x8e2d('0x4'));var moment=require(_0x8e2d('0x5'));var BPromise=require(_0x8e2d('0x6'));var Mustache=require(_0x8e2d('0x7'));var util=require(_0x8e2d('0x8'));var path=require(_0x8e2d('0x9'));var sox=require('sox');var csv=require(_0x8e2d('0xa'));var ejs=require(_0x8e2d('0xb'));var fs=require('fs');var fs_extra=require(_0x8e2d('0xc'));var _=require(_0x8e2d('0xd'));var squel=require(_0x8e2d('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8e2d('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8e2d('0x10'));var Papa=require('papaparse');var Redis=require(_0x8e2d('0x11'));var authService=require(_0x8e2d('0x12'));var qs=require(_0x8e2d('0x13'));var as=require(_0x8e2d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e2d('0x15'))(_0x8e2d('0x16'));var utils=require(_0x8e2d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8e2d('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x104de7,_0x38a6d6){_0x38a6d6=_0x38a6d6||0xcc;return function(_0x58016d){if(_0x58016d){return _0x104de7[_0x8e2d('0x19')](_0x38a6d6);}return _0x104de7[_0x8e2d('0x1a')](_0x38a6d6)[_0x8e2d('0x1b')]();};}function respondWithResult(_0x20e850,_0x99ca8f){_0x99ca8f=_0x99ca8f||0xc8;return function(_0x4cd6b6){if(_0x4cd6b6){return _0x20e850[_0x8e2d('0x1a')](_0x99ca8f)['json'](_0x4cd6b6);}};}function respondWithFilteredResult(_0x5ef38f,_0x19fcfa){return function(_0x1ba081){if(_0x1ba081){var _0x51cbd9=typeof _0x19fcfa['offset']===_0x8e2d('0x1c')&&typeof _0x19fcfa[_0x8e2d('0x1d')]===_0x8e2d('0x1c');var _0x1869e3=_0x1ba081[_0x8e2d('0x1e')];var _0x26007f=_0x51cbd9?0x0:_0x19fcfa[_0x8e2d('0x1f')];var _0x1aeb23=_0x51cbd9?_0x1ba081[_0x8e2d('0x1e')]:_0x19fcfa['offset']+_0x19fcfa['limit'];var _0x448276;if(_0x1aeb23>=_0x1869e3){_0x1aeb23=_0x1869e3;_0x448276=0xc8;}else{_0x448276=0xce;}_0x5ef38f[_0x8e2d('0x1a')](_0x448276);return _0x5ef38f['set'](_0x8e2d('0x20'),_0x26007f+'-'+_0x1aeb23+'/'+_0x1869e3)[_0x8e2d('0x21')](_0x1ba081);}return null;};}function patchUpdates(_0x21dab1){return function(_0x2ff3dd){try{jsonpatch['apply'](_0x2ff3dd,_0x21dab1,!![]);}catch(_0x495c43){return BPromise['reject'](_0x495c43);}return _0x2ff3dd[_0x8e2d('0x22')]();};}function saveUpdates(_0x4fec9f,_0x21a2fe){return function(_0x1a1eaf){if(_0x1a1eaf){return _0x1a1eaf[_0x8e2d('0x23')](_0x4fec9f)[_0x8e2d('0x24')](function(_0xf1f680){return _0xf1f680;});}return null;};}function removeEntity(_0x7cc37b,_0x29111c){return function(_0x106360){if(_0x106360){return _0x106360[_0x8e2d('0x25')]()[_0x8e2d('0x24')](function(){_0x7cc37b[_0x8e2d('0x1a')](0xcc)[_0x8e2d('0x1b')]();});}};}function handleEntityNotFound(_0x99f422,_0x56a513){return function(_0x3540f8){if(!_0x3540f8){_0x99f422['sendStatus'](0x194);}return _0x3540f8;};}function handleError(_0x287b71,_0x265775){_0x265775=_0x265775||0x1f4;return function(_0x526239){logger[_0x8e2d('0x26')](_0x526239[_0x8e2d('0x27')]);if(_0x526239[_0x8e2d('0x28')]){delete _0x526239[_0x8e2d('0x28')];}_0x287b71[_0x8e2d('0x1a')](_0x265775)[_0x8e2d('0x29')](_0x526239);};}exports[_0x8e2d('0x2a')]=function(_0x58ab0a,_0xed8778){var _0x1dc49e={},_0x169023={},_0x6bd692={'count':0x0,'rows':[]};var _0x4f54cf=_['map'](db[_0x8e2d('0x2b')][_0x8e2d('0x2c')],function(_0x57161b){return{'name':_0x57161b['fieldName'],'type':_0x57161b[_0x8e2d('0x2d')][_0x8e2d('0x2e')]};});_0x169023[_0x8e2d('0x2f')]=_['map'](_0x4f54cf,_0x8e2d('0x28'));_0x169023[_0x8e2d('0x30')]=_['keys'](_0x58ab0a['query']);_0x169023[_0x8e2d('0x31')]=_['intersection'](_0x169023[_0x8e2d('0x2f')],_0x169023[_0x8e2d('0x30')]);_0x1dc49e[_0x8e2d('0x32')]=_[_0x8e2d('0x33')](_0x169023[_0x8e2d('0x2f')],qs[_0x8e2d('0x34')](_0x58ab0a['query'][_0x8e2d('0x34')]));_0x1dc49e['attributes']=_0x1dc49e[_0x8e2d('0x32')][_0x8e2d('0x35')]?_0x1dc49e['attributes']:_0x169023[_0x8e2d('0x2f')];if(!_0x58ab0a[_0x8e2d('0x30')][_0x8e2d('0x36')](_0x8e2d('0x37'))){_0x1dc49e['limit']=qs['limit'](_0x58ab0a[_0x8e2d('0x30')]['limit']);_0x1dc49e[_0x8e2d('0x1f')]=qs[_0x8e2d('0x1f')](_0x58ab0a[_0x8e2d('0x30')]['offset']);}_0x1dc49e[_0x8e2d('0x38')]=qs[_0x8e2d('0x39')](_0x58ab0a[_0x8e2d('0x30')][_0x8e2d('0x39')]);_0x1dc49e[_0x8e2d('0x3a')]=qs[_0x8e2d('0x31')](_['pick'](_0x58ab0a[_0x8e2d('0x30')],_0x169023[_0x8e2d('0x31')]),_0x4f54cf);if(_0x58ab0a[_0x8e2d('0x30')][_0x8e2d('0x3b')]){_0x1dc49e['where']=_[_0x8e2d('0x3c')](_0x1dc49e[_0x8e2d('0x3a')],{'$or':_[_0x8e2d('0x3d')](_0x4f54cf,function(_0x71eb3c){if(_0x71eb3c[_0x8e2d('0x2d')]!=='VIRTUAL'){var _0x4187ee={};_0x4187ee[_0x71eb3c[_0x8e2d('0x28')]]={'$like':'%'+_0x58ab0a[_0x8e2d('0x30')][_0x8e2d('0x3b')]+'%'};return _0x4187ee;}})});}_0x1dc49e=_[_0x8e2d('0x3c')]({},_0x1dc49e,_0x58ab0a[_0x8e2d('0x3e')]);var _0x1cef14={'where':_0x1dc49e[_0x8e2d('0x3a')]};return db[_0x8e2d('0x2b')][_0x8e2d('0x1e')](_0x1cef14)[_0x8e2d('0x24')](function(_0x509d62){_0x6bd692[_0x8e2d('0x1e')]=_0x509d62;if(_0x58ab0a[_0x8e2d('0x30')][_0x8e2d('0x3f')]){_0x1dc49e[_0x8e2d('0x40')]=[{'all':!![]}];}return db[_0x8e2d('0x2b')][_0x8e2d('0x41')](_0x1dc49e);})[_0x8e2d('0x24')](function(_0x45cc74){_0x6bd692['rows']=_0x45cc74;return _0x6bd692;})[_0x8e2d('0x24')](respondWithFilteredResult(_0xed8778,_0x1dc49e))[_0x8e2d('0x42')](handleError(_0xed8778,null));};exports[_0x8e2d('0x43')]=function(_0x3c4061,_0x4ffb59){var _0x3ba365={'raw':![],'where':{'id':_0x3c4061[_0x8e2d('0x44')]['id']}},_0x3c9d34={};_0x3c9d34[_0x8e2d('0x2f')]=_['keys'](db[_0x8e2d('0x2b')][_0x8e2d('0x2c')]);_0x3c9d34['query']=_[_0x8e2d('0x45')](_0x3c4061[_0x8e2d('0x30')]);_0x3c9d34[_0x8e2d('0x31')]=_[_0x8e2d('0x33')](_0x3c9d34['model'],_0x3c9d34[_0x8e2d('0x30')]);_0x3ba365[_0x8e2d('0x32')]=_[_0x8e2d('0x33')](_0x3c9d34['model'],qs[_0x8e2d('0x34')](_0x3c4061[_0x8e2d('0x30')][_0x8e2d('0x34')]));_0x3ba365['attributes']=_0x3ba365[_0x8e2d('0x32')][_0x8e2d('0x35')]?_0x3ba365['attributes']:_0x3c9d34[_0x8e2d('0x2f')];if(_0x3c4061[_0x8e2d('0x30')][_0x8e2d('0x3f')]){_0x3ba365[_0x8e2d('0x40')]=[{'all':!![]}];}_0x3ba365=_[_0x8e2d('0x3c')]({},_0x3ba365,_0x3c4061[_0x8e2d('0x3e')]);return db[_0x8e2d('0x2b')][_0x8e2d('0x46')](_0x3ba365)['then'](handleEntityNotFound(_0x4ffb59,null))[_0x8e2d('0x24')](respondWithResult(_0x4ffb59,null))[_0x8e2d('0x42')](handleError(_0x4ffb59,null));};exports['create']=function(_0x1b99ac,_0x1a74be){return db['FreshsalesConfiguration'][_0x8e2d('0x47')](_0x1b99ac[_0x8e2d('0x48')],{})['then'](respondWithResult(_0x1a74be,0xc9))['catch'](handleError(_0x1a74be,null));};exports[_0x8e2d('0x23')]=function(_0x3efb92,_0x12b457){if(_0x3efb92[_0x8e2d('0x48')]['id']){delete _0x3efb92['body']['id'];}return db[_0x8e2d('0x2b')][_0x8e2d('0x46')]({'where':{'id':_0x3efb92['params']['id']}})[_0x8e2d('0x24')](handleEntityNotFound(_0x12b457,null))[_0x8e2d('0x24')](saveUpdates(_0x3efb92[_0x8e2d('0x48')],null))[_0x8e2d('0x24')](respondWithResult(_0x12b457,null))[_0x8e2d('0x42')](handleError(_0x12b457,null));};exports['destroy']=function(_0x5aa057,_0x2d1a13){return db[_0x8e2d('0x2b')][_0x8e2d('0x46')]({'where':{'id':_0x5aa057['params']['id']}})['then'](handleEntityNotFound(_0x2d1a13,null))['then'](removeEntity(_0x2d1a13,null))[_0x8e2d('0x42')](handleError(_0x2d1a13,null));};exports[_0x8e2d('0x49')]=function(_0xcdd6f7,_0x2abb90,_0x19de84){var _0x319695={};var _0x34c26d={};var _0x162e89;var _0x4ae713;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0xcdd6f7[_0x8e2d('0x44')]['id']}})[_0x8e2d('0x24')](handleEntityNotFound(_0x2abb90,null))[_0x8e2d('0x24')](function(_0x5b044b){if(_0x5b044b){_0x162e89=_0x5b044b;_0x34c26d['model']=_[_0x8e2d('0x45')](db[_0x8e2d('0x4a')][_0x8e2d('0x2c')]);_0x34c26d[_0x8e2d('0x30')]=_['keys'](_0xcdd6f7[_0x8e2d('0x30')]);_0x34c26d['filters']=_[_0x8e2d('0x33')](_0x34c26d[_0x8e2d('0x2f')],_0x34c26d['query']);_0x319695[_0x8e2d('0x32')]=_[_0x8e2d('0x33')](_0x34c26d[_0x8e2d('0x2f')],qs[_0x8e2d('0x34')](_0xcdd6f7[_0x8e2d('0x30')][_0x8e2d('0x34')]));_0x319695[_0x8e2d('0x32')]=_0x319695[_0x8e2d('0x32')][_0x8e2d('0x35')]?_0x319695[_0x8e2d('0x32')]:_0x34c26d['model'];_0x319695[_0x8e2d('0x38')]=qs[_0x8e2d('0x39')](_0xcdd6f7[_0x8e2d('0x30')][_0x8e2d('0x39')]);_0x319695['where']=qs['filters'](_['pick'](_0xcdd6f7[_0x8e2d('0x30')],_0x34c26d['filters']));if(_0xcdd6f7['query'][_0x8e2d('0x3b')]){_0x319695[_0x8e2d('0x3a')]=_[_0x8e2d('0x3c')](_0x319695[_0x8e2d('0x3a')],{'$or':_[_0x8e2d('0x3d')](_0x319695['attributes'],function(_0x222428){var _0x59d0d4={};_0x59d0d4[_0x222428]={'$like':'%'+_0xcdd6f7[_0x8e2d('0x30')][_0x8e2d('0x3b')]+'%'};return _0x59d0d4;})});}_0x319695=_['merge']({},_0x319695,_0xcdd6f7[_0x8e2d('0x3e')]);return _0x162e89[_0x8e2d('0x49')](_0x319695);}})[_0x8e2d('0x24')](function(_0x3904a8){if(_0x3904a8){_0x4ae713=_0x3904a8[_0x8e2d('0x35')];if(!_0xcdd6f7[_0x8e2d('0x30')]['hasOwnProperty']('nolimit')){_0x319695[_0x8e2d('0x1d')]=qs[_0x8e2d('0x1d')](_0xcdd6f7[_0x8e2d('0x30')][_0x8e2d('0x1d')]);_0x319695['offset']=qs[_0x8e2d('0x1f')](_0xcdd6f7[_0x8e2d('0x30')]['offset']);}return _0x162e89[_0x8e2d('0x49')](_0x319695);}})[_0x8e2d('0x24')](function(_0x39e544){if(_0x39e544){return _0x39e544?{'count':_0x4ae713,'rows':_0x39e544}:null;}})['then'](respondWithResult(_0x2abb90,null))['catch'](handleError(_0x2abb90,null));};exports[_0x8e2d('0x4b')]=function(_0x4b77d4,_0x2f8520,_0x2eda07){var _0x2a82cd={};var _0x96de45={};var _0xe1690c;var _0x1144a0;return db[_0x8e2d('0x2b')][_0x8e2d('0x4c')]({'where':{'id':_0x4b77d4[_0x8e2d('0x44')]['id']}})[_0x8e2d('0x24')](handleEntityNotFound(_0x2f8520,null))['then'](function(_0x1be1c2){if(_0x1be1c2){_0xe1690c=_0x1be1c2;_0x96de45['model']=_[_0x8e2d('0x45')](db[_0x8e2d('0x4a')][_0x8e2d('0x2c')]);_0x96de45[_0x8e2d('0x30')]=_['keys'](_0x4b77d4[_0x8e2d('0x30')]);_0x96de45[_0x8e2d('0x31')]=_[_0x8e2d('0x33')](_0x96de45[_0x8e2d('0x2f')],_0x96de45['query']);_0x2a82cd[_0x8e2d('0x32')]=_[_0x8e2d('0x33')](_0x96de45[_0x8e2d('0x2f')],qs[_0x8e2d('0x34')](_0x4b77d4[_0x8e2d('0x30')]['fields']));_0x2a82cd[_0x8e2d('0x32')]=_0x2a82cd[_0x8e2d('0x32')][_0x8e2d('0x35')]?_0x2a82cd['attributes']:_0x96de45[_0x8e2d('0x2f')];_0x2a82cd[_0x8e2d('0x38')]=qs['sort'](_0x4b77d4['query']['sort']);_0x2a82cd['where']=qs['filters'](_[_0x8e2d('0x4d')](_0x4b77d4[_0x8e2d('0x30')],_0x96de45['filters']));if(_0x4b77d4[_0x8e2d('0x30')]['filter']){_0x2a82cd[_0x8e2d('0x3a')]=_[_0x8e2d('0x3c')](_0x2a82cd[_0x8e2d('0x3a')],{'$or':_[_0x8e2d('0x3d')](_0x2a82cd[_0x8e2d('0x32')],function(_0x4b95e){var _0x18785a={};_0x18785a[_0x4b95e]={'$like':'%'+_0x4b77d4[_0x8e2d('0x30')]['filter']+'%'};return _0x18785a;})});}_0x2a82cd=_[_0x8e2d('0x3c')]({},_0x2a82cd,_0x4b77d4[_0x8e2d('0x3e')]);return _0xe1690c[_0x8e2d('0x4b')](_0x2a82cd);}})[_0x8e2d('0x24')](function(_0x5223e6){if(_0x5223e6){_0x1144a0=_0x5223e6['length'];if(!_0x4b77d4['query'][_0x8e2d('0x36')](_0x8e2d('0x37'))){_0x2a82cd[_0x8e2d('0x1d')]=qs[_0x8e2d('0x1d')](_0x4b77d4[_0x8e2d('0x30')]['limit']);_0x2a82cd['offset']=qs['offset'](_0x4b77d4['query'][_0x8e2d('0x1f')]);}return _0xe1690c[_0x8e2d('0x4b')](_0x2a82cd);}})[_0x8e2d('0x24')](function(_0x5b1191){if(_0x5b1191){return _0x5b1191?{'count':_0x1144a0,'rows':_0x5b1191}:null;}})[_0x8e2d('0x24')](respondWithResult(_0x2f8520,null))['catch'](handleError(_0x2f8520,null));};exports[_0x8e2d('0x4e')]=function(_0x24d51a,_0x35a0d3,_0x3b81c0){var _0x48254c={};var _0x57a66b={};var _0x1b5967;var _0x218adf;return db['FreshsalesConfiguration'][_0x8e2d('0x4c')]({'where':{'id':_0x24d51a[_0x8e2d('0x44')]['id']}})['then'](handleEntityNotFound(_0x35a0d3,null))[_0x8e2d('0x24')](function(_0x35a683){if(_0x35a683){_0x1b5967=_0x35a683;_0x57a66b['model']=_[_0x8e2d('0x45')](db['FreshsalesField']['rawAttributes']);_0x57a66b[_0x8e2d('0x30')]=_[_0x8e2d('0x45')](_0x24d51a[_0x8e2d('0x30')]);_0x57a66b[_0x8e2d('0x31')]=_[_0x8e2d('0x33')](_0x57a66b[_0x8e2d('0x2f')],_0x57a66b[_0x8e2d('0x30')]);_0x48254c[_0x8e2d('0x32')]=_[_0x8e2d('0x33')](_0x57a66b['model'],qs['fields'](_0x24d51a['query'][_0x8e2d('0x34')]));_0x48254c[_0x8e2d('0x32')]=_0x48254c['attributes'][_0x8e2d('0x35')]?_0x48254c[_0x8e2d('0x32')]:_0x57a66b[_0x8e2d('0x2f')];_0x48254c[_0x8e2d('0x38')]=qs[_0x8e2d('0x39')](_0x24d51a[_0x8e2d('0x30')][_0x8e2d('0x39')]);_0x48254c[_0x8e2d('0x3a')]=qs[_0x8e2d('0x31')](_['pick'](_0x24d51a[_0x8e2d('0x30')],_0x57a66b[_0x8e2d('0x31')]));if(_0x24d51a['query'][_0x8e2d('0x3b')]){_0x48254c[_0x8e2d('0x3a')]=_[_0x8e2d('0x3c')](_0x48254c[_0x8e2d('0x3a')],{'$or':_[_0x8e2d('0x3d')](_0x48254c[_0x8e2d('0x32')],function(_0x42d3bf){var _0x232fb9={};_0x232fb9[_0x42d3bf]={'$like':'%'+_0x24d51a[_0x8e2d('0x30')][_0x8e2d('0x3b')]+'%'};return _0x232fb9;})});}_0x48254c=_[_0x8e2d('0x3c')]({},_0x48254c,_0x24d51a[_0x8e2d('0x3e')]);return _0x1b5967[_0x8e2d('0x4e')](_0x48254c);}})[_0x8e2d('0x24')](function(_0x285399){if(_0x285399){_0x218adf=_0x285399[_0x8e2d('0x35')];if(!_0x24d51a[_0x8e2d('0x30')][_0x8e2d('0x36')]('nolimit')){_0x48254c['limit']=qs[_0x8e2d('0x1d')](_0x24d51a[_0x8e2d('0x30')]['limit']);_0x48254c[_0x8e2d('0x1f')]=qs[_0x8e2d('0x1f')](_0x24d51a[_0x8e2d('0x30')][_0x8e2d('0x1f')]);}return _0x1b5967[_0x8e2d('0x4e')](_0x48254c);}})['then'](function(_0x23bce3){if(_0x23bce3){return _0x23bce3?{'count':_0x218adf,'rows':_0x23bce3}:null;}})[_0x8e2d('0x24')](respondWithResult(_0x35a0d3,null))[_0x8e2d('0x42')](handleError(_0x35a0d3,null));}; \ No newline at end of file diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js new file mode 100644 index 0000000..96bcfc3 --- /dev/null +++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x23f4=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','lodash','util','../../config/logger'];(function(_0x5d886b,_0x20b3c1){var _0x22bc5e=function(_0x300aed){while(--_0x300aed){_0x5d886b['push'](_0x5d886b['shift']());}};_0x22bc5e(++_0x20b3c1);}(_0x23f4,0x97));var _0x423f=function(_0x25a8a5,_0x11eb7a){_0x25a8a5=_0x25a8a5-0x0;var _0x3d2ddc=_0x23f4[_0x25a8a5];return _0x3d2ddc;};'use strict';var _=require(_0x423f('0x0'));var util=require(_0x423f('0x1'));var logger=require(_0x423f('0x2'))(_0x423f('0x3'));var moment=require(_0x423f('0x4'));var BPromise=require(_0x423f('0x5'));var rp=require(_0x423f('0x6'));var fs=require('fs');var path=require(_0x423f('0x7'));var rimraf=require(_0x423f('0x8'));var config=require(_0x423f('0x9'));var attributes=require(_0x423f('0xa'));module[_0x423f('0xb')]=function(_0x338aab,_0x2903d3){return _0x338aab[_0x423f('0xc')](_0x423f('0xd'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js new file mode 100644 index 0000000..a5cddd7 --- /dev/null +++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x929f=['rpc','../../config/environment','client','http','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x119cd8,_0x556b73){var _0x7072a3=function(_0x5908d1){while(--_0x5908d1){_0x119cd8['push'](_0x119cd8['shift']());}};_0x7072a3(++_0x556b73);}(_0x929f,0x1b2));var _0xf929=function(_0x5f4800,_0x5d31b4){_0x5f4800=_0x5f4800-0x0;var _0x4069ba=_0x929f[_0x5f4800];return _0x4069ba;};'use strict';var _=require(_0xf929('0x0'));var util=require(_0xf929('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xf929('0x2'));var fs=require('fs');var Redis=require(_0xf929('0x3'));var db=require(_0xf929('0x4'))['db'];var utils=require(_0xf929('0x5'));var logger=require(_0xf929('0x6'))(_0xf929('0x7'));var config=require(_0xf929('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf929('0x9')][_0xf929('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24610c,_0x53c7cb,_0x1397b4){return new BPromise(function(_0x277f56,_0x12a56e){return client['request'](_0x24610c,_0x1397b4)[_0xf929('0xb')](function(_0x2f20d7){logger[_0xf929('0xc')](_0xf929('0xd'),_0x53c7cb,_0xf929('0xe'));logger[_0xf929('0xf')](_0xf929('0x10'),_0x53c7cb,'request\x20sent',JSON[_0xf929('0x11')](_0x2f20d7));if(_0x2f20d7[_0xf929('0x12')]){if(_0x2f20d7[_0xf929('0x12')][_0xf929('0x13')]===0x1f4){logger[_0xf929('0x12')](_0xf929('0xd'),_0x53c7cb,_0x2f20d7[_0xf929('0x12')][_0xf929('0x14')]);return _0x12a56e(_0x2f20d7[_0xf929('0x12')]['message']);}logger[_0xf929('0x12')](_0xf929('0xd'),_0x53c7cb,_0x2f20d7[_0xf929('0x12')][_0xf929('0x14')]);return _0x277f56(_0x2f20d7[_0xf929('0x12')][_0xf929('0x14')]);}else{logger[_0xf929('0xc')](_0xf929('0xd'),_0x53c7cb,'request\x20sent');_0x277f56(_0x2f20d7['result']['message']);}})['catch'](function(_0x597ef9){logger[_0xf929('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x53c7cb,_0x597ef9);_0x12a56e(_0x597ef9);});});} \ No newline at end of file diff --git a/server/api/intFreshsalesField/index.js b/server/api/intFreshsalesField/index.js new file mode 100644 index 0000000..1ad4d01 --- /dev/null +++ b/server/api/intFreshsalesField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x782e=['/:id','update','delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','isAuthenticated','post','create','put'];(function(_0x3ad462,_0x363c0d){var _0x4c721b=function(_0x11a62f){while(--_0x11a62f){_0x3ad462['push'](_0x3ad462['shift']());}};_0x4c721b(++_0x363c0d);}(_0x782e,0xb9));var _0xe782=function(_0x533b69,_0xfb1251){_0x533b69=_0x533b69-0x0;var _0x426829=_0x782e[_0x533b69];return _0x426829;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe782('0x0'));var timeout=require(_0xe782('0x1'));var express=require('express');var router=express[_0xe782('0x2')]();var fs_extra=require(_0xe782('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xe782('0x4'));var config=require(_0xe782('0x5'));var controller=require(_0xe782('0x6'));router[_0xe782('0x7')]('/',auth['isAuthenticated'](),controller[_0xe782('0x8')]);router['get']('/:id',auth[_0xe782('0x9')](),controller['show']);router[_0xe782('0xa')]('/',auth[_0xe782('0x9')](),controller[_0xe782('0xb')]);router[_0xe782('0xc')](_0xe782('0xd'),auth[_0xe782('0x9')](),controller[_0xe782('0xe')]);router[_0xe782('0xf')](_0xe782('0xd'),auth[_0xe782('0x9')](),controller[_0xe782('0x10')]);module[_0xe782('0x11')]=router; \ No newline at end of file diff --git a/server/api/intFreshsalesField/intFreshsalesField.attributes.js b/server/api/intFreshsalesField/intFreshsalesField.attributes.js new file mode 100644 index 0000000..f67dddc --- /dev/null +++ b/server/api/intFreshsalesField/intFreshsalesField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xebab=['keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string','variable','customVariable'];(function(_0x3c7810,_0x274437){var _0x2645bc=function(_0x210145){while(--_0x210145){_0x3c7810['push'](_0x3c7810['shift']());}};_0x2645bc(++_0x274437);}(_0xebab,0x1bd));var _0xbeba=function(_0x4b3ce7,_0x2d2650){_0x4b3ce7=_0x4b3ce7-0x0;var _0x124bab=_0xebab[_0x4b3ce7];return _0x124bab;};'use strict';var Sequelize=require('sequelize');module[_0xbeba('0x0')]={'type':{'type':Sequelize[_0xbeba('0x1')](_0xbeba('0x2'),_0xbeba('0x3'),_0xbeba('0x4'),_0xbeba('0x5'),_0xbeba('0x6')),'defaultValue':_0xbeba('0x2')},'content':{'type':Sequelize[_0xbeba('0x7')]},'key':{'type':Sequelize[_0xbeba('0x7')]},'keyType':{'type':Sequelize[_0xbeba('0x1')](_0xbeba('0x2'),_0xbeba('0x3'),_0xbeba('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xbeba('0x7')]},'nameField':{'type':Sequelize[_0xbeba('0x7')]},'customField':{'type':Sequelize[_0xbeba('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbeba('0x7')]}}; \ No newline at end of file diff --git a/server/api/intFreshsalesField/intFreshsalesField.controller.js b/server/api/intFreshsalesField/intFreshsalesField.controller.js new file mode 100644 index 0000000..78cea83 --- /dev/null +++ b/server/api/intFreshsalesField/intFreshsalesField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x21ee=['../../config/license/util','../../mysqldb','end','status','json','offset','limit','set','Content-Range','reject','save','update','then','sendStatus','error','name','send','index','map','FreshsalesField','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','rows','catch','show','params','rawAttributes','include','find','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x4e1211,_0x1c0e26){var _0x4ae887=function(_0x6e55ff){while(--_0x6e55ff){_0x4e1211['push'](_0x4e1211['shift']());}};_0x4ae887(++_0x1c0e26);}(_0x21ee,0xc8));var _0xe21e=function(_0x5a07cb,_0x18504c){_0x5a07cb=_0x5a07cb-0x0;var _0x34ece1=_0x21ee[_0x5a07cb];return _0x34ece1;};'use strict';var emlformat=require(_0xe21e('0x0'));var rimraf=require(_0xe21e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe21e('0x2'));var rp=require(_0xe21e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe21e('0x4'));var util=require(_0xe21e('0x5'));var path=require(_0xe21e('0x6'));var sox=require(_0xe21e('0x7'));var csv=require(_0xe21e('0x8'));var ejs=require(_0xe21e('0x9'));var fs=require('fs');var fs_extra=require(_0xe21e('0xa'));var _=require(_0xe21e('0xb'));var squel=require(_0xe21e('0xc'));var crypto=require(_0xe21e('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe21e('0x8'));var querystring=require(_0xe21e('0xe'));var Papa=require(_0xe21e('0xf'));var Redis=require(_0xe21e('0x10'));var authService=require(_0xe21e('0x11'));var qs=require(_0xe21e('0x12'));var as=require(_0xe21e('0x13'));var hardwareService=require(_0xe21e('0x14'));var logger=require(_0xe21e('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe21e('0x16'));var db=require(_0xe21e('0x17'))['db'];function respondWithStatusCode(_0xaaf6eb,_0x4e4c8a){_0x4e4c8a=_0x4e4c8a||0xcc;return function(_0x3cf55e){if(_0x3cf55e){return _0xaaf6eb['sendStatus'](_0x4e4c8a);}return _0xaaf6eb['status'](_0x4e4c8a)[_0xe21e('0x18')]();};}function respondWithResult(_0x529e49,_0x371655){_0x371655=_0x371655||0xc8;return function(_0x8cbf89){if(_0x8cbf89){return _0x529e49[_0xe21e('0x19')](_0x371655)[_0xe21e('0x1a')](_0x8cbf89);}};}function respondWithFilteredResult(_0x5e1f49,_0x364859){return function(_0x4dcba8){if(_0x4dcba8){var _0x583bee=typeof _0x364859[_0xe21e('0x1b')]==='undefined'&&typeof _0x364859[_0xe21e('0x1c')]==='undefined';var _0x11bbc5=_0x4dcba8['count'];var _0x42316a=_0x583bee?0x0:_0x364859[_0xe21e('0x1b')];var _0x59f7ba=_0x583bee?_0x4dcba8['count']:_0x364859[_0xe21e('0x1b')]+_0x364859['limit'];var _0x44f086;if(_0x59f7ba>=_0x11bbc5){_0x59f7ba=_0x11bbc5;_0x44f086=0xc8;}else{_0x44f086=0xce;}_0x5e1f49[_0xe21e('0x19')](_0x44f086);return _0x5e1f49[_0xe21e('0x1d')](_0xe21e('0x1e'),_0x42316a+'-'+_0x59f7ba+'/'+_0x11bbc5)[_0xe21e('0x1a')](_0x4dcba8);}return null;};}function patchUpdates(_0x55d690){return function(_0x245001){try{jsonpatch['apply'](_0x245001,_0x55d690,!![]);}catch(_0x1028f9){return BPromise[_0xe21e('0x1f')](_0x1028f9);}return _0x245001[_0xe21e('0x20')]();};}function saveUpdates(_0x451552,_0x13a5a2){return function(_0x4538f8){if(_0x4538f8){return _0x4538f8[_0xe21e('0x21')](_0x451552)[_0xe21e('0x22')](function(_0x4ac013){return _0x4ac013;});}return null;};}function removeEntity(_0x27291c,_0x30727f){return function(_0x371130){if(_0x371130){return _0x371130['destroy']()[_0xe21e('0x22')](function(){_0x27291c[_0xe21e('0x19')](0xcc)[_0xe21e('0x18')]();});}};}function handleEntityNotFound(_0x5e9ab2,_0x149097){return function(_0x113911){if(!_0x113911){_0x5e9ab2[_0xe21e('0x23')](0x194);}return _0x113911;};}function handleError(_0x3d9101,_0x4ee002){_0x4ee002=_0x4ee002||0x1f4;return function(_0x1f0513){logger[_0xe21e('0x24')](_0x1f0513['stack']);if(_0x1f0513[_0xe21e('0x25')]){delete _0x1f0513[_0xe21e('0x25')];}_0x3d9101[_0xe21e('0x19')](_0x4ee002)[_0xe21e('0x26')](_0x1f0513);};}exports[_0xe21e('0x27')]=function(_0x1f0869,_0x4dfa55){var _0x35839b={},_0x2e9a6b={},_0x4a022d={'count':0x0,'rows':[]};var _0x32e950=_[_0xe21e('0x28')](db[_0xe21e('0x29')]['rawAttributes'],function(_0x58c24b){return{'name':_0x58c24b[_0xe21e('0x2a')],'type':_0x58c24b[_0xe21e('0x2b')][_0xe21e('0x2c')]};});_0x2e9a6b[_0xe21e('0x2d')]=_[_0xe21e('0x28')](_0x32e950,'name');_0x2e9a6b[_0xe21e('0x2e')]=_[_0xe21e('0x2f')](_0x1f0869[_0xe21e('0x2e')]);_0x2e9a6b[_0xe21e('0x30')]=_[_0xe21e('0x31')](_0x2e9a6b[_0xe21e('0x2d')],_0x2e9a6b[_0xe21e('0x2e')]);_0x35839b[_0xe21e('0x32')]=_[_0xe21e('0x31')](_0x2e9a6b[_0xe21e('0x2d')],qs[_0xe21e('0x33')](_0x1f0869[_0xe21e('0x2e')][_0xe21e('0x33')]));_0x35839b[_0xe21e('0x32')]=_0x35839b[_0xe21e('0x32')][_0xe21e('0x34')]?_0x35839b[_0xe21e('0x32')]:_0x2e9a6b['model'];if(!_0x1f0869['query']['hasOwnProperty'](_0xe21e('0x35'))){_0x35839b['limit']=qs[_0xe21e('0x1c')](_0x1f0869['query']['limit']);_0x35839b[_0xe21e('0x1b')]=qs[_0xe21e('0x1b')](_0x1f0869[_0xe21e('0x2e')][_0xe21e('0x1b')]);}_0x35839b[_0xe21e('0x36')]=qs['sort'](_0x1f0869[_0xe21e('0x2e')][_0xe21e('0x37')]);_0x35839b[_0xe21e('0x38')]=qs[_0xe21e('0x30')](_[_0xe21e('0x39')](_0x1f0869[_0xe21e('0x2e')],_0x2e9a6b[_0xe21e('0x30')]),_0x32e950);if(_0x1f0869[_0xe21e('0x2e')][_0xe21e('0x3a')]){_0x35839b[_0xe21e('0x38')]=_[_0xe21e('0x3b')](_0x35839b[_0xe21e('0x38')],{'$or':_['map'](_0x32e950,function(_0x337373){if(_0x337373[_0xe21e('0x2b')]!==_0xe21e('0x3c')){var _0x57a819={};_0x57a819[_0x337373[_0xe21e('0x25')]]={'$like':'%'+_0x1f0869[_0xe21e('0x2e')][_0xe21e('0x3a')]+'%'};return _0x57a819;}})});}_0x35839b=_['merge']({},_0x35839b,_0x1f0869[_0xe21e('0x3d')]);var _0x2aa3d0={'where':_0x35839b['where']};return db['FreshsalesField'][_0xe21e('0x3e')](_0x2aa3d0)[_0xe21e('0x22')](function(_0x1f5e0c){_0x4a022d[_0xe21e('0x3e')]=_0x1f5e0c;if(_0x1f0869['query'][_0xe21e('0x3f')]){_0x35839b['include']=[{'all':!![]}];}return db[_0xe21e('0x29')]['findAll'](_0x35839b);})['then'](function(_0x1d62bf){_0x4a022d[_0xe21e('0x40')]=_0x1d62bf;return _0x4a022d;})[_0xe21e('0x22')](respondWithFilteredResult(_0x4dfa55,_0x35839b))[_0xe21e('0x41')](handleError(_0x4dfa55,null));};exports[_0xe21e('0x42')]=function(_0x135523,_0x2783a8){var _0x1227f1={'raw':!![],'where':{'id':_0x135523[_0xe21e('0x43')]['id']}},_0x34c306={};_0x34c306['model']=_[_0xe21e('0x2f')](db[_0xe21e('0x29')][_0xe21e('0x44')]);_0x34c306[_0xe21e('0x2e')]=_[_0xe21e('0x2f')](_0x135523[_0xe21e('0x2e')]);_0x34c306[_0xe21e('0x30')]=_[_0xe21e('0x31')](_0x34c306[_0xe21e('0x2d')],_0x34c306['query']);_0x1227f1[_0xe21e('0x32')]=_[_0xe21e('0x31')](_0x34c306[_0xe21e('0x2d')],qs[_0xe21e('0x33')](_0x135523['query'][_0xe21e('0x33')]));_0x1227f1[_0xe21e('0x32')]=_0x1227f1[_0xe21e('0x32')][_0xe21e('0x34')]?_0x1227f1[_0xe21e('0x32')]:_0x34c306['model'];if(_0x135523['query'][_0xe21e('0x3f')]){_0x1227f1[_0xe21e('0x45')]=[{'all':!![]}];}_0x1227f1=_[_0xe21e('0x3b')]({},_0x1227f1,_0x135523['options']);return db[_0xe21e('0x29')][_0xe21e('0x46')](_0x1227f1)['then'](handleEntityNotFound(_0x2783a8,null))[_0xe21e('0x22')](respondWithResult(_0x2783a8,null))['catch'](handleError(_0x2783a8,null));};exports[_0xe21e('0x47')]=function(_0x232801,_0x2f089e){return db[_0xe21e('0x29')][_0xe21e('0x47')](_0x232801[_0xe21e('0x48')],{})[_0xe21e('0x22')](respondWithResult(_0x2f089e,0xc9))[_0xe21e('0x41')](handleError(_0x2f089e,null));};exports['update']=function(_0x265f2c,_0x53b0f2){if(_0x265f2c['body']['id']){delete _0x265f2c['body']['id'];}return db[_0xe21e('0x29')][_0xe21e('0x46')]({'where':{'id':_0x265f2c[_0xe21e('0x43')]['id']}})[_0xe21e('0x22')](handleEntityNotFound(_0x53b0f2,null))['then'](saveUpdates(_0x265f2c[_0xe21e('0x48')],null))[_0xe21e('0x22')](respondWithResult(_0x53b0f2,null))[_0xe21e('0x41')](handleError(_0x53b0f2,null));};exports[_0xe21e('0x49')]=function(_0x3b67e7,_0x19f611){return db['FreshsalesField']['find']({'where':{'id':_0x3b67e7[_0xe21e('0x43')]['id']}})[_0xe21e('0x22')](handleEntityNotFound(_0x19f611,null))[_0xe21e('0x22')](removeEntity(_0x19f611,null))[_0xe21e('0x41')](handleError(_0x19f611,null));}; \ No newline at end of file diff --git a/server/api/intFreshsalesField/intFreshsalesField.model.js b/server/api/intFreshsalesField/intFreshsalesField.model.js new file mode 100644 index 0000000..2356d5a --- /dev/null +++ b/server/api/intFreshsalesField/intFreshsalesField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x19cb=['./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','util','../../config/logger','moment','request-promise'];(function(_0x3e6af8,_0x116679){var _0x6319b1=function(_0x3f079c){while(--_0x3f079c){_0x3e6af8['push'](_0x3e6af8['shift']());}};_0x6319b1(++_0x116679);}(_0x19cb,0x146));var _0xb19c=function(_0x2091bb,_0x43a2e1){_0x2091bb=_0x2091bb-0x0;var _0x12c345=_0x19cb[_0x2091bb];return _0x12c345;};'use strict';var _=require('lodash');var util=require(_0xb19c('0x0'));var logger=require(_0xb19c('0x1'))('api');var moment=require(_0xb19c('0x2'));var BPromise=require('bluebird');var rp=require(_0xb19c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb19c('0x4'));module[_0xb19c('0x5')]=function(_0x5a145d,_0x551f8d){return _0x5a145d[_0xb19c('0x6')](_0xb19c('0x7'),attributes,{'tableName':_0xb19c('0x8'),'paranoid':![],'indexes':[{'name':_0xb19c('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intFreshsalesField/intFreshsalesField.rpc.js b/server/api/intFreshsalesField/intFreshsalesField.rpc.js new file mode 100644 index 0000000..d9b81c9 --- /dev/null +++ b/server/api/intFreshsalesField/intFreshsalesField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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','FreshsalesField,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x1d5ba8,_0x412a52){var _0x1022a2=function(_0x187f11){while(--_0x187f11){_0x1d5ba8['push'](_0x1d5ba8['shift']());}};_0x1022a2(++_0x412a52);}(_0xadb5,0xad));var _0x5adb=function(_0x5cb640,_0x5166be){_0x5cb640=_0x5cb640-0x0;var _0x7d44e4=_0xadb5[_0x5cb640];return _0x7d44e4;};'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']('FreshsalesField,\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 diff --git a/server/api/intSalesforceAccount/index.js b/server/api/intSalesforceAccount/index.js new file mode 100644 index 0000000..391b568 --- /dev/null +++ b/server/api/intSalesforceAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x9c3016,_0x2553b7){var _0x858ef3=function(_0x5c57d8){while(--_0x5c57d8){_0x9c3016['push'](_0x9c3016['shift']());}};_0x858ef3(++_0x2553b7);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js b/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js new file mode 100644 index 0000000..d023b65 --- /dev/null +++ b/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa3d4=['integrationTab','newTab','sequelize','STRING','ENUM'];(function(_0x295cda,_0x5e8b5e){var _0x5517e0=function(_0x41f885){while(--_0x41f885){_0x295cda['push'](_0x295cda['shift']());}};_0x5517e0(++_0x5e8b5e);}(_0xa3d4,0x151));var _0x4a3d=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xa3d4[_0xb0f7c3];return _0x28ea68;};'use strict';var Sequelize=require(_0x4a3d('0x0'));module['exports']={'name':{'type':Sequelize[_0x4a3d('0x1')]},'description':{'type':Sequelize[_0x4a3d('0x1')]},'username':{'type':Sequelize[_0x4a3d('0x1')],'unique':'username'},'remoteUri':{'type':Sequelize[_0x4a3d('0x1')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x4a3d('0x2')](_0x4a3d('0x3'),_0x4a3d('0x4')),'defaultValue':_0x4a3d('0x3')}}; \ No newline at end of file diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.controller.js b/server/api/intSalesforceAccount/intSalesforceAccount.controller.js new file mode 100644 index 0000000..44c39df --- /dev/null +++ b/server/api/intSalesforceAccount/intSalesforceAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5fb1=['IsReminderSet','Description','string','int','picklist','boolean','email','phone','remove','includes','label','picklistValues','value','True','False','false','test','statusCode','getFields','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','fs-extra','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','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','length','find','create','body','getConfigurations','findOne','SalesforceConfiguration','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','clientSecret','username','securityToken','slice','substring','lastIndexOf','login','concat','isNil','ticketType','describe','OwnerId','ActivityDate'];(function(_0x4959fd,_0x186515){var _0x97de01=function(_0x29e1d0){while(--_0x29e1d0){_0x4959fd['push'](_0x4959fd['shift']());}};_0x97de01(++_0x186515);}(_0x5fb1,0x10a));var _0x15fb=function(_0x5f46e7,_0x62f9f8){_0x5f46e7=_0x5f46e7-0x0;var _0x567e95=_0x5fb1[_0x5f46e7];return _0x567e95;};'use strict';var emlformat=require(_0x15fb('0x0'));var rimraf=require(_0x15fb('0x1'));var zipdir=require(_0x15fb('0x2'));var jsonpatch=require(_0x15fb('0x3'));var rp=require(_0x15fb('0x4'));var moment=require(_0x15fb('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x15fb('0x6'));var util=require(_0x15fb('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x15fb('0x8'));var _=require(_0x15fb('0x9'));var squel=require(_0x15fb('0xa'));var crypto=require(_0x15fb('0xb'));var jsforce=require(_0x15fb('0xc'));var deskjs=require(_0x15fb('0xd'));var toCsv=require(_0x15fb('0xe'));var querystring=require(_0x15fb('0xf'));var Papa=require(_0x15fb('0x10'));var Redis=require(_0x15fb('0x11'));var authService=require(_0x15fb('0x12'));var qs=require(_0x15fb('0x13'));var as=require(_0x15fb('0x14'));var hardwareService=require(_0x15fb('0x15'));var logger=require(_0x15fb('0x16'))(_0x15fb('0x17'));var utils=require(_0x15fb('0x18'));var config=require(_0x15fb('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x15fb('0x1a'))['db'];var integrations=require(_0x15fb('0x1b'));function respondWithStatusCode(_0x3cdd11,_0xb508ee){_0xb508ee=_0xb508ee||0xcc;return function(_0x40f67c){if(_0x40f67c){return _0x3cdd11[_0x15fb('0x1c')](_0xb508ee);}return _0x3cdd11[_0x15fb('0x1d')](_0xb508ee)['end']();};}function respondWithResult(_0x4c58ca,_0x5edb07){_0x5edb07=_0x5edb07||0xc8;return function(_0x1dfbe6){if(_0x1dfbe6){return _0x4c58ca[_0x15fb('0x1d')](_0x5edb07)['json'](_0x1dfbe6);}};}function respondWithFilteredResult(_0x1f12bb,_0x4be145){return function(_0x383f88){if(_0x383f88){var _0x28f5af=typeof _0x4be145[_0x15fb('0x1e')]==='undefined'&&typeof _0x4be145[_0x15fb('0x1f')]===_0x15fb('0x20');var _0x2a7168=_0x383f88[_0x15fb('0x21')];var _0x2b6ec7=_0x28f5af?0x0:_0x4be145[_0x15fb('0x1e')];var _0x258445=_0x28f5af?_0x383f88[_0x15fb('0x21')]:_0x4be145['offset']+_0x4be145[_0x15fb('0x1f')];var _0x324e06;if(_0x258445>=_0x2a7168){_0x258445=_0x2a7168;_0x324e06=0xc8;}else{_0x324e06=0xce;}_0x1f12bb[_0x15fb('0x1d')](_0x324e06);return _0x1f12bb[_0x15fb('0x22')]('Content-Range',_0x2b6ec7+'-'+_0x258445+'/'+_0x2a7168)['json'](_0x383f88);}return null;};}function patchUpdates(_0x3fc12f){return function(_0x3c78d6){try{jsonpatch[_0x15fb('0x23')](_0x3c78d6,_0x3fc12f,!![]);}catch(_0x3e74df){return BPromise[_0x15fb('0x24')](_0x3e74df);}return _0x3c78d6[_0x15fb('0x25')]();};}function saveUpdates(_0x48a2d7,_0x57aad1){return function(_0x446057){if(_0x446057){return _0x446057[_0x15fb('0x26')](_0x48a2d7)[_0x15fb('0x27')](function(_0x35970a){return _0x35970a;});}return null;};}function removeEntity(_0x30cf2f,_0x4adde8){return function(_0x2b7a9a){if(_0x2b7a9a){return _0x2b7a9a[_0x15fb('0x28')]()['then'](function(){_0x30cf2f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4aef94,_0x1242e1){return function(_0x482800){if(!_0x482800){_0x4aef94[_0x15fb('0x1c')](0x194);}return _0x482800;};}function handleError(_0x32a5dc,_0xd5fac3){_0xd5fac3=_0xd5fac3||0x1f4;return function(_0x41c3c3){logger[_0x15fb('0x29')](_0x41c3c3[_0x15fb('0x2a')]);if(_0x41c3c3[_0x15fb('0x2b')]){delete _0x41c3c3[_0x15fb('0x2b')];}_0x32a5dc[_0x15fb('0x1d')](_0xd5fac3)[_0x15fb('0x2c')](_0x41c3c3);};}exports[_0x15fb('0x2d')]=function(_0xdbefdb,_0x556ef6){var _0x430fcc={},_0x509a15={},_0x2db9b3={'count':0x0,'rows':[]};var _0x543cb4=_[_0x15fb('0x2e')](db[_0x15fb('0x2f')][_0x15fb('0x30')],function(_0x166a27){return{'name':_0x166a27[_0x15fb('0x31')],'type':_0x166a27[_0x15fb('0x32')][_0x15fb('0x33')]};});_0x509a15[_0x15fb('0x34')]=_['map'](_0x543cb4,_0x15fb('0x2b'));_0x509a15['query']=_[_0x15fb('0x35')](_0xdbefdb[_0x15fb('0x36')]);_0x509a15[_0x15fb('0x37')]=_[_0x15fb('0x38')](_0x509a15['model'],_0x509a15[_0x15fb('0x36')]);_0x430fcc['attributes']=_[_0x15fb('0x38')](_0x509a15['model'],qs[_0x15fb('0x39')](_0xdbefdb['query']['fields']));_0x430fcc[_0x15fb('0x3a')]=_0x430fcc[_0x15fb('0x3a')]['length']?_0x430fcc[_0x15fb('0x3a')]:_0x509a15[_0x15fb('0x34')];if(!_0xdbefdb[_0x15fb('0x36')][_0x15fb('0x3b')](_0x15fb('0x3c'))){_0x430fcc[_0x15fb('0x1f')]=qs[_0x15fb('0x1f')](_0xdbefdb['query']['limit']);_0x430fcc['offset']=qs[_0x15fb('0x1e')](_0xdbefdb[_0x15fb('0x36')][_0x15fb('0x1e')]);}_0x430fcc[_0x15fb('0x3d')]=qs[_0x15fb('0x3e')](_0xdbefdb[_0x15fb('0x36')][_0x15fb('0x3e')]);_0x430fcc[_0x15fb('0x3f')]=qs[_0x15fb('0x37')](_[_0x15fb('0x40')](_0xdbefdb[_0x15fb('0x36')],_0x509a15[_0x15fb('0x37')]),_0x543cb4);if(_0xdbefdb[_0x15fb('0x36')][_0x15fb('0x41')]){_0x430fcc[_0x15fb('0x3f')]=_['merge'](_0x430fcc[_0x15fb('0x3f')],{'$or':_[_0x15fb('0x2e')](_0x543cb4,function(_0x4492eb){if(_0x4492eb[_0x15fb('0x32')]!==_0x15fb('0x42')){var _0x280489={};_0x280489[_0x4492eb[_0x15fb('0x2b')]]={'$like':'%'+_0xdbefdb[_0x15fb('0x36')][_0x15fb('0x41')]+'%'};return _0x280489;}})});}_0x430fcc=_[_0x15fb('0x43')]({},_0x430fcc,_0xdbefdb[_0x15fb('0x44')]);var _0x227ab2={'where':_0x430fcc['where']};return db[_0x15fb('0x2f')][_0x15fb('0x21')](_0x227ab2)[_0x15fb('0x27')](function(_0x426b68){_0x2db9b3['count']=_0x426b68;if(_0xdbefdb[_0x15fb('0x36')][_0x15fb('0x45')]){_0x430fcc[_0x15fb('0x46')]=[{'all':!![]}];}return db[_0x15fb('0x2f')][_0x15fb('0x47')](_0x430fcc);})[_0x15fb('0x27')](function(_0x114720){_0x2db9b3['rows']=_0x114720;return _0x2db9b3;})['then'](respondWithFilteredResult(_0x556ef6,_0x430fcc))[_0x15fb('0x48')](handleError(_0x556ef6,null));};exports[_0x15fb('0x49')]=function(_0x3ccaa5,_0x2acb42){var _0x21d95c={'raw':![],'where':{'id':_0x3ccaa5[_0x15fb('0x4a')]['id']}},_0x288a0a={};_0x288a0a[_0x15fb('0x34')]=_[_0x15fb('0x35')](db[_0x15fb('0x2f')][_0x15fb('0x30')]);_0x288a0a['query']=_['keys'](_0x3ccaa5[_0x15fb('0x36')]);_0x288a0a[_0x15fb('0x37')]=_[_0x15fb('0x38')](_0x288a0a[_0x15fb('0x34')],_0x288a0a['query']);_0x21d95c['attributes']=_['intersection'](_0x288a0a[_0x15fb('0x34')],qs[_0x15fb('0x39')](_0x3ccaa5['query']['fields']));_0x21d95c[_0x15fb('0x3a')]=_0x21d95c[_0x15fb('0x3a')][_0x15fb('0x4b')]?_0x21d95c['attributes']:_0x288a0a[_0x15fb('0x34')];if(_0x3ccaa5[_0x15fb('0x36')][_0x15fb('0x45')]){_0x21d95c[_0x15fb('0x46')]=[{'all':!![]}];}_0x21d95c=_[_0x15fb('0x43')]({},_0x21d95c,_0x3ccaa5[_0x15fb('0x44')]);return db[_0x15fb('0x2f')][_0x15fb('0x4c')](_0x21d95c)[_0x15fb('0x27')](handleEntityNotFound(_0x2acb42,null))[_0x15fb('0x27')](respondWithResult(_0x2acb42,null))[_0x15fb('0x48')](handleError(_0x2acb42,null));};exports[_0x15fb('0x4d')]=function(_0x1acb32,_0x592f99){return db[_0x15fb('0x2f')][_0x15fb('0x4d')](_0x1acb32['body'],{})[_0x15fb('0x27')](respondWithResult(_0x592f99,0xc9))[_0x15fb('0x48')](handleError(_0x592f99,null));};exports[_0x15fb('0x26')]=function(_0x4fce15,_0x379eb2){if(_0x4fce15[_0x15fb('0x4e')]['id']){delete _0x4fce15[_0x15fb('0x4e')]['id'];}return db[_0x15fb('0x2f')][_0x15fb('0x4c')]({'where':{'id':_0x4fce15[_0x15fb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x379eb2,null))[_0x15fb('0x27')](saveUpdates(_0x4fce15[_0x15fb('0x4e')],null))[_0x15fb('0x27')](respondWithResult(_0x379eb2,null))['catch'](handleError(_0x379eb2,null));};exports[_0x15fb('0x28')]=function(_0x4e56ed,_0x512548){return db[_0x15fb('0x2f')]['find']({'where':{'id':_0x4e56ed['params']['id']}})['then'](handleEntityNotFound(_0x512548,null))[_0x15fb('0x27')](removeEntity(_0x512548,null))[_0x15fb('0x48')](handleError(_0x512548,null));};exports[_0x15fb('0x4f')]=function(_0x413969,_0x233219,_0x2d9cf7){var _0x589180={};var _0x48cc46={};var _0x1ba68f;var _0x48b5b6;return db[_0x15fb('0x2f')][_0x15fb('0x50')]({'where':{'id':_0x413969[_0x15fb('0x4a')]['id']}})[_0x15fb('0x27')](handleEntityNotFound(_0x233219,null))[_0x15fb('0x27')](function(_0x2ca4d7){if(_0x2ca4d7){_0x1ba68f=_0x2ca4d7;_0x48cc46[_0x15fb('0x34')]=_[_0x15fb('0x35')](db[_0x15fb('0x51')]['rawAttributes']);_0x48cc46[_0x15fb('0x36')]=_['keys'](_0x413969[_0x15fb('0x36')]);_0x48cc46['filters']=_['intersection'](_0x48cc46[_0x15fb('0x34')],_0x48cc46['query']);_0x589180[_0x15fb('0x3a')]=_[_0x15fb('0x38')](_0x48cc46[_0x15fb('0x34')],qs[_0x15fb('0x39')](_0x413969[_0x15fb('0x36')]['fields']));_0x589180['attributes']=_0x589180[_0x15fb('0x3a')][_0x15fb('0x4b')]?_0x589180[_0x15fb('0x3a')]:_0x48cc46[_0x15fb('0x34')];_0x589180[_0x15fb('0x3d')]=qs[_0x15fb('0x3e')](_0x413969['query'][_0x15fb('0x3e')]);_0x589180[_0x15fb('0x3f')]=qs[_0x15fb('0x37')](_['pick'](_0x413969[_0x15fb('0x36')],_0x48cc46['filters']));if(_0x413969[_0x15fb('0x36')][_0x15fb('0x41')]){_0x589180[_0x15fb('0x3f')]=_[_0x15fb('0x43')](_0x589180[_0x15fb('0x3f')],{'$or':_[_0x15fb('0x2e')](_0x589180[_0x15fb('0x3a')],function(_0x5063b0){var _0x2f995b={};_0x2f995b[_0x5063b0]={'$like':'%'+_0x413969['query'][_0x15fb('0x41')]+'%'};return _0x2f995b;})});}_0x589180=_['merge']({},_0x589180,_0x413969[_0x15fb('0x44')]);return _0x1ba68f['getConfigurations'](_0x589180);}})[_0x15fb('0x27')](function(_0x227580){if(_0x227580){_0x48b5b6=_0x227580[_0x15fb('0x4b')];if(!_0x413969['query'][_0x15fb('0x3b')](_0x15fb('0x3c'))){_0x589180[_0x15fb('0x1f')]=qs[_0x15fb('0x1f')](_0x413969['query']['limit']);_0x589180[_0x15fb('0x1e')]=qs[_0x15fb('0x1e')](_0x413969[_0x15fb('0x36')][_0x15fb('0x1e')]);}return _0x1ba68f[_0x15fb('0x4f')](_0x589180);}})['then'](function(_0x5500e4){if(_0x5500e4){return _0x5500e4?{'count':_0x48b5b6,'rows':_0x5500e4}:null;}})['then'](respondWithResult(_0x233219,null))['catch'](handleError(_0x233219,null));};exports['addConfiguration']=function(_0x5a771d,_0x3ce022,_0x4fc31a){if(_0x5a771d[_0x15fb('0x4e')]['id']){delete _0x5a771d['body']['id'];}return db[_0x15fb('0x2f')][_0x15fb('0x50')]({'where':{'id':_0x5a771d[_0x15fb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3ce022,null))[_0x15fb('0x27')](function(_0x146eb8){if(_0x146eb8){_0x5a771d[_0x15fb('0x4e')]['AccountId']=_0x146eb8['id'];_0x5a771d[_0x15fb('0x4e')]['Subjects']=integrations[_0x15fb('0x52')](_0x5a771d[_0x15fb('0x4e')][_0x15fb('0x53')],_0x5a771d[_0x15fb('0x4e')]['type']);_0x5a771d['body'][_0x15fb('0x54')]=integrations[_0x15fb('0x55')](_0x5a771d[_0x15fb('0x4e')][_0x15fb('0x53')],_0x5a771d[_0x15fb('0x4e')][_0x15fb('0x32')]);return db[_0x15fb('0x51')][_0x15fb('0x4d')](_0x5a771d['body'],{'include':[{'model':db[_0x15fb('0x56')],'as':'Subjects'},{'model':db[_0x15fb('0x56')],'as':'Descriptions'}]});}return null;})[_0x15fb('0x27')](respondWithResult(_0x3ce022,null))[_0x15fb('0x48')](handleError(_0x3ce022,null));};exports['getFields']=function(_0x24fd2b,_0x1d625a,_0x487e76){var _0x4377c8;var _0xf2c889='';var _0x2de0d8=_0x15fb('0x57');return db[_0x15fb('0x2f')][_0x15fb('0x50')]({'where':{'id':_0x24fd2b[_0x15fb('0x4a')]['id']},'attributes':['id',_0x15fb('0x58'),_0x15fb('0x59'),_0x15fb('0x5a'),_0x15fb('0x5b'),'password',_0x15fb('0x5c')]})[_0x15fb('0x27')](handleEntityNotFound(_0x1d625a,null))[_0x15fb('0x27')](function(_0x36f6d1){if(_0x36f6d1){_0xf2c889=_0x36f6d1[_0x15fb('0x58')];var _0x90a122=_0xf2c889[_0x15fb('0x5d')](-0x1);if(_0x90a122==='/'){_0xf2c889=_0xf2c889[_0x15fb('0x5e')](0x0,_0xf2c889[_0x15fb('0x5f')](_0x90a122));}_0x4377c8=new jsforce['Connection']({'oauth2':{'loginUrl':_0xf2c889,'clientId':_0x36f6d1[_0x15fb('0x59')],'clientSecret':_0x36f6d1[_0x15fb('0x5a')]}});return _0x4377c8[_0x15fb('0x60')](_0x36f6d1[_0x15fb('0x5b')],_0x36f6d1['password'][_0x15fb('0x61')](_0x36f6d1[_0x15fb('0x5c')]));}})['then'](function(_0x106a21){if(_0x106a21){if(!_[_0x15fb('0x62')](_0x24fd2b[_0x15fb('0x36')][_0x15fb('0x63')])){_0x2de0d8=_0x24fd2b[_0x15fb('0x36')]['ticketType'];}return _0x4377c8['sobject'](_0x2de0d8)[_0x15fb('0x64')]();}})[_0x15fb('0x27')](function(_0x198a58){var _0x43167d=[_0x15fb('0x65'),_0x15fb('0x66'),_0x15fb('0x67'),'IsRecurrence','Subject',_0x15fb('0x68')];var _0x51d111=[_0x15fb('0x69'),_0x15fb('0x6a'),_0x15fb('0x6b'),_0x15fb('0x6c'),_0x15fb('0x6d'),'textarea',_0x15fb('0x6e')];if(_0x198a58){_[_0x15fb('0x6f')](_0x198a58[_0x15fb('0x39')],function(_0x55a6a4){return _0x43167d[_0x15fb('0x70')](_0x55a6a4[_0x15fb('0x2b')])||!_0x51d111[_0x15fb('0x70')](_0x55a6a4[_0x15fb('0x32')]);});return{'count':_0x198a58[_0x15fb('0x39')]['length'],'rows':_[_0x15fb('0x2e')](_0x198a58[_0x15fb('0x39')],function(_0x1de833){return{'id':_0x1de833[_0x15fb('0x2b')],'name':_0x1de833[_0x15fb('0x71')],'custom':_0x1de833['custom'],'options':_0x1de833['picklistValues'][_0x15fb('0x4b')]>0x0?_[_0x15fb('0x2e')](_0x1de833[_0x15fb('0x72')],function(_0xb8dab2){return{'name':_0xb8dab2[_0x15fb('0x71')],'value':_0xb8dab2[_0x15fb('0x73')]};}):_0x1de833['type']==_0x15fb('0x6c')?[{'name':_0x15fb('0x74'),'value':'true'},{'name':_0x15fb('0x75'),'value':_0x15fb('0x76')}]:[]};})};}})[_0x15fb('0x27')](respondWithResult(_0x1d625a,null))['catch'](function(_0x162d7e){var _0x5b2fd8=_0x24fd2b['query'][_0x15fb('0x77')]?0x1f4:_0x162d7e[_0x15fb('0x78')]||0x1f4;logger[_0x15fb('0x29')]('getFields,\x20%s,\x20%s,\x20%s',_0x15fb('0x79'),_0x5b2fd8,JSON[_0x15fb('0x7a')](_0x162d7e));delete _0x162d7e[_0x15fb('0x2b')];if(_0x5b2fd8===0x191){_0x5b2fd8=0x190;}_0x1d625a[_0x15fb('0x1d')](_0x5b2fd8)['send'](_0x24fd2b[_0x15fb('0x36')][_0x15fb('0x77')]?{'message':'Wrong\x20credentials','statusCode':_0x162d7e['statusCode']}:_0x162d7e);});}; \ No newline at end of file diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.model.js b/server/api/intSalesforceAccount/intSalesforceAccount.model.js new file mode 100644 index 0000000..1e7b079 --- /dev/null +++ b/server/api/intSalesforceAccount/intSalesforceAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1d81=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','define','SalesforceAccount','int_salesforce_accounts'];(function(_0x408c68,_0x51f8b4){var _0x3919c9=function(_0xf424b8){while(--_0xf424b8){_0x408c68['push'](_0x408c68['shift']());}};_0x3919c9(++_0x51f8b4);}(_0x1d81,0x155));var _0x11d8=function(_0x3c729b,_0x2a4146){_0x3c729b=_0x3c729b-0x0;var _0x55894c=_0x1d81[_0x3c729b];return _0x55894c;};'use strict';var _=require('lodash');var util=require(_0x11d8('0x0'));var logger=require(_0x11d8('0x1'))(_0x11d8('0x2'));var moment=require('moment');var BPromise=require(_0x11d8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x11d8('0x4'));var rimraf=require(_0x11d8('0x5'));var config=require(_0x11d8('0x6'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x11d8('0x7')]=function(_0x3e36c6,_0x18276f){return _0x3e36c6[_0x11d8('0x8')](_0x11d8('0x9'),attributes,{'tableName':_0x11d8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js b/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js new file mode 100644 index 0000000..0fd0137 --- /dev/null +++ b/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf777=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','error','code','message','SalesforceAccount,\x20%s,\x20%s','result','catch','SalesforceAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetSalesforceAccount','stringify','ShowSalesforceAccount','find','lodash'];(function(_0x4578f8,_0x199c11){var _0x1129f1=function(_0x8a4369){while(--_0x8a4369){_0x4578f8['push'](_0x4578f8['shift']());}};_0x1129f1(++_0x199c11);}(_0xf777,0x1a3));var _0x7f77=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf777[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x7f77('0x0'));var util=require(_0x7f77('0x1'));var moment=require(_0x7f77('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f77('0x3'));var db=require(_0x7f77('0x4'))['db'];var utils=require(_0x7f77('0x5'));var logger=require(_0x7f77('0x6'))('rpc');var config=require(_0x7f77('0x7'));var jayson=require(_0x7f77('0x8'));var client=jayson[_0x7f77('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46c80a,_0x5a313d,_0x30edd6){return new BPromise(function(_0x2b4a3f,_0xb95b13){return client[_0x7f77('0xa')](_0x46c80a,_0x30edd6)[_0x7f77('0xb')](function(_0x1ca13a){logger[_0x7f77('0xc')]('SalesforceAccount,\x20%s,\x20%s',_0x5a313d,_0x7f77('0xd'));logger[_0x7f77('0xe')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x5a313d,'request\x20sent',JSON['stringify'](_0x1ca13a));if(_0x1ca13a['error']){if(_0x1ca13a[_0x7f77('0xf')][_0x7f77('0x10')]===0x1f4){logger[_0x7f77('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x5a313d,_0x1ca13a[_0x7f77('0xf')]['message']);return _0xb95b13(_0x1ca13a[_0x7f77('0xf')][_0x7f77('0x11')]);}logger[_0x7f77('0xf')](_0x7f77('0x12'),_0x5a313d,_0x1ca13a[_0x7f77('0xf')][_0x7f77('0x11')]);return _0x2b4a3f(_0x1ca13a[_0x7f77('0xf')]['message']);}else{logger['info'](_0x7f77('0x12'),_0x5a313d,_0x7f77('0xd'));_0x2b4a3f(_0x1ca13a[_0x7f77('0x13')][_0x7f77('0x11')]);}})[_0x7f77('0x14')](function(_0x55a04a){logger[_0x7f77('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x5a313d,_0x55a04a);_0xb95b13(_0x55a04a);});});}exports['GetSalesforceAccount']=function(_0x19f6b6){var _0x28daea=this;return new Promise(function(_0x2a94cc,_0xca9fe6){return db[_0x7f77('0x15')][_0x7f77('0x16')]({'raw':_0x19f6b6[_0x7f77('0x17')]?_0x19f6b6['options'][_0x7f77('0x18')]===undefined?!![]:![]:!![],'where':_0x19f6b6['options']?_0x19f6b6['options'][_0x7f77('0x19')]||null:null,'attributes':_0x19f6b6[_0x7f77('0x17')]?_0x19f6b6[_0x7f77('0x17')][_0x7f77('0x1a')]||null:null,'limit':_0x19f6b6['options']?_0x19f6b6[_0x7f77('0x17')][_0x7f77('0x1b')]||null:null,'include':_0x19f6b6[_0x7f77('0x17')]?_0x19f6b6[_0x7f77('0x17')][_0x7f77('0x1c')]?_[_0x7f77('0x1d')](_0x19f6b6[_0x7f77('0x17')]['include'],function(_0x339d5a){return{'model':db[_0x339d5a[_0x7f77('0x1e')]],'as':_0x339d5a['as'],'attributes':_0x339d5a[_0x7f77('0x1a')],'include':_0x339d5a['include']?_[_0x7f77('0x1d')](_0x339d5a[_0x7f77('0x1c')],function(_0x5dc823){return{'model':db[_0x5dc823['model']],'as':_0x5dc823['as'],'attributes':_0x5dc823['attributes'],'include':_0x5dc823[_0x7f77('0x1c')]?_['map'](_0x5dc823[_0x7f77('0x1c')],function(_0x53ff02){return{'model':db[_0x53ff02[_0x7f77('0x1e')]],'as':_0x53ff02['as'],'attributes':_0x53ff02[_0x7f77('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7f77('0xb')](function(_0x3ca805){logger[_0x7f77('0xc')](_0x7f77('0x1f'),_0x19f6b6);logger[_0x7f77('0xe')]('GetSalesforceAccount',_0x19f6b6,JSON[_0x7f77('0x20')](_0x3ca805));_0x2a94cc(_0x3ca805);})['catch'](function(_0x38be99){logger['error'](_0x7f77('0x1f'),_0x38be99[_0x7f77('0x11')],_0x19f6b6);_0xca9fe6(_0x28daea['error'](0x1f4,_0x38be99[_0x7f77('0x11')]));});});};exports[_0x7f77('0x21')]=function(_0x6f6ff8){var _0x516944=this;return new Promise(function(_0x4ab735,_0x24d1ae){return db[_0x7f77('0x15')][_0x7f77('0x22')]({'raw':_0x6f6ff8['options']?_0x6f6ff8[_0x7f77('0x17')][_0x7f77('0x18')]===undefined?!![]:![]:!![],'where':_0x6f6ff8['options']?_0x6f6ff8['options']['where']||null:null,'attributes':_0x6f6ff8[_0x7f77('0x17')]?_0x6f6ff8[_0x7f77('0x17')][_0x7f77('0x1a')]||null:null,'include':_0x6f6ff8[_0x7f77('0x17')]?_0x6f6ff8[_0x7f77('0x17')][_0x7f77('0x1c')]?_[_0x7f77('0x1d')](_0x6f6ff8[_0x7f77('0x17')][_0x7f77('0x1c')],function(_0x1a09f1){return{'model':db[_0x1a09f1[_0x7f77('0x1e')]],'as':_0x1a09f1['as'],'attributes':_0x1a09f1[_0x7f77('0x1a')],'include':_0x1a09f1[_0x7f77('0x1c')]?_[_0x7f77('0x1d')](_0x1a09f1['include'],function(_0x2cac56){return{'model':db[_0x2cac56[_0x7f77('0x1e')]],'as':_0x2cac56['as'],'attributes':_0x2cac56[_0x7f77('0x1a')],'include':_0x2cac56[_0x7f77('0x1c')]?_[_0x7f77('0x1d')](_0x2cac56[_0x7f77('0x1c')],function(_0x33ccf3){return{'model':db[_0x33ccf3[_0x7f77('0x1e')]],'as':_0x33ccf3['as'],'attributes':_0x33ccf3[_0x7f77('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x52066e){logger[_0x7f77('0xc')](_0x7f77('0x21'),_0x6f6ff8);logger['debug'](_0x7f77('0x21'),_0x6f6ff8,JSON[_0x7f77('0x20')](_0x52066e));_0x4ab735(_0x52066e);})[_0x7f77('0x14')](function(_0x221f6b){logger[_0x7f77('0xf')](_0x7f77('0x21'),_0x221f6b[_0x7f77('0x11')],_0x6f6ff8);_0x24d1ae(_0x516944[_0x7f77('0xf')](0x1f4,_0x221f6b[_0x7f77('0x11')]));});});}; \ No newline at end of file diff --git a/server/api/intSalesforceConfiguration/index.js b/server/api/intSalesforceConfiguration/index.js new file mode 100644 index 0000000..663b937 --- /dev/null +++ b/server/api/intSalesforceConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +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(_0xd13f1f,_0x4ef287){var _0x7ac4c9=function(_0x171a34){while(--_0x171a34){_0xd13f1f['push'](_0xd13f1f['shift']());}};_0x7ac4c9(++_0x4ef287);}(_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 diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js new file mode 100644 index 0000000..6c4d7d2 --- /dev/null +++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x19c7=['nothing','account','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead'];(function(_0x51c842,_0x2c47a8){var _0x3977a0=function(_0x521917){while(--_0x521917){_0x51c842['push'](_0x51c842['shift']());}};_0x3977a0(++_0x2c47a8);}(_0x19c7,0x16d));var _0x719c=function(_0x550b3e,_0x3b071b){_0x550b3e=_0x550b3e-0x0;var _0x47e01d=_0x19c7[_0x550b3e];return _0x47e01d;};'use strict';var Sequelize=require('sequelize');module[_0x719c('0x0')]={'name':{'type':Sequelize[_0x719c('0x1')]},'description':{'type':Sequelize[_0x719c('0x1')]},'ticketType':{'type':Sequelize[_0x719c('0x2')](_0x719c('0x3'),_0x719c('0x4')),'defaultValue':_0x719c('0x3')},'moduleSearch':{'type':Sequelize[_0x719c('0x2')](_0x719c('0x5'),_0x719c('0x6'),_0x719c('0x7'),_0x719c('0x8'),'account'),'defaultValue':_0x719c('0x5')},'moduleCreate':{'type':Sequelize[_0x719c('0x2')](_0x719c('0x9'),_0x719c('0x6'),_0x719c('0x7'),_0x719c('0xa')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0x719c('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x719c('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x719c('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x719c('0x1')]}}; \ No newline at end of file diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js new file mode 100644 index 0000000..438a239 --- /dev/null +++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe12c=['key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','findAll','rows','catch','show','rawAttributes','include','find','create','body','params','getFields','findOne','SalesforceField','order','pick','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','SalesforceConfiguration','fieldName','type'];(function(_0x35e7fb,_0x57b674){var _0x4257e1=function(_0x4a6e04){while(--_0x4a6e04){_0x35e7fb['push'](_0x35e7fb['shift']());}};_0x4257e1(++_0x57b674);}(_0xe12c,0x118));var _0xce12=function(_0x269ee8,_0x477226){_0x269ee8=_0x269ee8-0x0;var _0x4d98bd=_0xe12c[_0x269ee8];return _0x4d98bd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce12('0x0'));var zipdir=require(_0xce12('0x1'));var jsonpatch=require(_0xce12('0x2'));var rp=require(_0xce12('0x3'));var moment=require(_0xce12('0x4'));var BPromise=require(_0xce12('0x5'));var Mustache=require(_0xce12('0x6'));var util=require(_0xce12('0x7'));var path=require(_0xce12('0x8'));var sox=require(_0xce12('0x9'));var csv=require(_0xce12('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce12('0xb'));var _=require(_0xce12('0xc'));var squel=require(_0xce12('0xd'));var crypto=require(_0xce12('0xe'));var jsforce=require(_0xce12('0xf'));var deskjs=require(_0xce12('0x10'));var toCsv=require(_0xce12('0xa'));var querystring=require(_0xce12('0x11'));var Papa=require(_0xce12('0x12'));var Redis=require('ioredis');var authService=require(_0xce12('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xce12('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xce12('0x15'));var utils=require(_0xce12('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xce12('0x17'));var db=require(_0xce12('0x18'))['db'];function respondWithStatusCode(_0x4fceec,_0x3c593b){_0x3c593b=_0x3c593b||0xcc;return function(_0x6a61c7){if(_0x6a61c7){return _0x4fceec[_0xce12('0x19')](_0x3c593b);}return _0x4fceec['status'](_0x3c593b)[_0xce12('0x1a')]();};}function respondWithResult(_0x59458e,_0x5201cf){_0x5201cf=_0x5201cf||0xc8;return function(_0x34f4dd){if(_0x34f4dd){return _0x59458e[_0xce12('0x1b')](_0x5201cf)['json'](_0x34f4dd);}};}function respondWithFilteredResult(_0xf7d36,_0x43c55b){return function(_0x3d3810){if(_0x3d3810){var _0x4979b6=typeof _0x43c55b[_0xce12('0x1c')]==='undefined'&&typeof _0x43c55b[_0xce12('0x1d')]===_0xce12('0x1e');var _0xb481e1=_0x3d3810[_0xce12('0x1f')];var _0x14b630=_0x4979b6?0x0:_0x43c55b['offset'];var _0xe312d=_0x4979b6?_0x3d3810[_0xce12('0x1f')]:_0x43c55b[_0xce12('0x1c')]+_0x43c55b['limit'];var _0x4a5e57;if(_0xe312d>=_0xb481e1){_0xe312d=_0xb481e1;_0x4a5e57=0xc8;}else{_0x4a5e57=0xce;}_0xf7d36[_0xce12('0x1b')](_0x4a5e57);return _0xf7d36['set'](_0xce12('0x20'),_0x14b630+'-'+_0xe312d+'/'+_0xb481e1)[_0xce12('0x21')](_0x3d3810);}return null;};}function patchUpdates(_0x52d237){return function(_0x59d8c6){try{jsonpatch[_0xce12('0x22')](_0x59d8c6,_0x52d237,!![]);}catch(_0x4cd6fd){return BPromise[_0xce12('0x23')](_0x4cd6fd);}return _0x59d8c6[_0xce12('0x24')]();};}function saveUpdates(_0xc6af05,_0x246744){return function(_0x22bc0a){if(_0x22bc0a){return _0x22bc0a[_0xce12('0x25')](_0xc6af05)[_0xce12('0x26')](function(_0x34c1f6){return _0x34c1f6;});}return null;};}function removeEntity(_0x560710,_0x255a22){return function(_0x140c17){if(_0x140c17){return _0x140c17[_0xce12('0x27')]()[_0xce12('0x26')](function(){_0x560710['status'](0xcc)[_0xce12('0x1a')]();});}};}function handleEntityNotFound(_0x18af83,_0x553459){return function(_0xeea774){if(!_0xeea774){_0x18af83[_0xce12('0x19')](0x194);}return _0xeea774;};}function handleError(_0x1bfb4d,_0x1b75d9){_0x1b75d9=_0x1b75d9||0x1f4;return function(_0x30883b){logger[_0xce12('0x28')](_0x30883b[_0xce12('0x29')]);if(_0x30883b['name']){delete _0x30883b[_0xce12('0x2a')];}_0x1bfb4d['status'](_0x1b75d9)['send'](_0x30883b);};}exports[_0xce12('0x2b')]=function(_0x4b59cd,_0x2cf520){var _0xcb48cd={},_0xb9f705={},_0xd5ea3={'count':0x0,'rows':[]};var _0x402c29=_[_0xce12('0x2c')](db[_0xce12('0x2d')]['rawAttributes'],function(_0x2b9f7d){return{'name':_0x2b9f7d[_0xce12('0x2e')],'type':_0x2b9f7d[_0xce12('0x2f')][_0xce12('0x30')]};});_0xb9f705[_0xce12('0x31')]=_['map'](_0x402c29,_0xce12('0x2a'));_0xb9f705[_0xce12('0x32')]=_[_0xce12('0x33')](_0x4b59cd[_0xce12('0x32')]);_0xb9f705['filters']=_['intersection'](_0xb9f705[_0xce12('0x31')],_0xb9f705[_0xce12('0x32')]);_0xcb48cd[_0xce12('0x34')]=_[_0xce12('0x35')](_0xb9f705[_0xce12('0x31')],qs[_0xce12('0x36')](_0x4b59cd[_0xce12('0x32')][_0xce12('0x36')]));_0xcb48cd['attributes']=_0xcb48cd['attributes'][_0xce12('0x37')]?_0xcb48cd[_0xce12('0x34')]:_0xb9f705[_0xce12('0x31')];if(!_0x4b59cd[_0xce12('0x32')][_0xce12('0x38')](_0xce12('0x39'))){_0xcb48cd[_0xce12('0x1d')]=qs['limit'](_0x4b59cd['query'][_0xce12('0x1d')]);_0xcb48cd['offset']=qs[_0xce12('0x1c')](_0x4b59cd['query'][_0xce12('0x1c')]);}_0xcb48cd['order']=qs[_0xce12('0x3a')](_0x4b59cd['query'][_0xce12('0x3a')]);_0xcb48cd[_0xce12('0x3b')]=qs[_0xce12('0x3c')](_['pick'](_0x4b59cd[_0xce12('0x32')],_0xb9f705[_0xce12('0x3c')]),_0x402c29);if(_0x4b59cd[_0xce12('0x32')][_0xce12('0x3d')]){_0xcb48cd[_0xce12('0x3b')]=_[_0xce12('0x3e')](_0xcb48cd[_0xce12('0x3b')],{'$or':_['map'](_0x402c29,function(_0x1d718a){if(_0x1d718a[_0xce12('0x2f')]!==_0xce12('0x3f')){var _0x283446={};_0x283446[_0x1d718a['name']]={'$like':'%'+_0x4b59cd[_0xce12('0x32')][_0xce12('0x3d')]+'%'};return _0x283446;}})});}_0xcb48cd=_[_0xce12('0x3e')]({},_0xcb48cd,_0x4b59cd[_0xce12('0x40')]);var _0x309b7b={'where':_0xcb48cd[_0xce12('0x3b')]};return db[_0xce12('0x2d')]['count'](_0x309b7b)[_0xce12('0x26')](function(_0x4b48c9){_0xd5ea3[_0xce12('0x1f')]=_0x4b48c9;if(_0x4b59cd[_0xce12('0x32')]['includeAll']){_0xcb48cd['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xce12('0x41')](_0xcb48cd);})[_0xce12('0x26')](function(_0x4e7d37){_0xd5ea3[_0xce12('0x42')]=_0x4e7d37;return _0xd5ea3;})[_0xce12('0x26')](respondWithFilteredResult(_0x2cf520,_0xcb48cd))[_0xce12('0x43')](handleError(_0x2cf520,null));};exports[_0xce12('0x44')]=function(_0x59bfc0,_0x4d189e){var _0x2b8ec4={'raw':![],'where':{'id':_0x59bfc0['params']['id']}},_0xc69056={};_0xc69056[_0xce12('0x31')]=_[_0xce12('0x33')](db[_0xce12('0x2d')][_0xce12('0x45')]);_0xc69056[_0xce12('0x32')]=_[_0xce12('0x33')](_0x59bfc0[_0xce12('0x32')]);_0xc69056[_0xce12('0x3c')]=_[_0xce12('0x35')](_0xc69056[_0xce12('0x31')],_0xc69056[_0xce12('0x32')]);_0x2b8ec4[_0xce12('0x34')]=_['intersection'](_0xc69056[_0xce12('0x31')],qs[_0xce12('0x36')](_0x59bfc0[_0xce12('0x32')]['fields']));_0x2b8ec4['attributes']=_0x2b8ec4[_0xce12('0x34')][_0xce12('0x37')]?_0x2b8ec4['attributes']:_0xc69056[_0xce12('0x31')];if(_0x59bfc0[_0xce12('0x32')]['includeAll']){_0x2b8ec4[_0xce12('0x46')]=[{'all':!![]}];}_0x2b8ec4=_['merge']({},_0x2b8ec4,_0x59bfc0[_0xce12('0x40')]);return db[_0xce12('0x2d')][_0xce12('0x47')](_0x2b8ec4)[_0xce12('0x26')](handleEntityNotFound(_0x4d189e,null))[_0xce12('0x26')](respondWithResult(_0x4d189e,null))['catch'](handleError(_0x4d189e,null));};exports[_0xce12('0x48')]=function(_0x5e6627,_0x2e91af){return db['SalesforceConfiguration'][_0xce12('0x48')](_0x5e6627['body'],{})[_0xce12('0x26')](respondWithResult(_0x2e91af,0xc9))[_0xce12('0x43')](handleError(_0x2e91af,null));};exports[_0xce12('0x25')]=function(_0x16ddd5,_0x483b49){if(_0x16ddd5['body']['id']){delete _0x16ddd5[_0xce12('0x49')]['id'];}return db['SalesforceConfiguration'][_0xce12('0x47')]({'where':{'id':_0x16ddd5[_0xce12('0x4a')]['id']}})[_0xce12('0x26')](handleEntityNotFound(_0x483b49,null))[_0xce12('0x26')](saveUpdates(_0x16ddd5['body'],null))[_0xce12('0x26')](respondWithResult(_0x483b49,null))[_0xce12('0x43')](handleError(_0x483b49,null));};exports[_0xce12('0x27')]=function(_0x338e54,_0x45b8ec){return db[_0xce12('0x2d')][_0xce12('0x47')]({'where':{'id':_0x338e54[_0xce12('0x4a')]['id']}})['then'](handleEntityNotFound(_0x45b8ec,null))[_0xce12('0x26')](removeEntity(_0x45b8ec,null))[_0xce12('0x43')](handleError(_0x45b8ec,null));};exports[_0xce12('0x4b')]=function(_0x327ce2,_0x3e1c97,_0xe6c32c){var _0x34cd16={};var _0x323975={};var _0x2a69a0;var _0x365eb6;return db[_0xce12('0x2d')][_0xce12('0x4c')]({'where':{'id':_0x327ce2[_0xce12('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e1c97,null))['then'](function(_0x55dee7){if(_0x55dee7){_0x2a69a0=_0x55dee7;_0x323975[_0xce12('0x31')]=_[_0xce12('0x33')](db[_0xce12('0x4d')]['rawAttributes']);_0x323975[_0xce12('0x32')]=_['keys'](_0x327ce2[_0xce12('0x32')]);_0x323975[_0xce12('0x3c')]=_[_0xce12('0x35')](_0x323975[_0xce12('0x31')],_0x323975[_0xce12('0x32')]);_0x34cd16[_0xce12('0x34')]=_['intersection'](_0x323975[_0xce12('0x31')],qs[_0xce12('0x36')](_0x327ce2[_0xce12('0x32')][_0xce12('0x36')]));_0x34cd16['attributes']=_0x34cd16['attributes']['length']?_0x34cd16[_0xce12('0x34')]:_0x323975['model'];_0x34cd16[_0xce12('0x4e')]=qs[_0xce12('0x3a')](_0x327ce2['query'][_0xce12('0x3a')]);_0x34cd16[_0xce12('0x3b')]=qs[_0xce12('0x3c')](_[_0xce12('0x4f')](_0x327ce2[_0xce12('0x32')],_0x323975[_0xce12('0x3c')]));if(_0x327ce2[_0xce12('0x32')][_0xce12('0x3d')]){_0x34cd16[_0xce12('0x3b')]=_[_0xce12('0x3e')](_0x34cd16[_0xce12('0x3b')],{'$or':_[_0xce12('0x2c')](_0x34cd16[_0xce12('0x34')],function(_0x4c6bc5){var _0x501128={};_0x501128[_0x4c6bc5]={'$like':'%'+_0x327ce2['query']['filter']+'%'};return _0x501128;})});}_0x34cd16=_['merge']({},_0x34cd16,_0x327ce2['options']);return _0x2a69a0[_0xce12('0x4b')](_0x34cd16);}})[_0xce12('0x26')](function(_0x5bd824){if(_0x5bd824){_0x365eb6=_0x5bd824['length'];if(!_0x327ce2['query']['hasOwnProperty'](_0xce12('0x39'))){_0x34cd16[_0xce12('0x1d')]=qs['limit'](_0x327ce2[_0xce12('0x32')][_0xce12('0x1d')]);_0x34cd16[_0xce12('0x1c')]=qs[_0xce12('0x1c')](_0x327ce2['query'][_0xce12('0x1c')]);}return _0x2a69a0[_0xce12('0x4b')](_0x34cd16);}})['then'](function(_0x1542c1){if(_0x1542c1){return _0x1542c1?{'count':_0x365eb6,'rows':_0x1542c1}:null;}})[_0xce12('0x26')](respondWithResult(_0x3e1c97,null))[_0xce12('0x43')](handleError(_0x3e1c97,null));};exports[_0xce12('0x50')]=function(_0x1a3e46,_0x594ef9,_0x1c6a05){var _0x50e384={};var _0xe959ef={};var _0xa56d30;var _0x375f34;return db[_0xce12('0x2d')]['findOne']({'where':{'id':_0x1a3e46[_0xce12('0x4a')]['id']}})[_0xce12('0x26')](handleEntityNotFound(_0x594ef9,null))[_0xce12('0x26')](function(_0xab2e2a){if(_0xab2e2a){_0xa56d30=_0xab2e2a;_0xe959ef[_0xce12('0x31')]=_[_0xce12('0x33')](db['SalesforceField'][_0xce12('0x45')]);_0xe959ef[_0xce12('0x32')]=_['keys'](_0x1a3e46[_0xce12('0x32')]);_0xe959ef[_0xce12('0x3c')]=_[_0xce12('0x35')](_0xe959ef[_0xce12('0x31')],_0xe959ef[_0xce12('0x32')]);_0x50e384[_0xce12('0x34')]=_[_0xce12('0x35')](_0xe959ef['model'],qs[_0xce12('0x36')](_0x1a3e46['query'][_0xce12('0x36')]));_0x50e384[_0xce12('0x34')]=_0x50e384[_0xce12('0x34')][_0xce12('0x37')]?_0x50e384[_0xce12('0x34')]:_0xe959ef[_0xce12('0x31')];_0x50e384[_0xce12('0x4e')]=qs['sort'](_0x1a3e46['query']['sort']);_0x50e384[_0xce12('0x3b')]=qs[_0xce12('0x3c')](_[_0xce12('0x4f')](_0x1a3e46['query'],_0xe959ef[_0xce12('0x3c')]));if(_0x1a3e46[_0xce12('0x32')][_0xce12('0x3d')]){_0x50e384[_0xce12('0x3b')]=_['merge'](_0x50e384[_0xce12('0x3b')],{'$or':_[_0xce12('0x2c')](_0x50e384[_0xce12('0x34')],function(_0x2696eb){var _0x591e20={};_0x591e20[_0x2696eb]={'$like':'%'+_0x1a3e46[_0xce12('0x32')]['filter']+'%'};return _0x591e20;})});}_0x50e384=_[_0xce12('0x3e')]({},_0x50e384,_0x1a3e46['options']);return _0xa56d30[_0xce12('0x50')](_0x50e384);}})[_0xce12('0x26')](function(_0x28d3dd){if(_0x28d3dd){_0x375f34=_0x28d3dd[_0xce12('0x37')];if(!_0x1a3e46[_0xce12('0x32')][_0xce12('0x38')](_0xce12('0x39'))){_0x50e384[_0xce12('0x1d')]=qs[_0xce12('0x1d')](_0x1a3e46[_0xce12('0x32')][_0xce12('0x1d')]);_0x50e384[_0xce12('0x1c')]=qs['offset'](_0x1a3e46[_0xce12('0x32')]['offset']);}return _0xa56d30['getSubjects'](_0x50e384);}})[_0xce12('0x26')](function(_0x4d523c){if(_0x4d523c){return _0x4d523c?{'count':_0x375f34,'rows':_0x4d523c}:null;}})[_0xce12('0x26')](respondWithResult(_0x594ef9,null))['catch'](handleError(_0x594ef9,null));};exports[_0xce12('0x51')]=function(_0x528963,_0x401ad7,_0x38c58c){var _0x5afbd3={};var _0x3dec1a={};var _0xd8a9e4;var _0x313b9a;return db[_0xce12('0x2d')][_0xce12('0x4c')]({'where':{'id':_0x528963[_0xce12('0x4a')]['id']}})[_0xce12('0x26')](handleEntityNotFound(_0x401ad7,null))[_0xce12('0x26')](function(_0xd40b90){if(_0xd40b90){_0xd8a9e4=_0xd40b90;_0x3dec1a[_0xce12('0x31')]=_['keys'](db[_0xce12('0x4d')][_0xce12('0x45')]);_0x3dec1a[_0xce12('0x32')]=_[_0xce12('0x33')](_0x528963[_0xce12('0x32')]);_0x3dec1a['filters']=_[_0xce12('0x35')](_0x3dec1a['model'],_0x3dec1a[_0xce12('0x32')]);_0x5afbd3[_0xce12('0x34')]=_[_0xce12('0x35')](_0x3dec1a['model'],qs['fields'](_0x528963[_0xce12('0x32')][_0xce12('0x36')]));_0x5afbd3[_0xce12('0x34')]=_0x5afbd3[_0xce12('0x34')][_0xce12('0x37')]?_0x5afbd3[_0xce12('0x34')]:_0x3dec1a[_0xce12('0x31')];_0x5afbd3[_0xce12('0x4e')]=qs[_0xce12('0x3a')](_0x528963[_0xce12('0x32')][_0xce12('0x3a')]);_0x5afbd3[_0xce12('0x3b')]=qs[_0xce12('0x3c')](_[_0xce12('0x4f')](_0x528963['query'],_0x3dec1a[_0xce12('0x3c')]));if(_0x528963[_0xce12('0x32')][_0xce12('0x3d')]){_0x5afbd3[_0xce12('0x3b')]=_[_0xce12('0x3e')](_0x5afbd3[_0xce12('0x3b')],{'$or':_[_0xce12('0x2c')](_0x5afbd3[_0xce12('0x34')],function(_0x13bc85){var _0x227439={};_0x227439[_0x13bc85]={'$like':'%'+_0x528963[_0xce12('0x32')]['filter']+'%'};return _0x227439;})});}_0x5afbd3=_[_0xce12('0x3e')]({},_0x5afbd3,_0x528963[_0xce12('0x40')]);return _0xd8a9e4[_0xce12('0x51')](_0x5afbd3);}})[_0xce12('0x26')](function(_0x3ec44f){if(_0x3ec44f){_0x313b9a=_0x3ec44f['length'];if(!_0x528963[_0xce12('0x32')][_0xce12('0x38')](_0xce12('0x39'))){_0x5afbd3['limit']=qs['limit'](_0x528963[_0xce12('0x32')][_0xce12('0x1d')]);_0x5afbd3[_0xce12('0x1c')]=qs[_0xce12('0x1c')](_0x528963[_0xce12('0x32')][_0xce12('0x1c')]);}return _0xd8a9e4['getDescriptions'](_0x5afbd3);}})[_0xce12('0x26')](function(_0x442477){if(_0x442477){return _0x442477?{'count':_0x313b9a,'rows':_0x442477}:null;}})[_0xce12('0x26')](respondWithResult(_0x401ad7,null))['catch'](handleError(_0x401ad7,null));}; \ No newline at end of file diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js new file mode 100644 index 0000000..9b4dee9 --- /dev/null +++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4232=['int_salesforce_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SalesforceConfiguration'];(function(_0x123cbd,_0x4086b8){var _0x1b7765=function(_0xd9f45c){while(--_0xd9f45c){_0x123cbd['push'](_0x123cbd['shift']());}};_0x1b7765(++_0x4086b8);}(_0x4232,0x15f));var _0x2423=function(_0x3428cd,_0x2e977d){_0x3428cd=_0x3428cd-0x0;var _0x279bde=_0x4232[_0x3428cd];return _0x279bde;};'use strict';var _=require(_0x2423('0x0'));var util=require(_0x2423('0x1'));var logger=require(_0x2423('0x2'))(_0x2423('0x3'));var moment=require(_0x2423('0x4'));var BPromise=require(_0x2423('0x5'));var rp=require(_0x2423('0x6'));var fs=require('fs');var path=require(_0x2423('0x7'));var rimraf=require(_0x2423('0x8'));var config=require(_0x2423('0x9'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0x2423('0xa')]=function(_0x2c4523,_0x3b95f3){return _0x2c4523[_0x2423('0xb')](_0x2423('0xc'),attributes,{'tableName':_0x2423('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js new file mode 100644 index 0000000..896f0ed --- /dev/null +++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe4dc=['SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug'];(function(_0x2079f9,_0x5ee952){var _0x2bb75a=function(_0x2199b2){while(--_0x2199b2){_0x2079f9['push'](_0x2079f9['shift']());}};_0x2bb75a(++_0x5ee952);}(_0xe4dc,0x167));var _0xce4d=function(_0x5a8e42,_0x1bdf90){_0x5a8e42=_0x5a8e42-0x0;var _0x3939ef=_0xe4dc[_0x5a8e42];return _0x3939ef;};'use strict';var _=require(_0xce4d('0x0'));var util=require(_0xce4d('0x1'));var moment=require(_0xce4d('0x2'));var BPromise=require('bluebird');var rs=require(_0xce4d('0x3'));var fs=require('fs');var Redis=require(_0xce4d('0x4'));var db=require(_0xce4d('0x5'))['db'];var utils=require(_0xce4d('0x6'));var logger=require(_0xce4d('0x7'))('rpc');var config=require(_0xce4d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xce4d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47363f,_0xde308d,_0x3b8504){return new BPromise(function(_0x464019,_0x168c7f){return client[_0xce4d('0xa')](_0x47363f,_0x3b8504)[_0xce4d('0xb')](function(_0x4df6d5){logger[_0xce4d('0xc')](_0xce4d('0xd'),_0xde308d,'request\x20sent');logger[_0xce4d('0xe')](_0xce4d('0xf'),_0xde308d,_0xce4d('0x10'),JSON[_0xce4d('0x11')](_0x4df6d5));if(_0x4df6d5['error']){if(_0x4df6d5[_0xce4d('0x12')][_0xce4d('0x13')]===0x1f4){logger[_0xce4d('0x12')](_0xce4d('0xd'),_0xde308d,_0x4df6d5[_0xce4d('0x12')]['message']);return _0x168c7f(_0x4df6d5[_0xce4d('0x12')][_0xce4d('0x14')]);}logger['error'](_0xce4d('0xd'),_0xde308d,_0x4df6d5['error'][_0xce4d('0x14')]);return _0x464019(_0x4df6d5[_0xce4d('0x12')][_0xce4d('0x14')]);}else{logger[_0xce4d('0xc')]('SalesforceConfiguration,\x20%s,\x20%s',_0xde308d,'request\x20sent');_0x464019(_0x4df6d5['result'][_0xce4d('0x14')]);}})[_0xce4d('0x15')](function(_0x3a94f8){logger['error'](_0xce4d('0xd'),_0xde308d,_0x3a94f8);_0x168c7f(_0x3a94f8);});});} \ No newline at end of file diff --git a/server/api/intSalesforceField/index.js b/server/api/intSalesforceField/index.js new file mode 100644 index 0000000..74a88f2 --- /dev/null +++ b/server/api/intSalesforceField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd634=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','index','/:id','isAuthenticated','show','create','put','update','destroy'];(function(_0x5c85ef,_0x151652){var _0x55675a=function(_0x449ad4){while(--_0x449ad4){_0x5c85ef['push'](_0x5c85ef['shift']());}};_0x55675a(++_0x151652);}(_0xd634,0x7f));var _0x4d63=function(_0x3b594b,_0x5835c3){_0x3b594b=_0x3b594b-0x0;var _0x1ea5f8=_0xd634[_0x3b594b];return _0x1ea5f8;};'use strict';var multer=require(_0x4d63('0x0'));var util=require(_0x4d63('0x1'));var path=require(_0x4d63('0x2'));var timeout=require(_0x4d63('0x3'));var express=require(_0x4d63('0x4'));var router=express[_0x4d63('0x5')]();var fs_extra=require(_0x4d63('0x6'));var auth=require(_0x4d63('0x7'));var interaction=require(_0x4d63('0x8'));var config=require(_0x4d63('0x9'));var controller=require(_0x4d63('0xa'));router[_0x4d63('0xb')]('/',auth['isAuthenticated'](),controller[_0x4d63('0xc')]);router[_0x4d63('0xb')](_0x4d63('0xd'),auth[_0x4d63('0xe')](),controller[_0x4d63('0xf')]);router['post']('/',auth[_0x4d63('0xe')](),controller[_0x4d63('0x10')]);router[_0x4d63('0x11')](_0x4d63('0xd'),auth['isAuthenticated'](),controller[_0x4d63('0x12')]);router['delete']('/:id',auth[_0x4d63('0xe')](),controller[_0x4d63('0x13')]);module[_0x4d63('0x14')]=router; \ No newline at end of file diff --git a/server/api/intSalesforceField/intSalesforceField.attributes.js b/server/api/intSalesforceField/intSalesforceField.attributes.js new file mode 100644 index 0000000..9741938 --- /dev/null +++ b/server/api/intSalesforceField/intSalesforceField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xad89=['keyValue','picklist','string','STRING','ENUM','variable','customVariable'];(function(_0x6dc86a,_0x2aad2f){var _0x5cb20e=function(_0x46c55f){while(--_0x46c55f){_0x6dc86a['push'](_0x6dc86a['shift']());}};_0x5cb20e(++_0x2aad2f);}(_0xad89,0x11c));var _0x9ad8=function(_0x1ee9a1,_0x5f1434){_0x1ee9a1=_0x1ee9a1-0x0;var _0x21270f=_0xad89[_0x1ee9a1];return _0x21270f;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x9ad8('0x0')]('string',_0x9ad8('0x1'),_0x9ad8('0x2'),_0x9ad8('0x3'),_0x9ad8('0x4')),'defaultValue':_0x9ad8('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x9ad8('0x6')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x9ad8('0x2'))},'keyContent':{'type':Sequelize[_0x9ad8('0x6')]},'idField':{'type':Sequelize[_0x9ad8('0x6')]},'variableName':{'type':Sequelize[_0x9ad8('0x6')]}}; \ No newline at end of file diff --git a/server/api/intSalesforceField/intSalesforceField.controller.js b/server/api/intSalesforceField/intSalesforceField.controller.js new file mode 100644 index 0000000..7b99dcc --- /dev/null +++ b/server/api/intSalesforceField/intSalesforceField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e1a=['rows','show','include','find','catch','create','body','params','eml-format','zip-dir','fast-json-patch','moment','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','index','map','SalesforceField','rawAttributes','type','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll'];(function(_0x515ef2,_0x19dfa0){var _0x564aa7=function(_0x1b7fa9){while(--_0x1b7fa9){_0x515ef2['push'](_0x515ef2['shift']());}};_0x564aa7(++_0x19dfa0);}(_0x4e1a,0x1cf));var _0xa4e1=function(_0x427b84,_0xcd6a51){_0x427b84=_0x427b84-0x0;var _0x2b8116=_0x4e1a[_0x427b84];return _0x2b8116;};'use strict';var emlformat=require(_0xa4e1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa4e1('0x1'));var jsonpatch=require(_0xa4e1('0x2'));var rp=require('request-promise');var moment=require(_0xa4e1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa4e1('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa4e1('0x5'));var _=require(_0xa4e1('0x6'));var squel=require(_0xa4e1('0x7'));var crypto=require(_0xa4e1('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xa4e1('0x9'));var toCsv=require(_0xa4e1('0x4'));var querystring=require(_0xa4e1('0xa'));var Papa=require(_0xa4e1('0xb'));var Redis=require(_0xa4e1('0xc'));var authService=require(_0xa4e1('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa4e1('0xe'));var logger=require(_0xa4e1('0xf'))('api');var utils=require('../../config/utils');var config=require(_0xa4e1('0x10'));var licenseUtil=require(_0xa4e1('0x11'));var db=require(_0xa4e1('0x12'))['db'];function respondWithStatusCode(_0x4e147d,_0x311748){_0x311748=_0x311748||0xcc;return function(_0x48cc29){if(_0x48cc29){return _0x4e147d['sendStatus'](_0x311748);}return _0x4e147d[_0xa4e1('0x13')](_0x311748)[_0xa4e1('0x14')]();};}function respondWithResult(_0x5a6d24,_0x41b1fa){_0x41b1fa=_0x41b1fa||0xc8;return function(_0x583fa6){if(_0x583fa6){return _0x5a6d24['status'](_0x41b1fa)[_0xa4e1('0x15')](_0x583fa6);}};}function respondWithFilteredResult(_0x4cf6b7,_0x3d5fd9){return function(_0x5f1c9b){if(_0x5f1c9b){var _0x7e01dd=typeof _0x3d5fd9[_0xa4e1('0x16')]==='undefined'&&typeof _0x3d5fd9['limit']===_0xa4e1('0x17');var _0x41c0da=_0x5f1c9b[_0xa4e1('0x18')];var _0x2c7f28=_0x7e01dd?0x0:_0x3d5fd9[_0xa4e1('0x16')];var _0x3b5bc3=_0x7e01dd?_0x5f1c9b[_0xa4e1('0x18')]:_0x3d5fd9[_0xa4e1('0x16')]+_0x3d5fd9[_0xa4e1('0x19')];var _0x3c0d8a;if(_0x3b5bc3>=_0x41c0da){_0x3b5bc3=_0x41c0da;_0x3c0d8a=0xc8;}else{_0x3c0d8a=0xce;}_0x4cf6b7['status'](_0x3c0d8a);return _0x4cf6b7['set'](_0xa4e1('0x1a'),_0x2c7f28+'-'+_0x3b5bc3+'/'+_0x41c0da)[_0xa4e1('0x15')](_0x5f1c9b);}return null;};}function patchUpdates(_0x5f2146){return function(_0x42be0a){try{jsonpatch['apply'](_0x42be0a,_0x5f2146,!![]);}catch(_0x5bc178){return BPromise['reject'](_0x5bc178);}return _0x42be0a['save']();};}function saveUpdates(_0x2824ab,_0x50ed06){return function(_0x4cd1f3){if(_0x4cd1f3){return _0x4cd1f3[_0xa4e1('0x1b')](_0x2824ab)[_0xa4e1('0x1c')](function(_0x8ef957){return _0x8ef957;});}return null;};}function removeEntity(_0x3cf19d,_0x694866){return function(_0x518d42){if(_0x518d42){return _0x518d42[_0xa4e1('0x1d')]()['then'](function(){_0x3cf19d[_0xa4e1('0x13')](0xcc)[_0xa4e1('0x14')]();});}};}function handleEntityNotFound(_0x38ea67,_0xc5298){return function(_0x30dd93){if(!_0x30dd93){_0x38ea67[_0xa4e1('0x1e')](0x194);}return _0x30dd93;};}function handleError(_0x5340d4,_0x5e3f8e){_0x5e3f8e=_0x5e3f8e||0x1f4;return function(_0x45c28d){logger[_0xa4e1('0x1f')](_0x45c28d[_0xa4e1('0x20')]);if(_0x45c28d[_0xa4e1('0x21')]){delete _0x45c28d[_0xa4e1('0x21')];}_0x5340d4[_0xa4e1('0x13')](_0x5e3f8e)[_0xa4e1('0x22')](_0x45c28d);};}exports[_0xa4e1('0x23')]=function(_0x4cc8cc,_0x47d7f3){var _0x284942={},_0x14dafd={},_0x213b20={'count':0x0,'rows':[]};var _0x4e72bc=_[_0xa4e1('0x24')](db[_0xa4e1('0x25')][_0xa4e1('0x26')],function(_0x486105){return{'name':_0x486105['fieldName'],'type':_0x486105[_0xa4e1('0x27')]['key']};});_0x14dafd['model']=_[_0xa4e1('0x24')](_0x4e72bc,'name');_0x14dafd[_0xa4e1('0x28')]=_[_0xa4e1('0x29')](_0x4cc8cc[_0xa4e1('0x28')]);_0x14dafd[_0xa4e1('0x2a')]=_[_0xa4e1('0x2b')](_0x14dafd[_0xa4e1('0x2c')],_0x14dafd[_0xa4e1('0x28')]);_0x284942['attributes']=_['intersection'](_0x14dafd['model'],qs[_0xa4e1('0x2d')](_0x4cc8cc[_0xa4e1('0x28')][_0xa4e1('0x2d')]));_0x284942[_0xa4e1('0x2e')]=_0x284942['attributes'][_0xa4e1('0x2f')]?_0x284942[_0xa4e1('0x2e')]:_0x14dafd['model'];if(!_0x4cc8cc['query']['hasOwnProperty'](_0xa4e1('0x30'))){_0x284942[_0xa4e1('0x19')]=qs[_0xa4e1('0x19')](_0x4cc8cc[_0xa4e1('0x28')]['limit']);_0x284942['offset']=qs['offset'](_0x4cc8cc[_0xa4e1('0x28')][_0xa4e1('0x16')]);}_0x284942[_0xa4e1('0x31')]=qs['sort'](_0x4cc8cc[_0xa4e1('0x28')][_0xa4e1('0x32')]);_0x284942[_0xa4e1('0x33')]=qs[_0xa4e1('0x2a')](_['pick'](_0x4cc8cc[_0xa4e1('0x28')],_0x14dafd[_0xa4e1('0x2a')]),_0x4e72bc);if(_0x4cc8cc[_0xa4e1('0x28')][_0xa4e1('0x34')]){_0x284942[_0xa4e1('0x33')]=_[_0xa4e1('0x35')](_0x284942[_0xa4e1('0x33')],{'$or':_[_0xa4e1('0x24')](_0x4e72bc,function(_0x585074){if(_0x585074[_0xa4e1('0x27')]!==_0xa4e1('0x36')){var _0x2d0831={};_0x2d0831[_0x585074['name']]={'$like':'%'+_0x4cc8cc[_0xa4e1('0x28')][_0xa4e1('0x34')]+'%'};return _0x2d0831;}})});}_0x284942=_[_0xa4e1('0x35')]({},_0x284942,_0x4cc8cc[_0xa4e1('0x37')]);var _0x3ae20e={'where':_0x284942['where']};return db[_0xa4e1('0x25')][_0xa4e1('0x18')](_0x3ae20e)['then'](function(_0x590a15){_0x213b20[_0xa4e1('0x18')]=_0x590a15;if(_0x4cc8cc[_0xa4e1('0x28')][_0xa4e1('0x38')]){_0x284942['include']=[{'all':!![]}];}return db[_0xa4e1('0x25')]['findAll'](_0x284942);})[_0xa4e1('0x1c')](function(_0x5ea04f){_0x213b20[_0xa4e1('0x39')]=_0x5ea04f;return _0x213b20;})[_0xa4e1('0x1c')](respondWithFilteredResult(_0x47d7f3,_0x284942))['catch'](handleError(_0x47d7f3,null));};exports[_0xa4e1('0x3a')]=function(_0x442919,_0x43d324){var _0xf4336b={'raw':!![],'where':{'id':_0x442919['params']['id']}},_0x5a2a8e={};_0x5a2a8e[_0xa4e1('0x2c')]=_[_0xa4e1('0x29')](db[_0xa4e1('0x25')][_0xa4e1('0x26')]);_0x5a2a8e['query']=_[_0xa4e1('0x29')](_0x442919['query']);_0x5a2a8e[_0xa4e1('0x2a')]=_[_0xa4e1('0x2b')](_0x5a2a8e['model'],_0x5a2a8e[_0xa4e1('0x28')]);_0xf4336b[_0xa4e1('0x2e')]=_[_0xa4e1('0x2b')](_0x5a2a8e[_0xa4e1('0x2c')],qs[_0xa4e1('0x2d')](_0x442919[_0xa4e1('0x28')][_0xa4e1('0x2d')]));_0xf4336b[_0xa4e1('0x2e')]=_0xf4336b[_0xa4e1('0x2e')][_0xa4e1('0x2f')]?_0xf4336b[_0xa4e1('0x2e')]:_0x5a2a8e['model'];if(_0x442919[_0xa4e1('0x28')][_0xa4e1('0x38')]){_0xf4336b[_0xa4e1('0x3b')]=[{'all':!![]}];}_0xf4336b=_['merge']({},_0xf4336b,_0x442919[_0xa4e1('0x37')]);return db[_0xa4e1('0x25')][_0xa4e1('0x3c')](_0xf4336b)[_0xa4e1('0x1c')](handleEntityNotFound(_0x43d324,null))['then'](respondWithResult(_0x43d324,null))[_0xa4e1('0x3d')](handleError(_0x43d324,null));};exports['create']=function(_0x1a9090,_0x4963d9){return db[_0xa4e1('0x25')][_0xa4e1('0x3e')](_0x1a9090['body'],{})['then'](respondWithResult(_0x4963d9,0xc9))[_0xa4e1('0x3d')](handleError(_0x4963d9,null));};exports[_0xa4e1('0x1b')]=function(_0x12757d,_0x4c5cc2){if(_0x12757d[_0xa4e1('0x3f')]['id']){delete _0x12757d[_0xa4e1('0x3f')]['id'];}return db[_0xa4e1('0x25')][_0xa4e1('0x3c')]({'where':{'id':_0x12757d[_0xa4e1('0x40')]['id']}})[_0xa4e1('0x1c')](handleEntityNotFound(_0x4c5cc2,null))['then'](saveUpdates(_0x12757d['body'],null))['then'](respondWithResult(_0x4c5cc2,null))[_0xa4e1('0x3d')](handleError(_0x4c5cc2,null));};exports['destroy']=function(_0x301533,_0x27b2c9){return db[_0xa4e1('0x25')][_0xa4e1('0x3c')]({'where':{'id':_0x301533[_0xa4e1('0x40')]['id']}})[_0xa4e1('0x1c')](handleEntityNotFound(_0x27b2c9,null))[_0xa4e1('0x1c')](removeEntity(_0x27b2c9,null))[_0xa4e1('0x3d')](handleError(_0x27b2c9,null));}; \ No newline at end of file diff --git a/server/api/intSalesforceField/intSalesforceField.model.js b/server/api/intSalesforceField/intSalesforceField.model.js new file mode 100644 index 0000000..2f9aff7 --- /dev/null +++ b/server/api/intSalesforceField/intSalesforceField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa305=['../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId','util','api','moment','request-promise','path','rimraf'];(function(_0xe2c9bc,_0x11817c){var _0x593d41=function(_0x5ac269){while(--_0x5ac269){_0xe2c9bc['push'](_0xe2c9bc['shift']());}};_0x593d41(++_0x11817c);}(_0xa305,0x72));var _0x5a30=function(_0x2acdd5,_0x38cb93){_0x2acdd5=_0x2acdd5-0x0;var _0x279a99=_0xa305[_0x2acdd5];return _0x279a99;};'use strict';var _=require('lodash');var util=require(_0x5a30('0x0'));var logger=require('../../config/logger')(_0x5a30('0x1'));var moment=require(_0x5a30('0x2'));var BPromise=require('bluebird');var rp=require(_0x5a30('0x3'));var fs=require('fs');var path=require(_0x5a30('0x4'));var rimraf=require(_0x5a30('0x5'));var config=require(_0x5a30('0x6'));var attributes=require(_0x5a30('0x7'));module[_0x5a30('0x8')]=function(_0x7d7ff5,_0x3facc5){return _0x7d7ff5[_0x5a30('0x9')](_0x5a30('0xa'),attributes,{'tableName':_0x5a30('0xb'),'paranoid':![],'indexes':[{'name':_0x5a30('0xc'),'fields':[_0x5a30('0xd'),_0x5a30('0xe')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intSalesforceField/intSalesforceField.rpc.js b/server/api/intSalesforceField/intSalesforceField.rpc.js new file mode 100644 index 0000000..0804109 --- /dev/null +++ b/server/api/intSalesforceField/intSalesforceField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf590=['result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x27f7a0,_0x45b025){var _0x3f0496=function(_0x581f7f){while(--_0x581f7f){_0x27f7a0['push'](_0x27f7a0['shift']());}};_0x3f0496(++_0x45b025);}(_0xf590,0x120));var _0x0f59=function(_0xff319d,_0x1dfdc0){_0xff319d=_0xff319d-0x0;var _0x4839c7=_0xf590[_0xff319d];return _0x4839c7;};'use strict';var _=require('lodash');var util=require(_0x0f59('0x0'));var moment=require(_0x0f59('0x1'));var BPromise=require(_0x0f59('0x2'));var rs=require(_0x0f59('0x3'));var fs=require('fs');var Redis=require(_0x0f59('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f59('0x5'));var logger=require('../../config/logger')(_0x0f59('0x6'));var config=require(_0x0f59('0x7'));var jayson=require(_0x0f59('0x8'));var client=jayson[_0x0f59('0x9')][_0x0f59('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51943c,_0x4d4fd0,_0x432a91){return new BPromise(function(_0xa5e9ba,_0x29d1eb){return client[_0x0f59('0xb')](_0x51943c,_0x432a91)['then'](function(_0x4135ba){logger[_0x0f59('0xc')](_0x0f59('0xd'),_0x4d4fd0,_0x0f59('0xe'));logger[_0x0f59('0xf')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x4d4fd0,_0x0f59('0xe'),JSON[_0x0f59('0x10')](_0x4135ba));if(_0x4135ba[_0x0f59('0x11')]){if(_0x4135ba[_0x0f59('0x11')][_0x0f59('0x12')]===0x1f4){logger[_0x0f59('0x11')]('SalesforceField,\x20%s,\x20%s',_0x4d4fd0,_0x4135ba['error'][_0x0f59('0x13')]);return _0x29d1eb(_0x4135ba['error']['message']);}logger['error']('SalesforceField,\x20%s,\x20%s',_0x4d4fd0,_0x4135ba['error']['message']);return _0xa5e9ba(_0x4135ba['error'][_0x0f59('0x13')]);}else{logger[_0x0f59('0xc')](_0x0f59('0xd'),_0x4d4fd0,'request\x20sent');_0xa5e9ba(_0x4135ba[_0x0f59('0x14')]['message']);}})[_0x0f59('0x15')](function(_0x2e0b83){logger['error'](_0x0f59('0xd'),_0x4d4fd0,_0x2e0b83);_0x29d1eb(_0x2e0b83);});});} \ No newline at end of file diff --git a/server/api/intServicenowAccount/index.js b/server/api/intServicenowAccount/index.js new file mode 100644 index 0000000..9a09bfa --- /dev/null +++ b/server/api/intServicenowAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3b59=['/:id/configurations','getConfigurations','getFields','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','/:id'];(function(_0x31c478,_0x44056c){var _0x2a270a=function(_0x5bb5b6){while(--_0x5bb5b6){_0x31c478['push'](_0x31c478['shift']());}};_0x2a270a(++_0x44056c);}(_0x3b59,0x9c));var _0x93b5=function(_0x5b5b5f,_0x1d88f8){_0x5b5b5f=_0x5b5b5f-0x0;var _0x380741=_0x3b59[_0x5b5b5f];return _0x380741;};'use strict';var multer=require(_0x93b5('0x0'));var util=require(_0x93b5('0x1'));var path=require(_0x93b5('0x2'));var timeout=require(_0x93b5('0x3'));var express=require(_0x93b5('0x4'));var router=express[_0x93b5('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x93b5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x93b5('0x7'));var controller=require(_0x93b5('0x8'));router[_0x93b5('0x9')]('/',auth[_0x93b5('0xa')](),controller['index']);router[_0x93b5('0x9')](_0x93b5('0xb'),auth[_0x93b5('0xa')](),controller['show']);router[_0x93b5('0x9')](_0x93b5('0xc'),auth[_0x93b5('0xa')](),controller[_0x93b5('0xd')]);router[_0x93b5('0x9')]('/:id/fields',auth[_0x93b5('0xa')](),controller[_0x93b5('0xe')]);router[_0x93b5('0xf')]('/',auth[_0x93b5('0xa')](),controller[_0x93b5('0x10')]);router['post'](_0x93b5('0xc'),auth[_0x93b5('0xa')](),controller['addConfiguration']);router[_0x93b5('0x11')](_0x93b5('0xb'),auth[_0x93b5('0xa')](),controller[_0x93b5('0x12')]);router[_0x93b5('0x13')]('/:id',auth[_0x93b5('0xa')](),controller[_0x93b5('0x14')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/intServicenowAccount/intServicenowAccount.attributes.js b/server/api/intServicenowAccount/intServicenowAccount.attributes.js new file mode 100644 index 0000000..f43ac13 --- /dev/null +++ b/server/api/intServicenowAccount/intServicenowAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa426=['remoteUri','sequelize','STRING','username'];(function(_0x582bd7,_0xc3c370){var _0x188b98=function(_0x3a861a){while(--_0x3a861a){_0x582bd7['push'](_0x582bd7['shift']());}};_0x188b98(++_0xc3c370);}(_0xa426,0x121));var _0x6a42=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xa426[_0x35885a];return _0xe86249;};'use strict';var Sequelize=require(_0x6a42('0x0'));module['exports']={'name':{'type':Sequelize[_0x6a42('0x1')]},'description':{'type':Sequelize[_0x6a42('0x1')]},'username':{'type':Sequelize[_0x6a42('0x1')],'unique':_0x6a42('0x2')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x6a42('0x1')]},'remoteUri':{'type':Sequelize[_0x6a42('0x1')],'unique':_0x6a42('0x3')},'serverUrl':{'type':Sequelize[_0x6a42('0x1')],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/intServicenowAccount/intServicenowAccount.controller.js b/server/api/intServicenowAccount/intServicenowAccount.controller.js new file mode 100644 index 0000000..e55b793 --- /dev/null +++ b/server/api/intServicenowAccount/intServicenowAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x315e=['sla_due','approval','comments_and_work_notes','sys_mod_count','reopen_count','sys_tags','escalation','correlation_id','location','username','email','remoteUri','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','password','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','internalType','label','push','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','all','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','False','false','GET','sys_choice?sysparm_query=name=incident^element=','inactive','value','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','squel','jsforce','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','sendStatus','error','stack','name','send','index','ServicenowAccount','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','where','filter','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','destroy','getConfigurations','ServicenowConfiguration','length','order','pick','nolimit','findOne','Subjects','getSubjects','channel','getDescriptions','ServicenowField','getFields','knowledge','subcategory','close_code','notify','incident_state','severity','category','parent','caused_by','upon_reject','sys_updated_on','hold_reason','approval_history','number','resolved_by','user_input','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','business_stc','additional_assignee_list','description','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','reopened_by','urgency','problem_id','reassignment_count','activity_due','assigned_to'];(function(_0x305016,_0x22a150){var _0x296b99=function(_0x3fa9b8){while(--_0x3fa9b8){_0x305016['push'](_0x305016['shift']());}};_0x296b99(++_0x22a150);}(_0x315e,0xe1));var _0xe315=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x315e[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe315('0x0'));var zipdir=require(_0xe315('0x1'));var jsonpatch=require(_0xe315('0x2'));var rp=require(_0xe315('0x3'));var moment=require(_0xe315('0x4'));var BPromise=require(_0xe315('0x5'));var Mustache=require(_0xe315('0x6'));var util=require(_0xe315('0x7'));var path=require(_0xe315('0x8'));var sox=require(_0xe315('0x9'));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(_0xe315('0xa'));var crypto=require('crypto');var jsforce=require(_0xe315('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe315('0xc'));var Papa=require(_0xe315('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe315('0xe'));var logger=require(_0xe315('0xf'))(_0xe315('0x10'));var utils=require(_0xe315('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xe315('0x12'));var db=require(_0xe315('0x13'))['db'];var integrations=require(_0xe315('0x14'));function respondWithStatusCode(_0x41a596,_0x51cfe4){_0x51cfe4=_0x51cfe4||0xcc;return function(_0x5e7021){if(_0x5e7021){return _0x41a596['sendStatus'](_0x51cfe4);}return _0x41a596['status'](_0x51cfe4)[_0xe315('0x15')]();};}function respondWithResult(_0x5050b8,_0x11998a){_0x11998a=_0x11998a||0xc8;return function(_0x3601a5){if(_0x3601a5){return _0x5050b8[_0xe315('0x16')](_0x11998a)[_0xe315('0x17')](_0x3601a5);}};}function respondWithFilteredResult(_0x56daef,_0x3045ec){return function(_0x52cdb6){if(_0x52cdb6){var _0x24634b=typeof _0x3045ec[_0xe315('0x18')]===_0xe315('0x19')&&typeof _0x3045ec[_0xe315('0x1a')]===_0xe315('0x19');var _0x9e9395=_0x52cdb6[_0xe315('0x1b')];var _0x2be5a2=_0x24634b?0x0:_0x3045ec[_0xe315('0x18')];var _0x156d37=_0x24634b?_0x52cdb6[_0xe315('0x1b')]:_0x3045ec[_0xe315('0x18')]+_0x3045ec[_0xe315('0x1a')];var _0x5e1888;if(_0x156d37>=_0x9e9395){_0x156d37=_0x9e9395;_0x5e1888=0xc8;}else{_0x5e1888=0xce;}_0x56daef[_0xe315('0x16')](_0x5e1888);return _0x56daef[_0xe315('0x1c')](_0xe315('0x1d'),_0x2be5a2+'-'+_0x156d37+'/'+_0x9e9395)[_0xe315('0x17')](_0x52cdb6);}return null;};}function patchUpdates(_0x4ef555){return function(_0x52946f){try{jsonpatch[_0xe315('0x1e')](_0x52946f,_0x4ef555,!![]);}catch(_0x5625e7){return BPromise['reject'](_0x5625e7);}return _0x52946f[_0xe315('0x1f')]();};}function saveUpdates(_0x1b97de,_0x5d8c13){return function(_0x2436ee){if(_0x2436ee){return _0x2436ee[_0xe315('0x20')](_0x1b97de)[_0xe315('0x21')](function(_0x1ed910){return _0x1ed910;});}return null;};}function removeEntity(_0x476290,_0x335897){return function(_0x5bacc3){if(_0x5bacc3){return _0x5bacc3['destroy']()[_0xe315('0x21')](function(){_0x476290['status'](0xcc)[_0xe315('0x15')]();});}};}function handleEntityNotFound(_0x4ec6d9,_0x461a93){return function(_0x1d3aa2){if(!_0x1d3aa2){_0x4ec6d9[_0xe315('0x22')](0x194);}return _0x1d3aa2;};}function handleError(_0x2acd3c,_0x64ad3f){_0x64ad3f=_0x64ad3f||0x1f4;return function(_0x32f36c){logger[_0xe315('0x23')](_0x32f36c[_0xe315('0x24')]);if(_0x32f36c[_0xe315('0x25')]){delete _0x32f36c[_0xe315('0x25')];}_0x2acd3c['status'](_0x64ad3f)[_0xe315('0x26')](_0x32f36c);};}exports[_0xe315('0x27')]=function(_0x43e46e,_0x1f2c7b){var _0x2cf72f={},_0x56fbbb={},_0x53003f={'count':0x0,'rows':[]};var _0x596fde=_['map'](db[_0xe315('0x28')][_0xe315('0x29')],function(_0x10fdce){return{'name':_0x10fdce[_0xe315('0x2a')],'type':_0x10fdce[_0xe315('0x2b')][_0xe315('0x2c')]};});_0x56fbbb['model']=_['map'](_0x596fde,'name');_0x56fbbb[_0xe315('0x2d')]=_['keys'](_0x43e46e[_0xe315('0x2d')]);_0x56fbbb[_0xe315('0x2e')]=_[_0xe315('0x2f')](_0x56fbbb[_0xe315('0x30')],_0x56fbbb[_0xe315('0x2d')]);_0x2cf72f[_0xe315('0x31')]=_[_0xe315('0x2f')](_0x56fbbb[_0xe315('0x30')],qs[_0xe315('0x32')](_0x43e46e[_0xe315('0x2d')][_0xe315('0x32')]));_0x2cf72f[_0xe315('0x31')]=_0x2cf72f[_0xe315('0x31')]['length']?_0x2cf72f['attributes']:_0x56fbbb[_0xe315('0x30')];if(!_0x43e46e['query'][_0xe315('0x33')]('nolimit')){_0x2cf72f[_0xe315('0x1a')]=qs['limit'](_0x43e46e[_0xe315('0x2d')][_0xe315('0x1a')]);_0x2cf72f[_0xe315('0x18')]=qs[_0xe315('0x18')](_0x43e46e[_0xe315('0x2d')][_0xe315('0x18')]);}_0x2cf72f['order']=qs[_0xe315('0x34')](_0x43e46e[_0xe315('0x2d')][_0xe315('0x34')]);_0x2cf72f[_0xe315('0x35')]=qs[_0xe315('0x2e')](_['pick'](_0x43e46e[_0xe315('0x2d')],_0x56fbbb[_0xe315('0x2e')]),_0x596fde);if(_0x43e46e['query'][_0xe315('0x36')]){_0x2cf72f['where']=_[_0xe315('0x37')](_0x2cf72f[_0xe315('0x35')],{'$or':_[_0xe315('0x38')](_0x596fde,function(_0x396823){if(_0x396823[_0xe315('0x2b')]!==_0xe315('0x39')){var _0x153937={};_0x153937[_0x396823[_0xe315('0x25')]]={'$like':'%'+_0x43e46e[_0xe315('0x2d')]['filter']+'%'};return _0x153937;}})});}_0x2cf72f=_[_0xe315('0x37')]({},_0x2cf72f,_0x43e46e['options']);var _0x5175b5={'where':_0x2cf72f[_0xe315('0x35')]};return db['ServicenowAccount'][_0xe315('0x1b')](_0x5175b5)[_0xe315('0x21')](function(_0x131d46){_0x53003f['count']=_0x131d46;if(_0x43e46e['query'][_0xe315('0x3a')]){_0x2cf72f[_0xe315('0x3b')]=[{'all':!![]}];}return db[_0xe315('0x28')][_0xe315('0x3c')](_0x2cf72f);})[_0xe315('0x21')](function(_0x31ac29){_0x53003f[_0xe315('0x3d')]=_0x31ac29;return _0x53003f;})[_0xe315('0x21')](respondWithFilteredResult(_0x1f2c7b,_0x2cf72f))[_0xe315('0x3e')](handleError(_0x1f2c7b,null));};exports[_0xe315('0x3f')]=function(_0x135ef1,_0x41112f){var _0x510a0b={'raw':![],'where':{'id':_0x135ef1[_0xe315('0x40')]['id']}},_0x46eca2={};_0x46eca2['model']=_[_0xe315('0x41')](db[_0xe315('0x28')][_0xe315('0x29')]);_0x46eca2[_0xe315('0x2d')]=_[_0xe315('0x41')](_0x135ef1[_0xe315('0x2d')]);_0x46eca2['filters']=_['intersection'](_0x46eca2[_0xe315('0x30')],_0x46eca2[_0xe315('0x2d')]);_0x510a0b[_0xe315('0x31')]=_[_0xe315('0x2f')](_0x46eca2[_0xe315('0x30')],qs[_0xe315('0x32')](_0x135ef1[_0xe315('0x2d')][_0xe315('0x32')]));_0x510a0b[_0xe315('0x31')]=_0x510a0b['attributes']['length']?_0x510a0b[_0xe315('0x31')]:_0x46eca2[_0xe315('0x30')];if(_0x135ef1[_0xe315('0x2d')][_0xe315('0x3a')]){_0x510a0b[_0xe315('0x3b')]=[{'all':!![]}];}_0x510a0b=_[_0xe315('0x37')]({},_0x510a0b,_0x135ef1[_0xe315('0x42')]);return db[_0xe315('0x28')][_0xe315('0x43')](_0x510a0b)['then'](handleEntityNotFound(_0x41112f,null))['then'](respondWithResult(_0x41112f,null))[_0xe315('0x3e')](handleError(_0x41112f,null));};exports[_0xe315('0x44')]=function(_0x30e1d3,_0x100649){return db[_0xe315('0x28')][_0xe315('0x44')](_0x30e1d3['body'],{})[_0xe315('0x21')](respondWithResult(_0x100649,0xc9))[_0xe315('0x3e')](handleError(_0x100649,null));};exports[_0xe315('0x20')]=function(_0x5b26e9,_0x183d7f){if(_0x5b26e9['body']['id']){delete _0x5b26e9[_0xe315('0x45')]['id'];}return db[_0xe315('0x28')][_0xe315('0x43')]({'where':{'id':_0x5b26e9[_0xe315('0x40')]['id']}})[_0xe315('0x21')](handleEntityNotFound(_0x183d7f,null))['then'](saveUpdates(_0x5b26e9[_0xe315('0x45')],null))[_0xe315('0x21')](respondWithResult(_0x183d7f,null))[_0xe315('0x3e')](handleError(_0x183d7f,null));};exports[_0xe315('0x46')]=function(_0x744d77,_0x1ac5f3){return db[_0xe315('0x28')]['find']({'where':{'id':_0x744d77[_0xe315('0x40')]['id']}})[_0xe315('0x21')](handleEntityNotFound(_0x1ac5f3,null))[_0xe315('0x21')](removeEntity(_0x1ac5f3,null))['catch'](handleError(_0x1ac5f3,null));};exports[_0xe315('0x47')]=function(_0x13c58d,_0x100733,_0x2530f8){var _0x49461f={};var _0x3b6cce={};var _0x416f8d;var _0x33b6a6;return db[_0xe315('0x28')]['findOne']({'where':{'id':_0x13c58d[_0xe315('0x40')]['id']}})[_0xe315('0x21')](handleEntityNotFound(_0x100733,null))['then'](function(_0x33ed75){if(_0x33ed75){_0x416f8d=_0x33ed75;_0x3b6cce[_0xe315('0x30')]=_[_0xe315('0x41')](db[_0xe315('0x48')][_0xe315('0x29')]);_0x3b6cce[_0xe315('0x2d')]=_['keys'](_0x13c58d[_0xe315('0x2d')]);_0x3b6cce[_0xe315('0x2e')]=_[_0xe315('0x2f')](_0x3b6cce[_0xe315('0x30')],_0x3b6cce[_0xe315('0x2d')]);_0x49461f['attributes']=_['intersection'](_0x3b6cce['model'],qs[_0xe315('0x32')](_0x13c58d[_0xe315('0x2d')][_0xe315('0x32')]));_0x49461f[_0xe315('0x31')]=_0x49461f[_0xe315('0x31')][_0xe315('0x49')]?_0x49461f[_0xe315('0x31')]:_0x3b6cce[_0xe315('0x30')];_0x49461f[_0xe315('0x4a')]=qs[_0xe315('0x34')](_0x13c58d[_0xe315('0x2d')]['sort']);_0x49461f[_0xe315('0x35')]=qs['filters'](_[_0xe315('0x4b')](_0x13c58d['query'],_0x3b6cce[_0xe315('0x2e')]));if(_0x13c58d[_0xe315('0x2d')][_0xe315('0x36')]){_0x49461f[_0xe315('0x35')]=_[_0xe315('0x37')](_0x49461f[_0xe315('0x35')],{'$or':_['map'](_0x49461f[_0xe315('0x31')],function(_0x2e4791){var _0x121c9f={};_0x121c9f[_0x2e4791]={'$like':'%'+_0x13c58d[_0xe315('0x2d')][_0xe315('0x36')]+'%'};return _0x121c9f;})});}_0x49461f=_['merge']({},_0x49461f,_0x13c58d[_0xe315('0x42')]);return _0x416f8d[_0xe315('0x47')](_0x49461f);}})['then'](function(_0x9375c8){if(_0x9375c8){_0x33b6a6=_0x9375c8['length'];if(!_0x13c58d[_0xe315('0x2d')][_0xe315('0x33')](_0xe315('0x4c'))){_0x49461f[_0xe315('0x1a')]=qs[_0xe315('0x1a')](_0x13c58d[_0xe315('0x2d')][_0xe315('0x1a')]);_0x49461f[_0xe315('0x18')]=qs[_0xe315('0x18')](_0x13c58d['query'][_0xe315('0x18')]);}return _0x416f8d[_0xe315('0x47')](_0x49461f);}})[_0xe315('0x21')](function(_0x3c19b3){if(_0x3c19b3){return _0x3c19b3?{'count':_0x33b6a6,'rows':_0x3c19b3}:null;}})[_0xe315('0x21')](respondWithResult(_0x100733,null))[_0xe315('0x3e')](handleError(_0x100733,null));};exports['addConfiguration']=function(_0x1f17bb,_0xf3c956,_0x35d5d2){if(_0x1f17bb[_0xe315('0x45')]['id']){delete _0x1f17bb['body']['id'];}return db['ServicenowAccount'][_0xe315('0x4d')]({'where':{'id':_0x1f17bb[_0xe315('0x40')]['id']}})[_0xe315('0x21')](handleEntityNotFound(_0xf3c956,null))['then'](function(_0x263f31){if(_0x263f31){_0x1f17bb[_0xe315('0x45')]['AccountId']=_0x263f31['id'];_0x1f17bb[_0xe315('0x45')][_0xe315('0x4e')]=integrations[_0xe315('0x4f')](_0x1f17bb[_0xe315('0x45')][_0xe315('0x50')],_0x1f17bb['body']['type']);_0x1f17bb[_0xe315('0x45')]['Descriptions']=integrations[_0xe315('0x51')](_0x1f17bb[_0xe315('0x45')][_0xe315('0x50')],_0x1f17bb[_0xe315('0x45')][_0xe315('0x2b')]);return db['ServicenowConfiguration'][_0xe315('0x44')](_0x1f17bb[_0xe315('0x45')],{'include':[{'model':db[_0xe315('0x52')],'as':_0xe315('0x4e')},{'model':db[_0xe315('0x52')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0xf3c956,null))[_0xe315('0x3e')](handleError(_0xf3c956,null));};exports[_0xe315('0x53')]=function(_0x1e1401,_0x1b3363,_0x200919){var _0x59821e=['made_sla','hold_reason',_0xe315('0x54'),_0xe315('0x55'),_0xe315('0x56'),_0xe315('0x57'),_0xe315('0x58'),_0xe315('0x59'),_0xe315('0x5a')];var _0x4ff6bd=[_0xe315('0x5b'),'made_sla',_0xe315('0x5c'),'watch_list',_0xe315('0x5d'),_0xe315('0x5e'),'child_incidents',_0xe315('0x5f'),_0xe315('0x60'),_0xe315('0x61'),_0xe315('0x62'),'sys_updated_by','opened_by',_0xe315('0x63'),'sys_created_on','sys_domain',_0xe315('0x64'),_0xe315('0x65'),'knowledge','order',_0xe315('0x66'),_0xe315('0x67'),_0xe315('0x68'),_0xe315('0x69'),_0xe315('0x6a'),_0xe315('0x6b'),_0xe315('0x6c'),'business_service',_0xe315('0x6d'),_0xe315('0x6e'),_0xe315('0x6f'),_0xe315('0x70'),_0xe315('0x71'),_0xe315('0x72'),_0xe315('0x73'),'group_list',_0xe315('0x74'),_0xe315('0x75'),_0xe315('0x76'),_0xe315('0x77'),_0xe315('0x78'),_0xe315('0x55'),_0xe315('0x79'),_0xe315('0x7a'),_0xe315('0x56'),_0xe315('0x7b'),_0xe315('0x7c'),_0xe315('0x7d'),'assignment_group',_0xe315('0x7e'),_0xe315('0x7f'),_0xe315('0x80'),'calendar_duration','notify',_0xe315('0x81'),_0xe315('0x82'),_0xe315('0x83'),_0xe315('0x84'),_0xe315('0x85'),_0xe315('0x86'),'contact_type',_0xe315('0x87'),_0xe315('0x58'),_0xe315('0x88'),_0xe315('0x89'),'company',_0xe315('0x8a'),_0xe315('0x8b'),_0xe315('0x8c'),_0xe315('0x59'),'comments',_0xe315('0x8d'),_0xe315('0x8e'),_0xe315('0x8f'),'due_date',_0xe315('0x90'),_0xe315('0x91'),_0xe315('0x92'),_0xe315('0x93'),'upon_approval',_0xe315('0x94'),_0xe315('0x95'),'category'];var _0x52794d='';var _0xc7659='';var _0x2c1a61=[];var _0x1dfa31='';var _0x495710='';var _0x4b6462=[];var _0x3b6493='';var _0x1873e3='';var _0x22cd15={};var _0x5d11ab='';return db['ServicenowAccount'][_0xe315('0x4d')]({'where':{'id':_0x1e1401[_0xe315('0x40')]['id']},'attributes':['id',_0xe315('0x96'),'password',_0xe315('0x97'),_0xe315('0x98'),'serverUrl']})['then'](handleEntityNotFound(_0x1b3363,null))['then'](function(_0x36b10a){if(_0x36b10a){_0x5d11ab=_0x36b10a[_0xe315('0x98')];var _0x2fedd0=_0x5d11ab['slice'](-0x1);if(_0x2fedd0==='/'){_0x5d11ab=_0x5d11ab[_0xe315('0x99')](0x0,_0x5d11ab[_0xe315('0x9a')](_0x2fedd0));}_0x1873e3=util['format'](_0xe315('0x9b'),_0x5d11ab);_0x3b6493=util[_0xe315('0x9c')](_0xe315('0x9d'),_0x5d11ab);_0x22cd15={'user':_0x36b10a[_0xe315('0x96')],'pass':_0x36b10a[_0xe315('0x9e')]};var _0x595c9b={'method':'GET','uri':_0x1873e3+_0xe315('0x9f'),'auth':_0x22cd15,'json':!![]};return rp(_0x595c9b);}})[_0xe315('0x21')](function(_0x4026fb){if(_0x4026fb[_0xe315('0xa0')][_0xe315('0x49')]>0x0){_0x52794d=_0x4026fb[_0xe315('0xa0')];}console[_0xe315('0xa1')](_0xe315('0xa2'),_0x52794d);_0x4b6462=[];_0xc7659=Object[_0xe315('0xa3')]([],_0x52794d);_[_0xe315('0xa4')](_0xc7659,function(_0x46b934){return!_0x59821e[_0xe315('0xa5')](_0x46b934['name']);});_0xc7659['forEach'](function(_0x28bc94){var _0x309f2e=createFieldObject(_0x3b6493,_0x22cd15,_0x28bc94[_0xe315('0xa6')],_0x28bc94[_0xe315('0x25')],_0x28bc94[_0xe315('0xa7')],![]);_0x4b6462[_0xe315('0xa8')](_0x309f2e);});return Promise['all'](_0x4b6462);})['then'](function(_0x1c6893){_0x2c1a61=_0x1c6893;_0x1dfa31=Object[_0xe315('0xa3')]([],_0x52794d);console['log']('TCL:\x20_object',_0x52794d);_['remove'](_0x1dfa31,function(_0x51f974){return _0x4ff6bd[_0xe315('0xa5')](_0x51f974[_0xe315('0x25')]);});console[_0xe315('0xa1')](_0xe315('0xa9'),_0x1dfa31);_0x4b6462=[];_0x1dfa31[_0xe315('0xaa')](function(_0x50059f){var _0x194445=createFieldObject(_0x3b6493,_0x22cd15,_0x50059f[_0xe315('0xa6')],_0x50059f[_0xe315('0x25')],_0x50059f[_0xe315('0xa7')],!![]);_0x4b6462[_0xe315('0xa8')](_0x194445);});return Promise[_0xe315('0xab')](_0x4b6462);})[_0xe315('0x21')](function(_0x577288){_0x495710=_0x577288;var _0x120ef2=_0x2c1a61[_0xe315('0xac')](_0x495710);return{'count':_0x120ef2['length'],'rows':_0x120ef2};})[_0xe315('0x21')](respondWithResult(_0x1b3363,null))[_0xe315('0x3e')](function(_0x2b11ec){console[_0xe315('0xa1')](_0xe315('0xad')+_0x2b11ec);var _0x1cdaa3=_0x1e1401[_0xe315('0x2d')][_0xe315('0xae')]?0x1f4:_0x2b11ec[_0xe315('0xaf')]||0x1f4;logger[_0xe315('0x23')](_0x2b11ec[_0xe315('0x24')]);delete _0x2b11ec[_0xe315('0x25')];if(_0x1cdaa3===0x191){_0x1cdaa3=0x190;}_0x1b3363[_0xe315('0x16')](_0x1cdaa3)[_0xe315('0x26')](_0x1e1401['query'][_0xe315('0xae')]?{'message':_0xe315('0xb0'),'statusCode':_0x2b11ec[_0xe315('0xaf')]}:_0x2b11ec);});};function createFieldObject(_0x65189f,_0x38c141,_0x460e2a,_0x1aedff,_0x3f95b4,_0x247a84){return new Promise(function(_0x2374cd,_0x3581b5){var _0x46babf={'id':_0x1aedff,'name':_0x3f95b4,'custom':_0x247a84};if(_0x460e2a==='boolean'){_0x46babf[_0xe315('0x42')]=[{'name':'True','value':'true'},{'name':_0xe315('0xb1'),'value':_0xe315('0xb2')}];_0x2374cd(_0x46babf);}else{var _0x30276b={'method':_0xe315('0xb3'),'uri':_0x65189f+_0xe315('0xb4')+_0x1aedff,'auth':_0x38c141,'json':!![]};return rp(_0x30276b)[_0xe315('0x21')](function(_0x1b8461){var _0x14353c=[];if(_0x1b8461[_0xe315('0xa0')][_0xe315('0x49')]>0x0){_0x1b8461[_0xe315('0xa0')]['forEach'](function(_0x4cd549){if(_0x4cd549[_0xe315('0xb5')]==='false'){var _0x5955bc={'name':_0x4cd549['label'],'value':_0x4cd549[_0xe315('0xb6')]};_0x14353c[_0xe315('0xa8')](_0x5955bc);}});}_0x46babf[_0xe315('0x42')]=_0x14353c;if(_0x46babf['options']['length']>0x0){_0x2374cd(_0x46babf);}else{if(_0x247a84==![]){_0x2374cd();}else{_0x2374cd(_0x46babf);}}});}});} \ No newline at end of file diff --git a/server/api/intServicenowAccount/intServicenowAccount.model.js b/server/api/intServicenowAccount/intServicenowAccount.model.js new file mode 100644 index 0000000..37c7d6f --- /dev/null +++ b/server/api/intServicenowAccount/intServicenowAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xda19=['request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','util','../../config/logger','moment'];(function(_0xb1e92d,_0x202387){var _0x4ad932=function(_0x28e266){while(--_0x28e266){_0xb1e92d['push'](_0xb1e92d['shift']());}};_0x4ad932(++_0x202387);}(_0xda19,0xd5));var _0x9da1=function(_0x56bb01,_0x21ba6d){_0x56bb01=_0x56bb01-0x0;var _0x4c7b46=_0xda19[_0x56bb01];return _0x4c7b46;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var logger=require(_0x9da1('0x1'))('api');var moment=require(_0x9da1('0x2'));var BPromise=require('bluebird');var rp=require(_0x9da1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var attributes=require(_0x9da1('0x6'));var integrations=require(_0x9da1('0x7'));module[_0x9da1('0x8')]=function(_0x2dcbc6,_0x23e4f7){return _0x2dcbc6[_0x9da1('0x9')](_0x9da1('0xa'),attributes,{'tableName':_0x9da1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intServicenowAccount/intServicenowAccount.rpc.js b/server/api/intServicenowAccount/intServicenowAccount.rpc.js new file mode 100644 index 0000000..4f6d82c --- /dev/null +++ b/server/api/intServicenowAccount/intServicenowAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdb62=['request\x20sent','catch','GetServicenowAccount','findAll','options','where','attributes','limit','include','map','ShowServicenowAccount','ServicenowAccount','find','raw','model','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x460bf4,_0x9e8009){var _0x4ad8fc=function(_0x456cca){while(--_0x456cca){_0x460bf4['push'](_0x460bf4['shift']());}};_0x4ad8fc(++_0x9e8009);}(_0xdb62,0xb9));var _0x2db6=function(_0x3f2d02,_0x2c7deb){_0x3f2d02=_0x3f2d02-0x0;var _0x54092b=_0xdb62[_0x3f2d02];return _0x54092b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2db6('0x0'));var BPromise=require(_0x2db6('0x1'));var rs=require(_0x2db6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2db6('0x3'));var logger=require(_0x2db6('0x4'))(_0x2db6('0x5'));var config=require(_0x2db6('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2db6('0x7')][_0x2db6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x409c50,_0x197687,_0x885750){return new BPromise(function(_0x22446d,_0x2b5505){return client[_0x2db6('0x9')](_0x409c50,_0x885750)[_0x2db6('0xa')](function(_0x37b04f){logger[_0x2db6('0xb')](_0x2db6('0xc'),_0x197687,'request\x20sent');logger[_0x2db6('0xd')](_0x2db6('0xe'),_0x197687,'request\x20sent',JSON[_0x2db6('0xf')](_0x37b04f));if(_0x37b04f['error']){if(_0x37b04f[_0x2db6('0x10')][_0x2db6('0x11')]===0x1f4){logger[_0x2db6('0x10')]('ServicenowAccount,\x20%s,\x20%s',_0x197687,_0x37b04f[_0x2db6('0x10')][_0x2db6('0x12')]);return _0x2b5505(_0x37b04f[_0x2db6('0x10')][_0x2db6('0x12')]);}logger[_0x2db6('0x10')](_0x2db6('0xc'),_0x197687,_0x37b04f['error']['message']);return _0x22446d(_0x37b04f[_0x2db6('0x10')][_0x2db6('0x12')]);}else{logger[_0x2db6('0xb')](_0x2db6('0xc'),_0x197687,_0x2db6('0x13'));_0x22446d(_0x37b04f['result'][_0x2db6('0x12')]);}})[_0x2db6('0x14')](function(_0x4aff36){logger[_0x2db6('0x10')](_0x2db6('0xc'),_0x197687,_0x4aff36);_0x2b5505(_0x4aff36);});});}exports[_0x2db6('0x15')]=function(_0x5698f7){var _0x1c2c20=this;return new Promise(function(_0x194938,_0x2121f3){return db['ServicenowAccount'][_0x2db6('0x16')]({'raw':_0x5698f7[_0x2db6('0x17')]?_0x5698f7['options']['raw']===undefined?!![]:![]:!![],'where':_0x5698f7['options']?_0x5698f7[_0x2db6('0x17')][_0x2db6('0x18')]||null:null,'attributes':_0x5698f7[_0x2db6('0x17')]?_0x5698f7[_0x2db6('0x17')][_0x2db6('0x19')]||null:null,'limit':_0x5698f7['options']?_0x5698f7[_0x2db6('0x17')][_0x2db6('0x1a')]||null:null,'include':_0x5698f7[_0x2db6('0x17')]?_0x5698f7[_0x2db6('0x17')][_0x2db6('0x1b')]?_[_0x2db6('0x1c')](_0x5698f7[_0x2db6('0x17')][_0x2db6('0x1b')],function(_0x2d98fe){return{'model':db[_0x2d98fe['model']],'as':_0x2d98fe['as'],'attributes':_0x2d98fe[_0x2db6('0x19')],'include':_0x2d98fe[_0x2db6('0x1b')]?_[_0x2db6('0x1c')](_0x2d98fe['include'],function(_0x10c4db){return{'model':db[_0x10c4db['model']],'as':_0x10c4db['as'],'attributes':_0x10c4db[_0x2db6('0x19')],'include':_0x10c4db[_0x2db6('0x1b')]?_[_0x2db6('0x1c')](_0x10c4db[_0x2db6('0x1b')],function(_0x11a961){return{'model':db[_0x11a961['model']],'as':_0x11a961['as'],'attributes':_0x11a961[_0x2db6('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x229ce0){logger[_0x2db6('0xb')](_0x2db6('0x15'),_0x5698f7);logger[_0x2db6('0xd')]('GetServicenowAccount',_0x5698f7,JSON[_0x2db6('0xf')](_0x229ce0));_0x194938(_0x229ce0);})[_0x2db6('0x14')](function(_0x29d3db){logger['error'](_0x2db6('0x15'),_0x29d3db['message'],_0x5698f7);_0x2121f3(_0x1c2c20[_0x2db6('0x10')](0x1f4,_0x29d3db[_0x2db6('0x12')]));});});};exports[_0x2db6('0x1d')]=function(_0x1bf5ec){var _0x5b1d15=this;return new Promise(function(_0x50e7e5,_0x9a3ab){return db[_0x2db6('0x1e')][_0x2db6('0x1f')]({'raw':_0x1bf5ec[_0x2db6('0x17')]?_0x1bf5ec[_0x2db6('0x17')][_0x2db6('0x20')]===undefined?!![]:![]:!![],'where':_0x1bf5ec[_0x2db6('0x17')]?_0x1bf5ec[_0x2db6('0x17')][_0x2db6('0x18')]||null:null,'attributes':_0x1bf5ec[_0x2db6('0x17')]?_0x1bf5ec[_0x2db6('0x17')][_0x2db6('0x19')]||null:null,'include':_0x1bf5ec[_0x2db6('0x17')]?_0x1bf5ec[_0x2db6('0x17')]['include']?_[_0x2db6('0x1c')](_0x1bf5ec['options'][_0x2db6('0x1b')],function(_0x562a5b){return{'model':db[_0x562a5b[_0x2db6('0x21')]],'as':_0x562a5b['as'],'attributes':_0x562a5b[_0x2db6('0x19')],'include':_0x562a5b[_0x2db6('0x1b')]?_[_0x2db6('0x1c')](_0x562a5b[_0x2db6('0x1b')],function(_0x58ed41){return{'model':db[_0x58ed41['model']],'as':_0x58ed41['as'],'attributes':_0x58ed41[_0x2db6('0x19')],'include':_0x58ed41['include']?_[_0x2db6('0x1c')](_0x58ed41[_0x2db6('0x1b')],function(_0x418f11){return{'model':db[_0x418f11[_0x2db6('0x21')]],'as':_0x418f11['as'],'attributes':_0x418f11['attributes']};}):[]};}):[]};}):[]:[]})[_0x2db6('0xa')](function(_0x2fb066){logger[_0x2db6('0xb')](_0x2db6('0x1d'),_0x1bf5ec);logger['debug']('ShowServicenowAccount',_0x1bf5ec,JSON[_0x2db6('0xf')](_0x2fb066));_0x50e7e5(_0x2fb066);})['catch'](function(_0x2479c6){logger[_0x2db6('0x10')](_0x2db6('0x1d'),_0x2479c6['message'],_0x1bf5ec);_0x9a3ab(_0x5b1d15[_0x2db6('0x10')](0x1f4,_0x2479c6[_0x2db6('0x12')]));});});}; \ No newline at end of file diff --git a/server/api/intServicenowConfiguration/index.js b/server/api/intServicenowConfiguration/index.js new file mode 100644 index 0000000..459f2c3 --- /dev/null +++ b/server/api/intServicenowConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc14d=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','post','create','put','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x3545e2,_0x3c2c69){var _0x218534=function(_0x5e9a14){while(--_0x5e9a14){_0x3545e2['push'](_0x3545e2['shift']());}};_0x218534(++_0x3c2c69);}(_0xc14d,0xed));var _0xdc14=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc14d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xdc14('0x0'));var util=require(_0xdc14('0x1'));var path=require(_0xdc14('0x2'));var timeout=require(_0xdc14('0x3'));var express=require('express');var router=express[_0xdc14('0x4')]();var fs_extra=require(_0xdc14('0x5'));var auth=require(_0xdc14('0x6'));var interaction=require(_0xdc14('0x7'));var config=require('../../config/environment');var controller=require(_0xdc14('0x8'));router[_0xdc14('0x9')]('/',auth[_0xdc14('0xa')](),controller[_0xdc14('0xb')]);router[_0xdc14('0x9')]('/:id',auth[_0xdc14('0xa')](),controller['show']);router[_0xdc14('0x9')](_0xdc14('0xc'),auth[_0xdc14('0xa')](),controller[_0xdc14('0xd')]);router['get'](_0xdc14('0xe'),auth[_0xdc14('0xa')](),controller[_0xdc14('0xf')]);router['get']('/:id/descriptions',auth[_0xdc14('0xa')](),controller['getDescriptions']);router[_0xdc14('0x10')]('/',auth[_0xdc14('0xa')](),controller[_0xdc14('0x11')]);router[_0xdc14('0x12')](_0xdc14('0x13'),auth[_0xdc14('0xa')](),controller[_0xdc14('0x14')]);router[_0xdc14('0x15')](_0xdc14('0x13'),auth[_0xdc14('0xa')](),controller[_0xdc14('0x16')]);module[_0xdc14('0x17')]=router; \ No newline at end of file diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js new file mode 100644 index 0000000..3c069c9 --- /dev/null +++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfcb1=['sequelize','exports','STRING'];(function(_0xcb1763,_0x1b9378){var _0x3dab56=function(_0x4ed540){while(--_0x4ed540){_0xcb1763['push'](_0xcb1763['shift']());}};_0x3dab56(++_0x1b9378);}(_0xfcb1,0x1d1));var _0x1fcb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfcb1[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x1fcb('0x0'));module[_0x1fcb('0x1')]={'name':{'type':Sequelize[_0x1fcb('0x2')]},'description':{'type':Sequelize[_0x1fcb('0x2')]}}; \ No newline at end of file diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js new file mode 100644 index 0000000..d3237a3 --- /dev/null +++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xda6b=['eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../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','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filters','filter','merge','options','ServicenowConfiguration','includeAll','include','findAll','rows','catch','show','params','find','create','body','getFields','findOne','ServicenowField','hasOwnProperty','getSubjects','getDescriptions'];(function(_0x4c139c,_0x59071a){var _0x3fbb6a=function(_0x23d7d2){while(--_0x23d7d2){_0x4c139c['push'](_0x4c139c['shift']());}};_0x3fbb6a(++_0x59071a);}(_0xda6b,0xf3));var _0xbda6=function(_0x33dffc,_0x2be66e){_0x33dffc=_0x33dffc-0x0;var _0x1f5420=_0xda6b[_0x33dffc];return _0x1f5420;};'use strict';var emlformat=require(_0xbda6('0x0'));var rimraf=require(_0xbda6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbda6('0x2'));var rp=require(_0xbda6('0x3'));var moment=require(_0xbda6('0x4'));var BPromise=require(_0xbda6('0x5'));var Mustache=require('mustache');var util=require(_0xbda6('0x6'));var path=require(_0xbda6('0x7'));var sox=require('sox');var csv=require(_0xbda6('0x8'));var ejs=require(_0xbda6('0x9'));var fs=require('fs');var fs_extra=require(_0xbda6('0xa'));var _=require(_0xbda6('0xb'));var squel=require(_0xbda6('0xc'));var crypto=require('crypto');var jsforce=require(_0xbda6('0xd'));var deskjs=require(_0xbda6('0xe'));var toCsv=require(_0xbda6('0x8'));var querystring=require('querystring');var Papa=require(_0xbda6('0xf'));var Redis=require(_0xbda6('0x10'));var authService=require(_0xbda6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbda6('0x12'));var hardwareService=require(_0xbda6('0x13'));var logger=require(_0xbda6('0x14'))(_0xbda6('0x15'));var utils=require(_0xbda6('0x16'));var config=require(_0xbda6('0x17'));var licenseUtil=require(_0xbda6('0x18'));var db=require(_0xbda6('0x19'))['db'];function respondWithStatusCode(_0x2eb2d8,_0x5a44cc){_0x5a44cc=_0x5a44cc||0xcc;return function(_0x465b63){if(_0x465b63){return _0x2eb2d8[_0xbda6('0x1a')](_0x5a44cc);}return _0x2eb2d8['status'](_0x5a44cc)[_0xbda6('0x1b')]();};}function respondWithResult(_0x2e1055,_0x4a3b9b){_0x4a3b9b=_0x4a3b9b||0xc8;return function(_0x3508d0){if(_0x3508d0){return _0x2e1055[_0xbda6('0x1c')](_0x4a3b9b)[_0xbda6('0x1d')](_0x3508d0);}};}function respondWithFilteredResult(_0x1aa45b,_0x4d2b75){return function(_0x14a93){if(_0x14a93){var _0x2d6ce5=typeof _0x4d2b75[_0xbda6('0x1e')]===_0xbda6('0x1f')&&typeof _0x4d2b75['limit']==='undefined';var _0x2c7b1f=_0x14a93[_0xbda6('0x20')];var _0x3d38fc=_0x2d6ce5?0x0:_0x4d2b75[_0xbda6('0x1e')];var _0x282f3f=_0x2d6ce5?_0x14a93[_0xbda6('0x20')]:_0x4d2b75[_0xbda6('0x1e')]+_0x4d2b75[_0xbda6('0x21')];var _0x474b79;if(_0x282f3f>=_0x2c7b1f){_0x282f3f=_0x2c7b1f;_0x474b79=0xc8;}else{_0x474b79=0xce;}_0x1aa45b[_0xbda6('0x1c')](_0x474b79);return _0x1aa45b[_0xbda6('0x22')](_0xbda6('0x23'),_0x3d38fc+'-'+_0x282f3f+'/'+_0x2c7b1f)[_0xbda6('0x1d')](_0x14a93);}return null;};}function patchUpdates(_0x401374){return function(_0xf43b53){try{jsonpatch['apply'](_0xf43b53,_0x401374,!![]);}catch(_0x495bf7){return BPromise['reject'](_0x495bf7);}return _0xf43b53['save']();};}function saveUpdates(_0x41c042,_0x4d6edf){return function(_0x432f56){if(_0x432f56){return _0x432f56[_0xbda6('0x24')](_0x41c042)[_0xbda6('0x25')](function(_0x5c9629){return _0x5c9629;});}return null;};}function removeEntity(_0x4c1d8a,_0x20c7ac){return function(_0x45d156){if(_0x45d156){return _0x45d156[_0xbda6('0x26')]()[_0xbda6('0x25')](function(){_0x4c1d8a[_0xbda6('0x1c')](0xcc)[_0xbda6('0x1b')]();});}};}function handleEntityNotFound(_0x5c2507,_0x42af98){return function(_0x51ba8e){if(!_0x51ba8e){_0x5c2507['sendStatus'](0x194);}return _0x51ba8e;};}function handleError(_0x253cf3,_0x461e1f){_0x461e1f=_0x461e1f||0x1f4;return function(_0x4bc38a){logger[_0xbda6('0x27')](_0x4bc38a['stack']);if(_0x4bc38a['name']){delete _0x4bc38a[_0xbda6('0x28')];}_0x253cf3[_0xbda6('0x1c')](_0x461e1f)[_0xbda6('0x29')](_0x4bc38a);};}exports[_0xbda6('0x2a')]=function(_0x5b4e5f,_0x29b0d2){var _0x55e2={},_0x154f2d={},_0x5e3518={'count':0x0,'rows':[]};var _0x1fbaa4=_[_0xbda6('0x2b')](db['ServicenowConfiguration'][_0xbda6('0x2c')],function(_0xf08964){return{'name':_0xf08964[_0xbda6('0x2d')],'type':_0xf08964[_0xbda6('0x2e')][_0xbda6('0x2f')]};});_0x154f2d[_0xbda6('0x30')]=_['map'](_0x1fbaa4,'name');_0x154f2d[_0xbda6('0x31')]=_[_0xbda6('0x32')](_0x5b4e5f[_0xbda6('0x31')]);_0x154f2d['filters']=_[_0xbda6('0x33')](_0x154f2d[_0xbda6('0x30')],_0x154f2d[_0xbda6('0x31')]);_0x55e2[_0xbda6('0x34')]=_[_0xbda6('0x33')](_0x154f2d[_0xbda6('0x30')],qs[_0xbda6('0x35')](_0x5b4e5f[_0xbda6('0x31')][_0xbda6('0x35')]));_0x55e2[_0xbda6('0x34')]=_0x55e2[_0xbda6('0x34')][_0xbda6('0x36')]?_0x55e2[_0xbda6('0x34')]:_0x154f2d['model'];if(!_0x5b4e5f['query']['hasOwnProperty'](_0xbda6('0x37'))){_0x55e2[_0xbda6('0x21')]=qs[_0xbda6('0x21')](_0x5b4e5f[_0xbda6('0x31')][_0xbda6('0x21')]);_0x55e2[_0xbda6('0x1e')]=qs[_0xbda6('0x1e')](_0x5b4e5f[_0xbda6('0x31')]['offset']);}_0x55e2[_0xbda6('0x38')]=qs[_0xbda6('0x39')](_0x5b4e5f[_0xbda6('0x31')][_0xbda6('0x39')]);_0x55e2[_0xbda6('0x3a')]=qs['filters'](_[_0xbda6('0x3b')](_0x5b4e5f['query'],_0x154f2d[_0xbda6('0x3c')]),_0x1fbaa4);if(_0x5b4e5f[_0xbda6('0x31')][_0xbda6('0x3d')]){_0x55e2['where']=_[_0xbda6('0x3e')](_0x55e2[_0xbda6('0x3a')],{'$or':_[_0xbda6('0x2b')](_0x1fbaa4,function(_0x1d4f01){if(_0x1d4f01[_0xbda6('0x2e')]!=='VIRTUAL'){var _0x3b8f83={};_0x3b8f83[_0x1d4f01[_0xbda6('0x28')]]={'$like':'%'+_0x5b4e5f[_0xbda6('0x31')][_0xbda6('0x3d')]+'%'};return _0x3b8f83;}})});}_0x55e2=_['merge']({},_0x55e2,_0x5b4e5f[_0xbda6('0x3f')]);var _0x5709e5={'where':_0x55e2['where']};return db[_0xbda6('0x40')][_0xbda6('0x20')](_0x5709e5)[_0xbda6('0x25')](function(_0x2991b8){_0x5e3518['count']=_0x2991b8;if(_0x5b4e5f[_0xbda6('0x31')][_0xbda6('0x41')]){_0x55e2[_0xbda6('0x42')]=[{'all':!![]}];}return db[_0xbda6('0x40')][_0xbda6('0x43')](_0x55e2);})[_0xbda6('0x25')](function(_0x27ca2b){_0x5e3518[_0xbda6('0x44')]=_0x27ca2b;return _0x5e3518;})[_0xbda6('0x25')](respondWithFilteredResult(_0x29b0d2,_0x55e2))[_0xbda6('0x45')](handleError(_0x29b0d2,null));};exports[_0xbda6('0x46')]=function(_0xb5093,_0x28caac){var _0x5104b4={'raw':![],'where':{'id':_0xb5093[_0xbda6('0x47')]['id']}},_0x483997={};_0x483997[_0xbda6('0x30')]=_['keys'](db[_0xbda6('0x40')][_0xbda6('0x2c')]);_0x483997['query']=_[_0xbda6('0x32')](_0xb5093[_0xbda6('0x31')]);_0x483997[_0xbda6('0x3c')]=_[_0xbda6('0x33')](_0x483997[_0xbda6('0x30')],_0x483997[_0xbda6('0x31')]);_0x5104b4['attributes']=_['intersection'](_0x483997[_0xbda6('0x30')],qs[_0xbda6('0x35')](_0xb5093['query'][_0xbda6('0x35')]));_0x5104b4[_0xbda6('0x34')]=_0x5104b4[_0xbda6('0x34')]['length']?_0x5104b4[_0xbda6('0x34')]:_0x483997[_0xbda6('0x30')];if(_0xb5093[_0xbda6('0x31')][_0xbda6('0x41')]){_0x5104b4[_0xbda6('0x42')]=[{'all':!![]}];}_0x5104b4=_[_0xbda6('0x3e')]({},_0x5104b4,_0xb5093[_0xbda6('0x3f')]);return db[_0xbda6('0x40')][_0xbda6('0x48')](_0x5104b4)[_0xbda6('0x25')](handleEntityNotFound(_0x28caac,null))['then'](respondWithResult(_0x28caac,null))[_0xbda6('0x45')](handleError(_0x28caac,null));};exports['create']=function(_0x152862,_0x6d93f2){return db[_0xbda6('0x40')][_0xbda6('0x49')](_0x152862['body'],{})[_0xbda6('0x25')](respondWithResult(_0x6d93f2,0xc9))[_0xbda6('0x45')](handleError(_0x6d93f2,null));};exports[_0xbda6('0x24')]=function(_0x458f2a,_0x2f7472){if(_0x458f2a['body']['id']){delete _0x458f2a[_0xbda6('0x4a')]['id'];}return db['ServicenowConfiguration'][_0xbda6('0x48')]({'where':{'id':_0x458f2a[_0xbda6('0x47')]['id']}})['then'](handleEntityNotFound(_0x2f7472,null))[_0xbda6('0x25')](saveUpdates(_0x458f2a['body'],null))[_0xbda6('0x25')](respondWithResult(_0x2f7472,null))[_0xbda6('0x45')](handleError(_0x2f7472,null));};exports['destroy']=function(_0x12953e,_0x76efe){return db[_0xbda6('0x40')][_0xbda6('0x48')]({'where':{'id':_0x12953e[_0xbda6('0x47')]['id']}})[_0xbda6('0x25')](handleEntityNotFound(_0x76efe,null))[_0xbda6('0x25')](removeEntity(_0x76efe,null))['catch'](handleError(_0x76efe,null));};exports[_0xbda6('0x4b')]=function(_0x791708,_0x2d2ed0,_0x483ef3){var _0x1cb2b0={};var _0x21a338={};var _0x465bd2;var _0xa8f204;return db[_0xbda6('0x40')][_0xbda6('0x4c')]({'where':{'id':_0x791708[_0xbda6('0x47')]['id']}})[_0xbda6('0x25')](handleEntityNotFound(_0x2d2ed0,null))['then'](function(_0x2f4fc3){if(_0x2f4fc3){_0x465bd2=_0x2f4fc3;_0x21a338['model']=_[_0xbda6('0x32')](db[_0xbda6('0x4d')]['rawAttributes']);_0x21a338[_0xbda6('0x31')]=_[_0xbda6('0x32')](_0x791708[_0xbda6('0x31')]);_0x21a338[_0xbda6('0x3c')]=_[_0xbda6('0x33')](_0x21a338[_0xbda6('0x30')],_0x21a338[_0xbda6('0x31')]);_0x1cb2b0[_0xbda6('0x34')]=_['intersection'](_0x21a338[_0xbda6('0x30')],qs[_0xbda6('0x35')](_0x791708['query'][_0xbda6('0x35')]));_0x1cb2b0[_0xbda6('0x34')]=_0x1cb2b0['attributes'][_0xbda6('0x36')]?_0x1cb2b0[_0xbda6('0x34')]:_0x21a338[_0xbda6('0x30')];_0x1cb2b0[_0xbda6('0x38')]=qs['sort'](_0x791708['query'][_0xbda6('0x39')]);_0x1cb2b0[_0xbda6('0x3a')]=qs['filters'](_['pick'](_0x791708[_0xbda6('0x31')],_0x21a338[_0xbda6('0x3c')]));if(_0x791708[_0xbda6('0x31')]['filter']){_0x1cb2b0[_0xbda6('0x3a')]=_[_0xbda6('0x3e')](_0x1cb2b0[_0xbda6('0x3a')],{'$or':_['map'](_0x1cb2b0[_0xbda6('0x34')],function(_0x5a732c){var _0x440521={};_0x440521[_0x5a732c]={'$like':'%'+_0x791708[_0xbda6('0x31')]['filter']+'%'};return _0x440521;})});}_0x1cb2b0=_[_0xbda6('0x3e')]({},_0x1cb2b0,_0x791708[_0xbda6('0x3f')]);return _0x465bd2[_0xbda6('0x4b')](_0x1cb2b0);}})[_0xbda6('0x25')](function(_0x20c0c2){if(_0x20c0c2){_0xa8f204=_0x20c0c2[_0xbda6('0x36')];if(!_0x791708[_0xbda6('0x31')][_0xbda6('0x4e')](_0xbda6('0x37'))){_0x1cb2b0[_0xbda6('0x21')]=qs[_0xbda6('0x21')](_0x791708[_0xbda6('0x31')]['limit']);_0x1cb2b0[_0xbda6('0x1e')]=qs[_0xbda6('0x1e')](_0x791708[_0xbda6('0x31')]['offset']);}return _0x465bd2['getFields'](_0x1cb2b0);}})['then'](function(_0x10675b){if(_0x10675b){return _0x10675b?{'count':_0xa8f204,'rows':_0x10675b}:null;}})['then'](respondWithResult(_0x2d2ed0,null))[_0xbda6('0x45')](handleError(_0x2d2ed0,null));};exports[_0xbda6('0x4f')]=function(_0x208806,_0x350566,_0x6fc33d){var _0x427365={};var _0x43230a={};var _0x2dea17;var _0x3114cd;return db[_0xbda6('0x40')]['findOne']({'where':{'id':_0x208806['params']['id']}})[_0xbda6('0x25')](handleEntityNotFound(_0x350566,null))[_0xbda6('0x25')](function(_0x54f01d){if(_0x54f01d){_0x2dea17=_0x54f01d;_0x43230a[_0xbda6('0x30')]=_[_0xbda6('0x32')](db['ServicenowField'][_0xbda6('0x2c')]);_0x43230a[_0xbda6('0x31')]=_['keys'](_0x208806['query']);_0x43230a[_0xbda6('0x3c')]=_['intersection'](_0x43230a['model'],_0x43230a[_0xbda6('0x31')]);_0x427365['attributes']=_[_0xbda6('0x33')](_0x43230a[_0xbda6('0x30')],qs['fields'](_0x208806[_0xbda6('0x31')][_0xbda6('0x35')]));_0x427365[_0xbda6('0x34')]=_0x427365[_0xbda6('0x34')]['length']?_0x427365[_0xbda6('0x34')]:_0x43230a[_0xbda6('0x30')];_0x427365[_0xbda6('0x38')]=qs[_0xbda6('0x39')](_0x208806[_0xbda6('0x31')][_0xbda6('0x39')]);_0x427365[_0xbda6('0x3a')]=qs[_0xbda6('0x3c')](_[_0xbda6('0x3b')](_0x208806[_0xbda6('0x31')],_0x43230a[_0xbda6('0x3c')]));if(_0x208806[_0xbda6('0x31')]['filter']){_0x427365[_0xbda6('0x3a')]=_[_0xbda6('0x3e')](_0x427365[_0xbda6('0x3a')],{'$or':_[_0xbda6('0x2b')](_0x427365[_0xbda6('0x34')],function(_0x2e08f0){var _0x6b2c50={};_0x6b2c50[_0x2e08f0]={'$like':'%'+_0x208806[_0xbda6('0x31')][_0xbda6('0x3d')]+'%'};return _0x6b2c50;})});}_0x427365=_[_0xbda6('0x3e')]({},_0x427365,_0x208806['options']);return _0x2dea17['getSubjects'](_0x427365);}})['then'](function(_0x129ddb){if(_0x129ddb){_0x3114cd=_0x129ddb['length'];if(!_0x208806[_0xbda6('0x31')][_0xbda6('0x4e')](_0xbda6('0x37'))){_0x427365[_0xbda6('0x21')]=qs[_0xbda6('0x21')](_0x208806[_0xbda6('0x31')][_0xbda6('0x21')]);_0x427365['offset']=qs[_0xbda6('0x1e')](_0x208806['query']['offset']);}return _0x2dea17[_0xbda6('0x4f')](_0x427365);}})[_0xbda6('0x25')](function(_0x294e08){if(_0x294e08){return _0x294e08?{'count':_0x3114cd,'rows':_0x294e08}:null;}})[_0xbda6('0x25')](respondWithResult(_0x350566,null))[_0xbda6('0x45')](handleError(_0x350566,null));};exports[_0xbda6('0x50')]=function(_0x4571dd,_0x3288b0,_0x13d3a1){var _0x3f8f67={};var _0xfedbb5={};var _0xc50327;var _0xa12b42;return db['ServicenowConfiguration'][_0xbda6('0x4c')]({'where':{'id':_0x4571dd['params']['id']}})['then'](handleEntityNotFound(_0x3288b0,null))[_0xbda6('0x25')](function(_0x2d82a9){if(_0x2d82a9){_0xc50327=_0x2d82a9;_0xfedbb5['model']=_[_0xbda6('0x32')](db[_0xbda6('0x4d')][_0xbda6('0x2c')]);_0xfedbb5[_0xbda6('0x31')]=_[_0xbda6('0x32')](_0x4571dd[_0xbda6('0x31')]);_0xfedbb5[_0xbda6('0x3c')]=_[_0xbda6('0x33')](_0xfedbb5[_0xbda6('0x30')],_0xfedbb5['query']);_0x3f8f67[_0xbda6('0x34')]=_[_0xbda6('0x33')](_0xfedbb5[_0xbda6('0x30')],qs[_0xbda6('0x35')](_0x4571dd[_0xbda6('0x31')][_0xbda6('0x35')]));_0x3f8f67[_0xbda6('0x34')]=_0x3f8f67['attributes'][_0xbda6('0x36')]?_0x3f8f67['attributes']:_0xfedbb5[_0xbda6('0x30')];_0x3f8f67[_0xbda6('0x38')]=qs[_0xbda6('0x39')](_0x4571dd[_0xbda6('0x31')]['sort']);_0x3f8f67['where']=qs[_0xbda6('0x3c')](_[_0xbda6('0x3b')](_0x4571dd[_0xbda6('0x31')],_0xfedbb5[_0xbda6('0x3c')]));if(_0x4571dd[_0xbda6('0x31')][_0xbda6('0x3d')]){_0x3f8f67[_0xbda6('0x3a')]=_[_0xbda6('0x3e')](_0x3f8f67['where'],{'$or':_[_0xbda6('0x2b')](_0x3f8f67[_0xbda6('0x34')],function(_0x3bcb13){var _0x5536a6={};_0x5536a6[_0x3bcb13]={'$like':'%'+_0x4571dd[_0xbda6('0x31')]['filter']+'%'};return _0x5536a6;})});}_0x3f8f67=_['merge']({},_0x3f8f67,_0x4571dd[_0xbda6('0x3f')]);return _0xc50327[_0xbda6('0x50')](_0x3f8f67);}})['then'](function(_0x2920e8){if(_0x2920e8){_0xa12b42=_0x2920e8[_0xbda6('0x36')];if(!_0x4571dd[_0xbda6('0x31')][_0xbda6('0x4e')](_0xbda6('0x37'))){_0x3f8f67[_0xbda6('0x21')]=qs[_0xbda6('0x21')](_0x4571dd['query']['limit']);_0x3f8f67[_0xbda6('0x1e')]=qs[_0xbda6('0x1e')](_0x4571dd[_0xbda6('0x31')][_0xbda6('0x1e')]);}return _0xc50327[_0xbda6('0x50')](_0x3f8f67);}})[_0xbda6('0x25')](function(_0x5b1ac0){if(_0x5b1ac0){return _0x5b1ac0?{'count':_0xa12b42,'rows':_0x5b1ac0}:null;}})['then'](respondWithResult(_0x3288b0,null))[_0xbda6('0x45')](handleError(_0x3288b0,null));}; \ No newline at end of file diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js new file mode 100644 index 0000000..a0794f0 --- /dev/null +++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3495=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration','lodash','util'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x3495,0x1de));var _0x5349=function(_0x525ab5,_0x404107){_0x525ab5=_0x525ab5-0x0;var _0x4a5fed=_0x3495[_0x525ab5];return _0x4a5fed;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var logger=require(_0x5349('0x2'))(_0x5349('0x3'));var moment=require(_0x5349('0x4'));var BPromise=require(_0x5349('0x5'));var rp=require(_0x5349('0x6'));var fs=require('fs');var path=require(_0x5349('0x7'));var rimraf=require(_0x5349('0x8'));var config=require('../../config/environment');var attributes=require(_0x5349('0x9'));module[_0x5349('0xa')]=function(_0x5ce2cd,_0xcb5a1){return _0x5ce2cd['define'](_0x5349('0xb'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js new file mode 100644 index 0000000..39c1ec1 --- /dev/null +++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf576=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash'];(function(_0x5bee28,_0x1dc7e2){var _0x395d1d=function(_0x33af90){while(--_0x33af90){_0x5bee28['push'](_0x5bee28['shift']());}};_0x395d1d(++_0x1dc7e2);}(_0xf576,0xef));var _0x6f57=function(_0x2c1c95,_0x30915b){_0x2c1c95=_0x2c1c95-0x0;var _0x1b60b8=_0xf576[_0x2c1c95];return _0x1b60b8;};'use strict';var _=require(_0x6f57('0x0'));var util=require(_0x6f57('0x1'));var moment=require(_0x6f57('0x2'));var BPromise=require(_0x6f57('0x3'));var rs=require(_0x6f57('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6f57('0x5'));var logger=require(_0x6f57('0x6'))(_0x6f57('0x7'));var config=require('../../config/environment');var jayson=require(_0x6f57('0x8'));var client=jayson[_0x6f57('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a8ced,_0x40647a,_0x6edc9d){return new BPromise(function(_0x4292c8,_0x5951fb){return client['request'](_0x5a8ced,_0x6edc9d)[_0x6f57('0xa')](function(_0x4ecc94){logger[_0x6f57('0xb')](_0x6f57('0xc'),_0x40647a,_0x6f57('0xd'));logger[_0x6f57('0xe')](_0x6f57('0xf'),_0x40647a,_0x6f57('0xd'),JSON['stringify'](_0x4ecc94));if(_0x4ecc94[_0x6f57('0x10')]){if(_0x4ecc94[_0x6f57('0x10')]['code']===0x1f4){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x40647a,_0x4ecc94[_0x6f57('0x10')][_0x6f57('0x11')]);return _0x5951fb(_0x4ecc94[_0x6f57('0x10')][_0x6f57('0x11')]);}logger[_0x6f57('0x10')](_0x6f57('0xc'),_0x40647a,_0x4ecc94[_0x6f57('0x10')]['message']);return _0x4292c8(_0x4ecc94['error'][_0x6f57('0x11')]);}else{logger[_0x6f57('0xb')](_0x6f57('0xc'),_0x40647a,'request\x20sent');_0x4292c8(_0x4ecc94[_0x6f57('0x12')][_0x6f57('0x11')]);}})[_0x6f57('0x13')](function(_0x13565c){logger[_0x6f57('0x10')](_0x6f57('0xc'),_0x40647a,_0x13565c);_0x5951fb(_0x13565c);});});} \ No newline at end of file diff --git a/server/api/intServicenowField/index.js b/server/api/intServicenowField/index.js new file mode 100644 index 0000000..a33292b --- /dev/null +++ b/server/api/intServicenowField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x29b4=['put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x35a686,_0x7167e4){var _0x1ec0e3=function(_0x5db6a4){while(--_0x5db6a4){_0x35a686['push'](_0x35a686['shift']());}};_0x1ec0e3(++_0x7167e4);}(_0x29b4,0x1a5));var _0x429b=function(_0x5130fc,_0x57f935){_0x5130fc=_0x5130fc-0x0;var _0xdde96a=_0x29b4[_0x5130fc];return _0xdde96a;};'use strict';var multer=require(_0x429b('0x0'));var util=require(_0x429b('0x1'));var path=require(_0x429b('0x2'));var timeout=require(_0x429b('0x3'));var express=require(_0x429b('0x4'));var router=express[_0x429b('0x5')]();var fs_extra=require(_0x429b('0x6'));var auth=require(_0x429b('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x429b('0x8'));var controller=require('./intServicenowField.controller');router['get']('/',auth[_0x429b('0x9')](),controller[_0x429b('0xa')]);router[_0x429b('0xb')](_0x429b('0xc'),auth[_0x429b('0x9')](),controller[_0x429b('0xd')]);router[_0x429b('0xe')]('/',auth[_0x429b('0x9')](),controller[_0x429b('0xf')]);router[_0x429b('0x10')](_0x429b('0xc'),auth[_0x429b('0x9')](),controller[_0x429b('0x11')]);router['delete'](_0x429b('0xc'),auth[_0x429b('0x9')](),controller[_0x429b('0x12')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/intServicenowField/intServicenowField.attributes.js b/server/api/intServicenowField/intServicenowField.attributes.js new file mode 100644 index 0000000..dcac4de --- /dev/null +++ b/server/api/intServicenowField/intServicenowField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xea13=['BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING','variable'];(function(_0x31a056,_0x39cac3){var _0x5c3717=function(_0x212d17){while(--_0x212d17){_0x31a056['push'](_0x31a056['shift']());}};_0x5c3717(++_0x39cac3);}(_0xea13,0x8d));var _0x3ea1=function(_0x3aa0e0,_0x5cec89){_0x3aa0e0=_0x3aa0e0-0x0;var _0x38dba1=_0xea13[_0x3aa0e0];return _0x38dba1;};'use strict';var Sequelize=require(_0x3ea1('0x0'));module[_0x3ea1('0x1')]={'type':{'type':Sequelize[_0x3ea1('0x2')](_0x3ea1('0x3'),'variable',_0x3ea1('0x4'),_0x3ea1('0x5'),_0x3ea1('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3ea1('0x7')]},'key':{'type':Sequelize[_0x3ea1('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x3ea1('0x3'),_0x3ea1('0x8'),_0x3ea1('0x4'))},'keyContent':{'type':Sequelize[_0x3ea1('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3ea1('0x7')]},'customField':{'type':Sequelize[_0x3ea1('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/intServicenowField/intServicenowField.controller.js b/server/api/intServicenowField/intServicenowField.controller.js new file mode 100644 index 0000000..402c323 --- /dev/null +++ b/server/api/intServicenowField/intServicenowField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5eac=['../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','stack','name','send','index','ServicenowField','fieldName','type','key','map','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','rows','catch','params','keys','rawAttributes','include','options','create','body','find','eml-format','rimraf','zip-dir','request-promise','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils'];(function(_0x18ac44,_0x5e525e){var _0x521d09=function(_0x512ee4){while(--_0x512ee4){_0x18ac44['push'](_0x18ac44['shift']());}};_0x521d09(++_0x5e525e);}(_0x5eac,0x112));var _0xc5ea=function(_0x29ab17,_0x1003fb){_0x29ab17=_0x29ab17-0x0;var _0x2d60a8=_0x5eac[_0x29ab17];return _0x2d60a8;};'use strict';var emlformat=require(_0xc5ea('0x0'));var rimraf=require(_0xc5ea('0x1'));var zipdir=require(_0xc5ea('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc5ea('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc5ea('0x4'));var util=require(_0xc5ea('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc5ea('0x6'));var _=require(_0xc5ea('0x7'));var squel=require(_0xc5ea('0x8'));var crypto=require(_0xc5ea('0x9'));var jsforce=require(_0xc5ea('0xa'));var deskjs=require(_0xc5ea('0xb'));var toCsv=require(_0xc5ea('0xc'));var querystring=require(_0xc5ea('0xd'));var Papa=require(_0xc5ea('0xe'));var Redis=require(_0xc5ea('0xf'));var authService=require(_0xc5ea('0x10'));var qs=require(_0xc5ea('0x11'));var as=require(_0xc5ea('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc5ea('0x13'))(_0xc5ea('0x14'));var utils=require(_0xc5ea('0x15'));var config=require(_0xc5ea('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc5ea('0x17'))['db'];function respondWithStatusCode(_0x29b32a,_0x292342){_0x292342=_0x292342||0xcc;return function(_0x7a5468){if(_0x7a5468){return _0x29b32a['sendStatus'](_0x292342);}return _0x29b32a['status'](_0x292342)[_0xc5ea('0x18')]();};}function respondWithResult(_0xad3805,_0x33349a){_0x33349a=_0x33349a||0xc8;return function(_0x2a5a51){if(_0x2a5a51){return _0xad3805[_0xc5ea('0x19')](_0x33349a)[_0xc5ea('0x1a')](_0x2a5a51);}};}function respondWithFilteredResult(_0x4ec6a1,_0x537a63){return function(_0x1b1e10){if(_0x1b1e10){var _0x37365a=typeof _0x537a63[_0xc5ea('0x1b')]===_0xc5ea('0x1c')&&typeof _0x537a63[_0xc5ea('0x1d')]===_0xc5ea('0x1c');var _0x5c6f10=_0x1b1e10['count'];var _0x218093=_0x37365a?0x0:_0x537a63[_0xc5ea('0x1b')];var _0x4ac438=_0x37365a?_0x1b1e10[_0xc5ea('0x1e')]:_0x537a63[_0xc5ea('0x1b')]+_0x537a63[_0xc5ea('0x1d')];var _0x5bb638;if(_0x4ac438>=_0x5c6f10){_0x4ac438=_0x5c6f10;_0x5bb638=0xc8;}else{_0x5bb638=0xce;}_0x4ec6a1[_0xc5ea('0x19')](_0x5bb638);return _0x4ec6a1[_0xc5ea('0x1f')](_0xc5ea('0x20'),_0x218093+'-'+_0x4ac438+'/'+_0x5c6f10)['json'](_0x1b1e10);}return null;};}function patchUpdates(_0x3e1dc8){return function(_0x58702a){try{jsonpatch[_0xc5ea('0x21')](_0x58702a,_0x3e1dc8,!![]);}catch(_0x33b7d2){return BPromise[_0xc5ea('0x22')](_0x33b7d2);}return _0x58702a['save']();};}function saveUpdates(_0x50ecfa,_0x3f28d2){return function(_0x19074e){if(_0x19074e){return _0x19074e[_0xc5ea('0x23')](_0x50ecfa)[_0xc5ea('0x24')](function(_0x2f5bb2){return _0x2f5bb2;});}return null;};}function removeEntity(_0x3df497,_0x5f5684){return function(_0x5f3452){if(_0x5f3452){return _0x5f3452[_0xc5ea('0x25')]()[_0xc5ea('0x24')](function(){_0x3df497[_0xc5ea('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x191f1a,_0x249dd5){return function(_0x308311){if(!_0x308311){_0x191f1a[_0xc5ea('0x26')](0x194);}return _0x308311;};}function handleError(_0x25fd20,_0xba4001){_0xba4001=_0xba4001||0x1f4;return function(_0x12f3cf){logger['error'](_0x12f3cf[_0xc5ea('0x27')]);if(_0x12f3cf[_0xc5ea('0x28')]){delete _0x12f3cf[_0xc5ea('0x28')];}_0x25fd20[_0xc5ea('0x19')](_0xba4001)[_0xc5ea('0x29')](_0x12f3cf);};}exports[_0xc5ea('0x2a')]=function(_0x459760,_0x37c673){var _0x219dab={},_0x447919={},_0x23ec46={'count':0x0,'rows':[]};var _0x457fff=_['map'](db[_0xc5ea('0x2b')]['rawAttributes'],function(_0x3dd7fe){return{'name':_0x3dd7fe[_0xc5ea('0x2c')],'type':_0x3dd7fe[_0xc5ea('0x2d')][_0xc5ea('0x2e')]};});_0x447919['model']=_[_0xc5ea('0x2f')](_0x457fff,'name');_0x447919['query']=_['keys'](_0x459760[_0xc5ea('0x30')]);_0x447919['filters']=_[_0xc5ea('0x31')](_0x447919[_0xc5ea('0x32')],_0x447919[_0xc5ea('0x30')]);_0x219dab[_0xc5ea('0x33')]=_['intersection'](_0x447919[_0xc5ea('0x32')],qs[_0xc5ea('0x34')](_0x459760[_0xc5ea('0x30')][_0xc5ea('0x34')]));_0x219dab[_0xc5ea('0x33')]=_0x219dab[_0xc5ea('0x33')][_0xc5ea('0x35')]?_0x219dab[_0xc5ea('0x33')]:_0x447919[_0xc5ea('0x32')];if(!_0x459760[_0xc5ea('0x30')][_0xc5ea('0x36')](_0xc5ea('0x37'))){_0x219dab[_0xc5ea('0x1d')]=qs['limit'](_0x459760[_0xc5ea('0x30')][_0xc5ea('0x1d')]);_0x219dab[_0xc5ea('0x1b')]=qs[_0xc5ea('0x1b')](_0x459760['query'][_0xc5ea('0x1b')]);}_0x219dab[_0xc5ea('0x38')]=qs[_0xc5ea('0x39')](_0x459760[_0xc5ea('0x30')][_0xc5ea('0x39')]);_0x219dab[_0xc5ea('0x3a')]=qs[_0xc5ea('0x3b')](_[_0xc5ea('0x3c')](_0x459760[_0xc5ea('0x30')],_0x447919['filters']),_0x457fff);if(_0x459760['query'][_0xc5ea('0x3d')]){_0x219dab[_0xc5ea('0x3a')]=_[_0xc5ea('0x3e')](_0x219dab[_0xc5ea('0x3a')],{'$or':_[_0xc5ea('0x2f')](_0x457fff,function(_0x1b4002){if(_0x1b4002[_0xc5ea('0x2d')]!=='VIRTUAL'){var _0x34a07c={};_0x34a07c[_0x1b4002[_0xc5ea('0x28')]]={'$like':'%'+_0x459760[_0xc5ea('0x30')][_0xc5ea('0x3d')]+'%'};return _0x34a07c;}})});}_0x219dab=_[_0xc5ea('0x3e')]({},_0x219dab,_0x459760['options']);var _0x1fb66c={'where':_0x219dab[_0xc5ea('0x3a')]};return db[_0xc5ea('0x2b')][_0xc5ea('0x1e')](_0x1fb66c)['then'](function(_0x499c29){_0x23ec46[_0xc5ea('0x1e')]=_0x499c29;if(_0x459760[_0xc5ea('0x30')][_0xc5ea('0x3f')]){_0x219dab['include']=[{'all':!![]}];}return db[_0xc5ea('0x2b')]['findAll'](_0x219dab);})[_0xc5ea('0x24')](function(_0x28aac7){_0x23ec46[_0xc5ea('0x40')]=_0x28aac7;return _0x23ec46;})[_0xc5ea('0x24')](respondWithFilteredResult(_0x37c673,_0x219dab))[_0xc5ea('0x41')](handleError(_0x37c673,null));};exports['show']=function(_0x183694,_0x3c944d){var _0x3cca89={'raw':!![],'where':{'id':_0x183694[_0xc5ea('0x42')]['id']}},_0x3ac27d={};_0x3ac27d['model']=_[_0xc5ea('0x43')](db[_0xc5ea('0x2b')][_0xc5ea('0x44')]);_0x3ac27d[_0xc5ea('0x30')]=_[_0xc5ea('0x43')](_0x183694[_0xc5ea('0x30')]);_0x3ac27d[_0xc5ea('0x3b')]=_[_0xc5ea('0x31')](_0x3ac27d[_0xc5ea('0x32')],_0x3ac27d[_0xc5ea('0x30')]);_0x3cca89[_0xc5ea('0x33')]=_['intersection'](_0x3ac27d['model'],qs[_0xc5ea('0x34')](_0x183694[_0xc5ea('0x30')][_0xc5ea('0x34')]));_0x3cca89[_0xc5ea('0x33')]=_0x3cca89[_0xc5ea('0x33')][_0xc5ea('0x35')]?_0x3cca89['attributes']:_0x3ac27d[_0xc5ea('0x32')];if(_0x183694[_0xc5ea('0x30')][_0xc5ea('0x3f')]){_0x3cca89[_0xc5ea('0x45')]=[{'all':!![]}];}_0x3cca89=_[_0xc5ea('0x3e')]({},_0x3cca89,_0x183694[_0xc5ea('0x46')]);return db[_0xc5ea('0x2b')]['find'](_0x3cca89)[_0xc5ea('0x24')](handleEntityNotFound(_0x3c944d,null))[_0xc5ea('0x24')](respondWithResult(_0x3c944d,null))[_0xc5ea('0x41')](handleError(_0x3c944d,null));};exports[_0xc5ea('0x47')]=function(_0x129789,_0x1459df){return db[_0xc5ea('0x2b')][_0xc5ea('0x47')](_0x129789[_0xc5ea('0x48')],{})[_0xc5ea('0x24')](respondWithResult(_0x1459df,0xc9))[_0xc5ea('0x41')](handleError(_0x1459df,null));};exports['update']=function(_0x561706,_0x48e57e){if(_0x561706[_0xc5ea('0x48')]['id']){delete _0x561706['body']['id'];}return db[_0xc5ea('0x2b')]['find']({'where':{'id':_0x561706[_0xc5ea('0x42')]['id']}})[_0xc5ea('0x24')](handleEntityNotFound(_0x48e57e,null))[_0xc5ea('0x24')](saveUpdates(_0x561706[_0xc5ea('0x48')],null))[_0xc5ea('0x24')](respondWithResult(_0x48e57e,null))[_0xc5ea('0x41')](handleError(_0x48e57e,null));};exports[_0xc5ea('0x25')]=function(_0x54435f,_0xee2c0d){return db[_0xc5ea('0x2b')][_0xc5ea('0x49')]({'where':{'id':_0x54435f['params']['id']}})[_0xc5ea('0x24')](handleEntityNotFound(_0xee2c0d,null))['then'](removeEntity(_0xee2c0d,null))[_0xc5ea('0x41')](handleError(_0xee2c0d,null));}; \ No newline at end of file diff --git a/server/api/intServicenowField/intServicenowField.model.js b/server/api/intServicenowField/intServicenowField.model.js new file mode 100644 index 0000000..4df4318 --- /dev/null +++ b/server/api/intServicenowField/intServicenowField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe4c0=['int_servicenow_fields','servicenow_unique_index','idField','FieldId','util','moment','request-promise','path','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField'];(function(_0x222d6e,_0x35dec2){var _0x1208e1=function(_0x4bd22b){while(--_0x4bd22b){_0x222d6e['push'](_0x222d6e['shift']());}};_0x1208e1(++_0x35dec2);}(_0xe4c0,0xe1));var _0x0e4c=function(_0x369a98,_0x32250c){_0x369a98=_0x369a98-0x0;var _0x29565c=_0xe4c0[_0x369a98];return _0x29565c;};'use strict';var _=require('lodash');var util=require(_0x0e4c('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x0e4c('0x1'));var BPromise=require('bluebird');var rp=require(_0x0e4c('0x2'));var fs=require('fs');var path=require(_0x0e4c('0x3'));var rimraf=require('rimraf');var config=require(_0x0e4c('0x4'));var attributes=require(_0x0e4c('0x5'));module[_0x0e4c('0x6')]=function(_0xb998da,_0x572204){return _0xb998da[_0x0e4c('0x7')](_0x0e4c('0x8'),attributes,{'tableName':_0x0e4c('0x9'),'paranoid':![],'indexes':[{'name':_0x0e4c('0xa'),'fields':[_0x0e4c('0xb'),_0x0e4c('0xc')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intServicenowField/intServicenowField.rpc.js b/server/api/intServicenowField/intServicenowField.rpc.js new file mode 100644 index 0000000..9d62fc1 --- /dev/null +++ b/server/api/intServicenowField/intServicenowField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9ffd=['ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ServicenowField,\x20%s,\x20%s','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug'];(function(_0x3abde4,_0x5e0d86){var _0x59c745=function(_0x302fb5){while(--_0x302fb5){_0x3abde4['push'](_0x3abde4['shift']());}};_0x59c745(++_0x5e0d86);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x2cddd3,_0x1b6680){_0x2cddd3=_0x2cddd3-0x0;var _0x3501eb=_0x9ffd[_0x2cddd3];return _0x3501eb;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13ea8c,_0x270eb2,_0x45c60a){return new BPromise(function(_0x66282d,_0x13954e){return client[_0xd9ff('0xb')](_0x13ea8c,_0x45c60a)[_0xd9ff('0xc')](function(_0x58e728){logger['info']('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');logger[_0xd9ff('0xd')](_0xd9ff('0xe'),_0x270eb2,_0xd9ff('0xf'),JSON[_0xd9ff('0x10')](_0x58e728));if(_0x58e728[_0xd9ff('0x11')]){if(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x12')]===0x1f4){logger[_0xd9ff('0x11')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x13954e(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x13')]);}logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x66282d(_0x58e728[_0xd9ff('0x11')]['message']);}else{logger[_0xd9ff('0x15')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');_0x66282d(_0x58e728['result']['message']);}})[_0xd9ff('0x16')](function(_0x4f9d6d){logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x4f9d6d);_0x13954e(_0x4f9d6d);});});} \ No newline at end of file diff --git a/server/api/intSugarcrmAccount/index.js b/server/api/intSugarcrmAccount/index.js new file mode 100644 index 0000000..f74beab --- /dev/null +++ b/server/api/intSugarcrmAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x31cd79,_0x1a667a){var _0x12d5dd=function(_0x4a60e0){while(--_0x4a60e0){_0x31cd79['push'](_0x31cd79['shift']());}};_0x12d5dd(++_0x1a667a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js new file mode 100644 index 0000000..e6c258e --- /dev/null +++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3b04fb,_0x36a420){var _0x159be6=function(_0x5194c7){while(--_0x5194c7){_0x3b04fb['push'](_0x3b04fb['shift']());}};_0x159be6(++_0x36a420);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js new file mode 100644 index 0000000..749aa1b --- /dev/null +++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8fe0=['index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','name','merge','options','SugarcrmAccount','includeAll','include','rows','show','params','keys','find','catch','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmConfiguration','SugarcrmField','getFields','created_by','description','parent_id','parent_type','parent_name','direction','password','remoteUri','substring','lastIndexOf','POST','format','/service/v4_1/rest.php','JSON','stringify','PLAIN','Invalid\x20Login','%s%s','get_module_fields','values','module_fields','remove','includes','label','endsWith','value','test','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','sendStatus','error','stack','send'];(function(_0x26eb00,_0x535593){var _0x1b23dc=function(_0x4e531a){while(--_0x4e531a){_0x26eb00['push'](_0x26eb00['shift']());}};_0x1b23dc(++_0x535593);}(_0x8fe0,0x1ab));var _0x08fe=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x8fe0[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x08fe('0x0'));var rimraf=require(_0x08fe('0x1'));var zipdir=require(_0x08fe('0x2'));var jsonpatch=require(_0x08fe('0x3'));var rp=require(_0x08fe('0x4'));var moment=require(_0x08fe('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x08fe('0x6'));var util=require(_0x08fe('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x08fe('0x8'));var ejs=require(_0x08fe('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x08fe('0xa'));var squel=require(_0x08fe('0xb'));var crypto=require(_0x08fe('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x08fe('0xd'));var Redis=require(_0x08fe('0xe'));var authService=require(_0x08fe('0xf'));var qs=require(_0x08fe('0x10'));var as=require(_0x08fe('0x11'));var hardwareService=require(_0x08fe('0x12'));var logger=require('../../config/logger')(_0x08fe('0x13'));var utils=require(_0x08fe('0x14'));var config=require(_0x08fe('0x15'));var licenseUtil=require(_0x08fe('0x16'));var db=require(_0x08fe('0x17'))['db'];var integrations=require(_0x08fe('0x18'));function respondWithStatusCode(_0x44bde4,_0x5094fc){_0x5094fc=_0x5094fc||0xcc;return function(_0x38b8c6){if(_0x38b8c6){return _0x44bde4['sendStatus'](_0x5094fc);}return _0x44bde4[_0x08fe('0x19')](_0x5094fc)[_0x08fe('0x1a')]();};}function respondWithResult(_0x5c8bec,_0x8c2798){_0x8c2798=_0x8c2798||0xc8;return function(_0x32c713){if(_0x32c713){return _0x5c8bec[_0x08fe('0x19')](_0x8c2798)['json'](_0x32c713);}};}function respondWithFilteredResult(_0x361b5b,_0x24fc60){return function(_0x4ac8e8){if(_0x4ac8e8){var _0xb83ed7=typeof _0x24fc60[_0x08fe('0x1b')]===_0x08fe('0x1c')&&typeof _0x24fc60[_0x08fe('0x1d')]===_0x08fe('0x1c');var _0x3e24b8=_0x4ac8e8['count'];var _0x372b68=_0xb83ed7?0x0:_0x24fc60[_0x08fe('0x1b')];var _0x313f02=_0xb83ed7?_0x4ac8e8[_0x08fe('0x1e')]:_0x24fc60[_0x08fe('0x1b')]+_0x24fc60[_0x08fe('0x1d')];var _0x46f752;if(_0x313f02>=_0x3e24b8){_0x313f02=_0x3e24b8;_0x46f752=0xc8;}else{_0x46f752=0xce;}_0x361b5b[_0x08fe('0x19')](_0x46f752);return _0x361b5b[_0x08fe('0x1f')](_0x08fe('0x20'),_0x372b68+'-'+_0x313f02+'/'+_0x3e24b8)[_0x08fe('0x21')](_0x4ac8e8);}return null;};}function patchUpdates(_0x57fe96){return function(_0x31707d){try{jsonpatch['apply'](_0x31707d,_0x57fe96,!![]);}catch(_0x315e7c){return BPromise['reject'](_0x315e7c);}return _0x31707d[_0x08fe('0x22')]();};}function saveUpdates(_0x4f81da,_0x485c40){return function(_0x4e4be3){if(_0x4e4be3){return _0x4e4be3[_0x08fe('0x23')](_0x4f81da)['then'](function(_0x21f32b){return _0x21f32b;});}return null;};}function removeEntity(_0x2d66db,_0x2de9db){return function(_0x397352){if(_0x397352){return _0x397352['destroy']()[_0x08fe('0x24')](function(){_0x2d66db[_0x08fe('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4932f4,_0x392d4e){return function(_0x3b09c5){if(!_0x3b09c5){_0x4932f4[_0x08fe('0x25')](0x194);}return _0x3b09c5;};}function handleError(_0x2b2d68,_0x2a4fca){_0x2a4fca=_0x2a4fca||0x1f4;return function(_0x14b2fb){logger[_0x08fe('0x26')](_0x14b2fb[_0x08fe('0x27')]);if(_0x14b2fb['name']){delete _0x14b2fb['name'];}_0x2b2d68[_0x08fe('0x19')](_0x2a4fca)[_0x08fe('0x28')](_0x14b2fb);};}exports[_0x08fe('0x29')]=function(_0x106b51,_0x4082a1){var _0x2d3a27={},_0x57aca5={},_0x1fded9={'count':0x0,'rows':[]};var _0x1f8c09=_[_0x08fe('0x2a')](db['SugarcrmAccount'][_0x08fe('0x2b')],function(_0x1a34e3){return{'name':_0x1a34e3[_0x08fe('0x2c')],'type':_0x1a34e3['type'][_0x08fe('0x2d')]};});_0x57aca5[_0x08fe('0x2e')]=_[_0x08fe('0x2a')](_0x1f8c09,'name');_0x57aca5[_0x08fe('0x2f')]=_['keys'](_0x106b51['query']);_0x57aca5[_0x08fe('0x30')]=_[_0x08fe('0x31')](_0x57aca5[_0x08fe('0x2e')],_0x57aca5[_0x08fe('0x2f')]);_0x2d3a27[_0x08fe('0x32')]=_[_0x08fe('0x31')](_0x57aca5[_0x08fe('0x2e')],qs[_0x08fe('0x33')](_0x106b51[_0x08fe('0x2f')]['fields']));_0x2d3a27[_0x08fe('0x32')]=_0x2d3a27['attributes'][_0x08fe('0x34')]?_0x2d3a27[_0x08fe('0x32')]:_0x57aca5[_0x08fe('0x2e')];if(!_0x106b51[_0x08fe('0x2f')][_0x08fe('0x35')](_0x08fe('0x36'))){_0x2d3a27[_0x08fe('0x1d')]=qs[_0x08fe('0x1d')](_0x106b51['query'][_0x08fe('0x1d')]);_0x2d3a27[_0x08fe('0x1b')]=qs[_0x08fe('0x1b')](_0x106b51[_0x08fe('0x2f')]['offset']);}_0x2d3a27[_0x08fe('0x37')]=qs[_0x08fe('0x38')](_0x106b51[_0x08fe('0x2f')]['sort']);_0x2d3a27[_0x08fe('0x39')]=qs[_0x08fe('0x30')](_[_0x08fe('0x3a')](_0x106b51['query'],_0x57aca5[_0x08fe('0x30')]),_0x1f8c09);if(_0x106b51[_0x08fe('0x2f')][_0x08fe('0x3b')]){_0x2d3a27[_0x08fe('0x39')]=_['merge'](_0x2d3a27[_0x08fe('0x39')],{'$or':_[_0x08fe('0x2a')](_0x1f8c09,function(_0x35a732){if(_0x35a732[_0x08fe('0x3c')]!==_0x08fe('0x3d')){var _0x1183be={};_0x1183be[_0x35a732[_0x08fe('0x3e')]]={'$like':'%'+_0x106b51[_0x08fe('0x2f')][_0x08fe('0x3b')]+'%'};return _0x1183be;}})});}_0x2d3a27=_[_0x08fe('0x3f')]({},_0x2d3a27,_0x106b51[_0x08fe('0x40')]);var _0x3e0dca={'where':_0x2d3a27[_0x08fe('0x39')]};return db[_0x08fe('0x41')][_0x08fe('0x1e')](_0x3e0dca)[_0x08fe('0x24')](function(_0x151e67){_0x1fded9[_0x08fe('0x1e')]=_0x151e67;if(_0x106b51[_0x08fe('0x2f')][_0x08fe('0x42')]){_0x2d3a27[_0x08fe('0x43')]=[{'all':!![]}];}return db['SugarcrmAccount']['findAll'](_0x2d3a27);})[_0x08fe('0x24')](function(_0x2f064d){_0x1fded9[_0x08fe('0x44')]=_0x2f064d;return _0x1fded9;})[_0x08fe('0x24')](respondWithFilteredResult(_0x4082a1,_0x2d3a27))['catch'](handleError(_0x4082a1,null));};exports[_0x08fe('0x45')]=function(_0x247a5e,_0x322cc0){var _0x5af16e={'raw':![],'where':{'id':_0x247a5e[_0x08fe('0x46')]['id']}},_0x1364c8={};_0x1364c8[_0x08fe('0x2e')]=_[_0x08fe('0x47')](db[_0x08fe('0x41')]['rawAttributes']);_0x1364c8[_0x08fe('0x2f')]=_[_0x08fe('0x47')](_0x247a5e[_0x08fe('0x2f')]);_0x1364c8['filters']=_[_0x08fe('0x31')](_0x1364c8[_0x08fe('0x2e')],_0x1364c8[_0x08fe('0x2f')]);_0x5af16e['attributes']=_[_0x08fe('0x31')](_0x1364c8[_0x08fe('0x2e')],qs[_0x08fe('0x33')](_0x247a5e[_0x08fe('0x2f')]['fields']));_0x5af16e['attributes']=_0x5af16e[_0x08fe('0x32')][_0x08fe('0x34')]?_0x5af16e[_0x08fe('0x32')]:_0x1364c8[_0x08fe('0x2e')];if(_0x247a5e[_0x08fe('0x2f')][_0x08fe('0x42')]){_0x5af16e[_0x08fe('0x43')]=[{'all':!![]}];}_0x5af16e=_['merge']({},_0x5af16e,_0x247a5e[_0x08fe('0x40')]);return db[_0x08fe('0x41')][_0x08fe('0x48')](_0x5af16e)[_0x08fe('0x24')](handleEntityNotFound(_0x322cc0,null))['then'](respondWithResult(_0x322cc0,null))[_0x08fe('0x49')](handleError(_0x322cc0,null));};exports['create']=function(_0x4e92cd,_0x3abf19){return db['SugarcrmAccount'][_0x08fe('0x4a')](_0x4e92cd[_0x08fe('0x4b')],{})[_0x08fe('0x24')](respondWithResult(_0x3abf19,0xc9))[_0x08fe('0x49')](handleError(_0x3abf19,null));};exports[_0x08fe('0x23')]=function(_0x418cdb,_0x393967){if(_0x418cdb[_0x08fe('0x4b')]['id']){delete _0x418cdb[_0x08fe('0x4b')]['id'];}return db[_0x08fe('0x41')]['find']({'where':{'id':_0x418cdb['params']['id']}})[_0x08fe('0x24')](handleEntityNotFound(_0x393967,null))[_0x08fe('0x24')](saveUpdates(_0x418cdb[_0x08fe('0x4b')],null))[_0x08fe('0x24')](respondWithResult(_0x393967,null))[_0x08fe('0x49')](handleError(_0x393967,null));};exports['destroy']=function(_0x4ae4a6,_0x1f2802){return db[_0x08fe('0x41')][_0x08fe('0x48')]({'where':{'id':_0x4ae4a6[_0x08fe('0x46')]['id']}})[_0x08fe('0x24')](handleEntityNotFound(_0x1f2802,null))[_0x08fe('0x24')](removeEntity(_0x1f2802,null))[_0x08fe('0x49')](handleError(_0x1f2802,null));};exports[_0x08fe('0x4c')]=function(_0x3c91f8,_0x14df04,_0x297e8e){var _0xa71b89={};var _0x1c0155={};var _0x2942ef;var _0x207a03;return db[_0x08fe('0x41')][_0x08fe('0x4d')]({'where':{'id':_0x3c91f8[_0x08fe('0x46')]['id']}})[_0x08fe('0x24')](handleEntityNotFound(_0x14df04,null))['then'](function(_0x298470){if(_0x298470){_0x2942ef=_0x298470;_0x1c0155[_0x08fe('0x2e')]=_[_0x08fe('0x47')](db['SugarcrmConfiguration']['rawAttributes']);_0x1c0155[_0x08fe('0x2f')]=_[_0x08fe('0x47')](_0x3c91f8[_0x08fe('0x2f')]);_0x1c0155['filters']=_[_0x08fe('0x31')](_0x1c0155['model'],_0x1c0155[_0x08fe('0x2f')]);_0xa71b89[_0x08fe('0x32')]=_[_0x08fe('0x31')](_0x1c0155[_0x08fe('0x2e')],qs[_0x08fe('0x33')](_0x3c91f8[_0x08fe('0x2f')][_0x08fe('0x33')]));_0xa71b89[_0x08fe('0x32')]=_0xa71b89['attributes']['length']?_0xa71b89[_0x08fe('0x32')]:_0x1c0155[_0x08fe('0x2e')];_0xa71b89[_0x08fe('0x37')]=qs[_0x08fe('0x38')](_0x3c91f8[_0x08fe('0x2f')][_0x08fe('0x38')]);_0xa71b89['where']=qs[_0x08fe('0x30')](_[_0x08fe('0x3a')](_0x3c91f8[_0x08fe('0x2f')],_0x1c0155[_0x08fe('0x30')]));if(_0x3c91f8[_0x08fe('0x2f')][_0x08fe('0x3b')]){_0xa71b89[_0x08fe('0x39')]=_[_0x08fe('0x3f')](_0xa71b89[_0x08fe('0x39')],{'$or':_[_0x08fe('0x2a')](_0xa71b89[_0x08fe('0x32')],function(_0xcc20a9){var _0x131b39={};_0x131b39[_0xcc20a9]={'$like':'%'+_0x3c91f8[_0x08fe('0x2f')]['filter']+'%'};return _0x131b39;})});}_0xa71b89=_[_0x08fe('0x3f')]({},_0xa71b89,_0x3c91f8[_0x08fe('0x40')]);return _0x2942ef[_0x08fe('0x4c')](_0xa71b89);}})[_0x08fe('0x24')](function(_0x4a3764){if(_0x4a3764){_0x207a03=_0x4a3764[_0x08fe('0x34')];if(!_0x3c91f8[_0x08fe('0x2f')][_0x08fe('0x35')](_0x08fe('0x36'))){_0xa71b89['limit']=qs[_0x08fe('0x1d')](_0x3c91f8['query'][_0x08fe('0x1d')]);_0xa71b89[_0x08fe('0x1b')]=qs[_0x08fe('0x1b')](_0x3c91f8[_0x08fe('0x2f')]['offset']);}return _0x2942ef[_0x08fe('0x4c')](_0xa71b89);}})[_0x08fe('0x24')](function(_0x22bc96){if(_0x22bc96){return _0x22bc96?{'count':_0x207a03,'rows':_0x22bc96}:null;}})[_0x08fe('0x24')](respondWithResult(_0x14df04,null))['catch'](handleError(_0x14df04,null));};exports[_0x08fe('0x4e')]=function(_0x1a066b,_0x455e81,_0xb820d){if(_0x1a066b[_0x08fe('0x4b')]['id']){delete _0x1a066b[_0x08fe('0x4b')]['id'];}return db[_0x08fe('0x41')][_0x08fe('0x4d')]({'where':{'id':_0x1a066b[_0x08fe('0x46')]['id']}})[_0x08fe('0x24')](handleEntityNotFound(_0x455e81,null))[_0x08fe('0x24')](function(_0x427f1b){if(_0x427f1b){_0x1a066b[_0x08fe('0x4b')][_0x08fe('0x4f')]=_0x427f1b['id'];_0x1a066b[_0x08fe('0x4b')][_0x08fe('0x50')]=integrations[_0x08fe('0x51')](_0x1a066b['body'][_0x08fe('0x52')],_0x1a066b[_0x08fe('0x4b')]['type']);_0x1a066b['body'][_0x08fe('0x53')]=integrations[_0x08fe('0x54')](_0x1a066b[_0x08fe('0x4b')][_0x08fe('0x52')],_0x1a066b['body'][_0x08fe('0x3c')]);return db[_0x08fe('0x55')][_0x08fe('0x4a')](_0x1a066b[_0x08fe('0x4b')],{'include':[{'model':db[_0x08fe('0x56')],'as':'Subjects'},{'model':db['SugarcrmField'],'as':'Descriptions'}]});}return null;})[_0x08fe('0x24')](respondWithResult(_0x455e81,null))[_0x08fe('0x49')](handleError(_0x455e81,null));};exports[_0x08fe('0x57')]=function(_0x1454e7,_0x32772d,_0x4cc4c1){var _0x13deeb='';var _0x38a0ee=['id','name','assigned_user_id',_0x08fe('0x58'),_0x08fe('0x59'),'date_start','duration_hours','duration_minutes',_0x08fe('0x5a'),_0x08fe('0x5b'),_0x08fe('0x5c'),_0x08fe('0x5d')];return db[_0x08fe('0x41')]['findOne']({'where':{'id':_0x1454e7['params']['id']},'attributes':['id','username',_0x08fe('0x5e'),_0x08fe('0x5f')]})[_0x08fe('0x24')](handleEntityNotFound(_0x32772d,null))['then'](function(_0x49ecfb){if(_0x49ecfb){_0x13deeb=_0x49ecfb[_0x08fe('0x5f')];var _0x4f0c14=_0x13deeb['slice'](-0x1);if(_0x4f0c14==='/'){_0x13deeb=_0x13deeb[_0x08fe('0x60')](0x0,_0x13deeb[_0x08fe('0x61')](_0x4f0c14));}return rp({'method':_0x08fe('0x62'),'uri':util[_0x08fe('0x63')]('%s%s',_0x13deeb,_0x08fe('0x64')),'json':!![],'form':{'method':'login','input_type':_0x08fe('0x65'),'response_type':'JSON','rest_data':JSON[_0x08fe('0x66')]({'user_auth':{'user_name':_0x49ecfb['username'],'password':_0x49ecfb[_0x08fe('0x5e')],'encryption':_0x08fe('0x67')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x08fe('0x24')](function(_0x478849){if(_0x478849&&_0x478849[_0x08fe('0x3e')]!==_0x08fe('0x68')&&_0x478849[_0x08fe('0x3e')]!=='Password\x20Expired'){return rp({'method':'POST','uri':util[_0x08fe('0x63')](_0x08fe('0x69'),_0x13deeb,_0x08fe('0x64')),'json':!![],'form':{'method':_0x08fe('0x6a'),'input_type':'JSON','response_type':_0x08fe('0x65'),'rest_data':JSON[_0x08fe('0x66')]({'session':_0x478849['id'],'module_name':'Calls'})}})[_0x08fe('0x24')](function(_0x19677a){if(_0x19677a){var _0x43695e=_[_0x08fe('0x6b')](_0x19677a[_0x08fe('0x6c')]);_[_0x08fe('0x6d')](_0x43695e,function(_0xbd1d81){return _0x38a0ee[_0x08fe('0x6e')](_0xbd1d81[_0x08fe('0x3e')]);});return{'count':_0x43695e[_0x08fe('0x34')],'rows':_[_0x08fe('0x2a')](_0x43695e,function(_0x18edc0){return{'id':_0x18edc0[_0x08fe('0x3e')],'name':_0x18edc0[_0x08fe('0x6f')],'custom':_[_0x08fe('0x70')](_0x18edc0[_0x08fe('0x3e')],'_c')?!![]:![],'options':_0x18edc0[_0x08fe('0x40')]?_[_0x08fe('0x2a')](_[_0x08fe('0x6b')](_0x18edc0['options']),function(_0x2aeb62){return{'name':_0x2aeb62[_0x08fe('0x71')],'value':_0x2aeb62[_0x08fe('0x3e')]};}):[]};})};}})[_0x08fe('0x24')](respondWithResult(_0x32772d,null))[_0x08fe('0x49')](function(_0x12e474){var _0x37693c=_0x1454e7[_0x08fe('0x2f')]['test']?0x1f4:_0x12e474['statusCode']||0x1f4;logger[_0x08fe('0x26')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x37693c,JSON[_0x08fe('0x66')](_0x12e474));delete _0x12e474[_0x08fe('0x3e')];if(_0x37693c===0x191){_0x37693c=0x190;}_0x32772d['status'](_0x37693c)['send'](_0x1454e7['query'][_0x08fe('0x72')]?{'message':_0x08fe('0x73'),'statusCode':_0x12e474[_0x08fe('0x74')]}:_0x12e474);});}else{var _0x3a712f=0x1f4;_0x32772d[_0x08fe('0x19')](_0x3a712f)[_0x08fe('0x28')]({'message':_0x08fe('0x73'),'statusCode':0x190});}});}; \ No newline at end of file diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js new file mode 100644 index 0000000..a687815 --- /dev/null +++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd3ab=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash'];(function(_0x4ebabe,_0x10d36d){var _0x37860b=function(_0xd40279){while(--_0xd40279){_0x4ebabe['push'](_0x4ebabe['shift']());}};_0x37860b(++_0x10d36d);}(_0xd3ab,0x149));var _0xbd3a=function(_0x38d6a8,_0x38aa8e){_0x38d6a8=_0x38d6a8-0x0;var _0x2bd252=_0xd3ab[_0x38d6a8];return _0x2bd252;};'use strict';var _=require(_0xbd3a('0x0'));var util=require(_0xbd3a('0x1'));var logger=require(_0xbd3a('0x2'))(_0xbd3a('0x3'));var moment=require(_0xbd3a('0x4'));var BPromise=require(_0xbd3a('0x5'));var rp=require(_0xbd3a('0x6'));var fs=require('fs');var path=require(_0xbd3a('0x7'));var rimraf=require(_0xbd3a('0x8'));var config=require(_0xbd3a('0x9'));var attributes=require(_0xbd3a('0xa'));var integrations=require('../../components/integrations/configuration');module[_0xbd3a('0xb')]=function(_0x49ac7c,_0x19835d){return _0x49ac7c[_0xbd3a('0xc')](_0xbd3a('0xd'),attributes,{'tableName':_0xbd3a('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js new file mode 100644 index 0000000..8bee446 --- /dev/null +++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x61a4=['jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','include','map','model','stringify','ShowSugarcrmAccount','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x58ab41,_0x392cde){var _0x432789=function(_0x3b6982){while(--_0x3b6982){_0x58ab41['push'](_0x58ab41['shift']());}};_0x432789(++_0x392cde);}(_0x61a4,0x87));var _0x461a=function(_0x29c6e4,_0x59396c){_0x29c6e4=_0x29c6e4-0x0;var _0x1d250a=_0x61a4[_0x29c6e4];return _0x1d250a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x461a('0x0'));var BPromise=require(_0x461a('0x1'));var rs=require(_0x461a('0x2'));var fs=require('fs');var Redis=require(_0x461a('0x3'));var db=require(_0x461a('0x4'))['db'];var utils=require(_0x461a('0x5'));var logger=require(_0x461a('0x6'))(_0x461a('0x7'));var config=require(_0x461a('0x8'));var jayson=require(_0x461a('0x9'));var client=jayson[_0x461a('0xa')][_0x461a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3272e9,_0x19e6b7,_0x20b735){return new BPromise(function(_0x90513,_0x4169d1){return client[_0x461a('0xc')](_0x3272e9,_0x20b735)[_0x461a('0xd')](function(_0x55106f){logger[_0x461a('0xe')](_0x461a('0xf'),_0x19e6b7,_0x461a('0x10'));logger[_0x461a('0x11')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x19e6b7,'request\x20sent',JSON['stringify'](_0x55106f));if(_0x55106f[_0x461a('0x12')]){if(_0x55106f[_0x461a('0x12')][_0x461a('0x13')]===0x1f4){logger[_0x461a('0x12')](_0x461a('0xf'),_0x19e6b7,_0x55106f['error'][_0x461a('0x14')]);return _0x4169d1(_0x55106f[_0x461a('0x12')][_0x461a('0x14')]);}logger[_0x461a('0x12')](_0x461a('0xf'),_0x19e6b7,_0x55106f[_0x461a('0x12')][_0x461a('0x14')]);return _0x90513(_0x55106f[_0x461a('0x12')][_0x461a('0x14')]);}else{logger[_0x461a('0xe')](_0x461a('0xf'),_0x19e6b7,'request\x20sent');_0x90513(_0x55106f[_0x461a('0x15')][_0x461a('0x14')]);}})[_0x461a('0x16')](function(_0x3ef470){logger[_0x461a('0x12')](_0x461a('0xf'),_0x19e6b7,_0x3ef470);_0x4169d1(_0x3ef470);});});}exports[_0x461a('0x17')]=function(_0x4f9e07){var _0x3372ca=this;return new Promise(function(_0x277aeb,_0x1f515e){return db[_0x461a('0x18')][_0x461a('0x19')]({'raw':_0x4f9e07[_0x461a('0x1a')]?_0x4f9e07[_0x461a('0x1a')][_0x461a('0x1b')]===undefined?!![]:![]:!![],'where':_0x4f9e07['options']?_0x4f9e07[_0x461a('0x1a')][_0x461a('0x1c')]||null:null,'attributes':_0x4f9e07[_0x461a('0x1a')]?_0x4f9e07[_0x461a('0x1a')][_0x461a('0x1d')]||null:null,'limit':_0x4f9e07[_0x461a('0x1a')]?_0x4f9e07['options']['limit']||null:null,'include':_0x4f9e07[_0x461a('0x1a')]?_0x4f9e07[_0x461a('0x1a')][_0x461a('0x1e')]?_[_0x461a('0x1f')](_0x4f9e07['options']['include'],function(_0x4fe465){return{'model':db[_0x4fe465[_0x461a('0x20')]],'as':_0x4fe465['as'],'attributes':_0x4fe465['attributes'],'include':_0x4fe465['include']?_[_0x461a('0x1f')](_0x4fe465[_0x461a('0x1e')],function(_0x481f03){return{'model':db[_0x481f03[_0x461a('0x20')]],'as':_0x481f03['as'],'attributes':_0x481f03[_0x461a('0x1d')],'include':_0x481f03[_0x461a('0x1e')]?_[_0x461a('0x1f')](_0x481f03[_0x461a('0x1e')],function(_0x470a8a){return{'model':db[_0x470a8a['model']],'as':_0x470a8a['as'],'attributes':_0x470a8a[_0x461a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x461a('0xd')](function(_0x1b6e0c){logger['info'](_0x461a('0x17'),_0x4f9e07);logger[_0x461a('0x11')](_0x461a('0x17'),_0x4f9e07,JSON[_0x461a('0x21')](_0x1b6e0c));_0x277aeb(_0x1b6e0c);})['catch'](function(_0x4f94ea){logger[_0x461a('0x12')](_0x461a('0x17'),_0x4f94ea[_0x461a('0x14')],_0x4f9e07);_0x1f515e(_0x3372ca[_0x461a('0x12')](0x1f4,_0x4f94ea[_0x461a('0x14')]));});});};exports[_0x461a('0x22')]=function(_0x288e43){var _0x4f73b3=this;return new Promise(function(_0x479896,_0x414726){return db[_0x461a('0x18')][_0x461a('0x23')]({'raw':_0x288e43['options']?_0x288e43[_0x461a('0x1a')][_0x461a('0x1b')]===undefined?!![]:![]:!![],'where':_0x288e43[_0x461a('0x1a')]?_0x288e43[_0x461a('0x1a')][_0x461a('0x1c')]||null:null,'attributes':_0x288e43['options']?_0x288e43[_0x461a('0x1a')][_0x461a('0x1d')]||null:null,'include':_0x288e43[_0x461a('0x1a')]?_0x288e43['options'][_0x461a('0x1e')]?_[_0x461a('0x1f')](_0x288e43['options'][_0x461a('0x1e')],function(_0x6de0c3){return{'model':db[_0x6de0c3[_0x461a('0x20')]],'as':_0x6de0c3['as'],'attributes':_0x6de0c3[_0x461a('0x1d')],'include':_0x6de0c3[_0x461a('0x1e')]?_[_0x461a('0x1f')](_0x6de0c3[_0x461a('0x1e')],function(_0x233060){return{'model':db[_0x233060[_0x461a('0x20')]],'as':_0x233060['as'],'attributes':_0x233060['attributes'],'include':_0x233060[_0x461a('0x1e')]?_[_0x461a('0x1f')](_0x233060[_0x461a('0x1e')],function(_0x5dc668){return{'model':db[_0x5dc668[_0x461a('0x20')]],'as':_0x5dc668['as'],'attributes':_0x5dc668[_0x461a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x183f31){logger[_0x461a('0xe')](_0x461a('0x22'),_0x288e43);logger[_0x461a('0x11')]('ShowSugarcrmAccount',_0x288e43,JSON[_0x461a('0x21')](_0x183f31));_0x479896(_0x183f31);})[_0x461a('0x16')](function(_0x34428f){logger[_0x461a('0x12')]('ShowSugarcrmAccount',_0x34428f[_0x461a('0x14')],_0x288e43);_0x414726(_0x4f73b3[_0x461a('0x12')](0x1f4,_0x34428f[_0x461a('0x14')]));});});}; \ No newline at end of file diff --git a/server/api/intSugarcrmConfiguration/index.js b/server/api/intSugarcrmConfiguration/index.js new file mode 100644 index 0000000..383e2ef --- /dev/null +++ b/server/api/intSugarcrmConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb873=['create','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post'];(function(_0x33a65f,_0xa972fa){var _0x251674=function(_0x4ba5d6){while(--_0x4ba5d6){_0x33a65f['push'](_0x33a65f['shift']());}};_0x251674(++_0xa972fa);}(_0xb873,0x13c));var _0x3b87=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0xb873[_0xa6cc5c];return _0x44803d;};'use strict';var multer=require('multer');var util=require(_0x3b87('0x0'));var path=require(_0x3b87('0x1'));var timeout=require(_0x3b87('0x2'));var express=require(_0x3b87('0x3'));var router=express[_0x3b87('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3b87('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3b87('0x6'));var controller=require(_0x3b87('0x7'));router[_0x3b87('0x8')]('/',auth[_0x3b87('0x9')](),controller[_0x3b87('0xa')]);router[_0x3b87('0x8')](_0x3b87('0xb'),auth[_0x3b87('0x9')](),controller[_0x3b87('0xc')]);router[_0x3b87('0x8')](_0x3b87('0xd'),auth[_0x3b87('0x9')](),controller[_0x3b87('0xe')]);router[_0x3b87('0x8')](_0x3b87('0xf'),auth[_0x3b87('0x9')](),controller[_0x3b87('0x10')]);router[_0x3b87('0x8')](_0x3b87('0x11'),auth['isAuthenticated'](),controller[_0x3b87('0x12')]);router[_0x3b87('0x13')]('/',auth[_0x3b87('0x9')](),controller[_0x3b87('0x14')]);router['put'](_0x3b87('0xb'),auth[_0x3b87('0x9')](),controller['update']);router[_0x3b87('0x15')](_0x3b87('0xb'),auth[_0x3b87('0x9')](),controller[_0x3b87('0x16')]);module[_0x3b87('0x17')]=router; \ No newline at end of file diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js new file mode 100644 index 0000000..ed4443c --- /dev/null +++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc1c9=['exports','STRING'];(function(_0x1482b0,_0x312f02){var _0x4ad15f=function(_0x2621f9){while(--_0x2621f9){_0x1482b0['push'](_0x1482b0['shift']());}};_0x4ad15f(++_0x312f02);}(_0xc1c9,0x66));var _0x9c1c=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xc1c9[_0x39096d];return _0x13da4f;};'use strict';var Sequelize=require('sequelize');module[_0x9c1c('0x0')]={'name':{'type':Sequelize[_0x9c1c('0x1')]},'description':{'type':Sequelize[_0x9c1c('0x1')]}}; \ No newline at end of file diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js new file mode 100644 index 0000000..afb4cb8 --- /dev/null +++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb8f0=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','SugarcrmConfiguration','findAll','rows','catch','show','length','find','create','body','params','destroy','findOne','SugarcrmField','getFields','hasOwnProperty','getSubjects','getDescriptions','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index'];(function(_0x17202e,_0x4c408d){var _0x4dbb09=function(_0x5a7ca8){while(--_0x5a7ca8){_0x17202e['push'](_0x17202e['shift']());}};_0x4dbb09(++_0x4c408d);}(_0xb8f0,0x78));var _0x0b8f=function(_0x231e1f,_0x2ea0d9){_0x231e1f=_0x231e1f-0x0;var _0x5832f3=_0xb8f0[_0x231e1f];return _0x5832f3;};'use strict';var emlformat=require(_0x0b8f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0b8f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0b8f('0x2'));var moment=require(_0x0b8f('0x3'));var BPromise=require(_0x0b8f('0x4'));var Mustache=require(_0x0b8f('0x5'));var util=require(_0x0b8f('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0b8f('0x7'));var ejs=require(_0x0b8f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0b8f('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0b8f('0xa'));var toCsv=require(_0x0b8f('0x7'));var querystring=require(_0x0b8f('0xb'));var Papa=require('papaparse');var Redis=require(_0x0b8f('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x0b8f('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0b8f('0xe'));var logger=require(_0x0b8f('0xf'))(_0x0b8f('0x10'));var utils=require(_0x0b8f('0x11'));var config=require(_0x0b8f('0x12'));var licenseUtil=require(_0x0b8f('0x13'));var db=require(_0x0b8f('0x14'))['db'];function respondWithStatusCode(_0x4d63d9,_0x5c8e5b){_0x5c8e5b=_0x5c8e5b||0xcc;return function(_0x344e02){if(_0x344e02){return _0x4d63d9[_0x0b8f('0x15')](_0x5c8e5b);}return _0x4d63d9[_0x0b8f('0x16')](_0x5c8e5b)[_0x0b8f('0x17')]();};}function respondWithResult(_0x378d3d,_0x206103){_0x206103=_0x206103||0xc8;return function(_0x4cfdb2){if(_0x4cfdb2){return _0x378d3d[_0x0b8f('0x16')](_0x206103)[_0x0b8f('0x18')](_0x4cfdb2);}};}function respondWithFilteredResult(_0x6be765,_0x4ea060){return function(_0x57cc49){if(_0x57cc49){var _0x4ebceb=typeof _0x4ea060[_0x0b8f('0x19')]==='undefined'&&typeof _0x4ea060[_0x0b8f('0x1a')]===_0x0b8f('0x1b');var _0x5c0fd6=_0x57cc49[_0x0b8f('0x1c')];var _0x66268c=_0x4ebceb?0x0:_0x4ea060[_0x0b8f('0x19')];var _0x73ee1b=_0x4ebceb?_0x57cc49[_0x0b8f('0x1c')]:_0x4ea060[_0x0b8f('0x19')]+_0x4ea060[_0x0b8f('0x1a')];var _0x1a6080;if(_0x73ee1b>=_0x5c0fd6){_0x73ee1b=_0x5c0fd6;_0x1a6080=0xc8;}else{_0x1a6080=0xce;}_0x6be765['status'](_0x1a6080);return _0x6be765['set'](_0x0b8f('0x1d'),_0x66268c+'-'+_0x73ee1b+'/'+_0x5c0fd6)[_0x0b8f('0x18')](_0x57cc49);}return null;};}function patchUpdates(_0x3d76ad){return function(_0x2763db){try{jsonpatch[_0x0b8f('0x1e')](_0x2763db,_0x3d76ad,!![]);}catch(_0x2527ec){return BPromise[_0x0b8f('0x1f')](_0x2527ec);}return _0x2763db[_0x0b8f('0x20')]();};}function saveUpdates(_0x30cd3c,_0x34acdf){return function(_0x184486){if(_0x184486){return _0x184486[_0x0b8f('0x21')](_0x30cd3c)['then'](function(_0x2f4996){return _0x2f4996;});}return null;};}function removeEntity(_0x4a4535,_0xd1c04){return function(_0x37304b){if(_0x37304b){return _0x37304b['destroy']()[_0x0b8f('0x22')](function(){_0x4a4535[_0x0b8f('0x16')](0xcc)[_0x0b8f('0x17')]();});}};}function handleEntityNotFound(_0x7632fb,_0x2e7b0b){return function(_0x2b3993){if(!_0x2b3993){_0x7632fb[_0x0b8f('0x15')](0x194);}return _0x2b3993;};}function handleError(_0xdfb6b0,_0x146d00){_0x146d00=_0x146d00||0x1f4;return function(_0x19ec1f){logger[_0x0b8f('0x23')](_0x19ec1f[_0x0b8f('0x24')]);if(_0x19ec1f[_0x0b8f('0x25')]){delete _0x19ec1f['name'];}_0xdfb6b0['status'](_0x146d00)[_0x0b8f('0x26')](_0x19ec1f);};}exports[_0x0b8f('0x27')]=function(_0x57cce0,_0x2067cd){var _0x26a8ff={},_0x4b4369={},_0x599b77={'count':0x0,'rows':[]};var _0x562fb6=_[_0x0b8f('0x28')](db['SugarcrmConfiguration'][_0x0b8f('0x29')],function(_0x1f181e){return{'name':_0x1f181e[_0x0b8f('0x2a')],'type':_0x1f181e[_0x0b8f('0x2b')][_0x0b8f('0x2c')]};});_0x4b4369[_0x0b8f('0x2d')]=_['map'](_0x562fb6,_0x0b8f('0x25'));_0x4b4369[_0x0b8f('0x2e')]=_[_0x0b8f('0x2f')](_0x57cce0[_0x0b8f('0x2e')]);_0x4b4369[_0x0b8f('0x30')]=_[_0x0b8f('0x31')](_0x4b4369['model'],_0x4b4369[_0x0b8f('0x2e')]);_0x26a8ff['attributes']=_[_0x0b8f('0x31')](_0x4b4369[_0x0b8f('0x2d')],qs[_0x0b8f('0x32')](_0x57cce0[_0x0b8f('0x2e')]['fields']));_0x26a8ff[_0x0b8f('0x33')]=_0x26a8ff['attributes']['length']?_0x26a8ff[_0x0b8f('0x33')]:_0x4b4369[_0x0b8f('0x2d')];if(!_0x57cce0['query']['hasOwnProperty'](_0x0b8f('0x34'))){_0x26a8ff[_0x0b8f('0x1a')]=qs['limit'](_0x57cce0[_0x0b8f('0x2e')][_0x0b8f('0x1a')]);_0x26a8ff[_0x0b8f('0x19')]=qs[_0x0b8f('0x19')](_0x57cce0[_0x0b8f('0x2e')][_0x0b8f('0x19')]);}_0x26a8ff[_0x0b8f('0x35')]=qs[_0x0b8f('0x36')](_0x57cce0[_0x0b8f('0x2e')][_0x0b8f('0x36')]);_0x26a8ff[_0x0b8f('0x37')]=qs[_0x0b8f('0x30')](_[_0x0b8f('0x38')](_0x57cce0[_0x0b8f('0x2e')],_0x4b4369[_0x0b8f('0x30')]),_0x562fb6);if(_0x57cce0[_0x0b8f('0x2e')]['filter']){_0x26a8ff[_0x0b8f('0x37')]=_['merge'](_0x26a8ff[_0x0b8f('0x37')],{'$or':_['map'](_0x562fb6,function(_0x5f09f7){if(_0x5f09f7[_0x0b8f('0x2b')]!==_0x0b8f('0x39')){var _0x4da550={};_0x4da550[_0x5f09f7['name']]={'$like':'%'+_0x57cce0['query'][_0x0b8f('0x3a')]+'%'};return _0x4da550;}})});}_0x26a8ff=_[_0x0b8f('0x3b')]({},_0x26a8ff,_0x57cce0[_0x0b8f('0x3c')]);var _0x1e7f5e={'where':_0x26a8ff[_0x0b8f('0x37')]};return db['SugarcrmConfiguration'][_0x0b8f('0x1c')](_0x1e7f5e)['then'](function(_0xc1ebec){_0x599b77[_0x0b8f('0x1c')]=_0xc1ebec;if(_0x57cce0[_0x0b8f('0x2e')][_0x0b8f('0x3d')]){_0x26a8ff[_0x0b8f('0x3e')]=[{'all':!![]}];}return db[_0x0b8f('0x3f')][_0x0b8f('0x40')](_0x26a8ff);})['then'](function(_0x206afa){_0x599b77[_0x0b8f('0x41')]=_0x206afa;return _0x599b77;})['then'](respondWithFilteredResult(_0x2067cd,_0x26a8ff))[_0x0b8f('0x42')](handleError(_0x2067cd,null));};exports[_0x0b8f('0x43')]=function(_0x516647,_0x40ca03){var _0x39cb75={'raw':![],'where':{'id':_0x516647['params']['id']}},_0x3936a9={};_0x3936a9[_0x0b8f('0x2d')]=_['keys'](db[_0x0b8f('0x3f')]['rawAttributes']);_0x3936a9[_0x0b8f('0x2e')]=_['keys'](_0x516647[_0x0b8f('0x2e')]);_0x3936a9[_0x0b8f('0x30')]=_[_0x0b8f('0x31')](_0x3936a9['model'],_0x3936a9[_0x0b8f('0x2e')]);_0x39cb75[_0x0b8f('0x33')]=_[_0x0b8f('0x31')](_0x3936a9[_0x0b8f('0x2d')],qs[_0x0b8f('0x32')](_0x516647[_0x0b8f('0x2e')][_0x0b8f('0x32')]));_0x39cb75['attributes']=_0x39cb75[_0x0b8f('0x33')][_0x0b8f('0x44')]?_0x39cb75[_0x0b8f('0x33')]:_0x3936a9[_0x0b8f('0x2d')];if(_0x516647[_0x0b8f('0x2e')][_0x0b8f('0x3d')]){_0x39cb75[_0x0b8f('0x3e')]=[{'all':!![]}];}_0x39cb75=_[_0x0b8f('0x3b')]({},_0x39cb75,_0x516647[_0x0b8f('0x3c')]);return db[_0x0b8f('0x3f')][_0x0b8f('0x45')](_0x39cb75)[_0x0b8f('0x22')](handleEntityNotFound(_0x40ca03,null))[_0x0b8f('0x22')](respondWithResult(_0x40ca03,null))[_0x0b8f('0x42')](handleError(_0x40ca03,null));};exports[_0x0b8f('0x46')]=function(_0x391bc2,_0x3e8ae1){return db[_0x0b8f('0x3f')][_0x0b8f('0x46')](_0x391bc2[_0x0b8f('0x47')],{})[_0x0b8f('0x22')](respondWithResult(_0x3e8ae1,0xc9))[_0x0b8f('0x42')](handleError(_0x3e8ae1,null));};exports[_0x0b8f('0x21')]=function(_0x2c00c2,_0x3369e0){if(_0x2c00c2[_0x0b8f('0x47')]['id']){delete _0x2c00c2[_0x0b8f('0x47')]['id'];}return db[_0x0b8f('0x3f')][_0x0b8f('0x45')]({'where':{'id':_0x2c00c2[_0x0b8f('0x48')]['id']}})['then'](handleEntityNotFound(_0x3369e0,null))['then'](saveUpdates(_0x2c00c2[_0x0b8f('0x47')],null))['then'](respondWithResult(_0x3369e0,null))['catch'](handleError(_0x3369e0,null));};exports[_0x0b8f('0x49')]=function(_0x3dd65f,_0x5dd750){return db[_0x0b8f('0x3f')][_0x0b8f('0x45')]({'where':{'id':_0x3dd65f['params']['id']}})['then'](handleEntityNotFound(_0x5dd750,null))['then'](removeEntity(_0x5dd750,null))[_0x0b8f('0x42')](handleError(_0x5dd750,null));};exports['getFields']=function(_0x5399e3,_0x1c011b,_0x28ffa5){var _0x3ef011={};var _0x5b44d8={};var _0x52f997;var _0x2a2126;return db[_0x0b8f('0x3f')][_0x0b8f('0x4a')]({'where':{'id':_0x5399e3['params']['id']}})[_0x0b8f('0x22')](handleEntityNotFound(_0x1c011b,null))[_0x0b8f('0x22')](function(_0x49a0ef){if(_0x49a0ef){_0x52f997=_0x49a0ef;_0x5b44d8[_0x0b8f('0x2d')]=_[_0x0b8f('0x2f')](db[_0x0b8f('0x4b')][_0x0b8f('0x29')]);_0x5b44d8[_0x0b8f('0x2e')]=_['keys'](_0x5399e3['query']);_0x5b44d8[_0x0b8f('0x30')]=_['intersection'](_0x5b44d8['model'],_0x5b44d8[_0x0b8f('0x2e')]);_0x3ef011[_0x0b8f('0x33')]=_[_0x0b8f('0x31')](_0x5b44d8['model'],qs[_0x0b8f('0x32')](_0x5399e3['query'][_0x0b8f('0x32')]));_0x3ef011[_0x0b8f('0x33')]=_0x3ef011[_0x0b8f('0x33')][_0x0b8f('0x44')]?_0x3ef011[_0x0b8f('0x33')]:_0x5b44d8[_0x0b8f('0x2d')];_0x3ef011[_0x0b8f('0x35')]=qs[_0x0b8f('0x36')](_0x5399e3['query'][_0x0b8f('0x36')]);_0x3ef011[_0x0b8f('0x37')]=qs[_0x0b8f('0x30')](_[_0x0b8f('0x38')](_0x5399e3[_0x0b8f('0x2e')],_0x5b44d8[_0x0b8f('0x30')]));if(_0x5399e3[_0x0b8f('0x2e')][_0x0b8f('0x3a')]){_0x3ef011['where']=_[_0x0b8f('0x3b')](_0x3ef011[_0x0b8f('0x37')],{'$or':_['map'](_0x3ef011[_0x0b8f('0x33')],function(_0x1921d1){var _0x89f40d={};_0x89f40d[_0x1921d1]={'$like':'%'+_0x5399e3['query'][_0x0b8f('0x3a')]+'%'};return _0x89f40d;})});}_0x3ef011=_[_0x0b8f('0x3b')]({},_0x3ef011,_0x5399e3[_0x0b8f('0x3c')]);return _0x52f997[_0x0b8f('0x4c')](_0x3ef011);}})[_0x0b8f('0x22')](function(_0x169146){if(_0x169146){_0x2a2126=_0x169146[_0x0b8f('0x44')];if(!_0x5399e3['query'][_0x0b8f('0x4d')](_0x0b8f('0x34'))){_0x3ef011[_0x0b8f('0x1a')]=qs['limit'](_0x5399e3[_0x0b8f('0x2e')][_0x0b8f('0x1a')]);_0x3ef011[_0x0b8f('0x19')]=qs[_0x0b8f('0x19')](_0x5399e3[_0x0b8f('0x2e')]['offset']);}return _0x52f997[_0x0b8f('0x4c')](_0x3ef011);}})[_0x0b8f('0x22')](function(_0x1eb43d){if(_0x1eb43d){return _0x1eb43d?{'count':_0x2a2126,'rows':_0x1eb43d}:null;}})['then'](respondWithResult(_0x1c011b,null))[_0x0b8f('0x42')](handleError(_0x1c011b,null));};exports[_0x0b8f('0x4e')]=function(_0x25c01c,_0x5969e8,_0x5342d5){var _0x4a16d2={};var _0x41c45d={};var _0x5d852a;var _0x34379e;return db[_0x0b8f('0x3f')]['findOne']({'where':{'id':_0x25c01c[_0x0b8f('0x48')]['id']}})[_0x0b8f('0x22')](handleEntityNotFound(_0x5969e8,null))[_0x0b8f('0x22')](function(_0xdef875){if(_0xdef875){_0x5d852a=_0xdef875;_0x41c45d['model']=_[_0x0b8f('0x2f')](db[_0x0b8f('0x4b')][_0x0b8f('0x29')]);_0x41c45d[_0x0b8f('0x2e')]=_[_0x0b8f('0x2f')](_0x25c01c['query']);_0x41c45d[_0x0b8f('0x30')]=_[_0x0b8f('0x31')](_0x41c45d['model'],_0x41c45d[_0x0b8f('0x2e')]);_0x4a16d2[_0x0b8f('0x33')]=_[_0x0b8f('0x31')](_0x41c45d[_0x0b8f('0x2d')],qs[_0x0b8f('0x32')](_0x25c01c[_0x0b8f('0x2e')]['fields']));_0x4a16d2[_0x0b8f('0x33')]=_0x4a16d2['attributes']['length']?_0x4a16d2[_0x0b8f('0x33')]:_0x41c45d[_0x0b8f('0x2d')];_0x4a16d2[_0x0b8f('0x35')]=qs[_0x0b8f('0x36')](_0x25c01c[_0x0b8f('0x2e')][_0x0b8f('0x36')]);_0x4a16d2[_0x0b8f('0x37')]=qs[_0x0b8f('0x30')](_[_0x0b8f('0x38')](_0x25c01c['query'],_0x41c45d[_0x0b8f('0x30')]));if(_0x25c01c[_0x0b8f('0x2e')][_0x0b8f('0x3a')]){_0x4a16d2[_0x0b8f('0x37')]=_[_0x0b8f('0x3b')](_0x4a16d2[_0x0b8f('0x37')],{'$or':_[_0x0b8f('0x28')](_0x4a16d2[_0x0b8f('0x33')],function(_0x36ef97){var _0x2a9c52={};_0x2a9c52[_0x36ef97]={'$like':'%'+_0x25c01c[_0x0b8f('0x2e')][_0x0b8f('0x3a')]+'%'};return _0x2a9c52;})});}_0x4a16d2=_[_0x0b8f('0x3b')]({},_0x4a16d2,_0x25c01c['options']);return _0x5d852a[_0x0b8f('0x4e')](_0x4a16d2);}})['then'](function(_0x4e95e){if(_0x4e95e){_0x34379e=_0x4e95e[_0x0b8f('0x44')];if(!_0x25c01c['query']['hasOwnProperty'](_0x0b8f('0x34'))){_0x4a16d2[_0x0b8f('0x1a')]=qs[_0x0b8f('0x1a')](_0x25c01c[_0x0b8f('0x2e')]['limit']);_0x4a16d2[_0x0b8f('0x19')]=qs['offset'](_0x25c01c[_0x0b8f('0x2e')][_0x0b8f('0x19')]);}return _0x5d852a['getSubjects'](_0x4a16d2);}})[_0x0b8f('0x22')](function(_0x56a572){if(_0x56a572){return _0x56a572?{'count':_0x34379e,'rows':_0x56a572}:null;}})['then'](respondWithResult(_0x5969e8,null))['catch'](handleError(_0x5969e8,null));};exports[_0x0b8f('0x4f')]=function(_0x49ef29,_0x96c2a,_0x594080){var _0x32917a={};var _0x4a7135={};var _0x3e703c;var _0x3bcc64;return db['SugarcrmConfiguration'][_0x0b8f('0x4a')]({'where':{'id':_0x49ef29[_0x0b8f('0x48')]['id']}})[_0x0b8f('0x22')](handleEntityNotFound(_0x96c2a,null))[_0x0b8f('0x22')](function(_0x18bc04){if(_0x18bc04){_0x3e703c=_0x18bc04;_0x4a7135[_0x0b8f('0x2d')]=_[_0x0b8f('0x2f')](db['SugarcrmField'][_0x0b8f('0x29')]);_0x4a7135[_0x0b8f('0x2e')]=_['keys'](_0x49ef29['query']);_0x4a7135[_0x0b8f('0x30')]=_[_0x0b8f('0x31')](_0x4a7135['model'],_0x4a7135['query']);_0x32917a['attributes']=_[_0x0b8f('0x31')](_0x4a7135[_0x0b8f('0x2d')],qs[_0x0b8f('0x32')](_0x49ef29[_0x0b8f('0x2e')][_0x0b8f('0x32')]));_0x32917a['attributes']=_0x32917a['attributes'][_0x0b8f('0x44')]?_0x32917a[_0x0b8f('0x33')]:_0x4a7135[_0x0b8f('0x2d')];_0x32917a['order']=qs[_0x0b8f('0x36')](_0x49ef29[_0x0b8f('0x2e')][_0x0b8f('0x36')]);_0x32917a[_0x0b8f('0x37')]=qs[_0x0b8f('0x30')](_[_0x0b8f('0x38')](_0x49ef29['query'],_0x4a7135[_0x0b8f('0x30')]));if(_0x49ef29[_0x0b8f('0x2e')]['filter']){_0x32917a['where']=_[_0x0b8f('0x3b')](_0x32917a[_0x0b8f('0x37')],{'$or':_[_0x0b8f('0x28')](_0x32917a[_0x0b8f('0x33')],function(_0x59d1d5){var _0x2987ea={};_0x2987ea[_0x59d1d5]={'$like':'%'+_0x49ef29[_0x0b8f('0x2e')][_0x0b8f('0x3a')]+'%'};return _0x2987ea;})});}_0x32917a=_[_0x0b8f('0x3b')]({},_0x32917a,_0x49ef29[_0x0b8f('0x3c')]);return _0x3e703c[_0x0b8f('0x4f')](_0x32917a);}})['then'](function(_0xd7942b){if(_0xd7942b){_0x3bcc64=_0xd7942b['length'];if(!_0x49ef29[_0x0b8f('0x2e')][_0x0b8f('0x4d')](_0x0b8f('0x34'))){_0x32917a[_0x0b8f('0x1a')]=qs[_0x0b8f('0x1a')](_0x49ef29[_0x0b8f('0x2e')][_0x0b8f('0x1a')]);_0x32917a[_0x0b8f('0x19')]=qs[_0x0b8f('0x19')](_0x49ef29['query'][_0x0b8f('0x19')]);}return _0x3e703c['getDescriptions'](_0x32917a);}})['then'](function(_0xee0824){if(_0xee0824){return _0xee0824?{'count':_0x3bcc64,'rows':_0xee0824}:null;}})[_0x0b8f('0x22')](respondWithResult(_0x96c2a,null))[_0x0b8f('0x42')](handleError(_0x96c2a,null));}; \ No newline at end of file diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js new file mode 100644 index 0000000..29ab779 --- /dev/null +++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x88de=['../../config/logger','api','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','util'];(function(_0x4bbdf6,_0x11a583){var _0x40b5b8=function(_0x3f6de4){while(--_0x3f6de4){_0x4bbdf6['push'](_0x4bbdf6['shift']());}};_0x40b5b8(++_0x11a583);}(_0x88de,0x6d));var _0xe88d=function(_0x221f38,_0x569fef){_0x221f38=_0x221f38-0x0;var _0x30c462=_0x88de[_0x221f38];return _0x30c462;};'use strict';var _=require('lodash');var util=require(_0xe88d('0x0'));var logger=require(_0xe88d('0x1'))(_0xe88d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe88d('0x3'));var rimraf=require(_0xe88d('0x4'));var config=require(_0xe88d('0x5'));var attributes=require(_0xe88d('0x6'));module[_0xe88d('0x7')]=function(_0x16d77a,_0x309f22){return _0x16d77a[_0xe88d('0x8')](_0xe88d('0x9'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js new file mode 100644 index 0000000..0ba72cf --- /dev/null +++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdbbe=['message','result','catch','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','debug','request\x20sent','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s'];(function(_0x5a33ff,_0x1304fe){var _0x1b0ded=function(_0x105037){while(--_0x105037){_0x5a33ff['push'](_0x5a33ff['shift']());}};_0x1b0ded(++_0x1304fe);}(_0xdbbe,0xc1));var _0xedbb=function(_0x13ff53,_0x5e1424){_0x13ff53=_0x13ff53-0x0;var _0x290228=_0xdbbe[_0x13ff53];return _0x290228;};'use strict';var _=require(_0xedbb('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xedbb('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xedbb('0x2'))['db'];var utils=require(_0xedbb('0x3'));var logger=require(_0xedbb('0x4'))('rpc');var config=require(_0xedbb('0x5'));var jayson=require(_0xedbb('0x6'));var client=jayson['client'][_0xedbb('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xc630fb,_0x125a4a,_0x1eb9b5){return new BPromise(function(_0x4c2f4b,_0xbaff7a){return client[_0xedbb('0x8')](_0xc630fb,_0x1eb9b5)['then'](function(_0x1ab74b){logger[_0xedbb('0x9')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x125a4a,'request\x20sent');logger[_0xedbb('0xa')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x125a4a,_0xedbb('0xb'),JSON[_0xedbb('0xc')](_0x1ab74b));if(_0x1ab74b[_0xedbb('0xd')]){if(_0x1ab74b['error'][_0xedbb('0xe')]===0x1f4){logger[_0xedbb('0xd')](_0xedbb('0xf'),_0x125a4a,_0x1ab74b[_0xedbb('0xd')][_0xedbb('0x10')]);return _0xbaff7a(_0x1ab74b[_0xedbb('0xd')]['message']);}logger['error'](_0xedbb('0xf'),_0x125a4a,_0x1ab74b['error']['message']);return _0x4c2f4b(_0x1ab74b['error']['message']);}else{logger[_0xedbb('0x9')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x125a4a,'request\x20sent');_0x4c2f4b(_0x1ab74b[_0xedbb('0x11')][_0xedbb('0x10')]);}})[_0xedbb('0x12')](function(_0x2bf047){logger[_0xedbb('0xd')](_0xedbb('0xf'),_0x125a4a,_0x2bf047);_0xbaff7a(_0x2bf047);});});} \ No newline at end of file diff --git a/server/api/intSugarcrmField/index.js b/server/api/intSugarcrmField/index.js new file mode 100644 index 0000000..64ba657 --- /dev/null +++ b/server/api/intSugarcrmField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c8b=['index','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated'];(function(_0x167b19,_0x56081a){var _0x1fcca2=function(_0x544ca4){while(--_0x544ca4){_0x167b19['push'](_0x167b19['shift']());}};_0x1fcca2(++_0x56081a);}(_0x9c8b,0xbc));var _0xb9c8=function(_0x56aca7,_0xba610b){_0x56aca7=_0x56aca7-0x0;var _0x320701=_0x9c8b[_0x56aca7];return _0x320701;};'use strict';var multer=require(_0xb9c8('0x0'));var util=require(_0xb9c8('0x1'));var path=require(_0xb9c8('0x2'));var timeout=require(_0xb9c8('0x3'));var express=require(_0xb9c8('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb9c8('0x5'));var interaction=require(_0xb9c8('0x6'));var config=require('../../config/environment');var controller=require(_0xb9c8('0x7'));router[_0xb9c8('0x8')]('/',auth[_0xb9c8('0x9')](),controller[_0xb9c8('0xa')]);router[_0xb9c8('0x8')](_0xb9c8('0xb'),auth[_0xb9c8('0x9')](),controller['show']);router[_0xb9c8('0xc')]('/',auth[_0xb9c8('0x9')](),controller[_0xb9c8('0xd')]);router[_0xb9c8('0xe')](_0xb9c8('0xb'),auth['isAuthenticated'](),controller[_0xb9c8('0xf')]);router[_0xb9c8('0x10')](_0xb9c8('0xb'),auth[_0xb9c8('0x9')](),controller[_0xb9c8('0x11')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/intSugarcrmField/intSugarcrmField.attributes.js b/server/api/intSugarcrmField/intSugarcrmField.attributes.js new file mode 100644 index 0000000..b202c49 --- /dev/null +++ b/server/api/intSugarcrmField/intSugarcrmField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc622=['string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','exports'];(function(_0x2fc379,_0xd4e15){var _0x91e89d=function(_0xa4c9d1){while(--_0xa4c9d1){_0x2fc379['push'](_0x2fc379['shift']());}};_0x91e89d(++_0xd4e15);}(_0xc622,0x13a));var _0x2c62=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0xc622[_0x5ce8b9];return _0xe34be0;};'use strict';var Sequelize=require('sequelize');module[_0x2c62('0x0')]={'type':{'type':Sequelize['ENUM'](_0x2c62('0x1'),_0x2c62('0x2'),_0x2c62('0x3'),_0x2c62('0x4'),_0x2c62('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x2c62('0x6')]},'key':{'type':Sequelize[_0x2c62('0x6')]},'keyType':{'type':Sequelize[_0x2c62('0x7')](_0x2c62('0x1'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x2c62('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x2c62('0x6')]},'customField':{'type':Sequelize[_0x2c62('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2c62('0x6')]}}; \ No newline at end of file diff --git a/server/api/intSugarcrmField/intSugarcrmField.controller.js b/server/api/intSugarcrmField/intSugarcrmField.controller.js new file mode 100644 index 0000000..104a52c --- /dev/null +++ b/server/api/intSugarcrmField/intSugarcrmField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x86ba=['undefined','limit','count','set','apply','reject','update','then','destroy','error','stack','name','index','map','SugarcrmField','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','length','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','fields','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','offset'];(function(_0x1e2080,_0x53283b){var _0x260111=function(_0x15da5e){while(--_0x15da5e){_0x1e2080['push'](_0x1e2080['shift']());}};_0x260111(++_0x53283b);}(_0x86ba,0x72));var _0xa86b=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x86ba[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0xa86b('0x0'));var rimraf=require(_0xa86b('0x1'));var zipdir=require(_0xa86b('0x2'));var jsonpatch=require(_0xa86b('0x3'));var rp=require('request-promise');var moment=require(_0xa86b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa86b('0x5'));var util=require('util');var path=require(_0xa86b('0x6'));var sox=require(_0xa86b('0x7'));var csv=require(_0xa86b('0x8'));var ejs=require(_0xa86b('0x9'));var fs=require('fs');var fs_extra=require(_0xa86b('0xa'));var _=require('lodash');var squel=require(_0xa86b('0xb'));var crypto=require('crypto');var jsforce=require(_0xa86b('0xc'));var deskjs=require(_0xa86b('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa86b('0xe'));var Papa=require(_0xa86b('0xf'));var Redis=require('ioredis');var authService=require(_0xa86b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa86b('0x11'));var hardwareService=require(_0xa86b('0x12'));var logger=require(_0xa86b('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xa86b('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa86b('0x15'))['db'];function respondWithStatusCode(_0x3fc13f,_0x5831b7){_0x5831b7=_0x5831b7||0xcc;return function(_0x464a8f){if(_0x464a8f){return _0x3fc13f[_0xa86b('0x16')](_0x5831b7);}return _0x3fc13f['status'](_0x5831b7)[_0xa86b('0x17')]();};}function respondWithResult(_0x58d714,_0x24262d){_0x24262d=_0x24262d||0xc8;return function(_0x271a9c){if(_0x271a9c){return _0x58d714[_0xa86b('0x18')](_0x24262d)['json'](_0x271a9c);}};}function respondWithFilteredResult(_0x1865f0,_0xe63961){return function(_0x5824bf){if(_0x5824bf){var _0x490b64=typeof _0xe63961[_0xa86b('0x19')]===_0xa86b('0x1a')&&typeof _0xe63961[_0xa86b('0x1b')]===_0xa86b('0x1a');var _0x49317f=_0x5824bf[_0xa86b('0x1c')];var _0x6ad653=_0x490b64?0x0:_0xe63961[_0xa86b('0x19')];var _0x374db1=_0x490b64?_0x5824bf['count']:_0xe63961[_0xa86b('0x19')]+_0xe63961['limit'];var _0x1a0842;if(_0x374db1>=_0x49317f){_0x374db1=_0x49317f;_0x1a0842=0xc8;}else{_0x1a0842=0xce;}_0x1865f0['status'](_0x1a0842);return _0x1865f0[_0xa86b('0x1d')]('Content-Range',_0x6ad653+'-'+_0x374db1+'/'+_0x49317f)['json'](_0x5824bf);}return null;};}function patchUpdates(_0x4f3188){return function(_0x1769aa){try{jsonpatch[_0xa86b('0x1e')](_0x1769aa,_0x4f3188,!![]);}catch(_0x54df0c){return BPromise[_0xa86b('0x1f')](_0x54df0c);}return _0x1769aa['save']();};}function saveUpdates(_0x2c4a98,_0x2eb8b7){return function(_0x511a96){if(_0x511a96){return _0x511a96[_0xa86b('0x20')](_0x2c4a98)[_0xa86b('0x21')](function(_0x41424f){return _0x41424f;});}return null;};}function removeEntity(_0x506386,_0x1032e9){return function(_0xcf53fb){if(_0xcf53fb){return _0xcf53fb[_0xa86b('0x22')]()[_0xa86b('0x21')](function(){_0x506386['status'](0xcc)[_0xa86b('0x17')]();});}};}function handleEntityNotFound(_0x2b5efe,_0x4f8b62){return function(_0x312900){if(!_0x312900){_0x2b5efe[_0xa86b('0x16')](0x194);}return _0x312900;};}function handleError(_0x1b45a2,_0x46dbf2){_0x46dbf2=_0x46dbf2||0x1f4;return function(_0x1f041d){logger[_0xa86b('0x23')](_0x1f041d[_0xa86b('0x24')]);if(_0x1f041d['name']){delete _0x1f041d[_0xa86b('0x25')];}_0x1b45a2[_0xa86b('0x18')](_0x46dbf2)['send'](_0x1f041d);};}exports[_0xa86b('0x26')]=function(_0xf38139,_0x387d10){var _0x2cc659={},_0x10bc8e={},_0x482dd4={'count':0x0,'rows':[]};var _0x2c4881=_[_0xa86b('0x27')](db[_0xa86b('0x28')][_0xa86b('0x29')],function(_0x3596a0){return{'name':_0x3596a0[_0xa86b('0x2a')],'type':_0x3596a0['type'][_0xa86b('0x2b')]};});_0x10bc8e[_0xa86b('0x2c')]=_[_0xa86b('0x27')](_0x2c4881,_0xa86b('0x25'));_0x10bc8e[_0xa86b('0x2d')]=_[_0xa86b('0x2e')](_0xf38139[_0xa86b('0x2d')]);_0x10bc8e[_0xa86b('0x2f')]=_['intersection'](_0x10bc8e[_0xa86b('0x2c')],_0x10bc8e['query']);_0x2cc659[_0xa86b('0x30')]=_[_0xa86b('0x31')](_0x10bc8e['model'],qs['fields'](_0xf38139[_0xa86b('0x2d')]['fields']));_0x2cc659[_0xa86b('0x30')]=_0x2cc659[_0xa86b('0x30')][_0xa86b('0x32')]?_0x2cc659[_0xa86b('0x30')]:_0x10bc8e[_0xa86b('0x2c')];if(!_0xf38139[_0xa86b('0x2d')]['hasOwnProperty']('nolimit')){_0x2cc659[_0xa86b('0x1b')]=qs['limit'](_0xf38139[_0xa86b('0x2d')][_0xa86b('0x1b')]);_0x2cc659['offset']=qs[_0xa86b('0x19')](_0xf38139[_0xa86b('0x2d')][_0xa86b('0x19')]);}_0x2cc659[_0xa86b('0x33')]=qs[_0xa86b('0x34')](_0xf38139[_0xa86b('0x2d')][_0xa86b('0x34')]);_0x2cc659[_0xa86b('0x35')]=qs['filters'](_[_0xa86b('0x36')](_0xf38139[_0xa86b('0x2d')],_0x10bc8e[_0xa86b('0x2f')]),_0x2c4881);if(_0xf38139[_0xa86b('0x2d')]['filter']){_0x2cc659['where']=_[_0xa86b('0x37')](_0x2cc659[_0xa86b('0x35')],{'$or':_[_0xa86b('0x27')](_0x2c4881,function(_0x91bcfb){if(_0x91bcfb[_0xa86b('0x38')]!==_0xa86b('0x39')){var _0x1236da={};_0x1236da[_0x91bcfb[_0xa86b('0x25')]]={'$like':'%'+_0xf38139[_0xa86b('0x2d')][_0xa86b('0x3a')]+'%'};return _0x1236da;}})});}_0x2cc659=_[_0xa86b('0x37')]({},_0x2cc659,_0xf38139[_0xa86b('0x3b')]);var _0x2b7a30={'where':_0x2cc659[_0xa86b('0x35')]};return db[_0xa86b('0x28')][_0xa86b('0x1c')](_0x2b7a30)[_0xa86b('0x21')](function(_0x42c3ff){_0x482dd4[_0xa86b('0x1c')]=_0x42c3ff;if(_0xf38139['query'][_0xa86b('0x3c')]){_0x2cc659['include']=[{'all':!![]}];}return db['SugarcrmField'][_0xa86b('0x3d')](_0x2cc659);})['then'](function(_0x2cf574){_0x482dd4[_0xa86b('0x3e')]=_0x2cf574;return _0x482dd4;})[_0xa86b('0x21')](respondWithFilteredResult(_0x387d10,_0x2cc659))[_0xa86b('0x3f')](handleError(_0x387d10,null));};exports[_0xa86b('0x40')]=function(_0x3acbe6,_0x2a4676){var _0x17fc4c={'raw':!![],'where':{'id':_0x3acbe6[_0xa86b('0x41')]['id']}},_0x5df4e2={};_0x5df4e2['model']=_[_0xa86b('0x2e')](db[_0xa86b('0x28')]['rawAttributes']);_0x5df4e2[_0xa86b('0x2d')]=_[_0xa86b('0x2e')](_0x3acbe6['query']);_0x5df4e2['filters']=_['intersection'](_0x5df4e2['model'],_0x5df4e2['query']);_0x17fc4c[_0xa86b('0x30')]=_[_0xa86b('0x31')](_0x5df4e2['model'],qs[_0xa86b('0x42')](_0x3acbe6['query']['fields']));_0x17fc4c['attributes']=_0x17fc4c[_0xa86b('0x30')][_0xa86b('0x32')]?_0x17fc4c['attributes']:_0x5df4e2[_0xa86b('0x2c')];if(_0x3acbe6[_0xa86b('0x2d')][_0xa86b('0x3c')]){_0x17fc4c['include']=[{'all':!![]}];}_0x17fc4c=_[_0xa86b('0x37')]({},_0x17fc4c,_0x3acbe6[_0xa86b('0x3b')]);return db[_0xa86b('0x28')][_0xa86b('0x43')](_0x17fc4c)[_0xa86b('0x21')](handleEntityNotFound(_0x2a4676,null))[_0xa86b('0x21')](respondWithResult(_0x2a4676,null))['catch'](handleError(_0x2a4676,null));};exports[_0xa86b('0x44')]=function(_0x42912a,_0x1b404f){return db['SugarcrmField'][_0xa86b('0x44')](_0x42912a[_0xa86b('0x45')],{})[_0xa86b('0x21')](respondWithResult(_0x1b404f,0xc9))[_0xa86b('0x3f')](handleError(_0x1b404f,null));};exports[_0xa86b('0x20')]=function(_0x8b672c,_0x834e34){if(_0x8b672c[_0xa86b('0x45')]['id']){delete _0x8b672c[_0xa86b('0x45')]['id'];}return db[_0xa86b('0x28')][_0xa86b('0x43')]({'where':{'id':_0x8b672c['params']['id']}})[_0xa86b('0x21')](handleEntityNotFound(_0x834e34,null))[_0xa86b('0x21')](saveUpdates(_0x8b672c[_0xa86b('0x45')],null))[_0xa86b('0x21')](respondWithResult(_0x834e34,null))[_0xa86b('0x3f')](handleError(_0x834e34,null));};exports[_0xa86b('0x22')]=function(_0x5d97d4,_0x8e835d){return db[_0xa86b('0x28')][_0xa86b('0x43')]({'where':{'id':_0x5d97d4['params']['id']}})[_0xa86b('0x21')](handleEntityNotFound(_0x8e835d,null))['then'](removeEntity(_0x8e835d,null))[_0xa86b('0x3f')](handleError(_0x8e835d,null));}; \ No newline at end of file diff --git a/server/api/intSugarcrmField/intSugarcrmField.model.js b/server/api/intSugarcrmField/intSugarcrmField.model.js new file mode 100644 index 0000000..649233a --- /dev/null +++ b/server/api/intSugarcrmField/intSugarcrmField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcd99=['define','SugarcrmField','int_sugarcrm_fields','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports'];(function(_0x22b800,_0x4e6eb3){var _0x2a1810=function(_0x2fa215){while(--_0x2fa215){_0x22b800['push'](_0x22b800['shift']());}};_0x2a1810(++_0x4e6eb3);}(_0xcd99,0x183));var _0x9cd9=function(_0x5d614a,_0x28776f){_0x5d614a=_0x5d614a-0x0;var _0x983985=_0xcd99[_0x5d614a];return _0x983985;};'use strict';var _=require(_0x9cd9('0x0'));var util=require('util');var logger=require(_0x9cd9('0x1'))('api');var moment=require(_0x9cd9('0x2'));var BPromise=require('bluebird');var rp=require(_0x9cd9('0x3'));var fs=require('fs');var path=require(_0x9cd9('0x4'));var rimraf=require(_0x9cd9('0x5'));var config=require(_0x9cd9('0x6'));var attributes=require(_0x9cd9('0x7'));module[_0x9cd9('0x8')]=function(_0x2da9e4,_0x18d903){return _0x2da9e4[_0x9cd9('0x9')](_0x9cd9('0xa'),attributes,{'tableName':_0x9cd9('0xb'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intSugarcrmField/intSugarcrmField.rpc.js b/server/api/intSugarcrmField/intSugarcrmField.rpc.js new file mode 100644 index 0000000..31cb671 --- /dev/null +++ b/server/api/intSugarcrmField/intSugarcrmField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7b82=['stringify','error','code','SugarcrmField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug'];(function(_0x16fb0d,_0x2a08cd){var _0x3b041a=function(_0x3ab1d4){while(--_0x3ab1d4){_0x16fb0d['push'](_0x16fb0d['shift']());}};_0x3b041a(++_0x2a08cd);}(_0x7b82,0x13b));var _0x27b8=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0x7b82[_0x1762b4];return _0x29beda;};'use strict';var _=require(_0x27b8('0x0'));var util=require(_0x27b8('0x1'));var moment=require(_0x27b8('0x2'));var BPromise=require(_0x27b8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x27b8('0x4'));var db=require(_0x27b8('0x5'))['db'];var utils=require(_0x27b8('0x6'));var logger=require(_0x27b8('0x7'))('rpc');var config=require(_0x27b8('0x8'));var jayson=require(_0x27b8('0x9'));var client=jayson[_0x27b8('0xa')][_0x27b8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x334191,_0x42be99,_0xde3cfc){return new BPromise(function(_0x1df637,_0x38b043){return client[_0x27b8('0xc')](_0x334191,_0xde3cfc)['then'](function(_0x371d04){logger['info']('SugarcrmField,\x20%s,\x20%s',_0x42be99,_0x27b8('0xd'));logger[_0x27b8('0xe')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x42be99,_0x27b8('0xd'),JSON[_0x27b8('0xf')](_0x371d04));if(_0x371d04['error']){if(_0x371d04[_0x27b8('0x10')][_0x27b8('0x11')]===0x1f4){logger[_0x27b8('0x10')](_0x27b8('0x12'),_0x42be99,_0x371d04[_0x27b8('0x10')][_0x27b8('0x13')]);return _0x38b043(_0x371d04['error'][_0x27b8('0x13')]);}logger[_0x27b8('0x10')](_0x27b8('0x12'),_0x42be99,_0x371d04['error']['message']);return _0x1df637(_0x371d04[_0x27b8('0x10')]['message']);}else{logger['info'](_0x27b8('0x12'),_0x42be99,_0x27b8('0xd'));_0x1df637(_0x371d04[_0x27b8('0x14')]['message']);}})[_0x27b8('0x15')](function(_0x3ebb2a){logger['error'](_0x27b8('0x12'),_0x42be99,_0x3ebb2a);_0x38b043(_0x3ebb2a);});});} \ No newline at end of file diff --git a/server/api/intVtigerAccount/index.js b/server/api/intVtigerAccount/index.js new file mode 100644 index 0000000..9fff009 --- /dev/null +++ b/server/api/intVtigerAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7531=['../../config/environment','./intVtigerAccount.controller','isAuthenticated','index','get','/:id','show','getConfigurations','/:id/fields','getFields','create','post','/:id/configurations','addConfiguration','put','update','exports','multer','util','path','fs-extra','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7531,0x69));var _0x1753=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x7531[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0x1753('0x0'));var util=require(_0x1753('0x1'));var path=require(_0x1753('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1753('0x3'));var auth=require(_0x1753('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1753('0x5'));var controller=require(_0x1753('0x6'));router['get']('/',auth[_0x1753('0x7')](),controller[_0x1753('0x8')]);router[_0x1753('0x9')](_0x1753('0xa'),auth[_0x1753('0x7')](),controller[_0x1753('0xb')]);router[_0x1753('0x9')]('/:id/configurations',auth[_0x1753('0x7')](),controller[_0x1753('0xc')]);router[_0x1753('0x9')](_0x1753('0xd'),auth[_0x1753('0x7')](),controller[_0x1753('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1753('0xf')]);router[_0x1753('0x10')](_0x1753('0x11'),auth[_0x1753('0x7')](),controller[_0x1753('0x12')]);router[_0x1753('0x13')](_0x1753('0xa'),auth[_0x1753('0x7')](),controller[_0x1753('0x14')]);router['delete'](_0x1753('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1753('0x15')]=router; \ No newline at end of file diff --git a/server/api/intVtigerAccount/intVtigerAccount.attributes.js b/server/api/intVtigerAccount/intVtigerAccount.attributes.js new file mode 100644 index 0000000..565daf8 --- /dev/null +++ b/server/api/intVtigerAccount/intVtigerAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6801=['sequelize','exports','STRING','HelpDesk'];(function(_0x322522,_0x4db288){var _0x293bcf=function(_0xf108b8){while(--_0xf108b8){_0x322522['push'](_0x322522['shift']());}};_0x293bcf(++_0x4db288);}(_0x6801,0x17c));var _0x1680=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6801[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x1680('0x0'));module[_0x1680('0x1')]={'name':{'type':Sequelize[_0x1680('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1680('0x2')]},'username':{'type':Sequelize[_0x1680('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x1680('0x2')],'allowNull':![],'defaultValue':_0x1680('0x3')},'remoteUri':{'type':Sequelize[_0x1680('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x1680('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/intVtigerAccount/intVtigerAccount.controller.js b/server/api/intVtigerAccount/intVtigerAccount.controller.js new file mode 100644 index 0000000..2779ea3 --- /dev/null +++ b/server/api/intVtigerAccount/intVtigerAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x05d9=['format','%s/webservice.php','GET','username','success','POST','login','result','describe','sessionName','autogenerated','reference','remove','includes','false','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','moment','bluebird','util','path','ejs','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','error','stack','name','send','map','VtigerAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','VIRTUAL','count','rows','catch','params','includeAll','include','options','find','create','body','destroy','getConfigurations','findOne','VtigerConfiguration','addConfiguration','Subjects','getSubjects','channel','getDescriptions','VtigerField','md5','getFields','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x05d9,0x104));var _0x905d=function(_0x473f38,_0x26d5e4){_0x473f38=_0x473f38-0x0;var _0xcfe52f=_0x05d9[_0x473f38];return _0xcfe52f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x905d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x905d('0x1'));var BPromise=require(_0x905d('0x2'));var Mustache=require('mustache');var util=require(_0x905d('0x3'));var path=require(_0x905d('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x905d('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x905d('0x6'));var squel=require(_0x905d('0x7'));var crypto=require(_0x905d('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x905d('0x9'));var querystring=require(_0x905d('0xa'));var Papa=require('papaparse');var Redis=require(_0x905d('0xb'));var authService=require(_0x905d('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x905d('0xd'))(_0x905d('0xe'));var utils=require(_0x905d('0xf'));var config=require(_0x905d('0x10'));var licenseUtil=require(_0x905d('0x11'));var db=require('../../mysqldb')['db'];var integrations=require(_0x905d('0x12'));function respondWithStatusCode(_0x5796ff,_0x15d3c2){_0x15d3c2=_0x15d3c2||0xcc;return function(_0x2c7db7){if(_0x2c7db7){return _0x5796ff[_0x905d('0x13')](_0x15d3c2);}return _0x5796ff[_0x905d('0x14')](_0x15d3c2)[_0x905d('0x15')]();};}function respondWithResult(_0xd9da95,_0x35b3df){_0x35b3df=_0x35b3df||0xc8;return function(_0x3fefa1){if(_0x3fefa1){return _0xd9da95['status'](_0x35b3df)[_0x905d('0x16')](_0x3fefa1);}};}function respondWithFilteredResult(_0xc67661,_0xfefc4e){return function(_0x512a43){if(_0x512a43){var _0x25e4bf=typeof _0xfefc4e[_0x905d('0x17')]===_0x905d('0x18')&&typeof _0xfefc4e[_0x905d('0x19')]==='undefined';var _0x1e5f39=_0x512a43['count'];var _0x5609a2=_0x25e4bf?0x0:_0xfefc4e[_0x905d('0x17')];var _0xb7c9db=_0x25e4bf?_0x512a43['count']:_0xfefc4e['offset']+_0xfefc4e['limit'];var _0x379b2e;if(_0xb7c9db>=_0x1e5f39){_0xb7c9db=_0x1e5f39;_0x379b2e=0xc8;}else{_0x379b2e=0xce;}_0xc67661['status'](_0x379b2e);return _0xc67661[_0x905d('0x1a')]('Content-Range',_0x5609a2+'-'+_0xb7c9db+'/'+_0x1e5f39)[_0x905d('0x16')](_0x512a43);}return null;};}function patchUpdates(_0x3b0420){return function(_0x331416){try{jsonpatch[_0x905d('0x1b')](_0x331416,_0x3b0420,!![]);}catch(_0x3a4116){return BPromise[_0x905d('0x1c')](_0x3a4116);}return _0x331416[_0x905d('0x1d')]();};}function saveUpdates(_0x23c2ea,_0x1724df){return function(_0x4ca363){if(_0x4ca363){return _0x4ca363[_0x905d('0x1e')](_0x23c2ea)['then'](function(_0x25a43f){return _0x25a43f;});}return null;};}function removeEntity(_0x22a8a2,_0x180f3e){return function(_0x4539d6){if(_0x4539d6){return _0x4539d6['destroy']()[_0x905d('0x1f')](function(){_0x22a8a2[_0x905d('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x528604,_0xf52de5){return function(_0x11239f){if(!_0x11239f){_0x528604[_0x905d('0x13')](0x194);}return _0x11239f;};}function handleError(_0x4c563b,_0x458c9c){_0x458c9c=_0x458c9c||0x1f4;return function(_0x2db691){logger[_0x905d('0x20')](_0x2db691[_0x905d('0x21')]);if(_0x2db691[_0x905d('0x22')]){delete _0x2db691[_0x905d('0x22')];}_0x4c563b[_0x905d('0x14')](_0x458c9c)[_0x905d('0x23')](_0x2db691);};}exports['index']=function(_0x499106,_0x49f7f8){var _0x7c2e54={},_0x48d8dd={},_0x5372d0={'count':0x0,'rows':[]};var _0x4afa1e=_[_0x905d('0x24')](db[_0x905d('0x25')][_0x905d('0x26')],function(_0xe6d80f){return{'name':_0xe6d80f[_0x905d('0x27')],'type':_0xe6d80f['type'][_0x905d('0x28')]};});_0x48d8dd[_0x905d('0x29')]=_[_0x905d('0x24')](_0x4afa1e,_0x905d('0x22'));_0x48d8dd[_0x905d('0x2a')]=_[_0x905d('0x2b')](_0x499106[_0x905d('0x2a')]);_0x48d8dd[_0x905d('0x2c')]=_[_0x905d('0x2d')](_0x48d8dd[_0x905d('0x29')],_0x48d8dd['query']);_0x7c2e54[_0x905d('0x2e')]=_['intersection'](_0x48d8dd[_0x905d('0x29')],qs[_0x905d('0x2f')](_0x499106['query'][_0x905d('0x2f')]));_0x7c2e54[_0x905d('0x2e')]=_0x7c2e54[_0x905d('0x2e')][_0x905d('0x30')]?_0x7c2e54['attributes']:_0x48d8dd[_0x905d('0x29')];if(!_0x499106[_0x905d('0x2a')][_0x905d('0x31')](_0x905d('0x32'))){_0x7c2e54[_0x905d('0x19')]=qs['limit'](_0x499106['query'][_0x905d('0x19')]);_0x7c2e54['offset']=qs[_0x905d('0x17')](_0x499106[_0x905d('0x2a')][_0x905d('0x17')]);}_0x7c2e54[_0x905d('0x33')]=qs[_0x905d('0x34')](_0x499106['query'][_0x905d('0x34')]);_0x7c2e54['where']=qs['filters'](_[_0x905d('0x35')](_0x499106['query'],_0x48d8dd[_0x905d('0x2c')]),_0x4afa1e);if(_0x499106[_0x905d('0x2a')][_0x905d('0x36')]){_0x7c2e54['where']=_[_0x905d('0x37')](_0x7c2e54[_0x905d('0x38')],{'$or':_[_0x905d('0x24')](_0x4afa1e,function(_0x41f5f2){if(_0x41f5f2[_0x905d('0x39')]!==_0x905d('0x3a')){var _0x320a22={};_0x320a22[_0x41f5f2[_0x905d('0x22')]]={'$like':'%'+_0x499106[_0x905d('0x2a')][_0x905d('0x36')]+'%'};return _0x320a22;}})});}_0x7c2e54=_[_0x905d('0x37')]({},_0x7c2e54,_0x499106['options']);var _0x15dada={'where':_0x7c2e54[_0x905d('0x38')]};return db['VtigerAccount']['count'](_0x15dada)[_0x905d('0x1f')](function(_0x4b02d2){_0x5372d0[_0x905d('0x3b')]=_0x4b02d2;if(_0x499106[_0x905d('0x2a')]['includeAll']){_0x7c2e54['include']=[{'all':!![]}];}return db[_0x905d('0x25')]['findAll'](_0x7c2e54);})[_0x905d('0x1f')](function(_0x437829){_0x5372d0[_0x905d('0x3c')]=_0x437829;return _0x5372d0;})[_0x905d('0x1f')](respondWithFilteredResult(_0x49f7f8,_0x7c2e54))[_0x905d('0x3d')](handleError(_0x49f7f8,null));};exports['show']=function(_0x4f560d,_0x20c4be){var _0x1dae0b={'raw':![],'where':{'id':_0x4f560d[_0x905d('0x3e')]['id']}},_0x24d810={};_0x24d810['model']=_['keys'](db[_0x905d('0x25')]['rawAttributes']);_0x24d810[_0x905d('0x2a')]=_[_0x905d('0x2b')](_0x4f560d[_0x905d('0x2a')]);_0x24d810[_0x905d('0x2c')]=_[_0x905d('0x2d')](_0x24d810['model'],_0x24d810[_0x905d('0x2a')]);_0x1dae0b[_0x905d('0x2e')]=_[_0x905d('0x2d')](_0x24d810[_0x905d('0x29')],qs[_0x905d('0x2f')](_0x4f560d[_0x905d('0x2a')][_0x905d('0x2f')]));_0x1dae0b['attributes']=_0x1dae0b[_0x905d('0x2e')][_0x905d('0x30')]?_0x1dae0b[_0x905d('0x2e')]:_0x24d810['model'];if(_0x4f560d[_0x905d('0x2a')][_0x905d('0x3f')]){_0x1dae0b[_0x905d('0x40')]=[{'all':!![]}];}_0x1dae0b=_['merge']({},_0x1dae0b,_0x4f560d[_0x905d('0x41')]);return db['VtigerAccount'][_0x905d('0x42')](_0x1dae0b)['then'](handleEntityNotFound(_0x20c4be,null))[_0x905d('0x1f')](respondWithResult(_0x20c4be,null))[_0x905d('0x3d')](handleError(_0x20c4be,null));};exports['create']=function(_0x44bd79,_0x1f79f5){return db['VtigerAccount'][_0x905d('0x43')](_0x44bd79[_0x905d('0x44')],{})[_0x905d('0x1f')](respondWithResult(_0x1f79f5,0xc9))['catch'](handleError(_0x1f79f5,null));};exports['update']=function(_0x3e4454,_0x3b3b4f){if(_0x3e4454[_0x905d('0x44')]['id']){delete _0x3e4454['body']['id'];}return db['VtigerAccount'][_0x905d('0x42')]({'where':{'id':_0x3e4454[_0x905d('0x3e')]['id']}})[_0x905d('0x1f')](handleEntityNotFound(_0x3b3b4f,null))[_0x905d('0x1f')](saveUpdates(_0x3e4454['body'],null))[_0x905d('0x1f')](respondWithResult(_0x3b3b4f,null))[_0x905d('0x3d')](handleError(_0x3b3b4f,null));};exports[_0x905d('0x45')]=function(_0x3852d4,_0x36d909){return db['VtigerAccount'][_0x905d('0x42')]({'where':{'id':_0x3852d4[_0x905d('0x3e')]['id']}})[_0x905d('0x1f')](handleEntityNotFound(_0x36d909,null))[_0x905d('0x1f')](removeEntity(_0x36d909,null))[_0x905d('0x3d')](handleError(_0x36d909,null));};exports[_0x905d('0x46')]=function(_0xa58de3,_0x57567a,_0x29a396){var _0x4d4ee9={};var _0xf785de={};var _0x4d79a1;var _0x14ff92;return db['VtigerAccount'][_0x905d('0x47')]({'where':{'id':_0xa58de3[_0x905d('0x3e')]['id']}})[_0x905d('0x1f')](handleEntityNotFound(_0x57567a,null))[_0x905d('0x1f')](function(_0x4f0b04){if(_0x4f0b04){_0x4d79a1=_0x4f0b04;_0xf785de['model']=_[_0x905d('0x2b')](db[_0x905d('0x48')][_0x905d('0x26')]);_0xf785de[_0x905d('0x2a')]=_[_0x905d('0x2b')](_0xa58de3[_0x905d('0x2a')]);_0xf785de['filters']=_[_0x905d('0x2d')](_0xf785de['model'],_0xf785de[_0x905d('0x2a')]);_0x4d4ee9['attributes']=_['intersection'](_0xf785de[_0x905d('0x29')],qs[_0x905d('0x2f')](_0xa58de3['query']['fields']));_0x4d4ee9[_0x905d('0x2e')]=_0x4d4ee9['attributes']['length']?_0x4d4ee9[_0x905d('0x2e')]:_0xf785de[_0x905d('0x29')];_0x4d4ee9['order']=qs[_0x905d('0x34')](_0xa58de3[_0x905d('0x2a')]['sort']);_0x4d4ee9[_0x905d('0x38')]=qs['filters'](_[_0x905d('0x35')](_0xa58de3[_0x905d('0x2a')],_0xf785de[_0x905d('0x2c')]));if(_0xa58de3[_0x905d('0x2a')][_0x905d('0x36')]){_0x4d4ee9[_0x905d('0x38')]=_[_0x905d('0x37')](_0x4d4ee9[_0x905d('0x38')],{'$or':_[_0x905d('0x24')](_0x4d4ee9[_0x905d('0x2e')],function(_0x22815a){var _0x4afab8={};_0x4afab8[_0x22815a]={'$like':'%'+_0xa58de3[_0x905d('0x2a')][_0x905d('0x36')]+'%'};return _0x4afab8;})});}_0x4d4ee9=_[_0x905d('0x37')]({},_0x4d4ee9,_0xa58de3[_0x905d('0x41')]);return _0x4d79a1[_0x905d('0x46')](_0x4d4ee9);}})['then'](function(_0x3038bf){if(_0x3038bf){_0x14ff92=_0x3038bf[_0x905d('0x30')];if(!_0xa58de3[_0x905d('0x2a')][_0x905d('0x31')]('nolimit')){_0x4d4ee9[_0x905d('0x19')]=qs[_0x905d('0x19')](_0xa58de3[_0x905d('0x2a')]['limit']);_0x4d4ee9[_0x905d('0x17')]=qs[_0x905d('0x17')](_0xa58de3[_0x905d('0x2a')][_0x905d('0x17')]);}return _0x4d79a1[_0x905d('0x46')](_0x4d4ee9);}})[_0x905d('0x1f')](function(_0x3ca1c5){if(_0x3ca1c5){return _0x3ca1c5?{'count':_0x14ff92,'rows':_0x3ca1c5}:null;}})['then'](respondWithResult(_0x57567a,null))[_0x905d('0x3d')](handleError(_0x57567a,null));};exports[_0x905d('0x49')]=function(_0x592abb,_0x524836,_0x2b55de){if(_0x592abb['body']['id']){delete _0x592abb[_0x905d('0x44')]['id'];}return db[_0x905d('0x25')]['findOne']({'where':{'id':_0x592abb[_0x905d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x524836,null))[_0x905d('0x1f')](function(_0x29d85d){if(_0x29d85d){_0x592abb[_0x905d('0x44')]['AccountId']=_0x29d85d['id'];_0x592abb[_0x905d('0x44')][_0x905d('0x4a')]=integrations[_0x905d('0x4b')](_0x592abb[_0x905d('0x44')][_0x905d('0x4c')],_0x592abb['body']['type']);_0x592abb[_0x905d('0x44')]['Descriptions']=integrations[_0x905d('0x4d')](_0x592abb['body'][_0x905d('0x4c')],_0x592abb['body'][_0x905d('0x39')]);return db[_0x905d('0x48')]['create'](_0x592abb[_0x905d('0x44')],{'include':[{'model':db[_0x905d('0x4e')],'as':_0x905d('0x4a')},{'model':db[_0x905d('0x4e')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x524836,null))[_0x905d('0x3d')](handleError(_0x524836,null));};var md5=require(_0x905d('0x4f'));exports[_0x905d('0x50')]=function(_0x264de0,_0x287442,_0x4524b3){var _0x12d612=null;var _0x5b275e=null;var _0x28930e=null;var _0x2aa525=null;var _0x2cd0ee='';return db['VtigerAccount'][_0x905d('0x47')]({'where':{'id':_0x264de0[_0x905d('0x3e')]['id']},'attributes':['id',_0x905d('0x22'),'username','description',_0x905d('0x51'),_0x905d('0x52'),_0x905d('0x53'),'accessKey']})['then'](handleEntityNotFound(_0x287442,null))[_0x905d('0x1f')](function(_0x1299ad){if(_0x1299ad){_0x12d612=_0x1299ad['username'];_0x5b275e=_0x1299ad[_0x905d('0x54')];_0x28930e=_0x1299ad[_0x905d('0x51')];_0x2cd0ee=_0x1299ad[_0x905d('0x52')];var _0x41593c=_0x2cd0ee[_0x905d('0x55')](-0x1);if(_0x41593c==='/'){_0x2cd0ee=_0x2cd0ee[_0x905d('0x56')](0x0,_0x2cd0ee[_0x905d('0x57')](_0x41593c));}_0x2aa525=util[_0x905d('0x58')](_0x905d('0x59'),_0x2cd0ee);var _0x2dc9c5={'method':_0x905d('0x5a'),'uri':_0x2aa525,'qs':{'operation':'getchallenge','username':_0x1299ad[_0x905d('0x5b')]},'json':!![]};return rp(_0x2dc9c5);}})[_0x905d('0x1f')](function(_0x14c28b){if(_0x14c28b[_0x905d('0x5c')]){var _0x490ff7={'method':_0x905d('0x5d'),'uri':_0x2aa525,'form':{'operation':_0x905d('0x5e'),'username':_0x12d612,'accessKey':md5(_0x14c28b[_0x905d('0x5f')]['token']+_0x5b275e)},'json':!![]};return rp(_0x490ff7);}})[_0x905d('0x1f')](function(_0xc464b8){if(_0xc464b8[_0x905d('0x5c')]){var _0x2a0857={'method':_0x905d('0x5a'),'uri':_0x2aa525,'qs':{'operation':_0x905d('0x60'),'username':_0x12d612,'sessionName':_0xc464b8[_0x905d('0x5f')][_0x905d('0x61')],'elementType':_0x28930e},'json':!![]};return rp(_0x2a0857);}})['then'](function(_0x398f68){if(_0x398f68[_0x905d('0x5c')]){var _0x303fde=[_0x905d('0x62'),_0x905d('0x63'),'owner'];_[_0x905d('0x64')](_0x398f68[_0x905d('0x5f')][_0x905d('0x2f')],function(_0x36ec88){return _0x303fde[_0x905d('0x65')](_0x36ec88[_0x905d('0x39')][_0x905d('0x22')]);});_['remove'](_0x398f68[_0x905d('0x5f')][_0x905d('0x2f')],function(_0x2cbdf9){return _0x2cbdf9['editable']===_0x905d('0x66');});return{'count':_0x398f68[_0x905d('0x5f')]['fields']['length'],'rows':_[_0x905d('0x24')](_0x398f68[_0x905d('0x5f')]['fields'],function(_0x429cab){return{'id':_0x429cab[_0x905d('0x22')],'name':_0x429cab[_0x905d('0x67')],'custom':_[_0x905d('0x68')](_0x429cab[_0x905d('0x22')],_0x905d('0x69'))?!![]:![],'options':_0x429cab[_0x905d('0x39')][_0x905d('0x22')]===_0x905d('0x6a')&&_0x429cab[_0x905d('0x39')]['picklistValues']['length']>0x0?_['map'](_0x429cab['type'][_0x905d('0x6b')],function(_0x295144){return{'name':_0x295144[_0x905d('0x67')],'value':_0x295144[_0x905d('0x6c')]};}):[]};})};}})['then'](respondWithResult(_0x287442,null))['catch'](function(_0x571527){console[_0x905d('0x6d')](_0x905d('0x6e')+_0x571527);var _0x52744e=_0x264de0[_0x905d('0x2a')][_0x905d('0x6f')]?0x1f4:_0x571527[_0x905d('0x70')]||0x1f4;logger[_0x905d('0x20')](_0x905d('0x71'),_0x905d('0x50'),_0x52744e,JSON[_0x905d('0x72')](_0x571527));delete _0x571527[_0x905d('0x22')];if(_0x52744e===0x191){_0x52744e=0x190;}_0x287442['status'](_0x52744e)[_0x905d('0x23')](_0x264de0['query'][_0x905d('0x6f')]?{'message':_0x905d('0x73'),'statusCode':_0x571527['statusCode']}:_0x571527);});}; \ No newline at end of file diff --git a/server/api/intVtigerAccount/intVtigerAccount.model.js b/server/api/intVtigerAccount/intVtigerAccount.model.js new file mode 100644 index 0000000..e7ddd6a --- /dev/null +++ b/server/api/intVtigerAccount/intVtigerAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8371=['moment','path','rimraf','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','api'];(function(_0xda3f86,_0x32c86c){var _0x1bcc40=function(_0x47a384){while(--_0x47a384){_0xda3f86['push'](_0xda3f86['shift']());}};_0x1bcc40(++_0x32c86c);}(_0x8371,0x1b5));var _0x1837=function(_0x572c85,_0x4bd93e){_0x572c85=_0x572c85-0x0;var _0x46a4ac=_0x8371[_0x572c85];return _0x46a4ac;};'use strict';var _=require(_0x1837('0x0'));var util=require(_0x1837('0x1'));var logger=require('../../config/logger')(_0x1837('0x2'));var moment=require(_0x1837('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1837('0x4'));var rimraf=require(_0x1837('0x5'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x1837('0x6'));module[_0x1837('0x7')]=function(_0x3d31a6,_0x20e28e){return _0x3d31a6[_0x1837('0x8')](_0x1837('0x9'),attributes,{'tableName':_0x1837('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intVtigerAccount/intVtigerAccount.rpc.js b/server/api/intVtigerAccount/intVtigerAccount.rpc.js new file mode 100644 index 0000000..4ed4177 --- /dev/null +++ b/server/api/intVtigerAccount/intVtigerAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa478=['info','request\x20sent','debug','error','code','message','VtigerAccount,\x20%s,\x20%s','result','catch','GetVtigerAccount','findAll','options','raw','where','attributes','include','map','model','VtigerAccount','find','ShowVtigerAccount','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then'];(function(_0x4cc0bc,_0x5679b5){var _0x2d45f4=function(_0x5398e7){while(--_0x5398e7){_0x4cc0bc['push'](_0x4cc0bc['shift']());}};_0x2d45f4(++_0x5679b5);}(_0xa478,0x136));var _0x8a47=function(_0x3e3221,_0x392851){_0x3e3221=_0x3e3221-0x0;var _0x190da4=_0xa478[_0x3e3221];return _0x190da4;};'use strict';var _=require(_0x8a47('0x0'));var util=require(_0x8a47('0x1'));var moment=require(_0x8a47('0x2'));var BPromise=require(_0x8a47('0x3'));var rs=require(_0x8a47('0x4'));var fs=require('fs');var Redis=require(_0x8a47('0x5'));var db=require(_0x8a47('0x6'))['db'];var utils=require(_0x8a47('0x7'));var logger=require(_0x8a47('0x8'))(_0x8a47('0x9'));var config=require(_0x8a47('0xa'));var jayson=require(_0x8a47('0xb'));var client=jayson['client'][_0x8a47('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d62a6,_0x3de815,_0x3cb340){return new BPromise(function(_0x56884b,_0x384886){return client['request'](_0x2d62a6,_0x3cb340)[_0x8a47('0xd')](function(_0x369fc9){logger[_0x8a47('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x3de815,_0x8a47('0xf'));logger[_0x8a47('0x10')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x3de815,_0x8a47('0xf'),JSON['stringify'](_0x369fc9));if(_0x369fc9[_0x8a47('0x11')]){if(_0x369fc9[_0x8a47('0x11')][_0x8a47('0x12')]===0x1f4){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x3de815,_0x369fc9['error'][_0x8a47('0x13')]);return _0x384886(_0x369fc9[_0x8a47('0x11')]['message']);}logger[_0x8a47('0x11')](_0x8a47('0x14'),_0x3de815,_0x369fc9[_0x8a47('0x11')][_0x8a47('0x13')]);return _0x56884b(_0x369fc9[_0x8a47('0x11')][_0x8a47('0x13')]);}else{logger[_0x8a47('0xe')](_0x8a47('0x14'),_0x3de815,_0x8a47('0xf'));_0x56884b(_0x369fc9[_0x8a47('0x15')][_0x8a47('0x13')]);}})[_0x8a47('0x16')](function(_0x2917d9){logger['error'](_0x8a47('0x14'),_0x3de815,_0x2917d9);_0x384886(_0x2917d9);});});}exports[_0x8a47('0x17')]=function(_0x3f9093){var _0x5f5884=this;return new Promise(function(_0x341089,_0x5c62eb){return db['VtigerAccount'][_0x8a47('0x18')]({'raw':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1b')]||null:null,'attributes':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1c')]||null:null,'limit':_0x3f9093['options']?_0x3f9093[_0x8a47('0x19')]['limit']||null:null,'include':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1d')]?_[_0x8a47('0x1e')](_0x3f9093['options'][_0x8a47('0x1d')],function(_0x5ae186){return{'model':db[_0x5ae186['model']],'as':_0x5ae186['as'],'attributes':_0x5ae186['attributes'],'include':_0x5ae186['include']?_[_0x8a47('0x1e')](_0x5ae186[_0x8a47('0x1d')],function(_0x5bed3e){return{'model':db[_0x5bed3e[_0x8a47('0x1f')]],'as':_0x5bed3e['as'],'attributes':_0x5bed3e[_0x8a47('0x1c')],'include':_0x5bed3e[_0x8a47('0x1d')]?_[_0x8a47('0x1e')](_0x5bed3e[_0x8a47('0x1d')],function(_0xd06be6){return{'model':db[_0xd06be6[_0x8a47('0x1f')]],'as':_0xd06be6['as'],'attributes':_0xd06be6['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a47('0xd')](function(_0x4a10c3){logger[_0x8a47('0xe')](_0x8a47('0x17'),_0x3f9093);logger['debug'](_0x8a47('0x17'),_0x3f9093,JSON['stringify'](_0x4a10c3));_0x341089(_0x4a10c3);})['catch'](function(_0x12470a){logger[_0x8a47('0x11')](_0x8a47('0x17'),_0x12470a[_0x8a47('0x13')],_0x3f9093);_0x5c62eb(_0x5f5884[_0x8a47('0x11')](0x1f4,_0x12470a[_0x8a47('0x13')]));});});};exports['ShowVtigerAccount']=function(_0x353576){var _0x4d78b5=this;return new Promise(function(_0x549913,_0x448459){return db[_0x8a47('0x20')][_0x8a47('0x21')]({'raw':_0x353576[_0x8a47('0x19')]?_0x353576[_0x8a47('0x19')][_0x8a47('0x1a')]===undefined?!![]:![]:!![],'where':_0x353576[_0x8a47('0x19')]?_0x353576[_0x8a47('0x19')][_0x8a47('0x1b')]||null:null,'attributes':_0x353576[_0x8a47('0x19')]?_0x353576['options'][_0x8a47('0x1c')]||null:null,'include':_0x353576[_0x8a47('0x19')]?_0x353576[_0x8a47('0x19')]['include']?_[_0x8a47('0x1e')](_0x353576[_0x8a47('0x19')]['include'],function(_0xa1a852){return{'model':db[_0xa1a852[_0x8a47('0x1f')]],'as':_0xa1a852['as'],'attributes':_0xa1a852[_0x8a47('0x1c')],'include':_0xa1a852[_0x8a47('0x1d')]?_['map'](_0xa1a852['include'],function(_0x145908){return{'model':db[_0x145908[_0x8a47('0x1f')]],'as':_0x145908['as'],'attributes':_0x145908[_0x8a47('0x1c')],'include':_0x145908[_0x8a47('0x1d')]?_[_0x8a47('0x1e')](_0x145908[_0x8a47('0x1d')],function(_0x1819ef){return{'model':db[_0x1819ef['model']],'as':_0x1819ef['as'],'attributes':_0x1819ef['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a47('0xd')](function(_0x3636af){logger[_0x8a47('0xe')](_0x8a47('0x22'),_0x353576);logger[_0x8a47('0x10')](_0x8a47('0x22'),_0x353576,JSON[_0x8a47('0x23')](_0x3636af));_0x549913(_0x3636af);})[_0x8a47('0x16')](function(_0xe178f1){logger[_0x8a47('0x11')](_0x8a47('0x22'),_0xe178f1['message'],_0x353576);_0x448459(_0x4d78b5[_0x8a47('0x11')](0x1f4,_0xe178f1['message']));});});}; \ No newline at end of file diff --git a/server/api/intVtigerConfiguration/index.js b/server/api/intVtigerConfiguration/index.js new file mode 100644 index 0000000..a58ad6f --- /dev/null +++ b/server/api/intVtigerConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1bcd=['update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put'];(function(_0x5ee748,_0x552a2b){var _0x36da37=function(_0x22cc48){while(--_0x22cc48){_0x5ee748['push'](_0x5ee748['shift']());}};_0x36da37(++_0x552a2b);}(_0x1bcd,0x192));var _0xd1bc=function(_0x50d011,_0x6263b){_0x50d011=_0x50d011-0x0;var _0xd37c2e=_0x1bcd[_0x50d011];return _0xd37c2e;};'use strict';var multer=require('multer');var util=require(_0xd1bc('0x0'));var path=require('path');var timeout=require(_0xd1bc('0x1'));var express=require(_0xd1bc('0x2'));var router=express[_0xd1bc('0x3')]();var fs_extra=require(_0xd1bc('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd1bc('0x5'));var controller=require('./intVtigerConfiguration.controller');router[_0xd1bc('0x6')]('/',auth[_0xd1bc('0x7')](),controller['index']);router[_0xd1bc('0x6')](_0xd1bc('0x8'),auth['isAuthenticated'](),controller[_0xd1bc('0x9')]);router[_0xd1bc('0x6')](_0xd1bc('0xa'),auth['isAuthenticated'](),controller['getFields']);router[_0xd1bc('0x6')](_0xd1bc('0xb'),auth[_0xd1bc('0x7')](),controller[_0xd1bc('0xc')]);router[_0xd1bc('0x6')](_0xd1bc('0xd'),auth['isAuthenticated'](),controller[_0xd1bc('0xe')]);router[_0xd1bc('0xf')]('/',auth[_0xd1bc('0x7')](),controller[_0xd1bc('0x10')]);router[_0xd1bc('0x11')](_0xd1bc('0x8'),auth[_0xd1bc('0x7')](),controller[_0xd1bc('0x12')]);router[_0xd1bc('0x13')](_0xd1bc('0x8'),auth[_0xd1bc('0x7')](),controller['destroy']);module[_0xd1bc('0x14')]=router; \ No newline at end of file diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js new file mode 100644 index 0000000..6052673 --- /dev/null +++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd341=['STRING','sequelize','exports'];(function(_0x51fb42,_0x3020d5){var _0x5d767a=function(_0x5a7e20){while(--_0x5a7e20){_0x51fb42['push'](_0x51fb42['shift']());}};_0x5d767a(++_0x3020d5);}(_0xd341,0xbe));var _0x1d34=function(_0x46f2ca,_0xe2161b){_0x46f2ca=_0x46f2ca-0x0;var _0x508fd6=_0xd341[_0x46f2ca];return _0x508fd6;};'use strict';var Sequelize=require(_0x1d34('0x0'));module[_0x1d34('0x1')]={'name':{'type':Sequelize[_0x1d34('0x2')]},'description':{'type':Sequelize[_0x1d34('0x2')]}}; \ No newline at end of file diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js new file mode 100644 index 0000000..bbb76d2 --- /dev/null +++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2c35=['lodash','squel','crypto','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','status','json','offset','undefined','count','limit','set','save','update','then','end','sendStatus','error','stack','name','send','map','VtigerConfiguration','fieldName','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','rawAttributes','include','options','create','body','find','getFields','findOne','VtigerField','length','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs'];(function(_0x145b3c,_0x31ea4a){var _0x1b6e36=function(_0xfccee6){while(--_0xfccee6){_0x145b3c['push'](_0x145b3c['shift']());}};_0x1b6e36(++_0x31ea4a);}(_0x2c35,0xe5));var _0x52c3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c35[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x52c3('0x0'));var rimraf=require(_0x52c3('0x1'));var zipdir=require(_0x52c3('0x2'));var jsonpatch=require(_0x52c3('0x3'));var rp=require('request-promise');var moment=require(_0x52c3('0x4'));var BPromise=require(_0x52c3('0x5'));var Mustache=require(_0x52c3('0x6'));var util=require(_0x52c3('0x7'));var path=require(_0x52c3('0x8'));var sox=require('sox');var csv=require(_0x52c3('0x9'));var ejs=require(_0x52c3('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x52c3('0xb'));var squel=require(_0x52c3('0xc'));var crypto=require(_0x52c3('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x52c3('0x9'));var querystring=require(_0x52c3('0xe'));var Papa=require(_0x52c3('0xf'));var Redis=require(_0x52c3('0x10'));var authService=require(_0x52c3('0x11'));var qs=require(_0x52c3('0x12'));var as=require(_0x52c3('0x13'));var hardwareService=require(_0x52c3('0x14'));var logger=require(_0x52c3('0x15'))(_0x52c3('0x16'));var utils=require(_0x52c3('0x17'));var config=require(_0x52c3('0x18'));var licenseUtil=require(_0x52c3('0x19'));var db=require(_0x52c3('0x1a'))['db'];function respondWithStatusCode(_0x3379e6,_0x5046e4){_0x5046e4=_0x5046e4||0xcc;return function(_0x3b5974){if(_0x3b5974){return _0x3379e6['sendStatus'](_0x5046e4);}return _0x3379e6[_0x52c3('0x1b')](_0x5046e4)['end']();};}function respondWithResult(_0x570e0f,_0x2fdf61){_0x2fdf61=_0x2fdf61||0xc8;return function(_0x4b3bfb){if(_0x4b3bfb){return _0x570e0f[_0x52c3('0x1b')](_0x2fdf61)[_0x52c3('0x1c')](_0x4b3bfb);}};}function respondWithFilteredResult(_0x170dad,_0x4e6b33){return function(_0x1ae1ba){if(_0x1ae1ba){var _0x24e382=typeof _0x4e6b33[_0x52c3('0x1d')]===_0x52c3('0x1e')&&typeof _0x4e6b33['limit']===_0x52c3('0x1e');var _0x232c24=_0x1ae1ba[_0x52c3('0x1f')];var _0x121ea1=_0x24e382?0x0:_0x4e6b33[_0x52c3('0x1d')];var _0x1f010a=_0x24e382?_0x1ae1ba[_0x52c3('0x1f')]:_0x4e6b33['offset']+_0x4e6b33[_0x52c3('0x20')];var _0x3d5c58;if(_0x1f010a>=_0x232c24){_0x1f010a=_0x232c24;_0x3d5c58=0xc8;}else{_0x3d5c58=0xce;}_0x170dad[_0x52c3('0x1b')](_0x3d5c58);return _0x170dad[_0x52c3('0x21')]('Content-Range',_0x121ea1+'-'+_0x1f010a+'/'+_0x232c24)[_0x52c3('0x1c')](_0x1ae1ba);}return null;};}function patchUpdates(_0x4f0c35){return function(_0x5d8fd1){try{jsonpatch['apply'](_0x5d8fd1,_0x4f0c35,!![]);}catch(_0x38be35){return BPromise['reject'](_0x38be35);}return _0x5d8fd1[_0x52c3('0x22')]();};}function saveUpdates(_0x4a3660,_0x20ae0f){return function(_0x24d20b){if(_0x24d20b){return _0x24d20b[_0x52c3('0x23')](_0x4a3660)[_0x52c3('0x24')](function(_0x41ace3){return _0x41ace3;});}return null;};}function removeEntity(_0x5c1aa8,_0x111bf7){return function(_0x4ef77b){if(_0x4ef77b){return _0x4ef77b['destroy']()[_0x52c3('0x24')](function(){_0x5c1aa8[_0x52c3('0x1b')](0xcc)[_0x52c3('0x25')]();});}};}function handleEntityNotFound(_0xdef651,_0x5db014){return function(_0x186a59){if(!_0x186a59){_0xdef651[_0x52c3('0x26')](0x194);}return _0x186a59;};}function handleError(_0x57afb0,_0xd97ce1){_0xd97ce1=_0xd97ce1||0x1f4;return function(_0x5a77a6){logger[_0x52c3('0x27')](_0x5a77a6[_0x52c3('0x28')]);if(_0x5a77a6[_0x52c3('0x29')]){delete _0x5a77a6[_0x52c3('0x29')];}_0x57afb0[_0x52c3('0x1b')](_0xd97ce1)[_0x52c3('0x2a')](_0x5a77a6);};}exports['index']=function(_0x44afe8,_0x8e3edb){var _0x4bea7a={},_0x3cab7c={},_0xa42faf={'count':0x0,'rows':[]};var _0x4c7d0c=_[_0x52c3('0x2b')](db[_0x52c3('0x2c')]['rawAttributes'],function(_0x54f075){return{'name':_0x54f075[_0x52c3('0x2d')],'type':_0x54f075['type']['key']};});_0x3cab7c[_0x52c3('0x2e')]=_['map'](_0x4c7d0c,_0x52c3('0x29'));_0x3cab7c[_0x52c3('0x2f')]=_[_0x52c3('0x30')](_0x44afe8[_0x52c3('0x2f')]);_0x3cab7c[_0x52c3('0x31')]=_['intersection'](_0x3cab7c[_0x52c3('0x2e')],_0x3cab7c[_0x52c3('0x2f')]);_0x4bea7a[_0x52c3('0x32')]=_[_0x52c3('0x33')](_0x3cab7c[_0x52c3('0x2e')],qs['fields'](_0x44afe8['query'][_0x52c3('0x34')]));_0x4bea7a['attributes']=_0x4bea7a[_0x52c3('0x32')]['length']?_0x4bea7a['attributes']:_0x3cab7c[_0x52c3('0x2e')];if(!_0x44afe8['query'][_0x52c3('0x35')](_0x52c3('0x36'))){_0x4bea7a[_0x52c3('0x20')]=qs['limit'](_0x44afe8['query']['limit']);_0x4bea7a[_0x52c3('0x1d')]=qs['offset'](_0x44afe8[_0x52c3('0x2f')]['offset']);}_0x4bea7a[_0x52c3('0x37')]=qs['sort'](_0x44afe8[_0x52c3('0x2f')][_0x52c3('0x38')]);_0x4bea7a[_0x52c3('0x39')]=qs[_0x52c3('0x31')](_[_0x52c3('0x3a')](_0x44afe8[_0x52c3('0x2f')],_0x3cab7c[_0x52c3('0x31')]),_0x4c7d0c);if(_0x44afe8['query']['filter']){_0x4bea7a[_0x52c3('0x39')]=_[_0x52c3('0x3b')](_0x4bea7a[_0x52c3('0x39')],{'$or':_['map'](_0x4c7d0c,function(_0x803a2d){if(_0x803a2d['type']!==_0x52c3('0x3c')){var _0x2102cf={};_0x2102cf[_0x803a2d[_0x52c3('0x29')]]={'$like':'%'+_0x44afe8[_0x52c3('0x2f')][_0x52c3('0x3d')]+'%'};return _0x2102cf;}})});}_0x4bea7a=_[_0x52c3('0x3b')]({},_0x4bea7a,_0x44afe8['options']);var _0x4d514f={'where':_0x4bea7a[_0x52c3('0x39')]};return db[_0x52c3('0x2c')][_0x52c3('0x1f')](_0x4d514f)[_0x52c3('0x24')](function(_0x5e14c2){_0xa42faf[_0x52c3('0x1f')]=_0x5e14c2;if(_0x44afe8[_0x52c3('0x2f')][_0x52c3('0x3e')]){_0x4bea7a['include']=[{'all':!![]}];}return db[_0x52c3('0x2c')][_0x52c3('0x3f')](_0x4bea7a);})['then'](function(_0x3e2258){_0xa42faf[_0x52c3('0x40')]=_0x3e2258;return _0xa42faf;})[_0x52c3('0x24')](respondWithFilteredResult(_0x8e3edb,_0x4bea7a))[_0x52c3('0x41')](handleError(_0x8e3edb,null));};exports[_0x52c3('0x42')]=function(_0xf0bc0d,_0x33440a){var _0x2dac14={'raw':![],'where':{'id':_0xf0bc0d[_0x52c3('0x43')]['id']}},_0x1c3444={};_0x1c3444[_0x52c3('0x2e')]=_['keys'](db[_0x52c3('0x2c')][_0x52c3('0x44')]);_0x1c3444[_0x52c3('0x2f')]=_['keys'](_0xf0bc0d[_0x52c3('0x2f')]);_0x1c3444[_0x52c3('0x31')]=_['intersection'](_0x1c3444[_0x52c3('0x2e')],_0x1c3444[_0x52c3('0x2f')]);_0x2dac14[_0x52c3('0x32')]=_[_0x52c3('0x33')](_0x1c3444[_0x52c3('0x2e')],qs['fields'](_0xf0bc0d[_0x52c3('0x2f')]['fields']));_0x2dac14['attributes']=_0x2dac14[_0x52c3('0x32')]['length']?_0x2dac14[_0x52c3('0x32')]:_0x1c3444[_0x52c3('0x2e')];if(_0xf0bc0d['query'][_0x52c3('0x3e')]){_0x2dac14[_0x52c3('0x45')]=[{'all':!![]}];}_0x2dac14=_[_0x52c3('0x3b')]({},_0x2dac14,_0xf0bc0d[_0x52c3('0x46')]);return db[_0x52c3('0x2c')]['find'](_0x2dac14)['then'](handleEntityNotFound(_0x33440a,null))['then'](respondWithResult(_0x33440a,null))[_0x52c3('0x41')](handleError(_0x33440a,null));};exports[_0x52c3('0x47')]=function(_0x543824,_0x21a183){return db[_0x52c3('0x2c')]['create'](_0x543824[_0x52c3('0x48')],{})[_0x52c3('0x24')](respondWithResult(_0x21a183,0xc9))[_0x52c3('0x41')](handleError(_0x21a183,null));};exports['update']=function(_0x56d387,_0x521c87){if(_0x56d387['body']['id']){delete _0x56d387['body']['id'];}return db['VtigerConfiguration'][_0x52c3('0x49')]({'where':{'id':_0x56d387[_0x52c3('0x43')]['id']}})[_0x52c3('0x24')](handleEntityNotFound(_0x521c87,null))[_0x52c3('0x24')](saveUpdates(_0x56d387['body'],null))[_0x52c3('0x24')](respondWithResult(_0x521c87,null))[_0x52c3('0x41')](handleError(_0x521c87,null));};exports['destroy']=function(_0x1eee51,_0x3a91c0){return db[_0x52c3('0x2c')][_0x52c3('0x49')]({'where':{'id':_0x1eee51[_0x52c3('0x43')]['id']}})[_0x52c3('0x24')](handleEntityNotFound(_0x3a91c0,null))[_0x52c3('0x24')](removeEntity(_0x3a91c0,null))['catch'](handleError(_0x3a91c0,null));};exports[_0x52c3('0x4a')]=function(_0x32a740,_0x54264f,_0x4185da){var _0x1c434f={};var _0x51f2e5={};var _0x8b16bb;var _0x5a654c;return db[_0x52c3('0x2c')][_0x52c3('0x4b')]({'where':{'id':_0x32a740[_0x52c3('0x43')]['id']}})[_0x52c3('0x24')](handleEntityNotFound(_0x54264f,null))[_0x52c3('0x24')](function(_0xdcd2b6){if(_0xdcd2b6){_0x8b16bb=_0xdcd2b6;_0x51f2e5[_0x52c3('0x2e')]=_[_0x52c3('0x30')](db[_0x52c3('0x4c')][_0x52c3('0x44')]);_0x51f2e5['query']=_[_0x52c3('0x30')](_0x32a740['query']);_0x51f2e5['filters']=_[_0x52c3('0x33')](_0x51f2e5['model'],_0x51f2e5[_0x52c3('0x2f')]);_0x1c434f['attributes']=_[_0x52c3('0x33')](_0x51f2e5[_0x52c3('0x2e')],qs[_0x52c3('0x34')](_0x32a740[_0x52c3('0x2f')][_0x52c3('0x34')]));_0x1c434f['attributes']=_0x1c434f[_0x52c3('0x32')][_0x52c3('0x4d')]?_0x1c434f[_0x52c3('0x32')]:_0x51f2e5[_0x52c3('0x2e')];_0x1c434f[_0x52c3('0x37')]=qs[_0x52c3('0x38')](_0x32a740[_0x52c3('0x2f')][_0x52c3('0x38')]);_0x1c434f[_0x52c3('0x39')]=qs[_0x52c3('0x31')](_['pick'](_0x32a740[_0x52c3('0x2f')],_0x51f2e5[_0x52c3('0x31')]));if(_0x32a740['query']['filter']){_0x1c434f[_0x52c3('0x39')]=_['merge'](_0x1c434f['where'],{'$or':_[_0x52c3('0x2b')](_0x1c434f[_0x52c3('0x32')],function(_0x1d3609){var _0x1adf34={};_0x1adf34[_0x1d3609]={'$like':'%'+_0x32a740['query'][_0x52c3('0x3d')]+'%'};return _0x1adf34;})});}_0x1c434f=_[_0x52c3('0x3b')]({},_0x1c434f,_0x32a740[_0x52c3('0x46')]);return _0x8b16bb[_0x52c3('0x4a')](_0x1c434f);}})[_0x52c3('0x24')](function(_0x4f7c21){if(_0x4f7c21){_0x5a654c=_0x4f7c21['length'];if(!_0x32a740[_0x52c3('0x2f')][_0x52c3('0x35')](_0x52c3('0x36'))){_0x1c434f[_0x52c3('0x20')]=qs[_0x52c3('0x20')](_0x32a740[_0x52c3('0x2f')][_0x52c3('0x20')]);_0x1c434f[_0x52c3('0x1d')]=qs[_0x52c3('0x1d')](_0x32a740[_0x52c3('0x2f')]['offset']);}return _0x8b16bb[_0x52c3('0x4a')](_0x1c434f);}})[_0x52c3('0x24')](function(_0x206b7a){if(_0x206b7a){return _0x206b7a?{'count':_0x5a654c,'rows':_0x206b7a}:null;}})[_0x52c3('0x24')](respondWithResult(_0x54264f,null))['catch'](handleError(_0x54264f,null));};exports['getSubjects']=function(_0x546e1f,_0x1c3b57,_0x5b199d){var _0x259886={};var _0x1cfec3={};var _0x14e153;var _0xc7a292;return db[_0x52c3('0x2c')]['findOne']({'where':{'id':_0x546e1f[_0x52c3('0x43')]['id']}})[_0x52c3('0x24')](handleEntityNotFound(_0x1c3b57,null))[_0x52c3('0x24')](function(_0x4e594a){if(_0x4e594a){_0x14e153=_0x4e594a;_0x1cfec3[_0x52c3('0x2e')]=_['keys'](db['VtigerField'][_0x52c3('0x44')]);_0x1cfec3['query']=_[_0x52c3('0x30')](_0x546e1f[_0x52c3('0x2f')]);_0x1cfec3[_0x52c3('0x31')]=_[_0x52c3('0x33')](_0x1cfec3[_0x52c3('0x2e')],_0x1cfec3['query']);_0x259886[_0x52c3('0x32')]=_[_0x52c3('0x33')](_0x1cfec3[_0x52c3('0x2e')],qs[_0x52c3('0x34')](_0x546e1f[_0x52c3('0x2f')][_0x52c3('0x34')]));_0x259886['attributes']=_0x259886[_0x52c3('0x32')][_0x52c3('0x4d')]?_0x259886[_0x52c3('0x32')]:_0x1cfec3['model'];_0x259886[_0x52c3('0x37')]=qs[_0x52c3('0x38')](_0x546e1f[_0x52c3('0x2f')][_0x52c3('0x38')]);_0x259886[_0x52c3('0x39')]=qs[_0x52c3('0x31')](_[_0x52c3('0x3a')](_0x546e1f[_0x52c3('0x2f')],_0x1cfec3[_0x52c3('0x31')]));if(_0x546e1f[_0x52c3('0x2f')][_0x52c3('0x3d')]){_0x259886[_0x52c3('0x39')]=_[_0x52c3('0x3b')](_0x259886[_0x52c3('0x39')],{'$or':_[_0x52c3('0x2b')](_0x259886['attributes'],function(_0x47eb0f){var _0x1b74c1={};_0x1b74c1[_0x47eb0f]={'$like':'%'+_0x546e1f[_0x52c3('0x2f')][_0x52c3('0x3d')]+'%'};return _0x1b74c1;})});}_0x259886=_[_0x52c3('0x3b')]({},_0x259886,_0x546e1f[_0x52c3('0x46')]);return _0x14e153[_0x52c3('0x4e')](_0x259886);}})['then'](function(_0x1b555d){if(_0x1b555d){_0xc7a292=_0x1b555d[_0x52c3('0x4d')];if(!_0x546e1f[_0x52c3('0x2f')][_0x52c3('0x35')](_0x52c3('0x36'))){_0x259886[_0x52c3('0x20')]=qs[_0x52c3('0x20')](_0x546e1f[_0x52c3('0x2f')][_0x52c3('0x20')]);_0x259886['offset']=qs['offset'](_0x546e1f[_0x52c3('0x2f')]['offset']);}return _0x14e153[_0x52c3('0x4e')](_0x259886);}})[_0x52c3('0x24')](function(_0x1c5692){if(_0x1c5692){return _0x1c5692?{'count':_0xc7a292,'rows':_0x1c5692}:null;}})[_0x52c3('0x24')](respondWithResult(_0x1c3b57,null))[_0x52c3('0x41')](handleError(_0x1c3b57,null));};exports[_0x52c3('0x4f')]=function(_0x4d14de,_0x11dca1,_0x4d071e){var _0x415c27={};var _0x14252a={};var _0x153fd5;var _0x4f28a7;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x4d14de[_0x52c3('0x43')]['id']}})[_0x52c3('0x24')](handleEntityNotFound(_0x11dca1,null))[_0x52c3('0x24')](function(_0x597ae7){if(_0x597ae7){_0x153fd5=_0x597ae7;_0x14252a[_0x52c3('0x2e')]=_[_0x52c3('0x30')](db[_0x52c3('0x4c')][_0x52c3('0x44')]);_0x14252a['query']=_['keys'](_0x4d14de[_0x52c3('0x2f')]);_0x14252a['filters']=_[_0x52c3('0x33')](_0x14252a['model'],_0x14252a[_0x52c3('0x2f')]);_0x415c27[_0x52c3('0x32')]=_[_0x52c3('0x33')](_0x14252a[_0x52c3('0x2e')],qs[_0x52c3('0x34')](_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x34')]));_0x415c27[_0x52c3('0x32')]=_0x415c27[_0x52c3('0x32')][_0x52c3('0x4d')]?_0x415c27['attributes']:_0x14252a[_0x52c3('0x2e')];_0x415c27[_0x52c3('0x37')]=qs[_0x52c3('0x38')](_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x38')]);_0x415c27[_0x52c3('0x39')]=qs[_0x52c3('0x31')](_['pick'](_0x4d14de['query'],_0x14252a[_0x52c3('0x31')]));if(_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x3d')]){_0x415c27[_0x52c3('0x39')]=_['merge'](_0x415c27[_0x52c3('0x39')],{'$or':_['map'](_0x415c27[_0x52c3('0x32')],function(_0x12ba7d){var _0x4d0607={};_0x4d0607[_0x12ba7d]={'$like':'%'+_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x3d')]+'%'};return _0x4d0607;})});}_0x415c27=_[_0x52c3('0x3b')]({},_0x415c27,_0x4d14de['options']);return _0x153fd5[_0x52c3('0x4f')](_0x415c27);}})[_0x52c3('0x24')](function(_0x328312){if(_0x328312){_0x4f28a7=_0x328312[_0x52c3('0x4d')];if(!_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x35')]('nolimit')){_0x415c27[_0x52c3('0x20')]=qs[_0x52c3('0x20')](_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x20')]);_0x415c27[_0x52c3('0x1d')]=qs[_0x52c3('0x1d')](_0x4d14de[_0x52c3('0x2f')][_0x52c3('0x1d')]);}return _0x153fd5[_0x52c3('0x4f')](_0x415c27);}})[_0x52c3('0x24')](function(_0x49e59c){if(_0x49e59c){return _0x49e59c?{'count':_0x4f28a7,'rows':_0x49e59c}:null;}})[_0x52c3('0x24')](respondWithResult(_0x11dca1,null))[_0x52c3('0x41')](handleError(_0x11dca1,null));}; \ No newline at end of file diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js new file mode 100644 index 0000000..aa103dd --- /dev/null +++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x251f=['exports','define','int_vtiger_configurations','lodash','util','api','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes'];(function(_0x130d82,_0x25f49b){var _0x112070=function(_0x5795ee){while(--_0x5795ee){_0x130d82['push'](_0x130d82['shift']());}};_0x112070(++_0x25f49b);}(_0x251f,0x7c));var _0xf251=function(_0x4a96d2,_0x689504){_0x4a96d2=_0x4a96d2-0x0;var _0x38af04=_0x251f[_0x4a96d2];return _0x38af04;};'use strict';var _=require(_0xf251('0x0'));var util=require(_0xf251('0x1'));var logger=require('../../config/logger')(_0xf251('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf251('0x3'));var fs=require('fs');var path=require(_0xf251('0x4'));var rimraf=require(_0xf251('0x5'));var config=require(_0xf251('0x6'));var attributes=require(_0xf251('0x7'));module[_0xf251('0x8')]=function(_0x36f94d,_0xe93080){return _0x36f94d[_0xf251('0x9')]('VtigerConfiguration',attributes,{'tableName':_0xf251('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js new file mode 100644 index 0000000..e5f4a8b --- /dev/null +++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbb2a=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','VtigerConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','moment'];(function(_0x177b6e,_0x2c35c5){var _0x58c7cc=function(_0xff798c){while(--_0xff798c){_0x177b6e['push'](_0x177b6e['shift']());}};_0x58c7cc(++_0x2c35c5);}(_0xbb2a,0x82));var _0xabb2=function(_0x1f54ce,_0x17b1ca){_0x1f54ce=_0x1f54ce-0x0;var _0x594827=_0xbb2a[_0x1f54ce];return _0x594827;};'use strict';var _=require(_0xabb2('0x0'));var util=require('util');var moment=require(_0xabb2('0x1'));var BPromise=require(_0xabb2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xabb2('0x3'));var db=require(_0xabb2('0x4'))['db'];var utils=require(_0xabb2('0x5'));var logger=require(_0xabb2('0x6'))(_0xabb2('0x7'));var config=require(_0xabb2('0x8'));var jayson=require(_0xabb2('0x9'));var client=jayson['client'][_0xabb2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3de9fc,_0x8659df,_0x2904b3){return new BPromise(function(_0x38fa76,_0x4fd3ae){return client['request'](_0x3de9fc,_0x2904b3)[_0xabb2('0xb')](function(_0x1970c3){logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x8659df,_0xabb2('0xc'));logger[_0xabb2('0xd')](_0xabb2('0xe'),_0x8659df,_0xabb2('0xc'),JSON['stringify'](_0x1970c3));if(_0x1970c3[_0xabb2('0xf')]){if(_0x1970c3[_0xabb2('0xf')][_0xabb2('0x10')]===0x1f4){logger[_0xabb2('0xf')](_0xabb2('0x11'),_0x8659df,_0x1970c3[_0xabb2('0xf')]['message']);return _0x4fd3ae(_0x1970c3[_0xabb2('0xf')][_0xabb2('0x12')]);}logger[_0xabb2('0xf')](_0xabb2('0x11'),_0x8659df,_0x1970c3[_0xabb2('0xf')][_0xabb2('0x12')]);return _0x38fa76(_0x1970c3['error'][_0xabb2('0x12')]);}else{logger[_0xabb2('0x13')](_0xabb2('0x11'),_0x8659df,'request\x20sent');_0x38fa76(_0x1970c3[_0xabb2('0x14')]['message']);}})[_0xabb2('0x15')](function(_0x300406){logger[_0xabb2('0xf')](_0xabb2('0x11'),_0x8659df,_0x300406);_0x4fd3ae(_0x300406);});});} \ No newline at end of file diff --git a/server/api/intVtigerField/index.js b/server/api/intVtigerField/index.js new file mode 100644 index 0000000..ef4ed9c --- /dev/null +++ b/server/api/intVtigerField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4d22=['exports','express','fs-extra','../../components/interaction/service','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy'];(function(_0x33667c,_0xda7ae2){var _0x3dada6=function(_0x2f6b12){while(--_0x2f6b12){_0x33667c['push'](_0x33667c['shift']());}};_0x3dada6(++_0xda7ae2);}(_0x4d22,0x10f));var _0x24d2=function(_0xfa5032,_0x5be306){_0xfa5032=_0xfa5032-0x0;var _0x41f425=_0x4d22[_0xfa5032];return _0x41f425;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x24d2('0x0'));var router=express['Router']();var fs_extra=require(_0x24d2('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x24d2('0x2'));var config=require('../../config/environment');var controller=require(_0x24d2('0x3'));router[_0x24d2('0x4')]('/',auth[_0x24d2('0x5')](),controller[_0x24d2('0x6')]);router['get'](_0x24d2('0x7'),auth['isAuthenticated'](),controller[_0x24d2('0x8')]);router[_0x24d2('0x9')]('/',auth['isAuthenticated'](),controller['create']);router[_0x24d2('0xa')](_0x24d2('0x7'),auth['isAuthenticated'](),controller[_0x24d2('0xb')]);router[_0x24d2('0xc')]('/:id',auth[_0x24d2('0x5')](),controller[_0x24d2('0xd')]);module[_0x24d2('0xe')]=router; \ No newline at end of file diff --git a/server/api/intVtigerField/intVtigerField.attributes.js b/server/api/intVtigerField/intVtigerField.attributes.js new file mode 100644 index 0000000..ab82fd0 --- /dev/null +++ b/server/api/intVtigerField/intVtigerField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd799=['customVariable','picklist','string','STRING','exports','ENUM','variable'];(function(_0x14a067,_0x3bc444){var _0x418dc3=function(_0x5736e0){while(--_0x5736e0){_0x14a067['push'](_0x14a067['shift']());}};_0x418dc3(++_0x3bc444);}(_0xd799,0x82));var _0x9d79=function(_0x487244,_0x1e6e88){_0x487244=_0x487244-0x0;var _0x86035c=_0xd799[_0x487244];return _0x86035c;};'use strict';var Sequelize=require('sequelize');module[_0x9d79('0x0')]={'type':{'type':Sequelize[_0x9d79('0x1')]('string',_0x9d79('0x2'),_0x9d79('0x3'),'keyValue',_0x9d79('0x4')),'defaultValue':_0x9d79('0x5')},'content':{'type':Sequelize[_0x9d79('0x6')]},'key':{'type':Sequelize[_0x9d79('0x6')]},'keyType':{'type':Sequelize[_0x9d79('0x1')](_0x9d79('0x5'),_0x9d79('0x2'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x9d79('0x6')]},'nameField':{'type':Sequelize[_0x9d79('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/intVtigerField/intVtigerField.controller.js b/server/api/intVtigerField/intVtigerField.controller.js new file mode 100644 index 0000000..1302f38 --- /dev/null +++ b/server/api/intVtigerField/intVtigerField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x79f4=['desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','error','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','findAll','rows','catch','show','params','includeAll','find','body','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce'];(function(_0x2327be,_0x769e7){var _0x469e6c=function(_0x45eadc){while(--_0x45eadc){_0x2327be['push'](_0x2327be['shift']());}};_0x469e6c(++_0x769e7);}(_0x79f4,0x113));var _0x479f=function(_0x2babb3,_0x2640eb){_0x2babb3=_0x2babb3-0x0;var _0x333670=_0x79f4[_0x2babb3];return _0x333670;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x479f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x479f('0x1'));var rp=require('request-promise');var moment=require(_0x479f('0x2'));var BPromise=require(_0x479f('0x3'));var Mustache=require(_0x479f('0x4'));var util=require(_0x479f('0x5'));var path=require(_0x479f('0x6'));var sox=require(_0x479f('0x7'));var csv=require(_0x479f('0x8'));var ejs=require(_0x479f('0x9'));var fs=require('fs');var fs_extra=require(_0x479f('0xa'));var _=require('lodash');var squel=require(_0x479f('0xb'));var crypto=require('crypto');var jsforce=require(_0x479f('0xc'));var deskjs=require(_0x479f('0xd'));var toCsv=require(_0x479f('0x8'));var querystring=require(_0x479f('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x479f('0xf'));var qs=require(_0x479f('0x10'));var as=require(_0x479f('0x11'));var hardwareService=require(_0x479f('0x12'));var logger=require(_0x479f('0x13'))(_0x479f('0x14'));var utils=require('../../config/utils');var config=require(_0x479f('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e3ee7,_0x1b9d90){_0x1b9d90=_0x1b9d90||0xcc;return function(_0x2fc280){if(_0x2fc280){return _0x1e3ee7[_0x479f('0x16')](_0x1b9d90);}return _0x1e3ee7['status'](_0x1b9d90)[_0x479f('0x17')]();};}function respondWithResult(_0x34b764,_0x3fa0a0){_0x3fa0a0=_0x3fa0a0||0xc8;return function(_0x56906f){if(_0x56906f){return _0x34b764[_0x479f('0x18')](_0x3fa0a0)[_0x479f('0x19')](_0x56906f);}};}function respondWithFilteredResult(_0x10f51f,_0x40f4f0){return function(_0x2ffc39){if(_0x2ffc39){var _0xe7633f=typeof _0x40f4f0[_0x479f('0x1a')]===_0x479f('0x1b')&&typeof _0x40f4f0[_0x479f('0x1c')]==='undefined';var _0x2f1e8d=_0x2ffc39[_0x479f('0x1d')];var _0xce6e86=_0xe7633f?0x0:_0x40f4f0[_0x479f('0x1a')];var _0x3e6555=_0xe7633f?_0x2ffc39[_0x479f('0x1d')]:_0x40f4f0[_0x479f('0x1a')]+_0x40f4f0['limit'];var _0x1a52af;if(_0x3e6555>=_0x2f1e8d){_0x3e6555=_0x2f1e8d;_0x1a52af=0xc8;}else{_0x1a52af=0xce;}_0x10f51f[_0x479f('0x18')](_0x1a52af);return _0x10f51f[_0x479f('0x1e')]('Content-Range',_0xce6e86+'-'+_0x3e6555+'/'+_0x2f1e8d)[_0x479f('0x19')](_0x2ffc39);}return null;};}function patchUpdates(_0x3440f2){return function(_0x4646ff){try{jsonpatch[_0x479f('0x1f')](_0x4646ff,_0x3440f2,!![]);}catch(_0x500268){return BPromise[_0x479f('0x20')](_0x500268);}return _0x4646ff[_0x479f('0x21')]();};}function saveUpdates(_0x4219dc,_0x5e5dfe){return function(_0x5986b5){if(_0x5986b5){return _0x5986b5[_0x479f('0x22')](_0x4219dc)['then'](function(_0x27b71b){return _0x27b71b;});}return null;};}function removeEntity(_0x58267e,_0x5546b7){return function(_0x3bac9a){if(_0x3bac9a){return _0x3bac9a[_0x479f('0x23')]()['then'](function(){_0x58267e[_0x479f('0x18')](0xcc)[_0x479f('0x17')]();});}};}function handleEntityNotFound(_0x10ad9a,_0x5949f7){return function(_0x18edb7){if(!_0x18edb7){_0x10ad9a[_0x479f('0x16')](0x194);}return _0x18edb7;};}function handleError(_0x337212,_0x2d297b){_0x2d297b=_0x2d297b||0x1f4;return function(_0xdbe137){logger[_0x479f('0x24')](_0xdbe137['stack']);if(_0xdbe137[_0x479f('0x25')]){delete _0xdbe137[_0x479f('0x25')];}_0x337212[_0x479f('0x18')](_0x2d297b)[_0x479f('0x26')](_0xdbe137);};}exports[_0x479f('0x27')]=function(_0x5cc486,_0x17f806){var _0x5cad57={},_0x52b939={},_0x3cbc56={'count':0x0,'rows':[]};var _0x21704d=_[_0x479f('0x28')](db[_0x479f('0x29')][_0x479f('0x2a')],function(_0x9b21b3){return{'name':_0x9b21b3[_0x479f('0x2b')],'type':_0x9b21b3[_0x479f('0x2c')][_0x479f('0x2d')]};});_0x52b939[_0x479f('0x2e')]=_[_0x479f('0x28')](_0x21704d,_0x479f('0x25'));_0x52b939[_0x479f('0x2f')]=_[_0x479f('0x30')](_0x5cc486[_0x479f('0x2f')]);_0x52b939[_0x479f('0x31')]=_[_0x479f('0x32')](_0x52b939[_0x479f('0x2e')],_0x52b939[_0x479f('0x2f')]);_0x5cad57[_0x479f('0x33')]=_[_0x479f('0x32')](_0x52b939[_0x479f('0x2e')],qs[_0x479f('0x34')](_0x5cc486[_0x479f('0x2f')][_0x479f('0x34')]));_0x5cad57[_0x479f('0x33')]=_0x5cad57['attributes'][_0x479f('0x35')]?_0x5cad57[_0x479f('0x33')]:_0x52b939['model'];if(!_0x5cc486[_0x479f('0x2f')]['hasOwnProperty'](_0x479f('0x36'))){_0x5cad57[_0x479f('0x1c')]=qs[_0x479f('0x1c')](_0x5cc486[_0x479f('0x2f')][_0x479f('0x1c')]);_0x5cad57[_0x479f('0x1a')]=qs[_0x479f('0x1a')](_0x5cc486[_0x479f('0x2f')][_0x479f('0x1a')]);}_0x5cad57[_0x479f('0x37')]=qs['sort'](_0x5cc486[_0x479f('0x2f')][_0x479f('0x38')]);_0x5cad57[_0x479f('0x39')]=qs[_0x479f('0x31')](_[_0x479f('0x3a')](_0x5cc486[_0x479f('0x2f')],_0x52b939['filters']),_0x21704d);if(_0x5cc486[_0x479f('0x2f')][_0x479f('0x3b')]){_0x5cad57[_0x479f('0x39')]=_[_0x479f('0x3c')](_0x5cad57[_0x479f('0x39')],{'$or':_['map'](_0x21704d,function(_0x5eb44a){if(_0x5eb44a[_0x479f('0x2c')]!==_0x479f('0x3d')){var _0x27add6={};_0x27add6[_0x5eb44a['name']]={'$like':'%'+_0x5cc486['query'][_0x479f('0x3b')]+'%'};return _0x27add6;}})});}_0x5cad57=_['merge']({},_0x5cad57,_0x5cc486[_0x479f('0x3e')]);var _0x152097={'where':_0x5cad57[_0x479f('0x39')]};return db[_0x479f('0x29')]['count'](_0x152097)[_0x479f('0x3f')](function(_0x6bdbac){_0x3cbc56[_0x479f('0x1d')]=_0x6bdbac;if(_0x5cc486[_0x479f('0x2f')]['includeAll']){_0x5cad57['include']=[{'all':!![]}];}return db['VtigerField'][_0x479f('0x40')](_0x5cad57);})[_0x479f('0x3f')](function(_0x57f6a8){_0x3cbc56[_0x479f('0x41')]=_0x57f6a8;return _0x3cbc56;})[_0x479f('0x3f')](respondWithFilteredResult(_0x17f806,_0x5cad57))[_0x479f('0x42')](handleError(_0x17f806,null));};exports[_0x479f('0x43')]=function(_0xd62bb,_0x40bc55){var _0x33b7f6={'raw':!![],'where':{'id':_0xd62bb[_0x479f('0x44')]['id']}},_0x53b10d={};_0x53b10d[_0x479f('0x2e')]=_[_0x479f('0x30')](db[_0x479f('0x29')][_0x479f('0x2a')]);_0x53b10d[_0x479f('0x2f')]=_[_0x479f('0x30')](_0xd62bb[_0x479f('0x2f')]);_0x53b10d[_0x479f('0x31')]=_['intersection'](_0x53b10d['model'],_0x53b10d['query']);_0x33b7f6[_0x479f('0x33')]=_[_0x479f('0x32')](_0x53b10d[_0x479f('0x2e')],qs[_0x479f('0x34')](_0xd62bb['query'][_0x479f('0x34')]));_0x33b7f6[_0x479f('0x33')]=_0x33b7f6[_0x479f('0x33')]['length']?_0x33b7f6[_0x479f('0x33')]:_0x53b10d['model'];if(_0xd62bb[_0x479f('0x2f')][_0x479f('0x45')]){_0x33b7f6['include']=[{'all':!![]}];}_0x33b7f6=_[_0x479f('0x3c')]({},_0x33b7f6,_0xd62bb['options']);return db['VtigerField'][_0x479f('0x46')](_0x33b7f6)[_0x479f('0x3f')](handleEntityNotFound(_0x40bc55,null))[_0x479f('0x3f')](respondWithResult(_0x40bc55,null))[_0x479f('0x42')](handleError(_0x40bc55,null));};exports['create']=function(_0x5f5abe,_0x23c3ec){return db['VtigerField']['create'](_0x5f5abe['body'],{})[_0x479f('0x3f')](respondWithResult(_0x23c3ec,0xc9))[_0x479f('0x42')](handleError(_0x23c3ec,null));};exports['update']=function(_0x335894,_0x497d47){if(_0x335894[_0x479f('0x47')]['id']){delete _0x335894[_0x479f('0x47')]['id'];}return db[_0x479f('0x29')][_0x479f('0x46')]({'where':{'id':_0x335894['params']['id']}})[_0x479f('0x3f')](handleEntityNotFound(_0x497d47,null))[_0x479f('0x3f')](saveUpdates(_0x335894[_0x479f('0x47')],null))[_0x479f('0x3f')](respondWithResult(_0x497d47,null))[_0x479f('0x42')](handleError(_0x497d47,null));};exports[_0x479f('0x23')]=function(_0x78fcc7,_0x4c9a3b){return db[_0x479f('0x29')][_0x479f('0x46')]({'where':{'id':_0x78fcc7[_0x479f('0x44')]['id']}})[_0x479f('0x3f')](handleEntityNotFound(_0x4c9a3b,null))[_0x479f('0x3f')](removeEntity(_0x4c9a3b,null))[_0x479f('0x42')](handleError(_0x4c9a3b,null));}; \ No newline at end of file diff --git a/server/api/intVtigerField/intVtigerField.model.js b/server/api/intVtigerField/intVtigerField.model.js new file mode 100644 index 0000000..757e260 --- /dev/null +++ b/server/api/intVtigerField/intVtigerField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa439=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','VtigerField','int_vtiger_fields','vtiger_unique_index','FieldId','lodash'];(function(_0x4a63fc,_0x167a02){var _0x30d4c3=function(_0x3eecb2){while(--_0x3eecb2){_0x4a63fc['push'](_0x4a63fc['shift']());}};_0x30d4c3(++_0x167a02);}(_0xa439,0x137));var _0x9a43=function(_0x5b6f19,_0x3dcb2d){_0x5b6f19=_0x5b6f19-0x0;var _0x5d02e5=_0xa439[_0x5b6f19];return _0x5d02e5;};'use strict';var _=require(_0x9a43('0x0'));var util=require(_0x9a43('0x1'));var logger=require(_0x9a43('0x2'))('api');var moment=require(_0x9a43('0x3'));var BPromise=require(_0x9a43('0x4'));var rp=require(_0x9a43('0x5'));var fs=require('fs');var path=require(_0x9a43('0x6'));var rimraf=require(_0x9a43('0x7'));var config=require(_0x9a43('0x8'));var attributes=require('./intVtigerField.attributes');module['exports']=function(_0x1d2359,_0x12590c){return _0x1d2359['define'](_0x9a43('0x9'),attributes,{'tableName':_0x9a43('0xa'),'paranoid':![],'indexes':[{'name':_0x9a43('0xb'),'fields':['idField',_0x9a43('0xc')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intVtigerField/intVtigerField.rpc.js b/server/api/intVtigerField/intVtigerField.rpc.js new file mode 100644 index 0000000..fc19aaa --- /dev/null +++ b/server/api/intVtigerField/intVtigerField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfc0d=['catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','client','http','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x484e25,_0x3724f0){var _0x25806=function(_0x4d71c3){while(--_0x4d71c3){_0x484e25['push'](_0x484e25['shift']());}};_0x25806(++_0x3724f0);}(_0xfc0d,0x17b));var _0xdfc0=function(_0x4cdf2d,_0x228549){_0x4cdf2d=_0x4cdf2d-0x0;var _0xfb36d5=_0xfc0d[_0x4cdf2d];return _0xfb36d5;};'use strict';var _=require(_0xdfc0('0x0'));var util=require('util');var moment=require(_0xdfc0('0x1'));var BPromise=require(_0xdfc0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdfc0('0x3'));var db=require(_0xdfc0('0x4'))['db'];var utils=require(_0xdfc0('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xdfc0('0x6')][_0xdfc0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1da9cb,_0x3a883b,_0x5b45c9){return new BPromise(function(_0x2f4a04,_0x534910){return client[_0xdfc0('0x8')](_0x1da9cb,_0x5b45c9)[_0xdfc0('0x9')](function(_0x434f80){logger['info'](_0xdfc0('0xa'),_0x3a883b,_0xdfc0('0xb'));logger[_0xdfc0('0xc')](_0xdfc0('0xd'),_0x3a883b,_0xdfc0('0xb'),JSON[_0xdfc0('0xe')](_0x434f80));if(_0x434f80[_0xdfc0('0xf')]){if(_0x434f80[_0xdfc0('0xf')][_0xdfc0('0x10')]===0x1f4){logger[_0xdfc0('0xf')](_0xdfc0('0xa'),_0x3a883b,_0x434f80[_0xdfc0('0xf')]['message']);return _0x534910(_0x434f80[_0xdfc0('0xf')][_0xdfc0('0x11')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x3a883b,_0x434f80[_0xdfc0('0xf')][_0xdfc0('0x11')]);return _0x2f4a04(_0x434f80[_0xdfc0('0xf')]['message']);}else{logger[_0xdfc0('0x12')](_0xdfc0('0xa'),_0x3a883b,_0xdfc0('0xb'));_0x2f4a04(_0x434f80[_0xdfc0('0x13')][_0xdfc0('0x11')]);}})[_0xdfc0('0x14')](function(_0x3dc645){logger[_0xdfc0('0xf')](_0xdfc0('0xa'),_0x3a883b,_0x3dc645);_0x534910(_0x3dc645);});});} \ No newline at end of file diff --git a/server/api/intZendeskAccount/index.js b/server/api/intZendeskAccount/index.js new file mode 100644 index 0000000..342dc3f --- /dev/null +++ b/server/api/intZendeskAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x21ff=['/:id','show','/:id/configurations','post','addConfiguration','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index'];(function(_0x44e8fb,_0x23e56a){var _0x1d5476=function(_0x26779b){while(--_0x26779b){_0x44e8fb['push'](_0x44e8fb['shift']());}};_0x1d5476(++_0x23e56a);}(_0x21ff,0x8c));var _0xf21f=function(_0x5bf2b3,_0xfcd364){_0x5bf2b3=_0x5bf2b3-0x0;var _0x5e8a9b=_0x21ff[_0x5bf2b3];return _0x5e8a9b;};'use strict';var multer=require(_0xf21f('0x0'));var util=require(_0xf21f('0x1'));var path=require(_0xf21f('0x2'));var timeout=require(_0xf21f('0x3'));var express=require(_0xf21f('0x4'));var router=express[_0xf21f('0x5')]();var fs_extra=require(_0xf21f('0x6'));var auth=require(_0xf21f('0x7'));var interaction=require(_0xf21f('0x8'));var config=require(_0xf21f('0x9'));var controller=require(_0xf21f('0xa'));router[_0xf21f('0xb')]('/',auth[_0xf21f('0xc')](),controller[_0xf21f('0xd')]);router['get'](_0xf21f('0xe'),auth[_0xf21f('0xc')](),controller[_0xf21f('0xf')]);router[_0xf21f('0xb')](_0xf21f('0x10'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0xf21f('0xb')]('/:id/fields',auth[_0xf21f('0xc')](),controller['getFields']);router['post']('/',auth[_0xf21f('0xc')](),controller['create']);router[_0xf21f('0x11')](_0xf21f('0x10'),auth[_0xf21f('0xc')](),controller[_0xf21f('0x12')]);router[_0xf21f('0x13')](_0xf21f('0xe'),auth[_0xf21f('0xc')](),controller[_0xf21f('0x14')]);router['delete'](_0xf21f('0xe'),auth[_0xf21f('0xc')](),controller[_0xf21f('0x15')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/intZendeskAccount/intZendeskAccount.attributes.js b/server/api/intZendeskAccount/intZendeskAccount.attributes.js new file mode 100644 index 0000000..f31fcd3 --- /dev/null +++ b/server/api/intZendeskAccount/intZendeskAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa6ce=['STRING','username','remoteUri','ENUM','password','token','integrationTab','newTab','sequelize'];(function(_0x163a9f,_0xf9b87){var _0xe0fb8b=function(_0x218a08){while(--_0x218a08){_0x163a9f['push'](_0x163a9f['shift']());}};_0xe0fb8b(++_0xf9b87);}(_0xa6ce,0x15e));var _0xea6c=function(_0x5ac1e5,_0x4b5012){_0x5ac1e5=_0x5ac1e5-0x0;var _0x1bccc6=_0xa6ce[_0x5ac1e5];return _0x1bccc6;};'use strict';var Sequelize=require(_0xea6c('0x0'));module['exports']={'name':{'type':Sequelize[_0xea6c('0x1')]},'description':{'type':Sequelize[_0xea6c('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0xea6c('0x2')},'password':{'type':Sequelize[_0xea6c('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xea6c('0x3')},'authType':{'type':Sequelize[_0xea6c('0x4')](_0xea6c('0x5'),_0xea6c('0x6')),'defaultValue':_0xea6c('0x5')},'serverUrl':{'type':Sequelize[_0xea6c('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xea6c('0x7'),_0xea6c('0x8')),'defaultValue':_0xea6c('0x7')}}; \ No newline at end of file diff --git a/server/api/intZendeskAccount/intZendeskAccount.controller.js b/server/api/intZendeskAccount/intZendeskAccount.controller.js new file mode 100644 index 0000000..990f1a9 --- /dev/null +++ b/server/api/intZendeskAccount/intZendeskAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9ffd=['catch','show','params','rawAttributes','find','create','body','destroy','getConfigurations','ZendeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','ZendeskField','findOne','username','password','token','authType','substring','lastIndexOf','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','base64','%s/token:%s','toString','Sequelize','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../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','update','then','stack','name','index','map','ZendeskAccount','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll'];(function(_0x3e0767,_0x48c9c8){var _0x1a453b=function(_0x4c78d7){while(--_0x4c78d7){_0x3e0767['push'](_0x3e0767['shift']());}};_0x1a453b(++_0x48c9c8);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x17d2f5,_0x2ce8b5){_0x17d2f5=_0x17d2f5-0x0;var _0x470d7d=_0x9ffd[_0x17d2f5];return _0x470d7d;};'use strict';var emlformat=require(_0xd9ff('0x0'));var rimraf=require(_0xd9ff('0x1'));var zipdir=require(_0xd9ff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd9ff('0x3'));var moment=require(_0xd9ff('0x4'));var BPromise=require(_0xd9ff('0x5'));var Mustache=require(_0xd9ff('0x6'));var util=require('util');var path=require(_0xd9ff('0x7'));var sox=require(_0xd9ff('0x8'));var csv=require('to-csv');var ejs=require(_0xd9ff('0x9'));var fs=require('fs');var fs_extra=require(_0xd9ff('0xa'));var _=require(_0xd9ff('0xb'));var squel=require(_0xd9ff('0xc'));var crypto=require(_0xd9ff('0xd'));var jsforce=require(_0xd9ff('0xe'));var deskjs=require(_0xd9ff('0xf'));var toCsv=require(_0xd9ff('0x10'));var querystring=require(_0xd9ff('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd9ff('0x12'));var hardwareService=require(_0xd9ff('0x13'));var logger=require(_0xd9ff('0x14'))(_0xd9ff('0x15'));var utils=require(_0xd9ff('0x16'));var config=require(_0xd9ff('0x17'));var licenseUtil=require(_0xd9ff('0x18'));var db=require(_0xd9ff('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x47b0d7,_0xaaf7af){_0xaaf7af=_0xaaf7af||0xcc;return function(_0x16a0d9){if(_0x16a0d9){return _0x47b0d7[_0xd9ff('0x1a')](_0xaaf7af);}return _0x47b0d7[_0xd9ff('0x1b')](_0xaaf7af)[_0xd9ff('0x1c')]();};}function respondWithResult(_0x556aa4,_0x2f78c1){_0x2f78c1=_0x2f78c1||0xc8;return function(_0x3c9ace){if(_0x3c9ace){return _0x556aa4['status'](_0x2f78c1)[_0xd9ff('0x1d')](_0x3c9ace);}};}function respondWithFilteredResult(_0x5db010,_0x4ffe54){return function(_0x547e28){if(_0x547e28){var _0x4c5718=typeof _0x4ffe54[_0xd9ff('0x1e')]==='undefined'&&typeof _0x4ffe54[_0xd9ff('0x1f')]===_0xd9ff('0x20');var _0x39c6ce=_0x547e28[_0xd9ff('0x21')];var _0x5f45c4=_0x4c5718?0x0:_0x4ffe54[_0xd9ff('0x1e')];var _0x3ccf15=_0x4c5718?_0x547e28[_0xd9ff('0x21')]:_0x4ffe54[_0xd9ff('0x1e')]+_0x4ffe54[_0xd9ff('0x1f')];var _0x3ea97d;if(_0x3ccf15>=_0x39c6ce){_0x3ccf15=_0x39c6ce;_0x3ea97d=0xc8;}else{_0x3ea97d=0xce;}_0x5db010[_0xd9ff('0x1b')](_0x3ea97d);return _0x5db010[_0xd9ff('0x22')]('Content-Range',_0x5f45c4+'-'+_0x3ccf15+'/'+_0x39c6ce)['json'](_0x547e28);}return null;};}function patchUpdates(_0x264a3d){return function(_0x3eed13){try{jsonpatch['apply'](_0x3eed13,_0x264a3d,!![]);}catch(_0x588151){return BPromise['reject'](_0x588151);}return _0x3eed13['save']();};}function saveUpdates(_0x1f4d9e,_0x58eb5f){return function(_0x4c486a){if(_0x4c486a){return _0x4c486a[_0xd9ff('0x23')](_0x1f4d9e)[_0xd9ff('0x24')](function(_0x9f074e){return _0x9f074e;});}return null;};}function removeEntity(_0x278b66,_0x42a828){return function(_0x4b058a){if(_0x4b058a){return _0x4b058a['destroy']()[_0xd9ff('0x24')](function(){_0x278b66['status'](0xcc)[_0xd9ff('0x1c')]();});}};}function handleEntityNotFound(_0x4d86fe,_0x285002){return function(_0x5d45b3){if(!_0x5d45b3){_0x4d86fe[_0xd9ff('0x1a')](0x194);}return _0x5d45b3;};}function handleError(_0x159e56,_0x2138b4){_0x2138b4=_0x2138b4||0x1f4;return function(_0x2970e8){logger['error'](_0x2970e8[_0xd9ff('0x25')]);if(_0x2970e8[_0xd9ff('0x26')]){delete _0x2970e8[_0xd9ff('0x26')];}_0x159e56[_0xd9ff('0x1b')](_0x2138b4)['send'](_0x2970e8);};}exports[_0xd9ff('0x27')]=function(_0x3792d9,_0x44b5a7){var _0x45fb63={},_0x263d3a={},_0xe516e2={'count':0x0,'rows':[]};var _0x420ffa=_[_0xd9ff('0x28')](db[_0xd9ff('0x29')]['rawAttributes'],function(_0xcea5db){return{'name':_0xcea5db['fieldName'],'type':_0xcea5db[_0xd9ff('0x2a')][_0xd9ff('0x2b')]};});_0x263d3a[_0xd9ff('0x2c')]=_['map'](_0x420ffa,_0xd9ff('0x26'));_0x263d3a[_0xd9ff('0x2d')]=_[_0xd9ff('0x2e')](_0x3792d9[_0xd9ff('0x2d')]);_0x263d3a['filters']=_[_0xd9ff('0x2f')](_0x263d3a['model'],_0x263d3a[_0xd9ff('0x2d')]);_0x45fb63[_0xd9ff('0x30')]=_[_0xd9ff('0x2f')](_0x263d3a[_0xd9ff('0x2c')],qs[_0xd9ff('0x31')](_0x3792d9[_0xd9ff('0x2d')][_0xd9ff('0x31')]));_0x45fb63[_0xd9ff('0x30')]=_0x45fb63[_0xd9ff('0x30')][_0xd9ff('0x32')]?_0x45fb63[_0xd9ff('0x30')]:_0x263d3a[_0xd9ff('0x2c')];if(!_0x3792d9[_0xd9ff('0x2d')][_0xd9ff('0x33')]('nolimit')){_0x45fb63[_0xd9ff('0x1f')]=qs[_0xd9ff('0x1f')](_0x3792d9[_0xd9ff('0x2d')]['limit']);_0x45fb63[_0xd9ff('0x1e')]=qs['offset'](_0x3792d9[_0xd9ff('0x2d')]['offset']);}_0x45fb63[_0xd9ff('0x34')]=qs['sort'](_0x3792d9[_0xd9ff('0x2d')][_0xd9ff('0x35')]);_0x45fb63[_0xd9ff('0x36')]=qs['filters'](_['pick'](_0x3792d9['query'],_0x263d3a[_0xd9ff('0x37')]),_0x420ffa);if(_0x3792d9[_0xd9ff('0x2d')][_0xd9ff('0x38')]){_0x45fb63[_0xd9ff('0x36')]=_[_0xd9ff('0x39')](_0x45fb63[_0xd9ff('0x36')],{'$or':_['map'](_0x420ffa,function(_0x4c00c2){if(_0x4c00c2['type']!==_0xd9ff('0x3a')){var _0x252edc={};_0x252edc[_0x4c00c2[_0xd9ff('0x26')]]={'$like':'%'+_0x3792d9[_0xd9ff('0x2d')]['filter']+'%'};return _0x252edc;}})});}_0x45fb63=_[_0xd9ff('0x39')]({},_0x45fb63,_0x3792d9['options']);var _0x3cff52={'where':_0x45fb63[_0xd9ff('0x36')]};return db[_0xd9ff('0x29')][_0xd9ff('0x21')](_0x3cff52)['then'](function(_0x1e34da){_0xe516e2[_0xd9ff('0x21')]=_0x1e34da;if(_0x3792d9['query'][_0xd9ff('0x3b')]){_0x45fb63[_0xd9ff('0x3c')]=[{'all':!![]}];}return db[_0xd9ff('0x29')][_0xd9ff('0x3d')](_0x45fb63);})[_0xd9ff('0x24')](function(_0x1cc848){_0xe516e2['rows']=_0x1cc848;return _0xe516e2;})[_0xd9ff('0x24')](respondWithFilteredResult(_0x44b5a7,_0x45fb63))[_0xd9ff('0x3e')](handleError(_0x44b5a7,null));};exports[_0xd9ff('0x3f')]=function(_0x39fbbb,_0x472724){var _0x52aab8={'raw':![],'where':{'id':_0x39fbbb[_0xd9ff('0x40')]['id']}},_0x3178cd={};_0x3178cd[_0xd9ff('0x2c')]=_['keys'](db['ZendeskAccount'][_0xd9ff('0x41')]);_0x3178cd[_0xd9ff('0x2d')]=_[_0xd9ff('0x2e')](_0x39fbbb[_0xd9ff('0x2d')]);_0x3178cd[_0xd9ff('0x37')]=_[_0xd9ff('0x2f')](_0x3178cd['model'],_0x3178cd[_0xd9ff('0x2d')]);_0x52aab8[_0xd9ff('0x30')]=_['intersection'](_0x3178cd[_0xd9ff('0x2c')],qs[_0xd9ff('0x31')](_0x39fbbb[_0xd9ff('0x2d')][_0xd9ff('0x31')]));_0x52aab8[_0xd9ff('0x30')]=_0x52aab8['attributes']['length']?_0x52aab8['attributes']:_0x3178cd[_0xd9ff('0x2c')];if(_0x39fbbb['query'][_0xd9ff('0x3b')]){_0x52aab8[_0xd9ff('0x3c')]=[{'all':!![]}];}_0x52aab8=_[_0xd9ff('0x39')]({},_0x52aab8,_0x39fbbb['options']);return db[_0xd9ff('0x29')][_0xd9ff('0x42')](_0x52aab8)['then'](handleEntityNotFound(_0x472724,null))[_0xd9ff('0x24')](respondWithResult(_0x472724,null))[_0xd9ff('0x3e')](handleError(_0x472724,null));};exports[_0xd9ff('0x43')]=function(_0x316854,_0x559101){return db[_0xd9ff('0x29')]['create'](_0x316854[_0xd9ff('0x44')],{})['then'](respondWithResult(_0x559101,0xc9))[_0xd9ff('0x3e')](handleError(_0x559101,null));};exports[_0xd9ff('0x23')]=function(_0x2bf37a,_0x1760c3){if(_0x2bf37a[_0xd9ff('0x44')]['id']){delete _0x2bf37a['body']['id'];}return db[_0xd9ff('0x29')][_0xd9ff('0x42')]({'where':{'id':_0x2bf37a[_0xd9ff('0x40')]['id']}})[_0xd9ff('0x24')](handleEntityNotFound(_0x1760c3,null))['then'](saveUpdates(_0x2bf37a['body'],null))['then'](respondWithResult(_0x1760c3,null))[_0xd9ff('0x3e')](handleError(_0x1760c3,null));};exports[_0xd9ff('0x45')]=function(_0x29c6bd,_0x572618){return db[_0xd9ff('0x29')][_0xd9ff('0x42')]({'where':{'id':_0x29c6bd[_0xd9ff('0x40')]['id']}})[_0xd9ff('0x24')](handleEntityNotFound(_0x572618,null))[_0xd9ff('0x24')](removeEntity(_0x572618,null))[_0xd9ff('0x3e')](handleError(_0x572618,null));};exports[_0xd9ff('0x46')]=function(_0x1e1364,_0x1ad160,_0x10d9d0){var _0x5dcb5={};var _0x3d6143={};var _0x2533d7;var _0x487b07;return db[_0xd9ff('0x29')]['findOne']({'where':{'id':_0x1e1364[_0xd9ff('0x40')]['id']}})['then'](handleEntityNotFound(_0x1ad160,null))[_0xd9ff('0x24')](function(_0x49623d){if(_0x49623d){_0x2533d7=_0x49623d;_0x3d6143[_0xd9ff('0x2c')]=_['keys'](db[_0xd9ff('0x47')]['rawAttributes']);_0x3d6143[_0xd9ff('0x2d')]=_['keys'](_0x1e1364[_0xd9ff('0x2d')]);_0x3d6143['filters']=_[_0xd9ff('0x2f')](_0x3d6143[_0xd9ff('0x2c')],_0x3d6143[_0xd9ff('0x2d')]);_0x5dcb5[_0xd9ff('0x30')]=_['intersection'](_0x3d6143[_0xd9ff('0x2c')],qs[_0xd9ff('0x31')](_0x1e1364[_0xd9ff('0x2d')]['fields']));_0x5dcb5[_0xd9ff('0x30')]=_0x5dcb5[_0xd9ff('0x30')][_0xd9ff('0x32')]?_0x5dcb5[_0xd9ff('0x30')]:_0x3d6143[_0xd9ff('0x2c')];_0x5dcb5['order']=qs[_0xd9ff('0x35')](_0x1e1364[_0xd9ff('0x2d')][_0xd9ff('0x35')]);_0x5dcb5[_0xd9ff('0x36')]=qs[_0xd9ff('0x37')](_[_0xd9ff('0x48')](_0x1e1364[_0xd9ff('0x2d')],_0x3d6143['filters']));if(_0x1e1364[_0xd9ff('0x2d')][_0xd9ff('0x38')]){_0x5dcb5['where']=_[_0xd9ff('0x39')](_0x5dcb5[_0xd9ff('0x36')],{'$or':_['map'](_0x5dcb5[_0xd9ff('0x30')],function(_0x36d5c2){var _0x25d8d1={};_0x25d8d1[_0x36d5c2]={'$like':'%'+_0x1e1364['query']['filter']+'%'};return _0x25d8d1;})});}_0x5dcb5=_[_0xd9ff('0x39')]({},_0x5dcb5,_0x1e1364['options']);return _0x2533d7[_0xd9ff('0x46')](_0x5dcb5);}})[_0xd9ff('0x24')](function(_0x31907e){if(_0x31907e){_0x487b07=_0x31907e[_0xd9ff('0x32')];if(!_0x1e1364['query']['hasOwnProperty']('nolimit')){_0x5dcb5[_0xd9ff('0x1f')]=qs[_0xd9ff('0x1f')](_0x1e1364[_0xd9ff('0x2d')][_0xd9ff('0x1f')]);_0x5dcb5[_0xd9ff('0x1e')]=qs['offset'](_0x1e1364[_0xd9ff('0x2d')]['offset']);}return _0x2533d7[_0xd9ff('0x46')](_0x5dcb5);}})[_0xd9ff('0x24')](function(_0x3f92c3){if(_0x3f92c3){return _0x3f92c3?{'count':_0x487b07,'rows':_0x3f92c3}:null;}})[_0xd9ff('0x24')](respondWithResult(_0x1ad160,null))[_0xd9ff('0x3e')](handleError(_0x1ad160,null));};exports[_0xd9ff('0x49')]=function(_0xed12df,_0xfcafbe,_0x5d633b){if(_0xed12df[_0xd9ff('0x44')]['id']){delete _0xed12df[_0xd9ff('0x44')]['id'];}return db['ZendeskAccount']['findOne']({'where':{'id':_0xed12df[_0xd9ff('0x40')]['id']}})['then'](handleEntityNotFound(_0xfcafbe,null))[_0xd9ff('0x24')](function(_0x34fca4){if(_0x34fca4){_0xed12df['body'][_0xd9ff('0x4a')]=_0x34fca4['id'];_0xed12df[_0xd9ff('0x44')][_0xd9ff('0x4b')]=integrations[_0xd9ff('0x4c')](_0xed12df[_0xd9ff('0x44')]['channel'],_0xed12df[_0xd9ff('0x44')]['type']);_0xed12df['body'][_0xd9ff('0x4d')]=integrations[_0xd9ff('0x4e')](_0xed12df[_0xd9ff('0x44')][_0xd9ff('0x4f')],_0xed12df['body'][_0xd9ff('0x2a')]);return db[_0xd9ff('0x47')][_0xd9ff('0x43')](_0xed12df[_0xd9ff('0x44')],{'include':[{'model':db[_0xd9ff('0x50')],'as':_0xd9ff('0x4b')},{'model':db[_0xd9ff('0x50')],'as':_0xd9ff('0x4d')}]});}return null;})['then'](respondWithResult(_0xfcafbe,null))['catch'](handleError(_0xfcafbe,null));};exports['getFields']=function(_0x275fb9,_0x31db27,_0x514d59){var _0x196670='';return db[_0xd9ff('0x29')][_0xd9ff('0x51')]({'where':{'id':_0x275fb9[_0xd9ff('0x40')]['id']},'attributes':['id',_0xd9ff('0x52'),_0xd9ff('0x53'),_0xd9ff('0x54'),_0xd9ff('0x55'),'remoteUri']})[_0xd9ff('0x24')](handleEntityNotFound(_0x31db27,null))[_0xd9ff('0x24')](function(_0x228413){if(_0x228413){_0x196670=_0x228413['remoteUri'];var _0x14e936=_0x196670['slice'](-0x1);if(_0x14e936==='/'){_0x196670=_0x196670[_0xd9ff('0x56')](0x0,_0x196670[_0xd9ff('0x57')](_0x14e936));}var _0x25ee82={'method':'GET','uri':util[_0xd9ff('0x58')](_0xd9ff('0x59'),_0x196670,_0xd9ff('0x5a')),'json':!![]};switch(_0x228413[_0xd9ff('0x55')]){case'password':_0x25ee82[_0xd9ff('0x5b')]={'Authorization':util[_0xd9ff('0x58')](_0xd9ff('0x5c'),new Buffer(util['format'](_0xd9ff('0x5d'),_0x228413[_0xd9ff('0x52')],_0x228413[_0xd9ff('0x53')]))['toString'](_0xd9ff('0x5e')))};break;case _0xd9ff('0x54'):_0x25ee82[_0xd9ff('0x5b')]={'Authorization':util[_0xd9ff('0x58')](_0xd9ff('0x5c'),new Buffer(util['format'](_0xd9ff('0x5f'),_0x228413[_0xd9ff('0x52')],_0x228413['token']))[_0xd9ff('0x60')](_0xd9ff('0x5e')))};break;default:throw new db[(_0xd9ff('0x61'))]['ValidationError'](_0xd9ff('0x62'));}return rp(_0x25ee82);}})['then'](function(_0x1e46fc){if(_0x1e46fc){var _0x478e0d=[_0xd9ff('0x63'),_0xd9ff('0x64'),_0xd9ff('0x65'),_0xd9ff('0x66')];_[_0xd9ff('0x67')](_0x1e46fc[_0xd9ff('0x5a')],function(_0xda0003){return _0x478e0d[_0xd9ff('0x68')](_0xda0003[_0xd9ff('0x2a')]);});return{'count':_0x1e46fc[_0xd9ff('0x5a')]['length'],'rows':_[_0xd9ff('0x28')](_0x1e46fc[_0xd9ff('0x5a')],function(_0x1f6cb9){return{'id':_0x1f6cb9['id'],'name':_0x1f6cb9[_0xd9ff('0x69')]>0x7?_0x1f6cb9[_0xd9ff('0x6a')]:_0x1f6cb9[_0xd9ff('0x2a')],'custom':_0x1f6cb9['position']>0x7?!![]:![],'options':_0x1f6cb9['system_field_options']?_0x1f6cb9[_0xd9ff('0x6b')]:_0x1f6cb9[_0xd9ff('0x6c')]?_0x1f6cb9[_0xd9ff('0x6c')]:[]};})};}})[_0xd9ff('0x24')](respondWithResult(_0x31db27,null))[_0xd9ff('0x3e')](function(_0x183199){var _0x5b234c=_0x275fb9[_0xd9ff('0x2d')][_0xd9ff('0x6d')]?0x1f4:_0x183199[_0xd9ff('0x6e')]||0x1f4;logger[_0xd9ff('0x6f')](_0xd9ff('0x70'),_0xd9ff('0x71'),_0x5b234c,JSON['stringify'](_0x183199));delete _0x183199[_0xd9ff('0x26')];if(_0x5b234c===0x191){_0x5b234c=0x190;}_0x31db27[_0xd9ff('0x1b')](_0x5b234c)[_0xd9ff('0x72')](_0x275fb9[_0xd9ff('0x2d')][_0xd9ff('0x6d')]?{'message':_0xd9ff('0x73'),'statusCode':_0x183199[_0xd9ff('0x6e')]}:_0x183199);});}; \ No newline at end of file diff --git a/server/api/intZendeskAccount/intZendeskAccount.model.js b/server/api/intZendeskAccount/intZendeskAccount.model.js new file mode 100644 index 0000000..68af3a4 --- /dev/null +++ b/server/api/intZendeskAccount/intZendeskAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xca68=['../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','util','api','moment','bluebird','request-promise','path','../../config/environment','./intZendeskAccount.attributes'];(function(_0x2181b1,_0x569637){var _0x530548=function(_0x4b31f1){while(--_0x4b31f1){_0x2181b1['push'](_0x2181b1['shift']());}};_0x530548(++_0x569637);}(_0xca68,0x18b));var _0x8ca6=function(_0x1fa4ca,_0x117360){_0x1fa4ca=_0x1fa4ca-0x0;var _0xb0338c=_0xca68[_0x1fa4ca];return _0xb0338c;};'use strict';var _=require('lodash');var util=require(_0x8ca6('0x0'));var logger=require('../../config/logger')(_0x8ca6('0x1'));var moment=require(_0x8ca6('0x2'));var BPromise=require(_0x8ca6('0x3'));var rp=require(_0x8ca6('0x4'));var fs=require('fs');var path=require(_0x8ca6('0x5'));var rimraf=require('rimraf');var config=require(_0x8ca6('0x6'));var attributes=require(_0x8ca6('0x7'));var integrations=require(_0x8ca6('0x8'));module[_0x8ca6('0x9')]=function(_0x21f5bb,_0x441914){return _0x21f5bb[_0x8ca6('0xa')](_0x8ca6('0xb'),attributes,{'tableName':_0x8ca6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intZendeskAccount/intZendeskAccount.rpc.js b/server/api/intZendeskAccount/intZendeskAccount.rpc.js new file mode 100644 index 0000000..ac2041c --- /dev/null +++ b/server/api/intZendeskAccount/intZendeskAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x13c9=['model','attributes','ShowZendeskAccount','find','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','limit','include','map'];(function(_0x2b2396,_0x1efdc5){var _0x3a9147=function(_0x574808){while(--_0x574808){_0x2b2396['push'](_0x2b2396['shift']());}};_0x3a9147(++_0x1efdc5);}(_0x13c9,0x71));var _0x913c=function(_0x2f482b,_0x544217){_0x2f482b=_0x2f482b-0x0;var _0xb32299=_0x13c9[_0x2f482b];return _0xb32299;};'use strict';var _=require(_0x913c('0x0'));var util=require(_0x913c('0x1'));var moment=require(_0x913c('0x2'));var BPromise=require(_0x913c('0x3'));var rs=require(_0x913c('0x4'));var fs=require('fs');var Redis=require(_0x913c('0x5'));var db=require(_0x913c('0x6'))['db'];var utils=require(_0x913c('0x7'));var logger=require(_0x913c('0x8'))(_0x913c('0x9'));var config=require('../../config/environment');var jayson=require(_0x913c('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x38ae69,_0x312bf4,_0x53f08b){return new BPromise(function(_0x4bd33c,_0xd4c0b4){return client[_0x913c('0xb')](_0x38ae69,_0x53f08b)[_0x913c('0xc')](function(_0x1042a7){logger[_0x913c('0xd')](_0x913c('0xe'),_0x312bf4,_0x913c('0xf'));logger[_0x913c('0x10')](_0x913c('0x11'),_0x312bf4,_0x913c('0xf'),JSON['stringify'](_0x1042a7));if(_0x1042a7[_0x913c('0x12')]){if(_0x1042a7['error'][_0x913c('0x13')]===0x1f4){logger[_0x913c('0x12')](_0x913c('0xe'),_0x312bf4,_0x1042a7[_0x913c('0x12')][_0x913c('0x14')]);return _0xd4c0b4(_0x1042a7[_0x913c('0x12')][_0x913c('0x14')]);}logger['error'](_0x913c('0xe'),_0x312bf4,_0x1042a7[_0x913c('0x12')][_0x913c('0x14')]);return _0x4bd33c(_0x1042a7[_0x913c('0x12')][_0x913c('0x14')]);}else{logger[_0x913c('0xd')]('ZendeskAccount,\x20%s,\x20%s',_0x312bf4,'request\x20sent');_0x4bd33c(_0x1042a7['result']['message']);}})[_0x913c('0x15')](function(_0x94c424){logger[_0x913c('0x12')](_0x913c('0xe'),_0x312bf4,_0x94c424);_0xd4c0b4(_0x94c424);});});}exports[_0x913c('0x16')]=function(_0x4cb094){var _0x371772=this;return new Promise(function(_0xdf96fb,_0x33affd){return db[_0x913c('0x17')][_0x913c('0x18')]({'raw':_0x4cb094[_0x913c('0x19')]?_0x4cb094[_0x913c('0x19')][_0x913c('0x1a')]===undefined?!![]:![]:!![],'where':_0x4cb094['options']?_0x4cb094[_0x913c('0x19')][_0x913c('0x1b')]||null:null,'attributes':_0x4cb094[_0x913c('0x19')]?_0x4cb094[_0x913c('0x19')]['attributes']||null:null,'limit':_0x4cb094[_0x913c('0x19')]?_0x4cb094[_0x913c('0x19')][_0x913c('0x1c')]||null:null,'include':_0x4cb094['options']?_0x4cb094[_0x913c('0x19')][_0x913c('0x1d')]?_[_0x913c('0x1e')](_0x4cb094['options'][_0x913c('0x1d')],function(_0xa88930){return{'model':db[_0xa88930[_0x913c('0x1f')]],'as':_0xa88930['as'],'attributes':_0xa88930[_0x913c('0x20')],'include':_0xa88930[_0x913c('0x1d')]?_[_0x913c('0x1e')](_0xa88930[_0x913c('0x1d')],function(_0x4a0b04){return{'model':db[_0x4a0b04['model']],'as':_0x4a0b04['as'],'attributes':_0x4a0b04[_0x913c('0x20')],'include':_0x4a0b04[_0x913c('0x1d')]?_[_0x913c('0x1e')](_0x4a0b04['include'],function(_0x54c524){return{'model':db[_0x54c524[_0x913c('0x1f')]],'as':_0x54c524['as'],'attributes':_0x54c524[_0x913c('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b8a75){logger[_0x913c('0xd')](_0x913c('0x16'),_0x4cb094);logger[_0x913c('0x10')]('GetZendeskAccount',_0x4cb094,JSON['stringify'](_0x5b8a75));_0xdf96fb(_0x5b8a75);})[_0x913c('0x15')](function(_0x48062d){logger[_0x913c('0x12')](_0x913c('0x16'),_0x48062d[_0x913c('0x14')],_0x4cb094);_0x33affd(_0x371772['error'](0x1f4,_0x48062d['message']));});});};exports[_0x913c('0x21')]=function(_0x57be59){var _0x387d71=this;return new Promise(function(_0x3b9542,_0x42d7cd){return db[_0x913c('0x17')][_0x913c('0x22')]({'raw':_0x57be59['options']?_0x57be59[_0x913c('0x19')][_0x913c('0x1a')]===undefined?!![]:![]:!![],'where':_0x57be59[_0x913c('0x19')]?_0x57be59[_0x913c('0x19')]['where']||null:null,'attributes':_0x57be59['options']?_0x57be59['options']['attributes']||null:null,'include':_0x57be59['options']?_0x57be59[_0x913c('0x19')][_0x913c('0x1d')]?_[_0x913c('0x1e')](_0x57be59[_0x913c('0x19')]['include'],function(_0x133c97){return{'model':db[_0x133c97[_0x913c('0x1f')]],'as':_0x133c97['as'],'attributes':_0x133c97[_0x913c('0x20')],'include':_0x133c97['include']?_['map'](_0x133c97['include'],function(_0x56fddc){return{'model':db[_0x56fddc[_0x913c('0x1f')]],'as':_0x56fddc['as'],'attributes':_0x56fddc[_0x913c('0x20')],'include':_0x56fddc[_0x913c('0x1d')]?_[_0x913c('0x1e')](_0x56fddc[_0x913c('0x1d')],function(_0x1f98ed){return{'model':db[_0x1f98ed[_0x913c('0x1f')]],'as':_0x1f98ed['as'],'attributes':_0x1f98ed[_0x913c('0x20')]};}):[]};}):[]};}):[]:[]})[_0x913c('0xc')](function(_0xb87d32){logger[_0x913c('0xd')](_0x913c('0x21'),_0x57be59);logger[_0x913c('0x10')]('ShowZendeskAccount',_0x57be59,JSON[_0x913c('0x23')](_0xb87d32));_0x3b9542(_0xb87d32);})[_0x913c('0x15')](function(_0x34ebf6){logger[_0x913c('0x12')](_0x913c('0x21'),_0x34ebf6[_0x913c('0x14')],_0x57be59);_0x42d7cd(_0x387d71[_0x913c('0x12')](0x1f4,_0x34ebf6[_0x913c('0x14')]));});});}; \ No newline at end of file diff --git a/server/api/intZendeskConfiguration/index.js b/server/api/intZendeskConfiguration/index.js new file mode 100644 index 0000000..3f0c0a8 --- /dev/null +++ b/server/api/intZendeskConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/tags','getTags','post','create','setTags','put','/:id','delete','destroy','exports','multer','util'];(function(_0x4de1c3,_0xbe77b9){var _0x26acfe=function(_0x2c9df4){while(--_0x2c9df4){_0x4de1c3['push'](_0x4de1c3['shift']());}};_0x26acfe(++_0xbe77b9);}(_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'));var controller=require('./intZendeskConfiguration.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0x9')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0x9')]('/:id/descriptions',auth[_0x0d8b('0x7')](),controller['getDescriptions']);router[_0x0d8b('0x9')](_0x0d8b('0xf'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x10')]);router[_0x0d8b('0x11')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0xf'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x13')]);router[_0x0d8b('0x14')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller['update']);router[_0x0d8b('0x16')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x17')]);module[_0x0d8b('0x18')]=router; \ No newline at end of file diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js new file mode 100644 index 0000000..9fc0fb0 --- /dev/null +++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e37=['exports','STRING','sequelize'];(function(_0x379809,_0x2a8f32){var _0xb64de7=function(_0x7fd2fe){while(--_0x7fd2fe){_0x379809['push'](_0x379809['shift']());}};_0xb64de7(++_0x2a8f32);}(_0x4e37,0x15e));var _0x74e3=function(_0x4b4844,_0x2f0dfb){_0x4b4844=_0x4b4844-0x0;var _0x575192=_0x4e37[_0x4b4844];return _0x575192;};'use strict';var Sequelize=require(_0x74e3('0x0'));module[_0x74e3('0x1')]={'name':{'type':Sequelize[_0x74e3('0x2')]},'description':{'type':Sequelize[_0x74e3('0x2')]}}; \ No newline at end of file diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js new file mode 100644 index 0000000..ab076c9 --- /dev/null +++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdc5e=['querystring','papaparse','../../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','limit','undefined','count','set','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','ZendeskConfiguration','includeAll','findAll','catch','show','params','length','include','find','create','findOne','ZendeskField','getFields','getSubjects','getDescriptions','getTags','Tag','body','setTags','ids','eml-format','rimraf','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js'];(function(_0x30af30,_0xee8b76){var _0x1077c2=function(_0x2637d8){while(--_0x2637d8){_0x30af30['push'](_0x30af30['shift']());}};_0x1077c2(++_0xee8b76);}(_0xdc5e,0xec));var _0xedc5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xdc5e[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xedc5('0x0'));var rimraf=require(_0xedc5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xedc5('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xedc5('0x3'));var util=require(_0xedc5('0x4'));var path=require('path');var sox=require(_0xedc5('0x5'));var csv=require(_0xedc5('0x6'));var ejs=require(_0xedc5('0x7'));var fs=require('fs');var fs_extra=require(_0xedc5('0x8'));var _=require(_0xedc5('0x9'));var squel=require(_0xedc5('0xa'));var crypto=require('crypto');var jsforce=require(_0xedc5('0xb'));var deskjs=require(_0xedc5('0xc'));var toCsv=require(_0xedc5('0x6'));var querystring=require(_0xedc5('0xd'));var Papa=require(_0xedc5('0xe'));var Redis=require('ioredis');var authService=require(_0xedc5('0xf'));var qs=require(_0xedc5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xedc5('0x11'));var logger=require(_0xedc5('0x12'))(_0xedc5('0x13'));var utils=require(_0xedc5('0x14'));var config=require(_0xedc5('0x15'));var licenseUtil=require(_0xedc5('0x16'));var db=require(_0xedc5('0x17'))['db'];function respondWithStatusCode(_0x4eee7f,_0x135191){_0x135191=_0x135191||0xcc;return function(_0x5dc66c){if(_0x5dc66c){return _0x4eee7f[_0xedc5('0x18')](_0x135191);}return _0x4eee7f[_0xedc5('0x19')](_0x135191)[_0xedc5('0x1a')]();};}function respondWithResult(_0x1a87c3,_0x16eb50){_0x16eb50=_0x16eb50||0xc8;return function(_0x481b48){if(_0x481b48){return _0x1a87c3[_0xedc5('0x19')](_0x16eb50)[_0xedc5('0x1b')](_0x481b48);}};}function respondWithFilteredResult(_0x2e564c,_0xe3d602){return function(_0x34ab52){if(_0x34ab52){var _0x35b71d=typeof _0xe3d602[_0xedc5('0x1c')]==='undefined'&&typeof _0xe3d602[_0xedc5('0x1d')]===_0xedc5('0x1e');var _0x1205de=_0x34ab52[_0xedc5('0x1f')];var _0x44e9a8=_0x35b71d?0x0:_0xe3d602[_0xedc5('0x1c')];var _0x2f9b1f=_0x35b71d?_0x34ab52['count']:_0xe3d602['offset']+_0xe3d602['limit'];var _0x3556d7;if(_0x2f9b1f>=_0x1205de){_0x2f9b1f=_0x1205de;_0x3556d7=0xc8;}else{_0x3556d7=0xce;}_0x2e564c[_0xedc5('0x19')](_0x3556d7);return _0x2e564c[_0xedc5('0x20')]('Content-Range',_0x44e9a8+'-'+_0x2f9b1f+'/'+_0x1205de)[_0xedc5('0x1b')](_0x34ab52);}return null;};}function patchUpdates(_0x213265){return function(_0x33af62){try{jsonpatch['apply'](_0x33af62,_0x213265,!![]);}catch(_0x450895){return BPromise['reject'](_0x450895);}return _0x33af62[_0xedc5('0x21')]();};}function saveUpdates(_0x686772,_0x1cab30){return function(_0x1a2086){if(_0x1a2086){return _0x1a2086[_0xedc5('0x22')](_0x686772)[_0xedc5('0x23')](function(_0xf21074){return _0xf21074;});}return null;};}function removeEntity(_0x5ec021,_0x2af323){return function(_0x4e609e){if(_0x4e609e){return _0x4e609e[_0xedc5('0x24')]()[_0xedc5('0x23')](function(){_0x5ec021[_0xedc5('0x19')](0xcc)[_0xedc5('0x1a')]();});}};}function handleEntityNotFound(_0x530445,_0x3f793d){return function(_0x2a548f){if(!_0x2a548f){_0x530445[_0xedc5('0x18')](0x194);}return _0x2a548f;};}function handleError(_0x95a6c7,_0x49dec1){_0x49dec1=_0x49dec1||0x1f4;return function(_0x4b33a4){logger['error'](_0x4b33a4[_0xedc5('0x25')]);if(_0x4b33a4[_0xedc5('0x26')]){delete _0x4b33a4[_0xedc5('0x26')];}_0x95a6c7[_0xedc5('0x19')](_0x49dec1)[_0xedc5('0x27')](_0x4b33a4);};}exports[_0xedc5('0x28')]=function(_0x403064,_0x589605){var _0x5ea3cd={},_0x45e266={},_0x4c2a6a={'count':0x0,'rows':[]};var _0xb9434a=_[_0xedc5('0x29')](db['ZendeskConfiguration'][_0xedc5('0x2a')],function(_0x154197){return{'name':_0x154197[_0xedc5('0x2b')],'type':_0x154197[_0xedc5('0x2c')][_0xedc5('0x2d')]};});_0x45e266[_0xedc5('0x2e')]=_['map'](_0xb9434a,_0xedc5('0x26'));_0x45e266[_0xedc5('0x2f')]=_[_0xedc5('0x30')](_0x403064[_0xedc5('0x2f')]);_0x45e266[_0xedc5('0x31')]=_[_0xedc5('0x32')](_0x45e266[_0xedc5('0x2e')],_0x45e266[_0xedc5('0x2f')]);_0x5ea3cd[_0xedc5('0x33')]=_[_0xedc5('0x32')](_0x45e266['model'],qs['fields'](_0x403064[_0xedc5('0x2f')][_0xedc5('0x34')]));_0x5ea3cd[_0xedc5('0x33')]=_0x5ea3cd['attributes']['length']?_0x5ea3cd[_0xedc5('0x33')]:_0x45e266[_0xedc5('0x2e')];if(!_0x403064[_0xedc5('0x2f')][_0xedc5('0x35')](_0xedc5('0x36'))){_0x5ea3cd[_0xedc5('0x1d')]=qs['limit'](_0x403064[_0xedc5('0x2f')][_0xedc5('0x1d')]);_0x5ea3cd['offset']=qs['offset'](_0x403064['query'][_0xedc5('0x1c')]);}_0x5ea3cd[_0xedc5('0x37')]=qs['sort'](_0x403064[_0xedc5('0x2f')][_0xedc5('0x38')]);_0x5ea3cd['where']=qs[_0xedc5('0x31')](_[_0xedc5('0x39')](_0x403064[_0xedc5('0x2f')],_0x45e266[_0xedc5('0x31')]),_0xb9434a);if(_0x403064['query']['filter']){_0x5ea3cd[_0xedc5('0x3a')]=_[_0xedc5('0x3b')](_0x5ea3cd[_0xedc5('0x3a')],{'$or':_[_0xedc5('0x29')](_0xb9434a,function(_0x9028d9){if(_0x9028d9[_0xedc5('0x2c')]!==_0xedc5('0x3c')){var _0x33d2cc={};_0x33d2cc[_0x9028d9['name']]={'$like':'%'+_0x403064[_0xedc5('0x2f')][_0xedc5('0x3d')]+'%'};return _0x33d2cc;}})});}_0x5ea3cd=_[_0xedc5('0x3b')]({},_0x5ea3cd,_0x403064[_0xedc5('0x3e')]);var _0x73d1d2={'where':_0x5ea3cd['where']};return db[_0xedc5('0x3f')][_0xedc5('0x1f')](_0x73d1d2)['then'](function(_0x8eba9){_0x4c2a6a[_0xedc5('0x1f')]=_0x8eba9;if(_0x403064[_0xedc5('0x2f')][_0xedc5('0x40')]){_0x5ea3cd['include']=[{'all':!![]}];}return db[_0xedc5('0x3f')][_0xedc5('0x41')](_0x5ea3cd);})[_0xedc5('0x23')](function(_0x1246b9){_0x4c2a6a['rows']=_0x1246b9;return _0x4c2a6a;})[_0xedc5('0x23')](respondWithFilteredResult(_0x589605,_0x5ea3cd))[_0xedc5('0x42')](handleError(_0x589605,null));};exports[_0xedc5('0x43')]=function(_0x15a92e,_0x307af1){var _0x578c56={'raw':![],'where':{'id':_0x15a92e[_0xedc5('0x44')]['id']}},_0x5d19e5={};_0x5d19e5[_0xedc5('0x2e')]=_[_0xedc5('0x30')](db[_0xedc5('0x3f')][_0xedc5('0x2a')]);_0x5d19e5['query']=_[_0xedc5('0x30')](_0x15a92e[_0xedc5('0x2f')]);_0x5d19e5['filters']=_['intersection'](_0x5d19e5[_0xedc5('0x2e')],_0x5d19e5[_0xedc5('0x2f')]);_0x578c56[_0xedc5('0x33')]=_['intersection'](_0x5d19e5['model'],qs['fields'](_0x15a92e['query'][_0xedc5('0x34')]));_0x578c56['attributes']=_0x578c56[_0xedc5('0x33')][_0xedc5('0x45')]?_0x578c56[_0xedc5('0x33')]:_0x5d19e5[_0xedc5('0x2e')];if(_0x15a92e[_0xedc5('0x2f')][_0xedc5('0x40')]){_0x578c56[_0xedc5('0x46')]=[{'all':!![]}];}_0x578c56=_[_0xedc5('0x3b')]({},_0x578c56,_0x15a92e[_0xedc5('0x3e')]);return db[_0xedc5('0x3f')][_0xedc5('0x47')](_0x578c56)['then'](handleEntityNotFound(_0x307af1,null))[_0xedc5('0x23')](respondWithResult(_0x307af1,null))[_0xedc5('0x42')](handleError(_0x307af1,null));};exports['create']=function(_0x4b8743,_0x3256a5){return db[_0xedc5('0x3f')][_0xedc5('0x48')](_0x4b8743['body'],{})[_0xedc5('0x23')](respondWithResult(_0x3256a5,0xc9))[_0xedc5('0x42')](handleError(_0x3256a5,null));};exports['update']=function(_0x2269d3,_0x5ba94d){if(_0x2269d3['body']['id']){delete _0x2269d3['body']['id'];}return db[_0xedc5('0x3f')][_0xedc5('0x47')]({'where':{'id':_0x2269d3[_0xedc5('0x44')]['id']}})[_0xedc5('0x23')](handleEntityNotFound(_0x5ba94d,null))[_0xedc5('0x23')](saveUpdates(_0x2269d3['body'],null))['then'](respondWithResult(_0x5ba94d,null))['catch'](handleError(_0x5ba94d,null));};exports[_0xedc5('0x24')]=function(_0x711912,_0x1860ca){return db[_0xedc5('0x3f')][_0xedc5('0x47')]({'where':{'id':_0x711912[_0xedc5('0x44')]['id']}})[_0xedc5('0x23')](handleEntityNotFound(_0x1860ca,null))[_0xedc5('0x23')](removeEntity(_0x1860ca,null))[_0xedc5('0x42')](handleError(_0x1860ca,null));};exports['getFields']=function(_0x532e6f,_0x5a8d5b,_0x31468f){var _0xd0f069={};var _0x4be761={};var _0x452d1d;var _0x1819b4;return db[_0xedc5('0x3f')][_0xedc5('0x49')]({'where':{'id':_0x532e6f[_0xedc5('0x44')]['id']}})['then'](handleEntityNotFound(_0x5a8d5b,null))[_0xedc5('0x23')](function(_0x5dcc69){if(_0x5dcc69){_0x452d1d=_0x5dcc69;_0x4be761[_0xedc5('0x2e')]=_[_0xedc5('0x30')](db[_0xedc5('0x4a')][_0xedc5('0x2a')]);_0x4be761[_0xedc5('0x2f')]=_['keys'](_0x532e6f[_0xedc5('0x2f')]);_0x4be761[_0xedc5('0x31')]=_['intersection'](_0x4be761[_0xedc5('0x2e')],_0x4be761[_0xedc5('0x2f')]);_0xd0f069[_0xedc5('0x33')]=_[_0xedc5('0x32')](_0x4be761[_0xedc5('0x2e')],qs[_0xedc5('0x34')](_0x532e6f[_0xedc5('0x2f')][_0xedc5('0x34')]));_0xd0f069[_0xedc5('0x33')]=_0xd0f069[_0xedc5('0x33')]['length']?_0xd0f069[_0xedc5('0x33')]:_0x4be761[_0xedc5('0x2e')];_0xd0f069[_0xedc5('0x37')]=qs[_0xedc5('0x38')](_0x532e6f[_0xedc5('0x2f')]['sort']);_0xd0f069[_0xedc5('0x3a')]=qs['filters'](_[_0xedc5('0x39')](_0x532e6f[_0xedc5('0x2f')],_0x4be761[_0xedc5('0x31')]));if(_0x532e6f[_0xedc5('0x2f')][_0xedc5('0x3d')]){_0xd0f069[_0xedc5('0x3a')]=_['merge'](_0xd0f069[_0xedc5('0x3a')],{'$or':_[_0xedc5('0x29')](_0xd0f069[_0xedc5('0x33')],function(_0x3a149e){var _0x5cb71d={};_0x5cb71d[_0x3a149e]={'$like':'%'+_0x532e6f[_0xedc5('0x2f')]['filter']+'%'};return _0x5cb71d;})});}_0xd0f069=_['merge']({},_0xd0f069,_0x532e6f['options']);return _0x452d1d['getFields'](_0xd0f069);}})['then'](function(_0x483ea5){if(_0x483ea5){_0x1819b4=_0x483ea5['length'];if(!_0x532e6f[_0xedc5('0x2f')][_0xedc5('0x35')](_0xedc5('0x36'))){_0xd0f069[_0xedc5('0x1d')]=qs[_0xedc5('0x1d')](_0x532e6f['query'][_0xedc5('0x1d')]);_0xd0f069[_0xedc5('0x1c')]=qs[_0xedc5('0x1c')](_0x532e6f['query'][_0xedc5('0x1c')]);}return _0x452d1d[_0xedc5('0x4b')](_0xd0f069);}})[_0xedc5('0x23')](function(_0x533912){if(_0x533912){return _0x533912?{'count':_0x1819b4,'rows':_0x533912}:null;}})['then'](respondWithResult(_0x5a8d5b,null))[_0xedc5('0x42')](handleError(_0x5a8d5b,null));};exports[_0xedc5('0x4c')]=function(_0x3f6779,_0x412647,_0x3c9b7c){var _0x31f125={};var _0x1b7723={};var _0x5b3932;var _0x3fd8f8;return db['ZendeskConfiguration'][_0xedc5('0x49')]({'where':{'id':_0x3f6779[_0xedc5('0x44')]['id']}})[_0xedc5('0x23')](handleEntityNotFound(_0x412647,null))['then'](function(_0x588ed6){if(_0x588ed6){_0x5b3932=_0x588ed6;_0x1b7723['model']=_[_0xedc5('0x30')](db[_0xedc5('0x4a')][_0xedc5('0x2a')]);_0x1b7723[_0xedc5('0x2f')]=_[_0xedc5('0x30')](_0x3f6779[_0xedc5('0x2f')]);_0x1b7723[_0xedc5('0x31')]=_['intersection'](_0x1b7723['model'],_0x1b7723[_0xedc5('0x2f')]);_0x31f125[_0xedc5('0x33')]=_[_0xedc5('0x32')](_0x1b7723[_0xedc5('0x2e')],qs[_0xedc5('0x34')](_0x3f6779[_0xedc5('0x2f')]['fields']));_0x31f125[_0xedc5('0x33')]=_0x31f125[_0xedc5('0x33')][_0xedc5('0x45')]?_0x31f125[_0xedc5('0x33')]:_0x1b7723['model'];_0x31f125['order']=qs[_0xedc5('0x38')](_0x3f6779['query'][_0xedc5('0x38')]);_0x31f125[_0xedc5('0x3a')]=qs['filters'](_[_0xedc5('0x39')](_0x3f6779[_0xedc5('0x2f')],_0x1b7723[_0xedc5('0x31')]));if(_0x3f6779[_0xedc5('0x2f')][_0xedc5('0x3d')]){_0x31f125[_0xedc5('0x3a')]=_[_0xedc5('0x3b')](_0x31f125[_0xedc5('0x3a')],{'$or':_[_0xedc5('0x29')](_0x31f125['attributes'],function(_0x941f52){var _0x239966={};_0x239966[_0x941f52]={'$like':'%'+_0x3f6779[_0xedc5('0x2f')][_0xedc5('0x3d')]+'%'};return _0x239966;})});}_0x31f125=_[_0xedc5('0x3b')]({},_0x31f125,_0x3f6779[_0xedc5('0x3e')]);return _0x5b3932[_0xedc5('0x4c')](_0x31f125);}})[_0xedc5('0x23')](function(_0x55f7d5){if(_0x55f7d5){_0x3fd8f8=_0x55f7d5[_0xedc5('0x45')];if(!_0x3f6779['query'][_0xedc5('0x35')](_0xedc5('0x36'))){_0x31f125[_0xedc5('0x1d')]=qs[_0xedc5('0x1d')](_0x3f6779[_0xedc5('0x2f')][_0xedc5('0x1d')]);_0x31f125[_0xedc5('0x1c')]=qs['offset'](_0x3f6779[_0xedc5('0x2f')][_0xedc5('0x1c')]);}return _0x5b3932[_0xedc5('0x4c')](_0x31f125);}})[_0xedc5('0x23')](function(_0x4546e7){if(_0x4546e7){return _0x4546e7?{'count':_0x3fd8f8,'rows':_0x4546e7}:null;}})[_0xedc5('0x23')](respondWithResult(_0x412647,null))[_0xedc5('0x42')](handleError(_0x412647,null));};exports['getDescriptions']=function(_0x158037,_0x41820d,_0x71ba3b){var _0x249510={};var _0x12b805={};var _0x435ee4;var _0x56f586;return db[_0xedc5('0x3f')]['findOne']({'where':{'id':_0x158037[_0xedc5('0x44')]['id']}})['then'](handleEntityNotFound(_0x41820d,null))[_0xedc5('0x23')](function(_0x3dfcd9){if(_0x3dfcd9){_0x435ee4=_0x3dfcd9;_0x12b805[_0xedc5('0x2e')]=_[_0xedc5('0x30')](db[_0xedc5('0x4a')][_0xedc5('0x2a')]);_0x12b805[_0xedc5('0x2f')]=_[_0xedc5('0x30')](_0x158037['query']);_0x12b805['filters']=_[_0xedc5('0x32')](_0x12b805[_0xedc5('0x2e')],_0x12b805[_0xedc5('0x2f')]);_0x249510[_0xedc5('0x33')]=_[_0xedc5('0x32')](_0x12b805[_0xedc5('0x2e')],qs[_0xedc5('0x34')](_0x158037[_0xedc5('0x2f')][_0xedc5('0x34')]));_0x249510['attributes']=_0x249510[_0xedc5('0x33')][_0xedc5('0x45')]?_0x249510[_0xedc5('0x33')]:_0x12b805[_0xedc5('0x2e')];_0x249510[_0xedc5('0x37')]=qs['sort'](_0x158037['query'][_0xedc5('0x38')]);_0x249510['where']=qs[_0xedc5('0x31')](_['pick'](_0x158037[_0xedc5('0x2f')],_0x12b805['filters']));if(_0x158037['query']['filter']){_0x249510[_0xedc5('0x3a')]=_['merge'](_0x249510[_0xedc5('0x3a')],{'$or':_[_0xedc5('0x29')](_0x249510[_0xedc5('0x33')],function(_0x136f93){var _0x499596={};_0x499596[_0x136f93]={'$like':'%'+_0x158037[_0xedc5('0x2f')][_0xedc5('0x3d')]+'%'};return _0x499596;})});}_0x249510=_[_0xedc5('0x3b')]({},_0x249510,_0x158037[_0xedc5('0x3e')]);return _0x435ee4[_0xedc5('0x4d')](_0x249510);}})[_0xedc5('0x23')](function(_0x47c343){if(_0x47c343){_0x56f586=_0x47c343[_0xedc5('0x45')];if(!_0x158037[_0xedc5('0x2f')][_0xedc5('0x35')](_0xedc5('0x36'))){_0x249510['limit']=qs[_0xedc5('0x1d')](_0x158037[_0xedc5('0x2f')][_0xedc5('0x1d')]);_0x249510['offset']=qs[_0xedc5('0x1c')](_0x158037[_0xedc5('0x2f')][_0xedc5('0x1c')]);}return _0x435ee4['getDescriptions'](_0x249510);}})['then'](function(_0x11e97f){if(_0x11e97f){return _0x11e97f?{'count':_0x56f586,'rows':_0x11e97f}:null;}})[_0xedc5('0x23')](respondWithResult(_0x41820d,null))[_0xedc5('0x42')](handleError(_0x41820d,null));};exports[_0xedc5('0x4e')]=function(_0x2d1009,_0x497156,_0x47b591){var _0x52c898={};var _0x41a9a9={};var _0xafc75e;var _0x55fa8d;return db[_0xedc5('0x3f')][_0xedc5('0x49')]({'where':{'id':_0x2d1009['params']['id']}})[_0xedc5('0x23')](handleEntityNotFound(_0x497156,null))['then'](function(_0x343a3a){if(_0x343a3a){_0xafc75e=_0x343a3a;_0x41a9a9[_0xedc5('0x2e')]=_['keys'](db[_0xedc5('0x4f')]['rawAttributes']);_0x41a9a9['query']=_[_0xedc5('0x30')](_0x2d1009['query']);_0x41a9a9[_0xedc5('0x31')]=_[_0xedc5('0x32')](_0x41a9a9[_0xedc5('0x2e')],_0x41a9a9[_0xedc5('0x2f')]);_0x52c898[_0xedc5('0x33')]=_[_0xedc5('0x32')](_0x41a9a9[_0xedc5('0x2e')],qs[_0xedc5('0x34')](_0x2d1009[_0xedc5('0x2f')]['fields']));_0x52c898['attributes']=_0x52c898[_0xedc5('0x33')][_0xedc5('0x45')]?_0x52c898[_0xedc5('0x33')]:_0x41a9a9['model'];_0x52c898[_0xedc5('0x37')]=qs['sort'](_0x2d1009[_0xedc5('0x2f')][_0xedc5('0x38')]);_0x52c898[_0xedc5('0x3a')]=qs['filters'](_[_0xedc5('0x39')](_0x2d1009[_0xedc5('0x2f')],_0x41a9a9['filters']));if(_0x2d1009[_0xedc5('0x2f')]['filter']){_0x52c898[_0xedc5('0x3a')]=_[_0xedc5('0x3b')](_0x52c898[_0xedc5('0x3a')],{'$or':_['map'](_0x52c898[_0xedc5('0x33')],function(_0x3c0c74){var _0xcfe232={};_0xcfe232[_0x3c0c74]={'$like':'%'+_0x2d1009[_0xedc5('0x2f')][_0xedc5('0x3d')]+'%'};return _0xcfe232;})});}_0x52c898=_['merge']({},_0x52c898,_0x2d1009[_0xedc5('0x3e')]);return _0xafc75e[_0xedc5('0x4e')](_0x52c898);}})[_0xedc5('0x23')](function(_0x4ee244){if(_0x4ee244){_0x55fa8d=_0x4ee244[_0xedc5('0x45')];if(!_0x2d1009['query'][_0xedc5('0x35')](_0xedc5('0x36'))){_0x52c898[_0xedc5('0x1d')]=qs[_0xedc5('0x1d')](_0x2d1009['query']['limit']);_0x52c898[_0xedc5('0x1c')]=qs['offset'](_0x2d1009[_0xedc5('0x2f')][_0xedc5('0x1c')]);}return _0xafc75e['getTags'](_0x52c898);}})['then'](function(_0x3b2930){if(_0x3b2930){return _0x3b2930?{'count':_0x55fa8d,'rows':_0x3b2930}:null;}})['then'](respondWithResult(_0x497156,null))[_0xedc5('0x42')](handleError(_0x497156,null));};exports['setTags']=function(_0x5a01c6,_0xcbaa79,_0xd9b8ef){if(_0x5a01c6[_0xedc5('0x50')]['id']){delete _0x5a01c6[_0xedc5('0x50')]['id'];}return db[_0xedc5('0x3f')][_0xedc5('0x49')]({'where':{'id':_0x5a01c6[_0xedc5('0x44')]['id']}})[_0xedc5('0x23')](handleEntityNotFound(_0xcbaa79,null))[_0xedc5('0x23')](function(_0x59691a){if(_0x59691a){return _0x59691a[_0xedc5('0x51')](_0x5a01c6[_0xedc5('0x50')][_0xedc5('0x52')]||[]);}return null;})[_0xedc5('0x23')](respondWithResult(_0xcbaa79,null))[_0xedc5('0x42')](handleError(_0xcbaa79,null));}; \ No newline at end of file diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js new file mode 100644 index 0000000..c17fad3 --- /dev/null +++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfcbb=['rimraf','../../config/environment','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x565a5f,_0x53eb6a){var _0x103eee=function(_0x260ee1){while(--_0x260ee1){_0x565a5f['push'](_0x565a5f['shift']());}};_0x103eee(++_0x53eb6a);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x312f5a,_0x30bef1){_0x312f5a=_0x312f5a-0x0;var _0x9b06d8=_0xfcbb[_0x312f5a];return _0x9b06d8;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var logger=require(_0xbfcb('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbfcb('0x3'));var rp=require(_0xbfcb('0x4'));var fs=require('fs');var path=require(_0xbfcb('0x5'));var rimraf=require(_0xbfcb('0x6'));var config=require(_0xbfcb('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x32c2aa,_0x4990c){return _0x32c2aa[_0xbfcb('0x8')](_0xbfcb('0x9'),attributes,{'tableName':_0xbfcb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js new file mode 100644 index 0000000..0fc94c6 --- /dev/null +++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4ed4=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','../../mysqldb'];(function(_0x1b976b,_0x1e8f55){var _0x1b0b87=function(_0x27612a){while(--_0x27612a){_0x1b976b['push'](_0x1b976b['shift']());}};_0x1b0b87(++_0x1e8f55);}(_0x4ed4,0x155));var _0x44ed=function(_0x907d59,_0x2a23fa){_0x907d59=_0x907d59-0x0;var _0x51355d=_0x4ed4[_0x907d59];return _0x51355d;};'use strict';var _=require(_0x44ed('0x0'));var util=require('util');var moment=require(_0x44ed('0x1'));var BPromise=require(_0x44ed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x44ed('0x3'))['db'];var utils=require(_0x44ed('0x4'));var logger=require(_0x44ed('0x5'))(_0x44ed('0x6'));var config=require(_0x44ed('0x7'));var jayson=require(_0x44ed('0x8'));var client=jayson[_0x44ed('0x9')][_0x44ed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25b809,_0x33e208,_0x8deedd){return new BPromise(function(_0x54e89c,_0x3ad815){return client[_0x44ed('0xb')](_0x25b809,_0x8deedd)[_0x44ed('0xc')](function(_0x29a875){logger['info']('ZendeskConfiguration,\x20%s,\x20%s',_0x33e208,_0x44ed('0xd'));logger[_0x44ed('0xe')](_0x44ed('0xf'),_0x33e208,_0x44ed('0xd'),JSON[_0x44ed('0x10')](_0x29a875));if(_0x29a875[_0x44ed('0x11')]){if(_0x29a875[_0x44ed('0x11')][_0x44ed('0x12')]===0x1f4){logger['error'](_0x44ed('0x13'),_0x33e208,_0x29a875[_0x44ed('0x11')][_0x44ed('0x14')]);return _0x3ad815(_0x29a875[_0x44ed('0x11')]['message']);}logger[_0x44ed('0x11')](_0x44ed('0x13'),_0x33e208,_0x29a875[_0x44ed('0x11')][_0x44ed('0x14')]);return _0x54e89c(_0x29a875[_0x44ed('0x11')][_0x44ed('0x14')]);}else{logger['info'](_0x44ed('0x13'),_0x33e208,_0x44ed('0xd'));_0x54e89c(_0x29a875[_0x44ed('0x15')][_0x44ed('0x14')]);}})[_0x44ed('0x16')](function(_0x80683d){logger['error'](_0x44ed('0x13'),_0x33e208,_0x80683d);_0x3ad815(_0x80683d);});});} \ No newline at end of file diff --git a/server/api/intZendeskField/index.js b/server/api/intZendeskField/index.js new file mode 100644 index 0000000..2d000ee --- /dev/null +++ b/server/api/intZendeskField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb78e=['index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated'];(function(_0x43eec,_0x5878eb){var _0x94b62b=function(_0x4c878f){while(--_0x4c878f){_0x43eec['push'](_0x43eec['shift']());}};_0x94b62b(++_0x5878eb);}(_0xb78e,0xd9));var _0xeb78=function(_0x4ddc33,_0x48a1ce){_0x4ddc33=_0x4ddc33-0x0;var _0x52a177=_0xb78e[_0x4ddc33];return _0x52a177;};'use strict';var multer=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var path=require(_0xeb78('0x2'));var timeout=require(_0xeb78('0x3'));var express=require(_0xeb78('0x4'));var router=express[_0xeb78('0x5')]();var fs_extra=require(_0xeb78('0x6'));var auth=require(_0xeb78('0x7'));var interaction=require(_0xeb78('0x8'));var config=require(_0xeb78('0x9'));var controller=require(_0xeb78('0xa'));router[_0xeb78('0xb')]('/',auth[_0xeb78('0xc')](),controller[_0xeb78('0xd')]);router[_0xeb78('0xb')](_0xeb78('0xe'),auth[_0xeb78('0xc')](),controller[_0xeb78('0xf')]);router[_0xeb78('0x10')]('/',auth['isAuthenticated'](),controller[_0xeb78('0x11')]);router[_0xeb78('0x12')](_0xeb78('0xe'),auth[_0xeb78('0xc')](),controller[_0xeb78('0x13')]);router[_0xeb78('0x14')](_0xeb78('0xe'),auth[_0xeb78('0xc')](),controller[_0xeb78('0x15')]);module[_0xeb78('0x16')]=router; \ No newline at end of file diff --git a/server/api/intZendeskField/intZendeskField.attributes.js b/server/api/intZendeskField/intZendeskField.attributes.js new file mode 100644 index 0000000..6893520 --- /dev/null +++ b/server/api/intZendeskField/intZendeskField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x23a5=['customVariable','keyValue','picklist','STRING','ENUM','variable','BOOLEAN','exports','string'];(function(_0x41ef02,_0x101e1a){var _0x5e6995=function(_0x124fdd){while(--_0x124fdd){_0x41ef02['push'](_0x41ef02['shift']());}};_0x5e6995(++_0x101e1a);}(_0x23a5,0x181));var _0x523a=function(_0x3e7f40,_0x49389b){_0x3e7f40=_0x3e7f40-0x0;var _0x9a9a1f=_0x23a5[_0x3e7f40];return _0x9a9a1f;};'use strict';var Sequelize=require('sequelize');module[_0x523a('0x0')]={'type':{'type':Sequelize['ENUM'](_0x523a('0x1'),'variable',_0x523a('0x2'),_0x523a('0x3'),_0x523a('0x4')),'defaultValue':_0x523a('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x523a('0x5')]},'keyType':{'type':Sequelize[_0x523a('0x6')](_0x523a('0x1'),_0x523a('0x7'),_0x523a('0x2'))},'keyContent':{'type':Sequelize[_0x523a('0x5')]},'idField':{'type':Sequelize[_0x523a('0x5')]},'nameField':{'type':Sequelize[_0x523a('0x5')]},'customField':{'type':Sequelize[_0x523a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x523a('0x5')]}}; \ No newline at end of file diff --git a/server/api/intZendeskField/intZendeskField.controller.js b/server/api/intZendeskField/intZendeskField.controller.js new file mode 100644 index 0000000..9b5f748 --- /dev/null +++ b/server/api/intZendeskField/intZendeskField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e4d=['../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','ZendeskField','findAll','params','keys','length','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x4b38b7,_0x50afcd){var _0x115c6b=function(_0x52cfa5){while(--_0x52cfa5){_0x4b38b7['push'](_0x4b38b7['shift']());}};_0x115c6b(++_0x50afcd);}(_0x4e4d,0xd7));var _0xd4e4=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0x4e4d[_0x5416db];return _0x243e35;};'use strict';var emlformat=require(_0xd4e4('0x0'));var rimraf=require(_0xd4e4('0x1'));var zipdir=require(_0xd4e4('0x2'));var jsonpatch=require(_0xd4e4('0x3'));var rp=require(_0xd4e4('0x4'));var moment=require(_0xd4e4('0x5'));var BPromise=require(_0xd4e4('0x6'));var Mustache=require(_0xd4e4('0x7'));var util=require(_0xd4e4('0x8'));var path=require(_0xd4e4('0x9'));var sox=require(_0xd4e4('0xa'));var csv=require('to-csv');var ejs=require(_0xd4e4('0xb'));var fs=require('fs');var fs_extra=require(_0xd4e4('0xc'));var _=require('lodash');var squel=require(_0xd4e4('0xd'));var crypto=require(_0xd4e4('0xe'));var jsforce=require(_0xd4e4('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd4e4('0x10'));var Papa=require(_0xd4e4('0x11'));var Redis=require(_0xd4e4('0x12'));var authService=require(_0xd4e4('0x13'));var qs=require(_0xd4e4('0x14'));var as=require(_0xd4e4('0x15'));var hardwareService=require(_0xd4e4('0x16'));var logger=require(_0xd4e4('0x17'))(_0xd4e4('0x18'));var utils=require(_0xd4e4('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xd4e4('0x1a'));var db=require(_0xd4e4('0x1b'))['db'];function respondWithStatusCode(_0x1f6c99,_0x3961b7){_0x3961b7=_0x3961b7||0xcc;return function(_0x4de538){if(_0x4de538){return _0x1f6c99['sendStatus'](_0x3961b7);}return _0x1f6c99[_0xd4e4('0x1c')](_0x3961b7)[_0xd4e4('0x1d')]();};}function respondWithResult(_0x594124,_0x504038){_0x504038=_0x504038||0xc8;return function(_0x5761c2){if(_0x5761c2){return _0x594124[_0xd4e4('0x1c')](_0x504038)[_0xd4e4('0x1e')](_0x5761c2);}};}function respondWithFilteredResult(_0x5097d9,_0x1efac0){return function(_0x232b38){if(_0x232b38){var _0x2af259=typeof _0x1efac0[_0xd4e4('0x1f')]===_0xd4e4('0x20')&&typeof _0x1efac0['limit']===_0xd4e4('0x20');var _0x57a242=_0x232b38[_0xd4e4('0x21')];var _0x4ed0e4=_0x2af259?0x0:_0x1efac0[_0xd4e4('0x1f')];var _0x1413fc=_0x2af259?_0x232b38[_0xd4e4('0x21')]:_0x1efac0[_0xd4e4('0x1f')]+_0x1efac0[_0xd4e4('0x22')];var _0x4a52f9;if(_0x1413fc>=_0x57a242){_0x1413fc=_0x57a242;_0x4a52f9=0xc8;}else{_0x4a52f9=0xce;}_0x5097d9[_0xd4e4('0x1c')](_0x4a52f9);return _0x5097d9[_0xd4e4('0x23')](_0xd4e4('0x24'),_0x4ed0e4+'-'+_0x1413fc+'/'+_0x57a242)[_0xd4e4('0x1e')](_0x232b38);}return null;};}function patchUpdates(_0x55b327){return function(_0x591be6){try{jsonpatch[_0xd4e4('0x25')](_0x591be6,_0x55b327,!![]);}catch(_0x35bafb){return BPromise[_0xd4e4('0x26')](_0x35bafb);}return _0x591be6[_0xd4e4('0x27')]();};}function saveUpdates(_0x5edcf9,_0x4cc0ff){return function(_0xd3560d){if(_0xd3560d){return _0xd3560d[_0xd4e4('0x28')](_0x5edcf9)[_0xd4e4('0x29')](function(_0x4ebb0d){return _0x4ebb0d;});}return null;};}function removeEntity(_0x245879,_0x2ecaf9){return function(_0x51672d){if(_0x51672d){return _0x51672d[_0xd4e4('0x2a')]()[_0xd4e4('0x29')](function(){_0x245879[_0xd4e4('0x1c')](0xcc)[_0xd4e4('0x1d')]();});}};}function handleEntityNotFound(_0x436d20,_0x47914a){return function(_0x2a1ab0){if(!_0x2a1ab0){_0x436d20[_0xd4e4('0x2b')](0x194);}return _0x2a1ab0;};}function handleError(_0x34abbc,_0x155444){_0x155444=_0x155444||0x1f4;return function(_0x31cca7){logger['error'](_0x31cca7[_0xd4e4('0x2c')]);if(_0x31cca7['name']){delete _0x31cca7[_0xd4e4('0x2d')];}_0x34abbc[_0xd4e4('0x1c')](_0x155444)[_0xd4e4('0x2e')](_0x31cca7);};}exports[_0xd4e4('0x2f')]=function(_0x21acab,_0x1bf9e5){var _0xc59ca7={},_0x318f0b={},_0x147f9a={'count':0x0,'rows':[]};var _0x54e45d=_[_0xd4e4('0x30')](db['ZendeskField'][_0xd4e4('0x31')],function(_0x529886){return{'name':_0x529886[_0xd4e4('0x32')],'type':_0x529886[_0xd4e4('0x33')][_0xd4e4('0x34')]};});_0x318f0b[_0xd4e4('0x35')]=_[_0xd4e4('0x30')](_0x54e45d,_0xd4e4('0x2d'));_0x318f0b[_0xd4e4('0x36')]=_['keys'](_0x21acab['query']);_0x318f0b[_0xd4e4('0x37')]=_[_0xd4e4('0x38')](_0x318f0b['model'],_0x318f0b[_0xd4e4('0x36')]);_0xc59ca7[_0xd4e4('0x39')]=_[_0xd4e4('0x38')](_0x318f0b['model'],qs[_0xd4e4('0x3a')](_0x21acab[_0xd4e4('0x36')]['fields']));_0xc59ca7[_0xd4e4('0x39')]=_0xc59ca7[_0xd4e4('0x39')]['length']?_0xc59ca7[_0xd4e4('0x39')]:_0x318f0b[_0xd4e4('0x35')];if(!_0x21acab['query'][_0xd4e4('0x3b')](_0xd4e4('0x3c'))){_0xc59ca7[_0xd4e4('0x22')]=qs[_0xd4e4('0x22')](_0x21acab['query'][_0xd4e4('0x22')]);_0xc59ca7[_0xd4e4('0x1f')]=qs[_0xd4e4('0x1f')](_0x21acab[_0xd4e4('0x36')][_0xd4e4('0x1f')]);}_0xc59ca7[_0xd4e4('0x3d')]=qs[_0xd4e4('0x3e')](_0x21acab[_0xd4e4('0x36')][_0xd4e4('0x3e')]);_0xc59ca7[_0xd4e4('0x3f')]=qs['filters'](_[_0xd4e4('0x40')](_0x21acab[_0xd4e4('0x36')],_0x318f0b[_0xd4e4('0x37')]),_0x54e45d);if(_0x21acab[_0xd4e4('0x36')][_0xd4e4('0x41')]){_0xc59ca7[_0xd4e4('0x3f')]=_[_0xd4e4('0x42')](_0xc59ca7[_0xd4e4('0x3f')],{'$or':_[_0xd4e4('0x30')](_0x54e45d,function(_0x17243a){if(_0x17243a['type']!==_0xd4e4('0x43')){var _0x51bbc5={};_0x51bbc5[_0x17243a[_0xd4e4('0x2d')]]={'$like':'%'+_0x21acab[_0xd4e4('0x36')][_0xd4e4('0x41')]+'%'};return _0x51bbc5;}})});}_0xc59ca7=_[_0xd4e4('0x42')]({},_0xc59ca7,_0x21acab[_0xd4e4('0x44')]);var _0x111728={'where':_0xc59ca7[_0xd4e4('0x3f')]};return db['ZendeskField'][_0xd4e4('0x21')](_0x111728)[_0xd4e4('0x29')](function(_0x33df69){_0x147f9a['count']=_0x33df69;if(_0x21acab[_0xd4e4('0x36')][_0xd4e4('0x45')]){_0xc59ca7[_0xd4e4('0x46')]=[{'all':!![]}];}return db[_0xd4e4('0x47')][_0xd4e4('0x48')](_0xc59ca7);})[_0xd4e4('0x29')](function(_0x473fcf){_0x147f9a['rows']=_0x473fcf;return _0x147f9a;})[_0xd4e4('0x29')](respondWithFilteredResult(_0x1bf9e5,_0xc59ca7))['catch'](handleError(_0x1bf9e5,null));};exports['show']=function(_0x24276e,_0x430813){var _0x3ca37b={'raw':!![],'where':{'id':_0x24276e[_0xd4e4('0x49')]['id']}},_0x25dbf5={};_0x25dbf5[_0xd4e4('0x35')]=_[_0xd4e4('0x4a')](db[_0xd4e4('0x47')]['rawAttributes']);_0x25dbf5['query']=_[_0xd4e4('0x4a')](_0x24276e[_0xd4e4('0x36')]);_0x25dbf5[_0xd4e4('0x37')]=_['intersection'](_0x25dbf5['model'],_0x25dbf5[_0xd4e4('0x36')]);_0x3ca37b[_0xd4e4('0x39')]=_[_0xd4e4('0x38')](_0x25dbf5[_0xd4e4('0x35')],qs[_0xd4e4('0x3a')](_0x24276e[_0xd4e4('0x36')]['fields']));_0x3ca37b[_0xd4e4('0x39')]=_0x3ca37b[_0xd4e4('0x39')][_0xd4e4('0x4b')]?_0x3ca37b[_0xd4e4('0x39')]:_0x25dbf5[_0xd4e4('0x35')];if(_0x24276e[_0xd4e4('0x36')][_0xd4e4('0x45')]){_0x3ca37b[_0xd4e4('0x46')]=[{'all':!![]}];}_0x3ca37b=_['merge']({},_0x3ca37b,_0x24276e['options']);return db['ZendeskField'][_0xd4e4('0x4c')](_0x3ca37b)['then'](handleEntityNotFound(_0x430813,null))[_0xd4e4('0x29')](respondWithResult(_0x430813,null))[_0xd4e4('0x4d')](handleError(_0x430813,null));};exports[_0xd4e4('0x4e')]=function(_0xa0c7b3,_0x48abb0){return db['ZendeskField']['create'](_0xa0c7b3['body'],{})[_0xd4e4('0x29')](respondWithResult(_0x48abb0,0xc9))[_0xd4e4('0x4d')](handleError(_0x48abb0,null));};exports[_0xd4e4('0x28')]=function(_0x26fe76,_0x37440a){if(_0x26fe76[_0xd4e4('0x4f')]['id']){delete _0x26fe76['body']['id'];}return db[_0xd4e4('0x47')][_0xd4e4('0x4c')]({'where':{'id':_0x26fe76[_0xd4e4('0x49')]['id']}})['then'](handleEntityNotFound(_0x37440a,null))[_0xd4e4('0x29')](saveUpdates(_0x26fe76[_0xd4e4('0x4f')],null))[_0xd4e4('0x29')](respondWithResult(_0x37440a,null))[_0xd4e4('0x4d')](handleError(_0x37440a,null));};exports[_0xd4e4('0x2a')]=function(_0x30822e,_0x56eb5f){return db[_0xd4e4('0x47')]['find']({'where':{'id':_0x30822e[_0xd4e4('0x49')]['id']}})[_0xd4e4('0x29')](handleEntityNotFound(_0x56eb5f,null))[_0xd4e4('0x29')](removeEntity(_0x56eb5f,null))[_0xd4e4('0x4d')](handleError(_0x56eb5f,null));}; \ No newline at end of file diff --git a/server/api/intZendeskField/intZendeskField.model.js b/server/api/intZendeskField/intZendeskField.model.js new file mode 100644 index 0000000..123bcb0 --- /dev/null +++ b/server/api/intZendeskField/intZendeskField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf548=['define','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./intZendeskField.attributes'];(function(_0xa2f3a7,_0x2ee243){var _0x10d91f=function(_0x405a00){while(--_0x405a00){_0xa2f3a7['push'](_0xa2f3a7['shift']());}};_0x10d91f(++_0x2ee243);}(_0xf548,0x116));var _0x8f54=function(_0x1fd675,_0x165dfe){_0x1fd675=_0x1fd675-0x0;var _0x16b554=_0xf548[_0x1fd675];return _0x16b554;};'use strict';var _=require(_0x8f54('0x0'));var util=require(_0x8f54('0x1'));var logger=require('../../config/logger')(_0x8f54('0x2'));var moment=require(_0x8f54('0x3'));var BPromise=require(_0x8f54('0x4'));var rp=require(_0x8f54('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8f54('0x6'));var attributes=require(_0x8f54('0x7'));module['exports']=function(_0x195b8c,_0x51bfeb){return _0x195b8c[_0x8f54('0x8')]('ZendeskField',attributes,{'tableName':_0x8f54('0x9'),'paranoid':![],'indexes':[{'name':_0x8f54('0xa'),'fields':[_0x8f54('0xb'),_0x8f54('0xc')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intZendeskField/intZendeskField.rpc.js b/server/api/intZendeskField/intZendeskField.rpc.js new file mode 100644 index 0000000..220f813 --- /dev/null +++ b/server/api/intZendeskField/intZendeskField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8f65=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x4b99f0,_0x419040){var _0x29d886=function(_0x398626){while(--_0x398626){_0x4b99f0['push'](_0x4b99f0['shift']());}};_0x29d886(++_0x419040);}(_0x8f65,0x77));var _0x58f6=function(_0x1cbce7,_0x3e67f5){_0x1cbce7=_0x1cbce7-0x0;var _0x18aaae=_0x8f65[_0x1cbce7];return _0x18aaae;};'use strict';var _=require(_0x58f6('0x0'));var util=require('util');var moment=require(_0x58f6('0x1'));var BPromise=require(_0x58f6('0x2'));var rs=require(_0x58f6('0x3'));var fs=require('fs');var Redis=require(_0x58f6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x58f6('0x5'));var logger=require(_0x58f6('0x6'))(_0x58f6('0x7'));var config=require(_0x58f6('0x8'));var jayson=require(_0x58f6('0x9'));var client=jayson[_0x58f6('0xa')][_0x58f6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c83c1,_0x56a836,_0x4590d7){return new BPromise(function(_0x257c2f,_0x351e4e){return client[_0x58f6('0xc')](_0x3c83c1,_0x4590d7)[_0x58f6('0xd')](function(_0x4fc129){logger[_0x58f6('0xe')](_0x58f6('0xf'),_0x56a836,_0x58f6('0x10'));logger[_0x58f6('0x11')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x56a836,_0x58f6('0x10'),JSON[_0x58f6('0x12')](_0x4fc129));if(_0x4fc129[_0x58f6('0x13')]){if(_0x4fc129[_0x58f6('0x13')]['code']===0x1f4){logger['error'](_0x58f6('0xf'),_0x56a836,_0x4fc129[_0x58f6('0x13')][_0x58f6('0x14')]);return _0x351e4e(_0x4fc129[_0x58f6('0x13')]['message']);}logger[_0x58f6('0x13')](_0x58f6('0xf'),_0x56a836,_0x4fc129[_0x58f6('0x13')]['message']);return _0x257c2f(_0x4fc129[_0x58f6('0x13')][_0x58f6('0x14')]);}else{logger[_0x58f6('0xe')](_0x58f6('0xf'),_0x56a836,_0x58f6('0x10'));_0x257c2f(_0x4fc129[_0x58f6('0x15')][_0x58f6('0x14')]);}})[_0x58f6('0x16')](function(_0x5c98bb){logger[_0x58f6('0x13')](_0x58f6('0xf'),_0x56a836,_0x5c98bb);_0x351e4e(_0x5c98bb);});});} \ No newline at end of file diff --git a/server/api/intZohoAccount/index.js b/server/api/intZohoAccount/index.js new file mode 100644 index 0000000..6de76f2 --- /dev/null +++ b/server/api/intZohoAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4550=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','util'];(function(_0x22ee0f,_0x22e6d2){var _0x204696=function(_0x4cab38){while(--_0x4cab38){_0x22ee0f['push'](_0x22ee0f['shift']());}};_0x204696(++_0x22e6d2);}(_0x4550,0x92));var _0x0455=function(_0x5a15b1,_0x202388){_0x5a15b1=_0x5a15b1-0x0;var _0x4c2df7=_0x4550[_0x5a15b1];return _0x4c2df7;};'use strict';var multer=require('multer');var util=require(_0x0455('0x0'));var path=require(_0x0455('0x1'));var timeout=require(_0x0455('0x2'));var express=require('express');var router=express[_0x0455('0x3')]();var fs_extra=require(_0x0455('0x4'));var auth=require(_0x0455('0x5'));var interaction=require(_0x0455('0x6'));var config=require(_0x0455('0x7'));var controller=require('./intZohoAccount.controller');router[_0x0455('0x8')]('/',auth['isAuthenticated'](),controller[_0x0455('0x9')]);router[_0x0455('0x8')](_0x0455('0xa'),auth[_0x0455('0xb')](),controller[_0x0455('0xc')]);router[_0x0455('0x8')]('/:id/configurations',auth[_0x0455('0xb')](),controller['getConfigurations']);router[_0x0455('0x8')]('/:id/fields',auth[_0x0455('0xb')](),controller[_0x0455('0xd')]);router[_0x0455('0xe')]('/',auth[_0x0455('0xb')](),controller[_0x0455('0xf')]);router[_0x0455('0xe')](_0x0455('0x10'),auth['isAuthenticated'](),controller[_0x0455('0x11')]);router[_0x0455('0x12')](_0x0455('0xa'),auth['isAuthenticated'](),controller[_0x0455('0x13')]);router[_0x0455('0x14')]('/:id',auth[_0x0455('0xb')](),controller['destroy']);module['exports']=router; \ No newline at end of file diff --git a/server/api/intZohoAccount/intZohoAccount.attributes.js b/server/api/intZohoAccount/intZohoAccount.attributes.js new file mode 100644 index 0000000..d9b3b5e --- /dev/null +++ b/server/api/intZohoAccount/intZohoAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd64b=['STRING','sequelize'];(function(_0x354fa4,_0x30e267){var _0x1aa414=function(_0xb38eaa){while(--_0xb38eaa){_0x354fa4['push'](_0x354fa4['shift']());}};_0x1aa414(++_0x30e267);}(_0xd64b,0xc1));var _0xbd64=function(_0x323021,_0x30f030){_0x323021=_0x323021-0x0;var _0x52cb3e=_0xd64b[_0x323021];return _0x52cb3e;};'use strict';var Sequelize=require(_0xbd64('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd64('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xbd64('0x1')]},'zone':{'type':Sequelize[_0xbd64('0x1')]},'clientId':{'type':Sequelize[_0xbd64('0x1')]},'clientSecret':{'type':Sequelize[_0xbd64('0x1')]},'serverUrl':{'type':Sequelize[_0xbd64('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/intZohoAccount/intZohoAccount.controller.js b/server/api/intZohoAccount/intZohoAccount.controller.js new file mode 100644 index 0000000..68d0c93 --- /dev/null +++ b/server/api/intZohoAccount/intZohoAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf2e4=['Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','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','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','send','map','ZohoAccount','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','name','merge','rows','catch','show','keys','includeAll','options','find','create','body','params','findOne','ZohoConfiguration','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','channel','getDescriptions','ZohoField','Descriptions','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','zoho.eu','com','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Type','remove','includes','api_name','system_mandatory','display_label','data_type','pick_list_values','stringify','test'];(function(_0x4ee2de,_0x4374d5){var _0x4148f5=function(_0x60b9ba){while(--_0x60b9ba){_0x4ee2de['push'](_0x4ee2de['shift']());}};_0x4148f5(++_0x4374d5);}(_0xf2e4,0x10c));var _0x4f2e=function(_0x4d2eb7,_0x45e672){_0x4d2eb7=_0x4d2eb7-0x0;var _0x56b032=_0xf2e4[_0x4d2eb7];return _0x56b032;};'use strict';var emlformat=require(_0x4f2e('0x0'));var rimraf=require(_0x4f2e('0x1'));var zipdir=require(_0x4f2e('0x2'));var jsonpatch=require(_0x4f2e('0x3'));var rp=require(_0x4f2e('0x4'));var moment=require(_0x4f2e('0x5'));var BPromise=require(_0x4f2e('0x6'));var Mustache=require(_0x4f2e('0x7'));var util=require(_0x4f2e('0x8'));var path=require(_0x4f2e('0x9'));var sox=require('sox');var csv=require(_0x4f2e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f2e('0xb'));var _=require('lodash');var squel=require(_0x4f2e('0xc'));var crypto=require('crypto');var jsforce=require(_0x4f2e('0xd'));var deskjs=require(_0x4f2e('0xe'));var toCsv=require(_0x4f2e('0xa'));var querystring=require(_0x4f2e('0xf'));var Papa=require(_0x4f2e('0x10'));var Redis=require('ioredis');var authService=require(_0x4f2e('0x11'));var qs=require(_0x4f2e('0x12'));var as=require(_0x4f2e('0x13'));var hardwareService=require(_0x4f2e('0x14'));var logger=require(_0x4f2e('0x15'))(_0x4f2e('0x16'));var utils=require(_0x4f2e('0x17'));var config=require(_0x4f2e('0x18'));var licenseUtil=require(_0x4f2e('0x19'));var db=require(_0x4f2e('0x1a'))['db'];var integrations=require(_0x4f2e('0x1b'));function respondWithStatusCode(_0x279b9d,_0x32388a){_0x32388a=_0x32388a||0xcc;return function(_0x64f1e1){if(_0x64f1e1){return _0x279b9d[_0x4f2e('0x1c')](_0x32388a);}return _0x279b9d[_0x4f2e('0x1d')](_0x32388a)[_0x4f2e('0x1e')]();};}function respondWithResult(_0x2ff6e1,_0x511452){_0x511452=_0x511452||0xc8;return function(_0x37b172){if(_0x37b172){return _0x2ff6e1[_0x4f2e('0x1d')](_0x511452)[_0x4f2e('0x1f')](_0x37b172);}};}function respondWithFilteredResult(_0x217c8a,_0x2c3e95){return function(_0x3d9976){if(_0x3d9976){var _0x424078=typeof _0x2c3e95[_0x4f2e('0x20')]===_0x4f2e('0x21')&&typeof _0x2c3e95[_0x4f2e('0x22')]===_0x4f2e('0x21');var _0x5d24ac=_0x3d9976[_0x4f2e('0x23')];var _0x15f1ba=_0x424078?0x0:_0x2c3e95[_0x4f2e('0x20')];var _0x39708f=_0x424078?_0x3d9976['count']:_0x2c3e95[_0x4f2e('0x20')]+_0x2c3e95[_0x4f2e('0x22')];var _0xd2bc0;if(_0x39708f>=_0x5d24ac){_0x39708f=_0x5d24ac;_0xd2bc0=0xc8;}else{_0xd2bc0=0xce;}_0x217c8a[_0x4f2e('0x1d')](_0xd2bc0);return _0x217c8a[_0x4f2e('0x24')](_0x4f2e('0x25'),_0x15f1ba+'-'+_0x39708f+'/'+_0x5d24ac)['json'](_0x3d9976);}return null;};}function patchUpdates(_0x5c1b77){return function(_0x5301c7){try{jsonpatch[_0x4f2e('0x26')](_0x5301c7,_0x5c1b77,!![]);}catch(_0x823b04){return BPromise['reject'](_0x823b04);}return _0x5301c7[_0x4f2e('0x27')]();};}function saveUpdates(_0x175afb,_0x55ade4){return function(_0x40b701){if(_0x40b701){return _0x40b701[_0x4f2e('0x28')](_0x175afb)['then'](function(_0x40d868){return _0x40d868;});}return null;};}function removeEntity(_0x21f6f2,_0x3107ca){return function(_0x48d5f7){if(_0x48d5f7){return _0x48d5f7[_0x4f2e('0x29')]()[_0x4f2e('0x2a')](function(){_0x21f6f2[_0x4f2e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9a726f,_0x50bd38){return function(_0x10e05e){if(!_0x10e05e){_0x9a726f[_0x4f2e('0x1c')](0x194);}return _0x10e05e;};}function handleError(_0x1bbc05,_0x28a41a){_0x28a41a=_0x28a41a||0x1f4;return function(_0x30de6f){logger[_0x4f2e('0x2b')](_0x30de6f['stack']);if(_0x30de6f['name']){delete _0x30de6f['name'];}_0x1bbc05[_0x4f2e('0x1d')](_0x28a41a)[_0x4f2e('0x2c')](_0x30de6f);};}exports['index']=function(_0x6a358b,_0x481621){var _0x53866d={},_0x38eb15={},_0x48cfb7={'count':0x0,'rows':[]};var _0x1593e6=_[_0x4f2e('0x2d')](db[_0x4f2e('0x2e')][_0x4f2e('0x2f')],function(_0x1902dd){return{'name':_0x1902dd['fieldName'],'type':_0x1902dd['type'][_0x4f2e('0x30')]};});_0x38eb15[_0x4f2e('0x31')]=_[_0x4f2e('0x2d')](_0x1593e6,'name');_0x38eb15['query']=_['keys'](_0x6a358b[_0x4f2e('0x32')]);_0x38eb15[_0x4f2e('0x33')]=_[_0x4f2e('0x34')](_0x38eb15[_0x4f2e('0x31')],_0x38eb15['query']);_0x53866d[_0x4f2e('0x35')]=_['intersection'](_0x38eb15[_0x4f2e('0x31')],qs[_0x4f2e('0x36')](_0x6a358b['query']['fields']));_0x53866d[_0x4f2e('0x35')]=_0x53866d[_0x4f2e('0x35')][_0x4f2e('0x37')]?_0x53866d['attributes']:_0x38eb15[_0x4f2e('0x31')];if(!_0x6a358b['query'][_0x4f2e('0x38')]('nolimit')){_0x53866d['limit']=qs[_0x4f2e('0x22')](_0x6a358b['query'][_0x4f2e('0x22')]);_0x53866d[_0x4f2e('0x20')]=qs[_0x4f2e('0x20')](_0x6a358b[_0x4f2e('0x32')][_0x4f2e('0x20')]);}_0x53866d[_0x4f2e('0x39')]=qs[_0x4f2e('0x3a')](_0x6a358b['query'][_0x4f2e('0x3a')]);_0x53866d[_0x4f2e('0x3b')]=qs[_0x4f2e('0x33')](_[_0x4f2e('0x3c')](_0x6a358b[_0x4f2e('0x32')],_0x38eb15['filters']),_0x1593e6);if(_0x6a358b[_0x4f2e('0x32')][_0x4f2e('0x3d')]){_0x53866d[_0x4f2e('0x3b')]=_['merge'](_0x53866d['where'],{'$or':_['map'](_0x1593e6,function(_0x159103){if(_0x159103[_0x4f2e('0x3e')]!=='VIRTUAL'){var _0x40aeff={};_0x40aeff[_0x159103[_0x4f2e('0x3f')]]={'$like':'%'+_0x6a358b[_0x4f2e('0x32')]['filter']+'%'};return _0x40aeff;}})});}_0x53866d=_[_0x4f2e('0x40')]({},_0x53866d,_0x6a358b['options']);var _0x1b88e9={'where':_0x53866d[_0x4f2e('0x3b')]};return db['ZohoAccount'][_0x4f2e('0x23')](_0x1b88e9)['then'](function(_0x362259){_0x48cfb7[_0x4f2e('0x23')]=_0x362259;if(_0x6a358b[_0x4f2e('0x32')]['includeAll']){_0x53866d['include']=[{'all':!![]}];}return db[_0x4f2e('0x2e')]['findAll'](_0x53866d);})[_0x4f2e('0x2a')](function(_0x2aa9c7){_0x48cfb7[_0x4f2e('0x41')]=_0x2aa9c7;return _0x48cfb7;})['then'](respondWithFilteredResult(_0x481621,_0x53866d))[_0x4f2e('0x42')](handleError(_0x481621,null));};exports[_0x4f2e('0x43')]=function(_0x515e43,_0x1a0dca){var _0x2ce446={'raw':![],'where':{'id':_0x515e43['params']['id']}},_0x1836a9={};_0x1836a9['model']=_[_0x4f2e('0x44')](db[_0x4f2e('0x2e')][_0x4f2e('0x2f')]);_0x1836a9[_0x4f2e('0x32')]=_[_0x4f2e('0x44')](_0x515e43[_0x4f2e('0x32')]);_0x1836a9[_0x4f2e('0x33')]=_[_0x4f2e('0x34')](_0x1836a9[_0x4f2e('0x31')],_0x1836a9[_0x4f2e('0x32')]);_0x2ce446[_0x4f2e('0x35')]=_[_0x4f2e('0x34')](_0x1836a9['model'],qs[_0x4f2e('0x36')](_0x515e43[_0x4f2e('0x32')][_0x4f2e('0x36')]));_0x2ce446['attributes']=_0x2ce446[_0x4f2e('0x35')]['length']?_0x2ce446[_0x4f2e('0x35')]:_0x1836a9[_0x4f2e('0x31')];if(_0x515e43['query'][_0x4f2e('0x45')]){_0x2ce446['include']=[{'all':!![]}];}_0x2ce446=_[_0x4f2e('0x40')]({},_0x2ce446,_0x515e43[_0x4f2e('0x46')]);return db['ZohoAccount'][_0x4f2e('0x47')](_0x2ce446)['then'](handleEntityNotFound(_0x1a0dca,null))['then'](respondWithResult(_0x1a0dca,null))[_0x4f2e('0x42')](handleError(_0x1a0dca,null));};exports['create']=function(_0x3656b3,_0x904f88){return db['ZohoAccount'][_0x4f2e('0x48')](_0x3656b3[_0x4f2e('0x49')],{})[_0x4f2e('0x2a')](respondWithResult(_0x904f88,0xc9))[_0x4f2e('0x42')](handleError(_0x904f88,null));};exports[_0x4f2e('0x28')]=function(_0x3c610d,_0x96caed){if(_0x3c610d[_0x4f2e('0x49')]['id']){delete _0x3c610d[_0x4f2e('0x49')]['id'];}return db[_0x4f2e('0x2e')]['find']({'where':{'id':_0x3c610d[_0x4f2e('0x4a')]['id']}})[_0x4f2e('0x2a')](handleEntityNotFound(_0x96caed,null))['then'](saveUpdates(_0x3c610d[_0x4f2e('0x49')],null))['then'](respondWithResult(_0x96caed,null))[_0x4f2e('0x42')](handleError(_0x96caed,null));};exports[_0x4f2e('0x29')]=function(_0x33b8c5,_0x2954ef){return db['ZohoAccount'][_0x4f2e('0x47')]({'where':{'id':_0x33b8c5[_0x4f2e('0x4a')]['id']}})[_0x4f2e('0x2a')](handleEntityNotFound(_0x2954ef,null))[_0x4f2e('0x2a')](removeEntity(_0x2954ef,null))['catch'](handleError(_0x2954ef,null));};exports['getConfigurations']=function(_0x43e84e,_0x31a269,_0x229151){var _0x15aece={};var _0x1281be={};var _0x2e1c0f;var _0x3b3b5e;return db[_0x4f2e('0x2e')][_0x4f2e('0x4b')]({'where':{'id':_0x43e84e['params']['id']}})[_0x4f2e('0x2a')](handleEntityNotFound(_0x31a269,null))['then'](function(_0x3b51f7){if(_0x3b51f7){_0x2e1c0f=_0x3b51f7;_0x1281be['model']=_['keys'](db[_0x4f2e('0x4c')][_0x4f2e('0x2f')]);_0x1281be[_0x4f2e('0x32')]=_[_0x4f2e('0x44')](_0x43e84e[_0x4f2e('0x32')]);_0x1281be['filters']=_['intersection'](_0x1281be['model'],_0x1281be[_0x4f2e('0x32')]);_0x15aece[_0x4f2e('0x35')]=_[_0x4f2e('0x34')](_0x1281be[_0x4f2e('0x31')],qs[_0x4f2e('0x36')](_0x43e84e[_0x4f2e('0x32')]['fields']));_0x15aece[_0x4f2e('0x35')]=_0x15aece[_0x4f2e('0x35')][_0x4f2e('0x37')]?_0x15aece[_0x4f2e('0x35')]:_0x1281be[_0x4f2e('0x31')];_0x15aece[_0x4f2e('0x39')]=qs[_0x4f2e('0x3a')](_0x43e84e[_0x4f2e('0x32')][_0x4f2e('0x3a')]);_0x15aece[_0x4f2e('0x3b')]=qs[_0x4f2e('0x33')](_[_0x4f2e('0x3c')](_0x43e84e[_0x4f2e('0x32')],_0x1281be[_0x4f2e('0x33')]));if(_0x43e84e['query'][_0x4f2e('0x3d')]){_0x15aece['where']=_['merge'](_0x15aece[_0x4f2e('0x3b')],{'$or':_[_0x4f2e('0x2d')](_0x15aece[_0x4f2e('0x35')],function(_0x165892){var _0x2fb643={};_0x2fb643[_0x165892]={'$like':'%'+_0x43e84e[_0x4f2e('0x32')]['filter']+'%'};return _0x2fb643;})});}_0x15aece=_[_0x4f2e('0x40')]({},_0x15aece,_0x43e84e['options']);return _0x2e1c0f[_0x4f2e('0x4d')](_0x15aece);}})[_0x4f2e('0x2a')](function(_0x423e2d){if(_0x423e2d){_0x3b3b5e=_0x423e2d['length'];if(!_0x43e84e[_0x4f2e('0x32')]['hasOwnProperty'](_0x4f2e('0x4e'))){_0x15aece[_0x4f2e('0x22')]=qs['limit'](_0x43e84e[_0x4f2e('0x32')][_0x4f2e('0x22')]);_0x15aece['offset']=qs['offset'](_0x43e84e[_0x4f2e('0x32')]['offset']);}return _0x2e1c0f[_0x4f2e('0x4d')](_0x15aece);}})[_0x4f2e('0x2a')](function(_0x280195){if(_0x280195){return _0x280195?{'count':_0x3b3b5e,'rows':_0x280195}:null;}})[_0x4f2e('0x2a')](respondWithResult(_0x31a269,null))['catch'](handleError(_0x31a269,null));};exports[_0x4f2e('0x4f')]=function(_0x4c7017,_0x3fac2b,_0x2c6bbb){if(_0x4c7017[_0x4f2e('0x49')]['id']){delete _0x4c7017[_0x4f2e('0x49')]['id'];}return db[_0x4f2e('0x2e')]['findOne']({'where':{'id':_0x4c7017['params']['id']}})[_0x4f2e('0x2a')](handleEntityNotFound(_0x3fac2b,null))[_0x4f2e('0x2a')](function(_0x18a82c){if(_0x18a82c){_0x4c7017['body'][_0x4f2e('0x50')]=_0x18a82c['id'];_0x4c7017[_0x4f2e('0x49')][_0x4f2e('0x51')]=integrations['getSubjects'](_0x4c7017[_0x4f2e('0x49')][_0x4f2e('0x52')],_0x4c7017['body'][_0x4f2e('0x3e')]);_0x4c7017['body']['Descriptions']=integrations[_0x4f2e('0x53')](_0x4c7017[_0x4f2e('0x49')][_0x4f2e('0x52')],_0x4c7017['body'][_0x4f2e('0x3e')]);return db[_0x4f2e('0x4c')][_0x4f2e('0x48')](_0x4c7017[_0x4f2e('0x49')],{'include':[{'model':db['ZohoField'],'as':_0x4f2e('0x51')},{'model':db[_0x4f2e('0x54')],'as':_0x4f2e('0x55')}]});}return null;})[_0x4f2e('0x2a')](respondWithResult(_0x3fac2b,null))['catch'](handleError(_0x3fac2b,null));};function getAccessToken(_0x3c510f){return new Promise(function(_0x37c043,_0x59adc7){var _0x29012c;switch(_0x3c510f[_0x4f2e('0x56')]){case'US':_0x29012c=_0x4f2e('0x57');break;case'AU':_0x29012c=_0x4f2e('0x58');break;case'EU':_0x29012c=_0x4f2e('0x59');break;case'IN':_0x29012c=_0x4f2e('0x5a');break;case'CN':_0x29012c=_0x4f2e('0x5b');break;default:_0x29012c=_0x4f2e('0x59');break;}var _0x1e079b={'method':_0x4f2e('0x5c'),'uri':_0x29012c+_0x4f2e('0x5d'),'qs':{'refresh_token':_0x3c510f['refreshToken'],'client_id':_0x3c510f[_0x4f2e('0x5e')],'client_secret':_0x3c510f[_0x4f2e('0x5f')],'grant_type':_0x4f2e('0x60')},'json':!![]};return rp(_0x1e079b)[_0x4f2e('0x2a')](function(_0x376140){if(_0x376140[_0x4f2e('0x61')]){_0x37c043(_0x376140[_0x4f2e('0x61')]);}else{_0x59adc7(_0x4f2e('0x62'));}})[_0x4f2e('0x42')](function(_0x4b32e6){_0x59adc7(_0x4b32e6);});});}exports[_0x4f2e('0x63')]=function(_0x578289,_0x38fd20,_0x57dd05){var _0x3acf53,_0x4fab21,_0x3a15a1,_0x5963b8,_0x3f3a81;return db[_0x4f2e('0x2e')][_0x4f2e('0x4b')]({'where':{'id':_0x578289[_0x4f2e('0x4a')]['id']},'attributes':['id',_0x4f2e('0x64'),'zone',_0x4f2e('0x5e'),_0x4f2e('0x5f'),_0x4f2e('0x65'),_0x4f2e('0x66'),_0x4f2e('0x67')]})[_0x4f2e('0x2a')](handleEntityNotFound(_0x38fd20,null))[_0x4f2e('0x2a')](function(_0x33b5ae){_0x3f3a81=_0x33b5ae;_0x3acf53=_0x3f3a81['host'];_0x4fab21=_0x3acf53===_0x4f2e('0x68')?'eu':_0x4f2e('0x69');_0x3a15a1=_0x3f3a81[_0x4f2e('0x65')];var _0x240889=_0x3a15a1['slice'](-0x1);if(_0x240889==='/'||_0x240889==='\x5c'||_0x240889===':'){_0x3a15a1=_0x3a15a1[_0x4f2e('0x6a')](0x0,_0x3a15a1[_0x4f2e('0x6b')](_0x240889));}if(!_0x3f3a81[_0x4f2e('0x67')]){throw new Error(_0x4f2e('0x6c'));}return getAccessToken(_0x3f3a81);})[_0x4f2e('0x2a')](function(_0x34d9f2){if(_0x34d9f2){return rp({'method':_0x4f2e('0x6d'),'uri':util[_0x4f2e('0x6e')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x4fab21),'qs':{'module':_0x4f2e('0x6f')},'headers':{'Authorization':_0x4f2e('0x70')+_0x34d9f2},'json':!![]});}})['then'](function(_0x505c4a){if(_0x505c4a){if(_0x505c4a[_0x4f2e('0x71')]&&_0x505c4a[_0x4f2e('0x71')][_0x4f2e('0x2b')]){throw new Error(_0x505c4a['response']['error'][_0x4f2e('0x72')]);}var _0x23efcc=[];var _0x3b5ff5=[];var _0x28895f=[_0x4f2e('0x73'),_0x4f2e('0x74'),_0x4f2e('0x75'),_0x4f2e('0x76'),_0x4f2e('0x77'),_0x4f2e('0x78'),'Call_Start_Time',_0x4f2e('0x79')];_0x3b5ff5=_[_0x4f2e('0x7a')](_0x505c4a[_0x4f2e('0x36')],function(_0x547954){return _0x28895f[_0x4f2e('0x7b')](_0x547954[_0x4f2e('0x7c')]);});for(var _0x51e61a=0x0;_0x51e61a<_0x3b5ff5[_0x4f2e('0x37')];_0x51e61a++){if(_0x3b5ff5[_0x51e61a][_0x4f2e('0x7d')]===![]){_0x23efcc['push']({'id':_0x3b5ff5[_0x51e61a]['id'],'name':_0x3b5ff5[_0x51e61a][_0x4f2e('0x7e')],'custom':_0x3b5ff5[_0x51e61a]['custom_field'],'options':_0x3b5ff5[_0x51e61a][_0x4f2e('0x7f')]==='picklist'&&_0x3b5ff5[_0x51e61a][_0x4f2e('0x80')][_0x4f2e('0x37')]>-0x1?_['map'](_0x3b5ff5[_0x51e61a]['pick_list_values'],function(_0x33cb83){return{'name':_0x33cb83,'value':_0x33cb83};}):[]});}}return{'count':_0x23efcc[_0x4f2e('0x37')],'rows':_0x23efcc};}else{return{'count':0x0,'rows':[]};}})[_0x4f2e('0x2a')](respondWithResult(_0x38fd20,null))['catch'](function(_0x3b4828){var _0x7b3ca7=_0x578289[_0x4f2e('0x32')]['test']?0x1f4:_0x3b4828['statusCode']||0x1f4;logger[_0x4f2e('0x2b')]('getFields,\x20%s,\x20%s,\x20%s',_0x4f2e('0x63'),_0x7b3ca7,JSON[_0x4f2e('0x81')](_0x3b4828));delete _0x3b4828[_0x4f2e('0x3f')];if(_0x7b3ca7===0x191){_0x7b3ca7=0x190;}_0x38fd20[_0x4f2e('0x1d')](_0x7b3ca7)[_0x4f2e('0x2c')](_0x578289[_0x4f2e('0x32')][_0x4f2e('0x82')]?{'message':_0x4f2e('0x83'),'statusCode':_0x3b4828[_0x4f2e('0x84')]}:_0x3b4828);});}; \ No newline at end of file diff --git a/server/api/intZohoAccount/intZohoAccount.model.js b/server/api/intZohoAccount/intZohoAccount.model.js new file mode 100644 index 0000000..6959f98 --- /dev/null +++ b/server/api/intZohoAccount/intZohoAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf278=['serverUrl','clientSecret','code','host','substring','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','clientId','parse','refresh_token','refreshToken','format','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','slice','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','POST','authorization_code','application/x-www-form-urlencoded','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','int_zoho_accounts','changed','zone'];(function(_0x54768b,_0x471822){var _0x587cbf=function(_0x413639){while(--_0x413639){_0x54768b['push'](_0x54768b['shift']());}};_0x587cbf(++_0x471822);}(_0xf278,0x13b));var _0x8f27=function(_0x2a83af,_0x4fa9ed){_0x2a83af=_0x2a83af-0x0;var _0x2e1648=_0xf278[_0x2a83af];return _0x2e1648;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8f27('0x0'))(_0x8f27('0x1'));var moment=require(_0x8f27('0x2'));var BPromise=require('bluebird');var rp=require(_0x8f27('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8f27('0x4'));var config=require(_0x8f27('0x5'));var attributes=require(_0x8f27('0x6'));var integrations=require(_0x8f27('0x7'));module[_0x8f27('0x8')]=function(_0x4780df,_0x56e54a){return _0x4780df[_0x8f27('0x9')]('ZohoAccount',attributes,{'tableName':_0x8f27('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5e2d98,_0x1294f8,_0x4b9ebb){if(_0x5e2d98[_0x8f27('0xb')](_0x8f27('0xc'))||_0x5e2d98[_0x8f27('0xb')](_0x8f27('0xd'))||_0x5e2d98[_0x8f27('0xb')]('clientId')||_0x5e2d98[_0x8f27('0xb')](_0x8f27('0xe'))||_0x5e2d98[_0x8f27('0xb')](_0x8f27('0xf'))||_0x5e2d98['changed'](_0x8f27('0x10'))){var _0x34f7ba,_0x344775;_0x34f7ba=_0x5e2d98[_0x8f27('0xd')];var _0x598ee6=_0x34f7ba['slice'](-0x1);if(_0x598ee6==='/'||_0x598ee6==='\x5c'||_0x598ee6===':'){_0x34f7ba=_0x34f7ba[_0x8f27('0x11')](0x0,_0x34f7ba['lastIndexOf'](_0x598ee6));}switch(_0x5e2d98[_0x8f27('0xc')]){case'US':_0x344775=_0x8f27('0x12');break;case'AU':_0x344775='https://accounts.zoho.com.au';break;case'IN':_0x344775=_0x8f27('0x13');break;case'CN':_0x344775='https://accounts.zoho.com.cn';break;default:_0x344775=_0x8f27('0x14');break;}var _0x3ea2aa={'method':'POST','uri':_0x344775+_0x8f27('0x15'),'form':{'grant_type':'authorization_code','client_id':_0x5e2d98[_0x8f27('0x16')],'client_secret':_0x5e2d98['clientSecret'],'redirect_uri':_0x5e2d98[_0x8f27('0xd')],'code':_0x5e2d98[_0x8f27('0xf')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3ea2aa)['then'](function(_0x27e365){var _0xa304d=JSON[_0x8f27('0x17')](_0x27e365);if(_0xa304d[_0x8f27('0x18')]){_0x5e2d98[_0x8f27('0x19')]=_0xa304d['refresh_token'];logger['info'](util[_0x8f27('0x1a')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5e2d98[_0x8f27('0x1b')],_0x5e2d98['id']));}else{logger['error'](util[_0x8f27('0x1a')](_0x8f27('0x1c'),_0x5e2d98['name'],_0x5e2d98['id']),util[_0x8f27('0x1d')](_0xa304d,{'showHidden':![],'depth':null}));}return _0x4b9ebb(null,_0x1294f8);})[_0x8f27('0x1e')](function(_0x7a32d7){logger[_0x8f27('0x1f')](util[_0x8f27('0x1a')](_0x8f27('0x1c'),_0x5e2d98[_0x8f27('0x1b')],_0x5e2d98['id']),util[_0x8f27('0x1d')](parsedResult,{'showHidden':![],'depth':null}));return _0x4b9ebb(_0x7a32d7);});}else{return _0x4b9ebb(null,_0x1294f8);}},'beforeUpdate':function(_0x945bcf,_0x464c23,_0x2588e7){if(_0x945bcf[_0x8f27('0xb')]('zone')||_0x945bcf['changed'](_0x8f27('0xd'))||_0x945bcf['changed'](_0x8f27('0x16'))||_0x945bcf['changed']('clientSecret')||_0x945bcf['changed'](_0x8f27('0xf'))||_0x945bcf[_0x8f27('0xb')]('host')){var _0x54e2a7,_0x17ab30;_0x54e2a7=_0x945bcf['serverUrl'];var _0x1b9609=_0x54e2a7[_0x8f27('0x20')](-0x1);if(_0x1b9609==='/'||_0x1b9609==='\x5c'||_0x1b9609===':'){_0x54e2a7=_0x54e2a7['substring'](0x0,_0x54e2a7[_0x8f27('0x21')](_0x1b9609));}switch(_0x945bcf[_0x8f27('0xc')]){case'US':_0x17ab30=_0x8f27('0x12');break;case'AU':_0x17ab30=_0x8f27('0x22');break;case'IN':_0x17ab30=_0x8f27('0x13');break;case'CN':_0x17ab30=_0x8f27('0x23');break;default:_0x17ab30='https://accounts.zoho.eu';break;}var _0x503a2a={'method':_0x8f27('0x24'),'uri':_0x17ab30+_0x8f27('0x15'),'form':{'grant_type':_0x8f27('0x25'),'client_id':_0x945bcf['clientId'],'client_secret':_0x945bcf['clientSecret'],'redirect_uri':_0x945bcf['serverUrl'],'code':_0x945bcf[_0x8f27('0xf')]},'headers':{'Content-Type':_0x8f27('0x26')}};return rp(_0x503a2a)['then'](function(_0x322b92){var _0x559cc2=JSON['parse'](_0x322b92);if(_0x559cc2[_0x8f27('0x18')]){_0x945bcf['refreshToken']=_0x559cc2[_0x8f27('0x18')];logger[_0x8f27('0x27')](util['format'](_0x8f27('0x28'),_0x945bcf[_0x8f27('0x1b')],_0x945bcf['id']));}else{logger[_0x8f27('0x1f')](util[_0x8f27('0x1a')](_0x8f27('0x1c'),_0x945bcf[_0x8f27('0x1b')],_0x945bcf['id']),util[_0x8f27('0x1d')](_0x559cc2,{'showHidden':![],'depth':null}));}return _0x2588e7(null,_0x464c23);})[_0x8f27('0x1e')](function(_0x337f9f){logger[_0x8f27('0x1f')](util[_0x8f27('0x1a')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x945bcf[_0x8f27('0x1b')],_0x945bcf['id']),util[_0x8f27('0x1d')](parsedResult,{'showHidden':![],'depth':null}));return _0x2588e7(_0x337f9f);});}else{return _0x2588e7(null,_0x464c23);}}}});}; \ No newline at end of file diff --git a/server/api/intZohoAccount/intZohoAccount.rpc.js b/server/api/intZohoAccount/intZohoAccount.rpc.js new file mode 100644 index 0000000..5cfcdbe --- /dev/null +++ b/server/api/intZohoAccount/intZohoAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe1c4=['result','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','limit','include','map','model','attributes','debug','stringify','ShowZohoAccount','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x445098,_0x2408f5){var _0xe7a955=function(_0x167e4e){while(--_0x167e4e){_0x445098['push'](_0x445098['shift']());}};_0xe7a955(++_0x2408f5);}(_0xe1c4,0x1ec));var _0x4e1c=function(_0x29b84a,_0x11c563){_0x29b84a=_0x29b84a-0x0;var _0x4ad70b=_0xe1c4[_0x29b84a];return _0x4ad70b;};'use strict';var _=require(_0x4e1c('0x0'));var util=require(_0x4e1c('0x1'));var moment=require(_0x4e1c('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4e1c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4e1c('0x4'));var logger=require(_0x4e1c('0x5'))(_0x4e1c('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4e1c('0x7')][_0x4e1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44db21,_0x1c7e52,_0x460295){return new BPromise(function(_0x108830,_0x2622b4){return client[_0x4e1c('0x9')](_0x44db21,_0x460295)[_0x4e1c('0xa')](function(_0x60e98c){logger[_0x4e1c('0xb')](_0x4e1c('0xc'),_0x1c7e52,_0x4e1c('0xd'));logger['debug'](_0x4e1c('0xe'),_0x1c7e52,_0x4e1c('0xd'),JSON['stringify'](_0x60e98c));if(_0x60e98c[_0x4e1c('0xf')]){if(_0x60e98c[_0x4e1c('0xf')][_0x4e1c('0x10')]===0x1f4){logger[_0x4e1c('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x1c7e52,_0x60e98c[_0x4e1c('0xf')][_0x4e1c('0x11')]);return _0x2622b4(_0x60e98c[_0x4e1c('0xf')][_0x4e1c('0x11')]);}logger['error']('ZohoAccount,\x20%s,\x20%s',_0x1c7e52,_0x60e98c['error'][_0x4e1c('0x11')]);return _0x108830(_0x60e98c[_0x4e1c('0xf')][_0x4e1c('0x11')]);}else{logger[_0x4e1c('0xb')]('ZohoAccount,\x20%s,\x20%s',_0x1c7e52,_0x4e1c('0xd'));_0x108830(_0x60e98c[_0x4e1c('0x12')][_0x4e1c('0x11')]);}})[_0x4e1c('0x13')](function(_0x44a842){logger[_0x4e1c('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x1c7e52,_0x44a842);_0x2622b4(_0x44a842);});});}exports[_0x4e1c('0x14')]=function(_0x399bcc){var _0x2af3db=this;return new Promise(function(_0x46a887,_0x116a01){return db[_0x4e1c('0x15')][_0x4e1c('0x16')]({'raw':_0x399bcc['options']?_0x399bcc[_0x4e1c('0x17')][_0x4e1c('0x18')]===undefined?!![]:![]:!![],'where':_0x399bcc[_0x4e1c('0x17')]?_0x399bcc[_0x4e1c('0x17')][_0x4e1c('0x19')]||null:null,'attributes':_0x399bcc[_0x4e1c('0x17')]?_0x399bcc[_0x4e1c('0x17')]['attributes']||null:null,'limit':_0x399bcc[_0x4e1c('0x17')]?_0x399bcc[_0x4e1c('0x17')][_0x4e1c('0x1a')]||null:null,'include':_0x399bcc[_0x4e1c('0x17')]?_0x399bcc[_0x4e1c('0x17')][_0x4e1c('0x1b')]?_[_0x4e1c('0x1c')](_0x399bcc[_0x4e1c('0x17')][_0x4e1c('0x1b')],function(_0x5ada14){return{'model':db[_0x5ada14[_0x4e1c('0x1d')]],'as':_0x5ada14['as'],'attributes':_0x5ada14[_0x4e1c('0x1e')],'include':_0x5ada14[_0x4e1c('0x1b')]?_['map'](_0x5ada14['include'],function(_0x17f5a5){return{'model':db[_0x17f5a5['model']],'as':_0x17f5a5['as'],'attributes':_0x17f5a5[_0x4e1c('0x1e')],'include':_0x17f5a5[_0x4e1c('0x1b')]?_[_0x4e1c('0x1c')](_0x17f5a5[_0x4e1c('0x1b')],function(_0x12364d){return{'model':db[_0x12364d[_0x4e1c('0x1d')]],'as':_0x12364d['as'],'attributes':_0x12364d['attributes']};}):[]};}):[]};}):[]:[]})[_0x4e1c('0xa')](function(_0x2526a6){logger[_0x4e1c('0xb')](_0x4e1c('0x14'),_0x399bcc);logger[_0x4e1c('0x1f')]('GetZohoAccount',_0x399bcc,JSON[_0x4e1c('0x20')](_0x2526a6));_0x46a887(_0x2526a6);})[_0x4e1c('0x13')](function(_0x1b5ba8){logger[_0x4e1c('0xf')]('GetZohoAccount',_0x1b5ba8[_0x4e1c('0x11')],_0x399bcc);_0x116a01(_0x2af3db[_0x4e1c('0xf')](0x1f4,_0x1b5ba8['message']));});});};exports[_0x4e1c('0x21')]=function(_0x5ae521){var _0x88df92=this;return new Promise(function(_0x3c007f,_0x39f8fc){return db[_0x4e1c('0x15')]['find']({'raw':_0x5ae521[_0x4e1c('0x17')]?_0x5ae521['options'][_0x4e1c('0x18')]===undefined?!![]:![]:!![],'where':_0x5ae521['options']?_0x5ae521[_0x4e1c('0x17')][_0x4e1c('0x19')]||null:null,'attributes':_0x5ae521['options']?_0x5ae521[_0x4e1c('0x17')]['attributes']||null:null,'include':_0x5ae521[_0x4e1c('0x17')]?_0x5ae521[_0x4e1c('0x17')][_0x4e1c('0x1b')]?_[_0x4e1c('0x1c')](_0x5ae521[_0x4e1c('0x17')][_0x4e1c('0x1b')],function(_0x44477f){return{'model':db[_0x44477f[_0x4e1c('0x1d')]],'as':_0x44477f['as'],'attributes':_0x44477f[_0x4e1c('0x1e')],'include':_0x44477f[_0x4e1c('0x1b')]?_['map'](_0x44477f[_0x4e1c('0x1b')],function(_0x35763f){return{'model':db[_0x35763f[_0x4e1c('0x1d')]],'as':_0x35763f['as'],'attributes':_0x35763f[_0x4e1c('0x1e')],'include':_0x35763f[_0x4e1c('0x1b')]?_[_0x4e1c('0x1c')](_0x35763f['include'],function(_0x545d6b){return{'model':db[_0x545d6b[_0x4e1c('0x1d')]],'as':_0x545d6b['as'],'attributes':_0x545d6b[_0x4e1c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4e1c('0xa')](function(_0x4365eb){logger['info'](_0x4e1c('0x21'),_0x5ae521);logger[_0x4e1c('0x1f')]('ShowZohoAccount',_0x5ae521,JSON[_0x4e1c('0x20')](_0x4365eb));_0x3c007f(_0x4365eb);})[_0x4e1c('0x13')](function(_0x729915){logger['error'](_0x4e1c('0x21'),_0x729915[_0x4e1c('0x11')],_0x5ae521);_0x39f8fc(_0x88df92['error'](0x1f4,_0x729915[_0x4e1c('0x11')]));});});}; \ No newline at end of file diff --git a/server/api/intZohoConfiguration/index.js b/server/api/intZohoConfiguration/index.js new file mode 100644 index 0000000..88b8323 --- /dev/null +++ b/server/api/intZohoConfiguration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0d79=['/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoConfiguration.controller','get','isAuthenticated','index'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x0d79,0x1ed));var _0x90d7=function(_0x227bfa,_0x51bedc){_0x227bfa=_0x227bfa-0x0;var _0x331aba=_0x0d79[_0x227bfa];return _0x331aba;};'use strict';var multer=require(_0x90d7('0x0'));var util=require(_0x90d7('0x1'));var path=require('path');var timeout=require(_0x90d7('0x2'));var express=require(_0x90d7('0x3'));var router=express['Router']();var fs_extra=require(_0x90d7('0x4'));var auth=require(_0x90d7('0x5'));var interaction=require(_0x90d7('0x6'));var config=require('../../config/environment');var controller=require(_0x90d7('0x7'));router[_0x90d7('0x8')]('/',auth[_0x90d7('0x9')](),controller[_0x90d7('0xa')]);router[_0x90d7('0x8')](_0x90d7('0xb'),auth[_0x90d7('0x9')](),controller[_0x90d7('0xc')]);router[_0x90d7('0x8')](_0x90d7('0xd'),auth[_0x90d7('0x9')](),controller[_0x90d7('0xe')]);router['get']('/:id/subjects',auth[_0x90d7('0x9')](),controller[_0x90d7('0xf')]);router[_0x90d7('0x8')](_0x90d7('0x10'),auth[_0x90d7('0x9')](),controller[_0x90d7('0x11')]);router['post']('/',auth[_0x90d7('0x9')](),controller[_0x90d7('0x12')]);router[_0x90d7('0x13')](_0x90d7('0xb'),auth[_0x90d7('0x9')](),controller[_0x90d7('0x14')]);router[_0x90d7('0x15')]('/:id',auth[_0x90d7('0x9')](),controller[_0x90d7('0x16')]);module[_0x90d7('0x17')]=router; \ No newline at end of file diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js b/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js new file mode 100644 index 0000000..07def24 --- /dev/null +++ b/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa81a=['contact','STRING','sequelize','exports','ENUM','lead','contact_lead'];(function(_0x405c7e,_0x264502){var _0x3fa7d9=function(_0x514ee3){while(--_0x514ee3){_0x405c7e['push'](_0x405c7e['shift']());}};_0x3fa7d9(++_0x264502);}(_0xa81a,0xbf));var _0xaa81=function(_0x499140,_0x4c602c){_0x499140=_0x499140-0x0;var _0x4db9ec=_0xa81a[_0x499140];return _0x4db9ec;};'use strict';var Sequelize=require(_0xaa81('0x0'));module[_0xaa81('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xaa81('0x2')](_0xaa81('0x3'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xaa81('0x2')](_0xaa81('0x4'),_0xaa81('0x5'),_0xaa81('0x3')),'defaultValue':_0xaa81('0x4')},'description':{'type':Sequelize[_0xaa81('0x6')]}}; \ No newline at end of file diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.controller.js b/server/api/intZohoConfiguration/intZohoConfiguration.controller.js new file mode 100644 index 0000000..547e95c --- /dev/null +++ b/server/api/intZohoConfiguration/intZohoConfiguration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x968f=['catch','show','params','keys','length','merge','find','create','body','findOne','ZohoField','order','pick','nolimit','getSubjects','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','filter','type','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x3ff4c5,_0x588233){var _0x27904=function(_0x38f02c){while(--_0x38f02c){_0x3ff4c5['push'](_0x3ff4c5['shift']());}};_0x27904(++_0x588233);}(_0x968f,0x15c));var _0xf968=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x968f[_0x2641f9];return _0x585741;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf968('0x0'));var jsonpatch=require(_0xf968('0x1'));var rp=require(_0xf968('0x2'));var moment=require(_0xf968('0x3'));var BPromise=require(_0xf968('0x4'));var Mustache=require(_0xf968('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf968('0x6'));var csv=require(_0xf968('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf968('0x8'));var _=require(_0xf968('0x9'));var squel=require(_0xf968('0xa'));var crypto=require(_0xf968('0xb'));var jsforce=require(_0xf968('0xc'));var deskjs=require(_0xf968('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf968('0xe'));var Papa=require(_0xf968('0xf'));var Redis=require(_0xf968('0x10'));var authService=require(_0xf968('0x11'));var qs=require(_0xf968('0x12'));var as=require(_0xf968('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf968('0x14'))('api');var utils=require(_0xf968('0x15'));var config=require(_0xf968('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf968('0x17'))['db'];function respondWithStatusCode(_0x42d86f,_0x574e8a){_0x574e8a=_0x574e8a||0xcc;return function(_0x1f7af0){if(_0x1f7af0){return _0x42d86f[_0xf968('0x18')](_0x574e8a);}return _0x42d86f['status'](_0x574e8a)[_0xf968('0x19')]();};}function respondWithResult(_0x515bb9,_0x3e2154){_0x3e2154=_0x3e2154||0xc8;return function(_0x24a50f){if(_0x24a50f){return _0x515bb9[_0xf968('0x1a')](_0x3e2154)[_0xf968('0x1b')](_0x24a50f);}};}function respondWithFilteredResult(_0xca960d,_0x1ea7b4){return function(_0xe5cc0c){if(_0xe5cc0c){var _0x331795=typeof _0x1ea7b4[_0xf968('0x1c')]===_0xf968('0x1d')&&typeof _0x1ea7b4[_0xf968('0x1e')]===_0xf968('0x1d');var _0x371d50=_0xe5cc0c[_0xf968('0x1f')];var _0x5ebe2e=_0x331795?0x0:_0x1ea7b4['offset'];var _0x5556fc=_0x331795?_0xe5cc0c[_0xf968('0x1f')]:_0x1ea7b4[_0xf968('0x1c')]+_0x1ea7b4[_0xf968('0x1e')];var _0x575d81;if(_0x5556fc>=_0x371d50){_0x5556fc=_0x371d50;_0x575d81=0xc8;}else{_0x575d81=0xce;}_0xca960d[_0xf968('0x1a')](_0x575d81);return _0xca960d[_0xf968('0x20')](_0xf968('0x21'),_0x5ebe2e+'-'+_0x5556fc+'/'+_0x371d50)[_0xf968('0x1b')](_0xe5cc0c);}return null;};}function patchUpdates(_0x4f0412){return function(_0x21fb00){try{jsonpatch[_0xf968('0x22')](_0x21fb00,_0x4f0412,!![]);}catch(_0x4792be){return BPromise[_0xf968('0x23')](_0x4792be);}return _0x21fb00[_0xf968('0x24')]();};}function saveUpdates(_0x2b232e,_0x40c524){return function(_0x600a40){if(_0x600a40){return _0x600a40[_0xf968('0x25')](_0x2b232e)[_0xf968('0x26')](function(_0x5efcd8){return _0x5efcd8;});}return null;};}function removeEntity(_0xfedddf,_0x28679b){return function(_0x39f5b3){if(_0x39f5b3){return _0x39f5b3[_0xf968('0x27')]()[_0xf968('0x26')](function(){_0xfedddf[_0xf968('0x1a')](0xcc)[_0xf968('0x19')]();});}};}function handleEntityNotFound(_0x3e3b37,_0x41a33b){return function(_0x1c21bc){if(!_0x1c21bc){_0x3e3b37['sendStatus'](0x194);}return _0x1c21bc;};}function handleError(_0x370fe0,_0x5887c2){_0x5887c2=_0x5887c2||0x1f4;return function(_0x1763db){logger[_0xf968('0x28')](_0x1763db[_0xf968('0x29')]);if(_0x1763db[_0xf968('0x2a')]){delete _0x1763db[_0xf968('0x2a')];}_0x370fe0[_0xf968('0x1a')](_0x5887c2)[_0xf968('0x2b')](_0x1763db);};}exports[_0xf968('0x2c')]=function(_0x373520,_0x331474){var _0x1af266={},_0x4b16f5={},_0x24a2f5={'count':0x0,'rows':[]};var _0x4e82a0=_[_0xf968('0x2d')](db[_0xf968('0x2e')][_0xf968('0x2f')],function(_0xeede48){return{'name':_0xeede48[_0xf968('0x30')],'type':_0xeede48['type'][_0xf968('0x31')]};});_0x4b16f5[_0xf968('0x32')]=_['map'](_0x4e82a0,_0xf968('0x2a'));_0x4b16f5[_0xf968('0x33')]=_['keys'](_0x373520[_0xf968('0x33')]);_0x4b16f5[_0xf968('0x34')]=_[_0xf968('0x35')](_0x4b16f5['model'],_0x4b16f5[_0xf968('0x33')]);_0x1af266[_0xf968('0x36')]=_['intersection'](_0x4b16f5[_0xf968('0x32')],qs[_0xf968('0x37')](_0x373520['query']['fields']));_0x1af266[_0xf968('0x36')]=_0x1af266[_0xf968('0x36')]['length']?_0x1af266[_0xf968('0x36')]:_0x4b16f5[_0xf968('0x32')];if(!_0x373520[_0xf968('0x33')][_0xf968('0x38')]('nolimit')){_0x1af266[_0xf968('0x1e')]=qs[_0xf968('0x1e')](_0x373520[_0xf968('0x33')][_0xf968('0x1e')]);_0x1af266[_0xf968('0x1c')]=qs[_0xf968('0x1c')](_0x373520[_0xf968('0x33')]['offset']);}_0x1af266['order']=qs['sort'](_0x373520['query'][_0xf968('0x39')]);_0x1af266[_0xf968('0x3a')]=qs[_0xf968('0x34')](_['pick'](_0x373520[_0xf968('0x33')],_0x4b16f5[_0xf968('0x34')]),_0x4e82a0);if(_0x373520[_0xf968('0x33')][_0xf968('0x3b')]){_0x1af266['where']=_['merge'](_0x1af266[_0xf968('0x3a')],{'$or':_['map'](_0x4e82a0,function(_0x4022ca){if(_0x4022ca[_0xf968('0x3c')]!==_0xf968('0x3d')){var _0x10c9de={};_0x10c9de[_0x4022ca[_0xf968('0x2a')]]={'$like':'%'+_0x373520[_0xf968('0x33')][_0xf968('0x3b')]+'%'};return _0x10c9de;}})});}_0x1af266=_['merge']({},_0x1af266,_0x373520[_0xf968('0x3e')]);var _0x1a1f59={'where':_0x1af266[_0xf968('0x3a')]};return db[_0xf968('0x2e')]['count'](_0x1a1f59)[_0xf968('0x26')](function(_0x53a379){_0x24a2f5[_0xf968('0x1f')]=_0x53a379;if(_0x373520[_0xf968('0x33')][_0xf968('0x3f')]){_0x1af266[_0xf968('0x40')]=[{'all':!![]}];}return db[_0xf968('0x2e')][_0xf968('0x41')](_0x1af266);})['then'](function(_0x5cad4c){_0x24a2f5[_0xf968('0x42')]=_0x5cad4c;return _0x24a2f5;})['then'](respondWithFilteredResult(_0x331474,_0x1af266))[_0xf968('0x43')](handleError(_0x331474,null));};exports[_0xf968('0x44')]=function(_0x34a4cc,_0x5b1e2b){var _0x278a48={'raw':![],'where':{'id':_0x34a4cc[_0xf968('0x45')]['id']}},_0x47c1dd={};_0x47c1dd[_0xf968('0x32')]=_[_0xf968('0x46')](db[_0xf968('0x2e')][_0xf968('0x2f')]);_0x47c1dd[_0xf968('0x33')]=_['keys'](_0x34a4cc[_0xf968('0x33')]);_0x47c1dd[_0xf968('0x34')]=_['intersection'](_0x47c1dd[_0xf968('0x32')],_0x47c1dd[_0xf968('0x33')]);_0x278a48[_0xf968('0x36')]=_[_0xf968('0x35')](_0x47c1dd[_0xf968('0x32')],qs[_0xf968('0x37')](_0x34a4cc[_0xf968('0x33')][_0xf968('0x37')]));_0x278a48[_0xf968('0x36')]=_0x278a48[_0xf968('0x36')][_0xf968('0x47')]?_0x278a48[_0xf968('0x36')]:_0x47c1dd[_0xf968('0x32')];if(_0x34a4cc[_0xf968('0x33')]['includeAll']){_0x278a48[_0xf968('0x40')]=[{'all':!![]}];}_0x278a48=_[_0xf968('0x48')]({},_0x278a48,_0x34a4cc[_0xf968('0x3e')]);return db[_0xf968('0x2e')][_0xf968('0x49')](_0x278a48)[_0xf968('0x26')](handleEntityNotFound(_0x5b1e2b,null))[_0xf968('0x26')](respondWithResult(_0x5b1e2b,null))['catch'](handleError(_0x5b1e2b,null));};exports['create']=function(_0x402034,_0x250cfc){return db['ZohoConfiguration'][_0xf968('0x4a')](_0x402034[_0xf968('0x4b')],{})[_0xf968('0x26')](respondWithResult(_0x250cfc,0xc9))['catch'](handleError(_0x250cfc,null));};exports['update']=function(_0x2bac49,_0x3ae505){if(_0x2bac49[_0xf968('0x4b')]['id']){delete _0x2bac49[_0xf968('0x4b')]['id'];}return db[_0xf968('0x2e')][_0xf968('0x49')]({'where':{'id':_0x2bac49[_0xf968('0x45')]['id']}})[_0xf968('0x26')](handleEntityNotFound(_0x3ae505,null))[_0xf968('0x26')](saveUpdates(_0x2bac49[_0xf968('0x4b')],null))['then'](respondWithResult(_0x3ae505,null))[_0xf968('0x43')](handleError(_0x3ae505,null));};exports[_0xf968('0x27')]=function(_0x247372,_0x24e93e){return db[_0xf968('0x2e')]['find']({'where':{'id':_0x247372[_0xf968('0x45')]['id']}})[_0xf968('0x26')](handleEntityNotFound(_0x24e93e,null))['then'](removeEntity(_0x24e93e,null))[_0xf968('0x43')](handleError(_0x24e93e,null));};exports['getFields']=function(_0x5a3650,_0x2d171c,_0x4382a0){var _0x4c9c84={};var _0x4eac98={};var _0x842d78;var _0x2cc0b0;return db[_0xf968('0x2e')][_0xf968('0x4c')]({'where':{'id':_0x5a3650[_0xf968('0x45')]['id']}})['then'](handleEntityNotFound(_0x2d171c,null))['then'](function(_0x53e31b){if(_0x53e31b){_0x842d78=_0x53e31b;_0x4eac98[_0xf968('0x32')]=_[_0xf968('0x46')](db[_0xf968('0x4d')][_0xf968('0x2f')]);_0x4eac98[_0xf968('0x33')]=_[_0xf968('0x46')](_0x5a3650['query']);_0x4eac98['filters']=_[_0xf968('0x35')](_0x4eac98['model'],_0x4eac98[_0xf968('0x33')]);_0x4c9c84['attributes']=_['intersection'](_0x4eac98[_0xf968('0x32')],qs[_0xf968('0x37')](_0x5a3650[_0xf968('0x33')][_0xf968('0x37')]));_0x4c9c84[_0xf968('0x36')]=_0x4c9c84[_0xf968('0x36')][_0xf968('0x47')]?_0x4c9c84['attributes']:_0x4eac98[_0xf968('0x32')];_0x4c9c84[_0xf968('0x4e')]=qs['sort'](_0x5a3650[_0xf968('0x33')][_0xf968('0x39')]);_0x4c9c84[_0xf968('0x3a')]=qs[_0xf968('0x34')](_[_0xf968('0x4f')](_0x5a3650[_0xf968('0x33')],_0x4eac98[_0xf968('0x34')]));if(_0x5a3650[_0xf968('0x33')][_0xf968('0x3b')]){_0x4c9c84[_0xf968('0x3a')]=_[_0xf968('0x48')](_0x4c9c84[_0xf968('0x3a')],{'$or':_[_0xf968('0x2d')](_0x4c9c84['attributes'],function(_0x37c283){var _0x2cbca2={};_0x2cbca2[_0x37c283]={'$like':'%'+_0x5a3650[_0xf968('0x33')][_0xf968('0x3b')]+'%'};return _0x2cbca2;})});}_0x4c9c84=_[_0xf968('0x48')]({},_0x4c9c84,_0x5a3650[_0xf968('0x3e')]);return _0x842d78['getFields'](_0x4c9c84);}})[_0xf968('0x26')](function(_0x2e5edc){if(_0x2e5edc){_0x2cc0b0=_0x2e5edc[_0xf968('0x47')];if(!_0x5a3650[_0xf968('0x33')][_0xf968('0x38')](_0xf968('0x50'))){_0x4c9c84['limit']=qs[_0xf968('0x1e')](_0x5a3650[_0xf968('0x33')]['limit']);_0x4c9c84[_0xf968('0x1c')]=qs[_0xf968('0x1c')](_0x5a3650['query']['offset']);}return _0x842d78['getFields'](_0x4c9c84);}})['then'](function(_0x572a51){if(_0x572a51){return _0x572a51?{'count':_0x2cc0b0,'rows':_0x572a51}:null;}})['then'](respondWithResult(_0x2d171c,null))['catch'](handleError(_0x2d171c,null));};exports[_0xf968('0x51')]=function(_0x1e9d8e,_0x3b21a5,_0x2c8d07){var _0x1c72c1={};var _0x7ce80d={};var _0x59b0ab;var _0x1ad45a;return db['ZohoConfiguration'][_0xf968('0x4c')]({'where':{'id':_0x1e9d8e[_0xf968('0x45')]['id']}})[_0xf968('0x26')](handleEntityNotFound(_0x3b21a5,null))['then'](function(_0x940840){if(_0x940840){_0x59b0ab=_0x940840;_0x7ce80d[_0xf968('0x32')]=_[_0xf968('0x46')](db[_0xf968('0x4d')]['rawAttributes']);_0x7ce80d[_0xf968('0x33')]=_[_0xf968('0x46')](_0x1e9d8e[_0xf968('0x33')]);_0x7ce80d[_0xf968('0x34')]=_[_0xf968('0x35')](_0x7ce80d['model'],_0x7ce80d[_0xf968('0x33')]);_0x1c72c1[_0xf968('0x36')]=_['intersection'](_0x7ce80d['model'],qs[_0xf968('0x37')](_0x1e9d8e['query'][_0xf968('0x37')]));_0x1c72c1[_0xf968('0x36')]=_0x1c72c1['attributes']['length']?_0x1c72c1[_0xf968('0x36')]:_0x7ce80d[_0xf968('0x32')];_0x1c72c1[_0xf968('0x4e')]=qs['sort'](_0x1e9d8e['query'][_0xf968('0x39')]);_0x1c72c1['where']=qs[_0xf968('0x34')](_[_0xf968('0x4f')](_0x1e9d8e['query'],_0x7ce80d[_0xf968('0x34')]));if(_0x1e9d8e['query'][_0xf968('0x3b')]){_0x1c72c1[_0xf968('0x3a')]=_['merge'](_0x1c72c1['where'],{'$or':_[_0xf968('0x2d')](_0x1c72c1['attributes'],function(_0x198be0){var _0x46e1f3={};_0x46e1f3[_0x198be0]={'$like':'%'+_0x1e9d8e[_0xf968('0x33')][_0xf968('0x3b')]+'%'};return _0x46e1f3;})});}_0x1c72c1=_['merge']({},_0x1c72c1,_0x1e9d8e[_0xf968('0x3e')]);return _0x59b0ab['getSubjects'](_0x1c72c1);}})['then'](function(_0x4020b7){if(_0x4020b7){_0x1ad45a=_0x4020b7[_0xf968('0x47')];if(!_0x1e9d8e[_0xf968('0x33')]['hasOwnProperty']('nolimit')){_0x1c72c1['limit']=qs['limit'](_0x1e9d8e[_0xf968('0x33')][_0xf968('0x1e')]);_0x1c72c1['offset']=qs['offset'](_0x1e9d8e[_0xf968('0x33')][_0xf968('0x1c')]);}return _0x59b0ab[_0xf968('0x51')](_0x1c72c1);}})[_0xf968('0x26')](function(_0x26ad71){if(_0x26ad71){return _0x26ad71?{'count':_0x1ad45a,'rows':_0x26ad71}:null;}})[_0xf968('0x26')](respondWithResult(_0x3b21a5,null))[_0xf968('0x43')](handleError(_0x3b21a5,null));};exports[_0xf968('0x52')]=function(_0x4d8eb1,_0x2135dd,_0x10652d){var _0x22be87={};var _0x4624ca={};var _0x4fef6b;var _0x3c9bcd;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x4d8eb1[_0xf968('0x45')]['id']}})[_0xf968('0x26')](handleEntityNotFound(_0x2135dd,null))[_0xf968('0x26')](function(_0x5170db){if(_0x5170db){_0x4fef6b=_0x5170db;_0x4624ca['model']=_[_0xf968('0x46')](db[_0xf968('0x4d')][_0xf968('0x2f')]);_0x4624ca[_0xf968('0x33')]=_[_0xf968('0x46')](_0x4d8eb1[_0xf968('0x33')]);_0x4624ca[_0xf968('0x34')]=_[_0xf968('0x35')](_0x4624ca[_0xf968('0x32')],_0x4624ca['query']);_0x22be87[_0xf968('0x36')]=_['intersection'](_0x4624ca['model'],qs['fields'](_0x4d8eb1[_0xf968('0x33')][_0xf968('0x37')]));_0x22be87[_0xf968('0x36')]=_0x22be87[_0xf968('0x36')][_0xf968('0x47')]?_0x22be87[_0xf968('0x36')]:_0x4624ca['model'];_0x22be87['order']=qs['sort'](_0x4d8eb1[_0xf968('0x33')][_0xf968('0x39')]);_0x22be87[_0xf968('0x3a')]=qs[_0xf968('0x34')](_[_0xf968('0x4f')](_0x4d8eb1['query'],_0x4624ca[_0xf968('0x34')]));if(_0x4d8eb1[_0xf968('0x33')][_0xf968('0x3b')]){_0x22be87[_0xf968('0x3a')]=_['merge'](_0x22be87['where'],{'$or':_['map'](_0x22be87[_0xf968('0x36')],function(_0x40810d){var _0x16cd25={};_0x16cd25[_0x40810d]={'$like':'%'+_0x4d8eb1['query'][_0xf968('0x3b')]+'%'};return _0x16cd25;})});}_0x22be87=_[_0xf968('0x48')]({},_0x22be87,_0x4d8eb1['options']);return _0x4fef6b[_0xf968('0x52')](_0x22be87);}})[_0xf968('0x26')](function(_0x92807a){if(_0x92807a){_0x3c9bcd=_0x92807a['length'];if(!_0x4d8eb1[_0xf968('0x33')][_0xf968('0x38')]('nolimit')){_0x22be87['limit']=qs[_0xf968('0x1e')](_0x4d8eb1[_0xf968('0x33')][_0xf968('0x1e')]);_0x22be87['offset']=qs[_0xf968('0x1c')](_0x4d8eb1[_0xf968('0x33')]['offset']);}return _0x4fef6b[_0xf968('0x52')](_0x22be87);}})[_0xf968('0x26')](function(_0x276d78){if(_0x276d78){return _0x276d78?{'count':_0x3c9bcd,'rows':_0x276d78}:null;}})[_0xf968('0x26')](respondWithResult(_0x2135dd,null))['catch'](handleError(_0x2135dd,null));}; \ No newline at end of file diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.model.js b/server/api/intZohoConfiguration/intZohoConfiguration.model.js new file mode 100644 index 0000000..6d7bc46 --- /dev/null +++ b/server/api/intZohoConfiguration/intZohoConfiguration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x74c0=['exports','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','moment','request-promise','path','rimraf','./intZohoConfiguration.attributes'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x74c0,0x1ed));var _0x074c=function(_0x38e870,_0x3d2e6a){_0x38e870=_0x38e870-0x0;var _0x2dabbe=_0x74c0[_0x38e870];return _0x2dabbe;};'use strict';var _=require(_0x074c('0x0'));var util=require('util');var logger=require(_0x074c('0x1'))('api');var moment=require(_0x074c('0x2'));var BPromise=require('bluebird');var rp=require(_0x074c('0x3'));var fs=require('fs');var path=require(_0x074c('0x4'));var rimraf=require(_0x074c('0x5'));var config=require('../../config/environment');var attributes=require(_0x074c('0x6'));module[_0x074c('0x7')]=function(_0x186363,_0x2d3073){return _0x186363['define'](_0x074c('0x8'),attributes,{'tableName':_0x074c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js b/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js new file mode 100644 index 0000000..56bb626 --- /dev/null +++ b/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf35d=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch'];(function(_0xc71aad,_0x3b6646){var _0x183565=function(_0x3a56d0){while(--_0x3a56d0){_0xc71aad['push'](_0xc71aad['shift']());}};_0x183565(++_0x3b6646);}(_0xf35d,0xfd));var _0xdf35=function(_0x5df893,_0x224811){_0x5df893=_0x5df893-0x0;var _0x4f6a21=_0xf35d[_0x5df893];return _0x4f6a21;};'use strict';var _=require(_0xdf35('0x0'));var util=require('util');var moment=require(_0xdf35('0x1'));var BPromise=require(_0xdf35('0x2'));var rs=require(_0xdf35('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf35('0x4'))['db'];var utils=require(_0xdf35('0x5'));var logger=require(_0xdf35('0x6'))(_0xdf35('0x7'));var config=require('../../config/environment');var jayson=require(_0xdf35('0x8'));var client=jayson[_0xdf35('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b797e,_0x101c3c,_0x2a07ab){return new BPromise(function(_0x41d9d3,_0x43a70e){return client[_0xdf35('0xa')](_0x1b797e,_0x2a07ab)[_0xdf35('0xb')](function(_0x3a37ed){logger['info'](_0xdf35('0xc'),_0x101c3c,'request\x20sent');logger[_0xdf35('0xd')](_0xdf35('0xe'),_0x101c3c,'request\x20sent',JSON[_0xdf35('0xf')](_0x3a37ed));if(_0x3a37ed['error']){if(_0x3a37ed[_0xdf35('0x10')][_0xdf35('0x11')]===0x1f4){logger[_0xdf35('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x101c3c,_0x3a37ed[_0xdf35('0x10')]['message']);return _0x43a70e(_0x3a37ed[_0xdf35('0x10')][_0xdf35('0x12')]);}logger[_0xdf35('0x10')](_0xdf35('0xc'),_0x101c3c,_0x3a37ed[_0xdf35('0x10')][_0xdf35('0x12')]);return _0x41d9d3(_0x3a37ed['error']['message']);}else{logger[_0xdf35('0x13')](_0xdf35('0xc'),_0x101c3c,_0xdf35('0x14'));_0x41d9d3(_0x3a37ed[_0xdf35('0x15')][_0xdf35('0x12')]);}})[_0xdf35('0x16')](function(_0x4363a5){logger[_0xdf35('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x101c3c,_0x4363a5);_0x43a70e(_0x4363a5);});});} \ No newline at end of file diff --git a/server/api/intZohoField/index.js b/server/api/intZohoField/index.js new file mode 100644 index 0000000..0d5b91e --- /dev/null +++ b/server/api/intZohoField/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf6f4=['./intZohoField.controller','isAuthenticated','index','get','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4f8e27,_0xc63503){var _0x34f479=function(_0x3ff982){while(--_0x3ff982){_0x4f8e27['push'](_0x4f8e27['shift']());}};_0x34f479(++_0xc63503);}(_0xf6f4,0x16e));var _0x4f6f=function(_0x5d5c9f,_0x816f20){_0x5d5c9f=_0x5d5c9f-0x0;var _0xc43d43=_0xf6f4[_0x5d5c9f];return _0xc43d43;};'use strict';var multer=require(_0x4f6f('0x0'));var util=require(_0x4f6f('0x1'));var path=require(_0x4f6f('0x2'));var timeout=require(_0x4f6f('0x3'));var express=require(_0x4f6f('0x4'));var router=express[_0x4f6f('0x5')]();var fs_extra=require(_0x4f6f('0x6'));var auth=require(_0x4f6f('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4f6f('0x8'));router['get']('/',auth[_0x4f6f('0x9')](),controller[_0x4f6f('0xa')]);router[_0x4f6f('0xb')](_0x4f6f('0xc'),auth[_0x4f6f('0x9')](),controller['show']);router['post']('/',auth[_0x4f6f('0x9')](),controller['create']);router['put']('/:id',auth[_0x4f6f('0x9')](),controller[_0x4f6f('0xd')]);router[_0x4f6f('0xe')](_0x4f6f('0xc'),auth[_0x4f6f('0x9')](),controller[_0x4f6f('0xf')]);module[_0x4f6f('0x10')]=router; \ No newline at end of file diff --git a/server/api/intZohoField/intZohoField.attributes.js b/server/api/intZohoField/intZohoField.attributes.js new file mode 100644 index 0000000..4b86905 --- /dev/null +++ b/server/api/intZohoField/intZohoField.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3242=['string','variable','customVariable','keyValue','STRING','sequelize','ENUM'];(function(_0x40cfda,_0x22266e){var _0x2c840e=function(_0x25f8bf){while(--_0x25f8bf){_0x40cfda['push'](_0x40cfda['shift']());}};_0x2c840e(++_0x22266e);}(_0x3242,0x1b0));var _0x2324=function(_0x3a88a2,_0x4d1357){_0x3a88a2=_0x3a88a2-0x0;var _0x10fb3b=_0x3242[_0x3a88a2];return _0x10fb3b;};'use strict';var Sequelize=require(_0x2324('0x0'));module['exports']={'type':{'type':Sequelize[_0x2324('0x1')](_0x2324('0x2'),_0x2324('0x3'),_0x2324('0x4'),_0x2324('0x5'),'picklist'),'defaultValue':_0x2324('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x2324('0x1')](_0x2324('0x2'),'variable',_0x2324('0x4'))},'keyContent':{'type':Sequelize[_0x2324('0x6')]},'idField':{'type':Sequelize[_0x2324('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2324('0x6')]}}; \ No newline at end of file diff --git a/server/api/intZohoField/intZohoField.controller.js b/server/api/intZohoField/intZohoField.controller.js new file mode 100644 index 0000000..f6b22ab --- /dev/null +++ b/server/api/intZohoField/intZohoField.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9ff8=['count','set','reject','update','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','order','pick','where','VIRTUAL','filter','merge','options','ZohoField','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined'];(function(_0x1a6da6,_0x5cc397){var _0x56ed97=function(_0x237167){while(--_0x237167){_0x1a6da6['push'](_0x1a6da6['shift']());}};_0x56ed97(++_0x5cc397);}(_0x9ff8,0x74));var _0x89ff=function(_0x345ddb,_0x4f3689){_0x345ddb=_0x345ddb-0x0;var _0x2d3bc8=_0x9ff8[_0x345ddb];return _0x2d3bc8;};'use strict';var emlformat=require(_0x89ff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x89ff('0x1'));var jsonpatch=require(_0x89ff('0x2'));var rp=require(_0x89ff('0x3'));var moment=require(_0x89ff('0x4'));var BPromise=require(_0x89ff('0x5'));var Mustache=require('mustache');var util=require(_0x89ff('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x89ff('0x7'));var fs=require('fs');var fs_extra=require(_0x89ff('0x8'));var _=require('lodash');var squel=require(_0x89ff('0x9'));var crypto=require(_0x89ff('0xa'));var jsforce=require(_0x89ff('0xb'));var deskjs=require(_0x89ff('0xc'));var toCsv=require(_0x89ff('0xd'));var querystring=require(_0x89ff('0xe'));var Papa=require(_0x89ff('0xf'));var Redis=require(_0x89ff('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x89ff('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x89ff('0x12'));var logger=require('../../config/logger')(_0x89ff('0x13'));var utils=require(_0x89ff('0x14'));var config=require(_0x89ff('0x15'));var licenseUtil=require(_0x89ff('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1bff5e,_0x129685){_0x129685=_0x129685||0xcc;return function(_0x54a456){if(_0x54a456){return _0x1bff5e[_0x89ff('0x17')](_0x129685);}return _0x1bff5e[_0x89ff('0x18')](_0x129685)[_0x89ff('0x19')]();};}function respondWithResult(_0x1aa2ad,_0x3867f8){_0x3867f8=_0x3867f8||0xc8;return function(_0x52b1c6){if(_0x52b1c6){return _0x1aa2ad[_0x89ff('0x18')](_0x3867f8)[_0x89ff('0x1a')](_0x52b1c6);}};}function respondWithFilteredResult(_0x50a7ae,_0x58fe06){return function(_0x107424){if(_0x107424){var _0x23d0e8=typeof _0x58fe06[_0x89ff('0x1b')]==='undefined'&&typeof _0x58fe06[_0x89ff('0x1c')]===_0x89ff('0x1d');var _0x1e8602=_0x107424[_0x89ff('0x1e')];var _0x2a21cb=_0x23d0e8?0x0:_0x58fe06[_0x89ff('0x1b')];var _0x6c747c=_0x23d0e8?_0x107424[_0x89ff('0x1e')]:_0x58fe06[_0x89ff('0x1b')]+_0x58fe06['limit'];var _0x5de24f;if(_0x6c747c>=_0x1e8602){_0x6c747c=_0x1e8602;_0x5de24f=0xc8;}else{_0x5de24f=0xce;}_0x50a7ae[_0x89ff('0x18')](_0x5de24f);return _0x50a7ae[_0x89ff('0x1f')]('Content-Range',_0x2a21cb+'-'+_0x6c747c+'/'+_0x1e8602)[_0x89ff('0x1a')](_0x107424);}return null;};}function patchUpdates(_0x3f0767){return function(_0x48f4c9){try{jsonpatch['apply'](_0x48f4c9,_0x3f0767,!![]);}catch(_0x1513c7){return BPromise[_0x89ff('0x20')](_0x1513c7);}return _0x48f4c9['save']();};}function saveUpdates(_0x4caae0,_0x452ca2){return function(_0x151153){if(_0x151153){return _0x151153[_0x89ff('0x21')](_0x4caae0)['then'](function(_0x822ba2){return _0x822ba2;});}return null;};}function removeEntity(_0x25d343,_0x1925df){return function(_0x5160fe){if(_0x5160fe){return _0x5160fe[_0x89ff('0x22')]()['then'](function(){_0x25d343[_0x89ff('0x18')](0xcc)[_0x89ff('0x19')]();});}};}function handleEntityNotFound(_0x1c5474,_0x3e2a11){return function(_0x55e103){if(!_0x55e103){_0x1c5474[_0x89ff('0x17')](0x194);}return _0x55e103;};}function handleError(_0x382fcf,_0xf2b7ba){_0xf2b7ba=_0xf2b7ba||0x1f4;return function(_0x326746){logger[_0x89ff('0x23')](_0x326746[_0x89ff('0x24')]);if(_0x326746[_0x89ff('0x25')]){delete _0x326746[_0x89ff('0x25')];}_0x382fcf[_0x89ff('0x18')](_0xf2b7ba)[_0x89ff('0x26')](_0x326746);};}exports[_0x89ff('0x27')]=function(_0x4a8ca3,_0x2d8238){var _0x234a37={},_0x57c86f={},_0x10c4fa={'count':0x0,'rows':[]};var _0x38eeef=_[_0x89ff('0x28')](db['ZohoField']['rawAttributes'],function(_0x2131fd){return{'name':_0x2131fd[_0x89ff('0x29')],'type':_0x2131fd[_0x89ff('0x2a')][_0x89ff('0x2b')]};});_0x57c86f[_0x89ff('0x2c')]=_[_0x89ff('0x28')](_0x38eeef,'name');_0x57c86f[_0x89ff('0x2d')]=_[_0x89ff('0x2e')](_0x4a8ca3[_0x89ff('0x2d')]);_0x57c86f[_0x89ff('0x2f')]=_['intersection'](_0x57c86f[_0x89ff('0x2c')],_0x57c86f['query']);_0x234a37['attributes']=_['intersection'](_0x57c86f[_0x89ff('0x2c')],qs[_0x89ff('0x30')](_0x4a8ca3['query'][_0x89ff('0x30')]));_0x234a37[_0x89ff('0x31')]=_0x234a37[_0x89ff('0x31')][_0x89ff('0x32')]?_0x234a37['attributes']:_0x57c86f[_0x89ff('0x2c')];if(!_0x4a8ca3[_0x89ff('0x2d')][_0x89ff('0x33')]('nolimit')){_0x234a37['limit']=qs[_0x89ff('0x1c')](_0x4a8ca3[_0x89ff('0x2d')][_0x89ff('0x1c')]);_0x234a37[_0x89ff('0x1b')]=qs[_0x89ff('0x1b')](_0x4a8ca3[_0x89ff('0x2d')][_0x89ff('0x1b')]);}_0x234a37[_0x89ff('0x34')]=qs['sort'](_0x4a8ca3['query']['sort']);_0x234a37['where']=qs[_0x89ff('0x2f')](_[_0x89ff('0x35')](_0x4a8ca3[_0x89ff('0x2d')],_0x57c86f[_0x89ff('0x2f')]),_0x38eeef);if(_0x4a8ca3[_0x89ff('0x2d')]['filter']){_0x234a37[_0x89ff('0x36')]=_['merge'](_0x234a37[_0x89ff('0x36')],{'$or':_['map'](_0x38eeef,function(_0xff709e){if(_0xff709e[_0x89ff('0x2a')]!==_0x89ff('0x37')){var _0x1c5b20={};_0x1c5b20[_0xff709e['name']]={'$like':'%'+_0x4a8ca3[_0x89ff('0x2d')][_0x89ff('0x38')]+'%'};return _0x1c5b20;}})});}_0x234a37=_[_0x89ff('0x39')]({},_0x234a37,_0x4a8ca3[_0x89ff('0x3a')]);var _0x2ec472={'where':_0x234a37[_0x89ff('0x36')]};return db[_0x89ff('0x3b')]['count'](_0x2ec472)[_0x89ff('0x3c')](function(_0x203d71){_0x10c4fa[_0x89ff('0x1e')]=_0x203d71;if(_0x4a8ca3[_0x89ff('0x2d')][_0x89ff('0x3d')]){_0x234a37[_0x89ff('0x3e')]=[{'all':!![]}];}return db[_0x89ff('0x3b')][_0x89ff('0x3f')](_0x234a37);})['then'](function(_0x546c20){_0x10c4fa[_0x89ff('0x40')]=_0x546c20;return _0x10c4fa;})[_0x89ff('0x3c')](respondWithFilteredResult(_0x2d8238,_0x234a37))[_0x89ff('0x41')](handleError(_0x2d8238,null));};exports[_0x89ff('0x42')]=function(_0x20399d,_0x555cd7){var _0xc0f1e2={'raw':!![],'where':{'id':_0x20399d[_0x89ff('0x43')]['id']}},_0x2f403e={};_0x2f403e['model']=_[_0x89ff('0x2e')](db[_0x89ff('0x3b')][_0x89ff('0x44')]);_0x2f403e[_0x89ff('0x2d')]=_['keys'](_0x20399d[_0x89ff('0x2d')]);_0x2f403e[_0x89ff('0x2f')]=_[_0x89ff('0x45')](_0x2f403e['model'],_0x2f403e[_0x89ff('0x2d')]);_0xc0f1e2[_0x89ff('0x31')]=_[_0x89ff('0x45')](_0x2f403e[_0x89ff('0x2c')],qs[_0x89ff('0x30')](_0x20399d[_0x89ff('0x2d')][_0x89ff('0x30')]));_0xc0f1e2[_0x89ff('0x31')]=_0xc0f1e2[_0x89ff('0x31')][_0x89ff('0x32')]?_0xc0f1e2[_0x89ff('0x31')]:_0x2f403e[_0x89ff('0x2c')];if(_0x20399d[_0x89ff('0x2d')]['includeAll']){_0xc0f1e2[_0x89ff('0x3e')]=[{'all':!![]}];}_0xc0f1e2=_[_0x89ff('0x39')]({},_0xc0f1e2,_0x20399d[_0x89ff('0x3a')]);return db[_0x89ff('0x3b')][_0x89ff('0x46')](_0xc0f1e2)[_0x89ff('0x3c')](handleEntityNotFound(_0x555cd7,null))[_0x89ff('0x3c')](respondWithResult(_0x555cd7,null))[_0x89ff('0x41')](handleError(_0x555cd7,null));};exports[_0x89ff('0x47')]=function(_0x571e85,_0x46e258){return db[_0x89ff('0x3b')][_0x89ff('0x47')](_0x571e85[_0x89ff('0x48')],{})[_0x89ff('0x3c')](respondWithResult(_0x46e258,0xc9))[_0x89ff('0x41')](handleError(_0x46e258,null));};exports[_0x89ff('0x21')]=function(_0x27fb1a,_0x3848c9){if(_0x27fb1a['body']['id']){delete _0x27fb1a['body']['id'];}return db[_0x89ff('0x3b')][_0x89ff('0x46')]({'where':{'id':_0x27fb1a[_0x89ff('0x43')]['id']}})[_0x89ff('0x3c')](handleEntityNotFound(_0x3848c9,null))[_0x89ff('0x3c')](saveUpdates(_0x27fb1a[_0x89ff('0x48')],null))['then'](respondWithResult(_0x3848c9,null))[_0x89ff('0x41')](handleError(_0x3848c9,null));};exports[_0x89ff('0x22')]=function(_0x5ba55a,_0x155442){return db[_0x89ff('0x3b')][_0x89ff('0x46')]({'where':{'id':_0x5ba55a['params']['id']}})[_0x89ff('0x3c')](handleEntityNotFound(_0x155442,null))[_0x89ff('0x3c')](removeEntity(_0x155442,null))[_0x89ff('0x41')](handleError(_0x155442,null));}; \ No newline at end of file diff --git a/server/api/intZohoField/intZohoField.model.js b/server/api/intZohoField/intZohoField.model.js new file mode 100644 index 0000000..442bbad --- /dev/null +++ b/server/api/intZohoField/intZohoField.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4745=['../../config/environment','./intZohoField.attributes','exports','define','int_zoho_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x513d65,_0x156ef6){var _0x307aa9=function(_0x3885d3){while(--_0x3885d3){_0x513d65['push'](_0x513d65['shift']());}};_0x307aa9(++_0x156ef6);}(_0x4745,0x1e7));var _0x5474=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0x4745[_0x36dfbd];return _0x4ecad9;};'use strict';var _=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var logger=require(_0x5474('0x2'))(_0x5474('0x3'));var moment=require(_0x5474('0x4'));var BPromise=require(_0x5474('0x5'));var rp=require(_0x5474('0x6'));var fs=require('fs');var path=require(_0x5474('0x7'));var rimraf=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var attributes=require(_0x5474('0xa'));module[_0x5474('0xb')]=function(_0x4e7ce7,_0x3d1e1){return _0x4e7ce7[_0x5474('0xc')]('ZohoField',attributes,{'tableName':_0x5474('0xd'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x5474('0xe'),_0x5474('0xf')],'unique':!![]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/intZohoField/intZohoField.rpc.js b/server/api/intZohoField/intZohoField.rpc.js new file mode 100644 index 0000000..2fd3d05 --- /dev/null +++ b/server/api/intZohoField/intZohoField.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7349=['request','then','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http'];(function(_0x349a8d,_0x2616e3){var _0x50f593=function(_0x3c4f1a){while(--_0x3c4f1a){_0x349a8d['push'](_0x349a8d['shift']());}};_0x50f593(++_0x2616e3);}(_0x7349,0x79));var _0x9734=function(_0x5ae9fd,_0x466d96){_0x5ae9fd=_0x5ae9fd-0x0;var _0x1009a2=_0x7349[_0x5ae9fd];return _0x1009a2;};'use strict';var _=require(_0x9734('0x0'));var util=require(_0x9734('0x1'));var moment=require(_0x9734('0x2'));var BPromise=require(_0x9734('0x3'));var rs=require(_0x9734('0x4'));var fs=require('fs');var Redis=require(_0x9734('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9734('0x6'));var logger=require(_0x9734('0x7'))(_0x9734('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9734('0x9')][_0x9734('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x16d4a9,_0xd9f4e4,_0x87923c){return new BPromise(function(_0x127813,_0x36a547){return client[_0x9734('0xb')](_0x16d4a9,_0x87923c)[_0x9734('0xc')](function(_0x350a1c){logger['info'](_0x9734('0xd'),_0xd9f4e4,_0x9734('0xe'));logger[_0x9734('0xf')](_0x9734('0x10'),_0xd9f4e4,_0x9734('0xe'),JSON[_0x9734('0x11')](_0x350a1c));if(_0x350a1c[_0x9734('0x12')]){if(_0x350a1c[_0x9734('0x12')][_0x9734('0x13')]===0x1f4){logger[_0x9734('0x12')](_0x9734('0xd'),_0xd9f4e4,_0x350a1c['error'][_0x9734('0x14')]);return _0x36a547(_0x350a1c[_0x9734('0x12')][_0x9734('0x14')]);}logger['error'](_0x9734('0xd'),_0xd9f4e4,_0x350a1c[_0x9734('0x12')][_0x9734('0x14')]);return _0x127813(_0x350a1c[_0x9734('0x12')][_0x9734('0x14')]);}else{logger['info']('ZohoField,\x20%s,\x20%s',_0xd9f4e4,_0x9734('0xe'));_0x127813(_0x350a1c['result'][_0x9734('0x14')]);}})[_0x9734('0x15')](function(_0x6d560c){logger['error'](_0x9734('0xd'),_0xd9f4e4,_0x6d560c);_0x36a547(_0x6d560c);});});} \ No newline at end of file diff --git a/server/api/integration/index.js b/server/api/integration/index.js new file mode 100644 index 0000000..dabec33 --- /dev/null +++ b/server/api/integration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x2cc0c9,_0x1600f1){var _0x673533=function(_0x322f11){while(--_0x322f11){_0x2cc0c9['push'](_0x2cc0c9['shift']());}};_0x673533(++_0x1600f1);}(_0xe706,0xa3));var _0x6e70=function(_0x38136b,_0x35c34e){_0x38136b=_0x38136b-0x0;var _0x3b10b9=_0xe706[_0x38136b];return _0x3b10b9;};'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 diff --git a/server/api/integration/integration.attributes.js b/server/api/integration/integration.attributes.js new file mode 100644 index 0000000..8895713 --- /dev/null +++ b/server/api/integration/integration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2cb5=['BOOLEAN','state','STRING','unique_name_and_version','app.js','INTEGER'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x2cb5,0x176));var _0x52cb=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x2cb5[_0x5ce15c];return _0x36e4f5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x52cb('0x0')],'allowNull':![],'unique':_0x52cb('0x1')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x52cb('0x1')},'main':{'type':Sequelize[_0x52cb('0x0')],'defaultValue':_0x52cb('0x2')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x52cb('0x0')]},'type':{'type':Sequelize[_0x52cb('0x0')]},'size':{'type':Sequelize[_0x52cb('0x3')]},'active':{'type':Sequelize[_0x52cb('0x4')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x52cb('0x0')]},'state':{'type':Sequelize[_0x52cb('0x0')],'unique':_0x52cb('0x5')},'description':{'type':Sequelize[_0x52cb('0x0')]},'title':{'type':Sequelize[_0x52cb('0x0')]},'remoteUri':{'type':Sequelize[_0x52cb('0x0')]},'link':{'type':Sequelize[_0x52cb('0x0')],'defaultValue':'#'}}; \ No newline at end of file diff --git a/server/api/integration/integration.controller.js b/server/api/integration/integration.controller.js new file mode 100644 index 0000000..0562e87 --- /dev/null +++ b/server/api/integration/integration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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','Integration','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(_0x44638a,_0x4fc76b){_0x44638a=_0x44638a-0x0;var _0x4ab003=_0xc2c7[_0x44638a];return _0x4ab003;};'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['Integration'][_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['Integration'][_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 diff --git a/server/api/integration/integration.model.js b/server/api/integration/integration.model.js new file mode 100644 index 0000000..67a0a15 --- /dev/null +++ b/server/api/integration/integration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x76c3=['../../config/environment','exports','Integration','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x76c3,0xb7));var _0x376c=function(_0x5410f4,_0x560cb2){_0x5410f4=_0x5410f4-0x0;var _0x2fe39e=_0x76c3[_0x5410f4];return _0x2fe39e;};'use strict';var _=require(_0x376c('0x0'));var util=require(_0x376c('0x1'));var logger=require(_0x376c('0x2'))(_0x376c('0x3'));var moment=require(_0x376c('0x4'));var BPromise=require('bluebird');var rp=require(_0x376c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x376c('0x6'));var attributes=require('./integration.attributes');module[_0x376c('0x7')]=function(_0x37f3ca,_0x451783){return _0x37f3ca['define'](_0x376c('0x8'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/integration/integration.rpc.js b/server/api/integration/integration.rpc.js new file mode 100644 index 0000000..786bef5 --- /dev/null +++ b/server/api/integration/integration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','Integration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0xdb631a,_0x5a2173){var _0x1c85f0=function(_0x2a3c4d){while(--_0x2a3c4d){_0xdb631a['push'](_0xdb631a['shift']());}};_0x1c85f0(++_0x5a2173);}(_0xdb28,0x106));var _0x8db2=function(_0x117787,_0x4e871f){_0x117787=_0x117787-0x0;var _0xb5a78=_0xdb28[_0x117787];return _0xb5a78;};'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')]('Integration,\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 diff --git a/server/api/integrationReport/index.js b/server/api/integrationReport/index.js new file mode 100644 index 0000000..28c8ebf --- /dev/null +++ b/server/api/integrationReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0295=['isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x0295,0x1f0));var _0x5029=function(_0x2cf818,_0x1cd613){_0x2cf818=_0x2cf818-0x0;var _0x4c1fc7=_0x0295[_0x2cf818];return _0x4c1fc7;};'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')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router[_0x5029('0xc')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0xe')]);router[_0x5029('0xf')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0x10')]);module[_0x5029('0x11')]=router; \ No newline at end of file diff --git a/server/api/integrationReport/integrationReport.attributes.js b/server/api/integrationReport/integrationReport.attributes.js new file mode 100644 index 0000000..a097220 --- /dev/null +++ b/server/api/integrationReport/integrationReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6752=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize'];(function(_0xb30d1d,_0x138303){var _0x177c6b=function(_0x3527e3){while(--_0x3527e3){_0xb30d1d['push'](_0xb30d1d['shift']());}};_0x177c6b(++_0x138303);}(_0x6752,0x1af));var _0x2675=function(_0x54cd21,_0x2b5c7b){_0x54cd21=_0x54cd21-0x0;var _0x151a55=_0x6752[_0x54cd21];return _0x151a55;};'use strict';var Sequelize=require(_0x2675('0x0'));module[_0x2675('0x1')]={'integration':{'type':Sequelize[_0x2675('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x2675('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x2675('0x2')]},'calleridname':{'type':Sequelize[_0x2675('0x2')]},'queue':{'type':Sequelize[_0x2675('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x2675('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2675('0x3')]},'agentcomplete':{'type':Sequelize[_0x2675('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x2675('0x4')]},'talktime':{'type':Sequelize[_0x2675('0x3')]},'agentacw':{'type':Sequelize[_0x2675('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2675('0x3')]},'reason':{'type':Sequelize[_0x2675('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x2675('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x2675('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x2675('0x4')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x2675('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x2675('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x2675('0x2')]},'accountcode':{'type':Sequelize[_0x2675('0x2')]},'context':{'type':Sequelize[_0x2675('0x2')]},'exten':{'type':Sequelize[_0x2675('0x2')]},'priority':{'type':Sequelize[_0x2675('0x2')]},'destchannel':{'type':Sequelize[_0x2675('0x2')]},'destchannelstate':{'type':Sequelize[_0x2675('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x2675('0x2')]},'destcalleridnum':{'type':Sequelize[_0x2675('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x2675('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x2675('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x2675('0x2')]},'destcontext':{'type':Sequelize[_0x2675('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x2675('0x2')]},'destuniqueid':{'type':Sequelize[_0x2675('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x2675('0x2')]},'subject':{'type':Sequelize[_0x2675('0x2')]},'from':{'type':Sequelize[_0x2675('0x2')]},'to':{'type':Sequelize[_0x2675('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x2675('0x6')]},'html':{'type':Sequelize[_0x2675('0x6')]},'text':{'type':Sequelize[_0x2675('0x6')]},'status':{'type':Sequelize[_0x2675('0x7')](_0x2675('0x8'),_0x2675('0x9'),_0x2675('0xa'),_0x2675('0xb'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0x2675('0x2')]},'appdata':{'type':Sequelize[_0x2675('0x2')]},'projectId':{'type':Sequelize[_0x2675('0x3')]}}; \ No newline at end of file diff --git a/server/api/integrationReport/integrationReport.controller.js b/server/api/integrationReport/integrationReport.controller.js new file mode 100644 index 0000000..1081ae7 --- /dev/null +++ b/server/api/integrationReport/integrationReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7b19=['save','then','destroy','sendStatus','name','send','map','IntegrationReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','find','body','update','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','Content-Range','apply'];(function(_0x4fc421,_0x94e88){var _0x8c6d63=function(_0x5b8b42){while(--_0x5b8b42){_0x4fc421['push'](_0x4fc421['shift']());}};_0x8c6d63(++_0x94e88);}(_0x7b19,0x139));var _0x97b1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7b19[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x97b1('0x0'));var zipdir=require(_0x97b1('0x1'));var jsonpatch=require(_0x97b1('0x2'));var rp=require('request-promise');var moment=require(_0x97b1('0x3'));var BPromise=require(_0x97b1('0x4'));var Mustache=require(_0x97b1('0x5'));var util=require('util');var path=require(_0x97b1('0x6'));var sox=require(_0x97b1('0x7'));var csv=require(_0x97b1('0x8'));var ejs=require(_0x97b1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x97b1('0xa'));var crypto=require(_0x97b1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x97b1('0xc'));var toCsv=require(_0x97b1('0x8'));var querystring=require(_0x97b1('0xd'));var Papa=require(_0x97b1('0xe'));var Redis=require(_0x97b1('0xf'));var authService=require(_0x97b1('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x97b1('0x11'));var hardwareService=require(_0x97b1('0x12'));var logger=require(_0x97b1('0x13'))(_0x97b1('0x14'));var utils=require(_0x97b1('0x15'));var config=require(_0x97b1('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4dd6a6,_0x38672e){_0x38672e=_0x38672e||0xcc;return function(_0x1af1ba){if(_0x1af1ba){return _0x4dd6a6['sendStatus'](_0x38672e);}return _0x4dd6a6[_0x97b1('0x17')](_0x38672e)[_0x97b1('0x18')]();};}function respondWithResult(_0x17539f,_0x1512a6){_0x1512a6=_0x1512a6||0xc8;return function(_0x16089b){if(_0x16089b){return _0x17539f[_0x97b1('0x17')](_0x1512a6)[_0x97b1('0x19')](_0x16089b);}};}function respondWithFilteredResult(_0x2d6344,_0x140210){return function(_0x12c32f){if(_0x12c32f){var _0x52c91a=typeof _0x140210[_0x97b1('0x1a')]===_0x97b1('0x1b')&&typeof _0x140210[_0x97b1('0x1c')]===_0x97b1('0x1b');var _0x5ac532=_0x12c32f[_0x97b1('0x1d')];var _0x5884fd=_0x52c91a?0x0:_0x140210['offset'];var _0x3480e1=_0x52c91a?_0x12c32f[_0x97b1('0x1d')]:_0x140210['offset']+_0x140210[_0x97b1('0x1c')];var _0x555ac8;if(_0x3480e1>=_0x5ac532){_0x3480e1=_0x5ac532;_0x555ac8=0xc8;}else{_0x555ac8=0xce;}_0x2d6344[_0x97b1('0x17')](_0x555ac8);return _0x2d6344['set'](_0x97b1('0x1e'),_0x5884fd+'-'+_0x3480e1+'/'+_0x5ac532)[_0x97b1('0x19')](_0x12c32f);}return null;};}function patchUpdates(_0x1a6385){return function(_0x50ea64){try{jsonpatch[_0x97b1('0x1f')](_0x50ea64,_0x1a6385,!![]);}catch(_0x1e636f){return BPromise['reject'](_0x1e636f);}return _0x50ea64[_0x97b1('0x20')]();};}function saveUpdates(_0x1b0544,_0x201da2){return function(_0x193807){if(_0x193807){return _0x193807['update'](_0x1b0544)[_0x97b1('0x21')](function(_0xd4f1c9){return _0xd4f1c9;});}return null;};}function removeEntity(_0x1a8a28,_0x4cdfd8){return function(_0x3d7192){if(_0x3d7192){return _0x3d7192[_0x97b1('0x22')]()[_0x97b1('0x21')](function(){_0x1a8a28[_0x97b1('0x17')](0xcc)[_0x97b1('0x18')]();});}};}function handleEntityNotFound(_0x1d9690,_0x9d9e24){return function(_0x16f096){if(!_0x16f096){_0x1d9690[_0x97b1('0x23')](0x194);}return _0x16f096;};}function handleError(_0xe340ab,_0x1dbd0c){_0x1dbd0c=_0x1dbd0c||0x1f4;return function(_0x394841){logger['error'](_0x394841['stack']);if(_0x394841[_0x97b1('0x24')]){delete _0x394841[_0x97b1('0x24')];}_0xe340ab[_0x97b1('0x17')](_0x1dbd0c)[_0x97b1('0x25')](_0x394841);};}exports['index']=function(_0x5e43df,_0x28edd2){var _0x4a055e={},_0x15185a={},_0x46e6de={'count':0x0,'rows':[]};var _0x2523d5=_[_0x97b1('0x26')](db[_0x97b1('0x27')][_0x97b1('0x28')],function(_0x782036){return{'name':_0x782036[_0x97b1('0x29')],'type':_0x782036[_0x97b1('0x2a')]['key']};});_0x15185a[_0x97b1('0x2b')]=_[_0x97b1('0x26')](_0x2523d5,_0x97b1('0x24'));_0x15185a[_0x97b1('0x2c')]=_[_0x97b1('0x2d')](_0x5e43df['query']);_0x15185a['filters']=_[_0x97b1('0x2e')](_0x15185a['model'],_0x15185a['query']);_0x4a055e[_0x97b1('0x2f')]=_[_0x97b1('0x2e')](_0x15185a[_0x97b1('0x2b')],qs[_0x97b1('0x30')](_0x5e43df[_0x97b1('0x2c')][_0x97b1('0x30')]));_0x4a055e['attributes']=_0x4a055e[_0x97b1('0x2f')]['length']?_0x4a055e['attributes']:_0x15185a[_0x97b1('0x2b')];if(!_0x5e43df[_0x97b1('0x2c')][_0x97b1('0x31')](_0x97b1('0x32'))){_0x4a055e[_0x97b1('0x1c')]=qs['limit'](_0x5e43df[_0x97b1('0x2c')]['limit']);_0x4a055e[_0x97b1('0x1a')]=qs[_0x97b1('0x1a')](_0x5e43df[_0x97b1('0x2c')][_0x97b1('0x1a')]);}_0x4a055e[_0x97b1('0x33')]=qs[_0x97b1('0x34')](_0x5e43df[_0x97b1('0x2c')][_0x97b1('0x34')]);_0x4a055e[_0x97b1('0x35')]=qs[_0x97b1('0x36')](_[_0x97b1('0x37')](_0x5e43df[_0x97b1('0x2c')],_0x15185a[_0x97b1('0x36')]),_0x2523d5);if(_0x5e43df['query'][_0x97b1('0x38')]){_0x4a055e['where']=_[_0x97b1('0x39')](_0x4a055e[_0x97b1('0x35')],{'$or':_['map'](_0x2523d5,function(_0xf17c01){if(_0xf17c01['type']!==_0x97b1('0x3a')){var _0x19dedb={};_0x19dedb[_0xf17c01['name']]={'$like':'%'+_0x5e43df['query'][_0x97b1('0x38')]+'%'};return _0x19dedb;}})});}_0x4a055e=_[_0x97b1('0x39')]({},_0x4a055e,_0x5e43df['options']);var _0x4684d0={'where':_0x4a055e[_0x97b1('0x35')]};return db[_0x97b1('0x27')][_0x97b1('0x1d')](_0x4684d0)['then'](function(_0x118bf7){_0x46e6de[_0x97b1('0x1d')]=_0x118bf7;if(_0x5e43df[_0x97b1('0x2c')][_0x97b1('0x3b')]){_0x4a055e[_0x97b1('0x3c')]=[{'all':!![]}];}return db[_0x97b1('0x27')][_0x97b1('0x3d')](_0x4a055e);})[_0x97b1('0x21')](function(_0x5c6a76){_0x46e6de[_0x97b1('0x3e')]=_0x5c6a76;return _0x46e6de;})['then'](respondWithFilteredResult(_0x28edd2,_0x4a055e))[_0x97b1('0x3f')](handleError(_0x28edd2,null));};exports['show']=function(_0x266f36,_0x1cda34){var _0x26048c={'raw':![],'where':{'id':_0x266f36[_0x97b1('0x40')]['id']}},_0x2b6ba3={};_0x2b6ba3[_0x97b1('0x2b')]=_[_0x97b1('0x2d')](db['IntegrationReport'][_0x97b1('0x28')]);_0x2b6ba3[_0x97b1('0x2c')]=_[_0x97b1('0x2d')](_0x266f36[_0x97b1('0x2c')]);_0x2b6ba3[_0x97b1('0x36')]=_[_0x97b1('0x2e')](_0x2b6ba3['model'],_0x2b6ba3[_0x97b1('0x2c')]);_0x26048c[_0x97b1('0x2f')]=_[_0x97b1('0x2e')](_0x2b6ba3[_0x97b1('0x2b')],qs[_0x97b1('0x30')](_0x266f36[_0x97b1('0x2c')][_0x97b1('0x30')]));_0x26048c[_0x97b1('0x2f')]=_0x26048c[_0x97b1('0x2f')]['length']?_0x26048c['attributes']:_0x2b6ba3[_0x97b1('0x2b')];if(_0x266f36[_0x97b1('0x2c')][_0x97b1('0x3b')]){_0x26048c[_0x97b1('0x3c')]=[{'all':!![]}];}_0x26048c=_[_0x97b1('0x39')]({},_0x26048c,_0x266f36['options']);return db['IntegrationReport'][_0x97b1('0x41')](_0x26048c)[_0x97b1('0x21')](handleEntityNotFound(_0x1cda34,null))[_0x97b1('0x21')](respondWithResult(_0x1cda34,null))[_0x97b1('0x3f')](handleError(_0x1cda34,null));};exports['create']=function(_0x459297,_0x3e2428){return db[_0x97b1('0x27')]['create'](_0x459297[_0x97b1('0x42')],{})[_0x97b1('0x21')](respondWithResult(_0x3e2428,0xc9))[_0x97b1('0x3f')](handleError(_0x3e2428,null));};exports[_0x97b1('0x43')]=function(_0x4e3405,_0x202183){if(_0x4e3405[_0x97b1('0x42')]['id']){delete _0x4e3405[_0x97b1('0x42')]['id'];}return db['IntegrationReport'][_0x97b1('0x41')]({'where':{'id':_0x4e3405[_0x97b1('0x40')]['id']}})[_0x97b1('0x21')](handleEntityNotFound(_0x202183,null))['then'](saveUpdates(_0x4e3405[_0x97b1('0x42')],null))[_0x97b1('0x21')](respondWithResult(_0x202183,null))[_0x97b1('0x3f')](handleError(_0x202183,null));};exports['destroy']=function(_0x2dc47c,_0x42b78f){return db[_0x97b1('0x27')][_0x97b1('0x41')]({'where':{'id':_0x2dc47c[_0x97b1('0x40')]['id']}})['then'](handleEntityNotFound(_0x42b78f,null))['then'](removeEntity(_0x42b78f,null))[_0x97b1('0x3f')](handleError(_0x42b78f,null));};exports['describe']=function(_0x5b24de,_0xa7a25b){return db[_0x97b1('0x27')][_0x97b1('0x44')]()['then'](respondWithResult(_0xa7a25b,null))['catch'](handleError(_0xa7a25b,null));}; \ No newline at end of file diff --git a/server/api/integrationReport/integrationReport.model.js b/server/api/integrationReport/integrationReport.model.js new file mode 100644 index 0000000..11a38da --- /dev/null +++ b/server/api/integrationReport/integrationReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1c78=['exports','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./integrationReport.attributes'];(function(_0x515d16,_0x4dc95e){var _0x789eff=function(_0x5badd1){while(--_0x5badd1){_0x515d16['push'](_0x515d16['shift']());}};_0x789eff(++_0x4dc95e);}(_0x1c78,0x1eb));var _0x81c7=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x1c78[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x81c7('0x0'));var util=require('util');var logger=require(_0x81c7('0x1'))(_0x81c7('0x2'));var moment=require(_0x81c7('0x3'));var BPromise=require(_0x81c7('0x4'));var rp=require(_0x81c7('0x5'));var fs=require('fs');var path=require(_0x81c7('0x6'));var rimraf=require(_0x81c7('0x7'));var config=require('../../config/environment');var attributes=require(_0x81c7('0x8'));module[_0x81c7('0x9')]=function(_0x4799c7,_0x53dcc4){return _0x4799c7['define']('IntegrationReport',attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/integrationReport/integrationReport.rpc.js b/server/api/integrationReport/integrationReport.rpc.js new file mode 100644 index 0000000..ccfe95d --- /dev/null +++ b/server/api/integrationReport/integrationReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0x53ec,0x192));var _0xc53e=function(_0x2781b0,_0x4ec0d2){_0x2781b0=_0x2781b0-0x0;var _0xb532ba=_0x53ec[_0x2781b0];return _0xb532ba;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});} \ No newline at end of file diff --git a/server/api/interval/index.js b/server/api/interval/index.js new file mode 100644 index 0000000..a389fdc --- /dev/null +++ b/server/api/interval/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcf8c=['path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','/:id','/:id/sub_intervals','getIntervals','post','create','/:id/sub_intervals/create_many','addIntervals','update','delete','exports','multer','util'];(function(_0x416412,_0x23d936){var _0x43473f=function(_0x295f91){while(--_0x295f91){_0x416412['push'](_0x416412['shift']());}};_0x43473f(++_0x23d936);}(_0xcf8c,0xf0));var _0xccf8=function(_0x22fdfd,_0x5304da){_0x22fdfd=_0x22fdfd-0x0;var _0x1385b3=_0xcf8c[_0x22fdfd];return _0x1385b3;};'use strict';var multer=require(_0xccf8('0x0'));var util=require(_0xccf8('0x1'));var path=require(_0xccf8('0x2'));var timeout=require(_0xccf8('0x3'));var express=require(_0xccf8('0x4'));var router=express[_0xccf8('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xccf8('0x6'));var config=require(_0xccf8('0x7'));var controller=require(_0xccf8('0x8'));router[_0xccf8('0x9')]('/',auth[_0xccf8('0xa')](),controller[_0xccf8('0xb')]);router[_0xccf8('0x9')](_0xccf8('0xc'),auth[_0xccf8('0xa')](),controller['show']);router['get'](_0xccf8('0xd'),auth[_0xccf8('0xa')](),controller[_0xccf8('0xe')]);router[_0xccf8('0xf')]('/',auth[_0xccf8('0xa')](),controller[_0xccf8('0x10')]);router['post']('/:id/sub_intervals',auth[_0xccf8('0xa')](),controller['addInterval']);router[_0xccf8('0xf')](_0xccf8('0x11'),auth['isAuthenticated'](),controller[_0xccf8('0x12')]);router['put']('/:id',auth[_0xccf8('0xa')](),controller[_0xccf8('0x13')]);router[_0xccf8('0x14')](_0xccf8('0xc'),auth[_0xccf8('0xa')](),controller['destroy']);module[_0xccf8('0x15')]=router; \ No newline at end of file diff --git a/server/api/interval/interval.attributes.js b/server/api/interval/interval.attributes.js new file mode 100644 index 0000000..9968a79 --- /dev/null +++ b/server/api/interval/interval.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8258=['sequelize','exports','STRING'];(function(_0x1f66fe,_0x54993d){var _0x1a6e3a=function(_0x2ca73d){while(--_0x2ca73d){_0x1f66fe['push'](_0x1f66fe['shift']());}};_0x1a6e3a(++_0x54993d);}(_0x8258,0x14a));var _0x8825=function(_0xb1110,_0x3bec00){_0xb1110=_0xb1110-0x0;var _0xacd8ba=_0x8258[_0xb1110];return _0xacd8ba;};'use strict';var Sequelize=require(_0x8825('0x0'));module[_0x8825('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x8825('0x2')],'allowNull':!![]}}; \ No newline at end of file diff --git a/server/api/interval/interval.controller.js b/server/api/interval/interval.controller.js new file mode 100644 index 0000000..f4e878d --- /dev/null +++ b/server/api/interval/interval.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfc0b=['moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/extensions/rewrite','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','then','Intervals','UserProfileResource','destroy','sendStatus','stack','name','send','index','Interval','rawAttributes','fieldName','key','model','map','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','sequelize','transaction','rimraf','zip-dir','request-promise'];(function(_0x4b793c,_0x4bc7f9){var _0x4c79c9=function(_0x121a5d){while(--_0x121a5d){_0x4b793c['push'](_0x4b793c['shift']());}};_0x4c79c9(++_0x4bc7f9);}(_0xfc0b,0x16d));var _0xbfc0=function(_0x3ac8a4,_0x10bc3d){_0x3ac8a4=_0x3ac8a4-0x0;var _0x49105f=_0xfc0b[_0x3ac8a4];return _0x49105f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbfc0('0x0'));var zipdir=require(_0xbfc0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbfc0('0x2'));var moment=require(_0xbfc0('0x3'));var BPromise=require(_0xbfc0('0x4'));var Mustache=require(_0xbfc0('0x5'));var util=require(_0xbfc0('0x6'));var path=require('path');var sox=require(_0xbfc0('0x7'));var csv=require(_0xbfc0('0x8'));var ejs=require(_0xbfc0('0x9'));var fs=require('fs');var fs_extra=require(_0xbfc0('0xa'));var _=require(_0xbfc0('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbfc0('0xc'));var deskjs=require(_0xbfc0('0xd'));var toCsv=require(_0xbfc0('0x8'));var querystring=require(_0xbfc0('0xe'));var Papa=require(_0xbfc0('0xf'));var Redis=require(_0xbfc0('0x10'));var authService=require(_0xbfc0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbfc0('0x12'));var hardwareService=require(_0xbfc0('0x13'));var logger=require(_0xbfc0('0x14'))(_0xbfc0('0x15'));var utils=require(_0xbfc0('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var extensions=require(_0xbfc0('0x17'));function respondWithStatusCode(_0x2db607,_0x55d619){_0x55d619=_0x55d619||0xcc;return function(_0x174c95){if(_0x174c95){return _0x2db607['sendStatus'](_0x55d619);}return _0x2db607[_0xbfc0('0x18')](_0x55d619)[_0xbfc0('0x19')]();};}function respondWithResult(_0x2f1c19,_0x229695){_0x229695=_0x229695||0xc8;return function(_0x342509){if(_0x342509){return _0x2f1c19[_0xbfc0('0x18')](_0x229695)[_0xbfc0('0x1a')](_0x342509);}};}function respondWithFilteredResult(_0x4c2de5,_0x36069a){return function(_0x31df80){if(_0x31df80){var _0x1d049d=typeof _0x36069a[_0xbfc0('0x1b')]==='undefined'&&typeof _0x36069a[_0xbfc0('0x1c')]==='undefined';var _0x3ec402=_0x31df80[_0xbfc0('0x1d')];var _0x25a3bb=_0x1d049d?0x0:_0x36069a[_0xbfc0('0x1b')];var _0x1374e9=_0x1d049d?_0x31df80[_0xbfc0('0x1d')]:_0x36069a['offset']+_0x36069a[_0xbfc0('0x1c')];var _0x55ab57;if(_0x1374e9>=_0x3ec402){_0x1374e9=_0x3ec402;_0x55ab57=0xc8;}else{_0x55ab57=0xce;}_0x4c2de5[_0xbfc0('0x18')](_0x55ab57);return _0x4c2de5['set'](_0xbfc0('0x1e'),_0x25a3bb+'-'+_0x1374e9+'/'+_0x3ec402)['json'](_0x31df80);}return null;};}function patchUpdates(_0x4a94be){return function(_0x2019ea){try{jsonpatch[_0xbfc0('0x1f')](_0x2019ea,_0x4a94be,!![]);}catch(_0x3a58aa){return BPromise[_0xbfc0('0x20')](_0x3a58aa);}return _0x2019ea[_0xbfc0('0x21')]();};}function saveUpdates(_0xf6a9e8,_0x232165){return function(_0xba8842){if(_0xba8842){return _0xba8842[_0xbfc0('0x22')](_0xf6a9e8)[_0xbfc0('0x23')](function(_0x2d10a1){return _0x2d10a1;});}return null;};}function removeEntity(_0x11b171,_0x3084da){return function(_0xd1af1){if(_0xd1af1){return _0xd1af1['destroy']()[_0xbfc0('0x23')](function(){var _0xc5e464=_0xd1af1['get']({'plain':!![]});var _0x46b720=_0xbfc0('0x24');return db[_0xbfc0('0x25')][_0xbfc0('0x26')]({'where':{'type':_0x46b720,'resourceId':_0xc5e464['id']}})[_0xbfc0('0x23')](function(){return _0xd1af1;});})['then'](function(){_0x11b171[_0xbfc0('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x339f59,_0x2f53fd){return function(_0x471cfa){if(!_0x471cfa){_0x339f59[_0xbfc0('0x27')](0x194);}return _0x471cfa;};}function handleError(_0x12a002,_0x70f97d){_0x70f97d=_0x70f97d||0x1f4;return function(_0x58b3d2){logger['error'](_0x58b3d2[_0xbfc0('0x28')]);if(_0x58b3d2[_0xbfc0('0x29')]){delete _0x58b3d2[_0xbfc0('0x29')];}_0x12a002['status'](_0x70f97d)[_0xbfc0('0x2a')](_0x58b3d2);};}exports[_0xbfc0('0x2b')]=function(_0x3da836,_0x403b23){var _0xb8cb15={},_0x85d443={},_0x3638d4={'count':0x0,'rows':[]};var _0x42fed5=_['map'](db[_0xbfc0('0x2c')][_0xbfc0('0x2d')],function(_0x3aa58b){return{'name':_0x3aa58b[_0xbfc0('0x2e')],'type':_0x3aa58b['type'][_0xbfc0('0x2f')]};});_0x85d443[_0xbfc0('0x30')]=_[_0xbfc0('0x31')](_0x42fed5,_0xbfc0('0x29'));_0x85d443[_0xbfc0('0x32')]=_[_0xbfc0('0x33')](_0x3da836[_0xbfc0('0x32')]);_0x85d443['filters']=_['intersection'](_0x85d443[_0xbfc0('0x30')],_0x85d443[_0xbfc0('0x32')]);_0xb8cb15[_0xbfc0('0x34')]=_['intersection'](_0x85d443[_0xbfc0('0x30')],qs[_0xbfc0('0x35')](_0x3da836[_0xbfc0('0x32')][_0xbfc0('0x35')]));_0xb8cb15['attributes']=_0xb8cb15[_0xbfc0('0x34')][_0xbfc0('0x36')]?_0xb8cb15[_0xbfc0('0x34')]:_0x85d443['model'];if(!_0x3da836['query'][_0xbfc0('0x37')](_0xbfc0('0x38'))){_0xb8cb15[_0xbfc0('0x1c')]=qs[_0xbfc0('0x1c')](_0x3da836[_0xbfc0('0x32')][_0xbfc0('0x1c')]);_0xb8cb15[_0xbfc0('0x1b')]=qs[_0xbfc0('0x1b')](_0x3da836[_0xbfc0('0x32')][_0xbfc0('0x1b')]);}_0xb8cb15[_0xbfc0('0x39')]=qs[_0xbfc0('0x3a')](_0x3da836['query'][_0xbfc0('0x3a')]);_0xb8cb15[_0xbfc0('0x3b')]=qs[_0xbfc0('0x3c')](_[_0xbfc0('0x3d')](_0x3da836[_0xbfc0('0x32')],_0x85d443['filters']),_0x42fed5);if(_0x3da836['query'][_0xbfc0('0x3e')]){_0xb8cb15[_0xbfc0('0x3b')]=_[_0xbfc0('0x3f')](_0xb8cb15[_0xbfc0('0x3b')],{'$or':_[_0xbfc0('0x31')](_0x42fed5,function(_0x3b62c0){if(_0x3b62c0['type']!==_0xbfc0('0x40')){var _0x144690={};_0x144690[_0x3b62c0[_0xbfc0('0x29')]]={'$like':'%'+_0x3da836[_0xbfc0('0x32')]['filter']+'%'};return _0x144690;}})});}_0xb8cb15=_[_0xbfc0('0x3f')]({},_0xb8cb15,_0x3da836['options']);var _0x6f1194={'where':_0xb8cb15['where']};return db['Interval'][_0xbfc0('0x1d')](_0x6f1194)[_0xbfc0('0x23')](function(_0x3c6203){_0x3638d4[_0xbfc0('0x1d')]=_0x3c6203;if(_0x3da836[_0xbfc0('0x32')][_0xbfc0('0x41')]){_0xb8cb15[_0xbfc0('0x42')]=[{'all':!![]}];}return db[_0xbfc0('0x2c')][_0xbfc0('0x43')](_0xb8cb15);})[_0xbfc0('0x23')](function(_0xe6dbd5){_0x3638d4[_0xbfc0('0x44')]=_0xe6dbd5;return _0x3638d4;})[_0xbfc0('0x23')](respondWithFilteredResult(_0x403b23,_0xb8cb15))[_0xbfc0('0x45')](handleError(_0x403b23,null));};exports[_0xbfc0('0x46')]=function(_0x550ed8,_0xe1fcdd){var _0x3bb706={'raw':!![],'where':{'id':_0x550ed8[_0xbfc0('0x47')]['id']}},_0x21421d={};_0x21421d[_0xbfc0('0x30')]=_['keys'](db['Interval'][_0xbfc0('0x2d')]);_0x21421d['query']=_[_0xbfc0('0x33')](_0x550ed8[_0xbfc0('0x32')]);_0x21421d[_0xbfc0('0x3c')]=_[_0xbfc0('0x48')](_0x21421d[_0xbfc0('0x30')],_0x21421d[_0xbfc0('0x32')]);_0x3bb706[_0xbfc0('0x34')]=_[_0xbfc0('0x48')](_0x21421d[_0xbfc0('0x30')],qs[_0xbfc0('0x35')](_0x550ed8[_0xbfc0('0x32')]['fields']));_0x3bb706[_0xbfc0('0x34')]=_0x3bb706[_0xbfc0('0x34')][_0xbfc0('0x36')]?_0x3bb706[_0xbfc0('0x34')]:_0x21421d['model'];if(_0x550ed8[_0xbfc0('0x32')][_0xbfc0('0x41')]){_0x3bb706['include']=[{'all':!![]}];}_0x3bb706=_[_0xbfc0('0x3f')]({},_0x3bb706,_0x550ed8[_0xbfc0('0x49')]);return db['Interval'][_0xbfc0('0x4a')](_0x3bb706)['then'](handleEntityNotFound(_0xe1fcdd,null))[_0xbfc0('0x23')](respondWithResult(_0xe1fcdd,null))['catch'](handleError(_0xe1fcdd,null));};exports['create']=function(_0x5b52db,_0x22e6c8){return db[_0xbfc0('0x2c')][_0xbfc0('0x4b')](_0x5b52db[_0xbfc0('0x4c')],{})[_0xbfc0('0x23')](function(_0x485187){var _0x1f8d1f=_0x5b52db[_0xbfc0('0x4d')]['get']({'plain':!![]});if(!_0x1f8d1f)throw new Error(_0xbfc0('0x4e'));if(_0x1f8d1f[_0xbfc0('0x4f')]===_0xbfc0('0x4d')){var _0x2ef0cd=_0x485187[_0xbfc0('0x50')]({'plain':!![]});var _0x48118a=_0xbfc0('0x24');return db[_0xbfc0('0x51')]['find']({'where':{'name':_0x48118a,'userProfileId':_0x1f8d1f[_0xbfc0('0x52')]},'raw':!![]})['then'](function(_0x437b4e){if(_0x437b4e&&_0x437b4e[_0xbfc0('0x53')]===0x0){return db[_0xbfc0('0x25')][_0xbfc0('0x4b')]({'name':_0x2ef0cd[_0xbfc0('0x29')],'resourceId':_0x2ef0cd['id'],'type':_0x437b4e[_0xbfc0('0x29')],'sectionId':_0x437b4e['id']},{})['then'](function(){return _0x485187;});}else{return _0x485187;}})[_0xbfc0('0x45')](function(_0x13a3b5){logger[_0xbfc0('0x54')](_0xbfc0('0x55'),_0x13a3b5);throw _0x13a3b5;});}return _0x485187;})[_0xbfc0('0x23')](respondWithResult(_0x22e6c8,0xc9))['catch'](handleError(_0x22e6c8,null));};exports[_0xbfc0('0x22')]=function(_0x1c8c51,_0x343c95){if(_0x1c8c51[_0xbfc0('0x4c')]['id']){delete _0x1c8c51[_0xbfc0('0x4c')]['id'];}return db[_0xbfc0('0x2c')][_0xbfc0('0x4a')]({'where':{'id':_0x1c8c51[_0xbfc0('0x47')]['id']}})[_0xbfc0('0x23')](handleEntityNotFound(_0x343c95,null))[_0xbfc0('0x23')](saveUpdates(_0x1c8c51['body'],null))[_0xbfc0('0x23')](respondWithResult(_0x343c95,null))['catch'](handleError(_0x343c95,null));};exports[_0xbfc0('0x26')]=function(_0x16229d,_0xe54b93){return db['Interval']['find']({'where':{'id':_0x16229d[_0xbfc0('0x47')]['id']}})[_0xbfc0('0x23')](handleEntityNotFound(_0xe54b93,null))[_0xbfc0('0x23')](removeEntity(_0xe54b93,null))[_0xbfc0('0x45')](handleError(_0xe54b93,null));};exports[_0xbfc0('0x56')]=function(_0x2f4641,_0x12779c,_0x1589a6){if(_0x2f4641[_0xbfc0('0x4c')]['id']){delete _0x2f4641[_0xbfc0('0x4c')]['id'];}return db[_0xbfc0('0x2c')][_0xbfc0('0x4a')]({'where':{'id':_0x2f4641['params']['id']}})[_0xbfc0('0x23')](handleEntityNotFound(_0x12779c,null))[_0xbfc0('0x23')](function(_0x5d7c2f){if(_0x5d7c2f){_0x2f4641['body'][_0xbfc0('0x57')]=_0x5d7c2f['id'];return db['Interval'][_0xbfc0('0x4b')](_0x2f4641[_0xbfc0('0x4c')]);}})[_0xbfc0('0x23')](respondWithResult(_0x12779c,null))[_0xbfc0('0x45')](handleError(_0x12779c,null));};exports[_0xbfc0('0x58')]=function(_0x26b7a5,_0x388ed1,_0x51102d){var _0x71094d={};var _0x513f12={};var _0x3593e5;var _0xa5f64b;return db[_0xbfc0('0x2c')][_0xbfc0('0x59')]({'where':{'id':_0x26b7a5[_0xbfc0('0x47')]['id']}})[_0xbfc0('0x23')](handleEntityNotFound(_0x388ed1,null))[_0xbfc0('0x23')](function(_0xcbff49){if(_0xcbff49){_0x3593e5=_0xcbff49;_0x513f12[_0xbfc0('0x30')]=_[_0xbfc0('0x33')](db[_0xbfc0('0x2c')]['rawAttributes']);_0x513f12['query']=_['keys'](_0x26b7a5[_0xbfc0('0x32')]);_0x513f12[_0xbfc0('0x3c')]=_[_0xbfc0('0x48')](_0x513f12[_0xbfc0('0x30')],_0x513f12[_0xbfc0('0x32')]);_0x71094d['attributes']=_[_0xbfc0('0x48')](_0x513f12[_0xbfc0('0x30')],qs[_0xbfc0('0x35')](_0x26b7a5[_0xbfc0('0x32')][_0xbfc0('0x35')]));_0x71094d[_0xbfc0('0x34')]=_0x71094d[_0xbfc0('0x34')][_0xbfc0('0x36')]?_0x71094d['attributes']:_0x513f12[_0xbfc0('0x30')];_0x71094d['order']=qs['sort'](_0x26b7a5[_0xbfc0('0x32')][_0xbfc0('0x3a')]);_0x71094d[_0xbfc0('0x3b')]=qs['filters'](_[_0xbfc0('0x3d')](_0x26b7a5[_0xbfc0('0x32')],_0x513f12['filters']));if(_0x26b7a5[_0xbfc0('0x32')]['filter']){_0x71094d[_0xbfc0('0x3b')]=_['merge'](_0x71094d[_0xbfc0('0x3b')],{'$or':_[_0xbfc0('0x31')](_0x71094d[_0xbfc0('0x34')],function(_0xc75c65){var _0xa56e84={};_0xa56e84[_0xc75c65]={'$like':'%'+_0x26b7a5['query']['filter']+'%'};return _0xa56e84;})});}_0x71094d=_[_0xbfc0('0x3f')]({},_0x71094d,_0x26b7a5[_0xbfc0('0x49')]);return _0x3593e5[_0xbfc0('0x58')](_0x71094d);}})[_0xbfc0('0x23')](function(_0x446e8d){if(_0x446e8d){_0xa5f64b=_0x446e8d[_0xbfc0('0x36')];if(!_0x26b7a5[_0xbfc0('0x32')][_0xbfc0('0x37')](_0xbfc0('0x38'))){_0x71094d['limit']=qs['limit'](_0x26b7a5[_0xbfc0('0x32')]['limit']);_0x71094d[_0xbfc0('0x1b')]=qs[_0xbfc0('0x1b')](_0x26b7a5[_0xbfc0('0x32')][_0xbfc0('0x1b')]);}return _0x3593e5['getIntervals'](_0x71094d);}})[_0xbfc0('0x23')](function(_0x43ca3c){if(_0x43ca3c){return _0x43ca3c?{'count':_0xa5f64b,'rows':_0x43ca3c}:null;}})[_0xbfc0('0x23')](respondWithResult(_0x388ed1,null))[_0xbfc0('0x45')](handleError(_0x388ed1,null));};exports['addIntervals']=function(_0x13aceb,_0x518853,_0x665247){return db[_0xbfc0('0x2c')][_0xbfc0('0x59')]({'where':{'id':_0x13aceb['params']['id']}})[_0xbfc0('0x23')](handleEntityNotFound(_0x518853,null))['then'](function(_0x522cdc){if(_0x522cdc){return db[_0xbfc0('0x5a')][_0xbfc0('0x5b')](function(_0x511f98){return db[_0xbfc0('0x2c')][_0xbfc0('0x26')]({'where':{'IntervalId':_0x13aceb['params']['id']},'transaction':_0x511f98})[_0xbfc0('0x23')](function(_0x3ecaa4){var _0x419160=_[_0xbfc0('0x31')](_0x13aceb[_0xbfc0('0x4c')],function(_0x3b00c8){delete _0x3b00c8['id'];_0x3b00c8['IntervalId']=_0x13aceb[_0xbfc0('0x47')]['id'];return _0x3b00c8;});return db[_0xbfc0('0x2c')]['bulkCreate'](_0x419160,{'transaction':_0x511f98});});})[_0xbfc0('0x23')](function(){return db[_0xbfc0('0x2c')]['findAll']({'where':{'IntervalId':_0x13aceb[_0xbfc0('0x47')]['id']}});});}})[_0xbfc0('0x23')](respondWithResult(_0x518853,null))[_0xbfc0('0x45')](handleError(_0x518853,null));}; \ No newline at end of file diff --git a/server/api/interval/interval.model.js b/server/api/interval/interval.model.js new file mode 100644 index 0000000..6a1831d --- /dev/null +++ b/server/api/interval/interval.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x95ff=['define','Interval','tools_intervals','rewrite','string','interval','getIntervals','then','map','ifTime','reduce','./interval.attributes','../../utils/iftime','exports'];(function(_0x1fee7a,_0x100dfc){var _0x50d8f0=function(_0x129307){while(--_0x129307){_0x1fee7a['push'](_0x1fee7a['shift']());}};_0x50d8f0(++_0x100dfc);}(_0x95ff,0x1d9));var _0xf95f=function(_0x2c4a42,_0x41e2b9){_0x2c4a42=_0x2c4a42-0x0;var _0x2302a2=_0x95ff[_0x2c4a42];return _0x2302a2;};'use strict';var attributes=require(_0xf95f('0x0'));var extensions=require('../../components/extensions/rewrite');var iftime=require(_0xf95f('0x1'))['iftime'];module[_0xf95f('0x2')]=function(_0x5b900b){return _0x5b900b[_0xf95f('0x3')](_0xf95f('0x4'),attributes,{'tableName':_0xf95f('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x27710d){extensions[_0xf95f('0x6')](_0x5b900b,_0x27710d);},'afterBulkCreate':function(_0x43787c,_0x229c4d,_0x4c023e){_0x4c023e();extensions[_0xf95f('0x6')](_0x5b900b,_0x43787c[0x0]);},'afterUpdate':function(_0x8918fc){extensions[_0xf95f('0x6')](_0x5b900b,_0x8918fc);},'afterDestroy':function(_0x3cc821){extensions[_0xf95f('0x6')](_0x5b900b,_0x3cc821);}},'instanceMethods':{'ifTime':function(_0x598e76=undefined,_0x22f093=new Date()){if(typeof this['interval']===_0xf95f('0x7')){return iftime(this[_0xf95f('0x8')],_0x598e76,_0x22f093);}else{return this[_0xf95f('0x9')]()[_0xf95f('0xa')](function(_0x108525){return Promise['all'](_0x108525[_0xf95f('0xb')](function(_0x1aa960){return _0x1aa960[_0xf95f('0xc')](_0x598e76,_0x22f093);}));})[_0xf95f('0xa')](function(_0x35200c){return _0x35200c[_0xf95f('0xd')](function(_0x38e73b,_0x30b78c){return _0x38e73b||_0x30b78c;},![]);});}}}});}; \ No newline at end of file diff --git a/server/api/interval/interval.rpc.js b/server/api/interval/interval.rpc.js new file mode 100644 index 0000000..6f93bc2 --- /dev/null +++ b/server/api/interval/interval.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2664=['findAll','options','where','attributes','limit','include','model','map','then','info','debug','stringify','catch','error','message','ShowInterval','find','ifTime','reduce','format','name','join','findById','IntervalIftime','isArray','intervals','timezone','length','IntervalIftime:\x20interval\x20strings\x20=\x20%s','Iftime','silly','lodash','util','../../mysqldb','iftime','../../config/logger','GetInterval','Interval'];(function(_0x5e804b,_0x242732){var _0x116e07=function(_0x550e22){while(--_0x550e22){_0x5e804b['push'](_0x5e804b['shift']());}};_0x116e07(++_0x242732);}(_0x2664,0x103));var _0x4266=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2664[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x4266('0x0'));var util=require(_0x4266('0x1'));var db=require(_0x4266('0x2'))['db'];var iftime=require('../../utils/iftime')[_0x4266('0x3')];var logger=require(_0x4266('0x4'))('rpc');exports[_0x4266('0x5')]=function(_0x35ead5){var _0xf8af53=this;return new Promise(function(_0x37691a,_0x2f6386){return db[_0x4266('0x6')][_0x4266('0x7')]({'raw':_0x35ead5['options']?_0x35ead5[_0x4266('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x35ead5['options']?_0x35ead5[_0x4266('0x8')][_0x4266('0x9')]||null:null,'attributes':_0x35ead5[_0x4266('0x8')]?_0x35ead5['options'][_0x4266('0xa')]||null:null,'limit':_0x35ead5[_0x4266('0x8')]?_0x35ead5['options'][_0x4266('0xb')]||null:null,'include':_0x35ead5[_0x4266('0x8')]?_0x35ead5[_0x4266('0x8')]['include']?_['map'](_0x35ead5[_0x4266('0x8')][_0x4266('0xc')],function(_0x2a3810){return{'model':db[_0x2a3810[_0x4266('0xd')]],'as':_0x2a3810['as'],'attributes':_0x2a3810[_0x4266('0xa')],'include':_0x2a3810[_0x4266('0xc')]?_['map'](_0x2a3810['include'],function(_0x51615c){return{'model':db[_0x51615c[_0x4266('0xd')]],'as':_0x51615c['as'],'attributes':_0x51615c[_0x4266('0xa')],'include':_0x51615c[_0x4266('0xc')]?_[_0x4266('0xe')](_0x51615c[_0x4266('0xc')],function(_0x2b7d50){return{'model':db[_0x2b7d50[_0x4266('0xd')]],'as':_0x2b7d50['as'],'attributes':_0x2b7d50[_0x4266('0xa')]};}):[]};}):[]};}):[]:[]})[_0x4266('0xf')](function(_0x456855){logger[_0x4266('0x10')](_0x4266('0x5'),_0x35ead5);logger[_0x4266('0x11')](_0x4266('0x5'),_0x35ead5,JSON[_0x4266('0x12')](_0x456855));_0x37691a(_0x456855);})[_0x4266('0x13')](function(_0x30d3bd){logger[_0x4266('0x14')](_0x4266('0x5'),_0x30d3bd[_0x4266('0x15')],_0x35ead5);_0x2f6386(_0xf8af53['error'](0x1f4,_0x30d3bd[_0x4266('0x15')]));});});};exports[_0x4266('0x16')]=function(_0x9c002d){var _0x1ee184=this;return new Promise(function(_0x94f5c7,_0x535671){return db['Interval'][_0x4266('0x17')]({'raw':_0x9c002d[_0x4266('0x8')]?_0x9c002d['options']['raw']===undefined?!![]:![]:!![],'where':_0x9c002d[_0x4266('0x8')]?_0x9c002d[_0x4266('0x8')][_0x4266('0x9')]||null:null,'attributes':_0x9c002d[_0x4266('0x8')]?_0x9c002d[_0x4266('0x8')][_0x4266('0xa')]||null:null,'include':_0x9c002d[_0x4266('0x8')]?_0x9c002d['options'][_0x4266('0xc')]?_[_0x4266('0xe')](_0x9c002d[_0x4266('0x8')][_0x4266('0xc')],function(_0x11e090){return{'model':db[_0x11e090['model']],'as':_0x11e090['as'],'attributes':_0x11e090[_0x4266('0xa')],'include':_0x11e090[_0x4266('0xc')]?_[_0x4266('0xe')](_0x11e090[_0x4266('0xc')],function(_0x584aad){return{'model':db[_0x584aad['model']],'as':_0x584aad['as'],'attributes':_0x584aad[_0x4266('0xa')],'include':_0x584aad[_0x4266('0xc')]?_['map'](_0x584aad[_0x4266('0xc')],function(_0x5a8dd5){return{'model':db[_0x5a8dd5[_0x4266('0xd')]],'as':_0x5a8dd5['as'],'attributes':_0x5a8dd5['attributes']};}):[]};}):[]};}):[]:[]})[_0x4266('0xf')](function(_0x56f9b7){logger['info'](_0x4266('0x16'),_0x9c002d);logger['debug'](_0x4266('0x16'),_0x9c002d,JSON[_0x4266('0x12')](_0x56f9b7));_0x94f5c7(_0x56f9b7);})[_0x4266('0x13')](function(_0x2ca2ca){logger['error'](_0x4266('0x16'),_0x2ca2ca[_0x4266('0x15')],_0x9c002d);_0x535671(_0x1ee184[_0x4266('0x14')](0x1f4,_0x2ca2ca[_0x4266('0x15')]));});});};function checkArrayOfIntervals(_0x452921,_0x3b4ef1){var _0x5b9039=[];return db[_0x4266('0x6')][_0x4266('0x7')]({'where':{'id':_0x452921}})['then'](function(_0x4282a9){_0x5b9039=_0x4282a9;return Promise['all'](_0x5b9039[_0x4266('0xe')](function(_0x4cfb22){return _0x4cfb22[_0x4266('0x18')](_0x3b4ef1);}));})['then'](function(_0x5e6046){var _0x3adb05=_0x5e6046[_0x4266('0x19')](function(_0x58a79a,_0x1a4eac){return _0x58a79a||_0x1a4eac;},![]);logger[_0x4266('0x10')](util[_0x4266('0x1a')]('IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)',_0x5b9039[_0x4266('0xe')](function(_0x5c5bf6){return _0x5c5bf6[_0x4266('0x1b')];})[_0x4266('0x1c')](',\x20'),_0x5b9039[_0x4266('0xe')](function(_0x55756c){return _0x55756c['id'];})[_0x4266('0x1c')](',\x20')));return _0x3adb05;});}function checkSingleInterval(_0x5937f6,_0x332212){return db[_0x4266('0x6')][_0x4266('0x1d')](_0x5937f6)[_0x4266('0xf')](function(_0x55d244){if(_0x55d244){logger[_0x4266('0x10')](util[_0x4266('0x1a')]('IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)',_0x55d244[_0x4266('0x1b')],_0x55d244['id']));return _0x55d244[_0x4266('0x18')](_0x332212);}});}exports[_0x4266('0x1e')]=function(_0x44defa){var _0x2b2b48=_0x44defa['intervalIds'];var _0x2519c6=Array[_0x4266('0x1f')](_0x44defa['intervals'])?_0x44defa[_0x4266('0x20')]:typeof _0x44defa['intervals']==='string'?[_0x44defa[_0x4266('0x20')]]:[];var _0x5d9fb1=_0x44defa[_0x4266('0x21')]||undefined;var _0x3266ea=![];if(_0x2519c6[_0x4266('0x22')]){logger[_0x4266('0x10')](util['format'](_0x4266('0x23'),_0x2519c6[_0x4266('0x1c')](';\x20')));}if(_0x5d9fb1){logger[_0x4266('0x10')](util[_0x4266('0x1a')]('IntervalIftime:\x20timezone\x20=\x20%s',_0x5d9fb1));}logger[_0x4266('0x11')](_0x4266('0x24'),_0x3266ea);logger[_0x4266('0x25')](_0x4266('0x1e'),_0x44defa);return Promise['resolve']()[_0x4266('0xf')](function(){if(Array['isArray'](_0x2b2b48)){return checkArrayOfIntervals(_0x2b2b48,_0x5d9fb1);}else if(_0x2b2b48){return checkSingleInterval(_0x2b2b48,_0x5d9fb1);}})[_0x4266('0xf')](function(_0x4f13fe){var _0x450f6d=_0x2519c6[_0x4266('0x19')](function(_0x59eae0,_0x243b5c){return _0x59eae0||iftime(_0x243b5c,_0x5d9fb1);},![]);_0x3266ea=_0x4f13fe||_0x450f6d;return _0x3266ea;})['catch'](function(_0x461473){logger[_0x4266('0x14')](_0x4266('0x1e'),_0x44defa,_0x461473);throw this[_0x4266('0x14')](0x1f4,_0x461473[_0x4266('0x15')]);});}; \ No newline at end of file diff --git a/server/api/jira/index.js b/server/api/jira/index.js new file mode 100644 index 0000000..79a600d --- /dev/null +++ b/server/api/jira/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x38987f,_0xc79720){var _0x4cb697=function(_0x1af5ae){while(--_0x1af5ae){_0x38987f['push'](_0x38987f['shift']());}};_0x4cb697(++_0xc79720);}(_0x5f66,0x1a0));var _0x65f6=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x5f66[_0x126558];return _0x1f6d14;};'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 diff --git a/server/api/jira/jira.controller.js b/server/api/jira/jira.controller.js new file mode 100644 index 0000000..0829613 --- /dev/null +++ b/server/api/jira/jira.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xaf75=['Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','send','body','headers','connection','remoteAddress','socket','bluebird','../../config/logger','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','name','customfield_11504','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','request','utf8','data','end','status','json','error'];(function(_0x280f8b,_0x56922a){var _0x4d1f79=function(_0x17a33c){while(--_0x17a33c){_0x280f8b['push'](_0x280f8b['shift']());}};_0x4d1f79(++_0x56922a);}(_0xaf75,0x1d6));var _0x5af7=function(_0x25b508,_0x366b39){_0x25b508=_0x25b508-0x0;var _0x264927=_0xaf75[_0x25b508];return _0x264927;};'use strict';var BPromise=require(_0x5af7('0x0'));var https=require('https');var logger=require(_0x5af7('0x1'))('api');var USERNAME=_0x5af7('0x2');var PASSWORD=_0x5af7('0x3');function openIssue(_0x1c187d,_0x72719d){var _0x18fbaf={'fields':{'project':{'key':_0x1c187d[_0x5af7('0x4')]||_0x5af7('0x5')},'summary':(_0x1c187d[_0x5af7('0x6')]||_0x5af7('0x7'))+_0x5af7('0x8')+_0x1c187d['ip'],'description':_0x1c187d[_0x5af7('0x9')]||JSON[_0x5af7('0xa')](_0x1c187d),'issuetype':{'name':_0x1c187d[_0x5af7('0xb')]||_0x5af7('0xc')}}};_0x18fbaf[_0x5af7('0xd')][_0x5af7('0xe')]=_0x1c187d[_0x5af7('0xf')];_0x18fbaf['fields'][_0x5af7('0x10')]=_0x1c187d[_0x5af7('0x11')];_0x18fbaf[_0x5af7('0xd')][_0x5af7('0x12')]=_0x1c187d[_0x5af7('0x13')];_0x18fbaf['fields']['customfield_11503']=_0x1c187d[_0x5af7('0x14')];_0x18fbaf[_0x5af7('0xd')][_0x5af7('0x15')]=_0x1c187d['reason'];_0x18fbaf[_0x5af7('0xd')]['customfield_10102']=_0x1c187d['ip'];var _0xeabf01={'host':_0x5af7('0x16'),'port':0x1bb,'path':_0x5af7('0x17'),'method':_0x5af7('0x18'),'timeout':0x4e20,'headers':{'Content-Type':_0x5af7('0x19'),'Authorization':_0x5af7('0x1a')+new Buffer(USERNAME+':'+PASSWORD)['toString']('base64')}};var _0x2acb9e=JSON[_0x5af7('0xa')](_0x18fbaf);var _0x582040=https[_0x5af7('0x1b')](_0xeabf01,function(_0x274870){_0x274870['setEncoding'](_0x5af7('0x1c'));var _0x138b31='';_0x274870['on'](_0x5af7('0x1d'),function(_0x12f8f1){_0x138b31+=_0x12f8f1;});_0x274870['on'](_0x5af7('0x1e'),function(){if(_0x72719d){return _0x72719d[_0x5af7('0x1f')](_0x274870['statusCode'])[_0x5af7('0x20')](JSON['parse'](_0x138b31));}});});_0x582040['on'](_0x5af7('0x21'),function(_0x1f295b){if(_0x72719d){return _0x72719d[_0x5af7('0x1f')](0x1f4)[_0x5af7('0x20')]({'errors':[{'message':_0x5af7('0x22'),'type':_0x5af7('0x23')}]});}});_0x582040['write'](_0x2acb9e);_0x582040[_0x5af7('0x1e')]();}exports['openIssue']=openIssue;exports[_0x5af7('0x24')]=function(_0x314d2b,_0x4f4235){_0x314d2b[_0x5af7('0x25')]['ip']=_0x314d2b[_0x5af7('0x26')]['x-forwarded-for']||_0x314d2b[_0x5af7('0x27')][_0x5af7('0x28')]||_0x314d2b[_0x5af7('0x29')][_0x5af7('0x28')]||_0x314d2b[_0x5af7('0x27')][_0x5af7('0x29')][_0x5af7('0x28')];return openIssue(_0x314d2b[_0x5af7('0x25')],_0x4f4235);}; \ No newline at end of file diff --git a/server/api/jscriptyAnswerReport/index.js b/server/api/jscriptyAnswerReport/index.js new file mode 100644 index 0000000..12d69cc --- /dev/null +++ b/server/api/jscriptyAnswerReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x17ba=['/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x17ba,0xab));var _0xa17b=function(_0x4fadd4,_0x3c1cb9){_0x4fadd4=_0x4fadd4-0x0;var _0x4b8120=_0x17ba[_0x4fadd4];return _0x4b8120;};'use strict';var multer=require(_0xa17b('0x0'));var util=require(_0xa17b('0x1'));var path=require('path');var timeout=require(_0xa17b('0x2'));var express=require(_0xa17b('0x3'));var router=express[_0xa17b('0x4')]();var fs_extra=require(_0xa17b('0x5'));var auth=require(_0xa17b('0x6'));var interaction=require(_0xa17b('0x7'));var config=require(_0xa17b('0x8'));var controller=require(_0xa17b('0x9'));router[_0xa17b('0xa')]('/',auth[_0xa17b('0xb')](),controller[_0xa17b('0xc')]);router[_0xa17b('0xa')](_0xa17b('0xd'),auth[_0xa17b('0xb')](),controller[_0xa17b('0xe')]);router[_0xa17b('0xa')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x10')]);router['post']('/',auth[_0xa17b('0xb')](),controller[_0xa17b('0x11')]);router[_0xa17b('0x12')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x13')]);router[_0xa17b('0x14')]('/:id',auth[_0xa17b('0xb')](),controller[_0xa17b('0x15')]);module[_0xa17b('0x16')]=router; \ No newline at end of file diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js new file mode 100644 index 0000000..aec2717 --- /dev/null +++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x7a54,0x106));var _0x47a5=function(_0x3cccf7,_0x22235b){_0x3cccf7=_0x3cccf7-0x0;var _0x11a3c8=_0x7a54[_0x3cccf7];return _0x11a3c8;};'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 diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js new file mode 100644 index 0000000..1f6a0fe --- /dev/null +++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x236d=['undefined','limit','count','set','apply','save','update','then','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','create','body','catch','destroy','params','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x236d,0x7e));var _0xd236=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x236d[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd236('0x0'));var rimraf=require(_0xd236('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd236('0x2'));var rp=require('request-promise');var moment=require(_0xd236('0x3'));var BPromise=require(_0xd236('0x4'));var Mustache=require(_0xd236('0x5'));var util=require(_0xd236('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xd236('0x7'));var ejs=require(_0xd236('0x8'));var fs=require('fs');var fs_extra=require(_0xd236('0x9'));var _=require(_0xd236('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd236('0xb'));var deskjs=require(_0xd236('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd236('0xd'));var Papa=require(_0xd236('0xe'));var Redis=require('ioredis');var authService=require(_0xd236('0xf'));var qs=require(_0xd236('0x10'));var as=require(_0xd236('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd236('0x12'))(_0xd236('0x13'));var utils=require(_0xd236('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd236('0x15'));var db=require(_0xd236('0x16'))['db'];function respondWithStatusCode(_0x3d1076,_0x160cb1){_0x160cb1=_0x160cb1||0xcc;return function(_0x21f27b){if(_0x21f27b){return _0x3d1076[_0xd236('0x17')](_0x160cb1);}return _0x3d1076[_0xd236('0x18')](_0x160cb1)[_0xd236('0x19')]();};}function respondWithResult(_0x22435c,_0x3d7465){_0x3d7465=_0x3d7465||0xc8;return function(_0x348734){if(_0x348734){return _0x22435c[_0xd236('0x18')](_0x3d7465)[_0xd236('0x1a')](_0x348734);}};}function respondWithFilteredResult(_0x3b60a7,_0xd851b5){return function(_0x3b2535){if(_0x3b2535){var _0x2a076d=typeof _0xd851b5[_0xd236('0x1b')]===_0xd236('0x1c')&&typeof _0xd851b5[_0xd236('0x1d')]==='undefined';var _0x4f06c6=_0x3b2535[_0xd236('0x1e')];var _0x1b02a5=_0x2a076d?0x0:_0xd851b5['offset'];var _0x11c6ec=_0x2a076d?_0x3b2535[_0xd236('0x1e')]:_0xd851b5[_0xd236('0x1b')]+_0xd851b5['limit'];var _0x355b65;if(_0x11c6ec>=_0x4f06c6){_0x11c6ec=_0x4f06c6;_0x355b65=0xc8;}else{_0x355b65=0xce;}_0x3b60a7[_0xd236('0x18')](_0x355b65);return _0x3b60a7[_0xd236('0x1f')]('Content-Range',_0x1b02a5+'-'+_0x11c6ec+'/'+_0x4f06c6)[_0xd236('0x1a')](_0x3b2535);}return null;};}function patchUpdates(_0x3b0a27){return function(_0x26c758){try{jsonpatch[_0xd236('0x20')](_0x26c758,_0x3b0a27,!![]);}catch(_0x2f512d){return BPromise['reject'](_0x2f512d);}return _0x26c758[_0xd236('0x21')]();};}function saveUpdates(_0x30e7aa,_0x1e4ddb){return function(_0x3d1e4e){if(_0x3d1e4e){return _0x3d1e4e[_0xd236('0x22')](_0x30e7aa)['then'](function(_0x4a35d0){return _0x4a35d0;});}return null;};}function removeEntity(_0x257f27,_0x4be5ac){return function(_0x22924d){if(_0x22924d){return _0x22924d['destroy']()[_0xd236('0x23')](function(){_0x257f27[_0xd236('0x18')](0xcc)[_0xd236('0x19')]();});}};}function handleEntityNotFound(_0x49d822,_0x41049a){return function(_0x339b08){if(!_0x339b08){_0x49d822[_0xd236('0x17')](0x194);}return _0x339b08;};}function handleError(_0x13ba7a,_0x3a30d8){_0x3a30d8=_0x3a30d8||0x1f4;return function(_0x17f927){logger[_0xd236('0x24')](_0x17f927[_0xd236('0x25')]);if(_0x17f927[_0xd236('0x26')]){delete _0x17f927[_0xd236('0x26')];}_0x13ba7a[_0xd236('0x18')](_0x3a30d8)[_0xd236('0x27')](_0x17f927);};}exports[_0xd236('0x28')]=function(_0x23714d,_0x3108f4){var _0x28175d={},_0x436a19={},_0x471ed6={'count':0x0,'rows':[]};var _0x463fc8=_[_0xd236('0x29')](db[_0xd236('0x2a')][_0xd236('0x2b')],function(_0x3c1617){return{'name':_0x3c1617[_0xd236('0x2c')],'type':_0x3c1617[_0xd236('0x2d')][_0xd236('0x2e')]};});_0x436a19[_0xd236('0x2f')]=_[_0xd236('0x29')](_0x463fc8,_0xd236('0x26'));_0x436a19['query']=_[_0xd236('0x30')](_0x23714d['query']);_0x436a19[_0xd236('0x31')]=_[_0xd236('0x32')](_0x436a19[_0xd236('0x2f')],_0x436a19['query']);_0x28175d[_0xd236('0x33')]=_[_0xd236('0x32')](_0x436a19[_0xd236('0x2f')],qs[_0xd236('0x34')](_0x23714d[_0xd236('0x35')][_0xd236('0x34')]));_0x28175d[_0xd236('0x33')]=_0x28175d['attributes'][_0xd236('0x36')]?_0x28175d['attributes']:_0x436a19[_0xd236('0x2f')];if(!_0x23714d['query'][_0xd236('0x37')](_0xd236('0x38'))){_0x28175d[_0xd236('0x1d')]=qs[_0xd236('0x1d')](_0x23714d[_0xd236('0x35')][_0xd236('0x1d')]);_0x28175d[_0xd236('0x1b')]=qs[_0xd236('0x1b')](_0x23714d[_0xd236('0x35')][_0xd236('0x1b')]);}_0x28175d[_0xd236('0x39')]=qs[_0xd236('0x3a')](_0x23714d[_0xd236('0x35')]['sort']);_0x28175d[_0xd236('0x3b')]=qs[_0xd236('0x31')](_[_0xd236('0x3c')](_0x23714d['query'],_0x436a19[_0xd236('0x31')]),_0x463fc8);if(_0x23714d[_0xd236('0x35')][_0xd236('0x3d')]){_0x28175d[_0xd236('0x3b')]=_[_0xd236('0x3e')](_0x28175d[_0xd236('0x3b')],{'$or':_['map'](_0x463fc8,function(_0x696bed){if(_0x696bed[_0xd236('0x2d')]!==_0xd236('0x3f')){var _0x3c798f={};_0x3c798f[_0x696bed[_0xd236('0x26')]]={'$like':'%'+_0x23714d[_0xd236('0x35')]['filter']+'%'};return _0x3c798f;}})});}_0x28175d=_[_0xd236('0x3e')]({},_0x28175d,_0x23714d[_0xd236('0x40')]);var _0x2ba3ae={'where':_0x28175d['where']};return db[_0xd236('0x2a')]['count'](_0x2ba3ae)[_0xd236('0x23')](function(_0x5793bf){_0x471ed6['count']=_0x5793bf;if(_0x23714d[_0xd236('0x35')][_0xd236('0x41')]){_0x28175d[_0xd236('0x42')]=[{'all':!![]}];}return db[_0xd236('0x2a')][_0xd236('0x43')](_0x28175d);})['then'](function(_0x4d0d65){_0x471ed6[_0xd236('0x44')]=_0x4d0d65;return _0x471ed6;})[_0xd236('0x23')](respondWithFilteredResult(_0x3108f4,_0x28175d))['catch'](handleError(_0x3108f4,null));};exports[_0xd236('0x45')]=function(_0x342fd5,_0x2d815b){var _0x55007d={'raw':!![],'where':{'id':_0x342fd5['params']['id']}},_0x58a93a={};_0x58a93a[_0xd236('0x2f')]=_['keys'](db['JscriptyAnswerReport'][_0xd236('0x2b')]);_0x58a93a[_0xd236('0x35')]=_[_0xd236('0x30')](_0x342fd5[_0xd236('0x35')]);_0x58a93a[_0xd236('0x31')]=_['intersection'](_0x58a93a['model'],_0x58a93a[_0xd236('0x35')]);_0x55007d[_0xd236('0x33')]=_[_0xd236('0x32')](_0x58a93a[_0xd236('0x2f')],qs[_0xd236('0x34')](_0x342fd5[_0xd236('0x35')]['fields']));_0x55007d[_0xd236('0x33')]=_0x55007d['attributes'][_0xd236('0x36')]?_0x55007d[_0xd236('0x33')]:_0x58a93a['model'];if(_0x342fd5['query']['includeAll']){_0x55007d['include']=[{'all':!![]}];}_0x55007d=_[_0xd236('0x3e')]({},_0x55007d,_0x342fd5[_0xd236('0x40')]);return db[_0xd236('0x2a')][_0xd236('0x46')](_0x55007d)[_0xd236('0x23')](handleEntityNotFound(_0x2d815b,null))['then'](respondWithResult(_0x2d815b,null))['catch'](handleError(_0x2d815b,null));};exports[_0xd236('0x47')]=function(_0x7c0650,_0xbf4ba9){return db[_0xd236('0x2a')][_0xd236('0x47')](_0x7c0650[_0xd236('0x48')],{})['then'](respondWithResult(_0xbf4ba9,0xc9))[_0xd236('0x49')](handleError(_0xbf4ba9,null));};exports['update']=function(_0x223a14,_0x2c8861){if(_0x223a14['body']['id']){delete _0x223a14[_0xd236('0x48')]['id'];}return db[_0xd236('0x2a')]['find']({'where':{'id':_0x223a14['params']['id']}})[_0xd236('0x23')](handleEntityNotFound(_0x2c8861,null))[_0xd236('0x23')](saveUpdates(_0x223a14[_0xd236('0x48')],null))[_0xd236('0x23')](respondWithResult(_0x2c8861,null))['catch'](handleError(_0x2c8861,null));};exports[_0xd236('0x4a')]=function(_0x43c12b,_0x3d8ca6){return db[_0xd236('0x2a')][_0xd236('0x46')]({'where':{'id':_0x43c12b[_0xd236('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3d8ca6,null))['then'](removeEntity(_0x3d8ca6,null))[_0xd236('0x49')](handleError(_0x3d8ca6,null));};exports['describe']=function(_0xa39da6,_0x30c336){return db['JscriptyAnswerReport'][_0xd236('0x4c')]()[_0xd236('0x23')](respondWithResult(_0x30c336,null))['catch'](handleError(_0x30c336,null));}; \ No newline at end of file diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js new file mode 100644 index 0000000..246a742 --- /dev/null +++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdfc0=['report_jscripty_answers','lodash','../../config/logger','api','bluebird','../../config/environment','./jscriptyAnswerReport.attributes','exports','JscriptyAnswerReport'];(function(_0x479f93,_0x5d9ba0){var _0x33afbc=function(_0x4ff7c2){while(--_0x4ff7c2){_0x479f93['push'](_0x479f93['shift']());}};_0x33afbc(++_0x5d9ba0);}(_0xdfc0,0x1d5));var _0x0dfc=function(_0x1abcb6,_0x1ef8b0){_0x1abcb6=_0x1abcb6-0x0;var _0x40a2e9=_0xdfc0[_0x1abcb6];return _0x40a2e9;};'use strict';var _=require(_0x0dfc('0x0'));var util=require('util');var logger=require(_0x0dfc('0x1'))(_0x0dfc('0x2'));var moment=require('moment');var BPromise=require(_0x0dfc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0dfc('0x4'));var attributes=require(_0x0dfc('0x5'));module[_0x0dfc('0x6')]=function(_0xfd345c,_0x5e3295){return _0xfd345c['define'](_0x0dfc('0x7'),attributes,{'tableName':_0x0dfc('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js new file mode 100644 index 0000000..b085d56 --- /dev/null +++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe0ff=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x1bd2a6,_0x45f0fc){var _0x525206=function(_0x3ae097){while(--_0x3ae097){_0x1bd2a6['push'](_0x1bd2a6['shift']());}};_0x525206(++_0x45f0fc);}(_0xe0ff,0x1d9));var _0xfe0f=function(_0x53dc68,_0x2602ad){_0x53dc68=_0x53dc68-0x0;var _0x286063=_0xe0ff[_0x53dc68];return _0x286063;};'use strict';var _=require(_0xfe0f('0x0'));var util=require(_0xfe0f('0x1'));var moment=require(_0xfe0f('0x2'));var BPromise=require(_0xfe0f('0x3'));var rs=require(_0xfe0f('0x4'));var fs=require('fs');var Redis=require(_0xfe0f('0x5'));var db=require(_0xfe0f('0x6'))['db'];var utils=require(_0xfe0f('0x7'));var logger=require(_0xfe0f('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfe0f('0x9'));var client=jayson[_0xfe0f('0xa')][_0xfe0f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2671fa,_0x49ad0e,_0x45cdb6){return new BPromise(function(_0xda08fc,_0x172159){return client[_0xfe0f('0xc')](_0x2671fa,_0x45cdb6)[_0xfe0f('0xd')](function(_0x1187e8){logger[_0xfe0f('0xe')](_0xfe0f('0xf'),_0x49ad0e,_0xfe0f('0x10'));logger[_0xfe0f('0x11')](_0xfe0f('0x12'),_0x49ad0e,'request\x20sent',JSON[_0xfe0f('0x13')](_0x1187e8));if(_0x1187e8[_0xfe0f('0x14')]){if(_0x1187e8[_0xfe0f('0x14')][_0xfe0f('0x15')]===0x1f4){logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x49ad0e,_0x1187e8[_0xfe0f('0x14')][_0xfe0f('0x16')]);return _0x172159(_0x1187e8[_0xfe0f('0x14')][_0xfe0f('0x16')]);}logger[_0xfe0f('0x14')](_0xfe0f('0xf'),_0x49ad0e,_0x1187e8[_0xfe0f('0x14')][_0xfe0f('0x16')]);return _0xda08fc(_0x1187e8[_0xfe0f('0x14')][_0xfe0f('0x16')]);}else{logger[_0xfe0f('0xe')](_0xfe0f('0xf'),_0x49ad0e,_0xfe0f('0x10'));_0xda08fc(_0x1187e8[_0xfe0f('0x17')][_0xfe0f('0x16')]);}})[_0xfe0f('0x18')](function(_0x1d2616){logger['error'](_0xfe0f('0xf'),_0x49ad0e,_0x1d2616);_0x172159(_0x1d2616);});});} \ No newline at end of file diff --git a/server/api/jscriptyProject/index.js b/server/api/jscriptyProject/index.js new file mode 100644 index 0000000..24bd237 --- /dev/null +++ b/server/api/jscriptyProject/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x377a=['30s','getSummary','create','post','/:id/clone','clone','put','/:id','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','isAuthenticated','index','show','get','getSessions','/:id/answers','getAnswers','/:id/summary'];(function(_0x445f11,_0x275ef5){var _0x44f25f=function(_0xaeaedb){while(--_0xaeaedb){_0x445f11['push'](_0x445f11['shift']());}};_0x44f25f(++_0x275ef5);}(_0x377a,0xe1));var _0xa377=function(_0x331615,_0x13aebd){_0x331615=_0x331615-0x0;var _0x4ba773=_0x377a[_0x331615];return _0x4ba773;};'use strict';var multer=require('multer');var util=require(_0xa377('0x0'));var path=require(_0xa377('0x1'));var timeout=require(_0xa377('0x2'));var express=require(_0xa377('0x3'));var router=express[_0xa377('0x4')]();var fs_extra=require(_0xa377('0x5'));var auth=require(_0xa377('0x6'));var interaction=require(_0xa377('0x7'));var config=require(_0xa377('0x8'));var controller=require(_0xa377('0x9'));router['get']('/',auth[_0xa377('0xa')](),controller[_0xa377('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa377('0xc')]);router[_0xa377('0xd')]('/:id/sessions',auth[_0xa377('0xa')](),controller[_0xa377('0xe')]);router[_0xa377('0xd')](_0xa377('0xf'),auth[_0xa377('0xa')](),controller[_0xa377('0x10')]);router[_0xa377('0xd')](_0xa377('0x11'),auth[_0xa377('0xa')](),timeout(_0xa377('0x12')),controller[_0xa377('0x13')]);router['post']('/',auth[_0xa377('0xa')](),controller[_0xa377('0x14')]);router[_0xa377('0x15')](_0xa377('0x16'),auth['isAuthenticated'](),controller[_0xa377('0x17')]);router[_0xa377('0x18')](_0xa377('0x19'),auth[_0xa377('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xa377('0x1a')]=router; \ No newline at end of file diff --git a/server/api/jscriptyProject/jscriptyProject.attributes.js b/server/api/jscriptyProject/jscriptyProject.attributes.js new file mode 100644 index 0000000..cf00d79 --- /dev/null +++ b/server/api/jscriptyProject/jscriptyProject.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9b1a=['description','BOOLEAN','lodash','util','exports','name','STRING','isObjectLike','formData','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue'];(function(_0x5b6064,_0x376df5){var _0x1f5b14=function(_0x361967){while(--_0x361967){_0x5b6064['push'](_0x5b6064['shift']());}};_0x1f5b14(++_0x376df5);}(_0x9b1a,0x13a));var _0xa9b1=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0x9b1a[_0x211632];return _0x5a1da1;};'use strict';var Sequelize=require('sequelize');var _=require(_0xa9b1('0x0'));var util=require(_0xa9b1('0x1'));module[_0xa9b1('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0xa9b1('0x3')},'description':{'type':Sequelize[_0xa9b1('0x4')]},'formData':{'type':Sequelize['TEXT']('long'),'set':function(_0x592bac){if(_[_0xa9b1('0x5')](_0x592bac)){this['setDataValue'](_0xa9b1('0x6'),JSON['stringify'](_0x592bac));}else if(_['isString'](_0x592bac)){this[_0xa9b1('0x7')](_0xa9b1('0x6'),_0x592bac);}else{this['setDataValue'](_0xa9b1('0x6'),util[_0xa9b1('0x8')](_0xa9b1('0x9'),this['getDataValue']('name')||'',this[_0xa9b1('0xa')](_0xa9b1('0xb'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xa9b1('0xc')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xa9b1('0xc')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/jscriptyProject/jscriptyProject.controller.js b/server/api/jscriptyProject/jscriptyProject.controller.js new file mode 100644 index 0000000..4352d48 --- /dev/null +++ b/server/api/jscriptyProject/jscriptyProject.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6215=['query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rawAttributes','omit','updatedAt','body','getSessions','findOne','JscriptySessionReport','hasOwnProperty','ProjectId','findAll','getAnswers','JscriptyAnswerReport','fromCharCode','toString','indexOf','getSummary','startTime','parse','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','now','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','lodash','squel','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','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','Projects','UserProfileResource','name','send','index','map','JscriptyProject','fieldName','type','key','model','keys'];(function(_0x40ca65,_0x42956d){var _0x59da60=function(_0x17fb85){while(--_0x17fb85){_0x40ca65['push'](_0x40ca65['shift']());}};_0x59da60(++_0x42956d);}(_0x6215,0x198));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5621('0x0'));var rimraf=require(_0x5621('0x1'));var zipdir=require(_0x5621('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5621('0x3'));var moment=require(_0x5621('0x4'));var BPromise=require(_0x5621('0x5'));var Mustache=require(_0x5621('0x6'));var util=require(_0x5621('0x7'));var path=require(_0x5621('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5621('0x9'));var squel=require(_0x5621('0xa'));var crypto=require(_0x5621('0xb'));var jsforce=require(_0x5621('0xc'));var deskjs=require(_0x5621('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5621('0xe'));var Papa=require(_0x5621('0xf'));var Redis=require(_0x5621('0x10'));var authService=require(_0x5621('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5621('0x12'));var hardwareService=require(_0x5621('0x13'));var logger=require(_0x5621('0x14'))('api');var utils=require(_0x5621('0x15'));var config=require(_0x5621('0x16'));var licenseUtil=require(_0x5621('0x17'));var db=require(_0x5621('0x18'))['db'];function respondWithStatusCode(_0x38d23d,_0x30e179){_0x30e179=_0x30e179||0xcc;return function(_0xac5caf){if(_0xac5caf){return _0x38d23d[_0x5621('0x19')](_0x30e179);}return _0x38d23d[_0x5621('0x1a')](_0x30e179)[_0x5621('0x1b')]();};}function respondWithResult(_0x532564,_0x32f3fc){_0x32f3fc=_0x32f3fc||0xc8;return function(_0x1067c0){if(_0x1067c0){return _0x532564[_0x5621('0x1a')](_0x32f3fc)['json'](_0x1067c0);}};}function respondWithFilteredResult(_0x35f0df,_0x2a4cbc){return function(_0x555e21){if(_0x555e21){var _0x55ca9c=typeof _0x2a4cbc[_0x5621('0x1c')]===_0x5621('0x1d')&&typeof _0x2a4cbc[_0x5621('0x1e')]===_0x5621('0x1d');var _0x2f3289=_0x555e21[_0x5621('0x1f')];var _0x374f44=_0x55ca9c?0x0:_0x2a4cbc[_0x5621('0x1c')];var _0x2baba3=_0x55ca9c?_0x555e21['count']:_0x2a4cbc[_0x5621('0x1c')]+_0x2a4cbc[_0x5621('0x1e')];var _0x5a9667;if(_0x2baba3>=_0x2f3289){_0x2baba3=_0x2f3289;_0x5a9667=0xc8;}else{_0x5a9667=0xce;}_0x35f0df[_0x5621('0x1a')](_0x5a9667);return _0x35f0df['set'](_0x5621('0x20'),_0x374f44+'-'+_0x2baba3+'/'+_0x2f3289)[_0x5621('0x21')](_0x555e21);}return null;};}function patchUpdates(_0x179830){return function(_0x3f6791){try{jsonpatch[_0x5621('0x22')](_0x3f6791,_0x179830,!![]);}catch(_0x5bbabe){return BPromise[_0x5621('0x23')](_0x5bbabe);}return _0x3f6791[_0x5621('0x24')]();};}function saveUpdates(_0x16cb32,_0x3eaa1a){return function(_0x52a148){if(_0x52a148){return _0x52a148[_0x5621('0x25')](_0x16cb32)[_0x5621('0x26')](function(_0x3527e0){return _0x3527e0;});}return null;};}function removeEntity(_0x168e5a,_0x1a3ee6){return function(_0x2af50a){if(_0x2af50a){return _0x2af50a[_0x5621('0x27')]()['then'](function(){var _0x23ba00=_0x2af50a['get']({'plain':!![]});var _0xb6800=_0x5621('0x28');return db[_0x5621('0x29')][_0x5621('0x27')]({'where':{'type':_0xb6800,'resourceId':_0x23ba00['id']}})[_0x5621('0x26')](function(){return _0x2af50a;});})[_0x5621('0x26')](function(){_0x168e5a[_0x5621('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x226d73,_0x250f65){return function(_0x1c8e5a){if(!_0x1c8e5a){_0x226d73[_0x5621('0x19')](0x194);}return _0x1c8e5a;};}function handleError(_0x5b17dd,_0x161c93){_0x161c93=_0x161c93||0x1f4;return function(_0x2f0600){logger['error'](_0x2f0600['stack']);if(_0x2f0600[_0x5621('0x2a')]){delete _0x2f0600[_0x5621('0x2a')];}_0x5b17dd[_0x5621('0x1a')](_0x161c93)[_0x5621('0x2b')](_0x2f0600);};}exports[_0x5621('0x2c')]=function(_0xc1af98,_0x280974){var _0x5b138f={},_0x1cc873={},_0x45a33d={'count':0x0,'rows':[]};var _0x45313e=_[_0x5621('0x2d')](db[_0x5621('0x2e')]['rawAttributes'],function(_0x311060){return{'name':_0x311060[_0x5621('0x2f')],'type':_0x311060[_0x5621('0x30')][_0x5621('0x31')]};});_0x1cc873[_0x5621('0x32')]=_['map'](_0x45313e,_0x5621('0x2a'));_0x1cc873['query']=_[_0x5621('0x33')](_0xc1af98[_0x5621('0x34')]);_0x1cc873[_0x5621('0x35')]=_[_0x5621('0x36')](_0x1cc873[_0x5621('0x32')],_0x1cc873['query']);_0x5b138f[_0x5621('0x37')]=_[_0x5621('0x36')](_0x1cc873[_0x5621('0x32')],qs[_0x5621('0x38')](_0xc1af98[_0x5621('0x34')]['fields']));_0x5b138f[_0x5621('0x37')]=_0x5b138f[_0x5621('0x37')][_0x5621('0x39')]?_0x5b138f['attributes']:_0x1cc873[_0x5621('0x32')];if(!_0xc1af98[_0x5621('0x34')]['hasOwnProperty'](_0x5621('0x3a'))){_0x5b138f[_0x5621('0x1e')]=qs[_0x5621('0x1e')](_0xc1af98[_0x5621('0x34')][_0x5621('0x1e')]);_0x5b138f[_0x5621('0x1c')]=qs[_0x5621('0x1c')](_0xc1af98['query'][_0x5621('0x1c')]);}_0x5b138f[_0x5621('0x3b')]=qs[_0x5621('0x3c')](_0xc1af98[_0x5621('0x34')][_0x5621('0x3c')]);_0x5b138f[_0x5621('0x3d')]=qs['filters'](_[_0x5621('0x3e')](_0xc1af98[_0x5621('0x34')],_0x1cc873[_0x5621('0x35')]),_0x45313e);if(_0xc1af98['query']['filter']){_0x5b138f[_0x5621('0x3d')]=_['merge'](_0x5b138f['where'],{'$or':_[_0x5621('0x2d')](_0x45313e,function(_0x65f703){if(_0x65f703[_0x5621('0x30')]!=='VIRTUAL'){var _0x460262={};_0x460262[_0x65f703[_0x5621('0x2a')]]={'$like':'%'+_0xc1af98['query'][_0x5621('0x3f')]+'%'};return _0x460262;}})});}_0x5b138f=_[_0x5621('0x40')]({},_0x5b138f,_0xc1af98[_0x5621('0x41')]);var _0x3574c2={'where':_0x5b138f[_0x5621('0x3d')]};return db[_0x5621('0x2e')][_0x5621('0x1f')](_0x3574c2)[_0x5621('0x26')](function(_0x5e3c29){_0x45a33d[_0x5621('0x1f')]=_0x5e3c29;if(_0xc1af98['query'][_0x5621('0x42')]){_0x5b138f[_0x5621('0x43')]=[{'all':!![]}];}return db[_0x5621('0x2e')]['findAll'](_0x5b138f);})[_0x5621('0x26')](function(_0x21a006){_0x45a33d[_0x5621('0x44')]=_0x21a006;return _0x45a33d;})[_0x5621('0x26')](respondWithFilteredResult(_0x280974,_0x5b138f))[_0x5621('0x45')](handleError(_0x280974,null));};exports[_0x5621('0x46')]=function(_0x3bb41f,_0x483c1f){var _0xf36e3={'raw':![],'where':{'id':_0x3bb41f[_0x5621('0x47')]['id']}},_0x2154c8={};_0x2154c8[_0x5621('0x32')]=_[_0x5621('0x33')](db[_0x5621('0x2e')]['rawAttributes']);_0x2154c8[_0x5621('0x34')]=_['keys'](_0x3bb41f[_0x5621('0x34')]);_0x2154c8['filters']=_[_0x5621('0x36')](_0x2154c8[_0x5621('0x32')],_0x2154c8[_0x5621('0x34')]);_0xf36e3[_0x5621('0x37')]=_[_0x5621('0x36')](_0x2154c8[_0x5621('0x32')],qs[_0x5621('0x38')](_0x3bb41f['query'][_0x5621('0x38')]));_0xf36e3[_0x5621('0x37')]=_0xf36e3[_0x5621('0x37')]['length']?_0xf36e3[_0x5621('0x37')]:_0x2154c8[_0x5621('0x32')];if(_0x3bb41f[_0x5621('0x34')][_0x5621('0x42')]){_0xf36e3[_0x5621('0x43')]=[{'all':!![]}];}_0xf36e3=_[_0x5621('0x40')]({},_0xf36e3,_0x3bb41f[_0x5621('0x41')]);return db[_0x5621('0x2e')][_0x5621('0x48')](_0xf36e3)[_0x5621('0x26')](handleEntityNotFound(_0x483c1f,null))[_0x5621('0x26')](respondWithResult(_0x483c1f,null))['catch'](handleError(_0x483c1f,null));};exports[_0x5621('0x49')]=function(_0x3cb2d9,_0x5b2607){return db[_0x5621('0x2e')][_0x5621('0x49')](_0x3cb2d9['body'],{})['then'](function(_0x248cff){var _0x3f25e2=_0x3cb2d9['user']['get']({'plain':!![]});if(!_0x3f25e2)throw new Error(_0x5621('0x4a'));if(_0x3f25e2[_0x5621('0x4b')]===_0x5621('0x4c')){var _0x35205c=_0x248cff[_0x5621('0x4d')]({'plain':!![]});var _0xccab9b='Projects';return db[_0x5621('0x4e')]['find']({'where':{'name':_0xccab9b,'userProfileId':_0x3f25e2[_0x5621('0x4f')]},'raw':!![]})['then'](function(_0x51e65d){if(_0x51e65d&&_0x51e65d[_0x5621('0x50')]===0x0){return db[_0x5621('0x29')][_0x5621('0x49')]({'name':_0x35205c['name'],'resourceId':_0x35205c['id'],'type':_0x51e65d[_0x5621('0x2a')],'sectionId':_0x51e65d['id']},{})['then'](function(){return _0x248cff;});}else{return _0x248cff;}})[_0x5621('0x45')](function(_0x45e0c1){logger[_0x5621('0x51')](_0x5621('0x52'),_0x45e0c1);throw _0x45e0c1;});}return _0x248cff;})[_0x5621('0x26')](respondWithResult(_0x5b2607,0xc9))[_0x5621('0x45')](handleError(_0x5b2607,null));};exports['clone']=function(_0xfc075f,_0x205829){var _0xaaac2d={'where':{'id':_0xfc075f[_0x5621('0x47')]['id']}},_0x2d4375={};_0x2d4375[_0x5621('0x32')]=_[_0x5621('0x33')](db[_0x5621('0x2e')][_0x5621('0x53')]);_0xaaac2d['attributes']=_[_0x5621('0x36')](_0x2d4375[_0x5621('0x32')],qs[_0x5621('0x38')](_0xfc075f[_0x5621('0x34')][_0x5621('0x38')]));_0xaaac2d['attributes']=_0xaaac2d['attributes'][_0x5621('0x39')]?_0xaaac2d[_0x5621('0x37')]:_0x2d4375['model'];if(_0xfc075f[_0x5621('0x34')][_0x5621('0x42')]){_0xaaac2d[_0x5621('0x43')]=[{'all':!![]}];}_0xaaac2d=_['merge']({},_0xaaac2d,_0xfc075f[_0x5621('0x41')]);return db[_0x5621('0x2e')][_0x5621('0x48')](_0xaaac2d)[_0x5621('0x26')](handleEntityNotFound(_0x205829,null))[_0x5621('0x26')](function(_0x4f9e73){if(_0x4f9e73){var _0x1fd36d=_0x4f9e73[_0x5621('0x4d')]({'plain':!![]});_0x1fd36d=qs[_0x5621('0x54')](_0x1fd36d,['id','createdAt',_0x5621('0x55')]);_0xfc075f[_0x5621('0x56')]=_[_0x5621('0x54')](_0xfc075f[_0x5621('0x56')],['id','createdAt',_0x5621('0x55')]);return db[_0x5621('0x2e')][_0x5621('0x49')](_[_0x5621('0x40')](_0x1fd36d,_0xfc075f[_0x5621('0x56')]),{'include':_0xfc075f['query']['includeAll']?[{'all':!![]}]:undefined})[_0x5621('0x26')](function(_0x2305ae){var _0x17728b=_0xfc075f['user']['get']({'plain':!![]});if(!_0x17728b)throw new Error(_0x5621('0x4a'));if(_0x17728b['role']===_0x5621('0x4c')){var _0x2231ae=_0x2305ae[_0x5621('0x4d')]({'plain':!![]});var _0x3409c4=_0x5621('0x28');return db[_0x5621('0x4e')][_0x5621('0x48')]({'where':{'name':_0x3409c4,'userProfileId':_0x17728b['userProfileId']},'raw':!![]})[_0x5621('0x26')](function(_0x874baa){if(_0x874baa&&_0x874baa[_0x5621('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x2231ae[_0x5621('0x2a')],'resourceId':_0x2231ae['id'],'type':_0x874baa[_0x5621('0x2a')],'sectionId':_0x874baa['id']},{})['then'](function(){return _0x2305ae;});}else{return _0x2305ae;}})[_0x5621('0x45')](function(_0x9c9fc7){logger[_0x5621('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x9c9fc7);throw _0x9c9fc7;});}return _0x2305ae;});}})['then'](respondWithResult(_0x205829,0xc9))[_0x5621('0x45')](handleError(_0x205829,null));};exports[_0x5621('0x25')]=function(_0x488e40,_0x3a9769){if(_0x488e40[_0x5621('0x56')]['id']){delete _0x488e40['body']['id'];}return db[_0x5621('0x2e')][_0x5621('0x48')]({'where':{'id':_0x488e40['params']['id']}})[_0x5621('0x26')](handleEntityNotFound(_0x3a9769,null))[_0x5621('0x26')](saveUpdates(_0x488e40[_0x5621('0x56')],null))[_0x5621('0x26')](respondWithResult(_0x3a9769,null))[_0x5621('0x45')](handleError(_0x3a9769,null));};exports[_0x5621('0x27')]=function(_0x10b630,_0x583644){return db[_0x5621('0x2e')][_0x5621('0x48')]({'where':{'id':_0x10b630[_0x5621('0x47')]['id']}})['then'](handleEntityNotFound(_0x583644,null))['then'](removeEntity(_0x583644,null))[_0x5621('0x45')](handleError(_0x583644,null));};exports[_0x5621('0x57')]=function(_0x32839c,_0x54a6a5,_0x540616){var _0x2cc10d={'raw':!![],'where':{}};var _0x3a578b={};var _0x23136e={'count':0x0,'rows':[]};return db[_0x5621('0x2e')][_0x5621('0x58')]({'where':{'id':_0x32839c[_0x5621('0x47')]['id']}})['then'](handleEntityNotFound(_0x54a6a5,null))[_0x5621('0x26')](function(_0x3852e0){if(_0x3852e0){_0x3a578b[_0x5621('0x32')]=_[_0x5621('0x33')](db[_0x5621('0x59')][_0x5621('0x53')]);_0x3a578b[_0x5621('0x34')]=_[_0x5621('0x33')](_0x32839c[_0x5621('0x34')]);_0x3a578b[_0x5621('0x35')]=_[_0x5621('0x36')](_0x3a578b[_0x5621('0x32')],_0x3a578b[_0x5621('0x34')]);_0x2cc10d[_0x5621('0x37')]=_[_0x5621('0x36')](_0x3a578b[_0x5621('0x32')],qs[_0x5621('0x38')](_0x32839c['query']['fields']));_0x2cc10d[_0x5621('0x37')]=_0x2cc10d[_0x5621('0x37')][_0x5621('0x39')]?_0x2cc10d[_0x5621('0x37')]:_0x3a578b['model'];if(!_0x32839c[_0x5621('0x34')][_0x5621('0x5a')](_0x5621('0x3a'))){_0x2cc10d[_0x5621('0x1e')]=qs['limit'](_0x32839c[_0x5621('0x34')][_0x5621('0x1e')]);_0x2cc10d[_0x5621('0x1c')]=qs['offset'](_0x32839c[_0x5621('0x34')]['offset']);}_0x2cc10d[_0x5621('0x3b')]=qs[_0x5621('0x3c')](_0x32839c['query'][_0x5621('0x3c')]);_0x2cc10d['where']=qs['filters'](_[_0x5621('0x3e')](_0x32839c[_0x5621('0x34')],_0x3a578b[_0x5621('0x35')]));_0x2cc10d[_0x5621('0x3d')][_0x5621('0x5b')]=_0x3852e0['id'];if(_0x32839c[_0x5621('0x34')][_0x5621('0x3f')]){_0x2cc10d['where']=_[_0x5621('0x40')](_0x2cc10d[_0x5621('0x3d')],{'$or':_[_0x5621('0x2d')](_0x2cc10d[_0x5621('0x37')],function(_0x327945){var _0x3f7b89={};_0x3f7b89[_0x327945]={'$like':'%'+_0x32839c['query'][_0x5621('0x3f')]+'%'};return _0x3f7b89;})});}_0x2cc10d=_['merge']({},_0x2cc10d,_0x32839c[_0x5621('0x41')]);return db[_0x5621('0x59')][_0x5621('0x1f')]({'where':_0x2cc10d[_0x5621('0x3d')]})['then'](function(_0x187d2d){_0x23136e['count']=_0x187d2d;if(_0x32839c[_0x5621('0x34')]['includeAll']){_0x2cc10d[_0x5621('0x43')]=[{'all':!![]}];}return db[_0x5621('0x59')][_0x5621('0x5c')](_0x2cc10d);})[_0x5621('0x26')](function(_0x15d56){_0x23136e[_0x5621('0x44')]=_0x15d56;return _0x23136e;});}})[_0x5621('0x26')](respondWithFilteredResult(_0x54a6a5,_0x2cc10d))[_0x5621('0x45')](handleError(_0x54a6a5,null));};exports[_0x5621('0x5d')]=function(_0x30fba0,_0x3b8188,_0x3ffc31){var _0x105ddb={'raw':!![],'where':{}};var _0x434ba2={};var _0xfbcdaf={'count':0x0,'rows':[]};return db[_0x5621('0x2e')][_0x5621('0x58')]({'where':{'id':_0x30fba0[_0x5621('0x47')]['id']}})['then'](handleEntityNotFound(_0x3b8188,null))[_0x5621('0x26')](function(_0x53a40c){if(_0x53a40c){_0x434ba2[_0x5621('0x32')]=_[_0x5621('0x33')](db[_0x5621('0x5e')]['rawAttributes']);_0x434ba2[_0x5621('0x34')]=_[_0x5621('0x33')](_0x30fba0[_0x5621('0x34')]);_0x434ba2[_0x5621('0x35')]=_[_0x5621('0x36')](_0x434ba2[_0x5621('0x32')],_0x434ba2[_0x5621('0x34')]);_0x105ddb['attributes']=_[_0x5621('0x36')](_0x434ba2[_0x5621('0x32')],qs[_0x5621('0x38')](_0x30fba0[_0x5621('0x34')]['fields']));_0x105ddb[_0x5621('0x37')]=_0x105ddb[_0x5621('0x37')][_0x5621('0x39')]?_0x105ddb[_0x5621('0x37')]:_0x434ba2[_0x5621('0x32')];if(!_0x30fba0[_0x5621('0x34')][_0x5621('0x5a')](_0x5621('0x3a'))){_0x105ddb[_0x5621('0x1e')]=qs[_0x5621('0x1e')](_0x30fba0['query'][_0x5621('0x1e')]);_0x105ddb[_0x5621('0x1c')]=qs[_0x5621('0x1c')](_0x30fba0[_0x5621('0x34')]['offset']);}_0x105ddb[_0x5621('0x3b')]=qs[_0x5621('0x3c')](_0x30fba0['query'][_0x5621('0x3c')]);_0x105ddb[_0x5621('0x3d')]=qs[_0x5621('0x35')](_[_0x5621('0x3e')](_0x30fba0[_0x5621('0x34')],_0x434ba2[_0x5621('0x35')]));_0x105ddb[_0x5621('0x3d')][_0x5621('0x5b')]=_0x53a40c['id'];if(_0x30fba0[_0x5621('0x34')]['filter']){_0x105ddb[_0x5621('0x3d')]=_[_0x5621('0x40')](_0x105ddb[_0x5621('0x3d')],{'$or':_[_0x5621('0x2d')](_0x105ddb[_0x5621('0x37')],function(_0x205c89){var _0x2270f4={};_0x2270f4[_0x205c89]={'$like':'%'+_0x30fba0['query'][_0x5621('0x3f')]+'%'};return _0x2270f4;})});}_0x105ddb=_[_0x5621('0x40')]({},_0x105ddb,_0x30fba0[_0x5621('0x41')]);return db[_0x5621('0x5e')][_0x5621('0x1f')]({'where':_0x105ddb[_0x5621('0x3d')]})[_0x5621('0x26')](function(_0x8b5d09){_0xfbcdaf[_0x5621('0x1f')]=_0x8b5d09;if(_0x30fba0[_0x5621('0x34')][_0x5621('0x42')]){_0x105ddb[_0x5621('0x43')]=[{'all':!![]}];}return db[_0x5621('0x5e')][_0x5621('0x5c')](_0x105ddb);})['then'](function(_0x29cd8f){_0xfbcdaf[_0x5621('0x44')]=_0x29cd8f;return _0xfbcdaf;});}})[_0x5621('0x26')](respondWithFilteredResult(_0x3b8188,_0x105ddb))[_0x5621('0x45')](handleError(_0x3b8188,null));};function char(_0x472686){return'number'===typeof _0x472686?String[_0x5621('0x5f')][_0x5621('0x22')](null,arguments):_0x472686;}function needsEncapsulation(_0x564052){return!!_0x564052&&(_0x564052[_0x5621('0x60')]()['indexOf'](char(0xd))>=0x0||_0x564052['toString']()[_0x5621('0x61')](char(0xa))>=0x0||_0x564052['toString']()['indexOf'](char(0x2c))>=0x0||_0x564052[_0x5621('0x60')]()[_0x5621('0x61')](char(0x22))>=0x0);}function encapsulate(_0xb8c3a2){var _0x2d100d=char(0x22),_0x5d3c91='\x5c'+char(0x22),_0x27bfa6=_0xb8c3a2['toString']()['replace'](new RegExp(_0x2d100d,'g'),_0x5d3c91);return _0x2d100d+_0x27bfa6+_0x2d100d;}exports[_0x5621('0x62')]=function(_0x6c313e,_0x5799f6,_0x28cbd7){var _0x295e02,_0x23eeeb;var _0x24d6c4={'where':{'ProjectId':_0x6c313e['params']['id']}};if(_0x6c313e['query'][_0x5621('0x63')]){_0x24d6c4[_0x5621('0x3d')]['starttime']=JSON[_0x5621('0x64')](_0x6c313e[_0x5621('0x34')][_0x5621('0x63')]);}return db[_0x5621('0x59')]['findAll'](_0x24d6c4)[_0x5621('0x26')](handleEntityNotFound(_0x5799f6,null))[_0x5621('0x26')](function(_0x49f57e){if(_0x49f57e){_0x295e02=_0x49f57e;return db['JscriptyQuestionReport'][_0x5621('0x5c')]({'where':{'SessionId':{'$in':_[_0x5621('0x2d')](_0x295e02,'id')},'ProjectId':_0x6c313e['params']['id']},'order':_0x5621('0x65')});}})[_0x5621('0x26')](handleEntityNotFound(_0x5799f6,null))[_0x5621('0x26')](function(_0x4fab76){if(_0x4fab76){_0x23eeeb=_0x4fab76;var _0x315675={};for(var _0x278da0=0x0,_0x4e5f8b=_0x23eeeb[_0x5621('0x39')];_0x278da0<_0x4e5f8b;_0x278da0++){if(!_0x315675[_0x5621('0x5a')](_0x23eeeb[_0x278da0][_0x5621('0x66')])){_0x315675[_0x23eeeb[_0x278da0][_0x5621('0x66')]]=needsEncapsulation(_0x23eeeb[_0x278da0][_0x5621('0x67')])?encapsulate(_0x23eeeb[_0x278da0][_0x5621('0x67')]):_0x23eeeb[_0x278da0][_0x5621('0x67')];}}var _0x34f64b=[],_0x5d8d4f={};for(var _0x1b1f9d=0x0,_0x5da953=_0x295e02['length'];_0x1b1f9d<_0x5da953;_0x1b1f9d++){_0x5d8d4f={'ProjectId':_0x6c313e['params']['id'],'SessionId':_0x295e02[_0x1b1f9d]['id'],'StartTime':moment(_0x295e02[_0x1b1f9d]['starttime'])[_0x5621('0x68')](_0x5621('0x69'))};for(var _0x492e8c=0x0,_0x167105=_0x23eeeb[_0x5621('0x39')];_0x492e8c<_0x167105;_0x492e8c++){if(_0x23eeeb[_0x492e8c][_0x5621('0x6a')]==_0x295e02[_0x1b1f9d]['id']&&_0x315675[_0x5621('0x5a')](_0x23eeeb[_0x492e8c]['questionId'])){_0x5d8d4f[_0x315675[_0x23eeeb[_0x492e8c]['questionId']]]=_0x23eeeb[_0x492e8c]['answer'];}}for(var _0xd0afbd in _0x315675){if(!_0x5d8d4f[_0x5621('0x5a')](_0x315675[_0xd0afbd])){_0x5d8d4f[_0x315675[_0xd0afbd]]=null;}}_0x34f64b[_0x5621('0x6b')](_0x5d8d4f);}return _0x34f64b;}})[_0x5621('0x26')](function(_0x111a4a){if(!_[_0x5621('0x6c')](_0x111a4a)){var _0x20631b=toCsv(_0x111a4a);var _0x420abc=Date[_0x5621('0x6d')]();fs['writeFileSync'](util[_0x5621('0x68')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x6c313e[_0x5621('0x47')]['id'],_0x420abc),_0x20631b);_0x5799f6[_0x5621('0x6e')](_0x5621('0x6f'),_0x5621('0x70')+util[_0x5621('0x68')](_0x5621('0x71'),_0x6c313e[_0x5621('0x47')]['id'],_0x420abc));_0x5799f6[_0x5621('0x6e')](_0x5621('0x72'),'text/csv');return _0x5799f6['download'](util['format']('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x6c313e[_0x5621('0x47')]['id'],_0x420abc));}else{return _0x5799f6[_0x5621('0x19')](0xcc);}})[_0x5621('0x45')](handleError(_0x5799f6,null));}; \ No newline at end of file diff --git a/server/api/jscriptyProject/jscriptyProject.model.js b/server/api/jscriptyProject/jscriptyProject.model.js new file mode 100644 index 0000000..2ff744b --- /dev/null +++ b/server/api/jscriptyProject/jscriptyProject.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6334=['rimraf','../../config/environment','./jscriptyProject.attributes','exports','JscriptyProject','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x393730,_0x2bfe34){var _0x3323f3=function(_0x1b8faf){while(--_0x1b8faf){_0x393730['push'](_0x393730['shift']());}};_0x3323f3(++_0x2bfe34);}(_0x6334,0x119));var _0x4633=function(_0x252805,_0x1d1e8e){_0x252805=_0x252805-0x0;var _0x3e74b9=_0x6334[_0x252805];return _0x3e74b9;};'use strict';var _=require(_0x4633('0x0'));var util=require(_0x4633('0x1'));var logger=require(_0x4633('0x2'))(_0x4633('0x3'));var moment=require(_0x4633('0x4'));var BPromise=require(_0x4633('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4633('0x6'));var rimraf=require(_0x4633('0x7'));var config=require(_0x4633('0x8'));var attributes=require(_0x4633('0x9'));module[_0x4633('0xa')]=function(_0x6493dc,_0x175e14){return _0x6493dc['define'](_0x4633('0xb'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/jscriptyProject/jscriptyProject.rpc.js b/server/api/jscriptyProject/jscriptyProject.rpc.js new file mode 100644 index 0000000..badf828 --- /dev/null +++ b/server/api/jscriptyProject/jscriptyProject.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x47408e,_0x481428){var _0x1636bc=function(_0x2fe7a6){while(--_0x2fe7a6){_0x47408e['push'](_0x47408e['shift']());}};_0x1636bc(++_0x481428);}(_0xda3f,0xec));var _0xfda3=function(_0x32f3f7,_0x1d8aa2){_0x32f3f7=_0x32f3f7-0x0;var _0x50e6c7=_0xda3f[_0x32f3f7];return _0x50e6c7;};'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 diff --git a/server/api/jscriptyQuestionReport/index.js b/server/api/jscriptyQuestionReport/index.js new file mode 100644 index 0000000..cebf513 --- /dev/null +++ b/server/api/jscriptyQuestionReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdb47=['show','post','create','put','update','destroy','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0xb6acc,_0x324909){var _0x37c846=function(_0x3295f3){while(--_0x3295f3){_0xb6acc['push'](_0xb6acc['shift']());}};_0x37c846(++_0x324909);}(_0xdb47,0x9f));var _0x7db4=function(_0x56d487,_0x34012d){_0x56d487=_0x56d487-0x0;var _0x43c2f6=_0xdb47[_0x56d487];return _0x43c2f6;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x7db4('0x0'));var express=require('express');var router=express[_0x7db4('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7db4('0x2'));var interaction=require(_0x7db4('0x3'));var config=require(_0x7db4('0x4'));var controller=require(_0x7db4('0x5'));router[_0x7db4('0x6')]('/',auth[_0x7db4('0x7')](),controller[_0x7db4('0x8')]);router[_0x7db4('0x6')](_0x7db4('0x9'),auth['isAuthenticated'](),controller[_0x7db4('0xa')]);router['get'](_0x7db4('0xb'),auth[_0x7db4('0x7')](),controller[_0x7db4('0xc')]);router[_0x7db4('0xd')]('/',auth[_0x7db4('0x7')](),controller[_0x7db4('0xe')]);router[_0x7db4('0xf')](_0x7db4('0xb'),auth[_0x7db4('0x7')](),controller[_0x7db4('0x10')]);router['delete'](_0x7db4('0xb'),auth[_0x7db4('0x7')](),controller[_0x7db4('0x11')]);module[_0x7db4('0x12')]=router; \ No newline at end of file diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js new file mode 100644 index 0000000..ec1e575 --- /dev/null +++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x7a54,0x106));var _0x47a5=function(_0x4d4e7b,_0xa9d9e5){_0x4d4e7b=_0x4d4e7b-0x0;var _0x360b66=_0x7a54[_0x4d4e7b];return _0x360b66;};'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 diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js new file mode 100644 index 0000000..68cc1b2 --- /dev/null +++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4dec=['../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','name','options','includeAll','include','findAll','rows','catch','show','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch'];(function(_0x16be88,_0x4f1df2){var _0xa22080=function(_0x3de901){while(--_0x3de901){_0x16be88['push'](_0x16be88['shift']());}};_0xa22080(++_0x4f1df2);}(_0x4dec,0xd9));var _0xc4de=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4dec[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0xc4de('0x0'));var rimraf=require(_0xc4de('0x1'));var zipdir=require(_0xc4de('0x2'));var jsonpatch=require(_0xc4de('0x3'));var rp=require(_0xc4de('0x4'));var moment=require(_0xc4de('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc4de('0x6'));var util=require(_0xc4de('0x7'));var path=require(_0xc4de('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc4de('0x9'));var fs=require('fs');var fs_extra=require(_0xc4de('0xa'));var _=require(_0xc4de('0xb'));var squel=require(_0xc4de('0xc'));var crypto=require(_0xc4de('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc4de('0xe'));var toCsv=require(_0xc4de('0xf'));var querystring=require(_0xc4de('0x10'));var Papa=require(_0xc4de('0x11'));var Redis=require(_0xc4de('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc4de('0x13'));var hardwareService=require(_0xc4de('0x14'));var logger=require(_0xc4de('0x15'))(_0xc4de('0x16'));var utils=require('../../config/utils');var config=require(_0xc4de('0x17'));var licenseUtil=require(_0xc4de('0x18'));var db=require(_0xc4de('0x19'))['db'];function respondWithStatusCode(_0x43dd7b,_0x41f3a1){_0x41f3a1=_0x41f3a1||0xcc;return function(_0x4cc05d){if(_0x4cc05d){return _0x43dd7b[_0xc4de('0x1a')](_0x41f3a1);}return _0x43dd7b['status'](_0x41f3a1)[_0xc4de('0x1b')]();};}function respondWithResult(_0x191ff1,_0x294e50){_0x294e50=_0x294e50||0xc8;return function(_0x1328bc){if(_0x1328bc){return _0x191ff1[_0xc4de('0x1c')](_0x294e50)[_0xc4de('0x1d')](_0x1328bc);}};}function respondWithFilteredResult(_0x5a60f9,_0x227b95){return function(_0x3dd4db){if(_0x3dd4db){var _0x4fe54b=typeof _0x227b95[_0xc4de('0x1e')]===_0xc4de('0x1f')&&typeof _0x227b95[_0xc4de('0x20')]===_0xc4de('0x1f');var _0x5bbf22=_0x3dd4db['count'];var _0x1ee08e=_0x4fe54b?0x0:_0x227b95[_0xc4de('0x1e')];var _0x37ab51=_0x4fe54b?_0x3dd4db[_0xc4de('0x21')]:_0x227b95[_0xc4de('0x1e')]+_0x227b95[_0xc4de('0x20')];var _0x4c3b69;if(_0x37ab51>=_0x5bbf22){_0x37ab51=_0x5bbf22;_0x4c3b69=0xc8;}else{_0x4c3b69=0xce;}_0x5a60f9[_0xc4de('0x1c')](_0x4c3b69);return _0x5a60f9[_0xc4de('0x22')](_0xc4de('0x23'),_0x1ee08e+'-'+_0x37ab51+'/'+_0x5bbf22)[_0xc4de('0x1d')](_0x3dd4db);}return null;};}function patchUpdates(_0x590fd9){return function(_0x49f879){try{jsonpatch[_0xc4de('0x24')](_0x49f879,_0x590fd9,!![]);}catch(_0x5084c9){return BPromise[_0xc4de('0x25')](_0x5084c9);}return _0x49f879[_0xc4de('0x26')]();};}function saveUpdates(_0x160580,_0x490a0c){return function(_0x4f65d0){if(_0x4f65d0){return _0x4f65d0['update'](_0x160580)['then'](function(_0x435b2b){return _0x435b2b;});}return null;};}function removeEntity(_0xcadfe2,_0x419588){return function(_0x51e046){if(_0x51e046){return _0x51e046[_0xc4de('0x27')]()[_0xc4de('0x28')](function(){_0xcadfe2['status'](0xcc)[_0xc4de('0x1b')]();});}};}function handleEntityNotFound(_0x3b2adc,_0x2869f1){return function(_0x3725b7){if(!_0x3725b7){_0x3b2adc[_0xc4de('0x1a')](0x194);}return _0x3725b7;};}function handleError(_0x2a25cd,_0x2d75cd){_0x2d75cd=_0x2d75cd||0x1f4;return function(_0x4cb1f1){logger[_0xc4de('0x29')](_0x4cb1f1['stack']);if(_0x4cb1f1['name']){delete _0x4cb1f1['name'];}_0x2a25cd[_0xc4de('0x1c')](_0x2d75cd)[_0xc4de('0x2a')](_0x4cb1f1);};}exports[_0xc4de('0x2b')]=function(_0x15ec5b,_0x305c6a){var _0x145d23={},_0x406322={},_0x3a4467={'count':0x0,'rows':[]};var _0x1a149e=_[_0xc4de('0x2c')](db[_0xc4de('0x2d')][_0xc4de('0x2e')],function(_0x1f9192){return{'name':_0x1f9192[_0xc4de('0x2f')],'type':_0x1f9192[_0xc4de('0x30')]['key']};});_0x406322[_0xc4de('0x31')]=_['map'](_0x1a149e,'name');_0x406322[_0xc4de('0x32')]=_[_0xc4de('0x33')](_0x15ec5b['query']);_0x406322[_0xc4de('0x34')]=_[_0xc4de('0x35')](_0x406322['model'],_0x406322['query']);_0x145d23['attributes']=_['intersection'](_0x406322[_0xc4de('0x31')],qs[_0xc4de('0x36')](_0x15ec5b['query'][_0xc4de('0x36')]));_0x145d23[_0xc4de('0x37')]=_0x145d23[_0xc4de('0x37')][_0xc4de('0x38')]?_0x145d23[_0xc4de('0x37')]:_0x406322['model'];if(!_0x15ec5b[_0xc4de('0x32')][_0xc4de('0x39')](_0xc4de('0x3a'))){_0x145d23['limit']=qs[_0xc4de('0x20')](_0x15ec5b[_0xc4de('0x32')][_0xc4de('0x20')]);_0x145d23[_0xc4de('0x1e')]=qs[_0xc4de('0x1e')](_0x15ec5b[_0xc4de('0x32')][_0xc4de('0x1e')]);}_0x145d23[_0xc4de('0x3b')]=qs['sort'](_0x15ec5b[_0xc4de('0x32')][_0xc4de('0x3c')]);_0x145d23[_0xc4de('0x3d')]=qs['filters'](_[_0xc4de('0x3e')](_0x15ec5b['query'],_0x406322[_0xc4de('0x34')]),_0x1a149e);if(_0x15ec5b['query']['filter']){_0x145d23[_0xc4de('0x3d')]=_[_0xc4de('0x3f')](_0x145d23['where'],{'$or':_[_0xc4de('0x2c')](_0x1a149e,function(_0x38a273){if(_0x38a273[_0xc4de('0x30')]!==_0xc4de('0x40')){var _0x4f0c5c={};_0x4f0c5c[_0x38a273[_0xc4de('0x41')]]={'$like':'%'+_0x15ec5b[_0xc4de('0x32')]['filter']+'%'};return _0x4f0c5c;}})});}_0x145d23=_[_0xc4de('0x3f')]({},_0x145d23,_0x15ec5b[_0xc4de('0x42')]);var _0x220f46={'where':_0x145d23[_0xc4de('0x3d')]};return db[_0xc4de('0x2d')][_0xc4de('0x21')](_0x220f46)[_0xc4de('0x28')](function(_0x4b2d00){_0x3a4467[_0xc4de('0x21')]=_0x4b2d00;if(_0x15ec5b[_0xc4de('0x32')][_0xc4de('0x43')]){_0x145d23[_0xc4de('0x44')]=[{'all':!![]}];}return db[_0xc4de('0x2d')][_0xc4de('0x45')](_0x145d23);})[_0xc4de('0x28')](function(_0x4e30d2){_0x3a4467[_0xc4de('0x46')]=_0x4e30d2;return _0x3a4467;})[_0xc4de('0x28')](respondWithFilteredResult(_0x305c6a,_0x145d23))[_0xc4de('0x47')](handleError(_0x305c6a,null));};exports[_0xc4de('0x48')]=function(_0x8bf7a,_0x398eb7){var _0x45259b={'raw':!![],'where':{'id':_0x8bf7a['params']['id']}},_0x42f8b5={};_0x42f8b5[_0xc4de('0x31')]=_[_0xc4de('0x33')](db['JscriptyQuestionReport'][_0xc4de('0x2e')]);_0x42f8b5['query']=_[_0xc4de('0x33')](_0x8bf7a['query']);_0x42f8b5[_0xc4de('0x34')]=_[_0xc4de('0x35')](_0x42f8b5[_0xc4de('0x31')],_0x42f8b5[_0xc4de('0x32')]);_0x45259b[_0xc4de('0x37')]=_[_0xc4de('0x35')](_0x42f8b5[_0xc4de('0x31')],qs[_0xc4de('0x36')](_0x8bf7a[_0xc4de('0x32')]['fields']));_0x45259b['attributes']=_0x45259b[_0xc4de('0x37')][_0xc4de('0x38')]?_0x45259b['attributes']:_0x42f8b5['model'];if(_0x8bf7a[_0xc4de('0x32')][_0xc4de('0x43')]){_0x45259b['include']=[{'all':!![]}];}_0x45259b=_[_0xc4de('0x3f')]({},_0x45259b,_0x8bf7a[_0xc4de('0x42')]);return db['JscriptyQuestionReport'][_0xc4de('0x49')](_0x45259b)[_0xc4de('0x28')](handleEntityNotFound(_0x398eb7,null))['then'](respondWithResult(_0x398eb7,null))['catch'](handleError(_0x398eb7,null));};exports['create']=function(_0x3a2ae0,_0x49f257){return db[_0xc4de('0x2d')][_0xc4de('0x4a')](_0x3a2ae0['body'],{})[_0xc4de('0x28')](respondWithResult(_0x49f257,0xc9))[_0xc4de('0x47')](handleError(_0x49f257,null));};exports[_0xc4de('0x4b')]=function(_0x5c736e,_0x260d47){if(_0x5c736e[_0xc4de('0x4c')]['id']){delete _0x5c736e['body']['id'];}return db[_0xc4de('0x2d')]['find']({'where':{'id':_0x5c736e[_0xc4de('0x4d')]['id']}})[_0xc4de('0x28')](handleEntityNotFound(_0x260d47,null))[_0xc4de('0x28')](saveUpdates(_0x5c736e[_0xc4de('0x4c')],null))[_0xc4de('0x28')](respondWithResult(_0x260d47,null))[_0xc4de('0x47')](handleError(_0x260d47,null));};exports[_0xc4de('0x27')]=function(_0x4af726,_0x25fc25){return db['JscriptyQuestionReport']['find']({'where':{'id':_0x4af726[_0xc4de('0x4d')]['id']}})[_0xc4de('0x28')](handleEntityNotFound(_0x25fc25,null))[_0xc4de('0x28')](removeEntity(_0x25fc25,null))['catch'](handleError(_0x25fc25,null));};exports[_0xc4de('0x4e')]=function(_0x155957,_0x2ed677){return db['JscriptyQuestionReport']['describe']()[_0xc4de('0x28')](respondWithResult(_0x2ed677,null))['catch'](handleError(_0x2ed677,null));}; \ No newline at end of file diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js new file mode 100644 index 0000000..5fdb9bc --- /dev/null +++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9a67=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger'];(function(_0x131065,_0x3f030d){var _0x2a79e7=function(_0xff87d9){while(--_0xff87d9){_0x131065['push'](_0x131065['shift']());}};_0x2a79e7(++_0x3f030d);}(_0x9a67,0x18a));var _0x79a6=function(_0x33532f,_0x16d0ec){_0x33532f=_0x33532f-0x0;var _0x2b93aa=_0x9a67[_0x33532f];return _0x2b93aa;};'use strict';var _=require('lodash');var util=require(_0x79a6('0x0'));var logger=require(_0x79a6('0x1'))(_0x79a6('0x2'));var moment=require(_0x79a6('0x3'));var BPromise=require(_0x79a6('0x4'));var rp=require(_0x79a6('0x5'));var fs=require('fs');var path=require(_0x79a6('0x6'));var rimraf=require(_0x79a6('0x7'));var config=require(_0x79a6('0x8'));var attributes=require('./jscriptyQuestionReport.attributes');module['exports']=function(_0x51a680,_0x20a7d9){return _0x51a680[_0x79a6('0x9')](_0x79a6('0xa'),attributes,{'tableName':_0x79a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js new file mode 100644 index 0000000..3418887 --- /dev/null +++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x94ee=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x4179cf,_0x3885da){var _0x33d325=function(_0x55d35f){while(--_0x55d35f){_0x4179cf['push'](_0x4179cf['shift']());}};_0x33d325(++_0x3885da);}(_0x94ee,0x1e5));var _0xe94e=function(_0x32f962,_0x1d2037){_0x32f962=_0x32f962-0x0;var _0x3aee1e=_0x94ee[_0x32f962];return _0x3aee1e;};'use strict';var _=require(_0xe94e('0x0'));var util=require(_0xe94e('0x1'));var moment=require(_0xe94e('0x2'));var BPromise=require(_0xe94e('0x3'));var rs=require(_0xe94e('0x4'));var fs=require('fs');var Redis=require(_0xe94e('0x5'));var db=require(_0xe94e('0x6'))['db'];var utils=require(_0xe94e('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xe94e('0x8'));var jayson=require(_0xe94e('0x9'));var client=jayson[_0xe94e('0xa')][_0xe94e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48dddc,_0x189db2,_0x48d4e5){return new BPromise(function(_0x1b0bd5,_0x2f9b98){return client['request'](_0x48dddc,_0x48d4e5)[_0xe94e('0xc')](function(_0x3e1936){logger[_0xe94e('0xd')](_0xe94e('0xe'),_0x189db2,_0xe94e('0xf'));logger['debug'](_0xe94e('0x10'),_0x189db2,'request\x20sent',JSON['stringify'](_0x3e1936));if(_0x3e1936[_0xe94e('0x11')]){if(_0x3e1936[_0xe94e('0x11')][_0xe94e('0x12')]===0x1f4){logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x189db2,_0x3e1936['error']['message']);return _0x2f9b98(_0x3e1936[_0xe94e('0x11')][_0xe94e('0x13')]);}logger[_0xe94e('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x189db2,_0x3e1936[_0xe94e('0x11')][_0xe94e('0x13')]);return _0x1b0bd5(_0x3e1936[_0xe94e('0x11')]['message']);}else{logger[_0xe94e('0xd')](_0xe94e('0xe'),_0x189db2,_0xe94e('0xf'));_0x1b0bd5(_0x3e1936['result'][_0xe94e('0x13')]);}})[_0xe94e('0x14')](function(_0x167418){logger['error'](_0xe94e('0xe'),_0x189db2,_0x167418);_0x2f9b98(_0x167418);});});} \ No newline at end of file diff --git a/server/api/jscriptySessionReport/index.js b/server/api/jscriptySessionReport/index.js new file mode 100644 index 0000000..c9351e6 --- /dev/null +++ b/server/api/jscriptySessionReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfca0=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','describe','isAuthenticated','show','getQuestions','put','/:id','update','delete'];(function(_0x7f2df0,_0x2aa6df){var _0x1bb042=function(_0x38b02f){while(--_0x38b02f){_0x7f2df0['push'](_0x7f2df0['shift']());}};_0x1bb042(++_0x2aa6df);}(_0xfca0,0x190));var _0x0fca=function(_0x24259f,_0x102a0d){_0x24259f=_0x24259f-0x0;var _0x4e98e=_0xfca0[_0x24259f];return _0x4e98e;};'use strict';var multer=require(_0x0fca('0x0'));var util=require(_0x0fca('0x1'));var path=require('path');var timeout=require(_0x0fca('0x2'));var express=require(_0x0fca('0x3'));var router=express[_0x0fca('0x4')]();var fs_extra=require(_0x0fca('0x5'));var auth=require(_0x0fca('0x6'));var interaction=require(_0x0fca('0x7'));var config=require(_0x0fca('0x8'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x0fca('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x0fca('0xa')]);router['get']('/:id',auth[_0x0fca('0xb')](),controller[_0x0fca('0xc')]);router[_0x0fca('0x9')]('/:id/questions',auth[_0x0fca('0xb')](),controller[_0x0fca('0xd')]);router['post']('/',auth[_0x0fca('0xb')](),controller['create']);router[_0x0fca('0xe')](_0x0fca('0xf'),auth[_0x0fca('0xb')](),controller[_0x0fca('0x10')]);router[_0x0fca('0x11')](_0x0fca('0xf'),auth[_0x0fca('0xb')](),controller['destroy']);module[_0x0fca('0x12')]=router; \ No newline at end of file diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js b/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js new file mode 100644 index 0000000..38427e3 --- /dev/null +++ b/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa64d=['BOOLEAN','moment','exports','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xa64d,0x13c));var _0xda64=function(_0x172bac,_0xe60dbf){_0x172bac=_0x172bac-0x0;var _0x3a11ed=_0xa64d[_0x172bac];return _0x3a11ed;};'use strict';var moment=require(_0xda64('0x0'));var Sequelize=require('sequelize');module[_0xda64('0x1')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x1b4e0d){this[_0xda64('0x2')](_0xda64('0x3'),_0x1b4e0d);this[_0xda64('0x2')](_0xda64('0x4'),moment()[_0xda64('0x5')](_0xda64('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xda64('0x7')]},'projectname':{'type':Sequelize[_0xda64('0x7')]},'queue':{'type':Sequelize[_0xda64('0x7')]},'uniqueid':{'type':Sequelize[_0xda64('0x7')]},'calleridname':{'type':Sequelize[_0xda64('0x7')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xda64('0x8')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.controller.js b/server/api/jscriptySessionReport/jscriptySessionReport.controller.js new file mode 100644 index 0000000..06622bd --- /dev/null +++ b/server/api/jscriptySessionReport/jscriptySessionReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1cef=['rows','catch','params','length','options','create','body','find','findOne','JscriptyQuestionReport','hasOwnProperty','SessionId','findAll','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','type','query','keys','filters','intersection','attributes','model','fields','nolimit','order','sort','where','pick','filter','merge','JscriptySessionReport','includeAll','include'];(function(_0x263ca7,_0x20b967){var _0x2d19fb=function(_0x3b6080){while(--_0x3b6080){_0x263ca7['push'](_0x263ca7['shift']());}};_0x2d19fb(++_0x20b967);}(_0x1cef,0x1e7));var _0xf1ce=function(_0x3df223,_0x1740fc){_0x3df223=_0x3df223-0x0;var _0x562d11=_0x1cef[_0x3df223];return _0x562d11;};'use strict';var emlformat=require(_0xf1ce('0x0'));var rimraf=require(_0xf1ce('0x1'));var zipdir=require(_0xf1ce('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf1ce('0x3'));var moment=require(_0xf1ce('0x4'));var BPromise=require(_0xf1ce('0x5'));var Mustache=require('mustache');var util=require(_0xf1ce('0x6'));var path=require(_0xf1ce('0x7'));var sox=require(_0xf1ce('0x8'));var csv=require('to-csv');var ejs=require(_0xf1ce('0x9'));var fs=require('fs');var fs_extra=require(_0xf1ce('0xa'));var _=require(_0xf1ce('0xb'));var squel=require(_0xf1ce('0xc'));var crypto=require(_0xf1ce('0xd'));var jsforce=require(_0xf1ce('0xe'));var deskjs=require(_0xf1ce('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf1ce('0x10'));var Papa=require(_0xf1ce('0x11'));var Redis=require(_0xf1ce('0x12'));var authService=require(_0xf1ce('0x13'));var qs=require(_0xf1ce('0x14'));var as=require(_0xf1ce('0x15'));var hardwareService=require(_0xf1ce('0x16'));var logger=require(_0xf1ce('0x17'))('api');var utils=require(_0xf1ce('0x18'));var config=require(_0xf1ce('0x19'));var licenseUtil=require(_0xf1ce('0x1a'));var db=require(_0xf1ce('0x1b'))['db'];function respondWithStatusCode(_0x348cbe,_0x2e6070){_0x2e6070=_0x2e6070||0xcc;return function(_0x28b27c){if(_0x28b27c){return _0x348cbe[_0xf1ce('0x1c')](_0x2e6070);}return _0x348cbe['status'](_0x2e6070)[_0xf1ce('0x1d')]();};}function respondWithResult(_0x361551,_0xd47f88){_0xd47f88=_0xd47f88||0xc8;return function(_0x4471ac){if(_0x4471ac){return _0x361551[_0xf1ce('0x1e')](_0xd47f88)[_0xf1ce('0x1f')](_0x4471ac);}};}function respondWithFilteredResult(_0x267442,_0x5bded6){return function(_0x10cc06){if(_0x10cc06){var _0x446a4c=typeof _0x5bded6[_0xf1ce('0x20')]===_0xf1ce('0x21')&&typeof _0x5bded6['limit']==='undefined';var _0x52cd6d=_0x10cc06[_0xf1ce('0x22')];var _0x2b55a0=_0x446a4c?0x0:_0x5bded6[_0xf1ce('0x20')];var _0xccba31=_0x446a4c?_0x10cc06['count']:_0x5bded6[_0xf1ce('0x20')]+_0x5bded6[_0xf1ce('0x23')];var _0x482a37;if(_0xccba31>=_0x52cd6d){_0xccba31=_0x52cd6d;_0x482a37=0xc8;}else{_0x482a37=0xce;}_0x267442[_0xf1ce('0x1e')](_0x482a37);return _0x267442[_0xf1ce('0x24')]('Content-Range',_0x2b55a0+'-'+_0xccba31+'/'+_0x52cd6d)['json'](_0x10cc06);}return null;};}function patchUpdates(_0x548f53){return function(_0x41f059){try{jsonpatch['apply'](_0x41f059,_0x548f53,!![]);}catch(_0x42fec4){return BPromise[_0xf1ce('0x25')](_0x42fec4);}return _0x41f059[_0xf1ce('0x26')]();};}function saveUpdates(_0x58f11f,_0x31e162){return function(_0x58bf33){if(_0x58bf33){return _0x58bf33[_0xf1ce('0x27')](_0x58f11f)[_0xf1ce('0x28')](function(_0x348736){return _0x348736;});}return null;};}function removeEntity(_0x2598db,_0x39f72e){return function(_0x379ec2){if(_0x379ec2){return _0x379ec2[_0xf1ce('0x29')]()[_0xf1ce('0x28')](function(){_0x2598db[_0xf1ce('0x1e')](0xcc)[_0xf1ce('0x1d')]();});}};}function handleEntityNotFound(_0x197199,_0x4e79e0){return function(_0x433683){if(!_0x433683){_0x197199[_0xf1ce('0x1c')](0x194);}return _0x433683;};}function handleError(_0x1a8556,_0x4e2a74){_0x4e2a74=_0x4e2a74||0x1f4;return function(_0x19e5b4){logger[_0xf1ce('0x2a')](_0x19e5b4[_0xf1ce('0x2b')]);if(_0x19e5b4[_0xf1ce('0x2c')]){delete _0x19e5b4[_0xf1ce('0x2c')];}_0x1a8556[_0xf1ce('0x1e')](_0x4e2a74)[_0xf1ce('0x2d')](_0x19e5b4);};}exports['index']=function(_0x3e2dd0,_0x34e465){var _0x18a6d9={},_0x1f849f={},_0x55d3dc={'count':0x0,'rows':[]};var _0x172633=_[_0xf1ce('0x2e')](db['JscriptySessionReport'][_0xf1ce('0x2f')],function(_0x58f6ec){return{'name':_0x58f6ec['fieldName'],'type':_0x58f6ec[_0xf1ce('0x30')]['key']};});_0x1f849f['model']=_[_0xf1ce('0x2e')](_0x172633,_0xf1ce('0x2c'));_0x1f849f[_0xf1ce('0x31')]=_[_0xf1ce('0x32')](_0x3e2dd0[_0xf1ce('0x31')]);_0x1f849f[_0xf1ce('0x33')]=_[_0xf1ce('0x34')](_0x1f849f['model'],_0x1f849f[_0xf1ce('0x31')]);_0x18a6d9[_0xf1ce('0x35')]=_['intersection'](_0x1f849f[_0xf1ce('0x36')],qs['fields'](_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x37')]));_0x18a6d9[_0xf1ce('0x35')]=_0x18a6d9[_0xf1ce('0x35')]['length']?_0x18a6d9[_0xf1ce('0x35')]:_0x1f849f[_0xf1ce('0x36')];if(!_0x3e2dd0[_0xf1ce('0x31')]['hasOwnProperty'](_0xf1ce('0x38'))){_0x18a6d9['limit']=qs[_0xf1ce('0x23')](_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x23')]);_0x18a6d9['offset']=qs['offset'](_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x20')]);}_0x18a6d9[_0xf1ce('0x39')]=qs[_0xf1ce('0x3a')](_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x3a')]);_0x18a6d9[_0xf1ce('0x3b')]=qs[_0xf1ce('0x33')](_[_0xf1ce('0x3c')](_0x3e2dd0[_0xf1ce('0x31')],_0x1f849f[_0xf1ce('0x33')]),_0x172633);if(_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x3d')]){_0x18a6d9['where']=_[_0xf1ce('0x3e')](_0x18a6d9[_0xf1ce('0x3b')],{'$or':_[_0xf1ce('0x2e')](_0x172633,function(_0x2613b8){if(_0x2613b8[_0xf1ce('0x30')]!=='VIRTUAL'){var _0x196907={};_0x196907[_0x2613b8[_0xf1ce('0x2c')]]={'$like':'%'+_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x3d')]+'%'};return _0x196907;}})});}_0x18a6d9=_[_0xf1ce('0x3e')]({},_0x18a6d9,_0x3e2dd0['options']);var _0x5ae3cd={'where':_0x18a6d9[_0xf1ce('0x3b')]};return db[_0xf1ce('0x3f')][_0xf1ce('0x22')](_0x5ae3cd)[_0xf1ce('0x28')](function(_0x13a598){_0x55d3dc[_0xf1ce('0x22')]=_0x13a598;if(_0x3e2dd0[_0xf1ce('0x31')][_0xf1ce('0x40')]){_0x18a6d9[_0xf1ce('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x18a6d9);})[_0xf1ce('0x28')](function(_0x166ff9){_0x55d3dc[_0xf1ce('0x42')]=_0x166ff9;return _0x55d3dc;})['then'](respondWithFilteredResult(_0x34e465,_0x18a6d9))[_0xf1ce('0x43')](handleError(_0x34e465,null));};exports['show']=function(_0x380a4a,_0x5c058f){var _0x31b432={'raw':!![],'where':{'id':_0x380a4a[_0xf1ce('0x44')]['id']}},_0x52bc82={};_0x52bc82[_0xf1ce('0x36')]=_[_0xf1ce('0x32')](db[_0xf1ce('0x3f')]['rawAttributes']);_0x52bc82[_0xf1ce('0x31')]=_['keys'](_0x380a4a['query']);_0x52bc82[_0xf1ce('0x33')]=_[_0xf1ce('0x34')](_0x52bc82[_0xf1ce('0x36')],_0x52bc82[_0xf1ce('0x31')]);_0x31b432[_0xf1ce('0x35')]=_['intersection'](_0x52bc82[_0xf1ce('0x36')],qs[_0xf1ce('0x37')](_0x380a4a['query'][_0xf1ce('0x37')]));_0x31b432[_0xf1ce('0x35')]=_0x31b432[_0xf1ce('0x35')][_0xf1ce('0x45')]?_0x31b432[_0xf1ce('0x35')]:_0x52bc82['model'];if(_0x380a4a['query'][_0xf1ce('0x40')]){_0x31b432['include']=[{'all':!![]}];}_0x31b432=_['merge']({},_0x31b432,_0x380a4a[_0xf1ce('0x46')]);return db[_0xf1ce('0x3f')]['find'](_0x31b432)['then'](handleEntityNotFound(_0x5c058f,null))[_0xf1ce('0x28')](respondWithResult(_0x5c058f,null))[_0xf1ce('0x43')](handleError(_0x5c058f,null));};exports[_0xf1ce('0x47')]=function(_0x5d3fea,_0x465692){return db['JscriptySessionReport'][_0xf1ce('0x47')](_0x5d3fea['body'],{})['then'](respondWithResult(_0x465692,0xc9))[_0xf1ce('0x43')](handleError(_0x465692,null));};exports[_0xf1ce('0x27')]=function(_0x1e0189,_0x2a0a7c){if(_0x1e0189[_0xf1ce('0x48')]['id']){delete _0x1e0189['body']['id'];}return db['JscriptySessionReport'][_0xf1ce('0x49')]({'where':{'id':_0x1e0189[_0xf1ce('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a0a7c,null))['then'](saveUpdates(_0x1e0189['body'],null))[_0xf1ce('0x28')](respondWithResult(_0x2a0a7c,null))['catch'](handleError(_0x2a0a7c,null));};exports[_0xf1ce('0x29')]=function(_0x2f3efa,_0x478a06){return db[_0xf1ce('0x3f')][_0xf1ce('0x49')]({'where':{'id':_0x2f3efa[_0xf1ce('0x44')]['id']}})['then'](handleEntityNotFound(_0x478a06,null))['then'](removeEntity(_0x478a06,null))[_0xf1ce('0x43')](handleError(_0x478a06,null));};exports['describe']=function(_0x460286,_0x135a9b){return db[_0xf1ce('0x3f')]['describe']()[_0xf1ce('0x28')](respondWithResult(_0x135a9b,null))['catch'](handleError(_0x135a9b,null));};exports['getQuestions']=function(_0x53462f,_0x28421a,_0x9d40f0){var _0x308745={'raw':!![],'where':{}};var _0x3cfc1c={};var _0x128114={'count':0x0,'rows':[]};return db[_0xf1ce('0x3f')][_0xf1ce('0x4a')]({'where':{'id':_0x53462f['params']['id']}})[_0xf1ce('0x28')](handleEntityNotFound(_0x28421a,null))[_0xf1ce('0x28')](function(_0x5d8a43){if(_0x5d8a43){_0x3cfc1c[_0xf1ce('0x36')]=_[_0xf1ce('0x32')](db[_0xf1ce('0x4b')][_0xf1ce('0x2f')]);_0x3cfc1c[_0xf1ce('0x31')]=_['keys'](_0x53462f[_0xf1ce('0x31')]);_0x3cfc1c[_0xf1ce('0x33')]=_['intersection'](_0x3cfc1c[_0xf1ce('0x36')],_0x3cfc1c['query']);_0x308745[_0xf1ce('0x35')]=_['intersection'](_0x3cfc1c[_0xf1ce('0x36')],qs[_0xf1ce('0x37')](_0x53462f[_0xf1ce('0x31')]['fields']));_0x308745[_0xf1ce('0x35')]=_0x308745[_0xf1ce('0x35')][_0xf1ce('0x45')]?_0x308745['attributes']:_0x3cfc1c[_0xf1ce('0x36')];if(!_0x53462f[_0xf1ce('0x31')][_0xf1ce('0x4c')](_0xf1ce('0x38'))){_0x308745[_0xf1ce('0x23')]=qs[_0xf1ce('0x23')](_0x53462f['query'][_0xf1ce('0x23')]);_0x308745[_0xf1ce('0x20')]=qs[_0xf1ce('0x20')](_0x53462f[_0xf1ce('0x31')]['offset']);}_0x308745[_0xf1ce('0x39')]=qs[_0xf1ce('0x3a')](_0x53462f[_0xf1ce('0x31')]['sort']);_0x308745[_0xf1ce('0x3b')]=qs['filters'](_[_0xf1ce('0x3c')](_0x53462f[_0xf1ce('0x31')],_0x3cfc1c[_0xf1ce('0x33')]));_0x308745[_0xf1ce('0x3b')][_0xf1ce('0x4d')]=_0x5d8a43['id'];if(_0x53462f['query'][_0xf1ce('0x3d')]){_0x308745[_0xf1ce('0x3b')]=_[_0xf1ce('0x3e')](_0x308745[_0xf1ce('0x3b')],{'$or':_['map'](_0x308745['attributes'],function(_0x25ae2b){var _0x38ae33={};_0x38ae33[_0x25ae2b]={'$like':'%'+_0x53462f[_0xf1ce('0x31')][_0xf1ce('0x3d')]+'%'};return _0x38ae33;})});}_0x308745=_[_0xf1ce('0x3e')]({},_0x308745,_0x53462f[_0xf1ce('0x46')]);return db[_0xf1ce('0x4b')][_0xf1ce('0x22')]({'where':_0x308745[_0xf1ce('0x3b')]})[_0xf1ce('0x28')](function(_0x5791d2){_0x128114[_0xf1ce('0x22')]=_0x5791d2;if(_0x53462f['query'][_0xf1ce('0x40')]){_0x308745[_0xf1ce('0x41')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xf1ce('0x4e')](_0x308745);})[_0xf1ce('0x28')](function(_0x5ed132){_0x128114['rows']=_0x5ed132;return _0x128114;});}})['then'](respondWithFilteredResult(_0x28421a,_0x308745))[_0xf1ce('0x43')](handleError(_0x28421a,null));}; \ No newline at end of file diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.model.js b/server/api/jscriptySessionReport/jscriptySessionReport.model.js new file mode 100644 index 0000000..02333cf --- /dev/null +++ b/server/api/jscriptySessionReport/jscriptySessionReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0x16f37d,_0x52b81b){var _0x36d50d=function(_0x144cac){while(--_0x144cac){_0x16f37d['push'](_0x16f37d['shift']());}};_0x36d50d(++_0x52b81b);}(_0x5d17,0x114));var _0x75d1=function(_0x23ca4d,_0x5c2a32){_0x23ca4d=_0x23ca4d-0x0;var _0x435432=_0x5d17[_0x23ca4d];return _0x435432;};'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':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js b/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js new file mode 100644 index 0000000..1a87dc8 --- /dev/null +++ b/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7ee1=['request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptySessionReport,\x20%s,\x20%s','message','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x505439,_0x5a4a50){var _0x54267a=function(_0x5e635f){while(--_0x5e635f){_0x505439['push'](_0x505439['shift']());}};_0x54267a(++_0x5a4a50);}(_0x7ee1,0x8d));var _0x17ee=function(_0x12db7b,_0x3f710e){_0x12db7b=_0x12db7b-0x0;var _0x1df082=_0x7ee1[_0x12db7b];return _0x1df082;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x17ee('0x1'));var fs=require('fs');var Redis=require(_0x17ee('0x2'));var db=require(_0x17ee('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x17ee('0x4'))(_0x17ee('0x5'));var config=require(_0x17ee('0x6'));var jayson=require(_0x17ee('0x7'));var client=jayson['client'][_0x17ee('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x29b9eb,_0x54b4f6,_0x3f61af){return new BPromise(function(_0x57e1d1,_0x3d767b){return client[_0x17ee('0x9')](_0x29b9eb,_0x3f61af)[_0x17ee('0xa')](function(_0x4af369){logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x54b4f6,_0x17ee('0xb'));logger['debug'](_0x17ee('0xc'),_0x54b4f6,_0x17ee('0xb'),JSON[_0x17ee('0xd')](_0x4af369));if(_0x4af369[_0x17ee('0xe')]){if(_0x4af369['error'][_0x17ee('0xf')]===0x1f4){logger['error'](_0x17ee('0x10'),_0x54b4f6,_0x4af369[_0x17ee('0xe')][_0x17ee('0x11')]);return _0x3d767b(_0x4af369[_0x17ee('0xe')][_0x17ee('0x11')]);}logger[_0x17ee('0xe')](_0x17ee('0x10'),_0x54b4f6,_0x4af369[_0x17ee('0xe')][_0x17ee('0x11')]);return _0x57e1d1(_0x4af369[_0x17ee('0xe')][_0x17ee('0x11')]);}else{logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x54b4f6,'request\x20sent');_0x57e1d1(_0x4af369['result'][_0x17ee('0x11')]);}})[_0x17ee('0x12')](function(_0x1b87c3){logger[_0x17ee('0xe')](_0x17ee('0x10'),_0x54b4f6,_0x1b87c3);_0x3d767b(_0x1b87c3);});});} \ No newline at end of file diff --git a/server/api/license/index.js b/server/api/license/index.js new file mode 100644 index 0000000..f8f3a33 --- /dev/null +++ b/server/api/license/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0951=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./license.controller','get','put','/:id','update','/download_log_file','isAuthenticated','downloadLogFile'];(function(_0x232190,_0x5cdabd){var _0x31d160=function(_0x34d20d){while(--_0x34d20d){_0x232190['push'](_0x232190['shift']());}};_0x31d160(++_0x5cdabd);}(_0x0951,0x1bb));var _0x1095=function(_0x205085,_0x1492cf){_0x205085=_0x205085-0x0;var _0x131b01=_0x0951[_0x205085];return _0x131b01;};'use strict';var multer=require(_0x1095('0x0'));var util=require('util');var path=require(_0x1095('0x1'));var timeout=require(_0x1095('0x2'));var express=require(_0x1095('0x3'));var router=express[_0x1095('0x4')]();var fs_extra=require(_0x1095('0x5'));var auth=require(_0x1095('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1095('0x7'));var controller=require(_0x1095('0x8'));router[_0x1095('0x9')]('/',controller['index']);router[_0x1095('0xa')](_0x1095('0xb'),auth['isAuthenticated'](),controller[_0x1095('0xc')]);router[_0x1095('0x9')](_0x1095('0xd'),auth[_0x1095('0xe')](),controller[_0x1095('0xf')]);module[_0x1095('0x10')]=router; \ No newline at end of file diff --git a/server/api/license/license.attributes.js b/server/api/license/license.attributes.js new file mode 100644 index 0000000..b1ca3ae --- /dev/null +++ b/server/api/license/license.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1c3f=['exports','TEXT','STRING','INTEGER','sequelize'];(function(_0x4fd9be,_0x3df4e8){var _0xe57499=function(_0x3b0a23){while(--_0x3b0a23){_0x4fd9be['push'](_0x4fd9be['shift']());}};_0xe57499(++_0x3df4e8);}(_0x1c3f,0x13a));var _0xf1c3=function(_0x2426c8,_0x9668d3){_0x2426c8=_0x2426c8-0x0;var _0x56f51e=_0x1c3f[_0x2426c8];return _0x56f51e;};'use strict';var Sequelize=require(_0xf1c3('0x0'));module[_0xf1c3('0x1')]={'license':{'type':Sequelize[_0xf1c3('0x2')]},'data1':{'type':Sequelize[_0xf1c3('0x3')]},'data2':{'type':Sequelize[_0xf1c3('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xf1c3('0x4')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/license/license.controller.js b/server/api/license/license.controller.js new file mode 100644 index 0000000..c6c3074 --- /dev/null +++ b/server/api/license/license.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x57b6=['set','save','update','destroy','then','stack','name','send','index','keys','License','rawAttributes','query','filters','intersection','model','attributes','merge','body','find','params','get','key','catch','license-info.log','join','/var','log','xcally','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','text/plain','download','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','status'];(function(_0xaf7ed1,_0xd5813c){var _0x39ee1f=function(_0x505ef0){while(--_0x505ef0){_0xaf7ed1['push'](_0xaf7ed1['shift']());}};_0x39ee1f(++_0xd5813c);}(_0x57b6,0xdd));var _0x657b=function(_0x488bae,_0x30caf7){_0x488bae=_0x488bae-0x0;var _0x5ce921=_0x57b6[_0x488bae];return _0x5ce921;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x657b('0x0'));var zipdir=require(_0x657b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x657b('0x2'));var moment=require('moment');var BPromise=require(_0x657b('0x3'));var Mustache=require(_0x657b('0x4'));var util=require('util');var path=require(_0x657b('0x5'));var sox=require(_0x657b('0x6'));var csv=require(_0x657b('0x7'));var ejs=require(_0x657b('0x8'));var fs=require('fs');var fs_extra=require(_0x657b('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x657b('0xa'));var deskjs=require(_0x657b('0xb'));var toCsv=require(_0x657b('0x7'));var querystring=require(_0x657b('0xc'));var Papa=require(_0x657b('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x657b('0xe'));var as=require(_0x657b('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x657b('0x10'));var utils=require(_0x657b('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x657b('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3eed05,_0x19edaf){_0x19edaf=_0x19edaf||0xcc;return function(_0x2b6035){if(_0x2b6035){return _0x3eed05[_0x657b('0x13')](_0x19edaf);}return _0x3eed05['status'](_0x19edaf)[_0x657b('0x14')]();};}function respondWithResult(_0x299ef1,_0xf9dd39){_0xf9dd39=_0xf9dd39||0xc8;return function(_0x944206){if(_0x944206){return _0x299ef1['status'](_0xf9dd39)[_0x657b('0x15')](_0x944206);}};}function respondWithFilteredResult(_0x435f1c,_0x550128){return function(_0x3ad556){if(_0x3ad556){var _0x2390ae=typeof _0x550128[_0x657b('0x16')]===_0x657b('0x17')&&typeof _0x550128[_0x657b('0x18')]===_0x657b('0x17');var _0xea9c92=_0x3ad556[_0x657b('0x19')];var _0x168647=_0x2390ae?0x0:_0x550128['offset'];var _0x4d1e60=_0x2390ae?_0x3ad556[_0x657b('0x19')]:_0x550128[_0x657b('0x16')]+_0x550128[_0x657b('0x18')];var _0x30502b;if(_0x4d1e60>=_0xea9c92){_0x4d1e60=_0xea9c92;_0x30502b=0xc8;}else{_0x30502b=0xce;}_0x435f1c[_0x657b('0x1a')](_0x30502b);return _0x435f1c[_0x657b('0x1b')]('Content-Range',_0x168647+'-'+_0x4d1e60+'/'+_0xea9c92)[_0x657b('0x15')](_0x3ad556);}return null;};}function patchUpdates(_0x40853b){return function(_0x3f0420){try{jsonpatch['apply'](_0x3f0420,_0x40853b,!![]);}catch(_0x3039b5){return BPromise['reject'](_0x3039b5);}return _0x3f0420[_0x657b('0x1c')]();};}function saveUpdates(_0x50ea86,_0x51f018){return function(_0x5f051f){if(_0x5f051f){return _0x5f051f[_0x657b('0x1d')](_0x50ea86)['then'](function(_0x3e3e6){return _0x3e3e6;});}return null;};}function removeEntity(_0x28215b,_0x328b07){return function(_0x563c74){if(_0x563c74){return _0x563c74[_0x657b('0x1e')]()[_0x657b('0x1f')](function(){_0x28215b[_0x657b('0x1a')](0xcc)[_0x657b('0x14')]();});}};}function handleEntityNotFound(_0x158ba6,_0xc2ddae){return function(_0x221eed){if(!_0x221eed){_0x158ba6[_0x657b('0x13')](0x194);}return _0x221eed;};}function handleError(_0x4e9ae9,_0xe4fd23){_0xe4fd23=_0xe4fd23||0x1f4;return function(_0x1d71fa){logger['error'](_0x1d71fa[_0x657b('0x20')]);if(_0x1d71fa[_0x657b('0x21')]){delete _0x1d71fa[_0x657b('0x21')];}_0x4e9ae9['status'](_0xe4fd23)[_0x657b('0x22')](_0x1d71fa);};}var utilLicense=require(_0x657b('0x12'));exports[_0x657b('0x23')]=function(_0x41cbb1,_0x4fb069){var _0x4d6b69={'raw':!![],'where':{'id':0x1}},_0x5a605d={};_0x5a605d['model']=_[_0x657b('0x24')](db[_0x657b('0x25')][_0x657b('0x26')]);_0x5a605d[_0x657b('0x27')]=_[_0x657b('0x24')](_0x41cbb1[_0x657b('0x27')]);_0x5a605d[_0x657b('0x28')]=_[_0x657b('0x29')](_0x5a605d[_0x657b('0x2a')],_0x5a605d[_0x657b('0x27')]);_0x4d6b69[_0x657b('0x2b')]=_[_0x657b('0x29')](_0x5a605d[_0x657b('0x2a')],qs['fields'](_0x41cbb1[_0x657b('0x27')]['fields']));_0x4d6b69['attributes']=_0x4d6b69[_0x657b('0x2b')]['length']?_0x4d6b69[_0x657b('0x2b')]:_0x5a605d[_0x657b('0x2a')];_0x4d6b69=_[_0x657b('0x2c')]({},_0x4d6b69,_0x41cbb1['options']);return utilLicense['getLicense'](_0x4d6b69)[_0x657b('0x1f')](respondWithResult(_0x4fb069,null))['catch'](handleError(_0x4fb069,null));};exports[_0x657b('0x1d')]=function(_0x33d93b,_0x403f34){if(_0x33d93b[_0x657b('0x2d')]['id']){delete _0x33d93b[_0x657b('0x2d')]['id'];}return db['License'][_0x657b('0x2e')]({'where':{'id':_0x33d93b[_0x657b('0x2f')]['id']}})[_0x657b('0x1f')](handleEntityNotFound(_0x403f34,null))['then'](function(_0x585e1a){var _0x25003e=_0x585e1a[_0x657b('0x30')]({'plain':!![]});return utilLicense['checkLicense'](_0x25003e,_0x33d93b[_0x657b('0x2d')][_0x657b('0x31')]);})[_0x657b('0x1f')](function(_0x5afcda){if(!_0x5afcda['demo']){return saveUpdates(_0x33d93b[_0x657b('0x2d')],null);}return _0x5afcda;})[_0x657b('0x1f')](respondWithResult(_0x403f34,null))[_0x657b('0x32')](handleError(_0x403f34,null));};exports['downloadLogFile']=function(_0x29c003,_0x27bc50){var _0x325ac5=_0x657b('0x33');var _0x17e852=path[_0x657b('0x34')](_0x657b('0x35'),_0x657b('0x36'),_0x657b('0x37'),_0x325ac5);_0x27bc50[_0x657b('0x38')](_0x657b('0x39'),_0x657b('0x3a')+_0x325ac5);_0x27bc50[_0x657b('0x1b')](_0x657b('0x3b'),_0x657b('0x3c'));_0x27bc50[_0x657b('0x3d')](_0x17e852);}; \ No newline at end of file diff --git a/server/api/license/license.model.js b/server/api/license/license.model.js new file mode 100644 index 0000000..61c1180 --- /dev/null +++ b/server/api/license/license.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe93e=['exports','define','license','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x451f88,_0x5c061a){var _0x2cc2b7=function(_0x5bb6ce){while(--_0x5bb6ce){_0x451f88['push'](_0x451f88['shift']());}};_0x2cc2b7(++_0x5c061a);}(_0xe93e,0x148));var _0xee93=function(_0xa41df9,_0x20fed0){_0xa41df9=_0xa41df9-0x0;var _0x342a45=_0xe93e[_0xa41df9];return _0x342a45;};'use strict';var _=require(_0xee93('0x0'));var util=require(_0xee93('0x1'));var logger=require(_0xee93('0x2'))(_0xee93('0x3'));var moment=require(_0xee93('0x4'));var BPromise=require(_0xee93('0x5'));var rp=require(_0xee93('0x6'));var fs=require('fs');var path=require(_0xee93('0x7'));var rimraf=require(_0xee93('0x8'));var config=require(_0xee93('0x9'));var attributes=require('./license.attributes');module[_0xee93('0xa')]=function(_0x5ac859,_0x5c1ae9){return _0x5ac859[_0xee93('0xb')]('License',attributes,{'tableName':_0xee93('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/license/license.rpc.js b/server/api/license/license.rpc.js new file mode 100644 index 0000000..c0da594 --- /dev/null +++ b/server/api/license/license.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7342=['jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment'];(function(_0x9727d6,_0x28d540){var _0x53834a=function(_0x3bc024){while(--_0x3bc024){_0x9727d6['push'](_0x9727d6['shift']());}};_0x53834a(++_0x28d540);}(_0x7342,0x1dc));var _0x2734=function(_0x902fc7,_0x42d685){_0x902fc7=_0x902fc7-0x0;var _0x5a5a98=_0x7342[_0x902fc7];return _0x5a5a98;};'use strict';var _=require(_0x2734('0x0'));var util=require(_0x2734('0x1'));var moment=require(_0x2734('0x2'));var BPromise=require('bluebird');var rs=require(_0x2734('0x3'));var fs=require('fs');var Redis=require(_0x2734('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2734('0x5'));var logger=require('../../config/logger')(_0x2734('0x6'));var config=require(_0x2734('0x7'));var jayson=require(_0x2734('0x8'));var client=jayson[_0x2734('0x9')][_0x2734('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1582ab,_0x1db7fb,_0x5a884a){return new BPromise(function(_0x233ec5,_0x432e9c){return client[_0x2734('0xb')](_0x1582ab,_0x5a884a)[_0x2734('0xc')](function(_0x5f3026){logger[_0x2734('0xd')](_0x2734('0xe'),_0x1db7fb,_0x2734('0xf'));logger[_0x2734('0x10')](_0x2734('0x11'),_0x1db7fb,_0x2734('0xf'),JSON[_0x2734('0x12')](_0x5f3026));if(_0x5f3026['error']){if(_0x5f3026[_0x2734('0x13')]['code']===0x1f4){logger['error']('License,\x20%s,\x20%s',_0x1db7fb,_0x5f3026['error']['message']);return _0x432e9c(_0x5f3026['error']['message']);}logger[_0x2734('0x13')](_0x2734('0xe'),_0x1db7fb,_0x5f3026['error'][_0x2734('0x14')]);return _0x233ec5(_0x5f3026['error'][_0x2734('0x14')]);}else{logger[_0x2734('0xd')]('License,\x20%s,\x20%s',_0x1db7fb,_0x2734('0xf'));_0x233ec5(_0x5f3026['result'][_0x2734('0x14')]);}})[_0x2734('0x15')](function(_0x4d6def){logger[_0x2734('0x13')](_0x2734('0xe'),_0x1db7fb,_0x4d6def);_0x432e9c(_0x4d6def);});});} \ No newline at end of file diff --git a/server/api/mailAccount/index.js b/server/api/mailAccount/index.js new file mode 100644 index 0000000..cf6d926 --- /dev/null +++ b/server/api/mailAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c07=['addImap','addSmtp','/:id/send','send','put','delete','removeAnswers','removeImap','/:id','destroy','removeAgents','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','./mailAccount.controller','isAuthenticated','index','get','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','addDisposition','post','addAnswer','create'];(function(_0x323430,_0x3d2b6d){var _0x9eecd1=function(_0xab855a){while(--_0xab855a){_0x323430['push'](_0x323430['shift']());}};_0x9eecd1(++_0x3d2b6d);}(_0x9c07,0xe8));var _0x79c0=function(_0x46bf6c,_0x365b09){_0x46bf6c=_0x46bf6c-0x0;var _0xf024ce=_0x9c07[_0x46bf6c];return _0xf024ce;};'use strict';var multer=require(_0x79c0('0x0'));var util=require(_0x79c0('0x1'));var path=require(_0x79c0('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x79c0('0x3'));var auth=require(_0x79c0('0x4'));var interaction=require(_0x79c0('0x5'));var config=require('../../config/environment');var controller=require(_0x79c0('0x6'));router['get']('/',auth[_0x79c0('0x7')](),controller[_0x79c0('0x8')]);router[_0x79c0('0x9')]('/describe',auth[_0x79c0('0x7')](),controller[_0x79c0('0xa')]);router[_0x79c0('0x9')]('/:id',auth[_0x79c0('0x7')](),controller[_0x79c0('0xb')]);router[_0x79c0('0x9')](_0x79c0('0xc'),auth[_0x79c0('0x7')](),controller[_0x79c0('0xd')]);router[_0x79c0('0x9')](_0x79c0('0xe'),auth[_0x79c0('0x7')](),controller[_0x79c0('0xf')]);router[_0x79c0('0x9')](_0x79c0('0x10'),auth['isAuthenticated'](),controller['getImap']);router[_0x79c0('0x9')](_0x79c0('0x11'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x12')]);router['get'](_0x79c0('0x13'),auth[_0x79c0('0x7')](),controller['getInteractions']);router[_0x79c0('0x9')](_0x79c0('0x14'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x15')]);router[_0x79c0('0x9')](_0x79c0('0x16'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x17')]);router['get'](_0x79c0('0x18'),auth['isAuthenticated'](),controller[_0x79c0('0x19')]);router[_0x79c0('0x9')](_0x79c0('0x1a'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x1b')]);router['post']('/:id/dispositions',auth[_0x79c0('0x7')](),controller[_0x79c0('0x1c')]);router[_0x79c0('0x1d')](_0x79c0('0xe'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x1e')]);router[_0x79c0('0x1d')]('/',auth[_0x79c0('0x7')](),controller[_0x79c0('0x1f')]);router[_0x79c0('0x1d')](_0x79c0('0x10'),auth['isAuthenticated'](),controller[_0x79c0('0x20')]);router['post'](_0x79c0('0x11'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x21')]);router[_0x79c0('0x1d')](_0x79c0('0x13'),auth[_0x79c0('0x7')](),controller['addInteraction']);router['post'](_0x79c0('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0x79c0('0x1d')](_0x79c0('0x22'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x23')]);router[_0x79c0('0x1d')](_0x79c0('0x1a'),auth[_0x79c0('0x7')](),controller['addAgents']);router[_0x79c0('0x24')]('/:id',auth[_0x79c0('0x7')](),controller['update']);router['delete'](_0x79c0('0xc'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x79c0('0x25')]('/:id/canned_answers',auth[_0x79c0('0x7')](),controller[_0x79c0('0x26')]);router['delete']('/:id/in_servers',auth[_0x79c0('0x7')](),controller[_0x79c0('0x27')]);router[_0x79c0('0x25')]('/:id/out_servers',auth[_0x79c0('0x7')](),controller['removeSmtp']);router[_0x79c0('0x25')](_0x79c0('0x28'),auth[_0x79c0('0x7')](),controller[_0x79c0('0x29')]);router[_0x79c0('0x25')](_0x79c0('0x1a'),auth['isAuthenticated'](),controller[_0x79c0('0x2a')]);module[_0x79c0('0x2b')]=router; \ No newline at end of file diff --git a/server/api/mailAccount/mailAccount.attributes.js b/server/api/mailAccount/mailAccount.attributes.js new file mode 100644 index 0000000..7f147c0 --- /dev/null +++ b/server/api/mailAccount/mailAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5ed9=['Account:\x20{{account.name}}
{{#queue}}Queue:\x20{{queue.name}}
{{/queue}}From\x20:\x20{{from}}
Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','ENUM','gmail','hotmail','outlook365','getDataValue','provider','custom','sequelize','STRING','BOOLEAN','Arial,Helvetica,sans-serif','INTEGER'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x5ed9,0x14b));var _0x95ed=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5ed9[_0x5f0089];return _0x193892;};'use strict';var Sequelize=require(_0x95ed('0x0'));module['exports']={'description':{'type':Sequelize[_0x95ed('0x1')]},'name':{'type':Sequelize[_0x95ed('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x95ed('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0x95ed('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x95ed('0x1')],'allowNull':![],'defaultValue':_0x95ed('0x3')},'fontSize':{'type':Sequelize[_0x95ed('0x4')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x95ed('0x5');}},'notificationSound':{'type':Sequelize[_0x95ed('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x95ed('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x95ed('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x95ed('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x95ed('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x95ed('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0x95ed('0x6')},'mandatoryDisposition':{'type':Sequelize[_0x95ed('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x3f97c4){if(!_0x3f97c4)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x95ed('0x7')](_0x95ed('0x8'),_0x3f97c4);}},'provider':{'type':Sequelize[_0x95ed('0x9')](_0x95ed('0xa'),_0x95ed('0xb'),'yahoo',_0x95ed('0xc')),'defaultValue':null,'get':function(){if(!this[_0x95ed('0xd')](_0x95ed('0xe')))return _0x95ed('0xf');return this[_0x95ed('0xd')](_0x95ed('0xe'));},'set':function(_0x46e111){if(_0x46e111===_0x95ed('0xf'))_0x46e111=null;return this[_0x95ed('0x7')](_0x95ed('0xe'),_0x46e111);}}}; \ No newline at end of file diff --git a/server/api/mailAccount/mailAccount.controller.js b/server/api/mailAccount/mailAccount.controller.js new file mode 100644 index 0000000..e2e6315 --- /dev/null +++ b/server/api/mailAccount/mailAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x63c9=['key','provider','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','CmContact','Contact','Owner','internal','Tag','Tags','tag','rows','addApplications','transaction','sequelize','ISOLATION_LEVELS','MailApplication','findAndCountAll','finally','getApplications','getMessages','MailMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','true','CmList','List','updatedAt','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','SendMail','Contacts','messageId','subject','attach','out','format','Interaction','Messages','getSmtpOptions','verifySmtp','Sequelize','ValidationError','omit','spread','emit','removeAgents','isArray','userMailAccount:remove','getAgents','User','moment','bluebird','util','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','catch','sendStatus','end','json','offset','undefined','count','status','update','get','MailAccounts','UserProfileResource','destroy','stack','name','send','gmail','imap.gmail.com','imap.mail.yahoo.com','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','yahoo','smtp.mail.yahoo.com','hotmail','smtp-mail.outlook.com','smtp.office365.com','user','pass','password','modernAuthentication','CloudProviderId','host','port','service','authentication','username','Imap','Smtp','index','MailServerIn','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','includeAll','include','findAll','show','params','MailServerOut','Pause','body','custom','secure','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','pick','removeDispositions','find','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers'];(function(_0x2b27ac,_0x36af86){var _0x14d6c6=function(_0x11f85a){while(--_0x11f85a){_0x2b27ac['push'](_0x2b27ac['shift']());}};_0x14d6c6(++_0x36af86);}(_0x63c9,0x10d));var _0x963c=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x63c9[_0x2c7618];return _0x5ce3f0;};'use strict';var moment=require(_0x963c('0x0'));var BPromise=require(_0x963c('0x1'));var util=require(_0x963c('0x2'));var path=require('path');var _=require(_0x963c('0x3'));var juice=require(_0x963c('0x4'));var Redis=require(_0x963c('0x5'));var qs=require(_0x963c('0x6'));var logger=require(_0x963c('0x7'))(_0x963c('0x8'));var config=require(_0x963c('0x9'));var db=require('../../mysqldb')['db'];config[_0x963c('0xa')]=_[_0x963c('0xb')](config[_0x963c('0xa')],{'host':_0x963c('0xc'),'port':0x18eb});var socket=require(_0x963c('0xd'))(new Redis(config[_0x963c('0xa')]));require(_0x963c('0xe'))[_0x963c('0xf')](socket);var jayson=require(_0x963c('0x10'));var client=jayson[_0x963c('0x11')][_0x963c('0x12')]({'port':0x232b});function respondWithRpcPromise(_0x39dd22,_0x4d3e91,_0x52fc0c,_0x4131ff){return new BPromise(function(_0x6a9b3c,_0x134045){var _0x1b89cf=_0x4131ff||client;return _0x1b89cf[_0x963c('0x13')](_0x39dd22,_0x52fc0c)[_0x963c('0x14')](function(_0x868054){logger[_0x963c('0x15')](_0x963c('0x16'),_0x4d3e91,'request\x20sent');logger[_0x963c('0x17')](_0x963c('0x18'),_0x4d3e91,'request\x20sent',JSON[_0x963c('0x19')](_0x868054));if(_0x868054['error']){if(_0x868054['error'][_0x963c('0x1a')]===0x1f4){logger['error'](_0x963c('0x16'),_0x4d3e91,_0x868054[_0x963c('0x1b')]['message']);return _0x134045(_0x868054[_0x963c('0x1b')][_0x963c('0x1c')]);}logger[_0x963c('0x1b')](_0x963c('0x16'),_0x4d3e91,_0x868054[_0x963c('0x1b')][_0x963c('0x1c')]);return _0x6a9b3c(_0x868054['error'][_0x963c('0x1c')]);}else{logger[_0x963c('0x15')](_0x963c('0x16'),_0x4d3e91,_0x963c('0x1d'));_0x6a9b3c(_0x868054[_0x963c('0x1e')][_0x963c('0x1c')]);}})[_0x963c('0x1f')](function(_0x11d411){logger[_0x963c('0x1b')](_0x963c('0x16'),_0x4d3e91,_0x11d411);_0x134045(_0x11d411);});});}function respondWithStatusCode(_0x595ea2,_0x5bd720){_0x5bd720=_0x5bd720||0xcc;return function(_0xc56881){if(_0xc56881){return _0x595ea2[_0x963c('0x20')](_0x5bd720);}return _0x595ea2['status'](_0x5bd720)[_0x963c('0x21')]();};}function respondWithResult(_0x2341e2,_0x36c76f){_0x36c76f=_0x36c76f||0xc8;return function(_0x12f103){if(_0x12f103){return _0x2341e2['status'](_0x36c76f)[_0x963c('0x22')](_0x12f103);}};}function respondWithFilteredResult(_0x137de3,_0x5f4ba8){return function(_0x715a5d){if(_0x715a5d){var _0x42a3a7=typeof _0x5f4ba8[_0x963c('0x23')]===_0x963c('0x24')&&typeof _0x5f4ba8['limit']===_0x963c('0x24');var _0x3a4e2d=_0x715a5d[_0x963c('0x25')];var _0x2d64f7=_0x42a3a7?0x0:_0x5f4ba8[_0x963c('0x23')];var _0x464d2f=_0x42a3a7?_0x715a5d['count']:_0x5f4ba8[_0x963c('0x23')]+_0x5f4ba8['limit'];var _0x1f0cde;if(_0x464d2f>=_0x3a4e2d){_0x464d2f=_0x3a4e2d;_0x1f0cde=0xc8;}else{_0x1f0cde=0xce;}_0x137de3[_0x963c('0x26')](_0x1f0cde);return _0x137de3['set']('Content-Range',_0x2d64f7+'-'+_0x464d2f+'/'+_0x3a4e2d)[_0x963c('0x22')](_0x715a5d);}return null;};}function saveUpdates(_0x10db2e){return function(_0x175543){if(_0x175543){return _0x175543[_0x963c('0x27')](_0x10db2e)[_0x963c('0x14')](function(_0x494615){return _0x494615;});}return null;};}function removeEntity(_0x431d17){return function(_0x36bad1){if(_0x36bad1){return _0x36bad1['destroy']()[_0x963c('0x14')](function(){var _0xb3cb02=_0x36bad1[_0x963c('0x28')]({'plain':!![]});var _0x1ad80c=_0x963c('0x29');return db[_0x963c('0x2a')][_0x963c('0x2b')]({'where':{'type':_0x1ad80c,'resourceId':_0xb3cb02['id']}})['then'](function(){return _0x36bad1;});})[_0x963c('0x14')](function(){_0x431d17[_0x963c('0x26')](0xcc)[_0x963c('0x21')]();});}};}function handleEntityNotFound(_0x560740){return function(_0x16a243){if(!_0x16a243){_0x560740['sendStatus'](0x194);}return _0x16a243;};}function handleError(_0x1d4b1c,_0x5e08b3){_0x5e08b3=_0x5e08b3||0x1f4;return function(_0x1ad09e){logger[_0x963c('0x1b')](_0x1ad09e[_0x963c('0x2c')]);if(_0x1ad09e['name']){delete _0x1ad09e[_0x963c('0x2d')];}_0x1d4b1c[_0x963c('0x26')](_0x5e08b3)[_0x963c('0x2e')](_0x1ad09e);};}function getImapHost(_0x57b0f1){switch(_0x57b0f1){case _0x963c('0x2f'):return _0x963c('0x30');case'yahoo':return _0x963c('0x31');case'hotmail':return _0x963c('0x32');case _0x963c('0x33'):return _0x963c('0x34');}throw new Error(_0x963c('0x35'),_0x57b0f1);}function getSmtpHost(_0x3cc400){switch(_0x3cc400){case _0x963c('0x2f'):return'smtp.gmail.com';case _0x963c('0x36'):return _0x963c('0x37');case _0x963c('0x38'):return _0x963c('0x39');case _0x963c('0x33'):return _0x963c('0x3a');}throw new Error('Unknown\x20email\x20service\x20provider',_0x3cc400);}function getAuthenticationOptions(_0x3a2d9e,_0x51643d){var _0xc2c799={};var _0x2dce41={};if(_0x3a2d9e){_0xc2c799[_0x963c('0x3b')]=_0x2dce41['user']=_0x51643d['username'];_0xc2c799['password']=_0x2dce41[_0x963c('0x3c')]=_0x51643d[_0x963c('0x3d')];if(_0x51643d[_0x963c('0x3e')]){_0xc2c799[_0x963c('0x3e')]=_0x2dce41['modernAuthentication']=!![];_0xc2c799['CloudProviderId']=_0x2dce41[_0x963c('0x3f')]=_0x51643d[_0x963c('0x3f')];_0xc2c799[_0x963c('0x3d')]=_0x2dce41['pass']=null;}else{_0xc2c799['CloudProviderId']=_0x2dce41[_0x963c('0x3f')]=null;}_0xc2c799[_0x963c('0x40')]=getImapHost(_0x3a2d9e);_0xc2c799[_0x963c('0x41')]=0x3e1;_0x2dce41[_0x963c('0x40')]=getSmtpHost(_0x3a2d9e);_0x2dce41[_0x963c('0x41')]=0x24b;_0x2dce41['secure']=![];_0xc2c799[_0x963c('0x42')]=_0x2dce41[_0x963c('0x42')]=null;}else{if(_0x51643d[_0x963c('0x43')]){_0xc2c799[_0x963c('0x3b')]=_0x2dce41['user']=_0x51643d[_0x963c('0x44')];_0xc2c799[_0x963c('0x3d')]=_0x2dce41['pass']=_0x51643d[_0x963c('0x3d')];}else{_0xc2c799[_0x963c('0x43')]=_0x2dce41[_0x963c('0x43')]=![];_0xc2c799[_0x963c('0x3b')]=_0x2dce41['user']=null;_0xc2c799[_0x963c('0x3d')]=_0x2dce41['pass']=null;}_0xc2c799[_0x963c('0x40')]=_0x51643d[_0x963c('0x45')][_0x963c('0x40')];_0xc2c799[_0x963c('0x41')]=_0x51643d[_0x963c('0x45')][_0x963c('0x41')];_0x2dce41[_0x963c('0x40')]=_0x51643d[_0x963c('0x46')]['host'];_0x2dce41['port']=_0x51643d['Smtp'][_0x963c('0x41')];}return{'Imap':_0xc2c799,'Smtp':_0x2dce41};}exports[_0x963c('0x47')]=function(_0x546ef7,_0x43d6c7){var _0x4679a2={'include':[{'model':db[_0x963c('0x48')],'as':_0x963c('0x45')},{'model':db['MailServerOut'],'as':_0x963c('0x46')},{'model':db['Pause'],'as':_0x963c('0x49')}]},_0x40bdf3={},_0x287ed6={'count':0x0,'rows':[]};var _0x2e7041=_[_0x963c('0x4a')](db[_0x963c('0x4b')][_0x963c('0x4c')],function(_0x388822){return{'name':_0x388822[_0x963c('0x4d')],'type':_0x388822[_0x963c('0x4e')]['key']};});_0x40bdf3[_0x963c('0x4f')]=_[_0x963c('0x4a')](_0x2e7041,'name');_0x40bdf3[_0x963c('0x50')]=_[_0x963c('0x51')](_0x546ef7[_0x963c('0x50')]);_0x40bdf3[_0x963c('0x52')]=_[_0x963c('0x53')](_0x40bdf3[_0x963c('0x4f')],_0x40bdf3[_0x963c('0x50')]);_0x4679a2[_0x963c('0x54')]=_[_0x963c('0x53')](_0x40bdf3[_0x963c('0x4f')],qs[_0x963c('0x55')](_0x546ef7[_0x963c('0x50')]['fields']));_0x4679a2[_0x963c('0x54')]=_0x4679a2[_0x963c('0x54')][_0x963c('0x56')]?_0x4679a2[_0x963c('0x54')]:_0x40bdf3['model'];if(!_0x546ef7['query'][_0x963c('0x57')](_0x963c('0x58'))){_0x4679a2['limit']=qs[_0x963c('0x59')](_0x546ef7[_0x963c('0x50')][_0x963c('0x59')]);_0x4679a2[_0x963c('0x23')]=qs[_0x963c('0x23')](_0x546ef7[_0x963c('0x50')][_0x963c('0x23')]);}_0x4679a2[_0x963c('0x5a')]=qs[_0x963c('0x5b')](_0x546ef7[_0x963c('0x50')][_0x963c('0x5b')]);_0x4679a2[_0x963c('0x5c')]=qs[_0x963c('0x52')](_['pick'](_0x546ef7[_0x963c('0x50')],_0x40bdf3[_0x963c('0x52')]),_0x2e7041);if(_0x546ef7[_0x963c('0x50')][_0x963c('0x5d')]){_0x4679a2[_0x963c('0x5c')]=_[_0x963c('0x5e')](_0x4679a2['where'],{'$or':_['map'](_0x2e7041,function(_0x2776c7){if(_0x2776c7['type']!=='VIRTUAL'){var _0x4d9970={};_0x4d9970[_0x2776c7[_0x963c('0x2d')]]={'$like':'%'+_0x546ef7[_0x963c('0x50')][_0x963c('0x5d')]+'%'};return _0x4d9970;}})});}_0x4679a2=_[_0x963c('0x5e')]({},_0x4679a2,_0x546ef7[_0x963c('0x5f')]);var _0xab0de7={'where':_0x4679a2['where']};return db[_0x963c('0x4b')][_0x963c('0x25')](_0xab0de7)['then'](function(_0x56367c){_0x287ed6[_0x963c('0x25')]=_0x56367c;if(_0x546ef7[_0x963c('0x50')][_0x963c('0x60')]){_0x4679a2[_0x963c('0x61')]=[{'all':!![]}];}return db[_0x963c('0x4b')][_0x963c('0x62')](_0x4679a2);})['then'](function(_0x1cfdc5){_0x287ed6['rows']=_0x1cfdc5;return _0x287ed6;})['then'](respondWithFilteredResult(_0x43d6c7,_0x4679a2))[_0x963c('0x1f')](handleError(_0x43d6c7,null));};exports[_0x963c('0x63')]=function(_0x273445,_0x233345){var _0x55de0c={'raw':![],'where':{'id':_0x273445[_0x963c('0x64')]['id']},'include':[{'model':db[_0x963c('0x48')],'as':_0x963c('0x45')},{'model':db[_0x963c('0x65')],'as':_0x963c('0x46')},{'model':db[_0x963c('0x66')],'as':_0x963c('0x49')}]},_0x208027={};_0x208027[_0x963c('0x4f')]=_[_0x963c('0x51')](db[_0x963c('0x4b')][_0x963c('0x4c')]);_0x208027[_0x963c('0x50')]=_['keys'](_0x273445['query']);_0x208027[_0x963c('0x52')]=_[_0x963c('0x53')](_0x208027[_0x963c('0x4f')],_0x208027[_0x963c('0x50')]);_0x55de0c[_0x963c('0x54')]=_['intersection'](_0x208027[_0x963c('0x4f')],qs[_0x963c('0x55')](_0x273445[_0x963c('0x50')][_0x963c('0x55')]));_0x55de0c['attributes']=_0x55de0c[_0x963c('0x54')]['length']?_0x55de0c['attributes']:_0x208027[_0x963c('0x4f')];if(_0x273445[_0x963c('0x50')][_0x963c('0x60')]){_0x55de0c[_0x963c('0x61')]=[{'all':!![]}];}_0x55de0c=_[_0x963c('0x5e')]({},_0x55de0c,_0x273445[_0x963c('0x5f')]);return db['MailAccount']['find'](_0x55de0c)['then'](handleEntityNotFound(_0x233345,null))['then'](respondWithResult(_0x233345,null))['catch'](handleError(_0x233345,null));};exports[_0x963c('0x27')]=function(_0x257021,_0x1eb38d){if(_0x257021[_0x963c('0x67')]['id']){delete _0x257021['body']['id'];}var _0x4cc562=_0x257021[_0x963c('0x67')]['provider']===_0x963c('0x68')?null:_0x257021['body']['provider'];var _0x22a189=_0x257021[_0x963c('0x67')][_0x963c('0x45')]||{};var _0x5ec086=_0x257021['body'][_0x963c('0x46')]||{};if(_0x4cc562){_0x22a189['host']=getImapHost(_0x4cc562);_0x22a189['port']=0x3e1;_0x5ec086[_0x963c('0x40')]=getSmtpHost(_0x4cc562);_0x5ec086['port']=0x24b;_0x5ec086[_0x963c('0x69')]=![];}if(_0x5ec086[_0x963c('0x3e')]){_0x5ec086[_0x963c('0x69')]=![];}else{_0x5ec086[_0x963c('0x3f')]=null;}if(!_0x22a189[_0x963c('0x3e')])_0x22a189[_0x963c('0x3f')]=null;_0x257021[_0x963c('0x67')][_0x963c('0x45')]=_0x22a189;_0x257021[_0x963c('0x67')]['Smtp']=_0x5ec086;return db['MailAccount']['find']({'where':{'id':_0x257021[_0x963c('0x64')]['id']},'include':[{'model':db[_0x963c('0x48')],'as':'Imap'},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['Pause'],'as':_0x963c('0x49')}]})[_0x963c('0x14')](handleEntityNotFound(_0x1eb38d,null))[_0x963c('0x14')](function(_0x511a91){if(!_0x511a91)throw new Error('Mail\x20Account\x20not\x20found');if(_0x511a91[_0x963c('0x42')])delete _0x257021['body']['Imap'];return _0x511a91;})[_0x963c('0x14')](saveUpdates(_0x257021[_0x963c('0x67')],null))[_0x963c('0x14')](function(_0x2dd65a){if(!_0x257021[_0x963c('0x67')][_0x963c('0x45')])return _0x2dd65a;return db[_0x963c('0x48')][_0x963c('0x27')](_0x257021[_0x963c('0x67')][_0x963c('0x45')],{'where':{'MailAccountId':_0x2dd65a['id']}})[_0x963c('0x14')](function(){return _0x2dd65a;});})['then'](function(_0x18d53f){if(!_0x257021[_0x963c('0x67')][_0x963c('0x46')])return _0x18d53f;return db[_0x963c('0x65')][_0x963c('0x27')](_0x257021[_0x963c('0x67')][_0x963c('0x46')],{'where':{'MailAccountId':_0x18d53f['id']}})[_0x963c('0x14')](function(){return _0x18d53f;});})[_0x963c('0x14')](respondWithResult(_0x1eb38d,null))[_0x963c('0x1f')](handleError(_0x1eb38d,null));};exports[_0x963c('0x6a')]=function(_0x6002f9,_0x412541){return db['MailAccount'][_0x963c('0x6a')]()[_0x963c('0x14')](respondWithResult(_0x412541,null))[_0x963c('0x1f')](handleError(_0x412541,null));};exports[_0x963c('0x6b')]=function(_0x4cfe03,_0x5c51b8){if(_0x4cfe03[_0x963c('0x67')]['id']){delete _0x4cfe03[_0x963c('0x67')]['id'];}return db[_0x963c('0x4b')]['find']({'where':{'id':_0x4cfe03['params']['id']}})['then'](handleEntityNotFound(_0x5c51b8,null))[_0x963c('0x14')](function(_0x3a0131){if(_0x3a0131){_0x4cfe03[_0x963c('0x67')][_0x963c('0x6c')]=_0x3a0131['id'];return db[_0x963c('0x6d')][_0x963c('0x6e')](_0x4cfe03[_0x963c('0x67')]);}})[_0x963c('0x14')](respondWithResult(_0x5c51b8,null))[_0x963c('0x1f')](handleError(_0x5c51b8,null));};exports[_0x963c('0x6f')]=function(_0x31b7fb,_0x1b5dd9){var _0x54813c={'raw':![],'where':{}};var _0x9cf4b0={};var _0xa87ed8={'count':0x0,'rows':[]};return db[_0x963c('0x4b')]['findOne']({'where':{'id':_0x31b7fb['params']['id']}})['then'](handleEntityNotFound(_0x1b5dd9,null))['then'](function(_0x296658){if(_0x296658){_0x9cf4b0[_0x963c('0x4f')]=_[_0x963c('0x51')](db[_0x963c('0x6d')]['rawAttributes']);_0x9cf4b0['query']=_[_0x963c('0x51')](_0x31b7fb['query']);_0x9cf4b0[_0x963c('0x52')]=_[_0x963c('0x53')](_0x9cf4b0[_0x963c('0x4f')],_0x9cf4b0[_0x963c('0x50')]);_0x54813c[_0x963c('0x54')]=_['intersection'](_0x9cf4b0[_0x963c('0x4f')],qs[_0x963c('0x55')](_0x31b7fb[_0x963c('0x50')][_0x963c('0x55')]));_0x54813c['attributes']=_0x54813c[_0x963c('0x54')]['length']?_0x54813c[_0x963c('0x54')]:_0x9cf4b0[_0x963c('0x4f')];if(!_0x31b7fb['query'][_0x963c('0x57')](_0x963c('0x58'))){_0x54813c[_0x963c('0x59')]=qs[_0x963c('0x59')](_0x31b7fb[_0x963c('0x50')][_0x963c('0x59')]);_0x54813c[_0x963c('0x23')]=qs[_0x963c('0x23')](_0x31b7fb[_0x963c('0x50')]['offset']);}_0x54813c['order']=qs[_0x963c('0x5b')](_0x31b7fb[_0x963c('0x50')]['sort']);_0x54813c['where']=qs[_0x963c('0x52')](_[_0x963c('0x70')](_0x31b7fb[_0x963c('0x50')],_0x9cf4b0['filters']));_0x54813c['where'][_0x963c('0x6c')]=_0x296658['id'];if(_0x31b7fb[_0x963c('0x50')][_0x963c('0x5d')]){_0x54813c[_0x963c('0x5c')]=_[_0x963c('0x5e')](_0x54813c[_0x963c('0x5c')],{'$or':_['map'](_0x54813c[_0x963c('0x54')],function(_0x37916e){var _0x510637={};_0x510637[_0x37916e]={'$like':'%'+_0x31b7fb['query'][_0x963c('0x5d')]+'%'};return _0x510637;})});}_0x54813c=_[_0x963c('0x5e')]({},_0x54813c,_0x31b7fb[_0x963c('0x5f')]);return db[_0x963c('0x6d')]['count']({'where':_0x54813c['where']})[_0x963c('0x14')](function(_0x34547b){_0xa87ed8[_0x963c('0x25')]=_0x34547b;if(_0x31b7fb['query'][_0x963c('0x60')]){_0x54813c[_0x963c('0x61')]=[{'all':!![]}];}return db[_0x963c('0x6d')][_0x963c('0x62')](_0x54813c);})[_0x963c('0x14')](function(_0x511ddb){_0xa87ed8['rows']=_0x511ddb;return _0xa87ed8;});}})[_0x963c('0x14')](respondWithFilteredResult(_0x1b5dd9,_0x54813c))[_0x963c('0x1f')](handleError(_0x1b5dd9,null));};exports[_0x963c('0x71')]=function(_0x1bf6f8,_0x12ae32){return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x1bf6f8[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x12ae32,null))[_0x963c('0x14')](function(_0x5b7c37){if(_0x5b7c37){return _0x5b7c37[_0x963c('0x71')](_0x1bf6f8[_0x963c('0x50')][_0x963c('0x73')]);}})[_0x963c('0x14')](respondWithStatusCode(_0x12ae32,null))[_0x963c('0x1f')](handleError(_0x12ae32,null));};exports[_0x963c('0x74')]=function(_0x39a35a,_0x210504){if(_0x39a35a[_0x963c('0x67')]['id']){delete _0x39a35a[_0x963c('0x67')]['id'];}return db[_0x963c('0x4b')]['find']({'where':{'id':_0x39a35a[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x210504,null))['then'](function(_0x3e1e80){if(_0x3e1e80){_0x39a35a[_0x963c('0x67')]['MailAccountId']=_0x3e1e80['id'];return db[_0x963c('0x75')][_0x963c('0x6e')](_0x39a35a[_0x963c('0x67')]);}})[_0x963c('0x14')](respondWithResult(_0x210504,null))[_0x963c('0x1f')](handleError(_0x210504,null));};exports[_0x963c('0x76')]=function(_0x3427e0,_0x3d1bc6){var _0x285ac6={'raw':![],'where':{}};var _0x5cf8cd={};var _0x32ef50={'count':0x0,'rows':[]};return db['MailAccount'][_0x963c('0x77')]({'where':{'id':_0x3427e0['params']['id']}})['then'](handleEntityNotFound(_0x3d1bc6,null))[_0x963c('0x14')](function(_0x3b7f46){if(_0x3b7f46){_0x5cf8cd['model']=_[_0x963c('0x51')](db['CannedAnswer'][_0x963c('0x4c')]);_0x5cf8cd[_0x963c('0x50')]=_[_0x963c('0x51')](_0x3427e0[_0x963c('0x50')]);_0x5cf8cd[_0x963c('0x52')]=_['intersection'](_0x5cf8cd[_0x963c('0x4f')],_0x5cf8cd[_0x963c('0x50')]);_0x285ac6[_0x963c('0x54')]=_[_0x963c('0x53')](_0x5cf8cd[_0x963c('0x4f')],qs['fields'](_0x3427e0['query'][_0x963c('0x55')]));_0x285ac6[_0x963c('0x54')]=_0x285ac6['attributes'][_0x963c('0x56')]?_0x285ac6[_0x963c('0x54')]:_0x5cf8cd[_0x963c('0x4f')];if(!_0x3427e0[_0x963c('0x50')][_0x963c('0x57')](_0x963c('0x58'))){_0x285ac6[_0x963c('0x59')]=qs['limit'](_0x3427e0[_0x963c('0x50')]['limit']);_0x285ac6['offset']=qs[_0x963c('0x23')](_0x3427e0[_0x963c('0x50')]['offset']);}_0x285ac6[_0x963c('0x5a')]=qs[_0x963c('0x5b')](_0x3427e0['query'][_0x963c('0x5b')]);_0x285ac6[_0x963c('0x5c')]=qs[_0x963c('0x52')](_['pick'](_0x3427e0['query'],_0x5cf8cd[_0x963c('0x52')]));_0x285ac6['where'][_0x963c('0x6c')]=_0x3b7f46['id'];if(_0x3427e0[_0x963c('0x50')][_0x963c('0x5d')]){_0x285ac6[_0x963c('0x5c')]=_[_0x963c('0x5e')](_0x285ac6[_0x963c('0x5c')],{'$or':_[_0x963c('0x4a')](_0x285ac6[_0x963c('0x54')],function(_0x1709ee){var _0x92dfdc={};_0x92dfdc[_0x1709ee]={'$like':'%'+_0x3427e0['query'][_0x963c('0x5d')]+'%'};return _0x92dfdc;})});}_0x285ac6=_[_0x963c('0x5e')]({},_0x285ac6,_0x3427e0[_0x963c('0x5f')]);return db[_0x963c('0x75')]['count']({'where':_0x285ac6['where']})[_0x963c('0x14')](function(_0x4da1a0){_0x32ef50[_0x963c('0x25')]=_0x4da1a0;if(_0x3427e0['query'][_0x963c('0x60')]){_0x285ac6[_0x963c('0x61')]=[{'all':!![]}];}return db['CannedAnswer'][_0x963c('0x62')](_0x285ac6);})[_0x963c('0x14')](function(_0x3b49d8){_0x32ef50['rows']=_0x3b49d8;return _0x32ef50;});}})[_0x963c('0x14')](respondWithFilteredResult(_0x3d1bc6,_0x285ac6))['catch'](handleError(_0x3d1bc6,null));};exports[_0x963c('0x78')]=function(_0x380347,_0x42a110){return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x380347[_0x963c('0x64')]['id']}})['then'](handleEntityNotFound(_0x42a110,null))[_0x963c('0x14')](function(_0x3c2427){if(_0x3c2427){return _0x3c2427[_0x963c('0x78')](_0x380347[_0x963c('0x50')][_0x963c('0x73')]);}})[_0x963c('0x14')](respondWithStatusCode(_0x42a110,null))[_0x963c('0x1f')](handleError(_0x42a110,null));};exports[_0x963c('0x6e')]=function(_0x2b3bf3,_0x2105ca){var _0x2ac40f={'name':_0x2b3bf3[_0x963c('0x67')][_0x963c('0x2d')],'key':_0x2b3bf3[_0x963c('0x67')][_0x963c('0x79')],'provider':_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7a')]===_0x963c('0x68')?null:_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7a')],'email':_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7b')],'ListId':_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7c')],'active':!_[_0x963c('0x7d')](_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7e')])?_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7e')]:!![],'description':_0x2b3bf3[_0x963c('0x67')][_0x963c('0x7f')]||null};var _0x3ce0c9=getAuthenticationOptions(_0x2ac40f[_0x963c('0x7a')],_0x2b3bf3[_0x963c('0x67')]);_0x2ac40f[_0x963c('0x45')]=_0x3ce0c9['Imap'];_0x2ac40f[_0x963c('0x46')]=_0x3ce0c9['Smtp'];return db['MailAccount'][_0x963c('0x6e')](_0x2ac40f,{'include':[{'model':db[_0x963c('0x65')],'as':_0x963c('0x46')},{'model':db[_0x963c('0x48')],'as':_0x963c('0x45')}]})[_0x963c('0x14')](function(_0x3849d5){var _0x24b3f9=_0x2b3bf3['user']['get']({'plain':!![]});if(!_0x24b3f9)throw new Error(_0x963c('0x80'));if(_0x24b3f9[_0x963c('0x81')]===_0x963c('0x3b')){var _0x46e3f1=_0x3849d5[_0x963c('0x28')]({'plain':!![]});return db['UserProfileSection'][_0x963c('0x72')]({'where':{'name':_0x963c('0x29'),'userProfileId':_0x24b3f9[_0x963c('0x82')]},'raw':!![]})['then'](function(_0x2765e6){if(_0x2765e6&&_0x2765e6[_0x963c('0x83')]===0x0){return db[_0x963c('0x2a')][_0x963c('0x6e')]({'name':_0x46e3f1[_0x963c('0x2d')],'resourceId':_0x46e3f1['id'],'type':_0x2765e6[_0x963c('0x2d')],'sectionId':_0x2765e6['id']},{})[_0x963c('0x14')](function(){return _0x3849d5;});}else{return _0x3849d5;}})[_0x963c('0x1f')](function(_0x42f94a){logger[_0x963c('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x42f94a);throw _0x42f94a;});}return _0x3849d5;})[_0x963c('0x14')](respondWithResult(_0x2105ca,0xc9))[_0x963c('0x1f')](handleError(_0x2105ca,null));};exports[_0x963c('0x84')]=function(_0x9a3d69,_0x5e88bc){return db[_0x963c('0x4b')][_0x963c('0x77')]({'where':{'id':_0x9a3d69[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x5e88bc,null))[_0x963c('0x14')](function(_0x3c2871){if(_0x3c2871){return _0x3c2871[_0x963c('0x84')]();}return null;})[_0x963c('0x14')](respondWithResult(_0x5e88bc,null))[_0x963c('0x1f')](handleError(_0x5e88bc,null));};exports[_0x963c('0x85')]=function(_0x37c2bf,_0x5440f0){if(_0x37c2bf[_0x963c('0x67')]['id']){delete _0x37c2bf['body']['id'];}return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x37c2bf['params']['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x5440f0,null))[_0x963c('0x14')](function(_0x12fe27){if(_0x12fe27){_0x37c2bf[_0x963c('0x67')][_0x963c('0x6c')]=_0x12fe27['id'];return db[_0x963c('0x48')]['create'](_0x37c2bf[_0x963c('0x67')]);}})[_0x963c('0x14')](respondWithResult(_0x5440f0,null))[_0x963c('0x1f')](handleError(_0x5440f0,null));};exports[_0x963c('0x86')]=function(_0x34a2fd,_0x244b82){return db[_0x963c('0x4b')][_0x963c('0x77')]({'where':{'id':_0x34a2fd[_0x963c('0x64')]['id']}})['then'](handleEntityNotFound(_0x244b82,null))[_0x963c('0x14')](function(_0xfd661c){if(_0xfd661c){return _0xfd661c['setImap'](null);}return null;})[_0x963c('0x14')](respondWithStatusCode(_0x244b82,null))['catch'](handleError(_0x244b82,null));};exports[_0x963c('0x87')]=function(_0x48e05f,_0x2af19c){return db[_0x963c('0x4b')]['findOne']({'where':{'id':_0x48e05f[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x2af19c,null))['then'](function(_0x3ccc1b){if(_0x3ccc1b){return _0x3ccc1b[_0x963c('0x87')]();}return null;})['then'](respondWithResult(_0x2af19c,null))[_0x963c('0x1f')](handleError(_0x2af19c,null));};exports[_0x963c('0x88')]=function(_0x48badf,_0xfd9716){if(_0x48badf[_0x963c('0x67')]['id']){delete _0x48badf[_0x963c('0x67')]['id'];}return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x48badf[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0xfd9716,null))[_0x963c('0x14')](function(_0x3fd9c4){if(_0x3fd9c4){_0x48badf[_0x963c('0x67')][_0x963c('0x6c')]=_0x3fd9c4['id'];return db[_0x963c('0x65')]['create'](_0x48badf[_0x963c('0x67')]);}})[_0x963c('0x14')](respondWithResult(_0xfd9716,null))[_0x963c('0x1f')](handleError(_0xfd9716,null));};exports[_0x963c('0x89')]=function(_0x4d3a7c,_0x25ea26){return db[_0x963c('0x4b')][_0x963c('0x77')]({'where':{'id':_0x4d3a7c['params']['id']}})['then'](handleEntityNotFound(_0x25ea26,null))[_0x963c('0x14')](function(_0x360762){if(_0x360762){return _0x360762['setSmtp'](null);}return null;})[_0x963c('0x14')](respondWithStatusCode(_0x25ea26,null))[_0x963c('0x1f')](handleError(_0x25ea26,null));};exports[_0x963c('0x8a')]=function(_0x301ded,_0x525be8){return db[_0x963c('0x8b')][_0x963c('0x72')]({'where':{'id':_0x301ded[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x525be8,null))[_0x963c('0x14')](function(_0x273d78){if(_0x273d78){return _0x273d78['addInteraction'](_0x301ded['body'][_0x963c('0x73')],_['omit'](_0x301ded[_0x963c('0x67')],[_0x963c('0x73'),'id'])||{});}})[_0x963c('0x14')](respondWithResult(_0x525be8,null))[_0x963c('0x1f')](handleError(_0x525be8,null));};exports['getInteractions']=function(_0xa1ec74,_0x1395ff){var _0x444947={'raw':![],'where':{}};var _0x125a86={};var _0x3ae1b6={'count':0x0,'rows':[]};return db[_0x963c('0x4b')][_0x963c('0x77')]({'where':{'id':_0xa1ec74[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x1395ff,null))['then'](function(_0x4b06d5){if(_0x4b06d5){_0x125a86[_0x963c('0x4f')]=_[_0x963c('0x51')](db[_0x963c('0x8b')][_0x963c('0x4c')]);_0x125a86[_0x963c('0x50')]=_['keys'](_0xa1ec74[_0x963c('0x50')]);_0x125a86[_0x963c('0x52')]=_[_0x963c('0x53')](_0x125a86[_0x963c('0x4f')],_0x125a86[_0x963c('0x50')]);_0x444947['attributes']=_[_0x963c('0x53')](_0x125a86[_0x963c('0x4f')],qs[_0x963c('0x55')](_0xa1ec74[_0x963c('0x50')][_0x963c('0x55')]));_0x444947['attributes']=_0x444947['attributes'][_0x963c('0x56')]?_0x444947[_0x963c('0x54')]:_0x125a86[_0x963c('0x4f')];if(!_0xa1ec74[_0x963c('0x50')][_0x963c('0x57')](_0x963c('0x58'))){_0x444947[_0x963c('0x59')]=qs[_0x963c('0x59')](_0xa1ec74['query']['limit']);_0x444947[_0x963c('0x23')]=qs[_0x963c('0x23')](_0xa1ec74[_0x963c('0x50')][_0x963c('0x23')]);}_0x444947[_0x963c('0x5a')]=qs['sort'](_0xa1ec74[_0x963c('0x50')]['sort']);_0x444947[_0x963c('0x5c')]=qs['filters'](_[_0x963c('0x70')](_0xa1ec74[_0x963c('0x50')],_0x125a86['filters']));_0x444947[_0x963c('0x5c')][_0x963c('0x6c')]=_0x4b06d5['id'];if(_0xa1ec74[_0x963c('0x50')]['filter']){_0x444947[_0x963c('0x5c')]=_['merge'](_0x444947[_0x963c('0x5c')],{'$or':_['map'](_0x444947['attributes'],function(_0xa6cf91){var _0x545592={};_0x545592[_0xa6cf91]={'$like':'%'+_0xa1ec74['query'][_0x963c('0x5d')]+'%'};return _0x545592;})});}_0x444947=_[_0x963c('0x5e')]({},_0x444947,_0xa1ec74[_0x963c('0x5f')]);return db[_0x963c('0x8b')][_0x963c('0x25')]({'where':_0x444947[_0x963c('0x5c')]})[_0x963c('0x14')](function(_0x1bf8d9){_0x3ae1b6[_0x963c('0x25')]=_0x1bf8d9;if(_0xa1ec74[_0x963c('0x50')]['includeAll']){_0x444947['include']=[{'model':db[_0x963c('0x8c')],'as':_0x963c('0x8d'),'required':![]},{'model':db['User'],'as':_0x963c('0x8e'),'attributes':[_0x963c('0x2d'),'fullname',_0x963c('0x8f')],'required':![]},{'model':db[_0x963c('0x90')],'as':_0x963c('0x91'),'attributes':['id',_0x963c('0x2d'),'color'],'where':_0xa1ec74['query'][_0x963c('0x92')]?{'id':_0xa1ec74[_0x963c('0x50')]['tag']}:undefined,'required':_0xa1ec74[_0x963c('0x50')][_0x963c('0x92')]?!![]:![]}];}return db[_0x963c('0x8b')][_0x963c('0x62')](_0x444947);})['then'](function(_0x37881f){_0x3ae1b6[_0x963c('0x93')]=_0x37881f;return _0x3ae1b6;});}})[_0x963c('0x14')](respondWithFilteredResult(_0x1395ff,_0x444947))['catch'](handleError(_0x1395ff,null));};exports[_0x963c('0x94')]=function addApplications(_0xe04de6,_0x43acd0){var _0x396803=_0xe04de6[_0x963c('0x64')]['id'];var _0x96f964=_0xe04de6['body'];var _0x4c5024=0xc8;var _0x389ed4=null;return db['sequelize'][_0x963c('0x95')]({'isolationLevel':db[_0x963c('0x96')]['Transaction'][_0x963c('0x97')]['READ_COMMITTED']},function(_0x21c5ec){return db['MailAccount'][_0x963c('0x77')]({'where':{'id':_0x396803},'transaction':_0x21c5ec})['then'](function(_0x33a32c){if(_0x33a32c){return db['MailApplication'][_0x963c('0x2b')]({'where':{'MailAccountId':_0x396803},'transaction':_0x21c5ec})[_0x963c('0x14')](function(){var _0x3bf09b=_[_0x963c('0x4a')](_0x96f964,function(_0x47d78d){_0x47d78d[_0x963c('0x6c')]=_0x396803;return _0x47d78d;});return db[_0x963c('0x98')]['bulkCreate'](_0x3bf09b,{'transaction':_0x21c5ec});});}else{_0x4c5024=0x194;_0x389ed4=[];}});})[_0x963c('0x14')](function(){if(_0x4c5024!==0x194){return db['MailApplication'][_0x963c('0x99')]({'where':{'MailAccountId':_0x396803},'order':'priority'})['then'](function(_0x45e731){_0x389ed4=_0x45e731;});}})['catch'](function(_0x422886){_0x4c5024=0x1f4;logger[_0x963c('0x1b')](_0x422886[_0x963c('0x2c')]);if(_0x422886[_0x963c('0x2d')]){delete _0x422886[_0x963c('0x2d')];}_0x389ed4=_0x422886;})[_0x963c('0x9a')](function(){if(_0x389ed4===null){_0x43acd0[_0x963c('0x20')](_0x4c5024);}else{if(_0x4c5024===0x1f4){_0x43acd0[_0x963c('0x26')](_0x4c5024)[_0x963c('0x2e')](_0x389ed4);}else{_0x43acd0[_0x963c('0x26')](_0x4c5024)['json'](_0x389ed4);}}});};exports[_0x963c('0x9b')]=function(_0x12df54,_0x1b5a25){var _0x3482d2={};var _0xc50a46={};var _0x2d35a4;var _0xe97370;return db[_0x963c('0x4b')][_0x963c('0x77')]({'where':{'id':_0x12df54[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x1b5a25,null))['then'](function(_0x3e3279){if(_0x3e3279){_0x2d35a4=_0x3e3279;_0xc50a46[_0x963c('0x4f')]=_[_0x963c('0x51')](db[_0x963c('0x98')][_0x963c('0x4c')]);_0xc50a46[_0x963c('0x50')]=_[_0x963c('0x51')](_0x12df54[_0x963c('0x50')]);_0xc50a46[_0x963c('0x52')]=_['intersection'](_0xc50a46['model'],_0xc50a46[_0x963c('0x50')]);_0x3482d2['attributes']=_['intersection'](_0xc50a46[_0x963c('0x4f')],qs[_0x963c('0x55')](_0x12df54[_0x963c('0x50')]['fields']));_0x3482d2[_0x963c('0x54')]=_0x3482d2[_0x963c('0x54')][_0x963c('0x56')]?_0x3482d2['attributes']:_0xc50a46['model'];_0x3482d2['order']=qs[_0x963c('0x5b')](_0x12df54[_0x963c('0x50')][_0x963c('0x5b')]);_0x3482d2[_0x963c('0x5c')]=qs['filters'](_[_0x963c('0x70')](_0x12df54[_0x963c('0x50')],_0xc50a46[_0x963c('0x52')]));if(_0x12df54['query']['filter']){_0x3482d2[_0x963c('0x5c')]=_[_0x963c('0x5e')](_0x3482d2[_0x963c('0x5c')],{'$or':_['map'](_0x3482d2[_0x963c('0x54')],function(_0x2b949b){var _0x7a5da8={};_0x7a5da8[_0x2b949b]={'$like':'%'+_0x12df54['query'][_0x963c('0x5d')]+'%'};return _0x7a5da8;})});}_0x3482d2=_[_0x963c('0x5e')]({},_0x3482d2,_0x12df54['options']);return _0x2d35a4[_0x963c('0x9b')](_0x3482d2);}})[_0x963c('0x14')](function(_0x151da5){if(_0x151da5){_0xe97370=_0x151da5[_0x963c('0x56')];if(!_0x12df54[_0x963c('0x50')][_0x963c('0x57')](_0x963c('0x58'))){_0x3482d2[_0x963c('0x59')]=qs[_0x963c('0x59')](_0x12df54[_0x963c('0x50')][_0x963c('0x59')]);_0x3482d2['offset']=qs[_0x963c('0x23')](_0x12df54[_0x963c('0x50')][_0x963c('0x23')]);}return _0x2d35a4[_0x963c('0x9b')](_0x3482d2);}})['then'](function(_0xb6bd36){if(_0xb6bd36){return _0xb6bd36?{'count':_0xe97370,'rows':_0xb6bd36}:null;}})[_0x963c('0x14')](respondWithResult(_0x1b5a25,null))[_0x963c('0x1f')](handleError(_0x1b5a25,null));};exports[_0x963c('0x9c')]=function(_0x4cd6c2,_0x5a568b){var _0x4ae76f={'raw':!![],'where':{}};var _0x1cb90e={};var _0x8b6176={'count':0x0,'rows':[]};return db[_0x963c('0x4b')][_0x963c('0x77')]({'where':{'id':_0x4cd6c2[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x5a568b,null))['then'](function(_0x168e7b){if(_0x168e7b){_0x1cb90e[_0x963c('0x4f')]=_[_0x963c('0x51')](db[_0x963c('0x9d')][_0x963c('0x4c')]);_0x1cb90e[_0x963c('0x50')]=_[_0x963c('0x51')](_0x4cd6c2[_0x963c('0x50')]);_0x1cb90e['filters']=_[_0x963c('0x53')](_0x1cb90e[_0x963c('0x4f')],_0x1cb90e[_0x963c('0x50')]);_0x4ae76f[_0x963c('0x54')]=_[_0x963c('0x53')](_0x1cb90e['model'],qs[_0x963c('0x55')](_0x4cd6c2['query'][_0x963c('0x55')]));_0x4ae76f[_0x963c('0x54')]=_0x4ae76f['attributes'][_0x963c('0x56')]?_0x4ae76f[_0x963c('0x54')]:_0x1cb90e['model'];if(!_0x4cd6c2['query'][_0x963c('0x57')]('nolimit')){_0x4ae76f[_0x963c('0x59')]=qs[_0x963c('0x59')](_0x4cd6c2[_0x963c('0x50')][_0x963c('0x59')]);_0x4ae76f[_0x963c('0x23')]=qs[_0x963c('0x23')](_0x4cd6c2[_0x963c('0x50')][_0x963c('0x23')]);}_0x4ae76f['order']=qs['sort'](_0x4cd6c2[_0x963c('0x50')][_0x963c('0x5b')]);_0x4ae76f['where']=qs['filters'](_[_0x963c('0x70')](_0x4cd6c2[_0x963c('0x50')],_0x1cb90e[_0x963c('0x52')]));_0x4ae76f['where'][_0x963c('0x6c')]=_0x168e7b['id'];if(_0x4cd6c2[_0x963c('0x50')][_0x963c('0x5d')]){_0x4ae76f[_0x963c('0x5c')]=_['merge'](_0x4ae76f[_0x963c('0x5c')],{'$or':_[_0x963c('0x4a')](_0x4ae76f[_0x963c('0x54')],function(_0x5c9ad3){var _0x14e786={};_0x14e786[_0x5c9ad3]={'$like':'%'+_0x4cd6c2[_0x963c('0x50')]['filter']+'%'};return _0x14e786;})});}if(_0x4cd6c2[_0x963c('0x50')][_0x963c('0x9e')]){var _0x290615=_0x4cd6c2[_0x963c('0x50')][_0x963c('0x9e')][_0x963c('0x9f')](',');var _0x2a200d={};_0x2a200d[_0x290615[0x0]]={'$gte':moment(_0x290615[0x1])['format'](_0x963c('0xa0'))};_0x4ae76f[_0x963c('0x5c')]=_['merge'](_0x4ae76f[_0x963c('0x5c')],_0x2a200d);}_0x4ae76f=_[_0x963c('0x5e')]({},_0x4ae76f,_0x4cd6c2[_0x963c('0x5f')]);return db[_0x963c('0x9d')][_0x963c('0x25')]({'where':_0x4ae76f[_0x963c('0x5c')]})['then'](function(_0x2c5609){_0x8b6176[_0x963c('0x25')]=_0x2c5609;if(_0x4cd6c2['query'][_0x963c('0x60')]){_0x4ae76f[_0x963c('0x61')]=[{'all':!![]}];}return db['MailMessage'][_0x963c('0x62')](_0x4ae76f);})['then'](function(_0x4b2656){if(_0x4cd6c2['query']['inlineCss']===_0x963c('0xa1')){for(var _0x173d92=0x0;_0x173d92<_0x4b2656[_0x963c('0x56')];_0x173d92++){_0x4b2656[_0x173d92][_0x963c('0x67')]=juice(_0x4b2656[_0x173d92]['body']);}}_0x8b6176[_0x963c('0x93')]=_0x4b2656;return _0x8b6176;});}})[_0x963c('0x14')](respondWithFilteredResult(_0x5a568b,_0x4ae76f))['catch'](handleError(_0x5a568b,null));};exports[_0x963c('0x2e')]=function(_0x135f9e,_0x1517c3){var _0x3d28b3,_0x435c7={},_0x51072e;if(_0x135f9e['body']['to']){_0x51072e=_0x135f9e['body']['to'][_0x963c('0x9f')](',')[0x0];}return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x135f9e[_0x963c('0x64')]['id']},'include':[{'model':db[_0x963c('0xa2')],'as':_0x963c('0xa3'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'email':_0x51072e},'limit':0x1,'order':[[_0x963c('0xa4'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0x963c('0x46'),'raw':!![],'include':[{'model':db[_0x963c('0xa5')],'as':'CloudProvider','raw':!![]}]}]})[_0x963c('0x14')](handleEntityNotFound(_0x1517c3,null))['then'](function(_0x5454c0){if(!_0x5454c0)return;_0x3d28b3=_0x5454c0;if(!_0x5454c0[_0x963c('0x46')])throw new Error(_0x963c('0xa6'));if(_[_0x963c('0x7d')](_0x135f9e[_0x963c('0x67')][_0x963c('0xa7')])){_0x135f9e['body'][_0x963c('0xa7')]=util['format'](_0x963c('0xa8'),_0x5454c0[_0x963c('0x2d')],_0x5454c0[_0x963c('0x7b')]||_0x5454c0['Smtp'][_0x963c('0x3b')]);}if(_0x135f9e[_0x963c('0x67')][_0x963c('0xa9')]&&_0x135f9e['body']['attachments'][_0x963c('0x56')]){for(var _0x349675=0x0;_0x349675<_0x135f9e[_0x963c('0x67')][_0x963c('0xa9')][_0x963c('0x56')];_0x349675+=0x1){_0x135f9e[_0x963c('0x67')]['attachments'][_0x349675]={'filename':_0x135f9e[_0x963c('0x67')]['attachments'][_0x349675][_0x963c('0x2d')],'path':path[_0x963c('0xaa')](config[_0x963c('0xab')],_0x963c('0xac'),_0x135f9e[_0x963c('0x67')][_0x963c('0xa9')][_0x349675][_0x963c('0xad')])};}}var _0x555ee2=_0x5454c0['getSmtpOptions']();return respondWithRpcPromise(_0x963c('0xae'),'sendMail',{'account':_0x555ee2,'message':_0x135f9e[_0x963c('0x67')]});})[_0x963c('0x14')](function(_0x5aac44){if(!_0x5aac44)return;_0x435c7=_0x5aac44;if(!_0x3d28b3['List'])throw new Error('List\x20not\x20found');if(_0x3d28b3[_0x963c('0xa3')][_0x963c('0xaf')]['length'])return _0x3d28b3[_0x963c('0xa3')][_0x963c('0xaf')][0x0];return db[_0x963c('0x8c')][_0x963c('0x6e')](_[_0x963c('0xb')](_0x135f9e['body'],{'firstName':_0x135f9e['body']['to'],'email':_0x135f9e[_0x963c('0x67')]['to'],'phone':_0x135f9e[_0x963c('0x67')]['to'],'ListId':_0x3d28b3[_0x963c('0x7c')]}));})[_0x963c('0x14')](function(_0x574116){if(!_0x574116)return;var _0x5138e0={'UserId':_0x135f9e[_0x963c('0x3b')]['id'],'ContactId':_0x574116['id'],'MailAccountId':_0x3d28b3['id'],'inReplyTo':_0x435c7[_0x963c('0xb0')],'to':_0x135f9e[_0x963c('0x67')][_0x963c('0xa7')],'cc':_0x135f9e['body']['cc'],'subject':_0x135f9e[_0x963c('0x67')][_0x963c('0xb1')],'attach':_0x135f9e[_0x963c('0x67')][_0x963c('0xb2')],'firstMsgDirection':_0x963c('0xb3'),'lastMsgAt':moment()[_0x963c('0xb4')](_0x963c('0xa0')),'lastMsgDirection':_0x963c('0xb3'),'Messages':[_['merge'](_0x135f9e[_0x963c('0x67')],{'messageId':_0x435c7[_0x963c('0xb0')],'sentAt':moment()[_0x963c('0xb4')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x3d28b3['id'],'UserId':_0x135f9e[_0x963c('0x3b')]['id'],'ContactId':_0x574116['id']})]};if(_0x135f9e[_0x963c('0x67')][_0x963c('0xb5')]){_0x5138e0=_[_0x963c('0x5e')](_0x5138e0,_0x135f9e['body'][_0x963c('0xb5')]);}return db['MailInteraction'][_0x963c('0x6e')](_0x5138e0,{'include':[{'model':db[_0x963c('0x9d')],'as':_0x963c('0xb6')}]});})[_0x963c('0x14')](respondWithResult(_0x1517c3,null))[_0x963c('0x1f')](handleError(_0x1517c3,null));};exports['verifySmtp']=function(_0x521e9b,_0x36070f){return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x521e9b['params']['id']},'include':[{'model':db[_0x963c('0x65')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x963c('0xa5'),'raw':!![]}]}]})[_0x963c('0x14')](handleEntityNotFound(_0x36070f,null))[_0x963c('0x14')](function(_0x48d0e4){if(!_0x48d0e4[_0x963c('0x46')])return;var _0x229e6c=_0x48d0e4[_0x963c('0xb7')]();return respondWithRpcPromise('VerifySmtp',_0x963c('0xb8'),{'account':_0x229e6c});})[_0x963c('0x14')](respondWithResult(_0x36070f,null))[_0x963c('0x1f')](handleError(_0x36070f,null));};exports['destroy']=function(_0x547d20,_0x24ec3f){return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x547d20[_0x963c('0x64')]['id']}})[_0x963c('0x14')](handleEntityNotFound(_0x24ec3f,null))[_0x963c('0x14')](function(_0x59e178){if(_0x59e178&&_0x59e178['service']){throw new db[(_0x963c('0xb9'))][(_0x963c('0xba'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x59e178;})[_0x963c('0x14')](removeEntity(_0x24ec3f,null))[_0x963c('0x1f')](handleError(_0x24ec3f,null));};exports['addAgents']=function(_0x1f953a,_0x3df71e){return db[_0x963c('0x4b')][_0x963c('0x72')]({'where':{'id':_0x1f953a[_0x963c('0x64')]['id']}})['then'](handleEntityNotFound(_0x3df71e,null))['then'](function(_0x19ec16){if(_0x19ec16){return _0x19ec16['addAgents'](_0x1f953a[_0x963c('0x67')]['ids'],_[_0x963c('0xbb')](_0x1f953a[_0x963c('0x67')],[_0x963c('0x73'),'id'])||{})[_0x963c('0xbc')](function(_0x20cbfa){for(var _0x3a23fe=0x0;_0x3a23fe<_0x1f953a[_0x963c('0x67')][_0x963c('0x73')][_0x963c('0x56')];_0x3a23fe+=0x1){socket[_0x963c('0xbd')]('userMailAccount:save',{'UserId':Number(_0x1f953a[_0x963c('0x67')][_0x963c('0x73')][_0x3a23fe]),'MailAccountId':Number(_0x1f953a[_0x963c('0x64')]['id'])});}return _0x20cbfa;});}})[_0x963c('0x14')](respondWithResult(_0x3df71e,null))[_0x963c('0x1f')](handleError(_0x3df71e,null));};exports['removeAgents']=function(_0x4c4764,_0x1b89e3){return db['MailAccount']['find']({'where':{'id':_0x4c4764[_0x963c('0x64')]['id']}})['then'](handleEntityNotFound(_0x1b89e3,null))['then'](function(_0x19949f){if(_0x19949f){return _0x19949f[_0x963c('0xbe')](_0x4c4764[_0x963c('0x50')][_0x963c('0x73')])[_0x963c('0x14')](function(){if(_[_0x963c('0xbf')](_0x4c4764[_0x963c('0x50')][_0x963c('0x73')])){for(var _0x4f40c6=0x0;_0x4f40c6<_0x4c4764['query'][_0x963c('0x73')]['length'];_0x4f40c6+=0x1){socket[_0x963c('0xbd')](_0x963c('0xc0'),{'UserId':Number(_0x4c4764['query']['ids'][_0x4f40c6]),'MailAccountId':Number(_0x4c4764[_0x963c('0x64')]['id'])});}}else{socket['emit'](_0x963c('0xc0'),{'UserId':Number(_0x4c4764[_0x963c('0x50')][_0x963c('0x73')]),'MailAccountId':Number(_0x4c4764['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1b89e3,null))[_0x963c('0x1f')](handleError(_0x1b89e3,null));};exports[_0x963c('0xc1')]=function(_0x20ed5c,_0x325346){var _0x520de2={};var _0xfec01a={};var _0x416af0;var _0x363218;return db['MailAccount'][_0x963c('0x77')]({'where':{'id':_0x20ed5c[_0x963c('0x64')]['id']}})['then'](handleEntityNotFound(_0x325346,null))[_0x963c('0x14')](function(_0x437bcc){if(_0x437bcc){_0x416af0=_0x437bcc;_0xfec01a[_0x963c('0x4f')]=_['keys'](db[_0x963c('0xc2')][_0x963c('0x4c')]);_0xfec01a[_0x963c('0x50')]=_[_0x963c('0x51')](_0x20ed5c[_0x963c('0x50')]);_0xfec01a['filters']=_[_0x963c('0x53')](_0xfec01a[_0x963c('0x4f')],_0xfec01a[_0x963c('0x50')]);_0x520de2[_0x963c('0x54')]=_['intersection'](_0xfec01a[_0x963c('0x4f')],qs[_0x963c('0x55')](_0x20ed5c[_0x963c('0x50')]['fields']));_0x520de2[_0x963c('0x54')]=_0x520de2[_0x963c('0x54')][_0x963c('0x56')]?_0x520de2[_0x963c('0x54')]:_0xfec01a['model'];_0x520de2[_0x963c('0x5a')]=qs[_0x963c('0x5b')](_0x20ed5c[_0x963c('0x50')]['sort']);_0x520de2['where']=qs[_0x963c('0x52')](_[_0x963c('0x70')](_0x20ed5c[_0x963c('0x50')],_0xfec01a[_0x963c('0x52')]));if(_0x20ed5c[_0x963c('0x50')][_0x963c('0x5d')]){_0x520de2[_0x963c('0x5c')]=_[_0x963c('0x5e')](_0x520de2[_0x963c('0x5c')],{'$or':_['map'](_0x520de2[_0x963c('0x54')],function(_0x41ab03){var _0x107128={};_0x107128[_0x41ab03]={'$like':'%'+_0x20ed5c[_0x963c('0x50')][_0x963c('0x5d')]+'%'};return _0x107128;})});}_0x520de2=_['merge']({},_0x520de2,_0x20ed5c[_0x963c('0x5f')]);return _0x416af0[_0x963c('0xc1')](_0x520de2);}})[_0x963c('0x14')](function(_0x1aaf18){if(_0x1aaf18){_0x363218=_0x1aaf18[_0x963c('0x56')];if(!_0x20ed5c[_0x963c('0x50')][_0x963c('0x57')](_0x963c('0x58'))){_0x520de2['limit']=qs[_0x963c('0x59')](_0x20ed5c[_0x963c('0x50')][_0x963c('0x59')]);_0x520de2[_0x963c('0x23')]=qs[_0x963c('0x23')](_0x20ed5c[_0x963c('0x50')][_0x963c('0x23')]);}return _0x416af0[_0x963c('0xc1')](_0x520de2);}})[_0x963c('0x14')](function(_0xdde057){if(_0xdde057){return _0xdde057?{'count':_0x363218,'rows':_0xdde057}:null;}})[_0x963c('0x14')](respondWithResult(_0x325346,null))['catch'](handleError(_0x325346,null));}; \ No newline at end of file diff --git a/server/api/mailAccount/mailAccount.events.js b/server/api/mailAccount/mailAccount.events.js new file mode 100644 index 0000000..6d35f95 --- /dev/null +++ b/server/api/mailAccount/mailAccount.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd9b4=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount'];(function(_0x4ec520,_0x15fee2){var _0xed49d7=function(_0x3031f2){while(--_0x3031f2){_0x4ec520['push'](_0x4ec520['shift']());}};_0xed49d7(++_0x15fee2);}(_0xd9b4,0x1c0));var _0x4d9b=function(_0x105e5c,_0x2a1c3a){_0x105e5c=_0x105e5c-0x0;var _0x4426f8=_0xd9b4[_0x105e5c];return _0x4426f8;};'use strict';var EventEmitter=require(_0x4d9b('0x0'));var MailAccount=require(_0x4d9b('0x1'))['db'][_0x4d9b('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x4d9b('0x3')](0x0);var events={'afterCreate':_0x4d9b('0x4'),'afterUpdate':_0x4d9b('0x5'),'afterDestroy':_0x4d9b('0x6')};function emitEvent(_0x19b4cb){return function(_0x493238,_0x598beb,_0xa5ee50){MailAccountEvents['emit'](_0x19b4cb+':'+_0x493238['id'],_0x493238);MailAccountEvents[_0x4d9b('0x7')](_0x19b4cb,_0x493238);_0xa5ee50(null);};}for(var e in events){if(events[_0x4d9b('0x8')](e)){var event=events[e];MailAccount[_0x4d9b('0x9')](e,emitEvent(event));}}module[_0x4d9b('0xa')]=MailAccountEvents; \ No newline at end of file diff --git a/server/api/mailAccount/mailAccount.model.js b/server/api/mailAccount/mailAccount.model.js new file mode 100644 index 0000000..e1c6fe7 --- /dev/null +++ b/server/api/mailAccount/mailAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7812=['pass','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider','custom','host','port','Smtp','secure','authentication','modernAuthentication','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','user','data5'];(function(_0x298152,_0x2bab07){var _0x58117d=function(_0x12ff68){while(--_0x12ff68){_0x298152['push'](_0x298152['shift']());}};_0x58117d(++_0x2bab07);}(_0x7812,0x17d));var _0x2781=function(_0x377d7d,_0x5d8eb2){_0x377d7d=_0x377d7d-0x0;var _0x59d647=_0x7812[_0x377d7d];return _0x59d647;};'use strict';var attributes=require(_0x2781('0x0'));module[_0x2781('0x1')]=function(_0x18e5be){return _0x18e5be[_0x2781('0x2')](_0x2781('0x3'),attributes,{'tableName':_0x2781('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x1f4ec8=this;var _0x3b4076={'id':_0x1f4ec8['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1f4ec8[_0x2781('0x5')]!==_0x2781('0x6')){_0x3b4076['service']=_0x1f4ec8['provider'];}else{_0x3b4076[_0x2781('0x7')]=_0x1f4ec8['Smtp'][_0x2781('0x7')];_0x3b4076[_0x2781('0x8')]=_0x1f4ec8[_0x2781('0x9')][_0x2781('0x8')];_0x3b4076[_0x2781('0xa')]=_0x1f4ec8['Smtp'][_0x2781('0xa')];}if(_0x1f4ec8['Smtp'][_0x2781('0xb')]){if(_0x1f4ec8[_0x2781('0x9')][_0x2781('0xc')]){if(!_0x1f4ec8['Smtp']['CloudProvider'])throw new Error(_0x2781('0xd'));_0x3b4076[_0x2781('0xe')]={'type':_0x2781('0xf'),'user':_0x1f4ec8['Smtp'][_0x2781('0x10')],'accessToken':_0x1f4ec8[_0x2781('0x9')]['CloudProvider'][_0x2781('0x11')]};}else{_0x3b4076['auth']={'user':_0x1f4ec8[_0x2781('0x9')][_0x2781('0x10')],'pass':_0x1f4ec8[_0x2781('0x9')][_0x2781('0x12')]};}}return _0x3b4076;}}});}; \ No newline at end of file diff --git a/server/api/mailAccount/mailAccount.rpc.js b/server/api/mailAccount/mailAccount.rpc.js new file mode 100644 index 0000000..a61ea1d --- /dev/null +++ b/server/api/mailAccount/mailAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd943=['MailServerOut','Smtp','CloudProvider','get','account','omit','smtpOptions','applications','list','asc','autoclose','close','Contacts','length','defaults','ListId','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','create','spread','attach','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','socket.io-emitter','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','MailAccount','findAll','options','where','attributes','limit','include','map','model','stringify','GetMailAccount','ShowMailAccount','smtp','setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','isNil','from','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','DESC','MailApplication','Applications'];(function(_0x4b07eb,_0x4284fb){var _0x3ed187=function(_0x4728aa){while(--_0x4728aa){_0x4b07eb['push'](_0x4b07eb['shift']());}};_0x3ed187(++_0x4284fb);}(_0xd943,0x15d));var _0x3d94=function(_0x43750b,_0x5b6b4f){_0x43750b=_0x43750b-0x0;var _0x6ca08=_0xd943[_0x43750b];return _0x6ca08;};'use strict';var _=require(_0x3d94('0x0'));var moment=require(_0x3d94('0x1'));var BPromise=require(_0x3d94('0x2'));var rs=require(_0x3d94('0x3'));var Redis=require('ioredis');var db=require(_0x3d94('0x4'))['db'];var logger=require(_0x3d94('0x5'))(_0x3d94('0x6'));var config=require(_0x3d94('0x7'));var jayson=require(_0x3d94('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x3d94('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3d94('0xa'))(new Redis(config[_0x3d94('0x9')]));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x3984a3,_0x27e381,_0x1cc58c){return new BPromise(function(_0x5908a7,_0x182066){return client['request'](_0x3984a3,_0x1cc58c)[_0x3d94('0xb')](function(_0x301536){logger['info'](_0x3d94('0xc'),_0x27e381,_0x3d94('0xd'));logger[_0x3d94('0xe')](_0x3d94('0xf'),_0x27e381,_0x3d94('0xd'),JSON['stringify'](_0x301536));if(_0x301536[_0x3d94('0x10')]){if(_0x301536[_0x3d94('0x10')][_0x3d94('0x11')]===0x1f4){logger['error'](_0x3d94('0xc'),_0x27e381,_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);return _0x182066(_0x301536['error'][_0x3d94('0x12')]);}logger[_0x3d94('0x10')](_0x3d94('0xc'),_0x27e381,_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);return _0x5908a7(_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);}else{logger[_0x3d94('0x13')]('MailAccount,\x20%s,\x20%s',_0x27e381,_0x3d94('0xd'));_0x5908a7(_0x301536[_0x3d94('0x14')][_0x3d94('0x12')]);}})[_0x3d94('0x15')](function(_0x4afc92){logger[_0x3d94('0x10')](_0x3d94('0xc'),_0x27e381,_0x4afc92);_0x182066(_0x4afc92);});});}exports['GetMailAccount']=function(_0x9bca24){var _0x59b741=this;return new Promise(function(_0x28bead,_0x193934){return db[_0x3d94('0x16')][_0x3d94('0x17')]({'raw':_0x9bca24[_0x3d94('0x18')]?_0x9bca24['options']['raw']===undefined?!![]:![]:!![],'where':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x19')]||null:null,'attributes':_0x9bca24['options']?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1a')]||null:null,'limit':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1b')]||null:null,'include':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1c')],function(_0x192839){return{'model':db[_0x192839[_0x3d94('0x1e')]],'as':_0x192839['as'],'attributes':_0x192839[_0x3d94('0x1a')],'include':_0x192839[_0x3d94('0x1c')]?_['map'](_0x192839[_0x3d94('0x1c')],function(_0x558fd2){return{'model':db[_0x558fd2[_0x3d94('0x1e')]],'as':_0x558fd2['as'],'attributes':_0x558fd2[_0x3d94('0x1a')],'include':_0x558fd2[_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x558fd2[_0x3d94('0x1c')],function(_0x82b568){return{'model':db[_0x82b568[_0x3d94('0x1e')]],'as':_0x82b568['as'],'attributes':_0x82b568['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x362642){logger['info']('GetMailAccount',_0x9bca24);logger[_0x3d94('0xe')]('GetMailAccount',_0x9bca24,JSON[_0x3d94('0x1f')](_0x362642));_0x28bead(_0x362642);})[_0x3d94('0x15')](function(_0x32403a){logger['error'](_0x3d94('0x20'),_0x32403a['message'],_0x9bca24);_0x193934(_0x59b741[_0x3d94('0x10')](0x1f4,_0x32403a['message']));});});};exports[_0x3d94('0x21')]=function(_0x215ad7){var _0x29b1ff=this;return new Promise(function(_0x246f88,_0x50560c){return db[_0x3d94('0x16')]['find']({'raw':_0x215ad7[_0x3d94('0x18')]?_0x215ad7[_0x3d94('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x215ad7['options']?_0x215ad7[_0x3d94('0x18')][_0x3d94('0x19')]||null:null,'attributes':_0x215ad7[_0x3d94('0x18')]?_0x215ad7['options'][_0x3d94('0x1a')]||null:null,'include':_0x215ad7[_0x3d94('0x18')]?_0x215ad7['options'][_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x215ad7[_0x3d94('0x18')][_0x3d94('0x1c')],function(_0x782c1){return{'model':db[_0x782c1['model']],'as':_0x782c1['as'],'attributes':_0x782c1[_0x3d94('0x1a')],'include':_0x782c1[_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x782c1[_0x3d94('0x1c')],function(_0xb493f1){return{'model':db[_0xb493f1[_0x3d94('0x1e')]],'as':_0xb493f1['as'],'attributes':_0xb493f1['attributes'],'include':_0xb493f1['include']?_[_0x3d94('0x1d')](_0xb493f1[_0x3d94('0x1c')],function(_0x1c1b25){return{'model':db[_0x1c1b25[_0x3d94('0x1e')]],'as':_0x1c1b25['as'],'attributes':_0x1c1b25[_0x3d94('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3d94('0xb')](function(_0x2ef743){if(_0x215ad7[_0x3d94('0x18')][_0x3d94('0x22')]===!![])_0x2ef743[_0x3d94('0x23')]('smtpOptions',_0x2ef743[_0x3d94('0x24')]());logger[_0x3d94('0x13')](_0x3d94('0x21'),_0x215ad7);logger[_0x3d94('0xe')]('ShowMailAccount',_0x215ad7,JSON[_0x3d94('0x1f')](_0x2ef743));_0x246f88(_0x2ef743);})[_0x3d94('0x15')](function(_0x35e0e6){logger[_0x3d94('0x10')](_0x3d94('0x21'),_0x35e0e6['message'],_0x215ad7);_0x50560c(_0x29b1ff[_0x3d94('0x10')](0x1f4,_0x35e0e6[_0x3d94('0x12')]));});});};exports[_0x3d94('0x25')]=function(_0x485066){var _0x4eee4d=this;return new Promise(function(_0x4d8a8f,_0x47905e){var _0x3b3550={'body':_0x485066[_0x3d94('0x26')],'channel':_0x3d94('0x27')};var _0x146ccb=_[_0x3d94('0x28')](_[_0x3d94('0x29')](db[_0x3d94('0x2a')]['rawAttributes']),['createdAt',_0x3d94('0x2b'),_0x3d94('0x2c'),'ListId']);var _0x2d0aa2=![];if(_0x485066['body']['id']){delete _0x485066[_0x3d94('0x26')]['id'];}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x26')])||_0x485066['body'][_0x3d94('0x26')]===''){return _0x47905e(_0x4eee4d['error'](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x146ccb));}if(!_[_0x3d94('0x30')](_0x146ccb,_0x485066['body'][_0x3d94('0x2f')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,_0x3d94('0x31')+_0x146ccb));}var _0x15c8e7={};_0x15c8e7[_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')]]=_0x485066[_0x3d94('0x26')]['from'];return db[_0x3d94('0x16')][_0x3d94('0x32')]({'where':{'id':_0x485066['account']['id']},'include':[{'model':db['CmList'],'as':_0x3d94('0x33'),'include':[{'model':db[_0x3d94('0x2a')],'as':'Contacts','where':_0x15c8e7,'limit':0x1,'order':[[_0x3d94('0x2b'),_0x3d94('0x34')]]}]},{'model':db[_0x3d94('0x35')],'as':_0x3d94('0x36')},{'model':db[_0x3d94('0x37')],'as':_0x3d94('0x38'),'include':[{'model':db[_0x3d94('0x39')],'as':_0x3d94('0x39')}]}]})[_0x3d94('0xb')](function(_0x2429bc){if(_0x2429bc&&_0x2429bc[_0x3d94('0x33')]){var _0x29682b=_0x2429bc[_0x3d94('0x3a')]({'plain':!![]});_0x3b3550[_0x3d94('0x3b')]=_[_0x3d94('0x3c')](_0x29682b,['Applications',_0x3d94('0x33')]);_0x3b3550[_0x3d94('0x3b')][_0x3d94('0x3d')]=_0x2429bc[_0x3d94('0x24')]();_0x3b3550[_0x3d94('0x3e')]=_0x29682b[_0x3d94('0x36')];_0x3b3550[_0x3d94('0x3f')]=_0x29682b[_0x3d94('0x33')];_0x3b3550[_0x3d94('0x3e')]=_['orderBy'](_0x3b3550[_0x3d94('0x3e')],['priority'],[_0x3d94('0x40')]);if(_0x3b3550[_0x3d94('0x3b')]&&_0x3b3550['account'][_0x3d94('0x41')]){_0x3b3550['applications']['push']({'id':0x0,'priority':_0x3b3550[_0x3d94('0x3e')]['length']+0x1,'app':_0x3d94('0x42'),'appdata':_0x3d94('0x41'),'interval':'*,*,*,*'});}if(_0x3b3550[_0x3d94('0x3b')]['Applications']){delete _0x3b3550['account'][_0x3d94('0x36')];}if(_0x3b3550[_0x3d94('0x3b')][_0x3d94('0x33')]){delete _0x3b3550[_0x3d94('0x3b')][_0x3d94('0x33')];}if(_0x29682b[_0x3d94('0x33')][_0x3d94('0x43')][_0x3d94('0x44')]){return _0x29682b[_0x3d94('0x33')]['Contacts'][0x0];}var _0x28cfbb=_[_0x3d94('0x45')](_0x485066[_0x3d94('0x26')],{'firstName':_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')],'ListId':_0x29682b[_0x3d94('0x46')]});_0x28cfbb[_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')]]=_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')];return db[_0x3d94('0x2a')]['create'](_0x28cfbb);}else{throw new Error(_0x3d94('0x47'));}})['then'](function(_0x709841){_0x3b3550[_0x3d94('0x48')]=_0x709841;if(_0x709841){if(!_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')]){_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')]=rs[_0x3d94('0x4a')]()+'\x20'+_0x485066['body']['message'][_0x3d94('0x2e')];}var _0x4bd97c={'ContactId':_0x709841['id'],'MailAccountId':_0x485066[_0x3d94('0x3b')]['id'],'inReplyTo':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x49')],'to':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x2e')],'cc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['cc'],'subject':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x4b')],'attach':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['attach'],'lastMsgAt':moment()[_0x3d94('0x4c')](_0x3d94('0x4d')),'lastMsgDirection':'in'};return db[_0x3d94('0x4e')][_0x3d94('0x32')]({'where':{'closed':![],'MailAccountId':_0x485066['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x3d94('0x4f'),'attributes':[_0x3d94('0x49')],'where':{'messageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['inReplyTo']}}]})[_0x3d94('0xb')](function(_0x1c99d1){if(_0x1c99d1){return[_0x1c99d1,![]];}return db['MailInteraction'][_0x3d94('0x50')](_0x4bd97c)[_0x3d94('0xb')](function(_0x336e36){return[_0x336e36,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x3d94('0x51')](function(_0x227372,_0x585531){if(_0x227372){_0x2d0aa2=_0x585531;if(!_0x585531){return _0x227372['update']({'inReplyTo':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['messageId'],'to':_0x485066['body']['message'][_0x3d94('0x2e')],'cc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['cc'],'subject':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['subject'],'attach':_0x227372[_0x3d94('0x52')]?_0x227372[_0x3d94('0x52')]:_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x52')],'substatus':null,'substatusAt':moment()[_0x3d94('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x3d94('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x227372;}}})[_0x3d94('0xb')](function(_0x41d561){_0x3b3550[_0x3d94('0x53')]=_0x41d561[_0x3d94('0x3a')]({'plain':!![]});_0x3b3550[_0x3d94('0x53')][_0x3d94('0x54')]=_0x2d0aa2;return db['MailMessage']['create']({'body':_0x485066[_0x3d94('0x26')]['body'],'MailAccountId':_0x485066['account']['id'],'MailInteractionId':_0x41d561['id'],'direction':'in','ContactId':_0x3b3550['contact']['id'],'messageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')],'from':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x2e')],'to':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['to'],'cc':_0x485066['body'][_0x3d94('0x12')]['cc'],'subject':_0x485066['body'][_0x3d94('0x12')][_0x3d94('0x4b')],'attach':_0x485066[_0x3d94('0x26')]['message']['attach'],'Attachments':_0x485066['body'][_0x3d94('0x12')][_0x3d94('0x55')],'originTo':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x56')],'originCc':_0x485066['body']['message'][_0x3d94('0x57')],'bcc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['bcc'],'ChatWebsiteId':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x58')]||null,'originChannel':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x59')]||_0x3d94('0x5a'),'ChatOfflineMessageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x5b')]||null},{'include':[{'model':db[_0x3d94('0x5c')],'as':_0x3d94('0x5d')}]});})[_0x3d94('0xb')](function(_0xe6cfd1){_0x3b3550[_0x3d94('0x12')]=_0xe6cfd1;if(_0x3b3550['interaction'][_0x3d94('0x5e')]){return db[_0x3d94('0x5f')][_0x3d94('0x32')]({'attributes':['id',_0x3d94('0x60')],'where':{'id':_0x3b3550['interaction'][_0x3d94('0x5e')]}})['then'](function(_0x4f217f){if(_0x4f217f){_0x3b3550[_0x3d94('0x3e')]['unshift']({'id':0x0,'priority':0x0,'app':_0x3d94('0x61'),'appdata':_0x4f217f[_0x3d94('0x60')]+','+(_0x3b3550['account'][_0x3d94('0x62')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x3d94('0x63'),_0x3d94('0x64'),_0x3b3550);});}return respondWithRpcPromise('Start','startRouting',_0x3b3550);})['then'](function(_0x833d96){_0x4d8a8f(_0x833d96);})['catch'](function(_0x5a8114){_0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,_0x5a8114[_0x3d94('0x12')]));});});}; \ No newline at end of file diff --git a/server/api/mailAccount/mailAccount.socket.js b/server/api/mailAccount/mailAccount.socket.js new file mode 100644 index 0000000..394bc1e --- /dev/null +++ b/server/api/mailAccount/mailAccount.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbb72=['register','length','mailAccount:','remove','update','emit','removeListener'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbb72,0xce));var _0x2bb7=function(_0x489fe7,_0xe66878){_0x489fe7=_0x489fe7-0x0;var _0x35c203=_0xbb72[_0x489fe7];return _0x35c203;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save',_0x2bb7('0x0'),_0x2bb7('0x1')];function createListener(_0x4d77a9,_0x3cc783){return function(_0x5dffa9){_0x3cc783[_0x2bb7('0x2')](_0x4d77a9,_0x5dffa9);};}function removeListener(_0x5c9ebd,_0x4975da){return function(){MailAccountEvents[_0x2bb7('0x3')](_0x5c9ebd,_0x4975da);};}exports[_0x2bb7('0x4')]=function(_0x186762){for(var _0x28445a=0x0,_0x4e512d=events[_0x2bb7('0x5')];_0x28445a<_0x4e512d;_0x28445a++){var _0x41669b=events[_0x28445a];var _0x2c57d2=createListener(_0x2bb7('0x6')+_0x41669b,_0x186762);MailAccountEvents['on'](_0x41669b,_0x2c57d2);}}; \ No newline at end of file diff --git a/server/api/mailApplication/index.js b/server/api/mailApplication/index.js new file mode 100644 index 0000000..97512b9 --- /dev/null +++ b/server/api/mailApplication/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x02fc=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put'];(function(_0x36594d,_0x5aaa06){var _0x1b8802=function(_0x578cc9){while(--_0x578cc9){_0x36594d['push'](_0x36594d['shift']());}};_0x1b8802(++_0x5aaa06);}(_0x02fc,0x89));var _0xc02f=function(_0x5a5fa4,_0x111420){_0x5a5fa4=_0x5a5fa4-0x0;var _0x4606dd=_0x02fc[_0x5a5fa4];return _0x4606dd;};'use strict';var multer=require(_0xc02f('0x0'));var util=require(_0xc02f('0x1'));var path=require(_0xc02f('0x2'));var timeout=require(_0xc02f('0x3'));var express=require('express');var router=express[_0xc02f('0x4')]();var fs_extra=require(_0xc02f('0x5'));var auth=require(_0xc02f('0x6'));var interaction=require(_0xc02f('0x7'));var config=require(_0xc02f('0x8'));var controller=require(_0xc02f('0x9'));router[_0xc02f('0xa')](_0xc02f('0xb'),auth[_0xc02f('0xc')](),controller[_0xc02f('0xd')]);router[_0xc02f('0xe')](_0xc02f('0xb'),auth[_0xc02f('0xc')](),controller[_0xc02f('0xf')]);router[_0xc02f('0x10')](_0xc02f('0xb'),auth['isAuthenticated'](),controller[_0xc02f('0x11')]);module[_0xc02f('0x12')]=router; \ No newline at end of file diff --git a/server/api/mailApplication/mailApplication.attributes.js b/server/api/mailApplication/mailApplication.attributes.js new file mode 100644 index 0000000..3270f08 --- /dev/null +++ b/server/api/mailApplication/mailApplication.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x816c=['INTEGER','noop','STRING','*,*,*,*','sequelize'];(function(_0x25e7ee,_0x4d8966){var _0x1251f2=function(_0x165472){while(--_0x165472){_0x25e7ee['push'](_0x25e7ee['shift']());}};_0x1251f2(++_0x4d8966);}(_0x816c,0xc7));var _0xc816=function(_0x2e1051,_0x58b01d){_0x2e1051=_0x2e1051-0x0;var _0x5aa734=_0x816c[_0x2e1051];return _0x5aa734;};'use strict';var Sequelize=require(_0xc816('0x0'));module['exports']={'priority':{'type':Sequelize[_0xc816('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc816('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xc816('0x3')]},'interval':{'type':Sequelize[_0xc816('0x3')],'defaultValue':_0xc816('0x4')}}; \ No newline at end of file diff --git a/server/api/mailApplication/mailApplication.controller.js b/server/api/mailApplication/mailApplication.controller.js new file mode 100644 index 0000000..a66fb0b --- /dev/null +++ b/server/api/mailApplication/mailApplication.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbdb7=['update','error','stack','name','send','show','params','model','keys','MailApplication','query','filters','intersection','attributes','length','includeAll','merge','find','then','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save'];(function(_0x30f030,_0xd03b7a){var _0xf7614f=function(_0x261cac){while(--_0x261cac){_0x30f030['push'](_0x30f030['shift']());}};_0xf7614f(++_0xd03b7a);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x871ef5,_0x58880b){_0x871ef5=_0x871ef5-0x0;var _0x1f62ea=_0xbdb7[_0x871ef5];return _0x1f62ea;};'use strict';var emlformat=require(_0x7bdb('0x0'));var rimraf=require(_0x7bdb('0x1'));var zipdir=require(_0x7bdb('0x2'));var jsonpatch=require(_0x7bdb('0x3'));var rp=require(_0x7bdb('0x4'));var moment=require(_0x7bdb('0x5'));var BPromise=require(_0x7bdb('0x6'));var Mustache=require(_0x7bdb('0x7'));var util=require(_0x7bdb('0x8'));var path=require('path');var sox=require(_0x7bdb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7bdb('0xa'));var _=require(_0x7bdb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7bdb('0xc'));var deskjs=require(_0x7bdb('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7bdb('0xe'));var Redis=require(_0x7bdb('0xf'));var authService=require(_0x7bdb('0x10'));var qs=require(_0x7bdb('0x11'));var as=require(_0x7bdb('0x12'));var hardwareService=require(_0x7bdb('0x13'));var logger=require(_0x7bdb('0x14'))(_0x7bdb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7bdb('0x16'))['db'];function respondWithStatusCode(_0x25e3cb,_0x496613){_0x496613=_0x496613||0xcc;return function(_0x8d74ff){if(_0x8d74ff){return _0x25e3cb['sendStatus'](_0x496613);}return _0x25e3cb['status'](_0x496613)[_0x7bdb('0x17')]();};}function respondWithResult(_0x46dd4a,_0x4fd91a){_0x4fd91a=_0x4fd91a||0xc8;return function(_0x50eeca){if(_0x50eeca){return _0x46dd4a['status'](_0x4fd91a)[_0x7bdb('0x18')](_0x50eeca);}};}function respondWithFilteredResult(_0x195b2e,_0xe9919f){return function(_0x25d417){if(_0x25d417){var _0x31c909=typeof _0xe9919f[_0x7bdb('0x19')]===_0x7bdb('0x1a')&&typeof _0xe9919f[_0x7bdb('0x1b')]==='undefined';var _0x1c5750=_0x25d417[_0x7bdb('0x1c')];var _0x5723f4=_0x31c909?0x0:_0xe9919f[_0x7bdb('0x19')];var _0x4ffd4b=_0x31c909?_0x25d417[_0x7bdb('0x1c')]:_0xe9919f[_0x7bdb('0x19')]+_0xe9919f['limit'];var _0x3e5f8e;if(_0x4ffd4b>=_0x1c5750){_0x4ffd4b=_0x1c5750;_0x3e5f8e=0xc8;}else{_0x3e5f8e=0xce;}_0x195b2e[_0x7bdb('0x1d')](_0x3e5f8e);return _0x195b2e[_0x7bdb('0x1e')](_0x7bdb('0x1f'),_0x5723f4+'-'+_0x4ffd4b+'/'+_0x1c5750)[_0x7bdb('0x18')](_0x25d417);}return null;};}function patchUpdates(_0x5bfc35){return function(_0x49f353){try{jsonpatch[_0x7bdb('0x20')](_0x49f353,_0x5bfc35,!![]);}catch(_0xcb25f2){return BPromise['reject'](_0xcb25f2);}return _0x49f353[_0x7bdb('0x21')]();};}function saveUpdates(_0x118ea1,_0x346c72){return function(_0x3f53e7){if(_0x3f53e7){return _0x3f53e7[_0x7bdb('0x22')](_0x118ea1)['then'](function(_0x1d37ac){return _0x1d37ac;});}return null;};}function removeEntity(_0xdad53d,_0x40c447){return function(_0x3a456f){if(_0x3a456f){return _0x3a456f['destroy']()['then'](function(){_0xdad53d[_0x7bdb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47abaf,_0x4a9e02){return function(_0x2abef6){if(!_0x2abef6){_0x47abaf['sendStatus'](0x194);}return _0x2abef6;};}function handleError(_0x2b14bc,_0x72ba69){_0x72ba69=_0x72ba69||0x1f4;return function(_0x3ec129){logger[_0x7bdb('0x23')](_0x3ec129[_0x7bdb('0x24')]);if(_0x3ec129['name']){delete _0x3ec129[_0x7bdb('0x25')];}_0x2b14bc[_0x7bdb('0x1d')](_0x72ba69)[_0x7bdb('0x26')](_0x3ec129);};}exports[_0x7bdb('0x27')]=function(_0x371e8a,_0x2e8e65){var _0x1e9996={'raw':!![],'where':{'id':_0x371e8a[_0x7bdb('0x28')]['id']}},_0xd2d7be={};_0xd2d7be[_0x7bdb('0x29')]=_[_0x7bdb('0x2a')](db[_0x7bdb('0x2b')]['rawAttributes']);_0xd2d7be[_0x7bdb('0x2c')]=_[_0x7bdb('0x2a')](_0x371e8a[_0x7bdb('0x2c')]);_0xd2d7be[_0x7bdb('0x2d')]=_[_0x7bdb('0x2e')](_0xd2d7be['model'],_0xd2d7be[_0x7bdb('0x2c')]);_0x1e9996[_0x7bdb('0x2f')]=_[_0x7bdb('0x2e')](_0xd2d7be[_0x7bdb('0x29')],qs['fields'](_0x371e8a['query']['fields']));_0x1e9996[_0x7bdb('0x2f')]=_0x1e9996['attributes'][_0x7bdb('0x30')]?_0x1e9996['attributes']:_0xd2d7be[_0x7bdb('0x29')];if(_0x371e8a[_0x7bdb('0x2c')][_0x7bdb('0x31')]){_0x1e9996['include']=[{'all':!![]}];}_0x1e9996=_[_0x7bdb('0x32')]({},_0x1e9996,_0x371e8a['options']);return db['MailApplication'][_0x7bdb('0x33')](_0x1e9996)['then'](handleEntityNotFound(_0x2e8e65,null))[_0x7bdb('0x34')](respondWithResult(_0x2e8e65,null))['catch'](handleError(_0x2e8e65,null));};exports['update']=function(_0x206c26,_0x353b26){if(_0x206c26[_0x7bdb('0x35')]['id']){delete _0x206c26[_0x7bdb('0x35')]['id'];}return db[_0x7bdb('0x2b')][_0x7bdb('0x33')]({'where':{'id':_0x206c26['params']['id']}})[_0x7bdb('0x34')](handleEntityNotFound(_0x353b26,null))[_0x7bdb('0x34')](saveUpdates(_0x206c26[_0x7bdb('0x35')],null))[_0x7bdb('0x34')](respondWithResult(_0x353b26,null))[_0x7bdb('0x36')](handleError(_0x353b26,null));};exports[_0x7bdb('0x37')]=function(_0x228340,_0x2587af){return db[_0x7bdb('0x2b')]['find']({'where':{'id':_0x228340['params']['id']}})[_0x7bdb('0x34')](handleEntityNotFound(_0x2587af,null))[_0x7bdb('0x34')](removeEntity(_0x2587af,null))[_0x7bdb('0x36')](handleError(_0x2587af,null));}; \ No newline at end of file diff --git a/server/api/mailApplication/mailApplication.model.js b/server/api/mailApplication/mailApplication.model.js new file mode 100644 index 0000000..2c607cc --- /dev/null +++ b/server/api/mailApplication/mailApplication.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb16c=['bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x28652b,_0x1456c0){var _0x909610=function(_0x36064a){while(--_0x36064a){_0x28652b['push'](_0x28652b['shift']());}};_0x909610(++_0x1456c0);}(_0xb16c,0xc0));var _0xcb16=function(_0x58f904,_0x4d2646){_0x58f904=_0x58f904-0x0;var _0x3e35ef=_0xb16c[_0x58f904];return _0x3e35ef;};'use strict';var _=require(_0xcb16('0x0'));var util=require(_0xcb16('0x1'));var logger=require(_0xcb16('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcb16('0x3'));var rp=require(_0xcb16('0x4'));var fs=require('fs');var path=require(_0xcb16('0x5'));var rimraf=require(_0xcb16('0x6'));var config=require(_0xcb16('0x7'));var attributes=require(_0xcb16('0x8'));module[_0xcb16('0x9')]=function(_0x3b2036,_0x1a4db5){return _0x3b2036[_0xcb16('0xa')](_0xcb16('0xb'),attributes,{'tableName':_0xcb16('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcb16('0xd'),'collate':_0xcb16('0xe')});}; \ No newline at end of file diff --git a/server/api/mailApplication/mailApplication.rpc.js b/server/api/mailApplication/mailApplication.rpc.js new file mode 100644 index 0000000..d48e3a6 --- /dev/null +++ b/server/api/mailApplication/mailApplication.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3ba7=['jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x1ee15d,_0x51813e){var _0xef4846=function(_0x3abc0f){while(--_0x3abc0f){_0x1ee15d['push'](_0x1ee15d['shift']());}};_0xef4846(++_0x51813e);}(_0x3ba7,0x16c));var _0x73ba=function(_0x276ca2,_0x95cdee){_0x276ca2=_0x276ca2-0x0;var _0x1ca2c9=_0x3ba7[_0x276ca2];return _0x1ca2c9;};'use strict';var _=require(_0x73ba('0x0'));var util=require(_0x73ba('0x1'));var moment=require(_0x73ba('0x2'));var BPromise=require(_0x73ba('0x3'));var rs=require(_0x73ba('0x4'));var fs=require('fs');var Redis=require(_0x73ba('0x5'));var db=require(_0x73ba('0x6'))['db'];var utils=require(_0x73ba('0x7'));var logger=require(_0x73ba('0x8'))('rpc');var config=require(_0x73ba('0x9'));var jayson=require(_0x73ba('0xa'));var client=jayson[_0x73ba('0xb')][_0x73ba('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x376f8a,_0x3437b3,_0x28ac82){return new BPromise(function(_0x543d2a,_0x169e36){return client[_0x73ba('0xd')](_0x376f8a,_0x28ac82)[_0x73ba('0xe')](function(_0x29033f){logger[_0x73ba('0xf')](_0x73ba('0x10'),_0x3437b3,'request\x20sent');logger[_0x73ba('0x11')](_0x73ba('0x12'),_0x3437b3,_0x73ba('0x13'),JSON[_0x73ba('0x14')](_0x29033f));if(_0x29033f[_0x73ba('0x15')]){if(_0x29033f[_0x73ba('0x15')][_0x73ba('0x16')]===0x1f4){logger[_0x73ba('0x15')]('MailApplication,\x20%s,\x20%s',_0x3437b3,_0x29033f['error'][_0x73ba('0x17')]);return _0x169e36(_0x29033f['error'][_0x73ba('0x17')]);}logger[_0x73ba('0x15')](_0x73ba('0x10'),_0x3437b3,_0x29033f[_0x73ba('0x15')][_0x73ba('0x17')]);return _0x543d2a(_0x29033f[_0x73ba('0x15')][_0x73ba('0x17')]);}else{logger[_0x73ba('0xf')](_0x73ba('0x10'),_0x3437b3,'request\x20sent');_0x543d2a(_0x29033f[_0x73ba('0x18')][_0x73ba('0x17')]);}})[_0x73ba('0x19')](function(_0xf6cfaf){logger['error'](_0x73ba('0x10'),_0x3437b3,_0xf6cfaf);_0x169e36(_0xf6cfaf);});});}exports[_0x73ba('0x1a')]=function(_0xefeb93){var _0x411c0e=this;return new Promise(function(_0x4cebc6,_0x4aef21){return db[_0x73ba('0x1b')][_0x73ba('0x1c')](_0xefeb93[_0x73ba('0x1d')],{'raw':_0xefeb93['options']?_0xefeb93['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xefeb93[_0x73ba('0x1e')]?_0xefeb93[_0x73ba('0x1e')][_0x73ba('0x1f')]||null:null,'attributes':_0xefeb93['options']?_0xefeb93[_0x73ba('0x1e')][_0x73ba('0x20')]||null:null,'limit':_0xefeb93[_0x73ba('0x1e')]?_0xefeb93[_0x73ba('0x1e')][_0x73ba('0x21')]||null:null})[_0x73ba('0xe')](function(_0x3023aa){logger['info']('UpdateMailApplication',_0xefeb93);logger['debug']('UpdateMailApplication',_0xefeb93,JSON[_0x73ba('0x14')](_0x3023aa));_0x4cebc6(_0x3023aa);})[_0x73ba('0x19')](function(_0x79d923){logger[_0x73ba('0x15')](_0x73ba('0x1a'),_0x79d923[_0x73ba('0x17')],_0xefeb93);_0x4aef21(_0x411c0e[_0x73ba('0x15')](0x1f4,_0x79d923['message']));});});}; \ No newline at end of file diff --git a/server/api/mailInteraction/index.js b/server/api/mailInteraction/index.js new file mode 100644 index 0000000..fc5b4d4 --- /dev/null +++ b/server/api/mailInteraction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2432=['get','isAuthenticated','index','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','mail','mailinteraction:addtags','addTags','put','tracked','mailinteraction:update','update','delete','/:id','mailinteraction:destroy','destroy','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller'];(function(_0x7ac046,_0x3a1e11){var _0x4b6cc6=function(_0x1eb088){while(--_0x1eb088){_0x7ac046['push'](_0x7ac046['shift']());}};_0x4b6cc6(++_0x3a1e11);}(_0x2432,0x100));var _0x2243=function(_0x4debf3,_0x3abfaf){_0x4debf3=_0x4debf3-0x0;var _0x5a4b30=_0x2432[_0x4debf3];return _0x5a4b30;};'use strict';var express=require(_0x2243('0x0'));var router=express[_0x2243('0x1')]();var auth=require(_0x2243('0x2'));var interaction=require(_0x2243('0x3'));var controller=require(_0x2243('0x4'));router[_0x2243('0x5')]('/',auth[_0x2243('0x6')](),controller[_0x2243('0x7')]);router[_0x2243('0x5')]('/describe',auth[_0x2243('0x6')](),controller['describe']);router[_0x2243('0x5')]('/:id',auth[_0x2243('0x6')](),controller[_0x2243('0x8')]);router[_0x2243('0x5')]('/:id/messages',auth['isAuthenticated'](),controller[_0x2243('0x9')]);router[_0x2243('0x5')](_0x2243('0xa'),auth[_0x2243('0x6')](),controller[_0x2243('0xb')]);router[_0x2243('0xc')]('/',auth[_0x2243('0x6')](),controller[_0x2243('0xd')]);router[_0x2243('0xc')](_0x2243('0xe'),auth[_0x2243('0x6')](),controller[_0x2243('0xf')]);router[_0x2243('0xc')](_0x2243('0x10'),auth[_0x2243('0x6')](),interaction['tracked'](_0x2243('0x11'),_0x2243('0x12')),controller[_0x2243('0x13')]);router[_0x2243('0x14')]('/:id',auth['isAuthenticated'](),interaction[_0x2243('0x15')](_0x2243('0x11'),_0x2243('0x16')),controller[_0x2243('0x17')]);router[_0x2243('0x18')](_0x2243('0x19'),auth[_0x2243('0x6')](),interaction[_0x2243('0x15')](_0x2243('0x11'),_0x2243('0x1a')),controller[_0x2243('0x1b')]);router[_0x2243('0x18')](_0x2243('0x10'),auth['isAuthenticated'](),controller['removeTags']);module[_0x2243('0x1c')]=router; \ No newline at end of file diff --git a/server/api/mailInteraction/mailInteraction.attributes.js b/server/api/mailInteraction/mailInteraction.attributes.js new file mode 100644 index 0000000..152f199 --- /dev/null +++ b/server/api/mailInteraction/mailInteraction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4c61=['TEXT','long','ENUM','out','sequelize','iconv','BOOLEAN','DATE','STRING'];(function(_0x3108d8,_0x5162a8){var _0xdecb89=function(_0x359900){while(--_0x359900){_0x3108d8['push'](_0x3108d8['shift']());}};_0xdecb89(++_0x5162a8);}(_0x4c61,0xca));var _0x14c6=function(_0x2d5643,_0x2d13f2){_0x2d5643=_0x2d5643-0x0;var _0x2e42cf=_0x4c61[_0x2d5643];return _0x2e42cf;};'use strict';var Sequelize=require(_0x14c6('0x0'));var iconv=require(_0x14c6('0x1'));module['exports']={'closed':{'type':Sequelize[_0x14c6('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x14c6('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x14c6('0x4')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x14c6('0x5')](_0x14c6('0x6'))},'subject':{'type':Sequelize[_0x14c6('0x5')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x14c6('0x3')]},'substatus':{'type':Sequelize[_0x14c6('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x14c6('0x7')]('in',_0x14c6('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x14c6('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x14c6('0x7')]('in',_0x14c6('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x14c6('0x2')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/mailInteraction/mailInteraction.controller.js b/server/api/mailInteraction/mailInteraction.controller.js new file mode 100644 index 0000000..8aa2882 --- /dev/null +++ b/server/api/mailInteraction/mailInteraction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xecc5=['join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','subject','createdAt','get','mkdirSync','each','missing.recipient@your.company.com','decode','headers','Bcc','basename','existsSync','readFileSync','writeFileSync','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','html-entities','redis','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','then','destroy','stack','name','send','map','rawAttributes','type','key','findAll','mail','query','user','catch','params','model','MailInteraction','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','create','body','update','find','describe','addMessage','MailMessage','ids','omit','findOne','hasOwnProperty','nolimit','order','sort','pick','MailInteractionId','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','rows','setTags','spread','Tag','color','emit','removeTags','download','unix'];(function(_0x2822f6,_0x484293){var _0x3ff9d2=function(_0x5893ab){while(--_0x5893ab){_0x2822f6['push'](_0x2822f6['shift']());}};_0x3ff9d2(++_0x484293);}(_0xecc5,0xf4));var _0x5ecc=function(_0x18fb96,_0x37ca7e){_0x18fb96=_0x18fb96-0x0;var _0x59f3b2=_0xecc5[_0x18fb96];return _0x59f3b2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5ecc('0x0'));var zipdir=require(_0x5ecc('0x1'));var moment=require(_0x5ecc('0x2'));var BPromise=require(_0x5ecc('0x3'));var util=require(_0x5ecc('0x4'));var path=require(_0x5ecc('0x5'));var fs=require('fs');var _=require('lodash');var juice=require(_0x5ecc('0x6'));var Redis=require(_0x5ecc('0x7'));var interaction=require(_0x5ecc('0x8'));var qs=require(_0x5ecc('0x9'));var logger=require(_0x5ecc('0xa'))(_0x5ecc('0xb'));var config=require(_0x5ecc('0xc'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0x5ecc('0xd'));config[_0x5ecc('0xe')]=_['defaults'](config[_0x5ecc('0xe')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5ecc('0xe')]));require('./mailInteraction.socket')[_0x5ecc('0xf')](socket);function respondWithStatusCode(_0x47375f,_0x29fcd7){_0x29fcd7=_0x29fcd7||0xcc;return function(_0x1f3185){if(_0x1f3185){return _0x47375f[_0x5ecc('0x10')](_0x29fcd7);}return _0x47375f[_0x5ecc('0x11')](_0x29fcd7)[_0x5ecc('0x12')]();};}function respondWithResult(_0x30e498,_0x86c25d){_0x86c25d=_0x86c25d||0xc8;return function(_0x355cbe){if(_0x355cbe){return _0x30e498[_0x5ecc('0x11')](_0x86c25d)['json'](_0x355cbe);}};}function respondWithFilteredResult(_0x4ee809,_0x48bee8){return function(_0x3b783e){if(_0x3b783e){var _0x261210=typeof _0x48bee8[_0x5ecc('0x13')]===_0x5ecc('0x14')&&typeof _0x48bee8['limit']===_0x5ecc('0x14');var _0x482504=_0x3b783e[_0x5ecc('0x15')];var _0x5630c4=_0x261210?0x0:_0x48bee8[_0x5ecc('0x13')];var _0x1f5e31=_0x261210?_0x3b783e[_0x5ecc('0x15')]:_0x48bee8[_0x5ecc('0x13')]+_0x48bee8[_0x5ecc('0x16')];var _0x4a1d17;if(_0x1f5e31>=_0x482504){_0x1f5e31=_0x482504;_0x4a1d17=0xc8;}else{_0x4a1d17=0xce;}_0x4ee809[_0x5ecc('0x11')](_0x4a1d17);return _0x4ee809[_0x5ecc('0x17')](_0x5ecc('0x18'),_0x5630c4+'-'+_0x1f5e31+'/'+_0x482504)[_0x5ecc('0x19')](_0x3b783e);}return null;};}function saveUpdates(_0x39f850){return function(_0x26a77b){if(_0x26a77b){return _0x26a77b['update'](_0x39f850)[_0x5ecc('0x1a')](function(_0x1462ec){return _0x1462ec;});}return null;};}function removeEntity(_0x483b45){return function(_0x81fe18){if(_0x81fe18){return _0x81fe18[_0x5ecc('0x1b')]()['then'](function(){_0x483b45[_0x5ecc('0x11')](0xcc)[_0x5ecc('0x12')]();});}};}function handleEntityNotFound(_0x21520e){return function(_0x11a4ca){if(!_0x11a4ca){_0x21520e['sendStatus'](0x194);}return _0x11a4ca;};}function handleError(_0x35b042,_0xb85e65){_0xb85e65=_0xb85e65||0x1f4;return function(_0x4d1fe5){logger['error'](_0x4d1fe5[_0x5ecc('0x1c')]);if(_0x4d1fe5[_0x5ecc('0x1d')]){delete _0x4d1fe5[_0x5ecc('0x1d')];}_0x35b042['status'](_0xb85e65)[_0x5ecc('0x1e')](_0x4d1fe5);};}exports['index']=function(_0x1cf45d,_0x136329){var _0x5f0013={};var _0x4f2655=_[_0x5ecc('0x1f')](db['MailInteraction'][_0x5ecc('0x20')],function(_0x2db954){return{'name':_0x2db954['fieldName'],'type':_0x2db954[_0x5ecc('0x21')][_0x5ecc('0x22')]};});_0x5f0013=qs['getOptions'](_0x4f2655,_0x1cf45d);return interaction[_0x5ecc('0x23')](_0x5ecc('0x24'),_0x1cf45d[_0x5ecc('0x25')],_0x1cf45d[_0x5ecc('0x26')],_0x5f0013,_0x4f2655)['then'](respondWithFilteredResult(_0x136329,_0x5f0013))[_0x5ecc('0x27')](handleError(_0x136329,null));};exports['show']=function(_0x44665d,_0x1e301c){var _0xb740df={'raw':![],'where':{'id':_0x44665d[_0x5ecc('0x28')]['id']}},_0x2bfd24={};_0x2bfd24[_0x5ecc('0x29')]=_['keys'](db[_0x5ecc('0x2a')][_0x5ecc('0x20')]);_0x2bfd24[_0x5ecc('0x25')]=_[_0x5ecc('0x2b')](_0x44665d[_0x5ecc('0x25')]);_0x2bfd24[_0x5ecc('0x2c')]=_[_0x5ecc('0x2d')](_0x2bfd24[_0x5ecc('0x29')],_0x2bfd24[_0x5ecc('0x25')]);_0xb740df[_0x5ecc('0x2e')]=_[_0x5ecc('0x2d')](_0x2bfd24[_0x5ecc('0x29')],qs[_0x5ecc('0x2f')](_0x44665d['query'][_0x5ecc('0x2f')]));_0xb740df[_0x5ecc('0x2e')]=_0xb740df[_0x5ecc('0x2e')][_0x5ecc('0x30')]?_0xb740df['attributes']:_0x2bfd24['model'];if(_0x44665d['query'][_0x5ecc('0x31')]){_0xb740df[_0x5ecc('0x32')]=[{'all':!![]}];}_0xb740df=_[_0x5ecc('0x33')]({},_0xb740df,_0x44665d[_0x5ecc('0x34')]);return db['MailInteraction']['find'](_0xb740df)[_0x5ecc('0x1a')](handleEntityNotFound(_0x1e301c,null))[_0x5ecc('0x1a')](respondWithResult(_0x1e301c,null))[_0x5ecc('0x27')](handleError(_0x1e301c,null));};exports[_0x5ecc('0x35')]=function(_0x1224ff,_0x2221f6){return db[_0x5ecc('0x2a')][_0x5ecc('0x35')](_0x1224ff[_0x5ecc('0x36')],{})['then'](respondWithResult(_0x2221f6,0xc9))['catch'](handleError(_0x2221f6,null));};exports[_0x5ecc('0x37')]=function(_0x4de4f1,_0x2f139b){if(_0x4de4f1['body']['id']){delete _0x4de4f1[_0x5ecc('0x36')]['id'];}return db[_0x5ecc('0x2a')][_0x5ecc('0x38')]({'where':{'id':_0x4de4f1[_0x5ecc('0x28')]['id']}})[_0x5ecc('0x1a')](handleEntityNotFound(_0x2f139b,null))[_0x5ecc('0x1a')](saveUpdates(_0x4de4f1[_0x5ecc('0x36')],null))[_0x5ecc('0x1a')](respondWithResult(_0x2f139b,null))[_0x5ecc('0x27')](handleError(_0x2f139b,null));};exports[_0x5ecc('0x1b')]=function(_0x12d760,_0x4907bd){return db[_0x5ecc('0x2a')]['find']({'where':{'id':_0x12d760[_0x5ecc('0x28')]['id']}})[_0x5ecc('0x1a')](handleEntityNotFound(_0x4907bd,null))[_0x5ecc('0x1a')](removeEntity(_0x4907bd,null))['catch'](handleError(_0x4907bd,null));};exports['describe']=function(_0x3579f7,_0x5f47c9){return db[_0x5ecc('0x2a')][_0x5ecc('0x39')]()[_0x5ecc('0x1a')](respondWithResult(_0x5f47c9,null))['catch'](handleError(_0x5f47c9,null));};exports[_0x5ecc('0x3a')]=function(_0x1fa73a,_0x3a4afd){return db[_0x5ecc('0x3b')][_0x5ecc('0x38')]({'where':{'id':_0x1fa73a[_0x5ecc('0x28')]['id']}})[_0x5ecc('0x1a')](handleEntityNotFound(_0x3a4afd,null))[_0x5ecc('0x1a')](function(_0x424fcb){if(_0x424fcb){return _0x424fcb[_0x5ecc('0x3a')](_0x1fa73a[_0x5ecc('0x36')][_0x5ecc('0x3c')],_[_0x5ecc('0x3d')](_0x1fa73a[_0x5ecc('0x36')],[_0x5ecc('0x3c'),'id'])||{});}})[_0x5ecc('0x1a')](respondWithResult(_0x3a4afd,null))[_0x5ecc('0x27')](handleError(_0x3a4afd,null));};exports['getMessages']=function(_0x2c933b,_0x42a6f5){var _0x16d903={'raw':![],'where':{}};var _0x57dc08={};var _0x550b3f={'count':0x0,'rows':[]};return db['MailInteraction'][_0x5ecc('0x3e')]({'where':{'id':_0x2c933b[_0x5ecc('0x28')]['id']}})['then'](handleEntityNotFound(_0x42a6f5,null))[_0x5ecc('0x1a')](function(_0x4f3059){if(_0x4f3059){_0x57dc08[_0x5ecc('0x29')]=_[_0x5ecc('0x2b')](db[_0x5ecc('0x3b')][_0x5ecc('0x20')]);_0x57dc08[_0x5ecc('0x25')]=_[_0x5ecc('0x2b')](_0x2c933b[_0x5ecc('0x25')]);_0x57dc08[_0x5ecc('0x2c')]=_['intersection'](_0x57dc08['model'],_0x57dc08[_0x5ecc('0x25')]);_0x16d903['attributes']=_[_0x5ecc('0x2d')](_0x57dc08[_0x5ecc('0x29')],qs[_0x5ecc('0x2f')](_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x2f')]));_0x16d903[_0x5ecc('0x2e')]=_0x16d903['attributes'][_0x5ecc('0x30')]?_0x16d903[_0x5ecc('0x2e')]:_0x57dc08['model'];if(!_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x3f')](_0x5ecc('0x40'))){_0x16d903[_0x5ecc('0x16')]=qs[_0x5ecc('0x16')](_0x2c933b[_0x5ecc('0x25')]['limit']);_0x16d903[_0x5ecc('0x13')]=qs[_0x5ecc('0x13')](_0x2c933b[_0x5ecc('0x25')]['offset']);}_0x16d903[_0x5ecc('0x41')]=qs[_0x5ecc('0x42')](_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x42')]);_0x16d903['where']=qs[_0x5ecc('0x2c')](_[_0x5ecc('0x43')](_0x2c933b[_0x5ecc('0x25')],_0x57dc08[_0x5ecc('0x2c')]));_0x16d903['where'][_0x5ecc('0x44')]=_0x4f3059['id'];if(_0x2c933b[_0x5ecc('0x25')]['filter']){_0x16d903[_0x5ecc('0x45')]=_[_0x5ecc('0x33')](_0x16d903[_0x5ecc('0x45')],{'$or':_[_0x5ecc('0x1f')](_0x16d903[_0x5ecc('0x2e')],function(_0x53e160){var _0x10f3f7={};_0x10f3f7[_0x53e160]={'$like':'%'+_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x46')]+'%'};return _0x10f3f7;})});}if(_0x2c933b['query'][_0x5ecc('0x47')]){var _0x16d7e0=_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x47')][_0x5ecc('0x48')](',');var _0x5e12be={};_0x5e12be[_0x16d7e0[0x0]]={'$gte':moment(_0x16d7e0[0x1])[_0x5ecc('0x49')](_0x5ecc('0x4a'))};_0x16d903[_0x5ecc('0x45')]=_['merge'](_0x16d903['where'],_0x5e12be);}_0x16d903=_[_0x5ecc('0x33')]({},_0x16d903,_0x2c933b['options']);return db['MailMessage'][_0x5ecc('0x15')]({'where':_0x16d903['where']})[_0x5ecc('0x1a')](function(_0x257681){_0x550b3f['count']=_0x257681;if(_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x31')]){_0x16d903[_0x5ecc('0x32')]=[{'all':!![]}];}return db[_0x5ecc('0x3b')][_0x5ecc('0x23')](_0x16d903);})[_0x5ecc('0x1a')](function(_0xb268b1){if(_0x2c933b[_0x5ecc('0x25')][_0x5ecc('0x4b')]===_0x5ecc('0x4c')){for(var _0x3fe276=0x0;_0x3fe276<_0xb268b1[_0x5ecc('0x30')];_0x3fe276++){_0xb268b1[_0x3fe276][_0x5ecc('0x36')]=juice(_0xb268b1[_0x3fe276][_0x5ecc('0x36')]);}}_0x550b3f[_0x5ecc('0x4d')]=_0xb268b1;return _0x550b3f;});}})[_0x5ecc('0x1a')](respondWithFilteredResult(_0x42a6f5,_0x16d903))['catch'](handleError(_0x42a6f5,null));};exports['addTags']=function(_0x47dce2,_0x1c0338){return db[_0x5ecc('0x2a')][_0x5ecc('0x38')]({'where':{'id':_0x47dce2[_0x5ecc('0x28')]['id']}})[_0x5ecc('0x1a')](handleEntityNotFound(_0x1c0338,null))[_0x5ecc('0x1a')](function(_0x15f383){if(_0x15f383){return _0x15f383[_0x5ecc('0x4e')](_0x47dce2[_0x5ecc('0x36')][_0x5ecc('0x3c')],_['omit'](_0x47dce2[_0x5ecc('0x36')],[_0x5ecc('0x3c'),'id'])||{})[_0x5ecc('0x4f')](function(){return db[_0x5ecc('0x50')][_0x5ecc('0x23')]({'attributes':['id',_0x5ecc('0x1d'),_0x5ecc('0x51')],'where':{'id':_0x47dce2[_0x5ecc('0x36')][_0x5ecc('0x3c')]}});})[_0x5ecc('0x1a')](function(_0x270049){socket[_0x5ecc('0x52')]('mailInteractionTags:save',{'id':Number(_0x47dce2['params']['id']),'tags':_0x270049||[]});return{'id':Number(_0x47dce2[_0x5ecc('0x28')]['id']),'tags':_0x270049||[]};});}})['then'](respondWithResult(_0x1c0338,null))[_0x5ecc('0x27')](handleError(_0x1c0338,null));};exports[_0x5ecc('0x53')]=function(_0x2c6f8f,_0x1396cc){return db[_0x5ecc('0x2a')][_0x5ecc('0x38')]({'where':{'id':_0x2c6f8f[_0x5ecc('0x28')]['id']}})[_0x5ecc('0x1a')](handleEntityNotFound(_0x1396cc,null))[_0x5ecc('0x1a')](function(_0x3baa64){if(_0x3baa64){return _0x3baa64[_0x5ecc('0x53')](_0x2c6f8f[_0x5ecc('0x25')][_0x5ecc('0x3c')]);}})[_0x5ecc('0x1a')](respondWithStatusCode(_0x1396cc,null))[_0x5ecc('0x27')](handleError(_0x1396cc,null));};exports[_0x5ecc('0x54')]=function(_0x81741d,_0x31022c){var _0x52e5b5=moment()[_0x5ecc('0x55')]()['toString']();var _0x519396=path[_0x5ecc('0x56')](config[_0x5ecc('0x57')],_0x5ecc('0x58'),_0x5ecc('0x59'),'tmp');var _0x435020=path['join'](config['root'],_0x5ecc('0x58'),_0x5ecc('0x59'),_0x5ecc('0x5a'));var _0x2f623b=path[_0x5ecc('0x56')](_0x519396,_0x52e5b5);var _0x2fa2ad=util['format'](_0x5ecc('0x5b'),_0x81741d['params']['id'],_0x52e5b5);var _0x55038b=path[_0x5ecc('0x56')](_0x519396,_0x2fa2ad);var _0x67f422=[];if(_0x81741d['query']['attachments']){_0x67f422['push']({'model':db[_0x5ecc('0x5c')],'as':_0x5ecc('0x5d'),'raw':!![]});}var _0x31d251=[{'model':db[_0x5ecc('0x3b')],'as':_0x5ecc('0x5e'),'attributes':['id','body','from','to','cc',_0x5ecc('0x5f'),_0x5ecc('0x60'),_0x5ecc('0x61')],'where':{'secret':![]},'order':qs[_0x5ecc('0x42')]('id'),'include':_0x67f422}];return db[_0x5ecc('0x2a')][_0x5ecc('0x38')]({'where':{'id':_0x81741d[_0x5ecc('0x28')]['id']},'include':_0x31d251})['then'](handleEntityNotFound(_0x31022c,null))[_0x5ecc('0x1a')](function(_0x380919){if(_0x380919&&_0x380919[_0x5ecc('0x5e')]){var _0x363eea=_0x380919[_0x5ecc('0x62')]({'plain':!![]});fs[_0x5ecc('0x63')](_0x2f623b);return BPromise[_0x5ecc('0x64')](_0x363eea[_0x5ecc('0x5e')],function(_0x3eadef,_0x21cfa8){var _0xf47aea={'from':_0x3eadef['from'],'to':_0x3eadef['to']||_0x5ecc('0x65'),'subject':_0x3eadef[_0x5ecc('0x60')],'html':htmlEntities[_0x5ecc('0x66')](_0x3eadef['body']),'headers':{'Date':moment(_0x3eadef['createdAt'])[_0x5ecc('0x49')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x3eadef['cc']){_0xf47aea[_0x5ecc('0x67')]['Cc']=_0x3eadef['cc'];}if(_0x3eadef['bcc']){_0xf47aea[_0x5ecc('0x67')][_0x5ecc('0x68')]=_0x3eadef[_0x5ecc('0x5f')];}return new BPromise(function(_0x3f94f5,_0x203edd){if(_0x3eadef[_0x5ecc('0x5d')]){for(var _0xe1e8fb=0x0;_0xe1e8fb<_0x3eadef[_0x5ecc('0x5d')][_0x5ecc('0x30')];_0xe1e8fb++){var _0x408935=_0x3eadef['Attachments'][_0xe1e8fb];var _0x82e1fc=path['join'](_0x435020,_0x408935[_0x5ecc('0x69')]);if(fs[_0x5ecc('0x6a')](_0x82e1fc)){_0xf47aea[_0x5ecc('0x5a')]['push']({'name':_0x408935['name'],'contentType':_0x408935[_0x5ecc('0x21')],'data':fs[_0x5ecc('0x6b')](_0x82e1fc)});}}}emlformat['build'](_0xf47aea,function(_0x12c428,_0x43bcd5){if(_0x12c428)return _0x203edd(_0x12c428);fs[_0x5ecc('0x6c')](path[_0x5ecc('0x56')](_0x2f623b,util['format']('message%d.eml',_0x21cfa8)),_0x43bcd5);return _0x3f94f5(_0x43bcd5);});});})['then'](function(){return new BPromise(function(_0x15c562,_0x4c33f2){zipdir(_0x2f623b,{'saveTo':_0x55038b},function(_0x4ac132,_0x2a076e){if(_0x4ac132)return _0x4c33f2(_0x4ac132);return _0x15c562(_0x2a076e);});})[_0x5ecc('0x1a')](function(){return new BPromise(function(_0x16ef07,_0x28da1e){rimraf(_0x2f623b,function(_0x10e816){if(_0x10e816)_0x28da1e(_0x10e816);return _0x16ef07();});});})[_0x5ecc('0x1a')](function(){return _0x31022c[_0x5ecc('0x54')](_0x55038b,_0x2fa2ad,function(_0x4296da){if(!_0x4296da)fs[_0x5ecc('0x6d')](_0x55038b);});});});}else{return _0x31022c[_0x5ecc('0x10')](0xc8);}})[_0x5ecc('0x27')](handleError(_0x31022c,null));}; \ No newline at end of file diff --git a/server/api/mailInteraction/mailInteraction.events.js b/server/api/mailInteraction/mailInteraction.events.js new file mode 100644 index 0000000..62ea5de --- /dev/null +++ b/server/api/mailInteraction/mailInteraction.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3ce4=['MailInteraction','MailMessage','save','update','setDataValue','Users','map','findAll','then','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x1b0011,_0x403cc8){var _0x29b74c=function(_0x1edb84){while(--_0x1edb84){_0x1b0011['push'](_0x1b0011['shift']());}};_0x29b74c(++_0x403cc8);}(_0x3ce4,0x1a7));var _0x43ce=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x3ce4[_0x20ef64];return _0x3707d8;};'use strict';var EventEmitter=require(_0x43ce('0x0'));var MailInteraction=require(_0x43ce('0x1'))['db'][_0x43ce('0x2')];var MailMessage=require(_0x43ce('0x1'))['db'][_0x43ce('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x43ce('0x4'),'afterUpdate':_0x43ce('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2882f6){return function(_0x180047,_0x48c397,_0x55e487){_0x180047['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x53615f){_0x180047[_0x43ce('0x6')](_0x43ce('0x7'),_0x53615f[_0x43ce('0x8')](function(_0x4d10fb){return{'id':_0x4d10fb['id']};}));return MailMessage[_0x43ce('0x9')]({'where':{'MailInteractionId':_0x180047['id'],'direction':'in','read':![]},'raw':!![]});})[_0x43ce('0xa')](function(_0x5d2f60){_0x180047['setDataValue']('unreadMessages',_0x5d2f60[_0x43ce('0xb')]);MailInteractionEvents[_0x43ce('0xc')](_0x2882f6+':'+_0x180047['id'],_0x180047);MailInteractionEvents['emit'](_0x2882f6,_0x180047);_0x55e487(null);})[_0x43ce('0xd')](_0x55e487(null));};}for(var e in events){if(events[_0x43ce('0xe')](e)){var event=events[e];MailInteraction[_0x43ce('0xf')](e,emitEvent(event));}}module[_0x43ce('0x10')]=MailInteractionEvents; \ No newline at end of file diff --git a/server/api/mailInteraction/mailInteraction.model.js b/server/api/mailInteraction/mailInteraction.model.js new file mode 100644 index 0000000..ae5ff55 --- /dev/null +++ b/server/api/mailInteraction/mailInteraction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9b30=['then','catch','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','models','get','update'];(function(_0x565de0,_0x48c769){var _0xfe99c8=function(_0x8a8e){while(--_0x8a8e){_0x565de0['push'](_0x565de0['shift']());}};_0xfe99c8(++_0x48c769);}(_0x9b30,0x19a));var _0x09b3=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x9b30[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var util=require(_0x09b3('0x0'));var logger=require(_0x09b3('0x1'))(_0x09b3('0x2'));var moment=require(_0x09b3('0x3'));var BPromise=require(_0x09b3('0x4'));var rp=require(_0x09b3('0x5'));var fs=require('fs');var path=require(_0x09b3('0x6'));var rimraf=require(_0x09b3('0x7'));var config=require('../../config/environment');var attributes=require(_0x09b3('0x8'));module[_0x09b3('0x9')]=function(_0x5bec09,_0x2f2e1a){return _0x5bec09[_0x09b3('0xa')]('MailInteraction',attributes,{'tableName':_0x09b3('0xb'),'paranoid':![],'indexes':[{'name':_0x09b3('0xc'),'fields':[_0x09b3('0xd'),'to'],'type':_0x09b3('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x8828ea,_0x4fd28d,_0x2b7f00){if(_0x8828ea[_0x09b3('0xf')]){_0x8828ea[_0x09b3('0x10')]=moment()[_0x09b3('0x11')](_0x09b3('0x12'));}if(_0x8828ea[_0x09b3('0x13')]){_0x8828ea[_0x09b3('0x14')]=moment()['format'](_0x09b3('0x12'));}_0x2b7f00(null,_0x4fd28d);},'beforeUpdate':function(_0x390821,_0xa9f179,_0x3d0cf8){if(_0x390821[_0x09b3('0x15')](_0x09b3('0xf'))){_0x390821[_0x09b3('0x10')]=_0x390821[_0x09b3('0xf')]?moment()[_0x09b3('0x11')](_0x09b3('0x12')):null;}if(_0x390821[_0x09b3('0x15')](_0x09b3('0x13'))){_0x390821['closedAt']=moment()[_0x09b3('0x11')](_0x09b3('0x12'));_0x390821['substatus']=null;_0x390821[_0x09b3('0x10')]=null;}_0x3d0cf8(null,_0x390821);},'afterUpdate':function(_0x22411e,_0x626b07,_0x4ad2b2){var _0x8432e2=_0x5bec09[_0x09b3('0x16')];var _0x1f4802=_0x22411e[_0x09b3('0x17')]({'plain':!![]});if(_0x1f4802['closed']){return _0x8432e2['MailMessage'][_0x09b3('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x1f4802['id']}})[_0x09b3('0x19')](function(){_0x4ad2b2();})[_0x09b3('0x1a')](function(_0x499d78){_0x4ad2b2(_0x499d78);});}else{_0x4ad2b2();}}},'charset':_0x09b3('0x1b'),'collate':_0x09b3('0x1c')});}; \ No newline at end of file diff --git a/server/api/mailInteraction/mailInteraction.rpc.js b/server/api/mailInteraction/mailInteraction.rpc.js new file mode 100644 index 0000000..af938dc --- /dev/null +++ b/server/api/mailInteraction/mailInteraction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2f70=['limit','AddTagsToMailInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','request','then','info','MailInteraction,\x20%s,\x20%s','debug','MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','body','options','raw','where'];(function(_0x2566d2,_0x86e7d4){var _0x10d583=function(_0x4bee7b){while(--_0x4bee7b){_0x2566d2['push'](_0x2566d2['shift']());}};_0x10d583(++_0x86e7d4);}(_0x2f70,0xb8));var _0x02f7=function(_0x59a638,_0x2639ec){_0x59a638=_0x59a638-0x0;var _0x554ff4=_0x2f70[_0x59a638];return _0x554ff4;};'use strict';var _=require(_0x02f7('0x0'));var util=require(_0x02f7('0x1'));var moment=require(_0x02f7('0x2'));var BPromise=require(_0x02f7('0x3'));var rs=require(_0x02f7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x02f7('0x5'))['db'];var utils=require(_0x02f7('0x6'));var logger=require(_0x02f7('0x7'))(_0x02f7('0x8'));var config=require(_0x02f7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x02f7('0xa')][_0x02f7('0xb')]({'port':0x232a});config[_0x02f7('0xc')]=_[_0x02f7('0xd')](config[_0x02f7('0xc')],{'host':_0x02f7('0xe'),'port':0x18eb});var socket=require(_0x02f7('0xf'))(new Redis(config[_0x02f7('0xc')]));require(_0x02f7('0x10'))['register'](socket);function respondWithRpcPromise(_0x22916a,_0x1469ae,_0x52f505){return new BPromise(function(_0x112155,_0x131a6f){return client[_0x02f7('0x11')](_0x22916a,_0x52f505)[_0x02f7('0x12')](function(_0x241e1f){logger[_0x02f7('0x13')](_0x02f7('0x14'),_0x1469ae,'request\x20sent');logger[_0x02f7('0x15')](_0x02f7('0x16'),_0x1469ae,_0x02f7('0x17'),JSON[_0x02f7('0x18')](_0x241e1f));if(_0x241e1f[_0x02f7('0x19')]){if(_0x241e1f[_0x02f7('0x19')][_0x02f7('0x1a')]===0x1f4){logger[_0x02f7('0x19')]('MailInteraction,\x20%s,\x20%s',_0x1469ae,_0x241e1f[_0x02f7('0x19')][_0x02f7('0x1b')]);return _0x131a6f(_0x241e1f[_0x02f7('0x19')][_0x02f7('0x1b')]);}logger[_0x02f7('0x19')](_0x02f7('0x14'),_0x1469ae,_0x241e1f[_0x02f7('0x19')][_0x02f7('0x1b')]);return _0x112155(_0x241e1f[_0x02f7('0x19')][_0x02f7('0x1b')]);}else{logger[_0x02f7('0x13')]('MailInteraction,\x20%s,\x20%s',_0x1469ae,'request\x20sent');_0x112155(_0x241e1f[_0x02f7('0x1c')][_0x02f7('0x1b')]);}})[_0x02f7('0x1d')](function(_0x1034a8){logger[_0x02f7('0x19')](_0x02f7('0x14'),_0x1469ae,_0x1034a8);_0x131a6f(_0x1034a8);});});}exports[_0x02f7('0x1e')]=function(_0x53e26d){var _0xd2505f=this;return new Promise(function(_0x3dd659,_0x28d92e){return db[_0x02f7('0x1f')]['update'](_0x53e26d[_0x02f7('0x20')],{'raw':_0x53e26d[_0x02f7('0x21')]?_0x53e26d[_0x02f7('0x21')][_0x02f7('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53e26d[_0x02f7('0x21')]?_0x53e26d[_0x02f7('0x21')][_0x02f7('0x23')]||null:null,'attributes':_0x53e26d[_0x02f7('0x21')]?_0x53e26d['options']['attributes']||null:null,'limit':_0x53e26d['options']?_0x53e26d[_0x02f7('0x21')][_0x02f7('0x24')]||null:null})[_0x02f7('0x12')](function(_0x511ad9){logger[_0x02f7('0x13')](_0x02f7('0x1e'),_0x53e26d);logger[_0x02f7('0x15')]('UpdateMailInteraction',_0x53e26d,JSON['stringify'](_0x511ad9));_0x3dd659(_0x511ad9);})['catch'](function(_0x514680){logger[_0x02f7('0x19')]('UpdateMailInteraction',_0x514680[_0x02f7('0x1b')],_0x53e26d);_0x28d92e(_0xd2505f[_0x02f7('0x19')](0x1f4,_0x514680[_0x02f7('0x1b')]));});});};exports[_0x02f7('0x25')]=function(_0x18517f){return new Promise(function(_0x12dc30,_0x2da29e){return db[_0x02f7('0x1f')][_0x02f7('0x26')]({'where':_0x18517f[_0x02f7('0x21')]?_0x18517f[_0x02f7('0x21')]['where']||null:null})[_0x02f7('0x12')](function(_0x375bb5){if(_0x375bb5){return _0x375bb5[_0x02f7('0x27')](_0x18517f[_0x02f7('0x20')][_0x02f7('0x28')],_[_0x02f7('0x29')](_0x18517f['body'],[_0x02f7('0x28'),'id'])||{});}})[_0x02f7('0x2a')](function(_0x1c6409){logger[_0x02f7('0x13')](_0x02f7('0x2b'),_0x18517f);logger[_0x02f7('0x15')](_0x02f7('0x2b'),_0x18517f,JSON[_0x02f7('0x18')](_0x1c6409));_0x12dc30(_0x1c6409);})[_0x02f7('0x1d')](function(_0x2d9192){logger[_0x02f7('0x19')]('AddTags',_0x2d9192[_0x02f7('0x1b')],_0x18517f);_0x2da29e(_this['error'](0x1f4,_0x2d9192[_0x02f7('0x1b')]));});});}; \ No newline at end of file diff --git a/server/api/mailInteraction/mailInteraction.socket.js b/server/api/mailInteraction/mailInteraction.socket.js new file mode 100644 index 0000000..5c4fbe5 --- /dev/null +++ b/server/api/mailInteraction/mailInteraction.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa080=['removeListener','mailInteraction:','remove','update','emit'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa080,0x1c9));var _0x0a08=function(_0x5642a4,_0x3b3752){_0x5642a4=_0x5642a4-0x0;var _0x20b040=_0xa080[_0x5642a4];return _0x20b040;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=['save',_0x0a08('0x0'),_0x0a08('0x1')];function createListener(_0x4c0432,_0x5a6dc2){return function(_0x15609b){_0x5a6dc2[_0x0a08('0x2')](_0x4c0432,_0x15609b);};}function removeListener(_0xa5feb6,_0x100cae){return function(){MailInteractionEvents[_0x0a08('0x3')](_0xa5feb6,_0x100cae);};}exports['register']=function(_0x49c6be){for(var _0x4ff097=0x0,_0x2a59a7=events['length'];_0x4ff097<_0x2a59a7;_0x4ff097++){var _0xc81820=events[_0x4ff097];var _0x514155=createListener(_0x0a08('0x4')+_0xc81820,_0x49c6be);MailInteractionEvents['on'](_0xc81820,_0x514155);}}; \ No newline at end of file diff --git a/server/api/mailMessage/index.js b/server/api/mailMessage/index.js new file mode 100644 index 0000000..b3c2750 --- /dev/null +++ b/server/api/mailMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd909=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','post','mail','put','update','accept','/:id/reject','reject','destroy','exports','util'];(function(_0x4bba85,_0x4c3e39){var _0x17e4d2=function(_0x57ce98){while(--_0x57ce98){_0x4bba85['push'](_0x4bba85['shift']());}};_0x17e4d2(++_0x4c3e39);}(_0xd909,0x1c1));var _0x9d90=function(_0x11f8f8,_0x3b1d76){_0x11f8f8=_0x11f8f8-0x0;var _0x13914a=_0xd909[_0x11f8f8];return _0x13914a;};'use strict';var multer=require('multer');var util=require(_0x9d90('0x0'));var path=require(_0x9d90('0x1'));var timeout=require(_0x9d90('0x2'));var express=require(_0x9d90('0x3'));var router=express['Router']();var fs_extra=require(_0x9d90('0x4'));var auth=require(_0x9d90('0x5'));var interaction=require(_0x9d90('0x6'));var config=require(_0x9d90('0x7'));var controller=require(_0x9d90('0x8'));router[_0x9d90('0x9')]('/',auth[_0x9d90('0xa')](),controller['index']);router[_0x9d90('0x9')](_0x9d90('0xb'),auth[_0x9d90('0xa')](),controller[_0x9d90('0xc')]);router[_0x9d90('0x9')](_0x9d90('0xd'),auth[_0x9d90('0xa')](),controller[_0x9d90('0xe')]);router[_0x9d90('0x9')](_0x9d90('0xf'),auth[_0x9d90('0xa')](),controller['download']);router[_0x9d90('0x10')]('/',auth[_0x9d90('0xa')](),interaction['tracked'](_0x9d90('0x11'),'mailmessage:create'),controller['create']);router[_0x9d90('0x12')](_0x9d90('0xd'),auth[_0x9d90('0xa')](),controller[_0x9d90('0x13')]);router[_0x9d90('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x9d90('0x14')]);router[_0x9d90('0x12')](_0x9d90('0x15'),auth[_0x9d90('0xa')](),controller[_0x9d90('0x16')]);router['delete'](_0x9d90('0xd'),auth[_0x9d90('0xa')](),controller[_0x9d90('0x17')]);module[_0x9d90('0x18')]=router; \ No newline at end of file diff --git a/server/api/mailMessage/mailMessage.attributes.js b/server/api/mailMessage/mailMessage.attributes.js new file mode 100644 index 0000000..7e524cb --- /dev/null +++ b/server/api/mailMessage/mailMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xeeaf=['TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Email','Chat','sequelize','exports'];(function(_0x7dd4b,_0x4ce376){var _0x30bad3=function(_0x17eaef){while(--_0x17eaef){_0x7dd4b['push'](_0x7dd4b['shift']());}};_0x30bad3(++_0x4ce376);}(_0xeeaf,0x150));var _0xfeea=function(_0x5150f5,_0x3b4d7b){_0x5150f5=_0x5150f5-0x0;var _0x4f7c53=_0xeeaf[_0x5150f5];return _0x4f7c53;};'use strict';var Sequelize=require(_0xfeea('0x0'));var _=require('lodash');module[_0xfeea('0x1')]={'body':{'type':Sequelize[_0xfeea('0x2')](_0xfeea('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xfeea('0x2')](_0xfeea('0x4'))},'read':{'type':Sequelize[_0xfeea('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xfeea('0x6')]('in',_0xfeea('0x7')),'defaultValue':_0xfeea('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0xfeea('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['TEXT'](_0xfeea('0x3'))},'cc':{'type':Sequelize[_0xfeea('0x2')](_0xfeea('0x3'))},'bcc':{'type':Sequelize[_0xfeea('0x2')](_0xfeea('0x3'))},'subject':{'type':Sequelize[_0xfeea('0x2')]},'sentAt':{'type':Sequelize[_0xfeea('0x9')]},'attach':{'type':Sequelize[_0xfeea('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xfeea('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xfeea('0x9')]},'originTo':{'type':Sequelize[_0xfeea('0x2')]('long')},'originCc':{'type':Sequelize[_0xfeea('0x2')]('long')},'originChannel':{'type':Sequelize[_0xfeea('0x6')](_0xfeea('0xb'),_0xfeea('0xc')),'defaultValue':_0xfeea('0xb'),'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/mailMessage/mailMessage.controller.js b/server/api/mailMessage/mailMessage.controller.js new file mode 100644 index 0000000..84ed085 --- /dev/null +++ b/server/api/mailMessage/mailMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x242a=['split','MailAccount','MailAccountId','List','CmContact','Contacts','updatedAt','DESC','CloudProvider','Smtp','getSmtpOptions','attachments','join','root','basename','ListId','messageId','YYYY-MM-DD\x20HH:mm:ss','mail','read','format','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','SELECT','contact','User','fullname','email','internal','interface','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','interaction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','QueryTypes','download','unix','toString','server','files','tmp','from','Attachment','decode','createdAt','bcc','Bcc','Attachments','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','jayson/promise','http','client','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','json','offset','limit','undefined','count','set','Content-Range','update','stack','name','map','MailMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','rows','params','body','find','destroy','describe','create','out','secret'];(function(_0x2543d6,_0x3a5e78){var _0x55213c=function(_0x292768){while(--_0x292768){_0x2543d6['push'](_0x2543d6['shift']());}};_0x55213c(++_0x3a5e78);}(_0x242a,0xe1));var _0xa242=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x242a[_0xa148b7];return _0x51efd3;};'use strict';var emlformat=require(_0xa242('0x0'));var moment=require(_0xa242('0x1'));var BPromise=require(_0xa242('0x2'));var util=require('util');var path=require(_0xa242('0x3'));var fs=require('fs');var _=require(_0xa242('0x4'));var Redis=require(_0xa242('0x5'));var htmlToText=require(_0xa242('0x6'));var qs=require(_0xa242('0x7'));var logger=require(_0xa242('0x8'))('api');var interaction_log=require(_0xa242('0x8'))('mail-interactions');var config=require(_0xa242('0x9'));var db=require(_0xa242('0xa'))['db'];config[_0xa242('0xb')]=_[_0xa242('0xc')](config['redis'],{'host':_0xa242('0xd'),'port':0x18eb});var socket=require(_0xa242('0xe'))(new Redis(config['redis']));var htmlEntities=require('html-entities');require(_0xa242('0xf'))['register'](socket);var jayson=require(_0xa242('0x10'));var client=jayson['client'][_0xa242('0x11')]({'port':0x232c});var client9003=jayson[_0xa242('0x12')][_0xa242('0x11')]({'port':0x232b});var client9002=jayson['client'][_0xa242('0x11')]({'port':0x232a});function respondWithRpcPromise(_0x3c0e44,_0x2a1b27,_0x4d117e,_0x286121){return new BPromise(function(_0x4d5cf6,_0x227c05){var _0x108d14=_0x286121||client;return _0x108d14['request'](_0x3c0e44,_0x4d117e)[_0xa242('0x13')](function(_0x258b84){logger['info'](_0xa242('0x14'),_0x2a1b27,_0xa242('0x15'));logger[_0xa242('0x16')](_0xa242('0x17'),_0x2a1b27,_0xa242('0x15'),JSON[_0xa242('0x18')](_0x258b84));if(_0x258b84[_0xa242('0x19')]){if(_0x258b84[_0xa242('0x19')][_0xa242('0x1a')]===0x1f4){logger[_0xa242('0x19')](_0xa242('0x14'),_0x2a1b27,_0x258b84['error'][_0xa242('0x1b')]);return _0x227c05(_0x258b84[_0xa242('0x19')][_0xa242('0x1b')]);}logger[_0xa242('0x19')](_0xa242('0x14'),_0x2a1b27,_0x258b84[_0xa242('0x19')][_0xa242('0x1b')]);return _0x4d5cf6(_0x258b84['error'][_0xa242('0x1b')]);}else{logger[_0xa242('0x1c')](_0xa242('0x14'),_0x2a1b27,_0xa242('0x15'));_0x4d5cf6(_0x258b84[_0xa242('0x1d')]['message']);}})[_0xa242('0x1e')](function(_0x1da694){logger[_0xa242('0x19')](_0xa242('0x14'),_0x2a1b27,_0x1da694);_0x227c05(_0x1da694);});});}function respondWithResult(_0x44674f,_0x56f13f){_0x56f13f=_0x56f13f||0xc8;return function(_0x1de4d3){if(_0x1de4d3){return _0x44674f[_0xa242('0x1f')](_0x56f13f)[_0xa242('0x20')](_0x1de4d3);}};}function respondWithFilteredResult(_0x4ef5db,_0x22b6ed){return function(_0x1df8bd){if(_0x1df8bd){var _0x5f05a7=typeof _0x22b6ed[_0xa242('0x21')]==='undefined'&&typeof _0x22b6ed[_0xa242('0x22')]===_0xa242('0x23');var _0x13955d=_0x1df8bd[_0xa242('0x24')];var _0x49000f=_0x5f05a7?0x0:_0x22b6ed[_0xa242('0x21')];var _0x2649a9=_0x5f05a7?_0x1df8bd[_0xa242('0x24')]:_0x22b6ed['offset']+_0x22b6ed['limit'];var _0x448d91;if(_0x2649a9>=_0x13955d){_0x2649a9=_0x13955d;_0x448d91=0xc8;}else{_0x448d91=0xce;}_0x4ef5db[_0xa242('0x1f')](_0x448d91);return _0x4ef5db[_0xa242('0x25')](_0xa242('0x26'),_0x49000f+'-'+_0x2649a9+'/'+_0x13955d)[_0xa242('0x20')](_0x1df8bd);}return null;};}function saveUpdates(_0x4a1b82){return function(_0xb94688){if(_0xb94688){return _0xb94688[_0xa242('0x27')](_0x4a1b82)[_0xa242('0x13')](function(_0x41d3bf){return _0x41d3bf;});}return null;};}function removeEntity(_0x2391de){return function(_0x29df2f){if(_0x29df2f){return _0x29df2f['destroy']()['then'](function(){_0x2391de[_0xa242('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x244b85){return function(_0x4cfb61){if(!_0x4cfb61){_0x244b85['sendStatus'](0x194);}return _0x4cfb61;};}function handleError(_0x5b117e,_0x4e5a69){_0x4e5a69=_0x4e5a69||0x1f4;return function(_0x27f38b){logger['error'](_0x27f38b[_0xa242('0x28')]);if(_0x27f38b['name']){delete _0x27f38b[_0xa242('0x29')];}_0x5b117e['status'](_0x4e5a69)['send'](_0x27f38b);};}exports['index']=function(_0x36ab38,_0x285615){var _0x52f020={},_0xe8b0ba={},_0x54de2d={'count':0x0,'rows':[]};var _0x4f134d=_[_0xa242('0x2a')](db[_0xa242('0x2b')][_0xa242('0x2c')],function(_0x491c82){return{'name':_0x491c82[_0xa242('0x2d')],'type':_0x491c82[_0xa242('0x2e')][_0xa242('0x2f')]};});_0xe8b0ba['model']=_[_0xa242('0x2a')](_0x4f134d,_0xa242('0x29'));_0xe8b0ba[_0xa242('0x30')]=_[_0xa242('0x31')](_0x36ab38['query']);_0xe8b0ba[_0xa242('0x32')]=_[_0xa242('0x33')](_0xe8b0ba[_0xa242('0x34')],_0xe8b0ba[_0xa242('0x30')]);_0x52f020[_0xa242('0x35')]=_[_0xa242('0x33')](_0xe8b0ba[_0xa242('0x34')],qs[_0xa242('0x36')](_0x36ab38[_0xa242('0x30')][_0xa242('0x36')]));_0x52f020[_0xa242('0x35')]=_0x52f020[_0xa242('0x35')][_0xa242('0x37')]?_0x52f020[_0xa242('0x35')]:_0xe8b0ba[_0xa242('0x34')];if(!_0x36ab38[_0xa242('0x30')]['hasOwnProperty'](_0xa242('0x38'))){_0x52f020[_0xa242('0x22')]=qs[_0xa242('0x22')](_0x36ab38[_0xa242('0x30')]['limit']);_0x52f020[_0xa242('0x21')]=qs[_0xa242('0x21')](_0x36ab38['query'][_0xa242('0x21')]);}_0x52f020[_0xa242('0x39')]=qs[_0xa242('0x3a')](_0x36ab38['query'][_0xa242('0x3a')]);_0x52f020[_0xa242('0x3b')]=qs[_0xa242('0x32')](_[_0xa242('0x3c')](_0x36ab38['query'],_0xe8b0ba[_0xa242('0x32')]),_0x4f134d);if(_0x36ab38[_0xa242('0x30')]['filter']){_0x52f020[_0xa242('0x3b')]=_['merge'](_0x52f020[_0xa242('0x3b')],{'$or':_[_0xa242('0x2a')](_0x4f134d,function(_0x27cc29){if(_0x27cc29[_0xa242('0x2e')]!==_0xa242('0x3d')){var _0x13768a={};_0x13768a[_0x27cc29[_0xa242('0x29')]]={'$like':'%'+_0x36ab38[_0xa242('0x30')][_0xa242('0x3e')]+'%'};return _0x13768a;}})});}_0x52f020=_[_0xa242('0x3f')]({},_0x52f020,_0x36ab38['options']);var _0x23c6d2={'where':_0x52f020[_0xa242('0x3b')]};return db[_0xa242('0x2b')]['count'](_0x23c6d2)[_0xa242('0x13')](function(_0x33df0e){_0x54de2d['count']=_0x33df0e;if(_0x36ab38[_0xa242('0x30')][_0xa242('0x40')]){_0x52f020[_0xa242('0x41')]=[{'all':!![]}];}return db[_0xa242('0x2b')]['findAll'](_0x52f020);})['then'](function(_0x2ccb8c){_0x54de2d[_0xa242('0x42')]=_0x2ccb8c;return _0x54de2d;})[_0xa242('0x13')](respondWithFilteredResult(_0x285615,_0x52f020))[_0xa242('0x1e')](handleError(_0x285615,null));};exports['show']=function(_0x37961,_0x4cdd58){var _0x5a0cef={'raw':!![],'where':{'id':_0x37961[_0xa242('0x43')]['id']}},_0xee085d={};_0xee085d[_0xa242('0x34')]=_[_0xa242('0x31')](db[_0xa242('0x2b')][_0xa242('0x2c')]);_0xee085d[_0xa242('0x30')]=_[_0xa242('0x31')](_0x37961[_0xa242('0x30')]);_0xee085d['filters']=_[_0xa242('0x33')](_0xee085d[_0xa242('0x34')],_0xee085d['query']);_0x5a0cef[_0xa242('0x35')]=_['intersection'](_0xee085d['model'],qs[_0xa242('0x36')](_0x37961[_0xa242('0x30')][_0xa242('0x36')]));_0x5a0cef[_0xa242('0x35')]=_0x5a0cef['attributes']['length']?_0x5a0cef[_0xa242('0x35')]:_0xee085d[_0xa242('0x34')];if(_0x37961[_0xa242('0x30')]['includeAll']){_0x5a0cef[_0xa242('0x41')]=[{'all':!![]}];}_0x5a0cef=_[_0xa242('0x3f')]({},_0x5a0cef,_0x37961['options']);return db[_0xa242('0x2b')]['find'](_0x5a0cef)['then'](handleEntityNotFound(_0x4cdd58,null))[_0xa242('0x13')](respondWithResult(_0x4cdd58,null))[_0xa242('0x1e')](handleError(_0x4cdd58,null));};exports[_0xa242('0x27')]=function(_0x1054ca,_0x1b8356){if(_0x1054ca[_0xa242('0x44')]['id']){delete _0x1054ca['body']['id'];}return db[_0xa242('0x2b')][_0xa242('0x45')]({'where':{'id':_0x1054ca[_0xa242('0x43')]['id']}})[_0xa242('0x13')](handleEntityNotFound(_0x1b8356,null))[_0xa242('0x13')](saveUpdates(_0x1054ca[_0xa242('0x44')],null))['then'](respondWithResult(_0x1b8356,null))[_0xa242('0x1e')](handleError(_0x1b8356,null));};exports[_0xa242('0x46')]=function(_0x2caa9e,_0x1ee8d6){return db[_0xa242('0x2b')][_0xa242('0x45')]({'where':{'id':_0x2caa9e[_0xa242('0x43')]['id']}})[_0xa242('0x13')](handleEntityNotFound(_0x1ee8d6,null))[_0xa242('0x13')](removeEntity(_0x1ee8d6,null))[_0xa242('0x1e')](handleError(_0x1ee8d6,null));};exports[_0xa242('0x47')]=function(_0xf33572,_0x4c3133){return db[_0xa242('0x2b')][_0xa242('0x47')]()[_0xa242('0x13')](respondWithResult(_0x4c3133,null))[_0xa242('0x1e')](handleError(_0x4c3133,null));};exports[_0xa242('0x48')]=function(_0x546d25,_0x397fca){return db[_0xa242('0x2b')][_0xa242('0x48')](_0x546d25[_0xa242('0x44')])[_0xa242('0x13')](function(_0x4d23af){if(_0x4d23af){if(_0x4d23af['direction']===_0xa242('0x49')&&!_0x4d23af[_0xa242('0x4a')]){var _0x1f96cd,_0x29f47e,_0x17ef0e;if(_0x546d25['body']['to']){_0x29f47e=_0x546d25[_0xa242('0x44')]['to'][_0xa242('0x4b')](',')[0x0];}return db[_0xa242('0x4c')]['findOne']({'where':{'id':_0x4d23af[_0xa242('0x4d')]},'include':[{'model':db['CmList'],'as':_0xa242('0x4e'),'include':[{'model':db[_0xa242('0x4f')],'as':_0xa242('0x50'),'where':{'email':_0x29f47e},'limit':0x1,'order':[[_0xa242('0x51'),_0xa242('0x52')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0xa242('0x53')],'as':_0xa242('0x53'),'raw':!![]}]}]})[_0xa242('0x13')](function(_0x5db8e8){_0x1f96cd=_0x5db8e8;if(!_0x1f96cd||!_0x1f96cd[_0xa242('0x54')])return;var _0x355a91=_0x1f96cd[_0xa242('0x55')]();if(_0x546d25[_0xa242('0x44')][_0xa242('0x56')]&&_0x546d25[_0xa242('0x44')][_0xa242('0x56')][_0xa242('0x37')]){for(var _0x432f73=0x0;_0x432f73<_0x546d25[_0xa242('0x44')][_0xa242('0x56')][_0xa242('0x37')];_0x432f73+=0x1){_0x546d25['body'][_0xa242('0x56')][_0x432f73]={'filename':_0x546d25[_0xa242('0x44')][_0xa242('0x56')][_0x432f73][_0xa242('0x29')],'path':path[_0xa242('0x57')](config[_0xa242('0x58')],'server/files/attachments',_0x546d25[_0xa242('0x44')][_0xa242('0x56')][_0x432f73][_0xa242('0x59')])};}}_0x17ef0e={'account':_0x355a91,'message':_0x546d25[_0xa242('0x44')]};return;})[_0xa242('0x13')](function(){if(_0x1f96cd[_0xa242('0x4e')]){if(_0x1f96cd[_0xa242('0x4e')][_0xa242('0x50')]['length']){return _0x1f96cd[_0xa242('0x4e')][_0xa242('0x50')][0x0];}else{return db[_0xa242('0x4f')][_0xa242('0x48')](_['defaults'](_0x546d25['body'],{'firstName':_0x546d25[_0xa242('0x44')]['to'],'email':_0x546d25[_0xa242('0x44')]['to'],'phone':_0x546d25[_0xa242('0x44')]['to'],'ListId':_0x1f96cd[_0xa242('0x5a')]}));}}else{throw new Error('List\x20not\x20found');}})[_0xa242('0x13')](function(){if(_0x17ef0e){return respondWithRpcPromise('SendMail','sendMail',_0x17ef0e,client9003)['then'](function(_0x1a21d7){return _0x4d23af[_0xa242('0x27')]({'read':!![],'messageId':_0x1a21d7[_0xa242('0x5b')],'sentAt':moment()['format'](_0xa242('0x5c'))});})['catch'](function(_0x107203){logger[_0xa242('0x19')]('%s',JSON[_0xa242('0x18')](_0x107203));return _0x4d23af;});}return _0x4d23af;});}return _0x4d23af;}})[_0xa242('0x13')](respondWithResult(_0x397fca,0xc9))['catch'](handleError(_0x397fca,null));};exports['accept']=function(_0x261174,_0x12399d){var _0x1bea1c={'agent':{},'channel':_0xa242('0x5d')};if(_0x261174[_0xa242('0x44')]['id']){delete _0x261174[_0xa242('0x44')]['id'];}_0x261174['body'][_0xa242('0x5e')]=!![];_0x261174[_0xa242('0x44')]['readAt']=moment()[_0xa242('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x261174[_0xa242('0x44')]['UserId']=_0x261174[_0xa242('0x44')][_0xa242('0x60')]||_0x261174[_0xa242('0x61')]['id'];_0x1bea1c[_0xa242('0x62')]['id']=_0x261174[_0xa242('0x44')][_0xa242('0x60')];return db[_0xa242('0x2b')][_0xa242('0x45')]({'where':{'id':_0x261174[_0xa242('0x43')]['id'],'UserId':null}})[_0xa242('0x13')](handleEntityNotFound(_0x12399d,null))['then'](saveUpdates(_0x261174[_0xa242('0x44')],null))[_0xa242('0x13')](function(_0x2e6e61){if(_0x2e6e61){_0x1bea1c[_0xa242('0x1b')]=_0x2e6e61[_0xa242('0x63')]({'plain':!![]});return db[_0xa242('0x64')][_0xa242('0x45')]({'where':{'id':_0x2e6e61[_0xa242('0x65')]}});}return null;})[_0xa242('0x13')](handleEntityNotFound(_0x12399d,null))[_0xa242('0x13')](function(_0x367aaf){if(_0x367aaf){return _0x367aaf['update']({'UserId':_0x261174[_0xa242('0x44')][_0xa242('0x60')],'read1stAt':_[_0xa242('0x66')](_0x367aaf[_0xa242('0x67')])?moment()[_0xa242('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xa242('0x13')](function(_0x79a564){if(_0x79a564){_0x1bea1c['interaction']=_0x79a564['get']({'plain':!![]});interaction_log[_0xa242('0x1c')](_0xa242('0x68'),_0x261174[_0xa242('0x61')]['id'],_0x261174[_0xa242('0x61')][_0xa242('0x29')],_0x261174[_0xa242('0x61')][_0xa242('0x69')],_0x1bea1c['interaction']['id'],_0x261174[_0xa242('0x44')]?JSON[_0xa242('0x18')](_0x261174[_0xa242('0x44')]):_0xa242('0x6a'));return respondWithRpcPromise(_0xa242('0x6b'),_0xa242('0x6c'),_0x1bea1c);}return null;})[_0xa242('0x13')](function(_0x43c381){var _0x11baa0=_0xa242('0x6d')+_0x43c381[_0xa242('0x1b')][_0xa242('0x6e')];return db['sequelize']['query'](_0x11baa0,{'type':db[_0xa242('0x6f')]['QueryTypes'][_0xa242('0x70')],'raw':!![]})[_0xa242('0x13')](function(_0x2f360d){return _0x2f360d;});})[_0xa242('0x13')](function(_0x423587){if(_0x423587){_0x1bea1c[_0xa242('0x1b')][_0xa242('0x71')]=_0x423587[0x0];if(!_0x261174[_0xa242('0x44')]['UserId'])return;return db[_0xa242('0x72')][_0xa242('0x45')]({'where':{'id':_0x261174['body'][_0xa242('0x60')],'role':_0xa242('0x62')},'attributes':['id',_0xa242('0x29'),_0xa242('0x73'),_0xa242('0x74'),_0xa242('0x75')],'raw':!![]});}return null;})['then'](function(_0x5bc597){if(!_0x5bc597)return null;_0x1bea1c['message']['agent']=_0x5bc597;return _0x1bea1c;})[_0xa242('0x13')](function(_0x5d6799){if(_0x5d6799){if(_0x261174[_0xa242('0x44')]['manual']){_0x1bea1c['message'][_0xa242('0x76')]=util[_0xa242('0x5f')]('SIP/%s',_0x261174[_0xa242('0x61')][_0xa242('0x29')]);_0x1bea1c[_0xa242('0x1b')][_0xa242('0x77')]=_0x1bea1c['channel'];_0x1bea1c['message'][_0xa242('0x78')]=_0x1bea1c['channel'];_0x1bea1c[_0xa242('0x1b')][_0xa242('0x79')]='accept';_0x1bea1c['message']['body']=htmlToText[_0xa242('0x7a')](_0x1bea1c[_0xa242('0x1b')][_0xa242('0x44')]);return respondWithRpcPromise('EventManager',_0xa242('0x7b'),{'event':_0xa242('0x7c'),'message':_0x1bea1c[_0xa242('0x1b')]},client9002)[_0xa242('0x13')](function(){return _0x1bea1c;});}return _0x1bea1c;}return null;})[_0xa242('0x13')](respondWithResult(_0x12399d,null))[_0xa242('0x1e')](handleError(_0x12399d,null));};exports[_0xa242('0x7d')]=function(_0x2d3e23,_0x358491){var _0x55c6fb={'agent':{},'channel':'mail'};if(_0x2d3e23[_0xa242('0x44')]['id']){delete _0x2d3e23['body']['id'];}_0x2d3e23['body'][_0xa242('0x60')]=_0x2d3e23[_0xa242('0x44')][_0xa242('0x60')]||_0x2d3e23['user']['id'];_0x55c6fb[_0xa242('0x62')]['id']=_0x2d3e23[_0xa242('0x44')][_0xa242('0x60')];return db[_0xa242('0x2b')][_0xa242('0x45')]({'where':{'id':_0x2d3e23[_0xa242('0x43')]['id'],'UserId':null}})[_0xa242('0x13')](handleEntityNotFound(_0x358491,null))[_0xa242('0x13')](function(_0x8b2fbb){if(_0x8b2fbb){_0x55c6fb[_0xa242('0x1b')]=_0x8b2fbb['get']({'plain':!![]});return db[_0xa242('0x64')][_0xa242('0x45')]({'where':{'id':_0x8b2fbb[_0xa242('0x65')]}});}return null;})[_0xa242('0x13')](handleEntityNotFound(_0x358491,null))[_0xa242('0x13')](function(_0x1c3d3b){if(_0x1c3d3b){_0x55c6fb[_0xa242('0x7e')]=_0x1c3d3b['get']({'plain':!![]});interaction_log[_0xa242('0x1c')](_0xa242('0x7f'),_0x2d3e23[_0xa242('0x61')]['id'],_0x2d3e23[_0xa242('0x61')][_0xa242('0x29')],_0x2d3e23['user'][_0xa242('0x69')],_0x55c6fb[_0xa242('0x7e')]['id'],_0x2d3e23[_0xa242('0x44')]?JSON['stringify'](_0x2d3e23[_0xa242('0x44')]):_0xa242('0x6a'));return respondWithRpcPromise(_0xa242('0x80'),_0xa242('0x81'),_0x55c6fb);}return null;})[_0xa242('0x13')](function(_0x4e6607){var _0x445276=_0xa242('0x6d')+_0x4e6607[_0xa242('0x1b')][_0xa242('0x6e')];return db['sequelize'][_0xa242('0x30')](_0x445276,{'type':db['Sequelize'][_0xa242('0x82')][_0xa242('0x70')],'raw':!![]})[_0xa242('0x13')](function(_0x5c89e7){return _0x5c89e7;});})['then'](function(_0x1e6596){if(_0x1e6596){_0x55c6fb[_0xa242('0x1b')][_0xa242('0x71')]=_0x1e6596[0x0];if(!_0x2d3e23[_0xa242('0x44')][_0xa242('0x60')])return;return db[_0xa242('0x72')][_0xa242('0x45')]({'where':{'id':_0x2d3e23[_0xa242('0x44')][_0xa242('0x60')],'role':'agent'},'attributes':['id',_0xa242('0x29'),'fullname',_0xa242('0x74'),'internal'],'raw':!![]});}return null;})['then'](function(_0x27647c){if(!_0x27647c)return null;_0x55c6fb['message'][_0xa242('0x62')]=_0x27647c;return _0x55c6fb;})['then'](function(_0x56a79a){if(_0x56a79a){_0x56a79a['message'][_0xa242('0x76')]=util[_0xa242('0x5f')]('SIP/%s',_0x2d3e23[_0xa242('0x61')][_0xa242('0x29')]);_0x56a79a['message'][_0xa242('0x77')]=_0x55c6fb['channel'];_0x56a79a[_0xa242('0x1b')][_0xa242('0x78')]=_0x55c6fb[_0xa242('0x77')];_0x56a79a[_0xa242('0x1b')]['event']=_0xa242('0x7d');_0x56a79a[_0xa242('0x1b')][_0xa242('0x44')]=htmlToText['fromString'](_0x55c6fb[_0xa242('0x1b')]['body']);respondWithRpcPromise(_0xa242('0x7b'),_0xa242('0x7b'),{'event':'rejectmessage','message':_0x56a79a[_0xa242('0x1b')]},client9002);return _0x55c6fb;}return null;})[_0xa242('0x13')](respondWithResult(_0x358491,null))['catch'](handleError(_0x358491,null));};exports[_0xa242('0x83')]=function(_0x4ad3b5,_0x62eea0){var _0x588379=moment()[_0xa242('0x84')]()[_0xa242('0x85')]();var _0x40adcd=path[_0xa242('0x57')](config[_0xa242('0x58')],_0xa242('0x86'),_0xa242('0x87'),_0xa242('0x88'));var _0x36ab43=path[_0xa242('0x57')](config['root'],_0xa242('0x86'),'files',_0xa242('0x56'));var _0x7f1d10=util[_0xa242('0x5f')]('message-%s.eml',_0x588379);return db[_0xa242('0x2b')]['find']({'where':{'id':_0x4ad3b5[_0xa242('0x43')]['id']},'attributes':['id',_0xa242('0x44'),_0xa242('0x89'),'to','cc','bcc','subject','createdAt'],'include':_0x4ad3b5[_0xa242('0x30')][_0xa242('0x56')]?[{'model':db[_0xa242('0x8a')],'as':'Attachments'}]:undefined})[_0xa242('0x13')](handleEntityNotFound(_0x62eea0,null))[_0xa242('0x13')](function(_0x1d51e6){if(_0x1d51e6){var _0x45fd0a=_0x1d51e6;var _0x1c550d={'from':_0x45fd0a['from'],'to':_0x45fd0a['to'],'subject':_0x45fd0a['subject'],'html':htmlEntities[_0xa242('0x8b')](_0x45fd0a[_0xa242('0x44')]),'headers':{'Date':moment(_0x45fd0a[_0xa242('0x8c')])[_0xa242('0x5f')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x1d51e6['cc']){_0x1c550d['headers']['Cc']=_0x1d51e6['cc'];}if(_0x1d51e6[_0xa242('0x8d')]){_0x1c550d['headers'][_0xa242('0x8e')]=_0x1d51e6[_0xa242('0x8d')];}return new BPromise(function(_0x1ef0fe,_0x5addc8){if(_0x1d51e6['Attachments']){for(var _0x1b1bea=0x0;_0x1b1bea<_0x1d51e6[_0xa242('0x8f')]['length'];_0x1b1bea++){var _0x1d7239=_0x1d51e6[_0xa242('0x8f')][_0x1b1bea];var _0x113eff=path[_0xa242('0x57')](_0x36ab43,_0x1d7239[_0xa242('0x59')]);if(fs[_0xa242('0x90')](_0x113eff)){_0x1c550d[_0xa242('0x56')][_0xa242('0x91')]({'name':_0x1d7239[_0xa242('0x29')],'contentType':_0x1d7239[_0xa242('0x2e')],'data':fs[_0xa242('0x92')](_0x113eff)});}}}emlformat[_0xa242('0x93')](_0x1c550d,function(_0x32c14c,_0xbf7b5){if(_0x32c14c)return _0x5addc8(_0x32c14c);fs[_0xa242('0x94')](path[_0xa242('0x57')](_0x40adcd,_0x7f1d10),_0xbf7b5);return _0x1ef0fe(_0xbf7b5);});});}})[_0xa242('0x13')](function(_0x3a86d8){if(_0x3a86d8){return _0x62eea0[_0xa242('0x83')](path[_0xa242('0x57')](_0x40adcd,_0x7f1d10),_0x7f1d10,function(_0x412abe){if(!_0x412abe)fs[_0xa242('0x95')](path[_0xa242('0x57')](_0x40adcd,_0x7f1d10));});}})['catch'](handleError(_0x62eea0,null));}; \ No newline at end of file diff --git a/server/api/mailMessage/mailMessage.events.js b/server/api/mailMessage/mailMessage.events.js new file mode 100644 index 0000000..e5363a3 --- /dev/null +++ b/server/api/mailMessage/mailMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4f48=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage'];(function(_0x1177d5,_0x22b649){var _0xc3ddc2=function(_0x43ff95){while(--_0x43ff95){_0x1177d5['push'](_0x1177d5['shift']());}};_0xc3ddc2(++_0x22b649);}(_0x4f48,0x9e));var _0x84f4=function(_0x4eacc6,_0x2e8373){_0x4eacc6=_0x4eacc6-0x0;var _0x41deb6=_0x4f48[_0x4eacc6];return _0x41deb6;};'use strict';var EventEmitter=require(_0x84f4('0x0'));var MailMessage=require(_0x84f4('0x1'))['db'][_0x84f4('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x464075){return function(_0x2ec552,_0x42f64f,_0x5d711f){MailMessageEvents[_0x84f4('0x3')](_0x464075+':'+_0x2ec552['id'],_0x2ec552);MailMessageEvents[_0x84f4('0x3')](_0x464075,_0x2ec552);_0x5d711f(null);};}for(var e in events){if(events[_0x84f4('0x4')](e)){var event=events[e];MailMessage[_0x84f4('0x5')](e,emitEvent(event));}}module[_0x84f4('0x6')]=MailMessageEvents; \ No newline at end of file diff --git a/server/api/mailMessage/mailMessage.model.js b/server/api/mailMessage/mailMessage.model.js new file mode 100644 index 0000000..664e08c --- /dev/null +++ b/server/api/mailMessage/mailMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x37e8=['path','rimraf','../../config/environment','./mailMessage.attributes','exports','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','plainBody','fromString','models','get','direction','secret','UserId','MailInteraction','findOne','MailInteractionId','then','update','toLowerCase','error','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','html-to-text'];(function(_0x2e1af3,_0x2a077b){var _0x4150cd=function(_0x1e08f3){while(--_0x1e08f3){_0x2e1af3['push'](_0x2e1af3['shift']());}};_0x4150cd(++_0x2a077b);}(_0x37e8,0x10a));var _0x837e=function(_0x4141ac,_0x3ba6b5){_0x4141ac=_0x4141ac-0x0;var _0x2bd174=_0x37e8[_0x4141ac];return _0x2bd174;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x837e('0x0'))(_0x837e('0x1'));var moment=require(_0x837e('0x2'));var BPromise=require(_0x837e('0x3'));var rp=require(_0x837e('0x4'));var htmlToText=require(_0x837e('0x5'));var fs=require('fs');var path=require(_0x837e('0x6'));var rimraf=require(_0x837e('0x7'));var config=require(_0x837e('0x8'));var attributes=require(_0x837e('0x9'));module[_0x837e('0xa')]=function(_0x454c8d,_0x2e09d4){return _0x454c8d['define'](_0x837e('0xb'),attributes,{'tableName':_0x837e('0xc'),'paranoid':![],'indexes':[{'name':_0x837e('0xd'),'fields':['messageId']},{'name':_0x837e('0xe'),'fields':['plainBody',_0x837e('0xf')],'type':_0x837e('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xf2aa43,_0x181eea,_0x3e7ba1){if(_0xf2aa43[_0x837e('0x11')]){_0xf2aa43[_0x837e('0x12')]=htmlToText[_0x837e('0x13')](_0xf2aa43[_0x837e('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3e7ba1(null,_0x181eea);},'afterCreate':function(_0x5ee2c6,_0x2e779b,_0x5eadeb){var _0x29a176=_0x454c8d[_0x837e('0x14')];var _0x59244b=_0x5ee2c6[_0x837e('0x15')]({'plain':!![]});if(_0x59244b[_0x837e('0x16')]['toLowerCase']()==='in'||_0x59244b[_0x837e('0x16')]['toLowerCase']()==='out'&&!_0x59244b[_0x837e('0x17')]&&!_['isNil'](_0x59244b[_0x837e('0x18')])){_0x29a176[_0x837e('0x19')][_0x837e('0x1a')]({'where':{'id':_0x59244b[_0x837e('0x1b')]}})[_0x837e('0x1c')](function(_0x1c713f){if(_0x1c713f){_0x1c713f[_0x837e('0x1d')]({'lastMsgAt':_0x59244b['createdAt'],'lastMsgDirection':_0x59244b[_0x837e('0x16')][_0x837e('0x1e')]()});}})['catch'](function(_0xb56c04){console[_0x837e('0x1f')](_0xb56c04);});}_0x5eadeb();}},'charset':_0x837e('0x20'),'collate':_0x837e('0x21')});}; \ No newline at end of file diff --git a/server/api/mailMessage/mailMessage.rpc.js b/server/api/mailMessage/mailMessage.rpc.js new file mode 100644 index 0000000..5e37d6d --- /dev/null +++ b/server/api/mailMessage/mailMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xea28=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','CreateMailMessage','MailMessage','body','options','raw','stringify','lodash'];(function(_0x4715d2,_0x3371b2){var _0x141811=function(_0x520bc6){while(--_0x520bc6){_0x4715d2['push'](_0x4715d2['shift']());}};_0x141811(++_0x3371b2);}(_0xea28,0x13a));var _0x8ea2=function(_0x3c2a50,_0xc728e7){_0x3c2a50=_0x3c2a50-0x0;var _0x4a0e7f=_0xea28[_0x3c2a50];return _0x4a0e7f;};'use strict';var _=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var moment=require(_0x8ea2('0x2'));var BPromise=require(_0x8ea2('0x3'));var rs=require(_0x8ea2('0x4'));var fs=require('fs');var Redis=require(_0x8ea2('0x5'));var db=require(_0x8ea2('0x6'))['db'];var utils=require(_0x8ea2('0x7'));var logger=require('../../config/logger')(_0x8ea2('0x8'));var config=require(_0x8ea2('0x9'));var jayson=require(_0x8ea2('0xa'));var client=jayson['client'][_0x8ea2('0xb')]({'port':0x232a});config[_0x8ea2('0xc')]=_[_0x8ea2('0xd')](config[_0x8ea2('0xc')],{'host':_0x8ea2('0xe'),'port':0x18eb});var socket=require(_0x8ea2('0xf'))(new Redis(config[_0x8ea2('0xc')]));require(_0x8ea2('0x10'))[_0x8ea2('0x11')](socket);function respondWithRpcPromise(_0x3000f9,_0x3d0b35,_0x21ae3d){return new BPromise(function(_0x500b82,_0x4da3b1){return client[_0x8ea2('0x12')](_0x3000f9,_0x21ae3d)[_0x8ea2('0x13')](function(_0x374973){logger['info'](_0x8ea2('0x14'),_0x3d0b35,_0x8ea2('0x15'));logger[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x3d0b35,_0x8ea2('0x15'),JSON['stringify'](_0x374973));if(_0x374973[_0x8ea2('0x18')]){if(_0x374973['error']['code']===0x1f4){logger[_0x8ea2('0x18')](_0x8ea2('0x14'),_0x3d0b35,_0x374973[_0x8ea2('0x18')][_0x8ea2('0x19')]);return _0x4da3b1(_0x374973[_0x8ea2('0x18')][_0x8ea2('0x19')]);}logger[_0x8ea2('0x18')](_0x8ea2('0x14'),_0x3d0b35,_0x374973[_0x8ea2('0x18')][_0x8ea2('0x19')]);return _0x500b82(_0x374973[_0x8ea2('0x18')][_0x8ea2('0x19')]);}else{logger[_0x8ea2('0x1a')](_0x8ea2('0x14'),_0x3d0b35,_0x8ea2('0x15'));_0x500b82(_0x374973[_0x8ea2('0x1b')][_0x8ea2('0x19')]);}})[_0x8ea2('0x1c')](function(_0x1068b6){logger[_0x8ea2('0x18')](_0x8ea2('0x14'),_0x3d0b35,_0x1068b6);_0x4da3b1(_0x1068b6);});});}exports[_0x8ea2('0x1d')]=function(_0x52b58c){var _0x4be7c9=this;return new Promise(function(_0x3790e9,_0x248c18){return db[_0x8ea2('0x1e')]['create'](_0x52b58c[_0x8ea2('0x1f')],{'raw':_0x52b58c[_0x8ea2('0x20')]?_0x52b58c['options'][_0x8ea2('0x21')]===undefined?!![]:![]:!![]})[_0x8ea2('0x13')](function(_0x37229a){logger[_0x8ea2('0x1a')](_0x8ea2('0x1d'),_0x52b58c);logger[_0x8ea2('0x16')](_0x8ea2('0x1d'),_0x52b58c,JSON[_0x8ea2('0x22')](_0x37229a));_0x3790e9(_0x37229a);})[_0x8ea2('0x1c')](function(_0x4d5030){logger[_0x8ea2('0x18')]('CreateMailMessage',_0x4d5030[_0x8ea2('0x19')],_0x52b58c);_0x248c18(_0x4be7c9[_0x8ea2('0x18')](0x1f4,_0x4d5030[_0x8ea2('0x19')]));});});}; \ No newline at end of file diff --git a/server/api/mailMessage/mailMessage.socket.js b/server/api/mailMessage/mailMessage.socket.js new file mode 100644 index 0000000..a9fe0bf --- /dev/null +++ b/server/api/mailMessage/mailMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9f3a=['save','remove','update','removeListener','register','length'];(function(_0x39eba2,_0x5a5ad8){var _0x20b9ed=function(_0x5b86e1){while(--_0x5b86e1){_0x39eba2['push'](_0x39eba2['shift']());}};_0x20b9ed(++_0x5a5ad8);}(_0x9f3a,0xcc));var _0xa9f3=function(_0x2cfb48,_0x24b83b){_0x2cfb48=_0x2cfb48-0x0;var _0xc4594f=_0x9f3a[_0x2cfb48];return _0xc4594f;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xa9f3('0x0'),_0xa9f3('0x1'),_0xa9f3('0x2')];function createListener(_0xced7a2,_0x507760){return function(_0x4858e9){_0x507760['emit'](_0xced7a2,_0x4858e9);};}function removeListener(_0x53c3cf,_0x4f8ca0){return function(){MailMessageEvents[_0xa9f3('0x3')](_0x53c3cf,_0x4f8ca0);};}exports[_0xa9f3('0x4')]=function(_0xf60fba){for(var _0x369e43=0x0,_0x36f757=events[_0xa9f3('0x5')];_0x369e43<_0x36f757;_0x369e43++){var _0x5c772b=events[_0x369e43];var _0x51e8a6=createListener('mailMessage:'+_0x5c772b,_0xf60fba);MailMessageEvents['on'](_0x5c772b,_0x51e8a6);}}; \ No newline at end of file diff --git a/server/api/mailQueue/index.js b/server/api/mailQueue/index.js new file mode 100644 index 0000000..44543e3 --- /dev/null +++ b/server/api/mailQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x80ee=['index','/describe','isAuthenticated','/:id','getMembers','/:id/teams','/:id/users','post','create','addTeams','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','./mailQueue.controller','get'];(function(_0xd7f732,_0x1ba856){var _0x26fd49=function(_0x18fc7d){while(--_0x18fc7d){_0xd7f732['push'](_0xd7f732['shift']());}};_0x26fd49(++_0x1ba856);}(_0x80ee,0x13d));var _0xe80e=function(_0x2aaeac,_0x30bda5){_0x2aaeac=_0x2aaeac-0x0;var _0x757741=_0x80ee[_0x2aaeac];return _0x757741;};'use strict';var multer=require(_0xe80e('0x0'));var util=require(_0xe80e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe80e('0x2'));var router=express[_0xe80e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe80e('0x4'));var interaction=require(_0xe80e('0x5'));var config=require('../../config/environment');var controller=require(_0xe80e('0x6'));router[_0xe80e('0x7')]('/',auth['isAuthenticated'](),controller[_0xe80e('0x8')]);router[_0xe80e('0x7')](_0xe80e('0x9'),auth[_0xe80e('0xa')](),controller['describe']);router[_0xe80e('0x7')](_0xe80e('0xb'),auth[_0xe80e('0xa')](),controller['show']);router[_0xe80e('0x7')]('/:id/members',auth[_0xe80e('0xa')](),controller[_0xe80e('0xc')]);router[_0xe80e('0x7')](_0xe80e('0xd'),auth[_0xe80e('0xa')](),controller['getTeams']);router[_0xe80e('0x7')](_0xe80e('0xe'),auth[_0xe80e('0xa')](),controller['getAgents']);router[_0xe80e('0xf')]('/',auth['isAuthenticated'](),controller[_0xe80e('0x10')]);router[_0xe80e('0xf')](_0xe80e('0xd'),auth[_0xe80e('0xa')](),controller[_0xe80e('0x11')]);router[_0xe80e('0xf')](_0xe80e('0xe'),auth[_0xe80e('0xa')](),controller[_0xe80e('0x12')]);router['put'](_0xe80e('0xb'),auth['isAuthenticated'](),controller[_0xe80e('0x13')]);router[_0xe80e('0x14')]('/:id',auth[_0xe80e('0xa')](),controller[_0xe80e('0x15')]);router['delete'](_0xe80e('0xd'),auth[_0xe80e('0xa')](),controller[_0xe80e('0x16')]);router['delete'](_0xe80e('0xe'),auth[_0xe80e('0xa')](),controller[_0xe80e('0x17')]);module[_0xe80e('0x18')]=router; \ No newline at end of file diff --git a/server/api/mailQueue/mailQueue.attributes.js b/server/api/mailQueue/mailQueue.attributes.js new file mode 100644 index 0000000..454d74d --- /dev/null +++ b/server/api/mailQueue/mailQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3024=['exports','name','STRING','rrmemory','beepall','roundrobin'];(function(_0x445c98,_0x132bf7){var _0x2fe913=function(_0x32e864){while(--_0x32e864){_0x445c98['push'](_0x445c98['shift']());}};_0x2fe913(++_0x132bf7);}(_0x3024,0x198));var _0x4302=function(_0x1464c2,_0x5551d2){_0x1464c2=_0x1464c2-0x0;var _0x3bfb77=_0x3024[_0x1464c2];return _0x3bfb77;};'use strict';var Sequelize=require('sequelize');module[_0x4302('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x4302('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4302('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x4302('0x3'),_0x4302('0x4'),_0x4302('0x5'))}}; \ No newline at end of file diff --git a/server/api/mailQueue/mailQueue.controller.js b/server/api/mailQueue/mailQueue.controller.js new file mode 100644 index 0000000..f372958 --- /dev/null +++ b/server/api/mailQueue/mailQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7cc4=['userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','lodash','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','../../config/license/util','redis','defaults','register','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','error','stack','name','send','index','map','MailQueue','key','query','keys','filters','model','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','length','MailQueueId','User','UserId','mailPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','ids','voicePause','interface','flatMap','Agents','sequelize','transaction','addTeams','findOrCreate','forEach','userMailQueue:save','removeTeams','select','field','from','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','union','compact','value','isEmpty','emit'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x7cc4,0x1a8));var _0x47cc=function(_0x4d67b8,_0x565134){_0x4d67b8=_0x4d67b8-0x0;var _0x55af3b=_0x7cc4[_0x4d67b8];return _0x55af3b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x47cc('0x0'));var zipdir=require(_0x47cc('0x1'));var jsonpatch=require(_0x47cc('0x2'));var rp=require(_0x47cc('0x3'));var moment=require(_0x47cc('0x4'));var BPromise=require(_0x47cc('0x5'));var Mustache=require(_0x47cc('0x6'));var util=require('util');var path=require(_0x47cc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x47cc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x47cc('0x9'));var squel=require(_0x47cc('0xa'));var crypto=require(_0x47cc('0xb'));var jsforce=require(_0x47cc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x47cc('0xd'));var querystring=require(_0x47cc('0xe'));var Papa=require('papaparse');var Redis=require(_0x47cc('0xf'));var authService=require(_0x47cc('0x10'));var qs=require(_0x47cc('0x11'));var as=require(_0x47cc('0x12'));var hardwareService=require(_0x47cc('0x13'));var logger=require(_0x47cc('0x14'))(_0x47cc('0x15'));var utils=require(_0x47cc('0x16'));var config=require(_0x47cc('0x17'));var licenseUtil=require(_0x47cc('0x18'));var db=require('../../mysqldb')['db'];config[_0x47cc('0x19')]=_[_0x47cc('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x47cc('0x19')]));require('./mailQueue.socket')[_0x47cc('0x1b')](socket);function respondWithStatusCode(_0x4d2229,_0x2a4e8e){_0x2a4e8e=_0x2a4e8e||0xcc;return function(_0x10f843){if(_0x10f843){return _0x4d2229[_0x47cc('0x1c')](_0x2a4e8e);}return _0x4d2229['status'](_0x2a4e8e)[_0x47cc('0x1d')]();};}function respondWithResult(_0x58320b,_0x282a70){_0x282a70=_0x282a70||0xc8;return function(_0x26ff5b){if(_0x26ff5b){return _0x58320b[_0x47cc('0x1e')](_0x282a70)[_0x47cc('0x1f')](_0x26ff5b);}};}function respondWithFilteredResult(_0x5042ec,_0x34af0c){return function(_0x5eab65){if(_0x5eab65){var _0xc839d0=typeof _0x34af0c['offset']===_0x47cc('0x20')&&typeof _0x34af0c[_0x47cc('0x21')]===_0x47cc('0x20');var _0x1d81da=_0x5eab65[_0x47cc('0x22')];var _0x5aee09=_0xc839d0?0x0:_0x34af0c[_0x47cc('0x23')];var _0x10f4d1=_0xc839d0?_0x5eab65[_0x47cc('0x22')]:_0x34af0c[_0x47cc('0x23')]+_0x34af0c['limit'];var _0x5819bf;if(_0x10f4d1>=_0x1d81da){_0x10f4d1=_0x1d81da;_0x5819bf=0xc8;}else{_0x5819bf=0xce;}_0x5042ec[_0x47cc('0x1e')](_0x5819bf);return _0x5042ec[_0x47cc('0x24')](_0x47cc('0x25'),_0x5aee09+'-'+_0x10f4d1+'/'+_0x1d81da)[_0x47cc('0x1f')](_0x5eab65);}return null;};}function patchUpdates(_0x2753fe){return function(_0x56bb41){try{jsonpatch[_0x47cc('0x26')](_0x56bb41,_0x2753fe,!![]);}catch(_0x3355c1){return BPromise[_0x47cc('0x27')](_0x3355c1);}return _0x56bb41[_0x47cc('0x28')]();};}function saveUpdates(_0x25f4d9,_0x4eb4d6){return function(_0x3e8fc9){if(_0x3e8fc9){return _0x3e8fc9[_0x47cc('0x29')](_0x25f4d9)[_0x47cc('0x2a')](function(_0x2670de){return _0x2670de;});}return null;};}function removeEntity(_0x4bf3f1,_0x577e70){return function(_0x181985){if(_0x181985){return _0x181985[_0x47cc('0x2b')]()['then'](function(){var _0x80bf23=_0x181985[_0x47cc('0x2c')]({'plain':!![]});var _0x46288b='MailQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x46288b,'resourceId':_0x80bf23['id']}})[_0x47cc('0x2a')](function(){return _0x181985;});})[_0x47cc('0x2a')](function(){_0x4bf3f1['status'](0xcc)[_0x47cc('0x1d')]();});}};}function handleEntityNotFound(_0xaa5846,_0x3b0168){return function(_0x1c287b){if(!_0x1c287b){_0xaa5846['sendStatus'](0x194);}return _0x1c287b;};}function handleError(_0x282368,_0x145f83){_0x145f83=_0x145f83||0x1f4;return function(_0x2f91db){logger[_0x47cc('0x2d')](_0x2f91db[_0x47cc('0x2e')]);if(_0x2f91db[_0x47cc('0x2f')]){delete _0x2f91db[_0x47cc('0x2f')];}_0x282368['status'](_0x145f83)[_0x47cc('0x30')](_0x2f91db);};}exports[_0x47cc('0x31')]=function(_0x914811,_0x27f16c){var _0x476103={},_0x5ae153={},_0x3adbda={'count':0x0,'rows':[]};var _0x141fad=_[_0x47cc('0x32')](db[_0x47cc('0x33')]['rawAttributes'],function(_0x439e05){return{'name':_0x439e05['fieldName'],'type':_0x439e05['type'][_0x47cc('0x34')]};});_0x5ae153['model']=_[_0x47cc('0x32')](_0x141fad,_0x47cc('0x2f'));_0x5ae153[_0x47cc('0x35')]=_[_0x47cc('0x36')](_0x914811[_0x47cc('0x35')]);_0x5ae153[_0x47cc('0x37')]=_['intersection'](_0x5ae153[_0x47cc('0x38')],_0x5ae153[_0x47cc('0x35')]);_0x476103['attributes']=_['intersection'](_0x5ae153[_0x47cc('0x38')],qs[_0x47cc('0x39')](_0x914811[_0x47cc('0x35')][_0x47cc('0x39')]));_0x476103[_0x47cc('0x3a')]=_0x476103[_0x47cc('0x3a')]['length']?_0x476103[_0x47cc('0x3a')]:_0x5ae153[_0x47cc('0x38')];if(!_0x914811[_0x47cc('0x35')][_0x47cc('0x3b')](_0x47cc('0x3c'))){_0x476103[_0x47cc('0x21')]=qs['limit'](_0x914811[_0x47cc('0x35')][_0x47cc('0x21')]);_0x476103['offset']=qs[_0x47cc('0x23')](_0x914811[_0x47cc('0x35')][_0x47cc('0x23')]);}_0x476103[_0x47cc('0x3d')]=qs['sort'](_0x914811['query'][_0x47cc('0x3e')]);_0x476103['where']=qs[_0x47cc('0x37')](_[_0x47cc('0x3f')](_0x914811[_0x47cc('0x35')],_0x5ae153[_0x47cc('0x37')]),_0x141fad);if(_0x914811[_0x47cc('0x35')][_0x47cc('0x40')]){_0x476103[_0x47cc('0x41')]=_['merge'](_0x476103[_0x47cc('0x41')],{'$or':_[_0x47cc('0x32')](_0x141fad,function(_0x21fb9a){if(_0x21fb9a[_0x47cc('0x42')]!=='VIRTUAL'){var _0x777081={};_0x777081[_0x21fb9a[_0x47cc('0x2f')]]={'$like':'%'+_0x914811[_0x47cc('0x35')][_0x47cc('0x40')]+'%'};return _0x777081;}})});}_0x476103=_['merge']({},_0x476103,_0x914811[_0x47cc('0x43')]);var _0x32a28b={'where':_0x476103[_0x47cc('0x41')]};return db[_0x47cc('0x33')][_0x47cc('0x22')](_0x32a28b)[_0x47cc('0x2a')](function(_0x2bed9a){_0x3adbda['count']=_0x2bed9a;if(_0x914811[_0x47cc('0x35')][_0x47cc('0x44')]){_0x476103[_0x47cc('0x45')]=[{'all':!![]}];}return db['MailQueue'][_0x47cc('0x46')](_0x476103);})[_0x47cc('0x2a')](function(_0x563a7f){_0x3adbda[_0x47cc('0x47')]=_0x563a7f;return _0x3adbda;})[_0x47cc('0x2a')](respondWithFilteredResult(_0x27f16c,_0x476103))[_0x47cc('0x48')](handleError(_0x27f16c,null));};exports[_0x47cc('0x49')]=function(_0x424d78,_0x11c242){var _0x5a343b={'raw':!![],'where':{'id':_0x424d78[_0x47cc('0x4a')]['id']}},_0x532e7c={};_0x532e7c['model']=_['keys'](db[_0x47cc('0x33')][_0x47cc('0x4b')]);_0x532e7c[_0x47cc('0x35')]=_[_0x47cc('0x36')](_0x424d78[_0x47cc('0x35')]);_0x532e7c[_0x47cc('0x37')]=_['intersection'](_0x532e7c[_0x47cc('0x38')],_0x532e7c[_0x47cc('0x35')]);_0x5a343b[_0x47cc('0x3a')]=_[_0x47cc('0x4c')](_0x532e7c['model'],qs['fields'](_0x424d78[_0x47cc('0x35')][_0x47cc('0x39')]));_0x5a343b[_0x47cc('0x3a')]=_0x5a343b[_0x47cc('0x3a')]['length']?_0x5a343b[_0x47cc('0x3a')]:_0x532e7c[_0x47cc('0x38')];if(_0x424d78[_0x47cc('0x35')][_0x47cc('0x44')]){_0x5a343b[_0x47cc('0x45')]=[{'all':!![]}];}_0x5a343b=_[_0x47cc('0x4d')]({},_0x5a343b,_0x424d78['options']);return db['MailQueue'][_0x47cc('0x4e')](_0x5a343b)[_0x47cc('0x2a')](handleEntityNotFound(_0x11c242,null))['then'](respondWithResult(_0x11c242,null))['catch'](handleError(_0x11c242,null));};exports[_0x47cc('0x4f')]=function(_0x35ab10,_0x4fa2ef){return db[_0x47cc('0x33')][_0x47cc('0x4f')](_0x35ab10[_0x47cc('0x50')],{})['then'](function(_0x13188f){var _0x158889=_0x35ab10[_0x47cc('0x51')][_0x47cc('0x2c')]({'plain':!![]});if(!_0x158889)throw new Error(_0x47cc('0x52'));if(_0x158889[_0x47cc('0x53')]===_0x47cc('0x51')){var _0x3f6e22=_0x13188f['get']({'plain':!![]});var _0x3bcccd=_0x47cc('0x54');return db['UserProfileSection'][_0x47cc('0x4e')]({'where':{'name':_0x3bcccd,'userProfileId':_0x158889['userProfileId']},'raw':!![]})[_0x47cc('0x2a')](function(_0x536a2a){if(_0x536a2a&&_0x536a2a[_0x47cc('0x55')]===0x0){return db['UserProfileResource']['create']({'name':_0x3f6e22[_0x47cc('0x2f')],'resourceId':_0x3f6e22['id'],'type':_0x536a2a[_0x47cc('0x2f')],'sectionId':_0x536a2a['id']},{})[_0x47cc('0x2a')](function(){return _0x13188f;});}else{return _0x13188f;}})[_0x47cc('0x48')](function(_0x127a77){logger[_0x47cc('0x2d')](_0x47cc('0x56'),_0x127a77);throw _0x127a77;});}return _0x13188f;})[_0x47cc('0x2a')](respondWithResult(_0x4fa2ef,0xc9))[_0x47cc('0x48')](handleError(_0x4fa2ef,null));};exports[_0x47cc('0x29')]=function(_0x350526,_0x3ff615){if(_0x350526[_0x47cc('0x50')]['id']){delete _0x350526['body']['id'];}return db[_0x47cc('0x33')]['find']({'where':{'id':_0x350526[_0x47cc('0x4a')]['id']}})[_0x47cc('0x2a')](handleEntityNotFound(_0x3ff615,null))[_0x47cc('0x2a')](saveUpdates(_0x350526['body'],null))[_0x47cc('0x2a')](respondWithResult(_0x3ff615,null))[_0x47cc('0x48')](handleError(_0x3ff615,null));};exports['destroy']=function(_0x5a7bd2,_0x931641){return db[_0x47cc('0x33')][_0x47cc('0x4e')]({'where':{'id':_0x5a7bd2['params']['id']}})[_0x47cc('0x2a')](handleEntityNotFound(_0x931641,null))[_0x47cc('0x2a')](removeEntity(_0x931641,null))[_0x47cc('0x48')](handleError(_0x931641,null));};exports[_0x47cc('0x57')]=function(_0x16edb7,_0x5a4b82){return db['MailQueue'][_0x47cc('0x57')]()[_0x47cc('0x2a')](respondWithResult(_0x5a4b82,null))['catch'](handleError(_0x5a4b82,null));};exports[_0x47cc('0x58')]=function(_0x26f753,_0x5042f1,_0x134423){var _0x3b9205={'raw':!![],'where':{}},_0x204f8c={},_0x13fcda;return db[_0x47cc('0x33')][_0x47cc('0x59')]({'where':{'id':_0x26f753[_0x47cc('0x4a')]['id']}})[_0x47cc('0x2a')](handleEntityNotFound(_0x5042f1,null))['then'](function(_0x4a8d42){if(_0x4a8d42){_0x13fcda=_0x4a8d42[_0x47cc('0x2c')]({'plain':!![]});_0x204f8c[_0x47cc('0x38')]=_[_0x47cc('0x36')](db[_0x47cc('0x5a')]['rawAttributes']);_0x204f8c[_0x47cc('0x35')]=_[_0x47cc('0x36')](_0x26f753[_0x47cc('0x35')]);_0x204f8c[_0x47cc('0x37')]=_['intersection'](_0x204f8c[_0x47cc('0x38')],_0x204f8c[_0x47cc('0x35')]);_0x3b9205[_0x47cc('0x3a')]=_[_0x47cc('0x4c')](_0x204f8c[_0x47cc('0x38')],qs[_0x47cc('0x39')](_0x26f753[_0x47cc('0x35')][_0x47cc('0x39')]));_0x3b9205[_0x47cc('0x3a')]=_0x3b9205[_0x47cc('0x3a')][_0x47cc('0x5b')]?_0x3b9205['attributes']:_0x204f8c[_0x47cc('0x38')];if(!_0x26f753[_0x47cc('0x35')][_0x47cc('0x3b')](_0x47cc('0x3c'))){_0x3b9205[_0x47cc('0x21')]=qs[_0x47cc('0x21')](_0x26f753['query'][_0x47cc('0x21')]);_0x3b9205[_0x47cc('0x23')]=qs[_0x47cc('0x23')](_0x26f753[_0x47cc('0x35')][_0x47cc('0x23')]);}_0x3b9205['order']=qs[_0x47cc('0x3e')](_0x26f753[_0x47cc('0x35')][_0x47cc('0x3e')]);_0x3b9205['where']=qs[_0x47cc('0x37')](_[_0x47cc('0x3f')](_0x26f753[_0x47cc('0x35')],_0x204f8c[_0x47cc('0x37')]));_0x3b9205[_0x47cc('0x41')][_0x47cc('0x5c')]=_0x4a8d42['id'];if(_0x26f753['query'][_0x47cc('0x40')]){_0x3b9205['where']=_[_0x47cc('0x4d')](_0x3b9205['where'],{'$or':_[_0x47cc('0x32')](_0x3b9205[_0x47cc('0x3a')],function(_0x2e2d7c){var _0x3b445f={};_0x3b445f[_0x2e2d7c]={'$like':'%'+_0x26f753[_0x47cc('0x35')][_0x47cc('0x40')]+'%'};return _0x3b445f;})});}_0x3b9205=_[_0x47cc('0x4d')]({},_0x3b9205,_0x26f753[_0x47cc('0x43')]);return db[_0x47cc('0x5a')][_0x47cc('0x46')](_0x3b9205);}})['then'](function(_0x5be946){if(_0x5be946){return db[_0x47cc('0x5d')]['findAndCountAll']({'where':{'id':_[_0x47cc('0x32')](_0x5be946,_0x47cc('0x5e')),'role':'agent'},'attributes':['id',_0x47cc('0x2f'),_0x47cc('0x5f'),_0x47cc('0x60'),_0x47cc('0x61')]});}})[_0x47cc('0x2a')](function(_0x3e6d2c){if(_0x3e6d2c){return{'count':_0x3e6d2c[_0x47cc('0x22')],'rows':_[_0x47cc('0x32')](_0x3e6d2c[_0x47cc('0x47')],function(_0x3a4cce){return{'membername':_0x3a4cce[_0x47cc('0x2f')],'UserId':_0x3a4cce['id'],'queue_name':_0x13fcda[_0x47cc('0x2f')],'MailQueueId':_0x13fcda['id'],'interface':util[_0x47cc('0x62')](_0x47cc('0x63'),'SIP',_0x3a4cce[_0x47cc('0x2f')]),'penalty':0x0,'paused':_0x3a4cce[_0x47cc('0x5f')],'createdAt':_0x3a4cce['createdAt'],'updatedAt':_0x3a4cce['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5042f1,_0x3b9205))['catch'](handleError(_0x5042f1,null));};exports[_0x47cc('0x64')]=function(_0x3033e1,_0x5eb3a2,_0x2d23c7){var _0x3ccfb8={};var _0x1c7352={};var _0xaf09cc;var _0x11d787;return db[_0x47cc('0x33')][_0x47cc('0x59')]({'where':{'id':_0x3033e1[_0x47cc('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5eb3a2,null))[_0x47cc('0x2a')](function(_0x521df8){if(_0x521df8){_0xaf09cc=_0x521df8;_0x1c7352[_0x47cc('0x38')]=_[_0x47cc('0x36')](db[_0x47cc('0x65')][_0x47cc('0x4b')]);_0x1c7352[_0x47cc('0x35')]=_[_0x47cc('0x36')](_0x3033e1[_0x47cc('0x35')]);_0x1c7352[_0x47cc('0x37')]=_[_0x47cc('0x4c')](_0x1c7352['model'],_0x1c7352[_0x47cc('0x35')]);_0x3ccfb8[_0x47cc('0x3a')]=_[_0x47cc('0x4c')](_0x1c7352[_0x47cc('0x38')],qs[_0x47cc('0x39')](_0x3033e1['query'][_0x47cc('0x39')]));_0x3ccfb8['attributes']=_0x3ccfb8[_0x47cc('0x3a')][_0x47cc('0x5b')]?_0x3ccfb8[_0x47cc('0x3a')]:_0x1c7352[_0x47cc('0x38')];_0x3ccfb8['order']=qs[_0x47cc('0x3e')](_0x3033e1[_0x47cc('0x35')][_0x47cc('0x3e')]);_0x3ccfb8[_0x47cc('0x41')]=qs[_0x47cc('0x37')](_['pick'](_0x3033e1['query'],_0x1c7352[_0x47cc('0x37')]));if(_0x3033e1[_0x47cc('0x35')][_0x47cc('0x40')]){_0x3ccfb8[_0x47cc('0x41')]=_[_0x47cc('0x4d')](_0x3ccfb8[_0x47cc('0x41')],{'$or':_[_0x47cc('0x32')](_0x3ccfb8[_0x47cc('0x3a')],function(_0xaa0701){var _0x549b99={};_0x549b99[_0xaa0701]={'$like':'%'+_0x3033e1[_0x47cc('0x35')][_0x47cc('0x40')]+'%'};return _0x549b99;})});}_0x3ccfb8=_[_0x47cc('0x4d')]({},_0x3ccfb8,_0x3033e1[_0x47cc('0x43')]);return _0xaf09cc[_0x47cc('0x64')](_0x3ccfb8);}})[_0x47cc('0x2a')](function(_0x1dbdb4){if(_0x1dbdb4){_0x11d787=_0x1dbdb4['length'];if(!_0x3033e1[_0x47cc('0x35')][_0x47cc('0x3b')](_0x47cc('0x3c'))){_0x3ccfb8[_0x47cc('0x21')]=qs['limit'](_0x3033e1['query'][_0x47cc('0x21')]);_0x3ccfb8[_0x47cc('0x23')]=qs[_0x47cc('0x23')](_0x3033e1[_0x47cc('0x35')]['offset']);}return _0xaf09cc[_0x47cc('0x64')](_0x3ccfb8);}})['then'](function(_0x2a443d){if(_0x2a443d){return _0x2a443d?{'count':_0x11d787,'rows':_0x2a443d}:null;}})[_0x47cc('0x2a')](respondWithResult(_0x5eb3a2,null))[_0x47cc('0x48')](handleError(_0x5eb3a2,null));};exports['addTeams']=function(_0x948c5b,_0x366498,_0x45b8af){var _0x116aac=_0x948c5b[_0x47cc('0x50')][_0x47cc('0x66')];return db[_0x47cc('0x65')][_0x47cc('0x46')]({'where':{'id':_0x116aac},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name','online',_0x47cc('0x67'),_0x47cc('0x68')],'raw':!![]}]})['then'](function(_0x4524a1){if(_0x4524a1){var _0x369f00=_[_0x47cc('0x69')](_0x4524a1,function(_0x3ed36a){var _0x191fc1=_0x3ed36a[_0x47cc('0x2c')]({'plain':!![]});return _0x191fc1[_0x47cc('0x6a')];});return db['MailQueue'][_0x47cc('0x4e')]({'where':{'id':_0x948c5b[_0x47cc('0x4a')]['id']}})[_0x47cc('0x2a')](function(_0x4626a3){return db[_0x47cc('0x6b')][_0x47cc('0x6c')](function(_0x593a93){return _0x4626a3[_0x47cc('0x6d')](_0x116aac,{'transaction':_0x593a93})[_0x47cc('0x2a')](function(){return BPromise['each'](_0x369f00,function(_0xb3b53e){return db[_0x47cc('0x5a')][_0x47cc('0x6e')]({'where':{'UserId':_0xb3b53e['id'],'MailQueueId':_0x948c5b[_0x47cc('0x4a')]['id']},'transaction':_0x593a93});});})[_0x47cc('0x2a')](function(){_0x369f00[_0x47cc('0x6f')](function(_0x14d6ac){socket['emit'](_0x47cc('0x70'),{'UserId':_0x14d6ac['id'],'MailQueueId':_0x4626a3['id']});});});});});}})['then'](respondWithStatusCode(_0x366498,null))[_0x47cc('0x48')](handleError(_0x366498,null));};exports[_0x47cc('0x71')]=function(_0x20bbb6,_0x20332c,_0x18cbaa){return db[_0x47cc('0x65')][_0x47cc('0x46')]({'where':{'id':_0x20bbb6[_0x47cc('0x35')][_0x47cc('0x66')]},'attributes':['id'],'include':[{'model':db[_0x47cc('0x5d')],'as':_0x47cc('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x20332c,null))[_0x47cc('0x2a')](function(_0x46b3d1){var _0x21f341=_[_0x47cc('0x32')](_0x46b3d1,'id');var _0x4a1850=[];var _0x590e28=[];var _0x5a283c=squel[_0x47cc('0x72')]();_0x5a283c[_0x47cc('0x73')]('tq.TeamId')[_0x47cc('0x74')](_0x47cc('0x75'),'tq')[_0x47cc('0x76')]('user_has_teams','ut',_0x47cc('0x77'))[_0x47cc('0x41')]('MailQueueId\x20=\x20?',_0x20bbb6[_0x47cc('0x4a')]['id']);for(var _0x5a91f8=0x0;_0x5a91f8<_0x46b3d1[_0x47cc('0x5b')];_0x5a91f8+=0x1){let _0x4eee17=_0x46b3d1[_0x5a91f8];for(var _0x14fba1=0x0;_0x14fba1<_0x4eee17[_0x47cc('0x6a')]['length'];_0x14fba1+=0x1){let _0x498fcb=_0x4eee17['Agents'][_0x14fba1];var _0x50554d=_0x5a283c['clone']();_0x50554d['where'](_0x47cc('0x78'),_0x498fcb['id']);_0x590e28[_0x47cc('0x79')](db[_0x47cc('0x6b')][_0x47cc('0x35')](_0x50554d[_0x47cc('0x7a')](),{'type':db['sequelize'][_0x47cc('0x7b')][_0x47cc('0x7c')]})[_0x47cc('0x2a')](function(_0x40dcc9){if(_0x40dcc9[_0x47cc('0x5b')]===0x1){return _0x498fcb['id'];}else{var _0x10f76a=_['every'](_[_0x47cc('0x32')](_0x40dcc9,_0x47cc('0x7d')),function(_0x4af1d8){return _[_0x47cc('0x7e')](_0x21f341,_0x4af1d8);});if(_0x10f76a){return _0x498fcb['id'];}}}));}}return BPromise['all'](_0x590e28)[_0x47cc('0x2a')](function(_0x120ae1){_0x4a1850=_(_0x4a1850)[_0x47cc('0x7f')](_0x120ae1)[_0x47cc('0x80')]()[_0x47cc('0x81')]();return db[_0x47cc('0x33')][_0x47cc('0x4e')]({'where':{'id':_0x20bbb6['params']['id']}})[_0x47cc('0x2a')](function(_0x5034cd){return db[_0x47cc('0x6b')][_0x47cc('0x6c')](function(_0xbce338){return _0x5034cd['removeTeams'](_0x20bbb6[_0x47cc('0x35')][_0x47cc('0x66')],{'transaction':_0xbce338})['then'](function(){if(!_[_0x47cc('0x82')](_0x4a1850)){return _0x5034cd['removeAgents'](_0x4a1850,{'transaction':_0xbce338});}})[_0x47cc('0x2a')](function(){_0x4a1850[_0x47cc('0x6f')](function(_0x5a7b9b){socket[_0x47cc('0x83')](_0x47cc('0x84'),{'UserId':_0x5a7b9b,'MailQueueId':_0x5034cd['id']});});});});});});})[_0x47cc('0x2a')](respondWithStatusCode(_0x20332c,null))['catch'](handleError(_0x20332c,null));};exports['addAgents']=function(_0x40706c,_0x5e0cf2,_0x30c92c){return db['MailQueue'][_0x47cc('0x4e')]({'where':{'id':_0x40706c['params']['id']}})[_0x47cc('0x2a')](handleEntityNotFound(_0x5e0cf2,null))[_0x47cc('0x2a')](function(_0x9f05e1){if(_0x9f05e1){return _0x9f05e1[_0x47cc('0x85')](_0x40706c[_0x47cc('0x50')][_0x47cc('0x66')],_[_0x47cc('0x86')](_0x40706c[_0x47cc('0x50')],[_0x47cc('0x66'),'id'])||{})[_0x47cc('0x87')](function(_0x1ec552){for(var _0x48d360=0x0;_0x48d360<_0x40706c['body']['ids'][_0x47cc('0x5b')];_0x48d360+=0x1){socket['emit'](_0x47cc('0x70'),{'UserId':Number(_0x40706c['body']['ids'][_0x48d360]),'MailQueueId':Number(_0x40706c[_0x47cc('0x4a')]['id'])});}return _0x1ec552;});}})[_0x47cc('0x2a')](respondWithResult(_0x5e0cf2,null))['catch'](handleError(_0x5e0cf2,null));};exports[_0x47cc('0x88')]=function(_0x53026e,_0x599f6c,_0x2979ce){return db[_0x47cc('0x33')][_0x47cc('0x4e')]({'where':{'id':_0x53026e[_0x47cc('0x4a')]['id']}})[_0x47cc('0x2a')](handleEntityNotFound(_0x599f6c,null))[_0x47cc('0x2a')](function(_0x2178f7){if(_0x2178f7){return _0x2178f7[_0x47cc('0x88')](_0x53026e[_0x47cc('0x35')][_0x47cc('0x66')])[_0x47cc('0x2a')](function(){if(_[_0x47cc('0x89')](_0x53026e['query'][_0x47cc('0x66')])){for(var _0x3455ef=0x0;_0x3455ef<_0x53026e[_0x47cc('0x35')][_0x47cc('0x66')][_0x47cc('0x5b')];_0x3455ef+=0x1){socket[_0x47cc('0x83')](_0x47cc('0x84'),{'UserId':Number(_0x53026e[_0x47cc('0x35')][_0x47cc('0x66')][_0x3455ef]),'MailQueueId':Number(_0x53026e[_0x47cc('0x4a')]['id'])});}}else{socket[_0x47cc('0x83')](_0x47cc('0x84'),{'UserId':Number(_0x53026e['query'][_0x47cc('0x66')]),'MailQueueId':Number(_0x53026e['params']['id'])});}});}})[_0x47cc('0x2a')](respondWithStatusCode(_0x599f6c,null))[_0x47cc('0x48')](handleError(_0x599f6c,null));};exports[_0x47cc('0x8a')]=function(_0x2c6247,_0x5e145e,_0x58ee40){var _0x1dddb2={};var _0x964827={};var _0x180ba6;var _0x45fe30;return db[_0x47cc('0x33')][_0x47cc('0x59')]({'where':{'id':_0x2c6247['params']['id']}})[_0x47cc('0x2a')](handleEntityNotFound(_0x5e145e,null))[_0x47cc('0x2a')](function(_0x5d94d9){if(_0x5d94d9){_0x180ba6=_0x5d94d9;_0x964827['model']=_['keys'](db['User']['rawAttributes']);_0x964827['query']=_[_0x47cc('0x36')](_0x2c6247[_0x47cc('0x35')]);_0x964827[_0x47cc('0x37')]=_[_0x47cc('0x4c')](_0x964827[_0x47cc('0x38')],_0x964827[_0x47cc('0x35')]);_0x1dddb2[_0x47cc('0x3a')]=_[_0x47cc('0x4c')](_0x964827['model'],qs[_0x47cc('0x39')](_0x2c6247[_0x47cc('0x35')][_0x47cc('0x39')]));_0x1dddb2[_0x47cc('0x3a')]=_0x1dddb2['attributes'][_0x47cc('0x5b')]?_0x1dddb2[_0x47cc('0x3a')]:_0x964827[_0x47cc('0x38')];_0x1dddb2['order']=qs[_0x47cc('0x3e')](_0x2c6247[_0x47cc('0x35')]['sort']);_0x1dddb2[_0x47cc('0x41')]=qs[_0x47cc('0x37')](_[_0x47cc('0x3f')](_0x2c6247[_0x47cc('0x35')],_0x964827[_0x47cc('0x37')]));if(_0x2c6247[_0x47cc('0x35')][_0x47cc('0x40')]){_0x1dddb2[_0x47cc('0x41')]=_[_0x47cc('0x4d')](_0x1dddb2[_0x47cc('0x41')],{'$or':_['map'](_0x1dddb2['attributes'],function(_0x1680a7){var _0x649941={};_0x649941[_0x1680a7]={'$like':'%'+_0x2c6247['query']['filter']+'%'};return _0x649941;})});}_0x1dddb2=_['merge']({},_0x1dddb2,_0x2c6247[_0x47cc('0x43')]);return _0x180ba6[_0x47cc('0x8a')](_0x1dddb2);}})[_0x47cc('0x2a')](function(_0x340018){if(_0x340018){_0x45fe30=_0x340018[_0x47cc('0x5b')];if(!_0x2c6247[_0x47cc('0x35')][_0x47cc('0x3b')](_0x47cc('0x3c'))){_0x1dddb2[_0x47cc('0x21')]=qs[_0x47cc('0x21')](_0x2c6247[_0x47cc('0x35')][_0x47cc('0x21')]);_0x1dddb2[_0x47cc('0x23')]=qs['offset'](_0x2c6247['query'][_0x47cc('0x23')]);}return _0x180ba6['getAgents'](_0x1dddb2);}})[_0x47cc('0x2a')](function(_0x4c7def){if(_0x4c7def){return _0x4c7def?{'count':_0x45fe30,'rows':_0x4c7def}:null;}})[_0x47cc('0x2a')](respondWithResult(_0x5e145e,null))[_0x47cc('0x48')](handleError(_0x5e145e,null));}; \ No newline at end of file diff --git a/server/api/mailQueue/mailQueue.events.js b/server/api/mailQueue/mailQueue.events.js new file mode 100644 index 0000000..0da4b80 --- /dev/null +++ b/server/api/mailQueue/mailQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x666a=['save','update','remove','emit','hook','setMaxListeners'];(function(_0x6767c6,_0xbae02){var _0x30cc74=function(_0x3cc837){while(--_0x3cc837){_0x6767c6['push'](_0x6767c6['shift']());}};_0x30cc74(++_0xbae02);}(_0x666a,0xbf));var _0xa666=function(_0x1ceca7,_0x3f3754){_0x1ceca7=_0x1ceca7-0x0;var _0x1654d9=_0x666a[_0x1ceca7];return _0x1654d9;};'use strict';var EventEmitter=require('events');var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xa666('0x0')](0x0);var events={'afterCreate':_0xa666('0x1'),'afterUpdate':_0xa666('0x2'),'afterDestroy':_0xa666('0x3')};function emitEvent(_0x3141c3){return function(_0x236c57,_0x7d142d,_0x17d7d1){MailQueueEvents['emit'](_0x3141c3+':'+_0x236c57['id'],_0x236c57);MailQueueEvents[_0xa666('0x4')](_0x3141c3,_0x236c57);_0x17d7d1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0xa666('0x5')](e,emitEvent(event));}}module['exports']=MailQueueEvents; \ No newline at end of file diff --git a/server/api/mailQueue/mailQueue.model.js b/server/api/mailQueue/mailQueue.model.js new file mode 100644 index 0000000..4e08208 --- /dev/null +++ b/server/api/mailQueue/mailQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x940f=['request-promise','path','rimraf','./mailQueue.attributes','exports','MailQueue','lodash','../../config/logger','moment','bluebird'];(function(_0x4df06f,_0x468fb0){var _0x2fa5cb=function(_0x222a4f){while(--_0x222a4f){_0x4df06f['push'](_0x4df06f['shift']());}};_0x2fa5cb(++_0x468fb0);}(_0x940f,0x1c8));var _0xf940=function(_0x590feb,_0x3055d9){_0x590feb=_0x590feb-0x0;var _0x3901bb=_0x940f[_0x590feb];return _0x3901bb;};'use strict';var _=require(_0xf940('0x0'));var util=require('util');var logger=require(_0xf940('0x1'))('api');var moment=require(_0xf940('0x2'));var BPromise=require(_0xf940('0x3'));var rp=require(_0xf940('0x4'));var fs=require('fs');var path=require(_0xf940('0x5'));var rimraf=require(_0xf940('0x6'));var config=require('../../config/environment');var attributes=require(_0xf940('0x7'));module[_0xf940('0x8')]=function(_0x2fb0fe,_0x41c12a){return _0x2fb0fe['define'](_0xf940('0x9'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/mailQueue/mailQueue.rpc.js b/server/api/mailQueue/mailQueue.rpc.js new file mode 100644 index 0000000..d7f2f0b --- /dev/null +++ b/server/api/mailQueue/mailQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5e4b=['where','attributes','include','map','model','ShowMailQueue','MailQueue','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','info','catch','GetMailQueue','findAll','options','raw'];(function(_0x3b93ef,_0x5b9eac){var _0x3cef85=function(_0x8bb24f){while(--_0x8bb24f){_0x3b93ef['push'](_0x3b93ef['shift']());}};_0x3cef85(++_0x5b9eac);}(_0x5e4b,0x7a));var _0xb5e4=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x5e4b[_0xd1d19a];return _0x52a79d;};'use strict';var _=require('lodash');var util=require(_0xb5e4('0x0'));var moment=require(_0xb5e4('0x1'));var BPromise=require('bluebird');var rs=require(_0xb5e4('0x2'));var fs=require('fs');var Redis=require(_0xb5e4('0x3'));var db=require(_0xb5e4('0x4'))['db'];var utils=require(_0xb5e4('0x5'));var logger=require(_0xb5e4('0x6'))(_0xb5e4('0x7'));var config=require(_0xb5e4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb5e4('0x9')]['http']({'port':0x232a});config[_0xb5e4('0xa')]=_['defaults'](config['redis'],{'host':_0xb5e4('0xb'),'port':0x18eb});var socket=require(_0xb5e4('0xc'))(new Redis(config[_0xb5e4('0xa')]));require(_0xb5e4('0xd'))[_0xb5e4('0xe')](socket);function respondWithRpcPromise(_0x5c8bc3,_0x35e23e,_0x504118){return new BPromise(function(_0x1ca950,_0xa0902f){return client[_0xb5e4('0xf')](_0x5c8bc3,_0x504118)[_0xb5e4('0x10')](function(_0x47bf1d){logger['info'](_0xb5e4('0x11'),_0x35e23e,_0xb5e4('0x12'));logger[_0xb5e4('0x13')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x35e23e,_0xb5e4('0x12'),JSON[_0xb5e4('0x14')](_0x47bf1d));if(_0x47bf1d['error']){if(_0x47bf1d['error'][_0xb5e4('0x15')]===0x1f4){logger[_0xb5e4('0x16')]('MailQueue,\x20%s,\x20%s',_0x35e23e,_0x47bf1d[_0xb5e4('0x16')][_0xb5e4('0x17')]);return _0xa0902f(_0x47bf1d[_0xb5e4('0x16')][_0xb5e4('0x17')]);}logger[_0xb5e4('0x16')](_0xb5e4('0x11'),_0x35e23e,_0x47bf1d[_0xb5e4('0x16')][_0xb5e4('0x17')]);return _0x1ca950(_0x47bf1d[_0xb5e4('0x16')][_0xb5e4('0x17')]);}else{logger[_0xb5e4('0x18')](_0xb5e4('0x11'),_0x35e23e,_0xb5e4('0x12'));_0x1ca950(_0x47bf1d['result']['message']);}})[_0xb5e4('0x19')](function(_0x2d119a){logger[_0xb5e4('0x16')](_0xb5e4('0x11'),_0x35e23e,_0x2d119a);_0xa0902f(_0x2d119a);});});}exports[_0xb5e4('0x1a')]=function(_0x1bcd21){var _0x147cd3=this;return new Promise(function(_0x2597f9,_0x206be5){return db['MailQueue'][_0xb5e4('0x1b')]({'raw':_0x1bcd21['options']?_0x1bcd21[_0xb5e4('0x1c')][_0xb5e4('0x1d')]===undefined?!![]:![]:!![],'where':_0x1bcd21[_0xb5e4('0x1c')]?_0x1bcd21[_0xb5e4('0x1c')][_0xb5e4('0x1e')]||null:null,'attributes':_0x1bcd21[_0xb5e4('0x1c')]?_0x1bcd21[_0xb5e4('0x1c')][_0xb5e4('0x1f')]||null:null,'limit':_0x1bcd21[_0xb5e4('0x1c')]?_0x1bcd21['options']['limit']||null:null,'include':_0x1bcd21['options']?_0x1bcd21[_0xb5e4('0x1c')][_0xb5e4('0x20')]?_[_0xb5e4('0x21')](_0x1bcd21['options'][_0xb5e4('0x20')],function(_0x2414b4){return{'model':db[_0x2414b4[_0xb5e4('0x22')]],'as':_0x2414b4['as'],'attributes':_0x2414b4[_0xb5e4('0x1f')],'include':_0x2414b4[_0xb5e4('0x20')]?_['map'](_0x2414b4[_0xb5e4('0x20')],function(_0x2311c7){return{'model':db[_0x2311c7['model']],'as':_0x2311c7['as'],'attributes':_0x2311c7[_0xb5e4('0x1f')],'include':_0x2311c7[_0xb5e4('0x20')]?_[_0xb5e4('0x21')](_0x2311c7[_0xb5e4('0x20')],function(_0xffcb75){return{'model':db[_0xffcb75[_0xb5e4('0x22')]],'as':_0xffcb75['as'],'attributes':_0xffcb75[_0xb5e4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb5e4('0x10')](function(_0x2691b3){logger[_0xb5e4('0x18')](_0xb5e4('0x1a'),_0x1bcd21);logger[_0xb5e4('0x13')](_0xb5e4('0x1a'),_0x1bcd21,JSON['stringify'](_0x2691b3));_0x2597f9(_0x2691b3);})[_0xb5e4('0x19')](function(_0x26f6f7){logger[_0xb5e4('0x16')](_0xb5e4('0x1a'),_0x26f6f7['message'],_0x1bcd21);_0x206be5(_0x147cd3[_0xb5e4('0x16')](0x1f4,_0x26f6f7['message']));});});};exports[_0xb5e4('0x23')]=function(_0xdf6a19){var _0x205d02=this;return new Promise(function(_0x8c8835,_0x47106d){return db[_0xb5e4('0x24')][_0xb5e4('0x25')]({'raw':_0xdf6a19['options']?_0xdf6a19[_0xb5e4('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0xdf6a19[_0xb5e4('0x1c')]?_0xdf6a19[_0xb5e4('0x1c')][_0xb5e4('0x1e')]||null:null,'attributes':_0xdf6a19[_0xb5e4('0x1c')]?_0xdf6a19[_0xb5e4('0x1c')][_0xb5e4('0x1f')]||null:null,'include':_0xdf6a19[_0xb5e4('0x1c')]?_0xdf6a19['options']['include']?_[_0xb5e4('0x21')](_0xdf6a19['options']['include'],function(_0x594fd3){return{'model':db[_0x594fd3[_0xb5e4('0x22')]],'as':_0x594fd3['as'],'attributes':_0x594fd3[_0xb5e4('0x1f')],'include':_0x594fd3[_0xb5e4('0x20')]?_['map'](_0x594fd3[_0xb5e4('0x20')],function(_0x5920fb){return{'model':db[_0x5920fb[_0xb5e4('0x22')]],'as':_0x5920fb['as'],'attributes':_0x5920fb[_0xb5e4('0x1f')],'include':_0x5920fb[_0xb5e4('0x20')]?_['map'](_0x5920fb['include'],function(_0x1b7866){return{'model':db[_0x1b7866['model']],'as':_0x1b7866['as'],'attributes':_0x1b7866['attributes']};}):[]};}):[]};}):[]:[]})[_0xb5e4('0x10')](function(_0x1435b3){logger[_0xb5e4('0x18')](_0xb5e4('0x23'),_0xdf6a19);logger['debug'](_0xb5e4('0x23'),_0xdf6a19,JSON['stringify'](_0x1435b3));_0x8c8835(_0x1435b3);})[_0xb5e4('0x19')](function(_0x3e405a){logger['error'](_0xb5e4('0x23'),_0x3e405a[_0xb5e4('0x17')],_0xdf6a19);_0x47106d(_0x205d02[_0xb5e4('0x16')](0x1f4,_0x3e405a['message']));});});}; \ No newline at end of file diff --git a/server/api/mailQueue/mailQueue.socket.js b/server/api/mailQueue/mailQueue.socket.js new file mode 100644 index 0000000..58c836c --- /dev/null +++ b/server/api/mailQueue/mailQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf929=['removeListener','register','length','mailQueue:','./mailQueue.events','remove','update','emit'];(function(_0x5e9e30,_0x55b114){var _0x493af5=function(_0x2eb96b){while(--_0x2eb96b){_0x5e9e30['push'](_0x5e9e30['shift']());}};_0x493af5(++_0x55b114);}(_0xf929,0x164));var _0x9f92=function(_0x23b110,_0x1173ba){_0x23b110=_0x23b110-0x0;var _0x39d441=_0xf929[_0x23b110];return _0x39d441;};'use strict';var MailQueueEvents=require(_0x9f92('0x0'));var events=['save',_0x9f92('0x1'),_0x9f92('0x2')];function createListener(_0x55d60d,_0x451ded){return function(_0x366b0d){_0x451ded[_0x9f92('0x3')](_0x55d60d,_0x366b0d);};}function removeListener(_0x5840d9,_0x3aca39){return function(){MailQueueEvents[_0x9f92('0x4')](_0x5840d9,_0x3aca39);};}exports[_0x9f92('0x5')]=function(_0x2fbe4d){for(var _0x396372=0x0,_0x29a770=events[_0x9f92('0x6')];_0x396372<_0x29a770;_0x396372++){var _0x5f343f=events[_0x396372];var _0x98a2f5=createListener(_0x9f92('0x7')+_0x5f343f,_0x2fbe4d);MailQueueEvents['on'](_0x5f343f,_0x98a2f5);}}; \ No newline at end of file diff --git a/server/api/mailQueueReport/index.js b/server/api/mailQueueReport/index.js new file mode 100644 index 0000000..7afcb21 --- /dev/null +++ b/server/api/mailQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xddeb=['put','/:id','update','delete','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','post','create'];(function(_0x459a97,_0x3d2ece){var _0x56bb18=function(_0x2375d9){while(--_0x2375d9){_0x459a97['push'](_0x459a97['shift']());}};_0x56bb18(++_0x3d2ece);}(_0xddeb,0x10f));var _0xbdde=function(_0x38854e,_0x23cbc9){_0x38854e=_0x38854e-0x0;var _0x3f8415=_0xddeb[_0x38854e];return _0x3f8415;};'use strict';var multer=require('multer');var util=require(_0xbdde('0x0'));var path=require(_0xbdde('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbdde('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xbdde('0x3'));var interaction=require(_0xbdde('0x4'));var config=require(_0xbdde('0x5'));var controller=require('./mailQueueReport.controller');router[_0xbdde('0x6')]('/',auth[_0xbdde('0x7')](),controller[_0xbdde('0x8')]);router[_0xbdde('0x6')](_0xbdde('0x9'),auth[_0xbdde('0x7')](),controller[_0xbdde('0xa')]);router[_0xbdde('0x6')]('/:id',auth[_0xbdde('0x7')](),controller[_0xbdde('0xb')]);router[_0xbdde('0xc')]('/',auth[_0xbdde('0x7')](),controller[_0xbdde('0xd')]);router[_0xbdde('0xe')](_0xbdde('0xf'),auth[_0xbdde('0x7')](),controller[_0xbdde('0x10')]);router[_0xbdde('0x11')]('/:id',auth[_0xbdde('0x7')](),controller['destroy']);module[_0xbdde('0x12')]=router; \ No newline at end of file diff --git a/server/api/mailQueueReport/mailQueueReport.attributes.js b/server/api/mailQueueReport/mailQueueReport.attributes.js new file mode 100644 index 0000000..ea317ed --- /dev/null +++ b/server/api/mailQueueReport/mailQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7f90=['sequelize','STRING','DATE'];(function(_0x434b31,_0x1cc3f3){var _0x49dee7=function(_0x857d0e){while(--_0x857d0e){_0x434b31['push'](_0x434b31['shift']());}};_0x49dee7(++_0x1cc3f3);}(_0x7f90,0x1c5));var _0x07f9=function(_0x53f5bb,_0x5d45ce){_0x53f5bb=_0x53f5bb-0x0;var _0x4de461=_0x7f90[_0x53f5bb];return _0x4de461;};'use strict';var moment=require('moment');var Sequelize=require(_0x07f9('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x07f9('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x07f9('0x2')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x07f9('0x2')]},'reason':{'type':Sequelize[_0x07f9('0x1')]}}; \ No newline at end of file diff --git a/server/api/mailQueueReport/mailQueueReport.controller.js b/server/api/mailQueueReport/mailQueueReport.controller.js new file mode 100644 index 0000000..7077f12 --- /dev/null +++ b/server/api/mailQueueReport/mailQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1a37=['index','map','MailQueueReport','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','describe','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','stack','name','send'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1a37,0xb4));var _0x71a3=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x1a37[_0x53ccf2];return _0x5a2964;};'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));};exports[_0x71a3('0x49')]=function(_0x11391d,_0x3952c0){return db[_0x71a3('0x2c')]['describe']()[_0x71a3('0x24')](respondWithResult(_0x3952c0,null))['catch'](handleError(_0x3952c0,null));}; \ No newline at end of file diff --git a/server/api/mailQueueReport/mailQueueReport.model.js b/server/api/mailQueueReport/mailQueueReport.model.js new file mode 100644 index 0000000..3b6dc20 --- /dev/null +++ b/server/api/mailQueueReport/mailQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x74b0=['path','../../config/environment','exports','define','report_mail_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird'];(function(_0x592e20,_0x51cc4e){var _0x3db268=function(_0x5867d8){while(--_0x5867d8){_0x592e20['push'](_0x592e20['shift']());}};_0x3db268(++_0x51cc4e);}(_0x74b0,0x171));var _0x074b=function(_0x4f7e4b,_0x5bbdb2){_0x4f7e4b=_0x4f7e4b-0x0;var _0x55a507=_0x74b0[_0x4f7e4b];return _0x55a507;};'use strict';var _=require(_0x074b('0x0'));var util=require('util');var logger=require(_0x074b('0x1'))(_0x074b('0x2'));var moment=require(_0x074b('0x3'));var BPromise=require(_0x074b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x074b('0x5'));var rimraf=require('rimraf');var config=require(_0x074b('0x6'));var attributes=require('./mailQueueReport.attributes');module[_0x074b('0x7')]=function(_0x5e0782,_0x3b9b7a){return _0x5e0782[_0x074b('0x8')]('MailQueueReport',attributes,{'tableName':_0x074b('0x9'),'paranoid':![],'indexes':[{'name':_0x074b('0xa'),'fields':[_0x074b('0xa')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/mailQueueReport/mailQueueReport.rpc.js b/server/api/mailQueueReport/mailQueueReport.rpc.js new file mode 100644 index 0000000..2b77bde --- /dev/null +++ b/server/api/mailQueueReport/mailQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x28f474,_0x5535e4){var _0x45fddc=function(_0x9b0cc6){while(--_0x9b0cc6){_0x28f474['push'](_0x28f474['shift']());}};_0x45fddc(++_0x5535e4);}(_0xadb5,0xad));var _0x5adb=function(_0x40dda4,_0x2de28b){_0x40dda4=_0x40dda4-0x0;var _0x58c1cb=_0xadb5[_0x40dda4];return _0x58c1cb;};'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 diff --git a/server/api/mailServerIn/index.js b/server/api/mailServerIn/index.js new file mode 100644 index 0000000..ede39ed --- /dev/null +++ b/server/api/mailServerIn/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x18aa27,_0x21720f){var _0x87bd76=function(_0x4cbc74){while(--_0x4cbc74){_0x18aa27['push'](_0x18aa27['shift']());}};_0x87bd76(++_0x21720f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xcb91[_0x5d2803];return _0xdcad2c;};'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 diff --git a/server/api/mailServerIn/mailServerIn.attributes.js b/server/api/mailServerIn/mailServerIn.attributes.js new file mode 100644 index 0000000..c5bb563 --- /dev/null +++ b/server/api/mailServerIn/mailServerIn.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcc90=['BOOLEAN','INTEGER','INBOX','sequelize','STRING'];(function(_0x5e5882,_0x699de4){var _0x3ea2dc=function(_0x185fb4){while(--_0x185fb4){_0x5e5882['push'](_0x5e5882['shift']());}};_0x3ea2dc(++_0x699de4);}(_0xcc90,0x148));var _0x0cc9=function(_0xcfc19c,_0x1d4e22){_0xcfc19c=_0xcfc19c-0x0;var _0x37cf4a=_0xcc90[_0xcfc19c];return _0x37cf4a;};'use strict';var Sequelize=require(_0x0cc9('0x0'));module['exports']={'description':{'type':Sequelize[_0x0cc9('0x1')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x0cc9('0x2')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x0cc9('0x3')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x0cc9('0x1')],'defaultValue':_0x0cc9('0x4')},'connTimeout':{'type':Sequelize[_0x0cc9('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x0cc9('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x0cc9('0x1')]},'modernAuthentication':{'type':Sequelize[_0x0cc9('0x2')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/mailServerIn/mailServerIn.model.js b/server/api/mailServerIn/mailServerIn.model.js new file mode 100644 index 0000000..7bf3d8a --- /dev/null +++ b/server/api/mailServerIn/mailServerIn.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xeb9e=['exports','define','MailServerIn','mail_servers_in','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes'];(function(_0x41579c,_0x471380){var _0x1c744c=function(_0xf5eb29){while(--_0xf5eb29){_0x41579c['push'](_0x41579c['shift']());}};_0x1c744c(++_0x471380);}(_0xeb9e,0x122));var _0xeeb9=function(_0x45175c,_0x27f36c){_0x45175c=_0x45175c-0x0;var _0x203bd5=_0xeb9e[_0x45175c];return _0x203bd5;};'use strict';var _=require(_0xeeb9('0x0'));var util=require(_0xeeb9('0x1'));var logger=require(_0xeeb9('0x2'))('api');var moment=require(_0xeeb9('0x3'));var BPromise=require('bluebird');var rp=require(_0xeeb9('0x4'));var fs=require('fs');var path=require(_0xeeb9('0x5'));var rimraf=require(_0xeeb9('0x6'));var config=require(_0xeeb9('0x7'));var attributes=require(_0xeeb9('0x8'));module[_0xeeb9('0x9')]=function(_0x4094fd,_0xdda1ba){return _0x4094fd[_0xeeb9('0xa')](_0xeeb9('0xb'),attributes,{'tableName':_0xeeb9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/mailServerIn/mailServerIn.rpc.js b/server/api/mailServerIn/mailServerIn.rpc.js new file mode 100644 index 0000000..732c34d --- /dev/null +++ b/server/api/mailServerIn/mailServerIn.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1bdd=['error','code','message','result','catch','GetMailServerIn','findAll','options','raw','attributes','include','model','map','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1bdd,0x143));var _0xd1bd=function(_0x15193d,_0x13ba1f){_0x15193d=_0x15193d-0x0;var _0xfa2c0=_0x1bdd[_0x15193d];return _0xfa2c0;};'use strict';var _=require(_0xd1bd('0x0'));var util=require(_0xd1bd('0x1'));var moment=require(_0xd1bd('0x2'));var BPromise=require(_0xd1bd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd1bd('0x4'))['db'];var utils=require(_0xd1bd('0x5'));var logger=require(_0xd1bd('0x6'))(_0xd1bd('0x7'));var config=require(_0xd1bd('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd1bd('0x9')][_0xd1bd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35231d,_0x128479,_0x15b6de){return new BPromise(function(_0x45cccc,_0x225277){return client[_0xd1bd('0xb')](_0x35231d,_0x15b6de)[_0xd1bd('0xc')](function(_0x523146){logger[_0xd1bd('0xd')](_0xd1bd('0xe'),_0x128479,_0xd1bd('0xf'));logger[_0xd1bd('0x10')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x128479,_0xd1bd('0xf'),JSON[_0xd1bd('0x11')](_0x523146));if(_0x523146[_0xd1bd('0x12')]){if(_0x523146['error'][_0xd1bd('0x13')]===0x1f4){logger[_0xd1bd('0x12')](_0xd1bd('0xe'),_0x128479,_0x523146['error'][_0xd1bd('0x14')]);return _0x225277(_0x523146[_0xd1bd('0x12')][_0xd1bd('0x14')]);}logger[_0xd1bd('0x12')](_0xd1bd('0xe'),_0x128479,_0x523146[_0xd1bd('0x12')][_0xd1bd('0x14')]);return _0x45cccc(_0x523146[_0xd1bd('0x12')][_0xd1bd('0x14')]);}else{logger[_0xd1bd('0xd')](_0xd1bd('0xe'),_0x128479,'request\x20sent');_0x45cccc(_0x523146[_0xd1bd('0x15')]['message']);}})[_0xd1bd('0x16')](function(_0x321a30){logger[_0xd1bd('0x12')]('MailServerIn,\x20%s,\x20%s',_0x128479,_0x321a30);_0x225277(_0x321a30);});});}exports[_0xd1bd('0x17')]=function(_0x169554){var _0x3cb2d6=this;return new Promise(function(_0x1d54ab,_0x556e46){return db['MailServerIn'][_0xd1bd('0x18')]({'raw':_0x169554[_0xd1bd('0x19')]?_0x169554[_0xd1bd('0x19')][_0xd1bd('0x1a')]===undefined?!![]:![]:!![],'where':_0x169554[_0xd1bd('0x19')]?_0x169554[_0xd1bd('0x19')]['where']||null:null,'attributes':_0x169554[_0xd1bd('0x19')]?_0x169554[_0xd1bd('0x19')][_0xd1bd('0x1b')]||null:null,'limit':_0x169554[_0xd1bd('0x19')]?_0x169554[_0xd1bd('0x19')]['limit']||null:null,'include':_0x169554[_0xd1bd('0x19')]?_0x169554['options'][_0xd1bd('0x1c')]?_['map'](_0x169554[_0xd1bd('0x19')][_0xd1bd('0x1c')],function(_0x491289){return{'model':db[_0x491289[_0xd1bd('0x1d')]],'as':_0x491289['as'],'attributes':_0x491289[_0xd1bd('0x1b')],'include':_0x491289[_0xd1bd('0x1c')]?_[_0xd1bd('0x1e')](_0x491289[_0xd1bd('0x1c')],function(_0x21cc93){return{'model':db[_0x21cc93[_0xd1bd('0x1d')]],'as':_0x21cc93['as'],'attributes':_0x21cc93[_0xd1bd('0x1b')],'include':_0x21cc93[_0xd1bd('0x1c')]?_[_0xd1bd('0x1e')](_0x21cc93['include'],function(_0x551ba4){return{'model':db[_0x551ba4[_0xd1bd('0x1d')]],'as':_0x551ba4['as'],'attributes':_0x551ba4[_0xd1bd('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd1bd('0xc')](function(_0x5c7c7b){logger[_0xd1bd('0xd')](_0xd1bd('0x17'),_0x169554);logger[_0xd1bd('0x10')](_0xd1bd('0x17'),_0x169554,JSON[_0xd1bd('0x11')](_0x5c7c7b));_0x1d54ab(_0x5c7c7b);})[_0xd1bd('0x16')](function(_0x230990){logger['error'](_0xd1bd('0x17'),_0x230990[_0xd1bd('0x14')],_0x169554);_0x556e46(_0x3cb2d6['error'](0x1f4,_0x230990['message']));});});}; \ No newline at end of file diff --git a/server/api/mailServerOut/index.js b/server/api/mailServerOut/index.js new file mode 100644 index 0000000..4365eb4 --- /dev/null +++ b/server/api/mailServerOut/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +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(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'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 diff --git a/server/api/mailServerOut/mailServerOut.attributes.js b/server/api/mailServerOut/mailServerOut.attributes.js new file mode 100644 index 0000000..29a4217 --- /dev/null +++ b/server/api/mailServerOut/mailServerOut.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7334=['sequelize','exports','STRING','BOOLEAN'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0x7334,0x184));var _0x4733=function(_0x244538,_0x33bd34){_0x244538=_0x244538-0x0;var _0xde1f7=_0x7334[_0x244538];return _0xde1f7;};'use strict';var Sequelize=require(_0x4733('0x0'));module[_0x4733('0x1')]={'description':{'type':Sequelize[_0x4733('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x4733('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x4733('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x4733('0x2')]},'authentication':{'type':Sequelize[_0x4733('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x4733('0x3')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/mailServerOut/mailServerOut.controller.js b/server/api/mailServerOut/mailServerOut.controller.js new file mode 100644 index 0000000..bdf5179 --- /dev/null +++ b/server/api/mailServerOut/mailServerOut.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x51d1=['undefined','limit','offset','count','set','Content-Range','reject','save','then','destroy','error','name','send','index','MailServerOut','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','keys','create','body','update','find','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','crypto','desk.js','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'];(function(_0x29a3cf,_0x2d787a){var _0x3dca8f=function(_0x4942d7){while(--_0x4942d7){_0x29a3cf['push'](_0x29a3cf['shift']());}};_0x3dca8f(++_0x2d787a);}(_0x51d1,0x7a));var _0x151d=function(_0xc81f5f,_0x181205){_0xc81f5f=_0xc81f5f-0x0;var _0x4410dc=_0x51d1[_0xc81f5f];return _0x4410dc;};'use strict';var emlformat=require(_0x151d('0x0'));var rimraf=require(_0x151d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x151d('0x2'));var rp=require(_0x151d('0x3'));var moment=require(_0x151d('0x4'));var BPromise=require(_0x151d('0x5'));var Mustache=require('mustache');var util=require(_0x151d('0x6'));var path=require(_0x151d('0x7'));var sox=require('sox');var csv=require(_0x151d('0x8'));var ejs=require(_0x151d('0x9'));var fs=require('fs');var fs_extra=require(_0x151d('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x151d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x151d('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x151d('0xd'));var Redis=require(_0x151d('0xe'));var authService=require(_0x151d('0xf'));var qs=require(_0x151d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x151d('0x11'));var logger=require(_0x151d('0x12'))(_0x151d('0x13'));var utils=require(_0x151d('0x14'));var config=require(_0x151d('0x15'));var licenseUtil=require(_0x151d('0x16'));var db=require(_0x151d('0x17'))['db'];function respondWithStatusCode(_0x580f64,_0x197449){_0x197449=_0x197449||0xcc;return function(_0x3cdbe0){if(_0x3cdbe0){return _0x580f64[_0x151d('0x18')](_0x197449);}return _0x580f64[_0x151d('0x19')](_0x197449)[_0x151d('0x1a')]();};}function respondWithResult(_0x54f283,_0x32aea1){_0x32aea1=_0x32aea1||0xc8;return function(_0x59264b){if(_0x59264b){return _0x54f283[_0x151d('0x19')](_0x32aea1)[_0x151d('0x1b')](_0x59264b);}};}function respondWithFilteredResult(_0x152b74,_0x2bfffc){return function(_0x185c1a){if(_0x185c1a){var _0x14bceb=typeof _0x2bfffc['offset']===_0x151d('0x1c')&&typeof _0x2bfffc[_0x151d('0x1d')]===_0x151d('0x1c');var _0x1494c9=_0x185c1a['count'];var _0x49a660=_0x14bceb?0x0:_0x2bfffc[_0x151d('0x1e')];var _0x5d83d1=_0x14bceb?_0x185c1a[_0x151d('0x1f')]:_0x2bfffc['offset']+_0x2bfffc['limit'];var _0x48fd0c;if(_0x5d83d1>=_0x1494c9){_0x5d83d1=_0x1494c9;_0x48fd0c=0xc8;}else{_0x48fd0c=0xce;}_0x152b74[_0x151d('0x19')](_0x48fd0c);return _0x152b74[_0x151d('0x20')](_0x151d('0x21'),_0x49a660+'-'+_0x5d83d1+'/'+_0x1494c9)[_0x151d('0x1b')](_0x185c1a);}return null;};}function patchUpdates(_0xcd6a7c){return function(_0x4e7640){try{jsonpatch['apply'](_0x4e7640,_0xcd6a7c,!![]);}catch(_0x55fed8){return BPromise[_0x151d('0x22')](_0x55fed8);}return _0x4e7640[_0x151d('0x23')]();};}function saveUpdates(_0x5ccf65,_0x2c27d9){return function(_0x327530){if(_0x327530){return _0x327530['update'](_0x5ccf65)[_0x151d('0x24')](function(_0x4ee3e8){return _0x4ee3e8;});}return null;};}function removeEntity(_0x81cd7c,_0x3bb3b1){return function(_0x52d1c1){if(_0x52d1c1){return _0x52d1c1[_0x151d('0x25')]()[_0x151d('0x24')](function(){_0x81cd7c[_0x151d('0x19')](0xcc)[_0x151d('0x1a')]();});}};}function handleEntityNotFound(_0x471e4a,_0x2a6210){return function(_0x117a59){if(!_0x117a59){_0x471e4a['sendStatus'](0x194);}return _0x117a59;};}function handleError(_0x3202da,_0x63e95a){_0x63e95a=_0x63e95a||0x1f4;return function(_0x58f7d6){logger[_0x151d('0x26')](_0x58f7d6['stack']);if(_0x58f7d6[_0x151d('0x27')]){delete _0x58f7d6['name'];}_0x3202da['status'](_0x63e95a)[_0x151d('0x28')](_0x58f7d6);};}exports[_0x151d('0x29')]=function(_0x2d008b,_0x26393c){var _0x792945={},_0xac42a0={},_0x12625d={'count':0x0,'rows':[]};var _0x37d574=_['map'](db[_0x151d('0x2a')][_0x151d('0x2b')],function(_0x3271c4){return{'name':_0x3271c4[_0x151d('0x2c')],'type':_0x3271c4[_0x151d('0x2d')][_0x151d('0x2e')]};});_0xac42a0['model']=_['map'](_0x37d574,_0x151d('0x27'));_0xac42a0[_0x151d('0x2f')]=_['keys'](_0x2d008b[_0x151d('0x2f')]);_0xac42a0[_0x151d('0x30')]=_[_0x151d('0x31')](_0xac42a0[_0x151d('0x32')],_0xac42a0['query']);_0x792945['attributes']=_[_0x151d('0x31')](_0xac42a0[_0x151d('0x32')],qs[_0x151d('0x33')](_0x2d008b[_0x151d('0x2f')][_0x151d('0x33')]));_0x792945[_0x151d('0x34')]=_0x792945[_0x151d('0x34')][_0x151d('0x35')]?_0x792945[_0x151d('0x34')]:_0xac42a0['model'];if(!_0x2d008b[_0x151d('0x2f')][_0x151d('0x36')](_0x151d('0x37'))){_0x792945[_0x151d('0x1d')]=qs['limit'](_0x2d008b['query'][_0x151d('0x1d')]);_0x792945[_0x151d('0x1e')]=qs[_0x151d('0x1e')](_0x2d008b[_0x151d('0x2f')][_0x151d('0x1e')]);}_0x792945[_0x151d('0x38')]=qs['sort'](_0x2d008b[_0x151d('0x2f')]['sort']);_0x792945[_0x151d('0x39')]=qs[_0x151d('0x30')](_[_0x151d('0x3a')](_0x2d008b[_0x151d('0x2f')],_0xac42a0[_0x151d('0x30')]),_0x37d574);if(_0x2d008b[_0x151d('0x2f')]['filter']){_0x792945[_0x151d('0x39')]=_[_0x151d('0x3b')](_0x792945['where'],{'$or':_[_0x151d('0x3c')](_0x37d574,function(_0x204566){if(_0x204566['type']!==_0x151d('0x3d')){var _0x393f9a={};_0x393f9a[_0x204566[_0x151d('0x27')]]={'$like':'%'+_0x2d008b[_0x151d('0x2f')][_0x151d('0x3e')]+'%'};return _0x393f9a;}})});}_0x792945=_[_0x151d('0x3b')]({},_0x792945,_0x2d008b[_0x151d('0x3f')]);var _0x324c87={'where':_0x792945[_0x151d('0x39')]};return db['MailServerOut'][_0x151d('0x1f')](_0x324c87)[_0x151d('0x24')](function(_0x15840a){_0x12625d[_0x151d('0x1f')]=_0x15840a;if(_0x2d008b[_0x151d('0x2f')][_0x151d('0x40')]){_0x792945[_0x151d('0x41')]=[{'all':!![]}];}return db['MailServerOut'][_0x151d('0x42')](_0x792945);})[_0x151d('0x24')](function(_0x2c63c2){_0x12625d[_0x151d('0x43')]=_0x2c63c2;return _0x12625d;})[_0x151d('0x24')](respondWithFilteredResult(_0x26393c,_0x792945))[_0x151d('0x44')](handleError(_0x26393c,null));};exports['show']=function(_0x53f672,_0x50bdcc){var _0x2968ce={'raw':!![],'where':{'id':_0x53f672['params']['id']}},_0x1f9158={};_0x1f9158['model']=_[_0x151d('0x45')](db[_0x151d('0x2a')][_0x151d('0x2b')]);_0x1f9158[_0x151d('0x2f')]=_[_0x151d('0x45')](_0x53f672[_0x151d('0x2f')]);_0x1f9158['filters']=_['intersection'](_0x1f9158[_0x151d('0x32')],_0x1f9158[_0x151d('0x2f')]);_0x2968ce[_0x151d('0x34')]=_[_0x151d('0x31')](_0x1f9158['model'],qs[_0x151d('0x33')](_0x53f672[_0x151d('0x2f')][_0x151d('0x33')]));_0x2968ce[_0x151d('0x34')]=_0x2968ce[_0x151d('0x34')][_0x151d('0x35')]?_0x2968ce[_0x151d('0x34')]:_0x1f9158[_0x151d('0x32')];if(_0x53f672[_0x151d('0x2f')][_0x151d('0x40')]){_0x2968ce[_0x151d('0x41')]=[{'all':!![]}];}_0x2968ce=_['merge']({},_0x2968ce,_0x53f672[_0x151d('0x3f')]);return db['MailServerOut']['find'](_0x2968ce)[_0x151d('0x24')](handleEntityNotFound(_0x50bdcc,null))[_0x151d('0x24')](respondWithResult(_0x50bdcc,null))['catch'](handleError(_0x50bdcc,null));};exports['create']=function(_0x548ec0,_0x25cb88){return db[_0x151d('0x2a')][_0x151d('0x46')](_0x548ec0[_0x151d('0x47')],{})[_0x151d('0x24')](respondWithResult(_0x25cb88,0xc9))['catch'](handleError(_0x25cb88,null));};exports[_0x151d('0x48')]=function(_0x2fb6f8,_0x11c670){if(_0x2fb6f8['body']['id']){delete _0x2fb6f8[_0x151d('0x47')]['id'];}return db[_0x151d('0x2a')][_0x151d('0x49')]({'where':{'id':_0x2fb6f8[_0x151d('0x4a')]['id']}})[_0x151d('0x24')](handleEntityNotFound(_0x11c670,null))['then'](saveUpdates(_0x2fb6f8[_0x151d('0x47')],null))['then'](respondWithResult(_0x11c670,null))[_0x151d('0x44')](handleError(_0x11c670,null));};exports[_0x151d('0x25')]=function(_0x5d2e0f,_0x329787){return db[_0x151d('0x2a')][_0x151d('0x49')]({'where':{'id':_0x5d2e0f[_0x151d('0x4a')]['id']}})[_0x151d('0x24')](handleEntityNotFound(_0x329787,null))[_0x151d('0x24')](removeEntity(_0x329787,null))[_0x151d('0x44')](handleError(_0x329787,null));}; \ No newline at end of file diff --git a/server/api/mailServerOut/mailServerOut.model.js b/server/api/mailServerOut/mailServerOut.model.js new file mode 100644 index 0000000..a817d52 --- /dev/null +++ b/server/api/mailServerOut/mailServerOut.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6fcc=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define','MailServerOut','mail_servers_out'];(function(_0x513231,_0x1359e6){var _0x2e563e=function(_0x33572a){while(--_0x33572a){_0x513231['push'](_0x513231['shift']());}};_0x2e563e(++_0x1359e6);}(_0x6fcc,0x176));var _0xc6fc=function(_0x48360f,_0x4fefcf){_0x48360f=_0x48360f-0x0;var _0x6bd90d=_0x6fcc[_0x48360f];return _0x6bd90d;};'use strict';var _=require(_0xc6fc('0x0'));var util=require('util');var logger=require(_0xc6fc('0x1'))('api');var moment=require(_0xc6fc('0x2'));var BPromise=require(_0xc6fc('0x3'));var rp=require(_0xc6fc('0x4'));var fs=require('fs');var path=require(_0xc6fc('0x5'));var rimraf=require(_0xc6fc('0x6'));var config=require('../../config/environment');var attributes=require('./mailServerOut.attributes');module[_0xc6fc('0x7')]=function(_0x10c08e,_0x4d631f){return _0x10c08e[_0xc6fc('0x8')](_0xc6fc('0x9'),attributes,{'tableName':_0xc6fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/mailServerOut/mailServerOut.rpc.js b/server/api/mailServerOut/mailServerOut.rpc.js new file mode 100644 index 0000000..1ad449d --- /dev/null +++ b/server/api/mailServerOut/mailServerOut.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x4d9255,_0x374413){var _0x19442c=function(_0x10ed9b){while(--_0x10ed9b){_0x4d9255['push'](_0x4d9255['shift']());}};_0x19442c(++_0x374413);}(_0x1261,0x144));var _0x1126=function(_0x310eb9,_0x1aed15){_0x310eb9=_0x310eb9-0x0;var _0x28915c=_0x1261[_0x310eb9];return _0x28915c;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});} \ No newline at end of file diff --git a/server/api/mailSubstatus/index.js b/server/api/mailSubstatus/index.js new file mode 100644 index 0000000..a3be599 --- /dev/null +++ b/server/api/mailSubstatus/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf413=['../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x311be9,_0x12b742){var _0x27f742=function(_0x42282e){while(--_0x42282e){_0x311be9['push'](_0x311be9['shift']());}};_0x27f742(++_0x12b742);}(_0xf413,0x66));var _0x3f41=function(_0x584233,_0x5cf2cf){_0x584233=_0x584233-0x0;var _0x465b30=_0xf413[_0x584233];return _0x465b30;};'use strict';var multer=require(_0x3f41('0x0'));var util=require(_0x3f41('0x1'));var path=require(_0x3f41('0x2'));var timeout=require(_0x3f41('0x3'));var express=require(_0x3f41('0x4'));var router=express[_0x3f41('0x5')]();var fs_extra=require(_0x3f41('0x6'));var auth=require(_0x3f41('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x3f41('0x8'));var controller=require(_0x3f41('0x9'));router['get']('/',auth[_0x3f41('0xa')](),controller[_0x3f41('0xb')]);router[_0x3f41('0xc')](_0x3f41('0xd'),auth['isAuthenticated'](),controller[_0x3f41('0xe')]);router[_0x3f41('0xc')](_0x3f41('0xf'),auth[_0x3f41('0xa')](),controller[_0x3f41('0x10')]);router['post']('/',auth[_0x3f41('0xa')](),controller[_0x3f41('0x11')]);router['put'](_0x3f41('0xf'),auth[_0x3f41('0xa')](),controller[_0x3f41('0x12')]);router[_0x3f41('0x13')](_0x3f41('0xf'),auth[_0x3f41('0xa')](),controller[_0x3f41('0x14')]);module[_0x3f41('0x15')]=router; \ No newline at end of file diff --git a/server/api/mailSubstatus/mailSubstatus.attributes.js b/server/api/mailSubstatus/mailSubstatus.attributes.js new file mode 100644 index 0000000..92721f9 --- /dev/null +++ b/server/api/mailSubstatus/mailSubstatus.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdfa0=['sequelize','STRING','name'];(function(_0x4b3e49,_0x9e566c){var _0x57e339=function(_0x1430e9){while(--_0x1430e9){_0x4b3e49['push'](_0x4b3e49['shift']());}};_0x57e339(++_0x9e566c);}(_0xdfa0,0x69));var _0x0dfa=function(_0x14c868,_0x15b75a){_0x14c868=_0x14c868-0x0;var _0x18e7cd=_0xdfa0[_0x14c868];return _0x18e7cd;};'use strict';var Sequelize=require(_0x0dfa('0x0'));module['exports']={'name':{'type':Sequelize[_0x0dfa('0x1')],'unique':_0x0dfa('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}}; \ No newline at end of file diff --git a/server/api/mailSubstatus/mailSubstatus.controller.js b/server/api/mailSubstatus/mailSubstatus.controller.js new file mode 100644 index 0000000..d1e4c30 --- /dev/null +++ b/server/api/mailSubstatus/mailSubstatus.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0105=['update','then','destroy','error','stack','name','send','index','map','MailSubstatus','rawAttributes','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','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','status','end','offset','undefined','limit','count','Content-Range','json','save'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x0105,0x1dc));var _0x5010=function(_0x5ee973,_0x5bc5c0){_0x5ee973=_0x5ee973-0x0;var _0x311971=_0x0105[_0x5ee973];return _0x311971;};'use strict';var emlformat=require(_0x5010('0x0'));var rimraf=require(_0x5010('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5010('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5010('0x3'));var Mustache=require(_0x5010('0x4'));var util=require(_0x5010('0x5'));var path=require(_0x5010('0x6'));var sox=require(_0x5010('0x7'));var csv=require(_0x5010('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5010('0x9'));var _=require(_0x5010('0xa'));var squel=require(_0x5010('0xb'));var crypto=require(_0x5010('0xc'));var jsforce=require(_0x5010('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x5010('0x8'));var querystring=require(_0x5010('0xe'));var Papa=require(_0x5010('0xf'));var Redis=require(_0x5010('0x10'));var authService=require(_0x5010('0x11'));var qs=require(_0x5010('0x12'));var as=require(_0x5010('0x13'));var hardwareService=require(_0x5010('0x14'));var logger=require(_0x5010('0x15'))(_0x5010('0x16'));var utils=require('../../config/utils');var config=require(_0x5010('0x17'));var licenseUtil=require(_0x5010('0x18'));var db=require(_0x5010('0x19'))['db'];function respondWithStatusCode(_0x2d392c,_0x2be8ad){_0x2be8ad=_0x2be8ad||0xcc;return function(_0x1438b7){if(_0x1438b7){return _0x2d392c['sendStatus'](_0x2be8ad);}return _0x2d392c[_0x5010('0x1a')](_0x2be8ad)[_0x5010('0x1b')]();};}function respondWithResult(_0x2f1d22,_0x59ae74){_0x59ae74=_0x59ae74||0xc8;return function(_0x59a5e5){if(_0x59a5e5){return _0x2f1d22[_0x5010('0x1a')](_0x59ae74)['json'](_0x59a5e5);}};}function respondWithFilteredResult(_0x26b1a0,_0x3216a1){return function(_0x71b4b6){if(_0x71b4b6){var _0x21254=typeof _0x3216a1[_0x5010('0x1c')]===_0x5010('0x1d')&&typeof _0x3216a1[_0x5010('0x1e')]===_0x5010('0x1d');var _0x333f3b=_0x71b4b6[_0x5010('0x1f')];var _0x32bc28=_0x21254?0x0:_0x3216a1[_0x5010('0x1c')];var _0x22c494=_0x21254?_0x71b4b6[_0x5010('0x1f')]:_0x3216a1[_0x5010('0x1c')]+_0x3216a1[_0x5010('0x1e')];var _0x24f16a;if(_0x22c494>=_0x333f3b){_0x22c494=_0x333f3b;_0x24f16a=0xc8;}else{_0x24f16a=0xce;}_0x26b1a0[_0x5010('0x1a')](_0x24f16a);return _0x26b1a0['set'](_0x5010('0x20'),_0x32bc28+'-'+_0x22c494+'/'+_0x333f3b)[_0x5010('0x21')](_0x71b4b6);}return null;};}function patchUpdates(_0x520583){return function(_0x4e4fed){try{jsonpatch['apply'](_0x4e4fed,_0x520583,!![]);}catch(_0x4e5957){return BPromise['reject'](_0x4e5957);}return _0x4e4fed[_0x5010('0x22')]();};}function saveUpdates(_0x4968fe,_0x18fa23){return function(_0x2fe8dc){if(_0x2fe8dc){return _0x2fe8dc[_0x5010('0x23')](_0x4968fe)[_0x5010('0x24')](function(_0x4522d1){return _0x4522d1;});}return null;};}function removeEntity(_0x2cc4cb,_0x2fb790){return function(_0x34cc36){if(_0x34cc36){return _0x34cc36[_0x5010('0x25')]()[_0x5010('0x24')](function(){_0x2cc4cb[_0x5010('0x1a')](0xcc)[_0x5010('0x1b')]();});}};}function handleEntityNotFound(_0x375d26,_0x57a93d){return function(_0x7151a){if(!_0x7151a){_0x375d26['sendStatus'](0x194);}return _0x7151a;};}function handleError(_0x4bbcb0,_0x2ca1c7){_0x2ca1c7=_0x2ca1c7||0x1f4;return function(_0x12e620){logger[_0x5010('0x26')](_0x12e620[_0x5010('0x27')]);if(_0x12e620[_0x5010('0x28')]){delete _0x12e620['name'];}_0x4bbcb0[_0x5010('0x1a')](_0x2ca1c7)[_0x5010('0x29')](_0x12e620);};}exports[_0x5010('0x2a')]=function(_0x14e185,_0x1d6432){var _0x11bc56={},_0x2e73d4={},_0x37f426={'count':0x0,'rows':[]};var _0x2219be=_[_0x5010('0x2b')](db[_0x5010('0x2c')][_0x5010('0x2d')],function(_0x33305e){return{'name':_0x33305e['fieldName'],'type':_0x33305e['type']['key']};});_0x2e73d4[_0x5010('0x2e')]=_[_0x5010('0x2b')](_0x2219be,_0x5010('0x28'));_0x2e73d4[_0x5010('0x2f')]=_[_0x5010('0x30')](_0x14e185[_0x5010('0x2f')]);_0x2e73d4[_0x5010('0x31')]=_['intersection'](_0x2e73d4[_0x5010('0x2e')],_0x2e73d4[_0x5010('0x2f')]);_0x11bc56[_0x5010('0x32')]=_[_0x5010('0x33')](_0x2e73d4[_0x5010('0x2e')],qs[_0x5010('0x34')](_0x14e185[_0x5010('0x2f')]['fields']));_0x11bc56[_0x5010('0x32')]=_0x11bc56[_0x5010('0x32')]['length']?_0x11bc56[_0x5010('0x32')]:_0x2e73d4[_0x5010('0x2e')];if(!_0x14e185[_0x5010('0x2f')][_0x5010('0x35')]('nolimit')){_0x11bc56[_0x5010('0x1e')]=qs['limit'](_0x14e185[_0x5010('0x2f')][_0x5010('0x1e')]);_0x11bc56['offset']=qs[_0x5010('0x1c')](_0x14e185['query'][_0x5010('0x1c')]);}_0x11bc56[_0x5010('0x36')]=qs[_0x5010('0x37')](_0x14e185['query']['sort']);_0x11bc56[_0x5010('0x38')]=qs['filters'](_[_0x5010('0x39')](_0x14e185[_0x5010('0x2f')],_0x2e73d4[_0x5010('0x31')]),_0x2219be);if(_0x14e185[_0x5010('0x2f')][_0x5010('0x3a')]){_0x11bc56[_0x5010('0x38')]=_[_0x5010('0x3b')](_0x11bc56['where'],{'$or':_[_0x5010('0x2b')](_0x2219be,function(_0x25523e){if(_0x25523e[_0x5010('0x3c')]!=='VIRTUAL'){var _0x9c5d80={};_0x9c5d80[_0x25523e[_0x5010('0x28')]]={'$like':'%'+_0x14e185[_0x5010('0x2f')][_0x5010('0x3a')]+'%'};return _0x9c5d80;}})});}_0x11bc56=_[_0x5010('0x3b')]({},_0x11bc56,_0x14e185[_0x5010('0x3d')]);var _0x38639b={'where':_0x11bc56[_0x5010('0x38')]};return db['MailSubstatus'][_0x5010('0x1f')](_0x38639b)[_0x5010('0x24')](function(_0x55785d){_0x37f426[_0x5010('0x1f')]=_0x55785d;if(_0x14e185['query'][_0x5010('0x3e')]){_0x11bc56[_0x5010('0x3f')]=[{'all':!![]}];}return db[_0x5010('0x2c')][_0x5010('0x40')](_0x11bc56);})[_0x5010('0x24')](function(_0x27ef48){_0x37f426[_0x5010('0x41')]=_0x27ef48;return _0x37f426;})[_0x5010('0x24')](respondWithFilteredResult(_0x1d6432,_0x11bc56))[_0x5010('0x42')](handleError(_0x1d6432,null));};exports['show']=function(_0x2b0fe4,_0x27e4ca){var _0x239564={'raw':!![],'where':{'id':_0x2b0fe4[_0x5010('0x43')]['id']}},_0x18a468={};_0x18a468[_0x5010('0x2e')]=_['keys'](db['MailSubstatus']['rawAttributes']);_0x18a468[_0x5010('0x2f')]=_['keys'](_0x2b0fe4[_0x5010('0x2f')]);_0x18a468['filters']=_[_0x5010('0x33')](_0x18a468['model'],_0x18a468[_0x5010('0x2f')]);_0x239564[_0x5010('0x32')]=_[_0x5010('0x33')](_0x18a468[_0x5010('0x2e')],qs[_0x5010('0x34')](_0x2b0fe4[_0x5010('0x2f')][_0x5010('0x34')]));_0x239564[_0x5010('0x32')]=_0x239564['attributes'][_0x5010('0x44')]?_0x239564['attributes']:_0x18a468['model'];if(_0x2b0fe4['query'][_0x5010('0x3e')]){_0x239564[_0x5010('0x3f')]=[{'all':!![]}];}_0x239564=_[_0x5010('0x3b')]({},_0x239564,_0x2b0fe4[_0x5010('0x3d')]);return db[_0x5010('0x2c')][_0x5010('0x45')](_0x239564)[_0x5010('0x24')](handleEntityNotFound(_0x27e4ca,null))[_0x5010('0x24')](respondWithResult(_0x27e4ca,null))[_0x5010('0x42')](handleError(_0x27e4ca,null));};exports[_0x5010('0x46')]=function(_0x66bbbb,_0xbcdb10){return db[_0x5010('0x2c')][_0x5010('0x46')](_0x66bbbb['body'],{})[_0x5010('0x24')](respondWithResult(_0xbcdb10,0xc9))[_0x5010('0x42')](handleError(_0xbcdb10,null));};exports[_0x5010('0x23')]=function(_0x4af82e,_0x2fbed5){if(_0x4af82e[_0x5010('0x47')]['id']){delete _0x4af82e[_0x5010('0x47')]['id'];}return db[_0x5010('0x2c')][_0x5010('0x45')]({'where':{'id':_0x4af82e['params']['id']}})['then'](handleEntityNotFound(_0x2fbed5,null))['then'](saveUpdates(_0x4af82e[_0x5010('0x47')],null))['then'](respondWithResult(_0x2fbed5,null))['catch'](handleError(_0x2fbed5,null));};exports[_0x5010('0x25')]=function(_0x48ce68,_0x4e7c15){return db['MailSubstatus'][_0x5010('0x45')]({'where':{'id':_0x48ce68[_0x5010('0x43')]['id']}})[_0x5010('0x24')](handleEntityNotFound(_0x4e7c15,null))[_0x5010('0x24')](removeEntity(_0x4e7c15,null))[_0x5010('0x42')](handleError(_0x4e7c15,null));};exports['describe']=function(_0x4e17a8,_0x382cbb){return db[_0x5010('0x2c')][_0x5010('0x48')]()[_0x5010('0x24')](respondWithResult(_0x382cbb,null))[_0x5010('0x42')](handleError(_0x382cbb,null));}; \ No newline at end of file diff --git a/server/api/mailSubstatus/mailSubstatus.events.js b/server/api/mailSubstatus/mailSubstatus.events.js new file mode 100644 index 0000000..a380c43 --- /dev/null +++ b/server/api/mailSubstatus/mailSubstatus.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa930=['exports','events','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty','hook'];(function(_0x418fa3,_0x464468){var _0x845083=function(_0x12b8ae){while(--_0x12b8ae){_0x418fa3['push'](_0x418fa3['shift']());}};_0x845083(++_0x464468);}(_0xa930,0xb1));var _0x0a93=function(_0x4f8d05,_0x3c7053){_0x4f8d05=_0x4f8d05-0x0;var _0x2087d9=_0xa930[_0x4f8d05];return _0x2087d9;};'use strict';var EventEmitter=require(_0x0a93('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x0a93('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x0a93('0x2')](0x0);var events={'afterUpdate':_0x0a93('0x3')};function emitEvent(_0x4235a4){return function(_0x170f0a,_0x3c003e,_0x3a1e24){MailSubstatusEvents[_0x0a93('0x4')](_0x4235a4+':'+_0x170f0a['id'],_0x170f0a);MailSubstatusEvents[_0x0a93('0x4')](_0x4235a4,_0x170f0a);_0x3a1e24(null);};}for(var e in events){if(events[_0x0a93('0x5')](e)){var event=events[e];MailSubstatus[_0x0a93('0x6')](e,emitEvent(event));}}module[_0x0a93('0x7')]=MailSubstatusEvents; \ No newline at end of file diff --git a/server/api/mailSubstatus/mailSubstatus.model.js b/server/api/mailSubstatus/mailSubstatus.model.js new file mode 100644 index 0000000..1f8c88f --- /dev/null +++ b/server/api/mailSubstatus/mailSubstatus.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf0ae=['mailSubstatus','_previousDataValues','then','catch','exports','models','define','MailSubstatus','update','name'];(function(_0x3aa0c7,_0x4c6217){var _0x1b9df3=function(_0xc9fcf9){while(--_0xc9fcf9){_0x3aa0c7['push'](_0x3aa0c7['shift']());}};_0x1b9df3(++_0x4c6217);}(_0xf0ae,0x14e));var _0xef0a=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xf0ae[_0x1d24eb];return _0x1dc576;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0xef0a('0x0')]=function(_0xf4c9d2){var _0x4b540d=_0xf4c9d2[_0xef0a('0x1')];return _0xf4c9d2[_0xef0a('0x2')](_0xef0a('0x3'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x204a3b,_0x1e8fdd,_0xc8ed19){return _0x4b540d['Condition'][_0xef0a('0x4')]({'value':_0x204a3b[_0xef0a('0x5')]},{'where':{'field':_0xef0a('0x6'),'value':_0x204a3b[_0xef0a('0x7')]['name']}})[_0xef0a('0x8')](function(){_0xc8ed19();})[_0xef0a('0x9')](function(_0x33abe4){_0xc8ed19(_0x33abe4);});}}});}; \ No newline at end of file diff --git a/server/api/mailSubstatus/mailSubstatus.rpc.js b/server/api/mailSubstatus/mailSubstatus.rpc.js new file mode 100644 index 0000000..22c6bdd --- /dev/null +++ b/server/api/mailSubstatus/mailSubstatus.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0eab=['http','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x16db8b,_0xca7d28){var _0x5ba017=function(_0x35b933){while(--_0x35b933){_0x16db8b['push'](_0x16db8b['shift']());}};_0x5ba017(++_0xca7d28);}(_0x0eab,0x1d4));var _0xb0ea=function(_0x597873,_0x48c75a){_0x597873=_0x597873-0x0;var _0x45582c=_0x0eab[_0x597873];return _0x45582c;};'use strict';var _=require(_0xb0ea('0x0'));var util=require(_0xb0ea('0x1'));var moment=require(_0xb0ea('0x2'));var BPromise=require(_0xb0ea('0x3'));var rs=require(_0xb0ea('0x4'));var fs=require('fs');var Redis=require(_0xb0ea('0x5'));var db=require(_0xb0ea('0x6'))['db'];var utils=require(_0xb0ea('0x7'));var logger=require(_0xb0ea('0x8'))(_0xb0ea('0x9'));var config=require('../../config/environment');var jayson=require(_0xb0ea('0xa'));var client=jayson[_0xb0ea('0xb')][_0xb0ea('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x136b87,_0x1cecac,_0x5d3174){return new BPromise(function(_0x1d045f,_0x4cf153){return client[_0xb0ea('0xd')](_0x136b87,_0x5d3174)['then'](function(_0x5965db){logger[_0xb0ea('0xe')](_0xb0ea('0xf'),_0x1cecac,_0xb0ea('0x10'));logger[_0xb0ea('0x11')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x1cecac,_0xb0ea('0x10'),JSON[_0xb0ea('0x12')](_0x5965db));if(_0x5965db[_0xb0ea('0x13')]){if(_0x5965db[_0xb0ea('0x13')][_0xb0ea('0x14')]===0x1f4){logger[_0xb0ea('0x13')](_0xb0ea('0xf'),_0x1cecac,_0x5965db[_0xb0ea('0x13')][_0xb0ea('0x15')]);return _0x4cf153(_0x5965db[_0xb0ea('0x13')][_0xb0ea('0x15')]);}logger[_0xb0ea('0x13')]('MailSubstatus,\x20%s,\x20%s',_0x1cecac,_0x5965db[_0xb0ea('0x13')][_0xb0ea('0x15')]);return _0x1d045f(_0x5965db[_0xb0ea('0x13')][_0xb0ea('0x15')]);}else{logger[_0xb0ea('0xe')](_0xb0ea('0xf'),_0x1cecac,_0xb0ea('0x10'));_0x1d045f(_0x5965db[_0xb0ea('0x16')]['message']);}})[_0xb0ea('0x17')](function(_0x1deef6){logger[_0xb0ea('0x13')]('MailSubstatus,\x20%s,\x20%s',_0x1cecac,_0x1deef6);_0x4cf153(_0x1deef6);});});} \ No newline at end of file diff --git a/server/api/mailTransferReport/index.js b/server/api/mailTransferReport/index.js new file mode 100644 index 0000000..2154b49 --- /dev/null +++ b/server/api/mailTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xae38=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x138889,_0x447c34){var _0x713093=function(_0x443784){while(--_0x443784){_0x138889['push'](_0x138889['shift']());}};_0x713093(++_0x447c34);}(_0xae38,0x127));var _0x8ae3=function(_0xe49f,_0x588638){_0xe49f=_0xe49f-0x0;var _0x4f549e=_0xae38[_0xe49f];return _0x4f549e;};'use strict';var multer=require(_0x8ae3('0x0'));var util=require(_0x8ae3('0x1'));var path=require(_0x8ae3('0x2'));var timeout=require(_0x8ae3('0x3'));var express=require(_0x8ae3('0x4'));var router=express[_0x8ae3('0x5')]();var fs_extra=require(_0x8ae3('0x6'));var auth=require(_0x8ae3('0x7'));var interaction=require(_0x8ae3('0x8'));var config=require(_0x8ae3('0x9'));var controller=require(_0x8ae3('0xa'));router[_0x8ae3('0xb')]('/',auth[_0x8ae3('0xc')](),controller[_0x8ae3('0xd')]);router['get']('/describe',auth[_0x8ae3('0xc')](),controller['describe']);router[_0x8ae3('0xb')](_0x8ae3('0xe'),auth[_0x8ae3('0xc')](),controller[_0x8ae3('0xf')]);router[_0x8ae3('0x10')]('/',auth[_0x8ae3('0xc')](),controller[_0x8ae3('0x11')]);router[_0x8ae3('0x12')](_0x8ae3('0xe'),auth[_0x8ae3('0xc')](),controller[_0x8ae3('0x13')]);router[_0x8ae3('0x14')](_0x8ae3('0xe'),auth['isAuthenticated'](),controller[_0x8ae3('0x15')]);module[_0x8ae3('0x16')]=router; \ No newline at end of file diff --git a/server/api/mailTransferReport/mailTransferReport.attributes.js b/server/api/mailTransferReport/mailTransferReport.attributes.js new file mode 100644 index 0000000..390ea73 --- /dev/null +++ b/server/api/mailTransferReport/mailTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x5caabb,_0x2b0cc1){var _0x2929d8=function(_0x389698){while(--_0x389698){_0x5caabb['push'](_0x5caabb['shift']());}};_0x2929d8(++_0x2b0cc1);}(_0x9c44,0x178));var _0x49c4=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x9c44[_0x1d9aa0];return _0x226868;};'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 diff --git a/server/api/mailTransferReport/mailTransferReport.controller.js b/server/api/mailTransferReport/mailTransferReport.controller.js new file mode 100644 index 0000000..f09105a --- /dev/null +++ b/server/api/mailTransferReport/mailTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x238b=['body','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','then','destroy','error','stack','name','send','index','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','MailTransferReport','include','findAll','catch','rawAttributes','includeAll','find','create'];(function(_0x1a9ed0,_0x1085fc){var _0x47bbd6=function(_0x27bd1c){while(--_0x27bd1c){_0x1a9ed0['push'](_0x1a9ed0['shift']());}};_0x47bbd6(++_0x1085fc);}(_0x238b,0x170));var _0xb238=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x238b[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb238('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb238('0x1'));var rp=require(_0xb238('0x2'));var moment=require(_0xb238('0x3'));var BPromise=require(_0xb238('0x4'));var Mustache=require('mustache');var util=require(_0xb238('0x5'));var path=require(_0xb238('0x6'));var sox=require(_0xb238('0x7'));var csv=require(_0xb238('0x8'));var ejs=require(_0xb238('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb238('0xa'));var squel=require(_0xb238('0xb'));var crypto=require(_0xb238('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb238('0xd'));var toCsv=require(_0xb238('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb238('0xe'));var authService=require(_0xb238('0xf'));var qs=require(_0xb238('0x10'));var as=require(_0xb238('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb238('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xb238('0x13'));var licenseUtil=require(_0xb238('0x14'));var db=require(_0xb238('0x15'))['db'];function respondWithStatusCode(_0x2a8849,_0x5d0b70){_0x5d0b70=_0x5d0b70||0xcc;return function(_0x345fd0){if(_0x345fd0){return _0x2a8849[_0xb238('0x16')](_0x5d0b70);}return _0x2a8849[_0xb238('0x17')](_0x5d0b70)[_0xb238('0x18')]();};}function respondWithResult(_0x56300e,_0x523944){_0x523944=_0x523944||0xc8;return function(_0x5064e9){if(_0x5064e9){return _0x56300e[_0xb238('0x17')](_0x523944)['json'](_0x5064e9);}};}function respondWithFilteredResult(_0x1b6f55,_0x17482c){return function(_0x12bd5f){if(_0x12bd5f){var _0x2d62d2=typeof _0x17482c[_0xb238('0x19')]===_0xb238('0x1a')&&typeof _0x17482c[_0xb238('0x1b')]===_0xb238('0x1a');var _0x2ccbf4=_0x12bd5f[_0xb238('0x1c')];var _0x17ad30=_0x2d62d2?0x0:_0x17482c[_0xb238('0x19')];var _0x4ed841=_0x2d62d2?_0x12bd5f[_0xb238('0x1c')]:_0x17482c[_0xb238('0x19')]+_0x17482c[_0xb238('0x1b')];var _0x19df43;if(_0x4ed841>=_0x2ccbf4){_0x4ed841=_0x2ccbf4;_0x19df43=0xc8;}else{_0x19df43=0xce;}_0x1b6f55[_0xb238('0x17')](_0x19df43);return _0x1b6f55[_0xb238('0x1d')](_0xb238('0x1e'),_0x17ad30+'-'+_0x4ed841+'/'+_0x2ccbf4)[_0xb238('0x1f')](_0x12bd5f);}return null;};}function patchUpdates(_0x3b8d){return function(_0x192d34){try{jsonpatch['apply'](_0x192d34,_0x3b8d,!![]);}catch(_0x3a1a4a){return BPromise[_0xb238('0x20')](_0x3a1a4a);}return _0x192d34[_0xb238('0x21')]();};}function saveUpdates(_0x3e244a,_0x2219f4){return function(_0x45402c){if(_0x45402c){return _0x45402c['update'](_0x3e244a)[_0xb238('0x22')](function(_0x184458){return _0x184458;});}return null;};}function removeEntity(_0x286bd4,_0x4c404e){return function(_0x7113c1){if(_0x7113c1){return _0x7113c1[_0xb238('0x23')]()[_0xb238('0x22')](function(){_0x286bd4[_0xb238('0x17')](0xcc)[_0xb238('0x18')]();});}};}function handleEntityNotFound(_0x56d561,_0x357ac4){return function(_0x3b8c9c){if(!_0x3b8c9c){_0x56d561[_0xb238('0x16')](0x194);}return _0x3b8c9c;};}function handleError(_0x45b4a7,_0x3aa7e0){_0x3aa7e0=_0x3aa7e0||0x1f4;return function(_0x36de3d){logger[_0xb238('0x24')](_0x36de3d[_0xb238('0x25')]);if(_0x36de3d[_0xb238('0x26')]){delete _0x36de3d[_0xb238('0x26')];}_0x45b4a7[_0xb238('0x17')](_0x3aa7e0)[_0xb238('0x27')](_0x36de3d);};}exports[_0xb238('0x28')]=function(_0x5045e7,_0x294660){var _0x548392={},_0x5f40bc={},_0x105fc0={'count':0x0,'rows':[]};var _0x225853=_['map'](db['MailTransferReport']['rawAttributes'],function(_0x930c0a){return{'name':_0x930c0a['fieldName'],'type':_0x930c0a[_0xb238('0x29')][_0xb238('0x2a')]};});_0x5f40bc[_0xb238('0x2b')]=_['map'](_0x225853,_0xb238('0x26'));_0x5f40bc[_0xb238('0x2c')]=_[_0xb238('0x2d')](_0x5045e7[_0xb238('0x2c')]);_0x5f40bc[_0xb238('0x2e')]=_[_0xb238('0x2f')](_0x5f40bc['model'],_0x5f40bc['query']);_0x548392[_0xb238('0x30')]=_['intersection'](_0x5f40bc[_0xb238('0x2b')],qs[_0xb238('0x31')](_0x5045e7[_0xb238('0x2c')][_0xb238('0x31')]));_0x548392[_0xb238('0x30')]=_0x548392[_0xb238('0x30')][_0xb238('0x32')]?_0x548392[_0xb238('0x30')]:_0x5f40bc['model'];if(!_0x5045e7['query'][_0xb238('0x33')](_0xb238('0x34'))){_0x548392[_0xb238('0x1b')]=qs[_0xb238('0x1b')](_0x5045e7[_0xb238('0x2c')]['limit']);_0x548392[_0xb238('0x19')]=qs[_0xb238('0x19')](_0x5045e7[_0xb238('0x2c')][_0xb238('0x19')]);}_0x548392[_0xb238('0x35')]=qs[_0xb238('0x36')](_0x5045e7[_0xb238('0x2c')][_0xb238('0x36')]);_0x548392[_0xb238('0x37')]=qs[_0xb238('0x2e')](_[_0xb238('0x38')](_0x5045e7[_0xb238('0x2c')],_0x5f40bc['filters']),_0x225853);if(_0x5045e7['query'][_0xb238('0x39')]){_0x548392[_0xb238('0x37')]=_[_0xb238('0x3a')](_0x548392[_0xb238('0x37')],{'$or':_[_0xb238('0x3b')](_0x225853,function(_0x30ce4a){if(_0x30ce4a[_0xb238('0x29')]!==_0xb238('0x3c')){var _0x3e1c05={};_0x3e1c05[_0x30ce4a['name']]={'$like':'%'+_0x5045e7[_0xb238('0x2c')]['filter']+'%'};return _0x3e1c05;}})});}_0x548392=_[_0xb238('0x3a')]({},_0x548392,_0x5045e7[_0xb238('0x3d')]);var _0x2e3a78={'where':_0x548392[_0xb238('0x37')]};return db[_0xb238('0x3e')][_0xb238('0x1c')](_0x2e3a78)[_0xb238('0x22')](function(_0x5aab24){_0x105fc0['count']=_0x5aab24;if(_0x5045e7[_0xb238('0x2c')]['includeAll']){_0x548392[_0xb238('0x3f')]=[{'all':!![]}];}return db[_0xb238('0x3e')][_0xb238('0x40')](_0x548392);})[_0xb238('0x22')](function(_0xc3ac7f){_0x105fc0['rows']=_0xc3ac7f;return _0x105fc0;})[_0xb238('0x22')](respondWithFilteredResult(_0x294660,_0x548392))[_0xb238('0x41')](handleError(_0x294660,null));};exports['show']=function(_0x3f5291,_0x2fecde){var _0x577dd4={'raw':!![],'where':{'id':_0x3f5291['params']['id']}},_0x51d50c={};_0x51d50c[_0xb238('0x2b')]=_[_0xb238('0x2d')](db['MailTransferReport'][_0xb238('0x42')]);_0x51d50c[_0xb238('0x2c')]=_['keys'](_0x3f5291[_0xb238('0x2c')]);_0x51d50c['filters']=_['intersection'](_0x51d50c[_0xb238('0x2b')],_0x51d50c[_0xb238('0x2c')]);_0x577dd4['attributes']=_[_0xb238('0x2f')](_0x51d50c[_0xb238('0x2b')],qs[_0xb238('0x31')](_0x3f5291['query'][_0xb238('0x31')]));_0x577dd4[_0xb238('0x30')]=_0x577dd4[_0xb238('0x30')][_0xb238('0x32')]?_0x577dd4['attributes']:_0x51d50c[_0xb238('0x2b')];if(_0x3f5291[_0xb238('0x2c')][_0xb238('0x43')]){_0x577dd4[_0xb238('0x3f')]=[{'all':!![]}];}_0x577dd4=_['merge']({},_0x577dd4,_0x3f5291[_0xb238('0x3d')]);return db[_0xb238('0x3e')][_0xb238('0x44')](_0x577dd4)[_0xb238('0x22')](handleEntityNotFound(_0x2fecde,null))[_0xb238('0x22')](respondWithResult(_0x2fecde,null))[_0xb238('0x41')](handleError(_0x2fecde,null));};exports[_0xb238('0x45')]=function(_0x2e32b5,_0x366332){return db[_0xb238('0x3e')][_0xb238('0x45')](_0x2e32b5[_0xb238('0x46')],{})[_0xb238('0x22')](respondWithResult(_0x366332,0xc9))[_0xb238('0x41')](handleError(_0x366332,null));};exports['update']=function(_0x240967,_0x515c18){if(_0x240967['body']['id']){delete _0x240967['body']['id'];}return db[_0xb238('0x3e')][_0xb238('0x44')]({'where':{'id':_0x240967[_0xb238('0x47')]['id']}})[_0xb238('0x22')](handleEntityNotFound(_0x515c18,null))['then'](saveUpdates(_0x240967[_0xb238('0x46')],null))[_0xb238('0x22')](respondWithResult(_0x515c18,null))[_0xb238('0x41')](handleError(_0x515c18,null));};exports[_0xb238('0x23')]=function(_0x3b0e61,_0xf06cdd){return db[_0xb238('0x3e')][_0xb238('0x44')]({'where':{'id':_0x3b0e61[_0xb238('0x47')]['id']}})['then'](handleEntityNotFound(_0xf06cdd,null))[_0xb238('0x22')](removeEntity(_0xf06cdd,null))[_0xb238('0x41')](handleError(_0xf06cdd,null));};exports[_0xb238('0x48')]=function(_0x3eb9ed,_0x2beade){return db['MailTransferReport'][_0xb238('0x48')]()[_0xb238('0x22')](respondWithResult(_0x2beade,null))['catch'](handleError(_0x2beade,null));}; \ No newline at end of file diff --git a/server/api/mailTransferReport/mailTransferReport.model.js b/server/api/mailTransferReport/mailTransferReport.model.js new file mode 100644 index 0000000..e6ae281 --- /dev/null +++ b/server/api/mailTransferReport/mailTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x35f9=['rimraf','../../config/environment','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird'];(function(_0x51beba,_0x202d19){var _0x167ee0=function(_0x2d5b21){while(--_0x2d5b21){_0x51beba['push'](_0x51beba['shift']());}};_0x167ee0(++_0x202d19);}(_0x35f9,0x1df));var _0x935f=function(_0x3a8158,_0x58ed48){_0x3a8158=_0x3a8158-0x0;var _0x4021f8=_0x35f9[_0x3a8158];return _0x4021f8;};'use strict';var _=require(_0x935f('0x0'));var util=require(_0x935f('0x1'));var logger=require(_0x935f('0x2'))(_0x935f('0x3'));var moment=require('moment');var BPromise=require(_0x935f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x935f('0x5'));var config=require(_0x935f('0x6'));var attributes=require('./mailTransferReport.attributes');module['exports']=function(_0x287043,_0x4403e1){return _0x287043[_0x935f('0x7')](_0x935f('0x8'),attributes,{'tableName':_0x935f('0x9'),'paranoid':![],'indexes':[{'name':_0x935f('0xa'),'fields':[_0x935f('0xa')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/mailTransferReport/mailTransferReport.rpc.js b/server/api/mailTransferReport/mailTransferReport.rpc.js new file mode 100644 index 0000000..b6913d3 --- /dev/null +++ b/server/api/mailTransferReport/mailTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5e6e=['info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x1a72b8,_0x1e4f4b){var _0x39f72d=function(_0x35aef1){while(--_0x35aef1){_0x1a72b8['push'](_0x1a72b8['shift']());}};_0x39f72d(++_0x1e4f4b);}(_0x5e6e,0x169));var _0xe5e6=function(_0x1903e3,_0xec6383){_0x1903e3=_0x1903e3-0x0;var _0x57cea4=_0x5e6e[_0x1903e3];return _0x57cea4;};'use strict';var _=require(_0xe5e6('0x0'));var util=require(_0xe5e6('0x1'));var moment=require(_0xe5e6('0x2'));var BPromise=require(_0xe5e6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe5e6('0x4'));var db=require(_0xe5e6('0x5'))['db'];var utils=require(_0xe5e6('0x6'));var logger=require('../../config/logger')(_0xe5e6('0x7'));var config=require(_0xe5e6('0x8'));var jayson=require(_0xe5e6('0x9'));var client=jayson[_0xe5e6('0xa')][_0xe5e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b79be,_0x26dc6c,_0x4754c7){return new BPromise(function(_0xc5eba6,_0x149cb4){return client['request'](_0x1b79be,_0x4754c7)[_0xe5e6('0xc')](function(_0x517699){logger[_0xe5e6('0xd')](_0xe5e6('0xe'),_0x26dc6c,_0xe5e6('0xf'));logger[_0xe5e6('0x10')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x26dc6c,_0xe5e6('0xf'),JSON[_0xe5e6('0x11')](_0x517699));if(_0x517699[_0xe5e6('0x12')]){if(_0x517699[_0xe5e6('0x12')][_0xe5e6('0x13')]===0x1f4){logger[_0xe5e6('0x12')](_0xe5e6('0xe'),_0x26dc6c,_0x517699[_0xe5e6('0x12')][_0xe5e6('0x14')]);return _0x149cb4(_0x517699[_0xe5e6('0x12')][_0xe5e6('0x14')]);}logger[_0xe5e6('0x12')](_0xe5e6('0xe'),_0x26dc6c,_0x517699[_0xe5e6('0x12')]['message']);return _0xc5eba6(_0x517699[_0xe5e6('0x12')][_0xe5e6('0x14')]);}else{logger[_0xe5e6('0xd')](_0xe5e6('0xe'),_0x26dc6c,'request\x20sent');_0xc5eba6(_0x517699[_0xe5e6('0x15')][_0xe5e6('0x14')]);}})['catch'](function(_0x56cca6){logger['error'](_0xe5e6('0xe'),_0x26dc6c,_0x56cca6);_0x149cb4(_0x56cca6);});});} \ No newline at end of file diff --git a/server/api/memberReport/index.js b/server/api/memberReport/index.js new file mode 100644 index 0000000..b0b1e9a --- /dev/null +++ b/server/api/memberReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7c3b=['/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','isAuthenticated'];(function(_0x2ee974,_0x1cceb5){var _0x20c5fb=function(_0xc54e84){while(--_0xc54e84){_0x2ee974['push'](_0x2ee974['shift']());}};_0x20c5fb(++_0x1cceb5);}(_0x7c3b,0x9d));var _0xb7c3=function(_0x4d7d77,_0x2c4113){_0x4d7d77=_0x4d7d77-0x0;var _0x13e3b9=_0x7c3b[_0x4d7d77];return _0x13e3b9;};'use strict';var multer=require(_0xb7c3('0x0'));var util=require('util');var path=require(_0xb7c3('0x1'));var timeout=require(_0xb7c3('0x2'));var express=require(_0xb7c3('0x3'));var router=express[_0xb7c3('0x4')]();var fs_extra=require(_0xb7c3('0x5'));var auth=require(_0xb7c3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb7c3('0x7'));var controller=require(_0xb7c3('0x8'));router[_0xb7c3('0x9')]('/',auth[_0xb7c3('0xa')](),controller['index']);router[_0xb7c3('0x9')](_0xb7c3('0xb'),auth[_0xb7c3('0xa')](),controller[_0xb7c3('0xc')]);router[_0xb7c3('0x9')](_0xb7c3('0xd'),auth['isAuthenticated'](),controller[_0xb7c3('0xe')]);router['post']('/',auth[_0xb7c3('0xa')](),controller[_0xb7c3('0xf')]);router[_0xb7c3('0x10')]('/:id',auth[_0xb7c3('0xa')](),controller[_0xb7c3('0x11')]);router[_0xb7c3('0x12')](_0xb7c3('0xd'),auth[_0xb7c3('0xa')](),controller[_0xb7c3('0x13')]);module[_0xb7c3('0x14')]=router; \ No newline at end of file diff --git a/server/api/memberReport/memberReport.attributes.js b/server/api/memberReport/memberReport.attributes.js new file mode 100644 index 0000000..1474f26 --- /dev/null +++ b/server/api/memberReport/memberReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x350f=['exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue','enterAt','diff','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','moment'];(function(_0x34e553,_0x3935e1){var _0x4485b5=function(_0x5ebd36){while(--_0x5ebd36){_0x34e553['push'](_0x34e553['shift']());}};_0x4485b5(++_0x3935e1);}(_0x350f,0xa0));var _0xf350=function(_0x34bc94,_0x74f0fd){_0x34bc94=_0x34bc94-0x0;var _0xee41e7=_0x350f[_0x34bc94];return _0xee41e7;};'use strict';var Sequelize=require(_0xf350('0x0'));var moment=require(_0xf350('0x1'));module[_0xf350('0x2')]={'channel':{'type':Sequelize[_0xf350('0x3')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xf350('0x3')]},'type':{'type':Sequelize[_0xf350('0x3')],'defaultValue':_0xf350('0x4'),'comment':_0xf350('0x5')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xf350('0x6')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x17db12){var _0x1d2a30=moment(_0x17db12);var _0x4a74fa=moment(this[_0xf350('0x7')](_0xf350('0x8')));var _0xd675ec=_0x1d2a30[_0xf350('0x9')](_0x4a74fa,'seconds');this[_0xf350('0xa')](_0xf350('0xb'),_0x17db12);this[_0xf350('0xa')](_0xf350('0xc'),_0xd675ec>=0x0?_0xd675ec:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xf350('0xd')},'data2':{'type':Sequelize[_0xf350('0x3')],'comment':_0xf350('0xe')},'data3':{'type':Sequelize[_0xf350('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xf350('0x3')],'comment':_0xf350('0xf')},'data5':{'type':Sequelize[_0xf350('0x3')],'comment':_0xf350('0x10')},'role':{'type':Sequelize[_0xf350('0x3')]},'internal':{'type':Sequelize[_0xf350('0x11')]},'uniqueid':{'type':Sequelize[_0xf350('0x3')]}}; \ No newline at end of file diff --git a/server/api/memberReport/memberReport.controller.js b/server/api/memberReport/memberReport.controller.js new file mode 100644 index 0000000..1e768f8 --- /dev/null +++ b/server/api/memberReport/memberReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xedd9,0xfc));var _0x9edd=function(_0x47afa7,_0x5ef197){_0x47afa7=_0x47afa7-0x0;var _0x23d021=_0xedd9[_0x47afa7];return _0x23d021;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));}; \ No newline at end of file diff --git a/server/api/memberReport/memberReport.model.js b/server/api/memberReport/memberReport.model.js new file mode 100644 index 0000000..e3ce4df --- /dev/null +++ b/server/api/memberReport/memberReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd011=['report_member','membername','interface','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','define','MemberReport'];(function(_0x3a2ef5,_0x47e4c1){var _0x48d535=function(_0x5e5503){while(--_0x5e5503){_0x3a2ef5['push'](_0x3a2ef5['shift']());}};_0x48d535(++_0x47e4c1);}(_0xd011,0xc6));var _0x1d01=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd011[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1d01('0x0'));var util=require(_0x1d01('0x1'));var logger=require('../../config/logger')(_0x1d01('0x2'));var moment=require(_0x1d01('0x3'));var BPromise=require(_0x1d01('0x4'));var rp=require(_0x1d01('0x5'));var fs=require('fs');var path=require(_0x1d01('0x6'));var rimraf=require(_0x1d01('0x7'));var config=require(_0x1d01('0x8'));var attributes=require(_0x1d01('0x9'));module['exports']=function(_0x4afecd,_0x114552){return _0x4afecd[_0x1d01('0xa')](_0x1d01('0xb'),attributes,{'tableName':_0x1d01('0xc'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0x1d01('0xd'),_0x1d01('0xe')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/memberReport/memberReport.rpc.js b/server/api/memberReport/memberReport.rpc.js new file mode 100644 index 0000000..5b68d02 --- /dev/null +++ b/server/api/memberReport/memberReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x720b=['client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','map','include','model','CreateMemberReport','create','body','update','UpdateMemberReport','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x720b,0x1d8));var _0xb720=function(_0xa39151,_0x2da41d){_0xa39151=_0xa39151-0x0;var _0x294a0c=_0x720b[_0xa39151];return _0x294a0c;};'use strict';var _=require(_0xb720('0x0'));var util=require(_0xb720('0x1'));var moment=require(_0xb720('0x2'));var BPromise=require('bluebird');var rs=require(_0xb720('0x3'));var fs=require('fs');var Redis=require(_0xb720('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb720('0x5'));var logger=require(_0xb720('0x6'))(_0xb720('0x7'));var config=require('../../config/environment');var jayson=require(_0xb720('0x8'));var client=jayson[_0xb720('0x9')][_0xb720('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x19d0ba,_0x2b319a,_0x4c327c){return new BPromise(function(_0x5a97b8,_0x259266){return client[_0xb720('0xb')](_0x19d0ba,_0x4c327c)[_0xb720('0xc')](function(_0x16fbb0){logger[_0xb720('0xd')](_0xb720('0xe'),_0x2b319a,_0xb720('0xf'));logger[_0xb720('0x10')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x2b319a,_0xb720('0xf'),JSON[_0xb720('0x11')](_0x16fbb0));if(_0x16fbb0['error']){if(_0x16fbb0[_0xb720('0x12')]['code']===0x1f4){logger[_0xb720('0x12')]('MemberReport,\x20%s,\x20%s',_0x2b319a,_0x16fbb0[_0xb720('0x12')][_0xb720('0x13')]);return _0x259266(_0x16fbb0[_0xb720('0x12')][_0xb720('0x13')]);}logger[_0xb720('0x12')](_0xb720('0xe'),_0x2b319a,_0x16fbb0[_0xb720('0x12')][_0xb720('0x13')]);return _0x5a97b8(_0x16fbb0['error'][_0xb720('0x13')]);}else{logger[_0xb720('0xd')](_0xb720('0xe'),_0x2b319a,'request\x20sent');_0x5a97b8(_0x16fbb0['result'][_0xb720('0x13')]);}})[_0xb720('0x14')](function(_0x373303){logger['error'](_0xb720('0xe'),_0x2b319a,_0x373303);_0x259266(_0x373303);});});}exports[_0xb720('0x15')]=function(_0x453c43){var _0x2cf456=this;return new Promise(function(_0x395d6a,_0x730e0f){return db[_0xb720('0x16')][_0xb720('0x17')]({'raw':_0x453c43[_0xb720('0x18')]?_0x453c43[_0xb720('0x18')][_0xb720('0x19')]===undefined?!![]:![]:!![],'where':_0x453c43[_0xb720('0x18')]?_0x453c43[_0xb720('0x18')][_0xb720('0x1a')]||null:null,'attributes':_0x453c43[_0xb720('0x18')]?_0x453c43[_0xb720('0x18')][_0xb720('0x1b')]||null:null,'limit':_0x453c43[_0xb720('0x18')]?_0x453c43[_0xb720('0x18')][_0xb720('0x1c')]||null:null,'include':_0x453c43['options']?_0x453c43['options']['include']?_[_0xb720('0x1d')](_0x453c43['options'][_0xb720('0x1e')],function(_0x20bec1){return{'model':db[_0x20bec1[_0xb720('0x1f')]],'as':_0x20bec1['as'],'attributes':_0x20bec1[_0xb720('0x1b')],'include':_0x20bec1[_0xb720('0x1e')]?_[_0xb720('0x1d')](_0x20bec1['include'],function(_0x498860){return{'model':db[_0x498860['model']],'as':_0x498860['as'],'attributes':_0x498860[_0xb720('0x1b')],'include':_0x498860[_0xb720('0x1e')]?_['map'](_0x498860['include'],function(_0x1c3805){return{'model':db[_0x1c3805['model']],'as':_0x1c3805['as'],'attributes':_0x1c3805[_0xb720('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4e436f){logger[_0xb720('0xd')](_0xb720('0x15'),_0x453c43);logger[_0xb720('0x10')](_0xb720('0x15'),_0x453c43,JSON[_0xb720('0x11')](_0x4e436f));_0x395d6a(_0x4e436f);})[_0xb720('0x14')](function(_0x732423){logger[_0xb720('0x12')]('GetMemberReport',_0x732423['message'],_0x453c43);_0x730e0f(_0x2cf456['error'](0x1f4,_0x732423[_0xb720('0x13')]));});});};exports[_0xb720('0x20')]=function(_0x49b6ae){var _0x1f7979=this;return new Promise(function(_0x558bbe,_0x2b6445){return db[_0xb720('0x16')][_0xb720('0x21')](_0x49b6ae[_0xb720('0x22')],{'raw':_0x49b6ae[_0xb720('0x18')]?_0x49b6ae[_0xb720('0x18')]['raw']===undefined?!![]:![]:!![]})[_0xb720('0xc')](function(_0x40752a){logger[_0xb720('0xd')]('CreateMemberReport',_0x49b6ae);logger[_0xb720('0x10')](_0xb720('0x20'),_0x49b6ae,JSON['stringify'](_0x40752a));_0x558bbe(_0x40752a);})['catch'](function(_0x29e540){logger['error'](_0xb720('0x20'),_0x29e540[_0xb720('0x13')],_0x49b6ae);_0x2b6445(_0x1f7979[_0xb720('0x12')](0x1f4,_0x29e540[_0xb720('0x13')]));});});};exports['UpdateMemberReport']=function(_0x591b0e){var _0x259a71=this;return new Promise(function(_0x9d5954,_0x21e561){return db[_0xb720('0x16')][_0xb720('0x23')](_0x591b0e['body'],{'raw':_0x591b0e['options']?_0x591b0e[_0xb720('0x18')][_0xb720('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x591b0e[_0xb720('0x18')]?_0x591b0e[_0xb720('0x18')][_0xb720('0x1a')]||null:null,'attributes':_0x591b0e[_0xb720('0x18')]?_0x591b0e[_0xb720('0x18')][_0xb720('0x1b')]||null:null,'limit':_0x591b0e[_0xb720('0x18')]?_0x591b0e['options']['limit']||null:null})[_0xb720('0xc')](function(_0x221d39){logger[_0xb720('0xd')](_0xb720('0x24'),_0x591b0e);logger[_0xb720('0x10')](_0xb720('0x24'),_0x591b0e,JSON[_0xb720('0x11')](_0x221d39));_0x9d5954(_0x221d39);})[_0xb720('0x14')](function(_0xad5038){logger[_0xb720('0x12')](_0xb720('0x24'),_0xad5038[_0xb720('0x13')],_0x591b0e);_0x21e561(_0x259a71[_0xb720('0x12')](0x1f4,_0xad5038[_0xb720('0x13')]));});});}; \ No newline at end of file diff --git a/server/api/migration/index.js b/server/api/migration/index.js new file mode 100644 index 0000000..7c7bd99 --- /dev/null +++ b/server/api/migration/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x170d=['express','Router','../../components/interaction/service','./migration.controller','get','index','exports','multer','util','path','connect-timeout'];(function(_0x5c9c54,_0x5a5d39){var _0x51da8b=function(_0x153241){while(--_0x153241){_0x5c9c54['push'](_0x5c9c54['shift']());}};_0x51da8b(++_0x5a5d39);}(_0x170d,0x13b));var _0xd170=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x170d[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0xd170('0x0'));var util=require(_0xd170('0x1'));var path=require(_0xd170('0x2'));var timeout=require(_0xd170('0x3'));var express=require(_0xd170('0x4'));var router=express[_0xd170('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd170('0x6'));var config=require('../../config/environment');var controller=require(_0xd170('0x7'));router[_0xd170('0x8')]('/',controller[_0xd170('0x9')]);module[_0xd170('0xa')]=router; \ No newline at end of file diff --git a/server/api/migration/migration.attributes.js b/server/api/migration/migration.attributes.js new file mode 100644 index 0000000..f18f551 --- /dev/null +++ b/server/api/migration/migration.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc760=['version','exports','STRING'];(function(_0x1026d2,_0x42fe66){var _0x4a6773=function(_0x1a295f){while(--_0x1a295f){_0x1026d2['push'](_0x1026d2['shift']());}};_0x4a6773(++_0x42fe66);}(_0xc760,0x7f));var _0x0c76=function(_0x4e4bf8,_0x65dcf3){_0x4e4bf8=_0x4e4bf8-0x0;var _0x39171c=_0xc760[_0x4e4bf8];return _0x39171c;};'use strict';var Sequelize=require('sequelize');module[_0x0c76('0x0')]={'version':{'type':Sequelize[_0x0c76('0x1')],'unique':_0x0c76('0x2')}}; \ No newline at end of file diff --git a/server/api/migration/migration.controller.js b/server/api/migration/migration.controller.js new file mode 100644 index 0000000..3938488 --- /dev/null +++ b/server/api/migration/migration.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x088d=['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','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','order','sort','filters','pick','filter','merge','where','VIRTUAL','Migration','includeAll','findAll','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x25566d,_0x478964){var _0x27f3a8=function(_0x172aa3){while(--_0x172aa3){_0x25566d['push'](_0x25566d['shift']());}};_0x27f3a8(++_0x478964);}(_0x088d,0x7b));var _0xd088=function(_0x3ed888,_0x1e4779){_0x3ed888=_0x3ed888-0x0;var _0x4b1254=_0x088d[_0x3ed888];return _0x4b1254;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd088('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd088('0x1'));var rp=require(_0xd088('0x2'));var moment=require(_0xd088('0x3'));var BPromise=require(_0xd088('0x4'));var Mustache=require(_0xd088('0x5'));var util=require(_0xd088('0x6'));var path=require('path');var sox=require(_0xd088('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd088('0x8'));var _=require(_0xd088('0x9'));var squel=require(_0xd088('0xa'));var crypto=require(_0xd088('0xb'));var jsforce=require(_0xd088('0xc'));var deskjs=require(_0xd088('0xd'));var toCsv=require(_0xd088('0xe'));var querystring=require(_0xd088('0xf'));var Papa=require(_0xd088('0x10'));var Redis=require(_0xd088('0x11'));var authService=require(_0xd088('0x12'));var qs=require(_0xd088('0x13'));var as=require(_0xd088('0x14'));var hardwareService=require(_0xd088('0x15'));var logger=require(_0xd088('0x16'))(_0xd088('0x17'));var utils=require(_0xd088('0x18'));var config=require(_0xd088('0x19'));var licenseUtil=require(_0xd088('0x1a'));var db=require(_0xd088('0x1b'))['db'];function respondWithStatusCode(_0x431e3d,_0x25c84c){_0x25c84c=_0x25c84c||0xcc;return function(_0x4f1b6e){if(_0x4f1b6e){return _0x431e3d[_0xd088('0x1c')](_0x25c84c);}return _0x431e3d[_0xd088('0x1d')](_0x25c84c)[_0xd088('0x1e')]();};}function respondWithResult(_0x5e6b03,_0x52ec3f){_0x52ec3f=_0x52ec3f||0xc8;return function(_0x3a8f09){if(_0x3a8f09){return _0x5e6b03['status'](_0x52ec3f)['json'](_0x3a8f09);}};}function respondWithFilteredResult(_0x2ec961,_0x41c94d){return function(_0x5eaf3e){if(_0x5eaf3e){var _0x456382=typeof _0x41c94d[_0xd088('0x1f')]==='undefined'&&typeof _0x41c94d[_0xd088('0x20')]===_0xd088('0x21');var _0x5cf192=_0x5eaf3e[_0xd088('0x22')];var _0xdfa1ef=_0x456382?0x0:_0x41c94d[_0xd088('0x1f')];var _0x2fcebb=_0x456382?_0x5eaf3e[_0xd088('0x22')]:_0x41c94d[_0xd088('0x1f')]+_0x41c94d[_0xd088('0x20')];var _0xe334cf;if(_0x2fcebb>=_0x5cf192){_0x2fcebb=_0x5cf192;_0xe334cf=0xc8;}else{_0xe334cf=0xce;}_0x2ec961['status'](_0xe334cf);return _0x2ec961[_0xd088('0x23')](_0xd088('0x24'),_0xdfa1ef+'-'+_0x2fcebb+'/'+_0x5cf192)[_0xd088('0x25')](_0x5eaf3e);}return null;};}function patchUpdates(_0x36528d){return function(_0x9a17c4){try{jsonpatch[_0xd088('0x26')](_0x9a17c4,_0x36528d,!![]);}catch(_0x398e12){return BPromise[_0xd088('0x27')](_0x398e12);}return _0x9a17c4[_0xd088('0x28')]();};}function saveUpdates(_0x345581,_0x33edcf){return function(_0x4da08e){if(_0x4da08e){return _0x4da08e['update'](_0x345581)[_0xd088('0x29')](function(_0x45276d){return _0x45276d;});}return null;};}function removeEntity(_0x55aa2c,_0x4be45a){return function(_0x328a17){if(_0x328a17){return _0x328a17[_0xd088('0x2a')]()['then'](function(){_0x55aa2c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x578a6e,_0x3030c0){return function(_0x34b1e4){if(!_0x34b1e4){_0x578a6e['sendStatus'](0x194);}return _0x34b1e4;};}function handleError(_0x10f3cc,_0x163665){_0x163665=_0x163665||0x1f4;return function(_0x67d004){logger[_0xd088('0x2b')](_0x67d004['stack']);if(_0x67d004[_0xd088('0x2c')]){delete _0x67d004['name'];}_0x10f3cc[_0xd088('0x1d')](_0x163665)[_0xd088('0x2d')](_0x67d004);};}exports[_0xd088('0x2e')]=function(_0x591857,_0x910efe){var _0x5b9529={},_0x1afdce={},_0x7e9e44={'count':0x0,'rows':[]};var _0x3feb3e=_['map'](db['Migration'][_0xd088('0x2f')],function(_0xd1b147){return{'name':_0xd1b147[_0xd088('0x30')],'type':_0xd1b147[_0xd088('0x31')][_0xd088('0x32')]};});_0x1afdce[_0xd088('0x33')]=_[_0xd088('0x34')](_0x3feb3e,_0xd088('0x2c'));_0x1afdce[_0xd088('0x35')]=_[_0xd088('0x36')](_0x591857['query']);_0x1afdce['filters']=_[_0xd088('0x37')](_0x1afdce[_0xd088('0x33')],_0x1afdce[_0xd088('0x35')]);_0x5b9529[_0xd088('0x38')]=_[_0xd088('0x37')](_0x1afdce[_0xd088('0x33')],qs[_0xd088('0x39')](_0x591857[_0xd088('0x35')]['fields']));_0x5b9529[_0xd088('0x38')]=_0x5b9529[_0xd088('0x38')][_0xd088('0x3a')]?_0x5b9529['attributes']:_0x1afdce[_0xd088('0x33')];if(!_0x591857[_0xd088('0x35')]['hasOwnProperty']('nolimit')){_0x5b9529[_0xd088('0x20')]=qs[_0xd088('0x20')](_0x591857['query'][_0xd088('0x20')]);_0x5b9529['offset']=qs[_0xd088('0x1f')](_0x591857[_0xd088('0x35')][_0xd088('0x1f')]);}_0x5b9529[_0xd088('0x3b')]=qs[_0xd088('0x3c')](_0x591857[_0xd088('0x35')]['sort']);_0x5b9529['where']=qs[_0xd088('0x3d')](_[_0xd088('0x3e')](_0x591857[_0xd088('0x35')],_0x1afdce[_0xd088('0x3d')]),_0x3feb3e);if(_0x591857[_0xd088('0x35')][_0xd088('0x3f')]){_0x5b9529['where']=_[_0xd088('0x40')](_0x5b9529[_0xd088('0x41')],{'$or':_[_0xd088('0x34')](_0x3feb3e,function(_0x289476){if(_0x289476['type']!==_0xd088('0x42')){var _0x51491f={};_0x51491f[_0x289476['name']]={'$like':'%'+_0x591857[_0xd088('0x35')][_0xd088('0x3f')]+'%'};return _0x51491f;}})});}_0x5b9529=_[_0xd088('0x40')]({},_0x5b9529,_0x591857['options']);var _0x3bcfdb={'where':_0x5b9529[_0xd088('0x41')]};return db[_0xd088('0x43')]['count'](_0x3bcfdb)[_0xd088('0x29')](function(_0x1057fb){_0x7e9e44[_0xd088('0x22')]=_0x1057fb;if(_0x591857[_0xd088('0x35')][_0xd088('0x44')]){_0x5b9529['include']=[{'all':!![]}];}return db[_0xd088('0x43')][_0xd088('0x45')](_0x5b9529);})[_0xd088('0x29')](function(_0x304905){_0x7e9e44['rows']=_0x304905;return _0x7e9e44;})['then'](respondWithFilteredResult(_0x910efe,_0x5b9529))['catch'](handleError(_0x910efe,null));}; \ No newline at end of file diff --git a/server/api/migration/migration.model.js b/server/api/migration/migration.model.js new file mode 100644 index 0000000..a479907 --- /dev/null +++ b/server/api/migration/migration.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xaa21=['migrations','util','bluebird','request-promise','rimraf','../../config/environment','./migration.attributes','exports','define','Migration'];(function(_0x5d816a,_0x48b3f7){var _0x445415=function(_0x394276){while(--_0x394276){_0x5d816a['push'](_0x5d816a['shift']());}};_0x445415(++_0x48b3f7);}(_0xaa21,0x119));var _0x1aa2=function(_0x487524,_0x292ba6){_0x487524=_0x487524-0x0;var _0x3f3543=_0xaa21[_0x487524];return _0x3f3543;};'use strict';var _=require('lodash');var util=require(_0x1aa2('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x1aa2('0x1'));var rp=require(_0x1aa2('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1aa2('0x3'));var config=require(_0x1aa2('0x4'));var attributes=require(_0x1aa2('0x5'));module[_0x1aa2('0x6')]=function(_0x4d1937,_0xdbc990){return _0x4d1937[_0x1aa2('0x7')](_0x1aa2('0x8'),attributes,{'tableName':_0x1aa2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/migration/migration.rpc.js b/server/api/migration/migration.rpc.js new file mode 100644 index 0000000..d451f04 --- /dev/null +++ b/server/api/migration/migration.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd139=['../../config/logger','rpc','../../config/environment','client','http','info','Migration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2f437b,_0x2499b5){var _0x3b53fc=function(_0x5ddf8f){while(--_0x5ddf8f){_0x2f437b['push'](_0x2f437b['shift']());}};_0x3b53fc(++_0x2499b5);}(_0xd139,0x14e));var _0x9d13=function(_0x7b024e,_0x30fc22){_0x7b024e=_0x7b024e-0x0;var _0xd73520=_0xd139[_0x7b024e];return _0xd73520;};'use strict';var _=require(_0x9d13('0x0'));var util=require(_0x9d13('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9d13('0x2'));var fs=require('fs');var Redis=require(_0x9d13('0x3'));var db=require(_0x9d13('0x4'))['db'];var utils=require(_0x9d13('0x5'));var logger=require(_0x9d13('0x6'))(_0x9d13('0x7'));var config=require(_0x9d13('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9d13('0x9')][_0x9d13('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50294b,_0x198d7d,_0x4b3db0){return new BPromise(function(_0x434ef6,_0x524947){return client['request'](_0x50294b,_0x4b3db0)['then'](function(_0x3ccdf9){logger[_0x9d13('0xb')](_0x9d13('0xc'),_0x198d7d,_0x9d13('0xd'));logger[_0x9d13('0xe')]('Migration,\x20%s,\x20%s,\x20%s',_0x198d7d,_0x9d13('0xd'),JSON[_0x9d13('0xf')](_0x3ccdf9));if(_0x3ccdf9[_0x9d13('0x10')]){if(_0x3ccdf9['error']['code']===0x1f4){logger[_0x9d13('0x10')](_0x9d13('0xc'),_0x198d7d,_0x3ccdf9[_0x9d13('0x10')][_0x9d13('0x11')]);return _0x524947(_0x3ccdf9[_0x9d13('0x10')]['message']);}logger['error'](_0x9d13('0xc'),_0x198d7d,_0x3ccdf9[_0x9d13('0x10')][_0x9d13('0x11')]);return _0x434ef6(_0x3ccdf9[_0x9d13('0x10')][_0x9d13('0x11')]);}else{logger[_0x9d13('0xb')](_0x9d13('0xc'),_0x198d7d,'request\x20sent');_0x434ef6(_0x3ccdf9[_0x9d13('0x12')][_0x9d13('0x11')]);}})[_0x9d13('0x13')](function(_0x250234){logger[_0x9d13('0x10')](_0x9d13('0xc'),_0x198d7d,_0x250234);_0x524947(_0x250234);});});} \ No newline at end of file diff --git a/server/api/network/index.js b/server/api/network/index.js new file mode 100644 index 0000000..c6bb18b --- /dev/null +++ b/server/api/network/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6f7c=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./network.controller','get','isAuthenticated','put'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6f7c,0x137));var _0xc6f7=function(_0x46698a,_0x431d21){_0x46698a=_0x46698a-0x0;var _0x420318=_0x6f7c[_0x46698a];return _0x420318;};'use strict';var multer=require(_0xc6f7('0x0'));var util=require(_0xc6f7('0x1'));var path=require(_0xc6f7('0x2'));var timeout=require(_0xc6f7('0x3'));var express=require(_0xc6f7('0x4'));var router=express[_0xc6f7('0x5')]();var fs_extra=require(_0xc6f7('0x6'));var auth=require(_0xc6f7('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xc6f7('0x8'));var controller=require(_0xc6f7('0x9'));router[_0xc6f7('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc6f7('0xa')]('/:id',auth[_0xc6f7('0xb')](),controller['show']);router['post']('/',auth[_0xc6f7('0xb')](),controller['create']);router[_0xc6f7('0xc')](_0xc6f7('0xd'),auth[_0xc6f7('0xb')](),controller[_0xc6f7('0xe')]);router[_0xc6f7('0xf')](_0xc6f7('0xd'),auth[_0xc6f7('0xb')](),controller[_0xc6f7('0x10')]);module[_0xc6f7('0x11')]=router; \ No newline at end of file diff --git a/server/api/network/network.attributes.js b/server/api/network/network.attributes.js new file mode 100644 index 0000000..0579edf --- /dev/null +++ b/server/api/network/network.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc597=['stun','turn','STRING','sequelize','exports','ENUM','externip'];(function(_0x57f7ea,_0x54da6b){var _0x54a7e4=function(_0x2c9d4f){while(--_0x2c9d4f){_0x57f7ea['push'](_0x57f7ea['shift']());}};_0x54a7e4(++_0x54da6b);}(_0xc597,0x1a0));var _0x7c59=function(_0xc4376d,_0x2e6841){_0xc4376d=_0xc4376d-0x0;var _0x291524=_0xc597[_0xc4376d];return _0x291524;};'use strict';var Sequelize=require(_0x7c59('0x0'));module[_0x7c59('0x1')]={'type':{'type':Sequelize[_0x7c59('0x2')]('localnet',_0x7c59('0x3'),_0x7c59('0x4'),_0x7c59('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x7c59('0x6')]},'password':{'type':Sequelize[_0x7c59('0x6')]}}; \ No newline at end of file diff --git a/server/api/network/network.controller.js b/server/api/network/network.controller.js new file mode 100644 index 0000000..0ed13fd --- /dev/null +++ b/server/api/network/network.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x95b0=['update','sendStatus','name','send','map','Network','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','rawAttributes','find','create','body','type','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','Reload','res_stun_monitor.so','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','format','toLowerCase','chan_sip.so','TURN','/etc/asterisk/sip_xcally_%s.conf','destroy','util','ejs','lodash','../../config/logger','api','../../mysqldb','jayson/promise','client','then','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','Network,\x20%s,\x20%s','message','info','result','catch','status','offset','undefined','count','limit','set','Content-Range'];(function(_0x49b339,_0x4055e6){var _0x1ca51f=function(_0xe6353e){while(--_0xe6353e){_0x49b339['push'](_0x49b339['shift']());}};_0x1ca51f(++_0x4055e6);}(_0x95b0,0x171));var _0x095b=function(_0x318504,_0x258421){_0x318504=_0x318504-0x0;var _0x3459ab=_0x95b0[_0x318504];return _0x3459ab;};'use strict';var util=require(_0x095b('0x0'));var path=require('path');var ejs=require(_0x095b('0x1'));var fs=require('fs');var _=require(_0x095b('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0x095b('0x3'))(_0x095b('0x4'));var config=require('../../config/environment');var db=require(_0x095b('0x5'))['db'];var jayson=require(_0x095b('0x6'));var client=jayson[_0x095b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27df9b,_0x27c671,_0x4566e1,_0x5b9a8f){return new Promise(function(_0x42a275,_0xbf12a2){var _0x12765a=_0x5b9a8f||client;return _0x12765a['request'](_0x27df9b,_0x4566e1)[_0x095b('0x8')](function(_0x3f253d){logger['info']('Network,\x20%s,\x20%s',_0x27c671,_0x095b('0x9'));logger[_0x095b('0xa')](_0x095b('0xb'),_0x27c671,'request\x20sent',JSON[_0x095b('0xc')](_0x3f253d));if(_0x3f253d[_0x095b('0xd')]){if(_0x3f253d[_0x095b('0xd')]['code']===0x1f4){logger[_0x095b('0xd')](_0x095b('0xe'),_0x27c671,_0x3f253d[_0x095b('0xd')][_0x095b('0xf')]);return _0xbf12a2(_0x3f253d['error'][_0x095b('0xf')]);}logger[_0x095b('0xd')](_0x095b('0xe'),_0x27c671,_0x3f253d['error'][_0x095b('0xf')]);return _0x42a275(_0x3f253d[_0x095b('0xd')][_0x095b('0xf')]);}else{logger[_0x095b('0x10')](_0x095b('0xe'),_0x27c671,_0x095b('0x9'));_0x42a275(_0x3f253d[_0x095b('0x11')][_0x095b('0xf')]);}})[_0x095b('0x12')](function(_0x59ea6a){logger[_0x095b('0xd')](_0x095b('0xe'),_0x27c671,_0x59ea6a);_0xbf12a2(_0x59ea6a);});});}function respondWithResult(_0x11a36a,_0x404bb8){_0x404bb8=_0x404bb8||0xc8;return function(_0x1aacbd){if(_0x1aacbd){return _0x11a36a[_0x095b('0x13')](_0x404bb8)['json'](_0x1aacbd);}};}function respondWithFilteredResult(_0x36fa83,_0x4636d3){return function(_0x17a366){if(_0x17a366){var _0x284bcd=typeof _0x4636d3[_0x095b('0x14')]===_0x095b('0x15')&&typeof _0x4636d3['limit']==='undefined';var _0x63919a=_0x17a366['count'];var _0x9461d5=_0x284bcd?0x0:_0x4636d3['offset'];var _0x49ea17=_0x284bcd?_0x17a366[_0x095b('0x16')]:_0x4636d3['offset']+_0x4636d3[_0x095b('0x17')];var _0x3dab4e;if(_0x49ea17>=_0x63919a){_0x49ea17=_0x63919a;_0x3dab4e=0xc8;}else{_0x3dab4e=0xce;}_0x36fa83[_0x095b('0x13')](_0x3dab4e);return _0x36fa83[_0x095b('0x18')](_0x095b('0x19'),_0x9461d5+'-'+_0x49ea17+'/'+_0x63919a)['json'](_0x17a366);}return null;};}function saveUpdates(_0x7e204c){return function(_0x26c9bc){if(_0x26c9bc){return _0x26c9bc[_0x095b('0x1a')](_0x7e204c)['then'](function(_0x3f3950){return _0x3f3950;});}return null;};}function removeEntity(_0x207cd1){return function(_0x36f51c){if(_0x36f51c){return _0x36f51c['destroy']()[_0x095b('0x8')](function(){_0x207cd1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x180eb3){return function(_0x2f4429){if(!_0x2f4429){_0x180eb3[_0x095b('0x1b')](0x194);}return _0x2f4429;};}function handleError(_0x152104,_0x485d2d){_0x485d2d=_0x485d2d||0x1f4;return function(_0x409de8){logger[_0x095b('0xd')](_0x409de8['stack']);if(_0x409de8['name']){delete _0x409de8[_0x095b('0x1c')];}_0x152104[_0x095b('0x13')](_0x485d2d)[_0x095b('0x1d')](_0x409de8);};}exports['index']=function(_0x5018b7,_0x2ca5aa){var _0x4745f={},_0x1283c2={},_0xc416f4={'count':0x0,'rows':[]};var _0x55dce1=_[_0x095b('0x1e')](db[_0x095b('0x1f')]['rawAttributes'],function(_0x444a66){return{'name':_0x444a66['fieldName'],'type':_0x444a66['type'][_0x095b('0x20')]};});_0x1283c2[_0x095b('0x21')]=_[_0x095b('0x1e')](_0x55dce1,'name');_0x1283c2[_0x095b('0x22')]=_[_0x095b('0x23')](_0x5018b7[_0x095b('0x22')]);_0x1283c2[_0x095b('0x24')]=_[_0x095b('0x25')](_0x1283c2[_0x095b('0x21')],_0x1283c2[_0x095b('0x22')]);_0x4745f[_0x095b('0x26')]=_[_0x095b('0x25')](_0x1283c2[_0x095b('0x21')],qs[_0x095b('0x27')](_0x5018b7[_0x095b('0x22')][_0x095b('0x27')]));_0x4745f[_0x095b('0x26')]=_0x4745f[_0x095b('0x26')][_0x095b('0x28')]?_0x4745f[_0x095b('0x26')]:_0x1283c2['model'];if(!_0x5018b7[_0x095b('0x22')][_0x095b('0x29')](_0x095b('0x2a'))){_0x4745f['limit']=qs[_0x095b('0x17')](_0x5018b7[_0x095b('0x22')][_0x095b('0x17')]);_0x4745f[_0x095b('0x14')]=qs[_0x095b('0x14')](_0x5018b7[_0x095b('0x22')][_0x095b('0x14')]);}_0x4745f[_0x095b('0x2b')]=qs[_0x095b('0x2c')](_0x5018b7[_0x095b('0x22')][_0x095b('0x2c')]);_0x4745f[_0x095b('0x2d')]=qs[_0x095b('0x24')](_[_0x095b('0x2e')](_0x5018b7[_0x095b('0x22')],_0x1283c2['filters']),_0x55dce1);if(_0x5018b7[_0x095b('0x22')][_0x095b('0x2f')]){_0x4745f[_0x095b('0x2d')]=_['merge'](_0x4745f['where'],{'$or':_[_0x095b('0x1e')](_0x55dce1,function(_0x438530){if(_0x438530['type']!=='VIRTUAL'){var _0x1723a8={};_0x1723a8[_0x438530['name']]={'$like':'%'+_0x5018b7[_0x095b('0x22')][_0x095b('0x2f')]+'%'};return _0x1723a8;}})});}_0x4745f=_[_0x095b('0x30')]({},_0x4745f,_0x5018b7[_0x095b('0x31')]);var _0x31f329={'where':_0x4745f[_0x095b('0x2d')]};return db[_0x095b('0x1f')]['count'](_0x31f329)[_0x095b('0x8')](function(_0x494e83){_0xc416f4[_0x095b('0x16')]=_0x494e83;if(_0x5018b7[_0x095b('0x22')][_0x095b('0x32')]){_0x4745f[_0x095b('0x33')]=[{'all':!![]}];}return db['Network'][_0x095b('0x34')](_0x4745f);})['then'](function(_0x3945c7){_0xc416f4[_0x095b('0x35')]=_0x3945c7;return _0xc416f4;})[_0x095b('0x8')](respondWithFilteredResult(_0x2ca5aa,_0x4745f))[_0x095b('0x12')](handleError(_0x2ca5aa,null));};exports['show']=function(_0x392ad4,_0x477238){var _0x45d363={'raw':!![],'where':{'id':_0x392ad4[_0x095b('0x36')]['id']}},_0x400bb6={};_0x400bb6[_0x095b('0x21')]=_[_0x095b('0x23')](db[_0x095b('0x1f')][_0x095b('0x37')]);_0x400bb6[_0x095b('0x22')]=_[_0x095b('0x23')](_0x392ad4[_0x095b('0x22')]);_0x400bb6[_0x095b('0x24')]=_[_0x095b('0x25')](_0x400bb6[_0x095b('0x21')],_0x400bb6[_0x095b('0x22')]);_0x45d363['attributes']=_['intersection'](_0x400bb6['model'],qs[_0x095b('0x27')](_0x392ad4[_0x095b('0x22')][_0x095b('0x27')]));_0x45d363['attributes']=_0x45d363[_0x095b('0x26')][_0x095b('0x28')]?_0x45d363[_0x095b('0x26')]:_0x400bb6[_0x095b('0x21')];if(_0x392ad4[_0x095b('0x22')][_0x095b('0x32')]){_0x45d363[_0x095b('0x33')]=[{'all':!![]}];}_0x45d363=_['merge']({},_0x45d363,_0x392ad4['options']);return db[_0x095b('0x1f')][_0x095b('0x38')](_0x45d363)[_0x095b('0x8')](handleEntityNotFound(_0x477238,null))[_0x095b('0x8')](respondWithResult(_0x477238,null))['catch'](handleError(_0x477238,null));};exports[_0x095b('0x39')]=function(_0x43b345,_0x15ee34){var _0xa9c7b2;return db[_0x095b('0x1f')]['create'](_0x43b345['body'],{'raw':!![]})['then'](function(_0x51110c){_0xa9c7b2=_0x51110c;return db['Network'][_0x095b('0x34')]({'where':{'type':_0x43b345[_0x095b('0x3a')][_0x095b('0x3b')]},'raw':!![]});})['then'](function(_0x557e7e){if(_0xa9c7b2[_0x095b('0x3b')][_0x095b('0x3c')]()==_0x095b('0x3d')){var _0x285bbb=fs[_0x095b('0x3e')](path[_0x095b('0x3f')](config[_0x095b('0x40')],_0x095b('0x41')),_0x095b('0x42'));var _0x117a25=ejs[_0x095b('0x43')](_0x285bbb,{'networks':_0x557e7e||[]});fs[_0x095b('0x44')]('/etc/asterisk/stun_xcally.conf',_0x117a25);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x39'),{'module':_0x095b('0x46')});}else if(_0xa9c7b2[_0x095b('0x3b')][_0x095b('0x3c')]()=='TURN'){var _0x1cebca=fs[_0x095b('0x3e')](path[_0x095b('0x3f')](config[_0x095b('0x40')],_0x095b('0x47')),_0x095b('0x42'));var _0x2762c7=ejs[_0x095b('0x43')](_0x1cebca,{'networks':_0x557e7e||[]});fs[_0x095b('0x44')](_0x095b('0x48'),_0x2762c7);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x39'),{'module':_0x095b('0x46')});}else{var _0x478130=fs[_0x095b('0x3e')](path[_0x095b('0x3f')](config[_0x095b('0x40')],'server/files/templates/network.ejs'),_0x095b('0x42'));var _0x3621f3=ejs[_0x095b('0x43')](_0x478130,{'networks':_0x557e7e||[]});fs['writeFileSync'](util[_0x095b('0x49')]('/etc/asterisk/sip_xcally_%s.conf',_0x43b345[_0x095b('0x3a')]['type'][_0x095b('0x4a')]()),_0x3621f3);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x39'),{'module':_0x095b('0x4b')});}})[_0x095b('0x8')](function(){return _0xa9c7b2;})['then'](respondWithResult(_0x15ee34,0xc9))[_0x095b('0x12')](handleError(_0x15ee34,null));};exports[_0x095b('0x1a')]=function(_0x29994f,_0x5004a1){var _0x44c4f9;return db[_0x095b('0x1f')][_0x095b('0x38')]({'where':{'id':_0x29994f[_0x095b('0x36')]['id']}})['then'](handleEntityNotFound(_0x5004a1,null))['then'](saveUpdates(_0x29994f[_0x095b('0x3a')],null))[_0x095b('0x8')](function(_0x2c66ef){if(_0x2c66ef){_0x44c4f9=_0x2c66ef;return db[_0x095b('0x1f')][_0x095b('0x34')]({'where':{'type':_0x44c4f9['type']},'raw':!![]});}return null;})[_0x095b('0x8')](function(_0x396880){if(_0x44c4f9[_0x095b('0x3b')][_0x095b('0x3c')]()==_0x095b('0x3d')){var _0x2a825f=fs[_0x095b('0x3e')](path['join'](config[_0x095b('0x40')],_0x095b('0x41')),_0x095b('0x42'));var _0x1e2a57=ejs[_0x095b('0x43')](_0x2a825f,{'networks':_0x396880||[]});fs[_0x095b('0x44')]('/etc/asterisk/stun_xcally.conf',_0x1e2a57);return respondWithRpcPromise('Reload',_0x095b('0x1a'),{'module':_0x095b('0x46')});}else if(_0x44c4f9['type'][_0x095b('0x3c')]()==_0x095b('0x4c')){var _0x4c1aba=fs[_0x095b('0x3e')](path[_0x095b('0x3f')](config[_0x095b('0x40')],'server/files/templates/turn_multiple.ejs'),_0x095b('0x42'));var _0x55a956=ejs['render'](_0x4c1aba,{'networks':_0x396880||[]});fs[_0x095b('0x44')]('/etc/asterisk/turn_xcally.conf',_0x55a956);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x1a'),{'module':_0x095b('0x46')});}else{var _0x1edad1=fs['readFileSync'](path[_0x095b('0x3f')](config[_0x095b('0x40')],'server/files/templates/network.ejs'),_0x095b('0x42'));var _0x16fb1d=ejs[_0x095b('0x43')](_0x1edad1,{'networks':_0x396880||[]});fs['writeFileSync'](util[_0x095b('0x49')](_0x095b('0x4d'),_0x29994f['body'][_0x095b('0x3b')][_0x095b('0x4a')]()),_0x16fb1d);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x1a'),{'module':'chan_sip.so'});}})[_0x095b('0x8')](function(_0x5d94ec){if(_0x5d94ec){return _0x44c4f9;}return null;})[_0x095b('0x8')](respondWithResult(_0x5004a1,null))['catch'](handleError(_0x5004a1,null));};exports[_0x095b('0x4e')]=function(_0x4810fc,_0x276e1c){var _0x272ff3;return db[_0x095b('0x1f')][_0x095b('0x38')]({'where':{'id':_0x4810fc['params']['id']}})['then'](function(_0xaf0beb){_0x272ff3=_0xaf0beb;return _0xaf0beb;})[_0x095b('0x8')](handleEntityNotFound(_0x276e1c,null))[_0x095b('0x8')](removeEntity(_0x276e1c,null))[_0x095b('0x8')](function(){if(_0x272ff3){return db[_0x095b('0x1f')][_0x095b('0x34')]({'where':{'type':_0x272ff3[_0x095b('0x3b')]},'raw':!![]});}})['then'](function(_0x5d6116){if(_0x272ff3[_0x095b('0x3b')]['toUpperCase']()==_0x095b('0x3d')){var _0x5edf86=fs[_0x095b('0x3e')](path[_0x095b('0x3f')](config[_0x095b('0x40')],_0x095b('0x41')),'utf8');var _0x31af04=ejs[_0x095b('0x43')](_0x5edf86,{'networks':_0x5d6116||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x31af04);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x4e'),{'module':_0x095b('0x46')});}else if(_0x272ff3[_0x095b('0x3b')]['toUpperCase']()=='TURN'){var _0x20a932=fs['readFileSync'](path[_0x095b('0x3f')](config[_0x095b('0x40')],_0x095b('0x47')),_0x095b('0x42'));var _0x1ae6b3=ejs[_0x095b('0x43')](_0x20a932,{'networks':_0x5d6116||[]});fs['writeFileSync'](_0x095b('0x48'),_0x1ae6b3);return respondWithRpcPromise(_0x095b('0x45'),'destroy',{'module':'res_stun_monitor.so'});}else{var _0x150848=fs[_0x095b('0x3e')](path[_0x095b('0x3f')](config[_0x095b('0x40')],'server/files/templates/network.ejs'),_0x095b('0x42'));var _0x5ba7ce=ejs['render'](_0x150848,{'networks':_0x5d6116||[]});fs[_0x095b('0x44')](util[_0x095b('0x49')](_0x095b('0x4d'),_0x272ff3['type'][_0x095b('0x4a')]()),_0x5ba7ce);return respondWithRpcPromise(_0x095b('0x45'),_0x095b('0x4e'),{'module':'chan_sip.so'});}})['catch'](handleError(_0x276e1c,null));}; \ No newline at end of file diff --git a/server/api/network/network.model.js b/server/api/network/network.model.js new file mode 100644 index 0000000..9bae747 --- /dev/null +++ b/server/api/network/network.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc6d8=['../../config/logger','moment','request-promise','../../config/environment','./network.attributes','exports','define','Network','lodash'];(function(_0x1a020c,_0x3246f3){var _0x17c650=function(_0xa6cbc8){while(--_0xa6cbc8){_0x1a020c['push'](_0x1a020c['shift']());}};_0x17c650(++_0x3246f3);}(_0xc6d8,0xd7));var _0x8c6d=function(_0x172660,_0x260d9b){_0x172660=_0x172660-0x0;var _0x83204f=_0xc6d8[_0x172660];return _0x83204f;};'use strict';var _=require(_0x8c6d('0x0'));var util=require('util');var logger=require(_0x8c6d('0x1'))('api');var moment=require(_0x8c6d('0x2'));var BPromise=require('bluebird');var rp=require(_0x8c6d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8c6d('0x4'));var attributes=require(_0x8c6d('0x5'));module[_0x8c6d('0x6')]=function(_0x4f5e8f,_0x3c265c){return _0x4f5e8f[_0x8c6d('0x7')](_0x8c6d('0x8'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/network/network.rpc.js b/server/api/network/network.rpc.js new file mode 100644 index 0000000..364e0ae --- /dev/null +++ b/server/api/network/network.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x1fe37d,_0x2fe53b){_0x1fe37d=_0x1fe37d-0x0;var _0x1baa4b=_0x7a54[_0x1fe37d];return _0x1baa4b;};'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 diff --git a/server/api/openchannelAccount/index.js b/server/api/openchannelAccount/index.js new file mode 100644 index 0000000..761d1c4 --- /dev/null +++ b/server/api/openchannelAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcd93=['isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/users','post','/:id/dispositions','addDisposition','addAnswer','/:id/notify','notify','send','put','update','destroy','delete','removeDispositions','removeAnswers','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x4f0ac0,_0x25e418){var _0x2971bb=function(_0x50a31e){while(--_0x50a31e){_0x4f0ac0['push'](_0x4f0ac0['shift']());}};_0x2971bb(++_0x25e418);}(_0xcd93,0x168));var _0x3cd9=function(_0x124714,_0x2a9bed){_0x124714=_0x124714-0x0;var _0x551bd7=_0xcd93[_0x124714];return _0x551bd7;};'use strict';var multer=require('multer');var util=require(_0x3cd9('0x0'));var path=require(_0x3cd9('0x1'));var timeout=require(_0x3cd9('0x2'));var express=require(_0x3cd9('0x3'));var router=express[_0x3cd9('0x4')]();var fs_extra=require(_0x3cd9('0x5'));var auth=require(_0x3cd9('0x6'));var interaction=require(_0x3cd9('0x7'));var config=require(_0x3cd9('0x8'));var controller=require('./openchannelAccount.controller');router[_0x3cd9('0x9')]('/',auth[_0x3cd9('0xa')](),controller[_0x3cd9('0xb')]);router[_0x3cd9('0x9')](_0x3cd9('0xc'),auth[_0x3cd9('0xa')](),controller[_0x3cd9('0xd')]);router[_0x3cd9('0x9')](_0x3cd9('0xe'),auth[_0x3cd9('0xa')](),controller[_0x3cd9('0xf')]);router[_0x3cd9('0x9')]('/:id/dispositions',auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x10')]);router[_0x3cd9('0x9')](_0x3cd9('0x11'),auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x12')]);router[_0x3cd9('0x9')](_0x3cd9('0x13'),auth[_0x3cd9('0xa')](),controller['getApplications']);router[_0x3cd9('0x9')](_0x3cd9('0x14'),auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x15')]);router[_0x3cd9('0x9')](_0x3cd9('0x16'),auth[_0x3cd9('0xa')](),controller['getAgents']);router[_0x3cd9('0x17')]('/',auth[_0x3cd9('0xa')](),controller['create']);router[_0x3cd9('0x17')](_0x3cd9('0x18'),auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x19')]);router[_0x3cd9('0x17')]('/:id/canned_answers',auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x1a')]);router[_0x3cd9('0x17')](_0x3cd9('0x1b'),controller[_0x3cd9('0x1c')]);router['post'](_0x3cd9('0x13'),auth[_0x3cd9('0xa')](),controller['addApplications']);router[_0x3cd9('0x17')](_0x3cd9('0x16'),auth['isAuthenticated'](),controller['addAgents']);router[_0x3cd9('0x17')]('/:id/send',auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x1d')]);router[_0x3cd9('0x1e')](_0x3cd9('0xe'),auth['isAuthenticated'](),controller[_0x3cd9('0x1f')]);router['delete']('/:id',auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x20')]);router[_0x3cd9('0x21')]('/:id/dispositions',auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x22')]);router[_0x3cd9('0x21')](_0x3cd9('0x11'),auth[_0x3cd9('0xa')](),controller[_0x3cd9('0x23')]);router[_0x3cd9('0x21')](_0x3cd9('0x16'),auth[_0x3cd9('0xa')](),controller['removeAgents']);module[_0x3cd9('0x24')]=router; \ No newline at end of file diff --git a/server/api/openchannelAccount/openchannelAccount.attributes.js b/server/api/openchannelAccount/openchannelAccount.attributes.js new file mode 100644 index 0000000..aaade9d --- /dev/null +++ b/server/api/openchannelAccount/openchannelAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7299=['mandatoryDisposition','randomstring','exports','STRING','name','generate','TEXT','Account:\x20{{account.name}}
{{#queue}}Queue:\x20{{queue.name}}
{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId'];(function(_0x51b538,_0x3ec1a6){var _0x3b92b7=function(_0x44dadb){while(--_0x44dadb){_0x51b538['push'](_0x51b538['shift']());}};_0x3b92b7(++_0x3ec1a6);}(_0x7299,0x139));var _0x9729=function(_0x433df9,_0x5808c7){_0x433df9=_0x433df9-0x0;var _0x2574cf=_0x7299[_0x433df9];return _0x2574cf;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x9729('0x0'));module[_0x9729('0x1')]={'name':{'type':Sequelize[_0x9729('0x2')],'unique':_0x9729('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x9729('0x2')]},'token':{'type':Sequelize[_0x9729('0x2')],'defaultValue':function(){return rs[_0x9729('0x4')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x9729('0x5')],'defaultValue':function(){return _0x9729('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9729('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9729('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9729('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9729('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9729('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9729('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x9729('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x9729('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x34aab9){if(!_0x34aab9)this[_0x9729('0xa')](_0x9729('0xb'),null);this[_0x9729('0xa')](_0x9729('0xc'),_0x34aab9);}}}; \ No newline at end of file diff --git a/server/api/openchannelAccount/openchannelAccount.controller.js b/server/api/openchannelAccount/openchannelAccount.controller.js new file mode 100644 index 0000000..608a568 --- /dev/null +++ b/server/api/openchannelAccount/openchannelAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5826=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','Pause','describe','Disposition','getDispositions','findOne','OpenchannelAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','order','removeAnswers','notify','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','CompanyId','ListId','isNil','from','ValidationError','from\x20is\x20mandatory','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','List','Contacts','updatedAt','OpenchannelApplication','Applications','account','list','applications','orderBy','priority','asc','defaults','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','push','close','*,*,*,*','OpenchannelMessage','contact','User','UserId','unshift','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','READ_COMMITTED','bulkCreate','findAndCountAll','stack','finally','getApplications','getInteractions','Owner','fullname','internal','Tag','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','CmList','DESC','out','Messages','dataValues','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','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/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','get','OpenchannelAccounts','destroy','name','send','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','show','params','include','options','find','create','body'];(function(_0x149c7c,_0x6f4ba2){var _0x2814cc=function(_0x5e2333){while(--_0x5e2333){_0x149c7c['push'](_0x149c7c['shift']());}};_0x2814cc(++_0x6f4ba2);}(_0x5826,0x1ea));var _0x6582=function(_0x4bdfbf,_0x32c35b){_0x4bdfbf=_0x4bdfbf-0x0;var _0x4ff968=_0x5826[_0x4bdfbf];return _0x4ff968;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6582('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6582('0x1'));var BPromise=require(_0x6582('0x2'));var Mustache=require(_0x6582('0x3'));var util=require(_0x6582('0x4'));var path=require(_0x6582('0x5'));var sox=require(_0x6582('0x6'));var csv=require(_0x6582('0x7'));var ejs=require(_0x6582('0x8'));var fs=require('fs');var fs_extra=require(_0x6582('0x9'));var _=require(_0x6582('0xa'));var squel=require(_0x6582('0xb'));var crypto=require(_0x6582('0xc'));var jsforce=require(_0x6582('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x6582('0x7'));var querystring=require(_0x6582('0xe'));var Papa=require(_0x6582('0xf'));var Redis=require(_0x6582('0x10'));var authService=require(_0x6582('0x11'));var qs=require(_0x6582('0x12'));var as=require(_0x6582('0x13'));var hardwareService=require(_0x6582('0x14'));var logger=require(_0x6582('0x15'))(_0x6582('0x16'));var utils=require(_0x6582('0x17'));var config=require(_0x6582('0x18'));var licenseUtil=require(_0x6582('0x19'));var db=require(_0x6582('0x1a'))['db'];config[_0x6582('0x1b')]=_['defaults'](config['redis'],{'host':_0x6582('0x1c'),'port':0x18eb});var socket=require(_0x6582('0x1d'))(new Redis(config[_0x6582('0x1b')]));require(_0x6582('0x1e'))['register'](socket);var jayson=require(_0x6582('0x1f'));var client=jayson[_0x6582('0x20')]['http']({'port':0x232c});var client9002=jayson[_0x6582('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d030b,_0x2507db,_0x463128,_0x4c4514){return new BPromise(function(_0x27349e,_0x287bc3){var _0xc3983=_0x4c4514||client;return _0xc3983[_0x6582('0x21')](_0x4d030b,_0x463128)[_0x6582('0x22')](function(_0x48c3d6){logger['info'](_0x6582('0x23'),_0x2507db,_0x6582('0x24'));logger['debug'](_0x6582('0x25'),_0x2507db,_0x6582('0x24'),JSON[_0x6582('0x26')](_0x48c3d6));if(_0x48c3d6[_0x6582('0x27')]){if(_0x48c3d6[_0x6582('0x27')][_0x6582('0x28')]===0x1f4){logger[_0x6582('0x27')](_0x6582('0x23'),_0x2507db,_0x48c3d6['error'][_0x6582('0x29')]);return _0x287bc3(_0x48c3d6[_0x6582('0x27')][_0x6582('0x29')]);}logger[_0x6582('0x27')]('OpenchannelAccount,\x20%s,\x20%s',_0x2507db,_0x48c3d6[_0x6582('0x27')][_0x6582('0x29')]);return _0x27349e(_0x48c3d6[_0x6582('0x27')][_0x6582('0x29')]);}else{logger[_0x6582('0x2a')](_0x6582('0x23'),_0x2507db,'request\x20sent');_0x27349e(_0x48c3d6[_0x6582('0x2b')]['message']);}})[_0x6582('0x2c')](function(_0x335522){logger[_0x6582('0x27')](_0x6582('0x23'),_0x2507db,_0x335522);_0x287bc3(_0x335522);});});}function respondWithStatusCode(_0x18c8fe,_0x10bf92){_0x10bf92=_0x10bf92||0xcc;return function(_0x4c543){if(_0x4c543){return _0x18c8fe[_0x6582('0x2d')](_0x10bf92);}return _0x18c8fe[_0x6582('0x2e')](_0x10bf92)[_0x6582('0x2f')]();};}function respondWithResult(_0x545316,_0x511381){_0x511381=_0x511381||0xc8;return function(_0x15b2b0){if(_0x15b2b0){return _0x545316[_0x6582('0x2e')](_0x511381)['json'](_0x15b2b0);}};}function respondWithFilteredResult(_0x2add50,_0x4fcab1){return function(_0x4f1f1c){if(_0x4f1f1c){var _0x37e996=typeof _0x4fcab1[_0x6582('0x30')]===_0x6582('0x31')&&typeof _0x4fcab1[_0x6582('0x32')]===_0x6582('0x31');var _0xa899b2=_0x4f1f1c['count'];var _0x4dd143=_0x37e996?0x0:_0x4fcab1[_0x6582('0x30')];var _0x54170e=_0x37e996?_0x4f1f1c[_0x6582('0x33')]:_0x4fcab1['offset']+_0x4fcab1[_0x6582('0x32')];var _0x18e84e;if(_0x54170e>=_0xa899b2){_0x54170e=_0xa899b2;_0x18e84e=0xc8;}else{_0x18e84e=0xce;}_0x2add50['status'](_0x18e84e);return _0x2add50[_0x6582('0x34')](_0x6582('0x35'),_0x4dd143+'-'+_0x54170e+'/'+_0xa899b2)[_0x6582('0x36')](_0x4f1f1c);}return null;};}function patchUpdates(_0x1fa3a8){return function(_0x5ce119){try{jsonpatch[_0x6582('0x37')](_0x5ce119,_0x1fa3a8,!![]);}catch(_0x1dbf65){return BPromise['reject'](_0x1dbf65);}return _0x5ce119[_0x6582('0x38')]();};}function saveUpdates(_0x2ed3a3,_0x37aaca){return function(_0x435cf8){if(_0x435cf8){return _0x435cf8['update'](_0x2ed3a3)['then'](function(_0x51d291){return _0x51d291;});}return null;};}function removeEntity(_0x1363bf,_0x559c73){return function(_0x12d566){if(_0x12d566){return _0x12d566['destroy']()[_0x6582('0x22')](function(){var _0xfee013=_0x12d566[_0x6582('0x39')]({'plain':!![]});var _0xc28341=_0x6582('0x3a');return db['UserProfileResource'][_0x6582('0x3b')]({'where':{'type':_0xc28341,'resourceId':_0xfee013['id']}})[_0x6582('0x22')](function(){return _0x12d566;});})[_0x6582('0x22')](function(){_0x1363bf[_0x6582('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41334b,_0x55009c){return function(_0xec6e3f){if(!_0xec6e3f){_0x41334b['sendStatus'](0x194);}return _0xec6e3f;};}function handleError(_0x450760,_0x4f7671){_0x4f7671=_0x4f7671||0x1f4;return function(_0x3d5b00){logger[_0x6582('0x27')](_0x3d5b00['stack']);if(_0x3d5b00[_0x6582('0x3c')]){delete _0x3d5b00['name'];}_0x450760[_0x6582('0x2e')](_0x4f7671)[_0x6582('0x3d')](_0x3d5b00);};}exports['index']=function(_0x53931b,_0x13cb42){var _0x6faeb1={'include':[{'model':db['Pause'],'as':_0x6582('0x3e')}]},_0x26ec8a={},_0x1216ef={'count':0x0,'rows':[]};var _0x1ab40f=_['map'](db[_0x6582('0x3f')][_0x6582('0x40')],function(_0x414ab1){return{'name':_0x414ab1[_0x6582('0x41')],'type':_0x414ab1[_0x6582('0x42')][_0x6582('0x43')]};});_0x26ec8a[_0x6582('0x44')]=_[_0x6582('0x45')](_0x1ab40f,_0x6582('0x3c'));_0x26ec8a[_0x6582('0x46')]=_[_0x6582('0x47')](_0x53931b['query']);_0x26ec8a[_0x6582('0x48')]=_[_0x6582('0x49')](_0x26ec8a['model'],_0x26ec8a[_0x6582('0x46')]);_0x6faeb1[_0x6582('0x4a')]=_[_0x6582('0x49')](_0x26ec8a['model'],qs[_0x6582('0x4b')](_0x53931b[_0x6582('0x46')][_0x6582('0x4b')]));_0x6faeb1[_0x6582('0x4a')]=_0x6faeb1[_0x6582('0x4a')][_0x6582('0x4c')]?_0x6faeb1[_0x6582('0x4a')]:_0x26ec8a[_0x6582('0x44')];if(!_0x53931b['query'][_0x6582('0x4d')](_0x6582('0x4e'))){_0x6faeb1[_0x6582('0x32')]=qs[_0x6582('0x32')](_0x53931b['query']['limit']);_0x6faeb1['offset']=qs[_0x6582('0x30')](_0x53931b['query'][_0x6582('0x30')]);}_0x6faeb1['order']=qs[_0x6582('0x4f')](_0x53931b[_0x6582('0x46')][_0x6582('0x4f')]);_0x6faeb1[_0x6582('0x50')]=qs[_0x6582('0x48')](_[_0x6582('0x51')](_0x53931b[_0x6582('0x46')],_0x26ec8a[_0x6582('0x48')]),_0x1ab40f);if(_0x53931b[_0x6582('0x46')]['filter']){_0x6faeb1[_0x6582('0x50')]=_[_0x6582('0x52')](_0x6faeb1['where'],{'$or':_['map'](_0x1ab40f,function(_0x1dd719){if(_0x1dd719[_0x6582('0x42')]!==_0x6582('0x53')){var _0x34c238={};_0x34c238[_0x1dd719[_0x6582('0x3c')]]={'$like':'%'+_0x53931b[_0x6582('0x46')][_0x6582('0x54')]+'%'};return _0x34c238;}})});}_0x6faeb1=_[_0x6582('0x52')]({},_0x6faeb1,_0x53931b['options']);var _0xd0586={'where':_0x6faeb1[_0x6582('0x50')]};return db[_0x6582('0x3f')]['count'](_0xd0586)['then'](function(_0x197d44){_0x1216ef[_0x6582('0x33')]=_0x197d44;if(_0x53931b[_0x6582('0x46')][_0x6582('0x55')]){_0x6faeb1['include']=[{'all':!![]}];}return db[_0x6582('0x3f')][_0x6582('0x56')](_0x6faeb1);})[_0x6582('0x22')](function(_0x5244da){_0x1216ef[_0x6582('0x57')]=_0x5244da;return _0x1216ef;})[_0x6582('0x22')](respondWithFilteredResult(_0x13cb42,_0x6faeb1))['catch'](handleError(_0x13cb42,null));};exports[_0x6582('0x58')]=function(_0x189639,_0x22d913){var _0xdc6d8e={'raw':![],'where':{'id':_0x189639[_0x6582('0x59')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x4d3804={};_0x4d3804[_0x6582('0x44')]=_[_0x6582('0x47')](db[_0x6582('0x3f')][_0x6582('0x40')]);_0x4d3804['query']=_[_0x6582('0x47')](_0x189639[_0x6582('0x46')]);_0x4d3804[_0x6582('0x48')]=_[_0x6582('0x49')](_0x4d3804[_0x6582('0x44')],_0x4d3804[_0x6582('0x46')]);_0xdc6d8e[_0x6582('0x4a')]=_['intersection'](_0x4d3804[_0x6582('0x44')],qs[_0x6582('0x4b')](_0x189639[_0x6582('0x46')][_0x6582('0x4b')]));_0xdc6d8e[_0x6582('0x4a')]=_0xdc6d8e[_0x6582('0x4a')][_0x6582('0x4c')]?_0xdc6d8e[_0x6582('0x4a')]:_0x4d3804['model'];if(_0x189639[_0x6582('0x46')][_0x6582('0x55')]){_0xdc6d8e[_0x6582('0x5a')]=[{'all':!![]}];}_0xdc6d8e=_[_0x6582('0x52')]({},_0xdc6d8e,_0x189639[_0x6582('0x5b')]);return db['OpenchannelAccount'][_0x6582('0x5c')](_0xdc6d8e)[_0x6582('0x22')](handleEntityNotFound(_0x22d913,null))[_0x6582('0x22')](respondWithResult(_0x22d913,null))[_0x6582('0x2c')](handleError(_0x22d913,null));};exports[_0x6582('0x5d')]=function(_0x43d8ce,_0x402121){return db[_0x6582('0x3f')]['create'](_0x43d8ce[_0x6582('0x5e')],{})[_0x6582('0x22')](function(_0xd0be89){var _0x451e8f=_0x43d8ce[_0x6582('0x5f')][_0x6582('0x39')]({'plain':!![]});if(!_0x451e8f)throw new Error(_0x6582('0x60'));if(_0x451e8f[_0x6582('0x61')]===_0x6582('0x5f')){var _0x326a2a=_0xd0be89[_0x6582('0x39')]({'plain':!![]});var _0x25370c=_0x6582('0x3a');return db['UserProfileSection'][_0x6582('0x5c')]({'where':{'name':_0x25370c,'userProfileId':_0x451e8f['userProfileId']},'raw':!![]})[_0x6582('0x22')](function(_0x4c6e55){if(_0x4c6e55&&_0x4c6e55[_0x6582('0x62')]===0x0){return db[_0x6582('0x63')][_0x6582('0x5d')]({'name':_0x326a2a[_0x6582('0x3c')],'resourceId':_0x326a2a['id'],'type':_0x4c6e55[_0x6582('0x3c')],'sectionId':_0x4c6e55['id']},{})[_0x6582('0x22')](function(){return _0xd0be89;});}else{return _0xd0be89;}})[_0x6582('0x2c')](function(_0x45c1ea){logger['error'](_0x6582('0x64'),_0x45c1ea);throw _0x45c1ea;});}return _0xd0be89;})[_0x6582('0x22')](respondWithResult(_0x402121,0xc9))[_0x6582('0x2c')](handleError(_0x402121,null));};exports[_0x6582('0x65')]=function(_0x58c796,_0x556989){if(_0x58c796['body']['id']){delete _0x58c796[_0x6582('0x5e')]['id'];}return db[_0x6582('0x3f')][_0x6582('0x5c')]({'where':{'id':_0x58c796[_0x6582('0x59')]['id']},'include':[{'model':db[_0x6582('0x66')],'as':_0x6582('0x3e')}]})[_0x6582('0x22')](handleEntityNotFound(_0x556989,null))[_0x6582('0x22')](saveUpdates(_0x58c796[_0x6582('0x5e')],null))[_0x6582('0x22')](respondWithResult(_0x556989,null))[_0x6582('0x2c')](handleError(_0x556989,null));};exports[_0x6582('0x3b')]=function(_0x2cb018,_0x4325a3){return db[_0x6582('0x3f')][_0x6582('0x5c')]({'where':{'id':_0x2cb018[_0x6582('0x59')]['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x4325a3,null))[_0x6582('0x22')](removeEntity(_0x4325a3,null))['catch'](handleError(_0x4325a3,null));};exports[_0x6582('0x67')]=function(_0x1f624f,_0x46b526){return db[_0x6582('0x3f')]['describe']()[_0x6582('0x22')](respondWithResult(_0x46b526,null))[_0x6582('0x2c')](handleError(_0x46b526,null));};exports['addDisposition']=function(_0x4ecf73,_0x3af1ce,_0x1123db){if(_0x4ecf73['body']['id']){delete _0x4ecf73[_0x6582('0x5e')]['id'];}return db['OpenchannelAccount'][_0x6582('0x5c')]({'where':{'id':_0x4ecf73[_0x6582('0x59')]['id']}})['then'](handleEntityNotFound(_0x3af1ce,null))[_0x6582('0x22')](function(_0x3814b2){if(_0x3814b2){_0x4ecf73[_0x6582('0x5e')]['OpenchannelAccountId']=_0x3814b2['id'];return db[_0x6582('0x68')][_0x6582('0x5d')](_0x4ecf73[_0x6582('0x5e')]);}})[_0x6582('0x22')](respondWithResult(_0x3af1ce,null))[_0x6582('0x2c')](handleError(_0x3af1ce,null));};exports[_0x6582('0x69')]=function(_0x1a9d24,_0x35ad1f,_0x4742ea){var _0x553234={'raw':![],'where':{}};var _0x20467e={};var _0x4b5e27={'count':0x0,'rows':[]};return db[_0x6582('0x3f')][_0x6582('0x6a')]({'where':{'id':_0x1a9d24[_0x6582('0x59')]['id']}})['then'](handleEntityNotFound(_0x35ad1f,null))[_0x6582('0x22')](function(_0x296fdc){if(_0x296fdc){_0x20467e[_0x6582('0x44')]=_[_0x6582('0x47')](db[_0x6582('0x68')][_0x6582('0x40')]);_0x20467e[_0x6582('0x46')]=_['keys'](_0x1a9d24['query']);_0x20467e['filters']=_[_0x6582('0x49')](_0x20467e['model'],_0x20467e[_0x6582('0x46')]);_0x553234['attributes']=_['intersection'](_0x20467e[_0x6582('0x44')],qs[_0x6582('0x4b')](_0x1a9d24[_0x6582('0x46')][_0x6582('0x4b')]));_0x553234[_0x6582('0x4a')]=_0x553234[_0x6582('0x4a')][_0x6582('0x4c')]?_0x553234[_0x6582('0x4a')]:_0x20467e[_0x6582('0x44')];if(!_0x1a9d24[_0x6582('0x46')]['hasOwnProperty']('nolimit')){_0x553234[_0x6582('0x32')]=qs[_0x6582('0x32')](_0x1a9d24['query']['limit']);_0x553234['offset']=qs['offset'](_0x1a9d24[_0x6582('0x46')][_0x6582('0x30')]);}_0x553234['order']=qs[_0x6582('0x4f')](_0x1a9d24[_0x6582('0x46')][_0x6582('0x4f')]);_0x553234['where']=qs['filters'](_[_0x6582('0x51')](_0x1a9d24[_0x6582('0x46')],_0x20467e[_0x6582('0x48')]));_0x553234[_0x6582('0x50')][_0x6582('0x6b')]=_0x296fdc['id'];if(_0x1a9d24[_0x6582('0x46')][_0x6582('0x54')]){_0x553234[_0x6582('0x50')]=_[_0x6582('0x52')](_0x553234[_0x6582('0x50')],{'$or':_[_0x6582('0x45')](_0x553234[_0x6582('0x4a')],function(_0x4a1c52){var _0x37ddb7={};_0x37ddb7[_0x4a1c52]={'$like':'%'+_0x1a9d24[_0x6582('0x46')]['filter']+'%'};return _0x37ddb7;})});}_0x553234=_[_0x6582('0x52')]({},_0x553234,_0x1a9d24[_0x6582('0x5b')]);return db['Disposition'][_0x6582('0x33')]({'where':_0x553234['where']})[_0x6582('0x22')](function(_0xed20b2){_0x4b5e27[_0x6582('0x33')]=_0xed20b2;if(_0x1a9d24[_0x6582('0x46')][_0x6582('0x55')]){_0x553234[_0x6582('0x5a')]=[{'all':!![]}];}return db[_0x6582('0x68')][_0x6582('0x56')](_0x553234);})[_0x6582('0x22')](function(_0x1e484d){_0x4b5e27[_0x6582('0x57')]=_0x1e484d;return _0x4b5e27;});}})[_0x6582('0x22')](respondWithFilteredResult(_0x35ad1f,_0x553234))['catch'](handleError(_0x35ad1f,null));};exports[_0x6582('0x6c')]=function(_0x4eb1c8,_0x5661ea,_0x155e7c){return db['OpenchannelAccount'][_0x6582('0x5c')]({'where':{'id':_0x4eb1c8['params']['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x5661ea,null))['then'](function(_0x509b05){if(_0x509b05){return _0x509b05[_0x6582('0x6c')](_0x4eb1c8[_0x6582('0x46')][_0x6582('0x6d')]);}})[_0x6582('0x22')](respondWithStatusCode(_0x5661ea,null))[_0x6582('0x2c')](handleError(_0x5661ea,null));};exports[_0x6582('0x6e')]=function(_0x18797e,_0x35e523,_0x550008){if(_0x18797e[_0x6582('0x5e')]['id']){delete _0x18797e[_0x6582('0x5e')]['id'];}return db[_0x6582('0x3f')][_0x6582('0x5c')]({'where':{'id':_0x18797e[_0x6582('0x59')]['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x35e523,null))[_0x6582('0x22')](function(_0xc47ab6){if(_0xc47ab6){_0x18797e['body'][_0x6582('0x6b')]=_0xc47ab6['id'];return db[_0x6582('0x6f')][_0x6582('0x5d')](_0x18797e[_0x6582('0x5e')]);}})['then'](respondWithResult(_0x35e523,null))[_0x6582('0x2c')](handleError(_0x35e523,null));};exports[_0x6582('0x70')]=function(_0x137dec,_0x3caa71,_0x419ab7){var _0x1fde18={'raw':![],'where':{}};var _0x37e2c7={};var _0x527c33={'count':0x0,'rows':[]};return db[_0x6582('0x3f')]['findOne']({'where':{'id':_0x137dec[_0x6582('0x59')]['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x3caa71,null))[_0x6582('0x22')](function(_0x58f90a){if(_0x58f90a){_0x37e2c7['model']=_['keys'](db[_0x6582('0x6f')][_0x6582('0x40')]);_0x37e2c7[_0x6582('0x46')]=_[_0x6582('0x47')](_0x137dec[_0x6582('0x46')]);_0x37e2c7['filters']=_[_0x6582('0x49')](_0x37e2c7['model'],_0x37e2c7[_0x6582('0x46')]);_0x1fde18[_0x6582('0x4a')]=_[_0x6582('0x49')](_0x37e2c7['model'],qs['fields'](_0x137dec[_0x6582('0x46')][_0x6582('0x4b')]));_0x1fde18[_0x6582('0x4a')]=_0x1fde18[_0x6582('0x4a')][_0x6582('0x4c')]?_0x1fde18[_0x6582('0x4a')]:_0x37e2c7[_0x6582('0x44')];if(!_0x137dec[_0x6582('0x46')]['hasOwnProperty'](_0x6582('0x4e'))){_0x1fde18[_0x6582('0x32')]=qs[_0x6582('0x32')](_0x137dec[_0x6582('0x46')]['limit']);_0x1fde18[_0x6582('0x30')]=qs[_0x6582('0x30')](_0x137dec[_0x6582('0x46')][_0x6582('0x30')]);}_0x1fde18[_0x6582('0x71')]=qs[_0x6582('0x4f')](_0x137dec[_0x6582('0x46')]['sort']);_0x1fde18[_0x6582('0x50')]=qs[_0x6582('0x48')](_['pick'](_0x137dec[_0x6582('0x46')],_0x37e2c7[_0x6582('0x48')]));_0x1fde18[_0x6582('0x50')][_0x6582('0x6b')]=_0x58f90a['id'];if(_0x137dec['query'][_0x6582('0x54')]){_0x1fde18[_0x6582('0x50')]=_['merge'](_0x1fde18[_0x6582('0x50')],{'$or':_['map'](_0x1fde18[_0x6582('0x4a')],function(_0x299939){var _0x150742={};_0x150742[_0x299939]={'$like':'%'+_0x137dec[_0x6582('0x46')][_0x6582('0x54')]+'%'};return _0x150742;})});}_0x1fde18=_[_0x6582('0x52')]({},_0x1fde18,_0x137dec['options']);return db['CannedAnswer'][_0x6582('0x33')]({'where':_0x1fde18[_0x6582('0x50')]})[_0x6582('0x22')](function(_0x17b5b8){_0x527c33[_0x6582('0x33')]=_0x17b5b8;if(_0x137dec[_0x6582('0x46')][_0x6582('0x55')]){_0x1fde18[_0x6582('0x5a')]=[{'all':!![]}];}return db[_0x6582('0x6f')][_0x6582('0x56')](_0x1fde18);})[_0x6582('0x22')](function(_0x402c9a){_0x527c33[_0x6582('0x57')]=_0x402c9a;return _0x527c33;});}})['then'](respondWithFilteredResult(_0x3caa71,_0x1fde18))[_0x6582('0x2c')](handleError(_0x3caa71,null));};exports['removeAnswers']=function(_0x57fabe,_0x222fa8,_0x1c282d){return db['OpenchannelAccount'][_0x6582('0x5c')]({'where':{'id':_0x57fabe['params']['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x222fa8,null))[_0x6582('0x22')](function(_0x2f3df4){if(_0x2f3df4){return _0x2f3df4[_0x6582('0x72')](_0x57fabe['query'][_0x6582('0x6d')]);}})[_0x6582('0x22')](respondWithStatusCode(_0x222fa8,null))[_0x6582('0x2c')](handleError(_0x222fa8,null));};exports[_0x6582('0x73')]=function(_0x2d3d3f,_0x21f4d8,_0x17af3a){var _0x10634d={'body':_0x2d3d3f[_0x6582('0x5e')],'channel':'openchannel'};var _0x22071f=[];var _0x261045=[];var _0x218375={};var _0x148218=![];return db[_0x6582('0x74')]['describe']()[_0x6582('0x22')](function(_0x36630f){if(!_0x36630f){throw new db[(_0x6582('0x75'))]['ValidationError'](_0x6582('0x76'));}_0x22071f=_[_0x6582('0x77')](_[_0x6582('0x47')](_0x36630f),[_0x6582('0x78'),'updatedAt']);_0x261045=_[_0x6582('0x77')](_['keys'](_0x36630f),['createdAt','updatedAt',_0x6582('0x79'),_0x6582('0x7a')]);if(_0x2d3d3f[_0x6582('0x5e')]['id']){delete _0x2d3d3f[_0x6582('0x5e')]['id'];}if(_[_0x6582('0x7b')](_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x7c')])){throw new db['Sequelize'][(_0x6582('0x7d'))](_0x6582('0x7e'));}if(_[_0x6582('0x7b')](_0x2d3d3f['body'][_0x6582('0x5e')])||_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x5e')]===''){throw new db[(_0x6582('0x75'))][(_0x6582('0x7d'))](_0x6582('0x7f'));}if(_[_0x6582('0x7b')](_0x2d3d3f['body'][_0x6582('0x80')])){throw new db['Sequelize']['ValidationError'](_0x6582('0x81')+_0x261045);}if(!_[_0x6582('0x82')](_0x261045,_0x2d3d3f[_0x6582('0x5e')]['mapKey'])){throw new db[(_0x6582('0x75'))][(_0x6582('0x7d'))](_0x6582('0x83')+_0x261045);}_0x218375[_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x80')]]=_0x2d3d3f[_0x6582('0x5e')]['from'];})['then'](function(){return db[_0x6582('0x3f')][_0x6582('0x5c')]({'where':{'id':_0x2d3d3f['params']['id']},'include':[{'model':db['CmList'],'as':_0x6582('0x84'),'include':[{'model':db[_0x6582('0x74')],'as':_0x6582('0x85'),'where':_0x218375,'limit':0x1,'order':[[_0x6582('0x86'),'DESC']]}]},{'model':db[_0x6582('0x87')],'as':_0x6582('0x88')}]});})['then'](handleEntityNotFound(_0x21f4d8,null))[_0x6582('0x22')](function(_0x1d7584){if(_0x1d7584&&_0x1d7584[_0x6582('0x84')]){_0x10634d[_0x6582('0x89')]=_0x1d7584;_0x10634d['applications']=_0x1d7584['Applications'];_0x10634d[_0x6582('0x8a')]=_0x1d7584['List'];_0x10634d[_0x6582('0x8b')]=_[_0x6582('0x8c')](_0x10634d[_0x6582('0x8b')],[_0x6582('0x8d')],[_0x6582('0x8e')]);if(_0x10634d[_0x6582('0x89')][_0x6582('0x88')]){delete _0x10634d[_0x6582('0x89')][_0x6582('0x88')];}if(_0x10634d['account'][_0x6582('0x84')]&&_0x10634d['account']['List'][_0x6582('0x85')][_0x6582('0x4c')]){return _0x10634d[_0x6582('0x89')][_0x6582('0x84')]['Contacts'][0x0];}var _0x36ae3c=_[_0x6582('0x8f')](_0x2d3d3f[_0x6582('0x5e')],{'firstName':_0x2d3d3f['body'][_0x6582('0x7c')],'ListId':_0x1d7584['ListId']});_0x36ae3c[_0x2d3d3f['body'][_0x6582('0x80')]]=_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x7c')];return db[_0x6582('0x74')][_0x6582('0x5d')](_0x36ae3c,{'fields':_0x22071f,'raw':!![]});}})['then'](handleEntityNotFound(_0x21f4d8,null))[_0x6582('0x22')](function(_0x437c3a){_0x10634d['contact']=_0x437c3a;if(_0x437c3a){var _0x574558={'ContactId':_0x437c3a['id'],'OpenchannelAccountId':_0x2d3d3f[_0x6582('0x59')]['id'],'from':(_0x437c3a[_0x6582('0x90')]||'')+'\x20'+(_0x437c3a[_0x6582('0x91')]||'')};var _0x45fcbc={'OpenchannelAccountId':_0x2d3d3f['params']['id'],'closed':![]};if(_0x2d3d3f['body']['threadId']){_0x45fcbc['threadId']=_0x2d3d3f['body'][_0x6582('0x92')];return db[_0x6582('0x93')][_0x6582('0x5c')]({'where':_0x45fcbc})[_0x6582('0x22')](function(_0x55a384){if(_0x55a384){return[_0x55a384,![]];}_0x574558[_0x6582('0x92')]=_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x92')];_0x574558[_0x6582('0x94')]=_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x94')];return db['OpenchannelInteraction'][_0x6582('0x5d')](_0x574558)[_0x6582('0x22')](function(_0x18ed40){return[_0x18ed40,!![]];});});}else{_0x45fcbc['threadId']=null;}_0x45fcbc[_0x6582('0x95')]=_0x437c3a['id'];return db[_0x6582('0x93')][_0x6582('0x5c')]({'where':_0x45fcbc})['then'](function(_0x237f79){if(_0x237f79){return[_0x237f79,![]];}return db[_0x6582('0x93')][_0x6582('0x5d')](_0x574558)['then'](function(_0xcf0873){return[_0xcf0873,!![]];});});}})[_0x6582('0x96')](function(_0x13d260,_0x4ded2f){if(_0x13d260){_0x148218=_0x4ded2f;if(!_0x4ded2f){var _0xdb83a={'from':(_0x10634d['contact'][_0x6582('0x90')]||'')+'\x20'+(_0x10634d['contact']['lastName']||'')};if(_0x2d3d3f['body'][_0x6582('0x92')]&&_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x97')]&&_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x92')]!=_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x97')]){_0xdb83a[_0x6582('0x92')]=_0x2d3d3f[_0x6582('0x5e')][_0x6582('0x97')];}return _0x13d260[_0x6582('0x65')](_0xdb83a);}else{return _0x13d260;}}})[_0x6582('0x22')](function(_0xdb9c3a){_0x10634d['interaction']=_0xdb9c3a[_0x6582('0x39')]({'plain':!![]});_0x10634d[_0x6582('0x98')][_0x6582('0x99')]=_0x148218;if(_0x10634d['interaction'][_0x6582('0x99')]){if(_0x10634d[_0x6582('0x89')]['autoclose']){_0x10634d[_0x6582('0x8b')][_0x6582('0x9a')]({'id':0x0,'priority':_0x10634d['applications'][_0x6582('0x4c')]+0x1,'app':_0x6582('0x9b'),'appdata':'unmanaged','interval':_0x6582('0x9c')});}}return db[_0x6582('0x9d')]['create']({'body':_0x2d3d3f['body'][_0x6582('0x5e')],'OpenchannelAccountId':_0x2d3d3f['params']['id'],'OpenchannelInteractionId':_0xdb9c3a['id'],'direction':'in','ContactId':_0x10634d[_0x6582('0x9e')]['id'],'AttachmentId':_0x2d3d3f[_0x6582('0x5e')]['AttachmentId']});})[_0x6582('0x22')](function(_0x456e4e){_0x10634d[_0x6582('0x29')]=_0x456e4e;if(_0x10634d[_0x6582('0x98')]['UserId']){return db[_0x6582('0x9f')][_0x6582('0x5c')]({'attributes':['id',_0x6582('0x3c')],'where':{'id':_0x10634d[_0x6582('0x98')][_0x6582('0xa0')]}})[_0x6582('0x22')](function(_0x3e28b8){if(_0x3e28b8){_0x10634d[_0x6582('0x8b')][_0x6582('0xa1')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x3e28b8[_0x6582('0x3c')]+','+(_0x10634d['account']['waitForTheAssignedAgent']||0xa),'interval':_0x6582('0x9c')});_0x10634d[_0x6582('0xa2')]=![];}return respondWithRpcPromise(_0x6582('0xa3'),_0x6582('0xa4'),_0x10634d);});}return respondWithRpcPromise(_0x6582('0xa3'),_0x6582('0xa4'),_0x10634d);})[_0x6582('0x22')](function(_0x49235e){respondWithRpcPromise('EventManager',_0x6582('0xa5'),{'event':_0x6582('0x73'),'message':_0x49235e},client9002);return _0x49235e;})['then'](respondWithResult(_0x21f4d8,null))[_0x6582('0x2c')](handleError(_0x21f4d8,null));};exports[_0x6582('0xa6')]=function(_0x292ede,_0x86ce07){var _0x158019=_0x292ede['params']['id'];var _0x4d5960=_0x292ede[_0x6582('0x5e')];var _0x5dd303=0xc8;var _0x196bb9=null;return db[_0x6582('0xa7')][_0x6582('0xa8')]({'isolationLevel':db[_0x6582('0xa7')]['Transaction']['ISOLATION_LEVELS'][_0x6582('0xa9')]},function(_0x21c26f){return db[_0x6582('0x3f')]['findOne']({'where':{'id':_0x158019},'transaction':_0x21c26f})[_0x6582('0x22')](function(_0x387cc0){if(_0x387cc0){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x158019},'transaction':_0x21c26f})['then'](function(){var _0x35f63a=_[_0x6582('0x45')](_0x4d5960,function(_0x4925f3){_0x4925f3[_0x6582('0x6b')]=_0x158019;return _0x4925f3;});return db['OpenchannelApplication'][_0x6582('0xaa')](_0x35f63a,{'transaction':_0x21c26f});});}else{_0x5dd303=0x194;_0x196bb9=[];}});})[_0x6582('0x22')](function(){if(_0x5dd303!==0x194){return db[_0x6582('0x87')][_0x6582('0xab')]({'where':{'OpenchannelAccountId':_0x158019},'order':_0x6582('0x8d')})[_0x6582('0x22')](function(_0x53d855){_0x196bb9=_0x53d855;});}})['catch'](function(_0x3e13f8){_0x5dd303=0x1f4;logger[_0x6582('0x27')](_0x3e13f8[_0x6582('0xac')]);if(_0x3e13f8[_0x6582('0x3c')]){delete _0x3e13f8[_0x6582('0x3c')];}_0x196bb9=_0x3e13f8;})[_0x6582('0xad')](function(){if(_0x196bb9===null){_0x86ce07['sendStatus'](_0x5dd303);}else{if(_0x5dd303===0x1f4){_0x86ce07[_0x6582('0x2e')](_0x5dd303)[_0x6582('0x3d')](_0x196bb9);}else{_0x86ce07[_0x6582('0x2e')](_0x5dd303)[_0x6582('0x36')](_0x196bb9);}}});};exports[_0x6582('0xae')]=function(_0x4bb330,_0x94cd6c,_0x45d586){var _0x2597e6={};var _0x361983={};var _0x482d01;var _0x15e4a1;return db[_0x6582('0x3f')]['findOne']({'where':{'id':_0x4bb330['params']['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x94cd6c,null))[_0x6582('0x22')](function(_0xe12585){if(_0xe12585){_0x482d01=_0xe12585;_0x361983[_0x6582('0x44')]=_[_0x6582('0x47')](db[_0x6582('0x87')][_0x6582('0x40')]);_0x361983[_0x6582('0x46')]=_[_0x6582('0x47')](_0x4bb330['query']);_0x361983[_0x6582('0x48')]=_['intersection'](_0x361983[_0x6582('0x44')],_0x361983['query']);_0x2597e6['attributes']=_[_0x6582('0x49')](_0x361983[_0x6582('0x44')],qs[_0x6582('0x4b')](_0x4bb330[_0x6582('0x46')][_0x6582('0x4b')]));_0x2597e6[_0x6582('0x4a')]=_0x2597e6[_0x6582('0x4a')]['length']?_0x2597e6[_0x6582('0x4a')]:_0x361983['model'];_0x2597e6['order']=qs[_0x6582('0x4f')](_0x4bb330[_0x6582('0x46')]['sort']);_0x2597e6[_0x6582('0x50')]=qs['filters'](_[_0x6582('0x51')](_0x4bb330[_0x6582('0x46')],_0x361983['filters']));if(_0x4bb330[_0x6582('0x46')][_0x6582('0x54')]){_0x2597e6['where']=_[_0x6582('0x52')](_0x2597e6[_0x6582('0x50')],{'$or':_['map'](_0x2597e6['attributes'],function(_0x248e8c){var _0x1ccd4c={};_0x1ccd4c[_0x248e8c]={'$like':'%'+_0x4bb330['query'][_0x6582('0x54')]+'%'};return _0x1ccd4c;})});}_0x2597e6=_['merge']({},_0x2597e6,_0x4bb330[_0x6582('0x5b')]);return _0x482d01[_0x6582('0xae')](_0x2597e6);}})[_0x6582('0x22')](function(_0x33e32f){if(_0x33e32f){_0x15e4a1=_0x33e32f[_0x6582('0x4c')];if(!_0x4bb330[_0x6582('0x46')]['hasOwnProperty'](_0x6582('0x4e'))){_0x2597e6['limit']=qs[_0x6582('0x32')](_0x4bb330[_0x6582('0x46')][_0x6582('0x32')]);_0x2597e6['offset']=qs[_0x6582('0x30')](_0x4bb330[_0x6582('0x46')][_0x6582('0x30')]);}return _0x482d01[_0x6582('0xae')](_0x2597e6);}})[_0x6582('0x22')](function(_0x481334){if(_0x481334){return _0x481334?{'count':_0x15e4a1,'rows':_0x481334}:null;}})['then'](respondWithResult(_0x94cd6c,null))[_0x6582('0x2c')](handleError(_0x94cd6c,null));};exports[_0x6582('0xaf')]=function(_0x368567,_0x9b08bb,_0x3ee750){var _0x32293c={'raw':![],'where':{}};var _0xe1c75e={};var _0x42ee00={'count':0x0,'rows':[]};return db[_0x6582('0x3f')][_0x6582('0x6a')]({'where':{'id':_0x368567[_0x6582('0x59')]['id']}})['then'](handleEntityNotFound(_0x9b08bb,null))[_0x6582('0x22')](function(_0x3d6c19){if(_0x3d6c19){_0xe1c75e[_0x6582('0x44')]=_[_0x6582('0x47')](db[_0x6582('0x93')][_0x6582('0x40')]);_0xe1c75e[_0x6582('0x46')]=_[_0x6582('0x47')](_0x368567[_0x6582('0x46')]);_0xe1c75e[_0x6582('0x48')]=_[_0x6582('0x49')](_0xe1c75e['model'],_0xe1c75e[_0x6582('0x46')]);_0x32293c['attributes']=_['intersection'](_0xe1c75e[_0x6582('0x44')],qs[_0x6582('0x4b')](_0x368567[_0x6582('0x46')][_0x6582('0x4b')]));_0x32293c[_0x6582('0x4a')]=_0x32293c[_0x6582('0x4a')][_0x6582('0x4c')]?_0x32293c[_0x6582('0x4a')]:_0xe1c75e[_0x6582('0x44')];if(!_0x368567[_0x6582('0x46')][_0x6582('0x4d')](_0x6582('0x4e'))){_0x32293c[_0x6582('0x32')]=qs[_0x6582('0x32')](_0x368567[_0x6582('0x46')][_0x6582('0x32')]);_0x32293c['offset']=qs[_0x6582('0x30')](_0x368567[_0x6582('0x46')][_0x6582('0x30')]);}_0x32293c[_0x6582('0x71')]=qs[_0x6582('0x4f')](_0x368567[_0x6582('0x46')]['sort']);_0x32293c[_0x6582('0x50')]=qs['filters'](_[_0x6582('0x51')](_0x368567[_0x6582('0x46')],_0xe1c75e[_0x6582('0x48')]));_0x32293c[_0x6582('0x50')][_0x6582('0x6b')]=_0x3d6c19['id'];if(_0x368567['query'][_0x6582('0x54')]){_0x32293c[_0x6582('0x50')]=_['merge'](_0x32293c[_0x6582('0x50')],{'$or':_[_0x6582('0x45')](_0x32293c['attributes'],function(_0x55ff5b){var _0x4644b1={};_0x4644b1[_0x55ff5b]={'$like':'%'+_0x368567[_0x6582('0x46')][_0x6582('0x54')]+'%'};return _0x4644b1;})});}_0x32293c=_[_0x6582('0x52')]({},_0x32293c,_0x368567[_0x6582('0x5b')]);return db[_0x6582('0x93')]['count']({'where':_0x32293c[_0x6582('0x50')]})['then'](function(_0x228187){_0x42ee00['count']=_0x228187;if(_0x368567[_0x6582('0x46')]['includeAll']){_0x32293c[_0x6582('0x5a')]=[{'model':db[_0x6582('0x74')],'as':'Contact','required':![]},{'model':db[_0x6582('0x9f')],'as':_0x6582('0xb0'),'attributes':[_0x6582('0x3c'),_0x6582('0xb1'),_0x6582('0xb2')],'required':![]},{'model':db[_0x6582('0xb3')],'as':'Tags','attributes':['id',_0x6582('0x3c'),_0x6582('0xb4')],'where':_0x368567[_0x6582('0x46')][_0x6582('0xb5')]?{'id':_0x368567[_0x6582('0x46')][_0x6582('0xb5')]}:undefined,'required':_0x368567[_0x6582('0x46')]['tag']?!![]:![]}];}return db[_0x6582('0x93')][_0x6582('0x56')](_0x32293c);})['then'](function(_0x45a494){_0x42ee00[_0x6582('0x57')]=_0x45a494;return _0x42ee00;});}})['then'](respondWithFilteredResult(_0x9b08bb,_0x32293c))['catch'](handleError(_0x9b08bb,null));};exports[_0x6582('0xb6')]=function(_0x421f5c,_0x3b57c8,_0x3c739b){return db[_0x6582('0x3f')][_0x6582('0x5c')]({'where':{'id':_0x421f5c[_0x6582('0x59')]['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x3b57c8,null))[_0x6582('0x22')](function(_0x44d955){if(_0x44d955){return _0x44d955[_0x6582('0xb6')](_0x421f5c[_0x6582('0x5e')][_0x6582('0x6d')],_[_0x6582('0xb7')](_0x421f5c[_0x6582('0x5e')],[_0x6582('0x6d'),'id'])||{})[_0x6582('0x96')](function(_0x37f628){for(var _0x5f290b=0x0;_0x5f290b<_0x421f5c[_0x6582('0x5e')][_0x6582('0x6d')][_0x6582('0x4c')];_0x5f290b+=0x1){socket[_0x6582('0xb8')](_0x6582('0xb9'),{'UserId':Number(_0x421f5c[_0x6582('0x5e')][_0x6582('0x6d')][_0x5f290b]),'OpenchannelAccountId':Number(_0x421f5c[_0x6582('0x59')]['id'])});}return _0x37f628;});}})[_0x6582('0x22')](respondWithResult(_0x3b57c8,null))['catch'](handleError(_0x3b57c8,null));};exports['removeAgents']=function(_0x3c0aca,_0x1c69e1,_0x5de3ae){return db[_0x6582('0x3f')][_0x6582('0x5c')]({'where':{'id':_0x3c0aca[_0x6582('0x59')]['id']}})['then'](handleEntityNotFound(_0x1c69e1,null))['then'](function(_0x2405d9){if(_0x2405d9){return _0x2405d9[_0x6582('0xba')](_0x3c0aca[_0x6582('0x46')]['ids'])[_0x6582('0x22')](function(){if(_[_0x6582('0xbb')](_0x3c0aca['query'][_0x6582('0x6d')])){for(var _0x21d560=0x0;_0x21d560<_0x3c0aca[_0x6582('0x46')][_0x6582('0x6d')][_0x6582('0x4c')];_0x21d560+=0x1){socket[_0x6582('0xb8')](_0x6582('0xbc'),{'UserId':Number(_0x3c0aca[_0x6582('0x46')]['ids'][_0x21d560]),'OpenchannelAccountId':Number(_0x3c0aca[_0x6582('0x59')]['id'])});}}else{socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x3c0aca[_0x6582('0x46')][_0x6582('0x6d')]),'OpenchannelAccountId':Number(_0x3c0aca['params']['id'])});}});}})[_0x6582('0x22')](respondWithStatusCode(_0x1c69e1,null))[_0x6582('0x2c')](handleError(_0x1c69e1,null));};exports[_0x6582('0xbd')]=function(_0xdf97ef,_0xa80b9a,_0x4ab969){var _0x1403ac={};var _0x306dbe={};var _0x459fcb;var _0x4c304a;return db[_0x6582('0x3f')]['findOne']({'where':{'id':_0xdf97ef[_0x6582('0x59')]['id']}})['then'](handleEntityNotFound(_0xa80b9a,null))[_0x6582('0x22')](function(_0x40bcae){if(_0x40bcae){_0x459fcb=_0x40bcae;_0x306dbe['model']=_[_0x6582('0x47')](db[_0x6582('0x9f')][_0x6582('0x40')]);_0x306dbe[_0x6582('0x46')]=_['keys'](_0xdf97ef[_0x6582('0x46')]);_0x306dbe[_0x6582('0x48')]=_[_0x6582('0x49')](_0x306dbe[_0x6582('0x44')],_0x306dbe[_0x6582('0x46')]);_0x1403ac['attributes']=_['intersection'](_0x306dbe['model'],qs[_0x6582('0x4b')](_0xdf97ef[_0x6582('0x46')][_0x6582('0x4b')]));_0x1403ac['attributes']=_0x1403ac['attributes']['length']?_0x1403ac[_0x6582('0x4a')]:_0x306dbe[_0x6582('0x44')];_0x1403ac['order']=qs[_0x6582('0x4f')](_0xdf97ef['query'][_0x6582('0x4f')]);_0x1403ac[_0x6582('0x50')]=qs[_0x6582('0x48')](_[_0x6582('0x51')](_0xdf97ef[_0x6582('0x46')],_0x306dbe[_0x6582('0x48')]));if(_0xdf97ef[_0x6582('0x46')][_0x6582('0x54')]){_0x1403ac[_0x6582('0x50')]=_['merge'](_0x1403ac['where'],{'$or':_[_0x6582('0x45')](_0x1403ac[_0x6582('0x4a')],function(_0x2b7189){var _0x33c44b={};_0x33c44b[_0x2b7189]={'$like':'%'+_0xdf97ef[_0x6582('0x46')][_0x6582('0x54')]+'%'};return _0x33c44b;})});}_0x1403ac=_['merge']({},_0x1403ac,_0xdf97ef['options']);return _0x459fcb[_0x6582('0xbd')](_0x1403ac);}})[_0x6582('0x22')](function(_0x450e84){if(_0x450e84){_0x4c304a=_0x450e84[_0x6582('0x4c')];if(!_0xdf97ef[_0x6582('0x46')][_0x6582('0x4d')]('nolimit')){_0x1403ac[_0x6582('0x32')]=qs[_0x6582('0x32')](_0xdf97ef[_0x6582('0x46')]['limit']);_0x1403ac[_0x6582('0x30')]=qs[_0x6582('0x30')](_0xdf97ef['query']['offset']);}return _0x459fcb['getAgents'](_0x1403ac);}})['then'](function(_0x61dcfc){if(_0x61dcfc){return _0x61dcfc?{'count':_0x4c304a,'rows':_0x61dcfc}:null;}})[_0x6582('0x22')](respondWithResult(_0xa80b9a,null))['catch'](handleError(_0xa80b9a,null));};exports['send']=function(_0x3cbb65,_0x16a431,_0x503741){var _0x5a5be3,_0x712caa,_0x28110f;if(_[_0x6582('0x7b')](_0x3cbb65['body'][_0x6582('0x5e')])||_0x3cbb65[_0x6582('0x5e')][_0x6582('0x5e')]===''){throw new db['Sequelize'][(_0x6582('0x7d'))](_0x6582('0x7f'));}if(_['isNil'](_0x3cbb65['body']['to'])){}_0x5a5be3=_0x3cbb65[_0x6582('0x5e')]['to'];return db['OpenchannelAccount'][_0x6582('0x6a')]({'where':{'id':_0x3cbb65[_0x6582('0x59')]['id']}})[_0x6582('0x22')](handleEntityNotFound(_0x16a431,null))[_0x6582('0x22')](function(_0x3ac2b0){if(_0x3ac2b0){return db['OpenchannelAccount']['find']({'where':{'id':_0x3ac2b0['id']},'include':[{'model':db[_0x6582('0xbe')],'as':_0x6582('0x84'),'include':[{'model':db[_0x6582('0x74')],'as':_0x6582('0x85'),'where':{[_0x3ac2b0[_0x6582('0x80')]]:_0x5a5be3},'limit':0x1,'order':[['updatedAt',_0x6582('0xbf')]]}]}]})[_0x6582('0x22')](handleEntityNotFound(_0x16a431,null))[_0x6582('0x22')](function(_0x30c987){if(_0x30c987&&_0x30c987['List']){_0x712caa=_0x30c987[_0x6582('0x39')]({'plain':!![]});if(_0x712caa['List']&&_0x712caa[_0x6582('0x84')][_0x6582('0x85')][_0x6582('0x4c')]){return _0x712caa[_0x6582('0x84')][_0x6582('0x85')][0x0];}return db[_0x6582('0x74')]['create'](_[_0x6582('0x8f')](_0x3cbb65[_0x6582('0x5e')],{'firstName':_0x5a5be3,[_0x30c987['mapKey']]:_0x5a5be3,'phone':_0x5a5be3,'ListId':_0x712caa[_0x6582('0x7a')]}));}})[_0x6582('0x22')](handleEntityNotFound(_0x16a431,null))[_0x6582('0x22')](function(_0x55eead){if(_0x55eead){_0x28110f=_0x55eead;return db[_0x6582('0x93')][_0x6582('0x5c')]({'where':{'ContactId':_0x28110f['id'],'closed':![],'OpenchannelAccountId':_0x712caa['id']}})[_0x6582('0x22')](function(_0x234653){if(_0x234653){return[_0x234653,![]];}return db['OpenchannelInteraction']['create']({'UserId':_0x3cbb65[_0x6582('0x5f')]['id'],'ContactId':_0x28110f['id'],'OpenchannelAccountId':_0x712caa['id'],'lastMsgDirection':'out','firstMsgDirection':_0x6582('0xc0'),'Messages':[_['merge'](_0x3cbb65[_0x6582('0x5e')],{'read':![],'body':_0x3cbb65[_0x6582('0x5e')]['body'],'OpenchannelAccountId':_0x712caa['id'],'UserId':_0x3cbb65[_0x6582('0x5f')]['id'],'ContactId':_0x28110f['id']})]},{'include':[{'model':db[_0x6582('0x9d')],'as':_0x6582('0xc1')}]})[_0x6582('0x22')](function(_0x27478a){return[_0x27478a,!![]];});});}})[_0x6582('0x96')](function(_0x47a179,_0xaa5085){if(_0xaa5085){return _0x47a179;}return db[_0x6582('0x9d')][_0x6582('0x5d')](_[_0x6582('0x52')](_0x3cbb65[_0x6582('0x5e')],{'read':![],'body':_0x3cbb65[_0x6582('0x5e')][_0x6582('0x5e')],'OpenchannelAccountId':_0x712caa['id'],'OpenchannelInteractionId':_0x47a179['id'],'UserId':_0x3cbb65[_0x6582('0x5f')]['id'],'ContactId':_0x28110f['id']}))[_0x6582('0x22')](function(_0x168c75){_0x47a179[_0x6582('0xc2')][_0x6582('0xc1')]=[];_0x47a179[_0x6582('0xc2')][_0x6582('0xc1')][_0x6582('0x9a')](_0x168c75[_0x6582('0xc2')]);return _0x47a179;});});}})[_0x6582('0x22')](respondWithResult(_0x16a431,null))[_0x6582('0x2c')](handleError(_0x16a431,null));}; \ No newline at end of file diff --git a/server/api/openchannelAccount/openchannelAccount.events.js b/server/api/openchannelAccount/openchannelAccount.events.js new file mode 100644 index 0000000..674f67c --- /dev/null +++ b/server/api/openchannelAccount/openchannelAccount.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa74f=['remove','hasOwnProperty','hook','exports','OpenchannelAccount','update'];(function(_0xba274,_0x20a193){var _0x2e7efc=function(_0x570e59){while(--_0x570e59){_0xba274['push'](_0xba274['shift']());}};_0x2e7efc(++_0x20a193);}(_0xa74f,0x9a));var _0xfa74=function(_0x52e0ee,_0x52f7c1){_0x52e0ee=_0x52e0ee-0x0;var _0x32534c=_0xa74f[_0x52e0ee];return _0x32534c;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0xfa74('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xfa74('0x1'),'afterDestroy':_0xfa74('0x2')};function emitEvent(_0x394a1e){return function(_0x25a9b7,_0x5b367b,_0x141625){OpenchannelAccountEvents['emit'](_0x394a1e+':'+_0x25a9b7['id'],_0x25a9b7);OpenchannelAccountEvents['emit'](_0x394a1e,_0x25a9b7);_0x141625(null);};}for(var e in events){if(events[_0xfa74('0x3')](e)){var event=events[e];OpenchannelAccount[_0xfa74('0x4')](e,emitEvent(event));}}module[_0xfa74('0x5')]=OpenchannelAccountEvents; \ No newline at end of file diff --git a/server/api/openchannelAccount/openchannelAccount.model.js b/server/api/openchannelAccount/openchannelAccount.model.js new file mode 100644 index 0000000..901b836 --- /dev/null +++ b/server/api/openchannelAccount/openchannelAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x40c0d3,_0x183fca){var _0x434974=function(_0x462a59){while(--_0x462a59){_0x40c0d3['push'](_0x40c0d3['shift']());}};_0x434974(++_0x183fca);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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 diff --git a/server/api/openchannelAccount/openchannelAccount.rpc.js b/server/api/openchannelAccount/openchannelAccount.rpc.js new file mode 100644 index 0000000..f2707cb --- /dev/null +++ b/server/api/openchannelAccount/openchannelAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0427=['./openchannelAccount.socket','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x357001,_0x2d5f60){var _0x3c835a=function(_0x544c9a){while(--_0x544c9a){_0x357001['push'](_0x357001['shift']());}};_0x3c835a(++_0x2d5f60);}(_0x0427,0x137));var _0x7042=function(_0x31eaae,_0x296f51){_0x31eaae=_0x31eaae-0x0;var _0x42f5e1=_0x0427[_0x31eaae];return _0x42f5e1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7042('0x0'));var BPromise=require(_0x7042('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7042('0x2'));var db=require(_0x7042('0x3'))['db'];var utils=require(_0x7042('0x4'));var logger=require(_0x7042('0x5'))(_0x7042('0x6'));var config=require(_0x7042('0x7'));var jayson=require(_0x7042('0x8'));var client=jayson['client'][_0x7042('0x9')]({'port':0x232a});config[_0x7042('0xa')]=_[_0x7042('0xb')](config[_0x7042('0xa')],{'host':_0x7042('0xc'),'port':0x18eb});var socket=require(_0x7042('0xd'))(new Redis(config[_0x7042('0xa')]));require(_0x7042('0xe'))[_0x7042('0xf')](socket);function respondWithRpcPromise(_0x5a29aa,_0x326210,_0x5c3f0f){return new BPromise(function(_0x5cf853,_0x50eefb){return client['request'](_0x5a29aa,_0x5c3f0f)[_0x7042('0x10')](function(_0x5636e8){logger[_0x7042('0x11')](_0x7042('0x12'),_0x326210,_0x7042('0x13'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x326210,_0x7042('0x13'),JSON[_0x7042('0x14')](_0x5636e8));if(_0x5636e8[_0x7042('0x15')]){if(_0x5636e8[_0x7042('0x15')][_0x7042('0x16')]===0x1f4){logger[_0x7042('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x326210,_0x5636e8[_0x7042('0x15')][_0x7042('0x17')]);return _0x50eefb(_0x5636e8[_0x7042('0x15')]['message']);}logger[_0x7042('0x15')](_0x7042('0x12'),_0x326210,_0x5636e8['error'][_0x7042('0x17')]);return _0x5cf853(_0x5636e8['error']['message']);}else{logger[_0x7042('0x11')](_0x7042('0x12'),_0x326210,_0x7042('0x13'));_0x5cf853(_0x5636e8[_0x7042('0x18')][_0x7042('0x17')]);}})['catch'](function(_0x438084){logger[_0x7042('0x15')](_0x7042('0x12'),_0x326210,_0x438084);_0x50eefb(_0x438084);});});} \ No newline at end of file diff --git a/server/api/openchannelAccount/openchannelAccount.socket.js b/server/api/openchannelAccount/openchannelAccount.socket.js new file mode 100644 index 0000000..a4fffaa --- /dev/null +++ b/server/api/openchannelAccount/openchannelAccount.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1bb2=['register','length','save','remove','update','emit','removeListener'];(function(_0x25cf20,_0x4d6c77){var _0x58e96e=function(_0x3c995c){while(--_0x3c995c){_0x25cf20['push'](_0x25cf20['shift']());}};_0x58e96e(++_0x4d6c77);}(_0x1bb2,0x152));var _0x21bb=function(_0x53424c,_0x20fabf){_0x53424c=_0x53424c-0x0;var _0xfa8f93=_0x1bb2[_0x53424c];return _0xfa8f93;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x21bb('0x0'),_0x21bb('0x1'),_0x21bb('0x2')];function createListener(_0x480fcb,_0x4e514f){return function(_0x170632){_0x4e514f[_0x21bb('0x3')](_0x480fcb,_0x170632);};}function removeListener(_0x1c21c6,_0x469984){return function(){OpenchannelAccountEvents[_0x21bb('0x4')](_0x1c21c6,_0x469984);};}exports[_0x21bb('0x5')]=function(_0x198344){for(var _0x267bb0=0x0,_0x36217b=events[_0x21bb('0x6')];_0x267bb0<_0x36217b;_0x267bb0++){var _0x642998=events[_0x267bb0];var _0x316b77=createListener('openchannelAccount:'+_0x642998,_0x198344);OpenchannelAccountEvents['on'](_0x642998,_0x316b77);}}; \ No newline at end of file diff --git a/server/api/openchannelApplication/index.js b/server/api/openchannelApplication/index.js new file mode 100644 index 0000000..5cd8567 --- /dev/null +++ b/server/api/openchannelApplication/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2668=['create','update','delete','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2668,0x1b5));var _0x8266=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x2668[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require(_0x8266('0x0'));var util=require('util');var path=require(_0x8266('0x1'));var timeout=require(_0x8266('0x2'));var express=require('express');var router=express[_0x8266('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8266('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8266('0x5'));var controller=require('./openchannelApplication.controller');router['get']('/',auth[_0x8266('0x6')](),controller[_0x8266('0x7')]);router[_0x8266('0x8')](_0x8266('0x9'),auth[_0x8266('0x6')](),controller['show']);router[_0x8266('0xa')]('/',auth[_0x8266('0x6')](),controller[_0x8266('0xb')]);router['put'](_0x8266('0x9'),auth['isAuthenticated'](),controller[_0x8266('0xc')]);router[_0x8266('0xd')](_0x8266('0x9'),auth[_0x8266('0x6')](),controller[_0x8266('0xe')]);module[_0x8266('0xf')]=router; \ No newline at end of file diff --git a/server/api/openchannelApplication/openchannelApplication.attributes.js b/server/api/openchannelApplication/openchannelApplication.attributes.js new file mode 100644 index 0000000..a0ce650 --- /dev/null +++ b/server/api/openchannelApplication/openchannelApplication.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe7be=['noop','STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x108a1c,_0x6c5bda){var _0x3e4e11=function(_0x4982e2){while(--_0x4982e2){_0x108a1c['push'](_0x108a1c['shift']());}};_0x3e4e11(++_0x6c5bda);}(_0xe7be,0x1ef));var _0xee7b=function(_0x1b3e32,_0x49ad74){_0x1b3e32=_0x1b3e32-0x0;var _0x4796e3=_0xe7be[_0x1b3e32];return _0x4796e3;};'use strict';var Sequelize=require(_0xee7b('0x0'));module[_0xee7b('0x1')]={'priority':{'type':Sequelize[_0xee7b('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xee7b('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xee7b('0x4')]},'interval':{'type':Sequelize[_0xee7b('0x4')],'defaultValue':_0xee7b('0x5')}}; \ No newline at end of file diff --git a/server/api/openchannelApplication/openchannelApplication.controller.js b/server/api/openchannelApplication/openchannelApplication.controller.js new file mode 100644 index 0000000..239b191 --- /dev/null +++ b/server/api/openchannelApplication/openchannelApplication.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x93bb=['limit','count','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','OpenchannelApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','rows','catch','show','params','include','find','create','body','eml-format','zip-dir','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','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','offset','undefined'];(function(_0x305542,_0x4b921a){var _0x413821=function(_0x4c1204){while(--_0x4c1204){_0x305542['push'](_0x305542['shift']());}};_0x413821(++_0x4b921a);}(_0x93bb,0x1a9));var _0xb93b=function(_0x528362,_0x2248b1){_0x528362=_0x528362-0x0;var _0x5e8bf8=_0x93bb[_0x528362];return _0x5e8bf8;};'use strict';var emlformat=require(_0xb93b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb93b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb93b('0x2'));var BPromise=require(_0xb93b('0x3'));var Mustache=require(_0xb93b('0x4'));var util=require('util');var path=require(_0xb93b('0x5'));var sox=require(_0xb93b('0x6'));var csv=require('to-csv');var ejs=require(_0xb93b('0x7'));var fs=require('fs');var fs_extra=require(_0xb93b('0x8'));var _=require(_0xb93b('0x9'));var squel=require(_0xb93b('0xa'));var crypto=require(_0xb93b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb93b('0xc'));var toCsv=require(_0xb93b('0xd'));var querystring=require(_0xb93b('0xe'));var Papa=require(_0xb93b('0xf'));var Redis=require(_0xb93b('0x10'));var authService=require(_0xb93b('0x11'));var qs=require(_0xb93b('0x12'));var as=require(_0xb93b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb93b('0x14'))(_0xb93b('0x15'));var utils=require(_0xb93b('0x16'));var config=require(_0xb93b('0x17'));var licenseUtil=require(_0xb93b('0x18'));var db=require(_0xb93b('0x19'))['db'];function respondWithStatusCode(_0x33c524,_0xeaed2b){_0xeaed2b=_0xeaed2b||0xcc;return function(_0x4f72db){if(_0x4f72db){return _0x33c524[_0xb93b('0x1a')](_0xeaed2b);}return _0x33c524[_0xb93b('0x1b')](_0xeaed2b)['end']();};}function respondWithResult(_0x5d4170,_0x1ad9f5){_0x1ad9f5=_0x1ad9f5||0xc8;return function(_0x48a6ed){if(_0x48a6ed){return _0x5d4170[_0xb93b('0x1b')](_0x1ad9f5)[_0xb93b('0x1c')](_0x48a6ed);}};}function respondWithFilteredResult(_0xd7956a,_0x3ac756){return function(_0xf7bf36){if(_0xf7bf36){var _0x4a9137=typeof _0x3ac756[_0xb93b('0x1d')]===_0xb93b('0x1e')&&typeof _0x3ac756[_0xb93b('0x1f')]===_0xb93b('0x1e');var _0x267141=_0xf7bf36[_0xb93b('0x20')];var _0x3b936c=_0x4a9137?0x0:_0x3ac756[_0xb93b('0x1d')];var _0x272575=_0x4a9137?_0xf7bf36[_0xb93b('0x20')]:_0x3ac756['offset']+_0x3ac756['limit'];var _0x226647;if(_0x272575>=_0x267141){_0x272575=_0x267141;_0x226647=0xc8;}else{_0x226647=0xce;}_0xd7956a['status'](_0x226647);return _0xd7956a['set'](_0xb93b('0x21'),_0x3b936c+'-'+_0x272575+'/'+_0x267141)[_0xb93b('0x1c')](_0xf7bf36);}return null;};}function patchUpdates(_0x10a85e){return function(_0x2dec90){try{jsonpatch['apply'](_0x2dec90,_0x10a85e,!![]);}catch(_0x360045){return BPromise[_0xb93b('0x22')](_0x360045);}return _0x2dec90[_0xb93b('0x23')]();};}function saveUpdates(_0x1b8f34,_0x5c6367){return function(_0x2ce6e2){if(_0x2ce6e2){return _0x2ce6e2[_0xb93b('0x24')](_0x1b8f34)[_0xb93b('0x25')](function(_0xecb481){return _0xecb481;});}return null;};}function removeEntity(_0x330650,_0x4b62ea){return function(_0x25a603){if(_0x25a603){return _0x25a603[_0xb93b('0x26')]()[_0xb93b('0x25')](function(){_0x330650[_0xb93b('0x1b')](0xcc)[_0xb93b('0x27')]();});}};}function handleEntityNotFound(_0x3bc347,_0x48a1f1){return function(_0x36a617){if(!_0x36a617){_0x3bc347[_0xb93b('0x1a')](0x194);}return _0x36a617;};}function handleError(_0xa5b33a,_0x344bbd){_0x344bbd=_0x344bbd||0x1f4;return function(_0x1ec7c2){logger[_0xb93b('0x28')](_0x1ec7c2[_0xb93b('0x29')]);if(_0x1ec7c2[_0xb93b('0x2a')]){delete _0x1ec7c2[_0xb93b('0x2a')];}_0xa5b33a[_0xb93b('0x1b')](_0x344bbd)[_0xb93b('0x2b')](_0x1ec7c2);};}exports[_0xb93b('0x2c')]=function(_0x19976c,_0x3cb45b){var _0x4c2bad={},_0x5991be={},_0x116523={'count':0x0,'rows':[]};var _0x2462ac=_['map'](db[_0xb93b('0x2d')][_0xb93b('0x2e')],function(_0x3fe952){return{'name':_0x3fe952[_0xb93b('0x2f')],'type':_0x3fe952[_0xb93b('0x30')][_0xb93b('0x31')]};});_0x5991be[_0xb93b('0x32')]=_[_0xb93b('0x33')](_0x2462ac,_0xb93b('0x2a'));_0x5991be[_0xb93b('0x34')]=_[_0xb93b('0x35')](_0x19976c[_0xb93b('0x34')]);_0x5991be[_0xb93b('0x36')]=_[_0xb93b('0x37')](_0x5991be['model'],_0x5991be['query']);_0x4c2bad['attributes']=_['intersection'](_0x5991be[_0xb93b('0x32')],qs['fields'](_0x19976c[_0xb93b('0x34')][_0xb93b('0x38')]));_0x4c2bad[_0xb93b('0x39')]=_0x4c2bad[_0xb93b('0x39')][_0xb93b('0x3a')]?_0x4c2bad[_0xb93b('0x39')]:_0x5991be[_0xb93b('0x32')];if(!_0x19976c[_0xb93b('0x34')][_0xb93b('0x3b')]('nolimit')){_0x4c2bad[_0xb93b('0x1f')]=qs[_0xb93b('0x1f')](_0x19976c[_0xb93b('0x34')][_0xb93b('0x1f')]);_0x4c2bad['offset']=qs['offset'](_0x19976c[_0xb93b('0x34')][_0xb93b('0x1d')]);}_0x4c2bad[_0xb93b('0x3c')]=qs[_0xb93b('0x3d')](_0x19976c[_0xb93b('0x34')][_0xb93b('0x3d')]);_0x4c2bad['where']=qs[_0xb93b('0x36')](_[_0xb93b('0x3e')](_0x19976c[_0xb93b('0x34')],_0x5991be[_0xb93b('0x36')]),_0x2462ac);if(_0x19976c[_0xb93b('0x34')][_0xb93b('0x3f')]){_0x4c2bad[_0xb93b('0x40')]=_[_0xb93b('0x41')](_0x4c2bad[_0xb93b('0x40')],{'$or':_['map'](_0x2462ac,function(_0x55c4d8){if(_0x55c4d8[_0xb93b('0x30')]!=='VIRTUAL'){var _0x28fd8c={};_0x28fd8c[_0x55c4d8[_0xb93b('0x2a')]]={'$like':'%'+_0x19976c[_0xb93b('0x34')][_0xb93b('0x3f')]+'%'};return _0x28fd8c;}})});}_0x4c2bad=_[_0xb93b('0x41')]({},_0x4c2bad,_0x19976c[_0xb93b('0x42')]);var _0x37e4c6={'where':_0x4c2bad[_0xb93b('0x40')]};return db[_0xb93b('0x2d')][_0xb93b('0x20')](_0x37e4c6)['then'](function(_0x1d78cb){_0x116523[_0xb93b('0x20')]=_0x1d78cb;if(_0x19976c[_0xb93b('0x34')][_0xb93b('0x43')]){_0x4c2bad['include']=[{'all':!![]}];}return db[_0xb93b('0x2d')]['findAll'](_0x4c2bad);})[_0xb93b('0x25')](function(_0x136531){_0x116523[_0xb93b('0x44')]=_0x136531;return _0x116523;})[_0xb93b('0x25')](respondWithFilteredResult(_0x3cb45b,_0x4c2bad))[_0xb93b('0x45')](handleError(_0x3cb45b,null));};exports[_0xb93b('0x46')]=function(_0x27e161,_0x4ac8cb){var _0x3fb151={'raw':!![],'where':{'id':_0x27e161[_0xb93b('0x47')]['id']}},_0x4f1ffe={};_0x4f1ffe[_0xb93b('0x32')]=_[_0xb93b('0x35')](db[_0xb93b('0x2d')]['rawAttributes']);_0x4f1ffe[_0xb93b('0x34')]=_[_0xb93b('0x35')](_0x27e161[_0xb93b('0x34')]);_0x4f1ffe[_0xb93b('0x36')]=_['intersection'](_0x4f1ffe['model'],_0x4f1ffe[_0xb93b('0x34')]);_0x3fb151[_0xb93b('0x39')]=_[_0xb93b('0x37')](_0x4f1ffe[_0xb93b('0x32')],qs['fields'](_0x27e161['query'][_0xb93b('0x38')]));_0x3fb151['attributes']=_0x3fb151[_0xb93b('0x39')]['length']?_0x3fb151[_0xb93b('0x39')]:_0x4f1ffe[_0xb93b('0x32')];if(_0x27e161[_0xb93b('0x34')][_0xb93b('0x43')]){_0x3fb151[_0xb93b('0x48')]=[{'all':!![]}];}_0x3fb151=_[_0xb93b('0x41')]({},_0x3fb151,_0x27e161[_0xb93b('0x42')]);return db[_0xb93b('0x2d')][_0xb93b('0x49')](_0x3fb151)['then'](handleEntityNotFound(_0x4ac8cb,null))[_0xb93b('0x25')](respondWithResult(_0x4ac8cb,null))['catch'](handleError(_0x4ac8cb,null));};exports['create']=function(_0xe6f43d,_0x17ce01){return db[_0xb93b('0x2d')][_0xb93b('0x4a')](_0xe6f43d[_0xb93b('0x4b')],{})[_0xb93b('0x25')](respondWithResult(_0x17ce01,0xc9))[_0xb93b('0x45')](handleError(_0x17ce01,null));};exports[_0xb93b('0x24')]=function(_0x1a2885,_0x925004){if(_0x1a2885[_0xb93b('0x4b')]['id']){delete _0x1a2885[_0xb93b('0x4b')]['id'];}return db[_0xb93b('0x2d')][_0xb93b('0x49')]({'where':{'id':_0x1a2885[_0xb93b('0x47')]['id']}})['then'](handleEntityNotFound(_0x925004,null))[_0xb93b('0x25')](saveUpdates(_0x1a2885[_0xb93b('0x4b')],null))[_0xb93b('0x25')](respondWithResult(_0x925004,null))[_0xb93b('0x45')](handleError(_0x925004,null));};exports[_0xb93b('0x26')]=function(_0x34f001,_0x4862a0){return db[_0xb93b('0x2d')][_0xb93b('0x49')]({'where':{'id':_0x34f001[_0xb93b('0x47')]['id']}})[_0xb93b('0x25')](handleEntityNotFound(_0x4862a0,null))[_0xb93b('0x25')](removeEntity(_0x4862a0,null))[_0xb93b('0x45')](handleError(_0x4862a0,null));}; \ No newline at end of file diff --git a/server/api/openchannelApplication/openchannelApplication.model.js b/server/api/openchannelApplication/openchannelApplication.model.js new file mode 100644 index 0000000..46a7994 --- /dev/null +++ b/server/api/openchannelApplication/openchannelApplication.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9df8=['rimraf','../../config/environment','exports','define','OpenchannelApplication','openchannel_applications','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9df8,0x95));var _0x89df=function(_0x39dae4,_0x58a305){_0x39dae4=_0x39dae4-0x0;var _0x39ab08=_0x9df8[_0x39dae4];return _0x39ab08;};'use strict';var _=require(_0x89df('0x0'));var util=require(_0x89df('0x1'));var logger=require(_0x89df('0x2'))(_0x89df('0x3'));var moment=require(_0x89df('0x4'));var BPromise=require(_0x89df('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x89df('0x6'));var rimraf=require(_0x89df('0x7'));var config=require(_0x89df('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0x89df('0x9')]=function(_0x95bcce,_0x3de5f7){return _0x95bcce[_0x89df('0xa')](_0x89df('0xb'),attributes,{'tableName':_0x89df('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});}; \ No newline at end of file diff --git a/server/api/openchannelApplication/openchannelApplication.rpc.js b/server/api/openchannelApplication/openchannelApplication.rpc.js new file mode 100644 index 0000000..ada04e9 --- /dev/null +++ b/server/api/openchannelApplication/openchannelApplication.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb88b=['where','attributes','then','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw'];(function(_0x53b1c0,_0xe63aeb){var _0x5a2417=function(_0x4b0fc7){while(--_0x4b0fc7){_0x53b1c0['push'](_0x53b1c0['shift']());}};_0x5a2417(++_0xe63aeb);}(_0xb88b,0x1a8));var _0xbb88=function(_0xbbfa7e,_0x19cb37){_0xbbfa7e=_0xbbfa7e-0x0;var _0x311aa6=_0xb88b[_0xbbfa7e];return _0x311aa6;};'use strict';var _=require(_0xbb88('0x0'));var util=require(_0xbb88('0x1'));var moment=require(_0xbb88('0x2'));var BPromise=require(_0xbb88('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb88('0x4'));var db=require(_0xbb88('0x5'))['db'];var utils=require(_0xbb88('0x6'));var logger=require(_0xbb88('0x7'))(_0xbb88('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbb88('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24502f,_0x4a41fc,_0x5b326e){return new BPromise(function(_0x21c3c9,_0x25f747){return client[_0xbb88('0xa')](_0x24502f,_0x5b326e)['then'](function(_0x1dfc18){logger[_0xbb88('0xb')](_0xbb88('0xc'),_0x4a41fc,_0xbb88('0xd'));logger[_0xbb88('0xe')](_0xbb88('0xf'),_0x4a41fc,_0xbb88('0xd'),JSON['stringify'](_0x1dfc18));if(_0x1dfc18[_0xbb88('0x10')]){if(_0x1dfc18[_0xbb88('0x10')]['code']===0x1f4){logger[_0xbb88('0x10')](_0xbb88('0xc'),_0x4a41fc,_0x1dfc18[_0xbb88('0x10')][_0xbb88('0x11')]);return _0x25f747(_0x1dfc18[_0xbb88('0x10')][_0xbb88('0x11')]);}logger[_0xbb88('0x10')](_0xbb88('0xc'),_0x4a41fc,_0x1dfc18[_0xbb88('0x10')][_0xbb88('0x11')]);return _0x21c3c9(_0x1dfc18['error'][_0xbb88('0x11')]);}else{logger[_0xbb88('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x4a41fc,_0xbb88('0xd'));_0x21c3c9(_0x1dfc18[_0xbb88('0x12')][_0xbb88('0x11')]);}})[_0xbb88('0x13')](function(_0x2b5720){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x4a41fc,_0x2b5720);_0x25f747(_0x2b5720);});});}exports[_0xbb88('0x14')]=function(_0x53a17b){var _0x346705=this;return new Promise(function(_0x3aba28,_0xd3fc0c){return db[_0xbb88('0x15')][_0xbb88('0x16')](_0x53a17b[_0xbb88('0x17')],{'raw':_0x53a17b[_0xbb88('0x18')]?_0x53a17b['options'][_0xbb88('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53a17b[_0xbb88('0x18')]?_0x53a17b[_0xbb88('0x18')][_0xbb88('0x1a')]||null:null,'attributes':_0x53a17b['options']?_0x53a17b['options'][_0xbb88('0x1b')]||null:null,'limit':_0x53a17b[_0xbb88('0x18')]?_0x53a17b[_0xbb88('0x18')]['limit']||null:null})[_0xbb88('0x1c')](function(_0x63e661){logger[_0xbb88('0xb')](_0xbb88('0x14'),_0x53a17b);logger[_0xbb88('0xe')]('UpdateOpenchannelApplication',_0x53a17b,JSON[_0xbb88('0x1d')](_0x63e661));_0x3aba28(_0x63e661);})[_0xbb88('0x13')](function(_0x14b80b){logger[_0xbb88('0x10')](_0xbb88('0x14'),_0x14b80b['message'],_0x53a17b);_0xd3fc0c(_0x346705[_0xbb88('0x10')](0x1f4,_0x14b80b[_0xbb88('0x11')]));});});}; \ No newline at end of file diff --git a/server/api/openchannelInteraction/index.js b/server/api/openchannelInteraction/index.js new file mode 100644 index 0000000..7a9a47b --- /dev/null +++ b/server/api/openchannelInteraction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd030=['update','delete','openchannelinteraction:destroy','destroy','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put'];(function(_0x3890f9,_0x64277e){var _0x39354a=function(_0x1ae1a4){while(--_0x1ae1a4){_0x3890f9['push'](_0x3890f9['shift']());}};_0x39354a(++_0x64277e);}(_0xd030,0x68));var _0x0d03=function(_0x13656b,_0x31e562){_0x13656b=_0x13656b-0x0;var _0x3e64db=_0xd030[_0x13656b];return _0x3e64db;};'use strict';var multer=require(_0x0d03('0x0'));var util=require(_0x0d03('0x1'));var path=require(_0x0d03('0x2'));var timeout=require(_0x0d03('0x3'));var express=require(_0x0d03('0x4'));var router=express[_0x0d03('0x5')]();var fs_extra=require(_0x0d03('0x6'));var auth=require(_0x0d03('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0d03('0x8'));var controller=require(_0x0d03('0x9'));router[_0x0d03('0xa')]('/',auth[_0x0d03('0xb')](),controller['index']);router[_0x0d03('0xa')](_0x0d03('0xc'),auth[_0x0d03('0xb')](),controller[_0x0d03('0xd')]);router[_0x0d03('0xa')](_0x0d03('0xe'),auth[_0x0d03('0xb')](),controller[_0x0d03('0xf')]);router[_0x0d03('0xa')](_0x0d03('0x10'),auth[_0x0d03('0xb')](),controller['getMessages']);router[_0x0d03('0xa')](_0x0d03('0x11'),auth[_0x0d03('0xb')](),controller[_0x0d03('0x12')]);router[_0x0d03('0x13')]('/',auth[_0x0d03('0xb')](),controller[_0x0d03('0x14')]);router[_0x0d03('0x13')]('/:id/messages',auth[_0x0d03('0xb')](),controller[_0x0d03('0x15')]);router[_0x0d03('0x13')](_0x0d03('0x16'),auth[_0x0d03('0xb')](),interaction[_0x0d03('0x17')](_0x0d03('0x18'),_0x0d03('0x19')),controller[_0x0d03('0x1a')]);router[_0x0d03('0x1b')](_0x0d03('0xe'),auth[_0x0d03('0xb')](),interaction[_0x0d03('0x17')](_0x0d03('0x18'),'openchannelinteraction:update'),controller[_0x0d03('0x1c')]);router[_0x0d03('0x1d')](_0x0d03('0xe'),auth[_0x0d03('0xb')](),interaction[_0x0d03('0x17')]('openchannel',_0x0d03('0x1e')),controller[_0x0d03('0x1f')]);router[_0x0d03('0x1d')]('/:id/tags',auth[_0x0d03('0xb')](),controller[_0x0d03('0x20')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/openchannelInteraction/openchannelInteraction.attributes.js b/server/api/openchannelInteraction/openchannelInteraction.attributes.js new file mode 100644 index 0000000..8d4e4ec --- /dev/null +++ b/server/api/openchannelInteraction/openchannelInteraction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x340c=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','exports'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x340c,0xe5));var _0xc340=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x340c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xc340('0x0'));module[_0xc340('0x1')]={'closed':{'type':Sequelize[_0xc340('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc340('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xc340('0x4')]},'thirdDisposition':{'type':Sequelize[_0xc340('0x4')]},'note':{'type':Sequelize[_0xc340('0x4')]},'read1stAt':{'type':Sequelize[_0xc340('0x3')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0xc340('0x4')]},'lastMsgAt':{'type':Sequelize[_0xc340('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xc340('0x5')]('in',_0xc340('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xc340('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/openchannelInteraction/openchannelInteraction.controller.js b/server/api/openchannelInteraction/openchannelInteraction.controller.js new file mode 100644 index 0000000..1c08412 --- /dev/null +++ b/server/api/openchannelInteraction/openchannelInteraction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9d23=['addMessage','ids','omit','getMessages','findOne','hasOwnProperty','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','spread','Tag','color','emit','removeTags','download','unix','toString','join','root','files','push','User','fullname','CmContact','firstName','lastName','attachments','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closed','closedAt','threadId','Public','existsSync','createWriteStream','basename','System','Contact','renderFile','server','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','sendStatus','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','openchannel','query','catch','show','from','params','model','keys','filters','intersection','attributes','fields','length','merge','options','find','create','body','destroy','describe','OpenchannelMessage'];(function(_0x6de23e,_0x2d5128){var _0x35d730=function(_0x41a59f){while(--_0x41a59f){_0x6de23e['push'](_0x6de23e['shift']());}};_0x35d730(++_0x2d5128);}(_0x9d23,0x1c8));var _0x39d2=function(_0x58f3cd,_0x10daa7){_0x58f3cd=_0x58f3cd-0x0;var _0x1a04d7=_0x9d23[_0x58f3cd];return _0x1a04d7;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x39d2('0x0'));var moment=require(_0x39d2('0x1'));var util=require(_0x39d2('0x2'));var path=require(_0x39d2('0x3'));var ejs=require(_0x39d2('0x4'));var fs=require('fs');var _=require(_0x39d2('0x5'));var Redis=require(_0x39d2('0x6'));var interaction=require(_0x39d2('0x7'));var qs=require(_0x39d2('0x8'));var pdf=require(_0x39d2('0x9'));var logger=require(_0x39d2('0xa'))(_0x39d2('0xb'));var config=require(_0x39d2('0xc'));var db=require('../../mysqldb')['db'];config[_0x39d2('0xd')]=_['defaults'](config[_0x39d2('0xd')],{'host':_0x39d2('0xe'),'port':0x18eb});var socket=require(_0x39d2('0xf'))(new Redis(config[_0x39d2('0xd')]));require(_0x39d2('0x10'))[_0x39d2('0x11')](socket);function respondWithStatusCode(_0xe836c7,_0x56a80d){_0x56a80d=_0x56a80d||0xcc;return function(_0xe314f){if(_0xe314f){return _0xe836c7['sendStatus'](_0x56a80d);}return _0xe836c7[_0x39d2('0x12')](_0x56a80d)[_0x39d2('0x13')]();};}function respondWithResult(_0x50c886,_0x5a7c07){_0x5a7c07=_0x5a7c07||0xc8;return function(_0x3cdfb4){if(_0x3cdfb4){return _0x50c886['status'](_0x5a7c07)[_0x39d2('0x14')](_0x3cdfb4);}};}function respondWithFilteredResult(_0x55ed4c,_0x2facbb){return function(_0x37f361){if(_0x37f361){var _0x1f9599=typeof _0x2facbb[_0x39d2('0x15')]===_0x39d2('0x16')&&typeof _0x2facbb[_0x39d2('0x17')]===_0x39d2('0x16');var _0x364244=_0x37f361[_0x39d2('0x18')];var _0xe2cf5f=_0x1f9599?0x0:_0x2facbb[_0x39d2('0x15')];var _0x3a9ce9=_0x1f9599?_0x37f361['count']:_0x2facbb['offset']+_0x2facbb[_0x39d2('0x17')];var _0x3dc9a1;if(_0x3a9ce9>=_0x364244){_0x3a9ce9=_0x364244;_0x3dc9a1=0xc8;}else{_0x3dc9a1=0xce;}_0x55ed4c['status'](_0x3dc9a1);return _0x55ed4c[_0x39d2('0x19')](_0x39d2('0x1a'),_0xe2cf5f+'-'+_0x3a9ce9+'/'+_0x364244)[_0x39d2('0x14')](_0x37f361);}return null;};}function saveUpdates(_0x34235f){return function(_0x1a4095){if(_0x1a4095){return _0x1a4095[_0x39d2('0x1b')](_0x34235f)[_0x39d2('0x1c')](function(_0x394fa4){return _0x394fa4;});}return null;};}function removeEntity(_0x3f70e7){return function(_0x485096){if(_0x485096){return _0x485096['destroy']()[_0x39d2('0x1c')](function(){_0x3f70e7[_0x39d2('0x12')](0xcc)[_0x39d2('0x13')]();});}};}function handleEntityNotFound(_0xb4c0b){return function(_0x5d5c86){if(!_0x5d5c86){_0xb4c0b[_0x39d2('0x1d')](0x194);}return _0x5d5c86;};}function handleError(_0xccf57f,_0x5ab41e){_0x5ab41e=_0x5ab41e||0x1f4;return function(_0x3fbca6){logger[_0x39d2('0x1e')](_0x3fbca6[_0x39d2('0x1f')]);if(_0x3fbca6[_0x39d2('0x20')]){delete _0x3fbca6['name'];}_0xccf57f['status'](_0x5ab41e)[_0x39d2('0x21')](_0x3fbca6);};}exports[_0x39d2('0x22')]=function(_0x36d085,_0x50ef6c){var _0x30d60d={};var _0x316fe6=_[_0x39d2('0x23')](db[_0x39d2('0x24')][_0x39d2('0x25')],function(_0xdf6147){return{'name':_0xdf6147[_0x39d2('0x26')],'type':_0xdf6147[_0x39d2('0x27')][_0x39d2('0x28')]};});_0x30d60d=qs[_0x39d2('0x29')](_0x316fe6,_0x36d085);return interaction[_0x39d2('0x2a')](_0x39d2('0x2b'),_0x36d085[_0x39d2('0x2c')],_0x36d085['user'],_0x30d60d,_0x316fe6)['then'](respondWithFilteredResult(_0x50ef6c,_0x30d60d))[_0x39d2('0x2d')](handleError(_0x50ef6c,null));};exports[_0x39d2('0x2e')]=function(_0x139812,_0x56f845){var _0x27a4a8={};if(_0x139812['query'][_0x39d2('0x27')]&&_0x139812[_0x39d2('0x2c')][_0x39d2('0x27')]===_0x39d2('0x2f')){_0x27a4a8[_0x39d2('0x2f')]=_0x139812[_0x39d2('0x30')]['id'];}else{_0x27a4a8['id']=_0x139812[_0x39d2('0x30')]['id'];}var _0x348892={'raw':![],'where':_0x27a4a8},_0x333da9={};_0x333da9[_0x39d2('0x31')]=_[_0x39d2('0x32')](db[_0x39d2('0x24')][_0x39d2('0x25')]);_0x333da9[_0x39d2('0x2c')]=_[_0x39d2('0x32')](_0x139812[_0x39d2('0x2c')]);_0x333da9[_0x39d2('0x33')]=_[_0x39d2('0x34')](_0x333da9[_0x39d2('0x31')],_0x333da9[_0x39d2('0x2c')]);_0x348892[_0x39d2('0x35')]=_[_0x39d2('0x34')](_0x333da9[_0x39d2('0x31')],qs[_0x39d2('0x36')](_0x139812[_0x39d2('0x2c')]['fields']));_0x348892['attributes']=_0x348892[_0x39d2('0x35')][_0x39d2('0x37')]?_0x348892[_0x39d2('0x35')]:_0x333da9[_0x39d2('0x31')];if(_0x139812[_0x39d2('0x2c')]['includeAll']){_0x348892['include']=[{'all':!![]}];}_0x348892=_[_0x39d2('0x38')]({},_0x348892,_0x139812[_0x39d2('0x39')]);return db[_0x39d2('0x24')][_0x39d2('0x3a')](_0x348892)[_0x39d2('0x1c')](handleEntityNotFound(_0x56f845,null))[_0x39d2('0x1c')](respondWithResult(_0x56f845,null))[_0x39d2('0x2d')](handleError(_0x56f845,null));};exports[_0x39d2('0x3b')]=function(_0x1d8a44,_0x5c6712){return db[_0x39d2('0x24')][_0x39d2('0x3b')](_0x1d8a44[_0x39d2('0x3c')],{})[_0x39d2('0x1c')](respondWithResult(_0x5c6712,0xc9))[_0x39d2('0x2d')](handleError(_0x5c6712,null));};exports[_0x39d2('0x1b')]=function(_0x4a45c1,_0x3c6fd4){if(_0x4a45c1[_0x39d2('0x3c')]['id']){delete _0x4a45c1['body']['id'];}return db[_0x39d2('0x24')][_0x39d2('0x3a')]({'where':{'id':_0x4a45c1[_0x39d2('0x30')]['id']}})[_0x39d2('0x1c')](handleEntityNotFound(_0x3c6fd4,null))[_0x39d2('0x1c')](saveUpdates(_0x4a45c1['body'],null))[_0x39d2('0x1c')](respondWithResult(_0x3c6fd4,null))['catch'](handleError(_0x3c6fd4,null));};exports[_0x39d2('0x3d')]=function(_0x392850,_0x29e768){return db[_0x39d2('0x24')]['find']({'where':{'id':_0x392850[_0x39d2('0x30')]['id']}})[_0x39d2('0x1c')](handleEntityNotFound(_0x29e768,null))[_0x39d2('0x1c')](removeEntity(_0x29e768,null))[_0x39d2('0x2d')](handleError(_0x29e768,null));};exports['describe']=function(_0x46fda4,_0x52a8e2){return db[_0x39d2('0x24')][_0x39d2('0x3e')]()[_0x39d2('0x1c')](respondWithResult(_0x52a8e2,null))['catch'](handleError(_0x52a8e2,null));};exports['addMessage']=function(_0x57ce43,_0x19c263){return db[_0x39d2('0x3f')]['find']({'where':{'id':_0x57ce43[_0x39d2('0x30')]['id']}})['then'](handleEntityNotFound(_0x19c263,null))[_0x39d2('0x1c')](function(_0x215863){if(_0x215863){return _0x215863[_0x39d2('0x40')](_0x57ce43[_0x39d2('0x3c')][_0x39d2('0x41')],_[_0x39d2('0x42')](_0x57ce43[_0x39d2('0x3c')],[_0x39d2('0x41'),'id'])||{});}})['then'](respondWithResult(_0x19c263,null))['catch'](handleError(_0x19c263,null));};exports[_0x39d2('0x43')]=function(_0x1c5b3d,_0x15e27e){var _0x1635e9={'raw':![],'where':{}};var _0x25167f={};var _0x52ebc8={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x39d2('0x44')]({'where':{'id':_0x1c5b3d[_0x39d2('0x30')]['id']}})['then'](handleEntityNotFound(_0x15e27e,null))[_0x39d2('0x1c')](function(_0x7231d){if(_0x7231d){_0x25167f[_0x39d2('0x31')]=_[_0x39d2('0x32')](db[_0x39d2('0x3f')][_0x39d2('0x25')]);_0x25167f[_0x39d2('0x2c')]=_[_0x39d2('0x32')](_0x1c5b3d['query']);_0x25167f[_0x39d2('0x33')]=_[_0x39d2('0x34')](_0x25167f[_0x39d2('0x31')],_0x25167f[_0x39d2('0x2c')]);_0x1635e9[_0x39d2('0x35')]=_['intersection'](_0x25167f[_0x39d2('0x31')],qs[_0x39d2('0x36')](_0x1c5b3d[_0x39d2('0x2c')][_0x39d2('0x36')]));_0x1635e9[_0x39d2('0x35')]=_0x1635e9[_0x39d2('0x35')][_0x39d2('0x37')]?_0x1635e9[_0x39d2('0x35')]:_0x25167f[_0x39d2('0x31')];if(!_0x1c5b3d['query'][_0x39d2('0x45')]('nolimit')){_0x1635e9['limit']=qs['limit'](_0x1c5b3d[_0x39d2('0x2c')]['limit']);_0x1635e9[_0x39d2('0x15')]=qs['offset'](_0x1c5b3d[_0x39d2('0x2c')]['offset']);}_0x1635e9[_0x39d2('0x46')]=qs['sort'](_0x1c5b3d[_0x39d2('0x2c')][_0x39d2('0x47')]);_0x1635e9[_0x39d2('0x48')]=qs['filters'](_[_0x39d2('0x49')](_0x1c5b3d['query'],_0x25167f[_0x39d2('0x33')]));_0x1635e9[_0x39d2('0x48')][_0x39d2('0x4a')]=_0x7231d['id'];if(_0x1c5b3d[_0x39d2('0x2c')][_0x39d2('0x4b')]){_0x1635e9[_0x39d2('0x48')]=_['merge'](_0x1635e9[_0x39d2('0x48')],{'$or':_['map'](_0x1635e9[_0x39d2('0x35')],function(_0x466848){var _0x436439={};_0x436439[_0x466848]={'$like':'%'+_0x1c5b3d['query'][_0x39d2('0x4b')]+'%'};return _0x436439;})});}if(_0x1c5b3d[_0x39d2('0x2c')][_0x39d2('0x4c')]){var _0xded0ca=_0x1c5b3d[_0x39d2('0x2c')][_0x39d2('0x4c')]['split'](',');var _0xaffd5f={};_0xaffd5f[_0xded0ca[0x0]]={'$gte':moment(_0xded0ca[0x1])[_0x39d2('0x4d')](_0x39d2('0x4e'))};_0x1635e9['where']=_['merge'](_0x1635e9[_0x39d2('0x48')],_0xaffd5f);}_0x1635e9=_[_0x39d2('0x38')]({},_0x1635e9,_0x1c5b3d[_0x39d2('0x39')]);return db[_0x39d2('0x3f')][_0x39d2('0x18')]({'where':_0x1635e9[_0x39d2('0x48')]})[_0x39d2('0x1c')](function(_0x3e8497){_0x52ebc8[_0x39d2('0x18')]=_0x3e8497;if(_0x1c5b3d[_0x39d2('0x2c')][_0x39d2('0x4f')]){_0x1635e9['include']=[{'all':!![]}];}return db[_0x39d2('0x3f')][_0x39d2('0x2a')](_0x1635e9);})[_0x39d2('0x1c')](function(_0x4f4efe){_0x52ebc8[_0x39d2('0x50')]=_0x4f4efe;return _0x52ebc8;});}})['then'](respondWithFilteredResult(_0x15e27e,_0x1635e9))['catch'](handleError(_0x15e27e,null));};exports[_0x39d2('0x51')]=function(_0x5662b8,_0x418b03){return db[_0x39d2('0x24')]['find']({'where':{'id':_0x5662b8[_0x39d2('0x30')]['id']}})[_0x39d2('0x1c')](handleEntityNotFound(_0x418b03,null))[_0x39d2('0x1c')](function(_0x4219c5){if(_0x4219c5){return _0x4219c5['setTags'](_0x5662b8['body']['ids'],_['omit'](_0x5662b8[_0x39d2('0x3c')],[_0x39d2('0x41'),'id'])||{})[_0x39d2('0x52')](function(){return db[_0x39d2('0x53')][_0x39d2('0x2a')]({'attributes':['id',_0x39d2('0x20'),_0x39d2('0x54')],'where':{'id':_0x5662b8[_0x39d2('0x3c')][_0x39d2('0x41')]}});})['then'](function(_0x8467d2){socket[_0x39d2('0x55')]('openchannelInteractionTags:save',{'id':Number(_0x5662b8[_0x39d2('0x30')]['id']),'tags':_0x8467d2||[]});return{'id':Number(_0x5662b8['params']['id']),'tags':_0x8467d2||[]};});}})[_0x39d2('0x1c')](respondWithResult(_0x418b03,null))[_0x39d2('0x2d')](handleError(_0x418b03,null));};exports[_0x39d2('0x56')]=function(_0x5a447e,_0x26fa9a){return db['OpenchannelInteraction'][_0x39d2('0x3a')]({'where':{'id':_0x5a447e[_0x39d2('0x30')]['id']}})[_0x39d2('0x1c')](handleEntityNotFound(_0x26fa9a,null))[_0x39d2('0x1c')](function(_0x2dfd29){if(_0x2dfd29){return _0x2dfd29[_0x39d2('0x56')](_0x5a447e['query'][_0x39d2('0x41')]);}})['then'](respondWithStatusCode(_0x26fa9a,null))['catch'](handleError(_0x26fa9a,null));};exports[_0x39d2('0x57')]=function(_0x47ec65,_0x21420b){var _0x4631a1=moment()[_0x39d2('0x58')]()[_0x39d2('0x59')]();var _0x5621be=path[_0x39d2('0x5a')](config[_0x39d2('0x5b')],'server','files','tmp');var _0x3e9fb8=path[_0x39d2('0x5a')](config['root'],'server',_0x39d2('0x5c'),'attachments');var _0x1c15ed=path['join'](_0x5621be,_0x4631a1);var _0x491dff=util[_0x39d2('0x4d')]('transcript-%d-%s.zip',_0x47ec65['params']['id'],_0x4631a1);var _0x2fabbb=path[_0x39d2('0x5a')](_0x5621be,_0x491dff);var _0xa29d04=[];_0xa29d04[_0x39d2('0x5d')]({'model':db[_0x39d2('0x5e')],'as':'User','attributes':['id',_0x39d2('0x5f')],'raw':!![]});_0xa29d04['push']({'model':db[_0x39d2('0x60')],'as':'Contact','attributes':['id',_0x39d2('0x61'),_0x39d2('0x62')],'raw':!![]});if(_0x47ec65[_0x39d2('0x2c')][_0x39d2('0x63')]){_0xa29d04[_0x39d2('0x5d')]({'model':db[_0x39d2('0x64')],'as':_0x39d2('0x64'),'raw':!![]});}var _0x351b65=[{'model':db['OpenchannelMessage'],'as':_0x39d2('0x65'),'attributes':['id',_0x39d2('0x3c'),_0x39d2('0x66'),_0x39d2('0x67'),_0x39d2('0x68'),_0x39d2('0x69')],'include':_0xa29d04}];_0x351b65[_0x39d2('0x5d')]({'model':db[_0x39d2('0x6a')],'as':_0x39d2('0x6b'),'attributes':['id','name']});_0x351b65[_0x39d2('0x5d')]({'model':db[_0x39d2('0x5e')],'as':_0x39d2('0x6c'),'attributes':['id',_0x39d2('0x5f')]});return db['OpenchannelInteraction'][_0x39d2('0x3a')]({'where':{'id':_0x47ec65[_0x39d2('0x30')]['id']},'include':_0x351b65})[_0x39d2('0x1c')](handleEntityNotFound(_0x21420b,null))[_0x39d2('0x1c')](function(_0xc91114){if(_0xc91114){var _0x27d958=_0xc91114[_0x39d2('0x6d')]({'plain':!![]});fs[_0x39d2('0x6e')](_0x1c15ed);var _0x5f17aa={'channel':_0x39d2('0x6f'),'account':_0x27d958[_0x39d2('0x6b')][_0x39d2('0x20')],'agent':_0x27d958['Owner']?_0x27d958['Owner'][_0x39d2('0x5f')]:_0x39d2('0x70'),'createdAt':moment(_0x27d958[_0x39d2('0x66')])[_0x39d2('0x4d')]('YYYY-MM-DD\x20HH:mm:ss')[_0x39d2('0x59')](),'closedAt':_0x27d958[_0x39d2('0x71')]?moment(_0x27d958[_0x39d2('0x72')])[_0x39d2('0x4d')](_0x39d2('0x4e'))['toString']():'','disposition':_0x27d958['disposition'],'visibility':_0x27d958[_0x39d2('0x73')]?_0x39d2('0x74'):'Private','messages':_(_0x27d958[_0x39d2('0x65')])['filter']({'secret':![]})[_0x39d2('0x23')](function(_0x5e7156){if(_0x5e7156[_0x39d2('0x64')]){var _0x196e47=path['join'](_0x3e9fb8,_0x5e7156[_0x39d2('0x64')]['basename']);if(fs[_0x39d2('0x75')](_0x196e47)){fs['createReadStream'](_0x196e47)['pipe'](fs[_0x39d2('0x76')](path['join'](_0x1c15ed,_0x5e7156[_0x39d2('0x64')][_0x39d2('0x77')])));}}return{'date':moment(_0x5e7156[_0x39d2('0x66')])['format'](_0x39d2('0x4e'))[_0x39d2('0x59')](),'sender':_0x5e7156[_0x39d2('0x67')]==='out'?_0x5e7156[_0x39d2('0x5e')]?_0x5e7156[_0x39d2('0x5e')][_0x39d2('0x5f')]:_0x39d2('0x78'):_0x5e7156['Contact']['firstName']+(_0x5e7156[_0x39d2('0x79')][_0x39d2('0x62')]?'\x20'+_0x5e7156['Contact'][_0x39d2('0x62')]:''),'body':_0x5e7156[_0x39d2('0x64')]?_0x5e7156[_0x39d2('0x64')][_0x39d2('0x77')]:_0x5e7156[_0x39d2('0x3c')],'direction':_0x5e7156[_0x39d2('0x67')]==='out'?'A':'C','secret':_0x5e7156[_0x39d2('0x68')],'read':_0x5e7156[_0x39d2('0x69')],'attachment':_0x5e7156[_0x39d2('0x64')]};})['value']()};return ejs[_0x39d2('0x7a')](path[_0x39d2('0x5a')](config['root'],_0x39d2('0x7b'),_0x39d2('0x7c'),_0x39d2('0x7d')),{'interaction':_0x5f17aa})[_0x39d2('0x1c')](function(_0x57c160){var _0x5a658a=path[_0x39d2('0x5a')](_0x1c15ed,'transcript-'+_0x27d958['id']+'-'+_0x4631a1+_0x39d2('0x7e'));var _0x66a654={'path':_0x5a658a,'channel':_0x39d2('0x6f'),'interactionId':_0x27d958['id']};return pdf[_0x39d2('0x7f')](_0x57c160,_0x66a654);})['then'](function(){return new Promise(function(_0x39fa14,_0x446a02){zipdir(_0x1c15ed,{'saveTo':_0x2fabbb},function(_0x2a623a,_0x29cd40){if(_0x2a623a)return _0x446a02(_0x2a623a);return _0x39fa14(_0x29cd40);});})[_0x39d2('0x1c')](function(){return new Promise(function(_0x4e0db0,_0x389e42){rimraf(_0x1c15ed,function(_0x3d753a){if(_0x3d753a)_0x389e42(_0x3d753a);return _0x4e0db0();});});})[_0x39d2('0x1c')](function(){return _0x21420b['download'](_0x2fabbb,_0x491dff,function(_0x21d3f2){if(_0x21d3f2){logger[_0x39d2('0x1e')](_0x39d2('0x80'),_0x21d3f2);}else{fs[_0x39d2('0x81')](_0x2fabbb);}});});});}else{return _0x21420b['sendStatus'](0xc8);}})[_0x39d2('0x2d')](handleError(_0x21420b,null));}; \ No newline at end of file diff --git a/server/api/openchannelInteraction/openchannelInteraction.events.js b/server/api/openchannelInteraction/openchannelInteraction.events.js new file mode 100644 index 0000000..0f3754e --- /dev/null +++ b/server/api/openchannelInteraction/openchannelInteraction.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x775a=['OpenchannelMessage','setMaxListeners','update','getUsers','then','Users','setDataValue','unreadMessages','emit','catch','hasOwnProperty','hook','../../mysqldb','OpenchannelInteraction'];(function(_0x2840a3,_0x3a64b3){var _0x2c4d2d=function(_0x3dce27){while(--_0x3dce27){_0x2840a3['push'](_0x2840a3['shift']());}};_0x2c4d2d(++_0x3a64b3);}(_0x775a,0x132));var _0xa775=function(_0x4d80cc,_0x770848){_0x4d80cc=_0x4d80cc-0x0;var _0x6f1103=_0x775a[_0x4d80cc];return _0x6f1103;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0xa775('0x0'))['db'][_0xa775('0x1')];var OpenchannelMessage=require('../../mysqldb')['db'][_0xa775('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xa775('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa775('0x4'),'afterDestroy':'remove'};function emitEvent(_0x74aec6){return function(_0x5c94c6,_0x519f20,_0x4c8286){_0x5c94c6[_0xa775('0x5')]({'attributes':['id'],'raw':!![]})[_0xa775('0x6')](function(_0x3c3d76){_0x5c94c6['setDataValue'](_0xa775('0x7'),_0x3c3d76['map'](function(_0x3134c1){return{'id':_0x3134c1['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x5c94c6['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa775('0x6')](function(_0x57aee1){_0x5c94c6[_0xa775('0x8')](_0xa775('0x9'),_0x57aee1['length']);OpenchannelInteractionEvents[_0xa775('0xa')](_0x74aec6+':'+_0x5c94c6['id'],_0x5c94c6);OpenchannelInteractionEvents[_0xa775('0xa')](_0x74aec6,_0x5c94c6);_0x4c8286(null);})[_0xa775('0xb')](_0x4c8286(null));};}for(var e in events){if(events[_0xa775('0xc')](e)){var event=events[e];OpenchannelInteraction[_0xa775('0xd')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents; \ No newline at end of file diff --git a/server/api/openchannelInteraction/openchannelInteraction.model.js b/server/api/openchannelInteraction/openchannelInteraction.model.js new file mode 100644 index 0000000..def4579 --- /dev/null +++ b/server/api/openchannelInteraction/openchannelInteraction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1448=['utf8mb4','utf8mb4_unicode_ci','changed','closed','format','lodash','../../config/logger','moment','bluebird','path','../../config/environment','./openchannelInteraction.attributes','exports','define'];(function(_0xc6800a,_0x4eac70){var _0x4919d3=function(_0x1ccfa6){while(--_0x1ccfa6){_0xc6800a['push'](_0xc6800a['shift']());}};_0x4919d3(++_0x4eac70);}(_0x1448,0x18d));var _0x8144=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1448[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8144('0x0'));var util=require('util');var logger=require(_0x8144('0x1'))('api');var moment=require(_0x8144('0x2'));var BPromise=require(_0x8144('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8144('0x4'));var rimraf=require('rimraf');var config=require(_0x8144('0x5'));var attributes=require(_0x8144('0x6'));module[_0x8144('0x7')]=function(_0xd83cde,_0x2ff848){return _0xd83cde[_0x8144('0x8')]('OpenchannelInteraction',attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8144('0x9'),'collate':_0x8144('0xa'),'hooks':{'beforeUpdate':function(_0x4a5035,_0x448c24,_0x44fe62){if(_0x4a5035[_0x8144('0xb')](_0x8144('0xc'))){_0x4a5035['closedAt']=moment()[_0x8144('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x44fe62(null,_0x4a5035);}}});}; \ No newline at end of file diff --git a/server/api/openchannelInteraction/openchannelInteraction.rpc.js b/server/api/openchannelInteraction/openchannelInteraction.rpc.js new file mode 100644 index 0000000..18c7c65 --- /dev/null +++ b/server/api/openchannelInteraction/openchannelInteraction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa1a4=['result','UpdateOpenchannelInteraction','update','body','options','raw','attributes','stringify','catch','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','where','addTags','ids','omit','AddTags','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./openchannelInteraction.socket','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0x5bbcb5,_0x58e5e2){var _0x5a375f=function(_0x100e32){while(--_0x100e32){_0x5bbcb5['push'](_0x5bbcb5['shift']());}};_0x5a375f(++_0x58e5e2);}(_0xa1a4,0x122));var _0x4a1a=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xa1a4[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4a1a('0x0'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a1a('0x1'))['db'];var utils=require(_0x4a1a('0x2'));var logger=require(_0x4a1a('0x3'))(_0x4a1a('0x4'));var config=require(_0x4a1a('0x5'));var jayson=require(_0x4a1a('0x6'));var client=jayson[_0x4a1a('0x7')][_0x4a1a('0x8')]({'port':0x232a});config[_0x4a1a('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4a1a('0xa'))(new Redis(config[_0x4a1a('0x9')]));require(_0x4a1a('0xb'))['register'](socket);function respondWithRpcPromise(_0xd3d61a,_0x629232,_0x1d5fae){return new BPromise(function(_0x151961,_0x3b8c23){return client[_0x4a1a('0xc')](_0xd3d61a,_0x1d5fae)[_0x4a1a('0xd')](function(_0x7d299c){logger[_0x4a1a('0xe')](_0x4a1a('0xf'),_0x629232,'request\x20sent');logger[_0x4a1a('0x10')](_0x4a1a('0x11'),_0x629232,_0x4a1a('0x12'),JSON['stringify'](_0x7d299c));if(_0x7d299c[_0x4a1a('0x13')]){if(_0x7d299c['error'][_0x4a1a('0x14')]===0x1f4){logger[_0x4a1a('0x13')](_0x4a1a('0xf'),_0x629232,_0x7d299c[_0x4a1a('0x13')][_0x4a1a('0x15')]);return _0x3b8c23(_0x7d299c[_0x4a1a('0x13')][_0x4a1a('0x15')]);}logger[_0x4a1a('0x13')](_0x4a1a('0xf'),_0x629232,_0x7d299c[_0x4a1a('0x13')]['message']);return _0x151961(_0x7d299c[_0x4a1a('0x13')][_0x4a1a('0x15')]);}else{logger['info']('OpenchannelInteraction,\x20%s,\x20%s',_0x629232,'request\x20sent');_0x151961(_0x7d299c[_0x4a1a('0x16')][_0x4a1a('0x15')]);}})['catch'](function(_0x496704){logger[_0x4a1a('0x13')](_0x4a1a('0xf'),_0x629232,_0x496704);_0x3b8c23(_0x496704);});});}exports[_0x4a1a('0x17')]=function(_0x298729){var _0x23d9f3=this;return new Promise(function(_0x427c52,_0x5f2cb9){return db['OpenchannelInteraction'][_0x4a1a('0x18')](_0x298729[_0x4a1a('0x19')],{'raw':_0x298729[_0x4a1a('0x1a')]?_0x298729['options'][_0x4a1a('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x298729[_0x4a1a('0x1a')]?_0x298729[_0x4a1a('0x1a')]['where']||null:null,'attributes':_0x298729[_0x4a1a('0x1a')]?_0x298729[_0x4a1a('0x1a')][_0x4a1a('0x1c')]||null:null,'limit':_0x298729[_0x4a1a('0x1a')]?_0x298729['options']['limit']||null:null})['then'](function(_0x49e078){logger['info']('UpdateOpenchannelInteraction',_0x298729);logger['debug'](_0x4a1a('0x17'),_0x298729,JSON[_0x4a1a('0x1d')](_0x49e078));_0x427c52(_0x49e078);})[_0x4a1a('0x1e')](function(_0x6db945){logger[_0x4a1a('0x13')](_0x4a1a('0x17'),_0x6db945[_0x4a1a('0x15')],_0x298729);_0x5f2cb9(_0x23d9f3['error'](0x1f4,_0x6db945[_0x4a1a('0x15')]));});});};exports[_0x4a1a('0x1f')]=function(_0x5d9403){return new Promise(function(_0x44f44c,_0x342b22){return db[_0x4a1a('0x20')][_0x4a1a('0x21')]({'where':_0x5d9403[_0x4a1a('0x1a')]?_0x5d9403[_0x4a1a('0x1a')][_0x4a1a('0x22')]||null:null})[_0x4a1a('0xd')](function(_0x4ae9a7){if(_0x4ae9a7){return _0x4ae9a7[_0x4a1a('0x23')](_0x5d9403[_0x4a1a('0x19')][_0x4a1a('0x24')],_[_0x4a1a('0x25')](_0x5d9403[_0x4a1a('0x19')],[_0x4a1a('0x24'),'id'])||{});}})['spread'](function(_0x54fcec){logger[_0x4a1a('0xe')](_0x4a1a('0x26'),_0x5d9403);logger[_0x4a1a('0x10')]('AddTags',_0x5d9403,JSON['stringify'](_0x54fcec));_0x44f44c(_0x54fcec);})[_0x4a1a('0x1e')](function(_0x28aff6){logger[_0x4a1a('0x13')]('AddTags',_0x28aff6[_0x4a1a('0x15')],_0x5d9403);_0x342b22(_this[_0x4a1a('0x13')](0x1f4,_0x28aff6[_0x4a1a('0x15')]));});});}; \ No newline at end of file diff --git a/server/api/openchannelInteraction/openchannelInteraction.socket.js b/server/api/openchannelInteraction/openchannelInteraction.socket.js new file mode 100644 index 0000000..c1b8640 --- /dev/null +++ b/server/api/openchannelInteraction/openchannelInteraction.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x46dd=['length','openchannelInteraction:','remove','emit','removeListener','register'];(function(_0x34232c,_0x18e61d){var _0x4d4f4e=function(_0x1aeb3d){while(--_0x1aeb3d){_0x34232c['push'](_0x34232c['shift']());}};_0x4d4f4e(++_0x18e61d);}(_0x46dd,0xe0));var _0xd46d=function(_0x9df3d8,_0x4074e3){_0x9df3d8=_0x9df3d8-0x0;var _0x366da1=_0x46dd[_0x9df3d8];return _0x366da1;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=['save',_0xd46d('0x0'),'update'];function createListener(_0x5309a1,_0x119d70){return function(_0x9e648a){_0x119d70[_0xd46d('0x1')](_0x5309a1,_0x9e648a);};}function removeListener(_0x2221c2,_0x171c65){return function(){OpenchannelInteractionEvents[_0xd46d('0x2')](_0x2221c2,_0x171c65);};}exports[_0xd46d('0x3')]=function(_0x4f9336){for(var _0x424872=0x0,_0x2ace3e=events[_0xd46d('0x4')];_0x424872<_0x2ace3e;_0x424872++){var _0x3a4c10=events[_0x424872];var _0x166b70=createListener(_0xd46d('0x5')+_0x3a4c10,_0x4f9336);OpenchannelInteractionEvents['on'](_0x3a4c10,_0x166b70);}}; \ No newline at end of file diff --git a/server/api/openchannelMessage/index.js b/server/api/openchannelMessage/index.js new file mode 100644 index 0000000..d5dbda4 --- /dev/null +++ b/server/api/openchannelMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0xc988e4,_0x4e3b13){var _0x2c9d58=function(_0x516967){while(--_0x516967){_0xc988e4['push'](_0xc988e4['shift']());}};_0x2c9d58(++_0x4e3b13);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'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 diff --git a/server/api/openchannelMessage/openchannelMessage.attributes.js b/server/api/openchannelMessage/openchannelMessage.attributes.js new file mode 100644 index 0000000..94f59b1 --- /dev/null +++ b/server/api/openchannelMessage/openchannelMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6599=['out','DATE','exports','TEXT','medium','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6599,0xb0));var _0x9659=function(_0xcf5436,_0x4632c3){_0xcf5436=_0xcf5436-0x0;var _0xc4f5c8=_0x6599[_0xcf5436];return _0xc4f5c8;};'use strict';var Sequelize=require('sequelize');module[_0x9659('0x0')]={'body':{'type':Sequelize[_0x9659('0x1')](_0x9659('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x9659('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x9659('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x9659('0x4')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x9659('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x9659('0x1')]}}; \ No newline at end of file diff --git a/server/api/openchannelMessage/openchannelMessage.controller.js b/server/api/openchannelMessage/openchannelMessage.controller.js new file mode 100644 index 0000000..b8e6000 --- /dev/null +++ b/server/api/openchannelMessage/openchannelMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e4=['null','RejectMessage','rejectMessage','ContactId','QueryTypes','event','rejectmessage','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','redis','defaults','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','stack','name','send','index','map','OpenchannelMessage','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','keys','find','create','body','describe','openchannel-interactions','accept','openchannel','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','motionChannel','channel','EventManager','acceptmessage','reject','agent'];(function(_0x3f98d8,_0x1a5355){var _0x10e3ef=function(_0x4fe601){while(--_0x4fe601){_0x3f98d8['push'](_0x3f98d8['shift']());}};_0x10e3ef(++_0x1a5355);}(_0xa9e4,0x89));var _0x4a9e=function(_0x1fce3,_0x1de8c8){_0x1fce3=_0x1fce3-0x0;var _0x4538d7=_0xa9e4[_0x1fce3];return _0x4538d7;};'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'];config[_0x4a9e('0x16')]=_[_0x4a9e('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4a9e('0x16')]));require(_0x4a9e('0x18'))[_0x4a9e('0x19')](socket);var jayson=require(_0x4a9e('0x1a'));var client=jayson[_0x4a9e('0x1b')]['http']({'port':0x232c});var client9002=jayson[_0x4a9e('0x1b')][_0x4a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x242009,_0x44c541,_0x5ce430,_0x118eb9){return new BPromise(function(_0xb9b919,_0x278efc){var _0x5d6bf2=_0x118eb9||client;return _0x5d6bf2[_0x4a9e('0x1d')](_0x242009,_0x5ce430)[_0x4a9e('0x1e')](function(_0x460222){logger[_0x4a9e('0x1f')](_0x4a9e('0x20'),_0x44c541,_0x4a9e('0x21'));logger[_0x4a9e('0x22')](_0x4a9e('0x23'),_0x44c541,_0x4a9e('0x21'),JSON['stringify'](_0x460222));if(_0x460222[_0x4a9e('0x24')]){if(_0x460222[_0x4a9e('0x24')][_0x4a9e('0x25')]===0x1f4){logger[_0x4a9e('0x24')](_0x4a9e('0x20'),_0x44c541,_0x460222[_0x4a9e('0x24')][_0x4a9e('0x26')]);return _0x278efc(_0x460222[_0x4a9e('0x24')][_0x4a9e('0x26')]);}logger[_0x4a9e('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x44c541,_0x460222[_0x4a9e('0x24')][_0x4a9e('0x26')]);return _0xb9b919(_0x460222[_0x4a9e('0x24')]['message']);}else{logger[_0x4a9e('0x1f')]('OpenchannelMessage,\x20%s,\x20%s',_0x44c541,'request\x20sent');_0xb9b919(_0x460222[_0x4a9e('0x27')]['message']);}})['catch'](function(_0x36f5ff){logger[_0x4a9e('0x24')](_0x4a9e('0x20'),_0x44c541,_0x36f5ff);_0x278efc(_0x36f5ff);});});}function respondWithStatusCode(_0x5d0835,_0x4304ff){_0x4304ff=_0x4304ff||0xcc;return function(_0x50e032){if(_0x50e032){return _0x5d0835[_0x4a9e('0x28')](_0x4304ff);}return _0x5d0835[_0x4a9e('0x29')](_0x4304ff)[_0x4a9e('0x2a')]();};}function respondWithResult(_0x392802,_0xd4a13f){_0xd4a13f=_0xd4a13f||0xc8;return function(_0x33def4){if(_0x33def4){return _0x392802['status'](_0xd4a13f)[_0x4a9e('0x2b')](_0x33def4);}};}function respondWithFilteredResult(_0xf8e888,_0x335b0c){return function(_0x23e068){if(_0x23e068){var _0x4670bb=typeof _0x335b0c['offset']===_0x4a9e('0x2c')&&typeof _0x335b0c[_0x4a9e('0x2d')]===_0x4a9e('0x2c');var _0x2aa8c4=_0x23e068[_0x4a9e('0x2e')];var _0xfbab36=_0x4670bb?0x0:_0x335b0c['offset'];var _0x34fb76=_0x4670bb?_0x23e068[_0x4a9e('0x2e')]:_0x335b0c[_0x4a9e('0x2f')]+_0x335b0c[_0x4a9e('0x2d')];var _0x2b838d;if(_0x34fb76>=_0x2aa8c4){_0x34fb76=_0x2aa8c4;_0x2b838d=0xc8;}else{_0x2b838d=0xce;}_0xf8e888[_0x4a9e('0x29')](_0x2b838d);return _0xf8e888[_0x4a9e('0x30')](_0x4a9e('0x31'),_0xfbab36+'-'+_0x34fb76+'/'+_0x2aa8c4)[_0x4a9e('0x2b')](_0x23e068);}return null;};}function patchUpdates(_0x18753d){return function(_0x46124f){try{jsonpatch[_0x4a9e('0x32')](_0x46124f,_0x18753d,!![]);}catch(_0x4f414f){return BPromise['reject'](_0x4f414f);}return _0x46124f[_0x4a9e('0x33')]();};}function saveUpdates(_0x101be3,_0x20bb6a){return function(_0x5cb6a3){if(_0x5cb6a3){return _0x5cb6a3[_0x4a9e('0x34')](_0x101be3)[_0x4a9e('0x1e')](function(_0x262ac7){return _0x262ac7;});}return null;};}function removeEntity(_0x5a853e,_0x175bd0){return function(_0x43c104){if(_0x43c104){return _0x43c104[_0x4a9e('0x35')]()[_0x4a9e('0x1e')](function(){_0x5a853e[_0x4a9e('0x29')](0xcc)[_0x4a9e('0x2a')]();});}};}function handleEntityNotFound(_0x30c9c0,_0x257eb0){return function(_0x1a152d){if(!_0x1a152d){_0x30c9c0[_0x4a9e('0x28')](0x194);}return _0x1a152d;};}function handleError(_0x104053,_0x496aaf){_0x496aaf=_0x496aaf||0x1f4;return function(_0x5df7aa){logger[_0x4a9e('0x24')](_0x5df7aa[_0x4a9e('0x36')]);if(_0x5df7aa[_0x4a9e('0x37')]){delete _0x5df7aa[_0x4a9e('0x37')];}_0x104053[_0x4a9e('0x29')](_0x496aaf)[_0x4a9e('0x38')](_0x5df7aa);};}exports[_0x4a9e('0x39')]=function(_0x569443,_0x2ee8b9){var _0x3e2ac6={},_0x5156fd={},_0x1c5faf={'count':0x0,'rows':[]};var _0x598351=_[_0x4a9e('0x3a')](db[_0x4a9e('0x3b')][_0x4a9e('0x3c')],function(_0x38f886){return{'name':_0x38f886['fieldName'],'type':_0x38f886[_0x4a9e('0x3d')]['key']};});_0x5156fd[_0x4a9e('0x3e')]=_[_0x4a9e('0x3a')](_0x598351,'name');_0x5156fd[_0x4a9e('0x3f')]=_['keys'](_0x569443[_0x4a9e('0x3f')]);_0x5156fd[_0x4a9e('0x40')]=_[_0x4a9e('0x41')](_0x5156fd[_0x4a9e('0x3e')],_0x5156fd[_0x4a9e('0x3f')]);_0x3e2ac6['attributes']=_[_0x4a9e('0x41')](_0x5156fd[_0x4a9e('0x3e')],qs[_0x4a9e('0x42')](_0x569443[_0x4a9e('0x3f')]['fields']));_0x3e2ac6[_0x4a9e('0x43')]=_0x3e2ac6[_0x4a9e('0x43')][_0x4a9e('0x44')]?_0x3e2ac6['attributes']:_0x5156fd[_0x4a9e('0x3e')];if(!_0x569443[_0x4a9e('0x3f')][_0x4a9e('0x45')](_0x4a9e('0x46'))){_0x3e2ac6['limit']=qs[_0x4a9e('0x2d')](_0x569443[_0x4a9e('0x3f')][_0x4a9e('0x2d')]);_0x3e2ac6[_0x4a9e('0x2f')]=qs['offset'](_0x569443['query'][_0x4a9e('0x2f')]);}_0x3e2ac6[_0x4a9e('0x47')]=qs[_0x4a9e('0x48')](_0x569443[_0x4a9e('0x3f')][_0x4a9e('0x48')]);_0x3e2ac6[_0x4a9e('0x49')]=qs[_0x4a9e('0x40')](_[_0x4a9e('0x4a')](_0x569443[_0x4a9e('0x3f')],_0x5156fd['filters']),_0x598351);if(_0x569443[_0x4a9e('0x3f')][_0x4a9e('0x4b')]){_0x3e2ac6['where']=_[_0x4a9e('0x4c')](_0x3e2ac6[_0x4a9e('0x49')],{'$or':_['map'](_0x598351,function(_0x4aaa4d){if(_0x4aaa4d['type']!==_0x4a9e('0x4d')){var _0x43c0af={};_0x43c0af[_0x4aaa4d['name']]={'$like':'%'+_0x569443[_0x4a9e('0x3f')][_0x4a9e('0x4b')]+'%'};return _0x43c0af;}})});}_0x3e2ac6=_[_0x4a9e('0x4c')]({},_0x3e2ac6,_0x569443[_0x4a9e('0x4e')]);var _0x5d27eb={'where':_0x3e2ac6[_0x4a9e('0x49')]};return db[_0x4a9e('0x3b')][_0x4a9e('0x2e')](_0x5d27eb)['then'](function(_0x4baea5){_0x1c5faf['count']=_0x4baea5;if(_0x569443['query']['includeAll']){_0x3e2ac6[_0x4a9e('0x4f')]=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x3e2ac6);})[_0x4a9e('0x1e')](function(_0x5763d7){_0x1c5faf[_0x4a9e('0x50')]=_0x5763d7;return _0x1c5faf;})[_0x4a9e('0x1e')](respondWithFilteredResult(_0x2ee8b9,_0x3e2ac6))[_0x4a9e('0x51')](handleError(_0x2ee8b9,null));};exports[_0x4a9e('0x52')]=function(_0x1e3bbe,_0x556146){var _0x298e36={'raw':!![],'where':{'id':_0x1e3bbe[_0x4a9e('0x53')]['id']}},_0x4261a6={};_0x4261a6[_0x4a9e('0x3e')]=_[_0x4a9e('0x54')](db[_0x4a9e('0x3b')][_0x4a9e('0x3c')]);_0x4261a6[_0x4a9e('0x3f')]=_[_0x4a9e('0x54')](_0x1e3bbe[_0x4a9e('0x3f')]);_0x4261a6['filters']=_[_0x4a9e('0x41')](_0x4261a6[_0x4a9e('0x3e')],_0x4261a6[_0x4a9e('0x3f')]);_0x298e36[_0x4a9e('0x43')]=_['intersection'](_0x4261a6[_0x4a9e('0x3e')],qs[_0x4a9e('0x42')](_0x1e3bbe[_0x4a9e('0x3f')][_0x4a9e('0x42')]));_0x298e36[_0x4a9e('0x43')]=_0x298e36[_0x4a9e('0x43')][_0x4a9e('0x44')]?_0x298e36[_0x4a9e('0x43')]:_0x4261a6[_0x4a9e('0x3e')];if(_0x1e3bbe[_0x4a9e('0x3f')]['includeAll']){_0x298e36['include']=[{'all':!![]}];}_0x298e36=_['merge']({},_0x298e36,_0x1e3bbe[_0x4a9e('0x4e')]);return db[_0x4a9e('0x3b')][_0x4a9e('0x55')](_0x298e36)['then'](handleEntityNotFound(_0x556146,null))[_0x4a9e('0x1e')](respondWithResult(_0x556146,null))['catch'](handleError(_0x556146,null));};exports[_0x4a9e('0x56')]=function(_0x4fa9b0,_0x539774){return db['OpenchannelMessage'][_0x4a9e('0x56')](_0x4fa9b0['body'],{})[_0x4a9e('0x1e')](respondWithResult(_0x539774,0xc9))[_0x4a9e('0x51')](handleError(_0x539774,null));};exports['update']=function(_0x458623,_0x4b4c0e){if(_0x458623[_0x4a9e('0x57')]['id']){delete _0x458623['body']['id'];}return db[_0x4a9e('0x3b')][_0x4a9e('0x55')]({'where':{'id':_0x458623[_0x4a9e('0x53')]['id']}})[_0x4a9e('0x1e')](handleEntityNotFound(_0x4b4c0e,null))['then'](saveUpdates(_0x458623[_0x4a9e('0x57')],null))[_0x4a9e('0x1e')](respondWithResult(_0x4b4c0e,null))[_0x4a9e('0x51')](handleError(_0x4b4c0e,null));};exports[_0x4a9e('0x35')]=function(_0x3e73b7,_0x1b97b5){return db['OpenchannelMessage'][_0x4a9e('0x55')]({'where':{'id':_0x3e73b7['params']['id']}})[_0x4a9e('0x1e')](handleEntityNotFound(_0x1b97b5,null))[_0x4a9e('0x1e')](removeEntity(_0x1b97b5,null))[_0x4a9e('0x51')](handleError(_0x1b97b5,null));};exports[_0x4a9e('0x58')]=function(_0x3ab665,_0x402ae2){return db[_0x4a9e('0x3b')][_0x4a9e('0x58')]()['then'](respondWithResult(_0x402ae2,null))[_0x4a9e('0x51')](handleError(_0x402ae2,null));};var interaction_log=require(_0x4a9e('0x14'))(_0x4a9e('0x59'));exports[_0x4a9e('0x5a')]=function(_0x378c49,_0x32c8ad,_0x4950da){var _0x1d0c62={'agent':{},'channel':_0x4a9e('0x5b')};if(_0x378c49['body']['id']){delete _0x378c49[_0x4a9e('0x57')]['id'];}_0x378c49['body']['read']=!![];_0x378c49[_0x4a9e('0x57')]['readAt']=moment()[_0x4a9e('0x5c')](_0x4a9e('0x5d'));_0x378c49[_0x4a9e('0x57')][_0x4a9e('0x5e')]=_0x378c49[_0x4a9e('0x57')]['UserId']||_0x378c49[_0x4a9e('0x5f')]['id'];_0x1d0c62['agent']['id']=_0x378c49[_0x4a9e('0x57')]['UserId'];return db[_0x4a9e('0x3b')]['find']({'where':{'id':_0x378c49[_0x4a9e('0x53')]['id'],'UserId':null}})[_0x4a9e('0x1e')](handleEntityNotFound(_0x32c8ad,null))[_0x4a9e('0x1e')](saveUpdates(_0x378c49[_0x4a9e('0x57')],null))[_0x4a9e('0x1e')](function(_0x262cf6){if(_0x262cf6){_0x1d0c62[_0x4a9e('0x26')]=_0x262cf6['get']({'plain':!![]});return db[_0x4a9e('0x60')]['find']({'where':{'id':_0x262cf6[_0x4a9e('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x32c8ad,null))['then'](function(_0x3bcce1){if(_0x3bcce1){return _0x3bcce1[_0x4a9e('0x34')]({'UserId':_0x378c49[_0x4a9e('0x57')][_0x4a9e('0x5e')],'read1stAt':_[_0x4a9e('0x62')](_0x3bcce1[_0x4a9e('0x63')])?moment()[_0x4a9e('0x5c')](_0x4a9e('0x5d')):undefined});}return null;})['then'](function(_0x1853a5){if(_0x1853a5){_0x1d0c62[_0x4a9e('0x64')]=_0x1853a5[_0x4a9e('0x65')]({'plain':!![]});interaction_log[_0x4a9e('0x1f')](_0x4a9e('0x66'),_0x378c49[_0x4a9e('0x5f')]['id'],_0x378c49[_0x4a9e('0x5f')]['name'],_0x378c49['user'][_0x4a9e('0x67')],_0x1d0c62[_0x4a9e('0x64')]['id'],_0x378c49[_0x4a9e('0x57')]?JSON['stringify'](_0x378c49[_0x4a9e('0x57')]):'null');return respondWithRpcPromise(_0x4a9e('0x68'),_0x4a9e('0x69'),_0x1d0c62);}return null;})['then'](function(_0x21d657){var _0x385db4=_0x4a9e('0x6a')+_0x21d657[_0x4a9e('0x26')]['ContactId'];return db[_0x4a9e('0x6b')]['query'](_0x385db4,{'type':db['Sequelize']['QueryTypes'][_0x4a9e('0x6c')],'raw':!![]})[_0x4a9e('0x1e')](function(_0x57731e){return _0x57731e;});})[_0x4a9e('0x1e')](function(_0x4fb346){if(_0x4fb346){_0x1d0c62[_0x4a9e('0x26')][_0x4a9e('0x6d')]=_0x4fb346[0x0];if(!_0x378c49[_0x4a9e('0x57')][_0x4a9e('0x5e')])return;return db[_0x4a9e('0x6e')][_0x4a9e('0x55')]({'where':{'id':_0x378c49[_0x4a9e('0x57')][_0x4a9e('0x5e')],'role':'agent'},'attributes':['id','name',_0x4a9e('0x6f'),_0x4a9e('0x70'),_0x4a9e('0x71')],'raw':!![]});}return null;})[_0x4a9e('0x1e')](function(_0x345565){if(!_0x345565)return null;_0x1d0c62['message']['agent']=_0x345565;return _0x1d0c62;})[_0x4a9e('0x1e')](function(_0x115907){if(_0x115907){if(_0x378c49['body'][_0x4a9e('0x72')]){_0x1d0c62[_0x4a9e('0x26')][_0x4a9e('0x73')]=util[_0x4a9e('0x5c')](_0x4a9e('0x74'),_0x378c49[_0x4a9e('0x5f')]['name']);_0x1d0c62['message']['channel']=_0x1d0c62['channel'];_0x1d0c62['message'][_0x4a9e('0x75')]=_0x1d0c62[_0x4a9e('0x76')];_0x1d0c62[_0x4a9e('0x26')]['event']=_0x4a9e('0x5a');return respondWithRpcPromise(_0x4a9e('0x77'),_0x4a9e('0x77'),{'event':_0x4a9e('0x78'),'message':_0x1d0c62[_0x4a9e('0x26')]},client9002)[_0x4a9e('0x1e')](function(){return _0x1d0c62;});}return _0x1d0c62;}return null;})['then'](respondWithResult(_0x32c8ad,null))['catch'](handleError(_0x32c8ad,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x4a9e('0x79')]=function(_0x259526,_0x4a4ea5,_0x481013){var _0x1f6d6d={'agent':{},'channel':'openchannel'};if(_0x259526[_0x4a9e('0x57')]['id']){delete _0x259526[_0x4a9e('0x57')]['id'];}_0x259526['body'][_0x4a9e('0x5e')]=_0x259526[_0x4a9e('0x57')]['UserId']||_0x259526[_0x4a9e('0x5f')]['id'];_0x1f6d6d[_0x4a9e('0x7a')]['id']=_0x259526['body'][_0x4a9e('0x5e')];return db[_0x4a9e('0x3b')]['find']({'where':{'id':_0x259526[_0x4a9e('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4a4ea5,null))[_0x4a9e('0x1e')](function(_0x532c19){if(_0x532c19){_0x1f6d6d[_0x4a9e('0x26')]=_0x532c19[_0x4a9e('0x65')]({'plain':!![]});return db['OpenchannelInteraction'][_0x4a9e('0x55')]({'where':{'id':_0x532c19[_0x4a9e('0x61')]}});}return null;})[_0x4a9e('0x1e')](handleEntityNotFound(_0x4a4ea5,null))['then'](function(_0x3278c3){if(_0x3278c3){_0x1f6d6d[_0x4a9e('0x64')]=_0x3278c3[_0x4a9e('0x65')]({'plain':!![]});interaction_log[_0x4a9e('0x1f')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x259526[_0x4a9e('0x5f')]['id'],_0x259526['user']['name'],_0x259526[_0x4a9e('0x5f')][_0x4a9e('0x67')],_0x1f6d6d[_0x4a9e('0x64')]['id'],_0x259526[_0x4a9e('0x57')]?JSON['stringify'](_0x259526[_0x4a9e('0x57')]):_0x4a9e('0x7b'));return respondWithRpcPromise(_0x4a9e('0x7c'),_0x4a9e('0x7d'),_0x1f6d6d);}return null;})[_0x4a9e('0x1e')](function(_0x2a2531){var _0xb9d170='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2a2531['message'][_0x4a9e('0x7e')];return db[_0x4a9e('0x6b')][_0x4a9e('0x3f')](_0xb9d170,{'type':db['Sequelize'][_0x4a9e('0x7f')][_0x4a9e('0x6c')],'raw':!![]})[_0x4a9e('0x1e')](function(_0x3d6488){return _0x3d6488;});})[_0x4a9e('0x1e')](function(_0x5946a6){if(_0x5946a6){_0x1f6d6d[_0x4a9e('0x26')][_0x4a9e('0x6d')]=_0x5946a6[0x0];if(!_0x259526[_0x4a9e('0x57')]['UserId'])return;return db['User'][_0x4a9e('0x55')]({'where':{'id':_0x259526[_0x4a9e('0x57')][_0x4a9e('0x5e')],'role':'agent'},'attributes':['id','name',_0x4a9e('0x6f'),'email',_0x4a9e('0x71')],'raw':!![]});}return null;})[_0x4a9e('0x1e')](function(_0x5b94ce){if(!_0x5b94ce)return null;_0x1f6d6d['message'][_0x4a9e('0x7a')]=_0x5b94ce;return _0x1f6d6d;})['then'](function(_0xf0c854){if(_0xf0c854){_0xf0c854['message'][_0x4a9e('0x73')]=util[_0x4a9e('0x5c')](_0x4a9e('0x74'),_0x259526[_0x4a9e('0x5f')][_0x4a9e('0x37')]);_0xf0c854[_0x4a9e('0x26')][_0x4a9e('0x76')]=_0x1f6d6d['channel'];_0xf0c854[_0x4a9e('0x26')][_0x4a9e('0x75')]=_0x1f6d6d[_0x4a9e('0x76')];_0xf0c854[_0x4a9e('0x26')][_0x4a9e('0x80')]='reject';respondWithRpcPromise(_0x4a9e('0x77'),_0x4a9e('0x77'),{'event':_0x4a9e('0x81'),'message':_0xf0c854[_0x4a9e('0x26')]},client9002);return _0x1f6d6d;}return null;})[_0x4a9e('0x1e')](respondWithResult(_0x4a4ea5,null))[_0x4a9e('0x51')](handleError(_0x4a4ea5,null));}; \ No newline at end of file diff --git a/server/api/openchannelMessage/openchannelMessage.events.js b/server/api/openchannelMessage/openchannelMessage.events.js new file mode 100644 index 0000000..920fd65 --- /dev/null +++ b/server/api/openchannelMessage/openchannelMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe926=['save','update','remove','emit','hook','exports','events','OpenchannelMessage'];(function(_0xa8e041,_0x1348af){var _0x330b32=function(_0x31f4ef){while(--_0x31f4ef){_0xa8e041['push'](_0xa8e041['shift']());}};_0x330b32(++_0x1348af);}(_0xe926,0x15e));var _0x6e92=function(_0x1d0499,_0x23e22f){_0x1d0499=_0x1d0499-0x0;var _0x153fb3=_0xe926[_0x1d0499];return _0x153fb3;};'use strict';var EventEmitter=require(_0x6e92('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x6e92('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6e92('0x2'),'afterUpdate':_0x6e92('0x3'),'afterDestroy':_0x6e92('0x4')};function emitEvent(_0x3ae01e){return function(_0x1f3638,_0x438867,_0x6478c8){OpenchannelMessageEvents[_0x6e92('0x5')](_0x3ae01e+':'+_0x1f3638['id'],_0x1f3638);OpenchannelMessageEvents[_0x6e92('0x5')](_0x3ae01e,_0x1f3638);_0x6478c8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x6e92('0x6')](e,emitEvent(event));}}module[_0x6e92('0x7')]=OpenchannelMessageEvents; \ No newline at end of file diff --git a/server/api/openchannelMessage/openchannelMessage.model.js b/server/api/openchannelMessage/openchannelMessage.model.js new file mode 100644 index 0000000..e45fe80 --- /dev/null +++ b/server/api/openchannelMessage/openchannelMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfff3=['format','Forwarding\x20message\x20%d\x20to\x20%s','length','POST','method','GET','body','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./openchannelMessage.attributes','exports','define','openchannel_messages','FULLTEXT','direction','toLowerCase','out','secret','isNil','UserId','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','describe','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','Contact','keys','get','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate'];(function(_0x2c3255,_0x4e00ae){var _0x282aba=function(_0x5721d5){while(--_0x5721d5){_0x2c3255['push'](_0x2c3255['shift']());}};_0x282aba(++_0x4e00ae);}(_0xfff3,0x1d9));var _0x3fff=function(_0x5b8fa5,_0x35f163){_0x5b8fa5=_0x5b8fa5-0x0;var _0x504056=_0xfff3[_0x5b8fa5];return _0x504056;};'use strict';var _=require(_0x3fff('0x0'));var util=require(_0x3fff('0x1'));var logger=require(_0x3fff('0x2'))(_0x3fff('0x3'));var moment=require(_0x3fff('0x4'));var BPromise=require(_0x3fff('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3fff('0x6'));var config=require('../../config/environment');var attributes=require(_0x3fff('0x7'));module[_0x3fff('0x8')]=function(_0x46e26f,_0x118904){return _0x46e26f[_0x3fff('0x9')]('OpenchannelMessage',attributes,{'tableName':_0x3fff('0xa'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':['body'],'type':_0x3fff('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x35d8bd,_0x4872b0,_0x589401){var _0x49b269=_0x46e26f['models'];var _0x36dc47=_0x35d8bd['get']({'plain':!![]});if(_0x36dc47[_0x3fff('0xc')][_0x3fff('0xd')]()==='in'||_0x36dc47[_0x3fff('0xc')][_0x3fff('0xd')]()===_0x3fff('0xe')&&!_0x36dc47[_0x3fff('0xf')]&&!_[_0x3fff('0x10')](_0x36dc47[_0x3fff('0x11')])){_0x49b269['OpenchannelInteraction'][_0x3fff('0x12')]({'where':{'id':_0x36dc47[_0x3fff('0x13')]}})[_0x3fff('0x14')](function(_0x4be5cb){if(_0x4be5cb){_0x4be5cb[_0x3fff('0x15')]({'lastMsgAt':_0x36dc47[_0x3fff('0x16')],'lastMsgDirection':_0x36dc47[_0x3fff('0xc')]['toLowerCase']()});}})[_0x3fff('0x17')](function(_0x53cf9c){console[_0x3fff('0x18')](_0x53cf9c);});}if(_0x36dc47['direction']===_0x3fff('0xe')&&!_0x36dc47[_0x3fff('0xf')]){var _0x33bf18;_0x49b269[_0x3fff('0x19')][_0x3fff('0x1a')]()[_0x3fff('0x14')](function(_0xb303e1){return _0x49b269['OpenchannelAccount'][_0x3fff('0x1b')]({'where':{'id':_0x36dc47[_0x3fff('0x1c')]},'include':[{'model':_0x49b269[_0x3fff('0x1d')],'as':_0x3fff('0x1e'),'where':{'id':_0x36dc47[_0x3fff('0x13')]},'limit':0x1,'include':[{'model':_0x49b269[_0x3fff('0x19')],'as':_0x3fff('0x1f'),'attributes':_[_0x3fff('0x20')](_0xb303e1)}]}]});})[_0x3fff('0x14')](function(_0x246a34){_0x33bf18=_0x246a34[_0x3fff('0x21')]({'plain':!![]});if(_0x33bf18&&_0x33bf18[_0x3fff('0x22')]){logger['info'](_0x3fff('0x23'),_0x3fff('0x24'),util[_0x3fff('0x25')](_0x3fff('0x26'),_0x36dc47['id'],_0x33bf18['replyUri']));if(_0x33bf18[_0x3fff('0x1e')]&&_0x33bf18['Interactions'][_0x3fff('0x27')]){_0x36dc47['Interaction']=_['omit'](_0x33bf18[_0x3fff('0x1e')][0x0],_0x3fff('0x1f'));_0x36dc47[_0x3fff('0x1f')]=_0x33bf18[_0x3fff('0x1e')][0x0][_0x3fff('0x1f')];}var _0x4872b0={'method':_0x3fff('0x28'),'uri':encodeURI(_0x33bf18[_0x3fff('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x4872b0[_0x3fff('0x29')]){case _0x3fff('0x2a'):_0x4872b0['qs']=_0x36dc47;break;case _0x3fff('0x28'):_0x4872b0[_0x3fff('0x2b')]=_0x36dc47;break;}return rp(_0x4872b0)[_0x3fff('0x14')](function(_0x28852e){logger['info'](_0x3fff('0x23'),_0x3fff('0x24'),util[_0x3fff('0x25')](_0x3fff('0x2c'),_0x36dc47['id'],_0x33bf18[_0x3fff('0x22')]));if(_0x28852e[_0x3fff('0x2b')][_0x3fff('0x2d')]&&_0x28852e[_0x3fff('0x2b')][_0x3fff('0x2d')]!=_0x36dc47['Interaction'][_0x3fff('0x2d')]){return _0x49b269['OpenchannelInteraction'][_0x3fff('0x15')]({'threadId':_0x28852e[_0x3fff('0x2b')][_0x3fff('0x2d')]},{'where':{'id':_0x36dc47[_0x3fff('0x2e')]['id']}});}else{return;}})['then'](function(){return _0x35d8bd[_0x3fff('0x15')]({'read':!![]});})[_0x3fff('0x17')](function(_0x46b4f8){logger[_0x3fff('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x3fff('0x24'),util[_0x3fff('0x2f')](_0x46b4f8,{'showHidden':![],'depth':null}));_0x589401();});}else{_0x589401();}})[_0x3fff('0x30')](function(){_0x589401();});}else{_0x589401();}}},'charset':_0x3fff('0x31'),'collate':_0x3fff('0x32')});}; \ No newline at end of file diff --git a/server/api/openchannelMessage/openchannelMessage.rpc.js b/server/api/openchannelMessage/openchannelMessage.rpc.js new file mode 100644 index 0000000..56d688c --- /dev/null +++ b/server/api/openchannelMessage/openchannelMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3fc807,_0x16ee12){var _0x2a4b4d=function(_0x2101f4){while(--_0x2101f4){_0x3fc807['push'](_0x3fc807['shift']());}};_0x2a4b4d(++_0x16ee12);}(_0x1261,0x144));var _0x1126=function(_0x411b14,_0x3f9e36){_0x411b14=_0x411b14-0x0;var _0x402736=_0x1261[_0x411b14];return _0x402736;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});}; \ No newline at end of file diff --git a/server/api/openchannelMessage/openchannelMessage.socket.js b/server/api/openchannelMessage/openchannelMessage.socket.js new file mode 100644 index 0000000..350fd0b --- /dev/null +++ b/server/api/openchannelMessage/openchannelMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x757a=['update','emit','removeListener','length','openchannelMessage:','save'];(function(_0x8dbc64,_0x17362d){var _0x2645ca=function(_0x24f6fc){while(--_0x24f6fc){_0x8dbc64['push'](_0x8dbc64['shift']());}};_0x2645ca(++_0x17362d);}(_0x757a,0x1af));var _0xa757=function(_0x2d2237,_0x5bd828){_0x2d2237=_0x2d2237-0x0;var _0x115f10=_0x757a[_0x2d2237];return _0x115f10;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xa757('0x0'),'remove',_0xa757('0x1')];function createListener(_0x53364d,_0x53eaeb){return function(_0x919482){_0x53eaeb[_0xa757('0x2')](_0x53364d,_0x919482);};}function removeListener(_0x468559,_0x339299){return function(){OpenchannelMessageEvents[_0xa757('0x3')](_0x468559,_0x339299);};}exports['register']=function(_0x410ed1){for(var _0x2e804c=0x0,_0x155b42=events[_0xa757('0x4')];_0x2e804c<_0x155b42;_0x2e804c++){var _0x186a9b=events[_0x2e804c];var _0x3fd774=createListener(_0xa757('0x5')+_0x186a9b,_0x410ed1);OpenchannelMessageEvents['on'](_0x186a9b,_0x3fd774);}}; \ No newline at end of file diff --git a/server/api/openchannelQueue/index.js b/server/api/openchannelQueue/index.js new file mode 100644 index 0000000..ab2f422 --- /dev/null +++ b/server/api/openchannelQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xec82=['show','/:id/members','/:id/teams','/:id/users','create','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x50ce16,_0x59e64b){var _0x30f4d7=function(_0x1cd2ee){while(--_0x1cd2ee){_0x50ce16['push'](_0x50ce16['shift']());}};_0x30f4d7(++_0x59e64b);}(_0xec82,0xcf));var _0x2ec8=function(_0xa92b87,_0x260182){_0xa92b87=_0xa92b87-0x0;var _0x261faf=_0xec82[_0xa92b87];return _0x261faf;};'use strict';var multer=require(_0x2ec8('0x0'));var util=require(_0x2ec8('0x1'));var path=require(_0x2ec8('0x2'));var timeout=require(_0x2ec8('0x3'));var express=require(_0x2ec8('0x4'));var router=express[_0x2ec8('0x5')]();var fs_extra=require(_0x2ec8('0x6'));var auth=require(_0x2ec8('0x7'));var interaction=require(_0x2ec8('0x8'));var config=require(_0x2ec8('0x9'));var controller=require(_0x2ec8('0xa'));router[_0x2ec8('0xb')]('/',auth[_0x2ec8('0xc')](),controller[_0x2ec8('0xd')]);router[_0x2ec8('0xb')](_0x2ec8('0xe'),auth[_0x2ec8('0xc')](),controller[_0x2ec8('0xf')]);router[_0x2ec8('0xb')](_0x2ec8('0x10'),auth[_0x2ec8('0xc')](),controller[_0x2ec8('0x11')]);router['get'](_0x2ec8('0x12'),auth['isAuthenticated'](),controller['getMembers']);router[_0x2ec8('0xb')](_0x2ec8('0x13'),auth['isAuthenticated'](),controller['getTeams']);router[_0x2ec8('0xb')](_0x2ec8('0x14'),auth[_0x2ec8('0xc')](),controller['getAgents']);router['post']('/',auth[_0x2ec8('0xc')](),controller[_0x2ec8('0x15')]);router[_0x2ec8('0x16')]('/:id/teams',auth['isAuthenticated'](),controller[_0x2ec8('0x17')]);router[_0x2ec8('0x16')]('/:id/users',auth['isAuthenticated'](),controller[_0x2ec8('0x18')]);router[_0x2ec8('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x2ec8('0x1a')]);router[_0x2ec8('0x1b')](_0x2ec8('0x10'),auth[_0x2ec8('0xc')](),controller[_0x2ec8('0x1c')]);router[_0x2ec8('0x1b')](_0x2ec8('0x13'),auth[_0x2ec8('0xc')](),controller[_0x2ec8('0x1d')]);router[_0x2ec8('0x1b')](_0x2ec8('0x14'),auth['isAuthenticated'](),controller[_0x2ec8('0x1e')]);module[_0x2ec8('0x1f')]=router; \ No newline at end of file diff --git a/server/api/openchannelQueue/openchannelQueue.attributes.js b/server/api/openchannelQueue/openchannelQueue.attributes.js new file mode 100644 index 0000000..4f3761a --- /dev/null +++ b/server/api/openchannelQueue/openchannelQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3f30=['STRING','INTEGER','ENUM','rrmemory','beepall','sequelize','exports','name'];(function(_0x47e69e,_0x398963){var _0x302e7f=function(_0x3ca5b1){while(--_0x3ca5b1){_0x47e69e['push'](_0x47e69e['shift']());}};_0x302e7f(++_0x398963);}(_0x3f30,0xfd));var _0x03f3=function(_0x12c705,_0x56b9b3){_0x12c705=_0x12c705-0x0;var _0x4c826f=_0x3f30[_0x12c705];return _0x4c826f;};'use strict';var Sequelize=require(_0x03f3('0x0'));module[_0x03f3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x03f3('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x03f3('0x3')]},'timeout':{'type':Sequelize[_0x03f3('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x03f3('0x5')](_0x03f3('0x6'),_0x03f3('0x7'),'roundrobin')}}; \ No newline at end of file diff --git a/server/api/openchannelQueue/openchannelQueue.controller.js b/server/api/openchannelQueue/openchannelQueue.controller.js new file mode 100644 index 0000000..2b24048 --- /dev/null +++ b/server/api/openchannelQueue/openchannelQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x911d=['find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','UserId','openchannelPause','createdAt','format','%s/%s','SIP','getTeams','addTeams','Team','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','ids','select','field','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','all','union','value','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','sort','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','OpenchannelQueue','rawAttributes','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','map','type','options','includeAll','findAll','rows','catch','show','params','keys','include','create','body','user','UserProfileSection'];(function(_0x2f2ed0,_0x1c6435){var _0x250b0d=function(_0x1909c1){while(--_0x1909c1){_0x2f2ed0['push'](_0x2f2ed0['shift']());}};_0x250b0d(++_0x1c6435);}(_0x911d,0xc5));var _0xd911=function(_0x25948f,_0x4ac7e4){_0x25948f=_0x25948f-0x0;var _0x2b1976=_0x911d[_0x25948f];return _0x2b1976;};'use strict';var emlformat=require(_0xd911('0x0'));var rimraf=require(_0xd911('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd911('0x2'));var rp=require(_0xd911('0x3'));var moment=require(_0xd911('0x4'));var BPromise=require(_0xd911('0x5'));var Mustache=require('mustache');var util=require(_0xd911('0x6'));var path=require(_0xd911('0x7'));var sox=require(_0xd911('0x8'));var csv=require(_0xd911('0x9'));var ejs=require(_0xd911('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd911('0xb'));var crypto=require(_0xd911('0xc'));var jsforce=require(_0xd911('0xd'));var deskjs=require(_0xd911('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd911('0xf'));var Papa=require(_0xd911('0x10'));var Redis=require(_0xd911('0x11'));var authService=require(_0xd911('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd911('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd911('0x14'))(_0xd911('0x15'));var utils=require(_0xd911('0x16'));var config=require(_0xd911('0x17'));var licenseUtil=require(_0xd911('0x18'));var db=require(_0xd911('0x19'))['db'];config[_0xd911('0x1a')]=_[_0xd911('0x1b')](config['redis'],{'host':_0xd911('0x1c'),'port':0x18eb});var socket=require(_0xd911('0x1d'))(new Redis(config[_0xd911('0x1a')]));require('./openchannelQueue.socket')[_0xd911('0x1e')](socket);function respondWithStatusCode(_0x3be208,_0x51e439){_0x51e439=_0x51e439||0xcc;return function(_0x440300){if(_0x440300){return _0x3be208[_0xd911('0x1f')](_0x51e439);}return _0x3be208[_0xd911('0x20')](_0x51e439)[_0xd911('0x21')]();};}function respondWithResult(_0x436477,_0x58cd61){_0x58cd61=_0x58cd61||0xc8;return function(_0x41355f){if(_0x41355f){return _0x436477[_0xd911('0x20')](_0x58cd61)['json'](_0x41355f);}};}function respondWithFilteredResult(_0x6e944c,_0xc3ba60){return function(_0x4d6e88){if(_0x4d6e88){var _0x984d57=typeof _0xc3ba60[_0xd911('0x22')]==='undefined'&&typeof _0xc3ba60[_0xd911('0x23')]===_0xd911('0x24');var _0x14d175=_0x4d6e88[_0xd911('0x25')];var _0x3b642c=_0x984d57?0x0:_0xc3ba60[_0xd911('0x22')];var _0x21cde8=_0x984d57?_0x4d6e88[_0xd911('0x25')]:_0xc3ba60[_0xd911('0x22')]+_0xc3ba60[_0xd911('0x23')];var _0x43a20b;if(_0x21cde8>=_0x14d175){_0x21cde8=_0x14d175;_0x43a20b=0xc8;}else{_0x43a20b=0xce;}_0x6e944c['status'](_0x43a20b);return _0x6e944c[_0xd911('0x26')]('Content-Range',_0x3b642c+'-'+_0x21cde8+'/'+_0x14d175)[_0xd911('0x27')](_0x4d6e88);}return null;};}function patchUpdates(_0x20e29b){return function(_0x3dab20){try{jsonpatch[_0xd911('0x28')](_0x3dab20,_0x20e29b,!![]);}catch(_0x1f1e91){return BPromise[_0xd911('0x29')](_0x1f1e91);}return _0x3dab20['save']();};}function saveUpdates(_0x5e69ca,_0x58ba95){return function(_0x410fc9){if(_0x410fc9){return _0x410fc9[_0xd911('0x2a')](_0x5e69ca)[_0xd911('0x2b')](function(_0x30b5e6){return _0x30b5e6;});}return null;};}function removeEntity(_0x21a816,_0x34554b){return function(_0x20cab6){if(_0x20cab6){return _0x20cab6[_0xd911('0x2c')]()[_0xd911('0x2b')](function(){var _0x43e5ed=_0x20cab6[_0xd911('0x2d')]({'plain':!![]});var _0x14daed=_0xd911('0x2e');return db[_0xd911('0x2f')]['destroy']({'where':{'type':_0x14daed,'resourceId':_0x43e5ed['id']}})[_0xd911('0x2b')](function(){return _0x20cab6;});})[_0xd911('0x2b')](function(){_0x21a816[_0xd911('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x112d4f,_0x3b3e31){return function(_0x362c13){if(!_0x362c13){_0x112d4f[_0xd911('0x1f')](0x194);}return _0x362c13;};}function handleError(_0x56a75c,_0xd61db9){_0xd61db9=_0xd61db9||0x1f4;return function(_0x3517eb){logger[_0xd911('0x30')](_0x3517eb[_0xd911('0x31')]);if(_0x3517eb['name']){delete _0x3517eb[_0xd911('0x32')];}_0x56a75c[_0xd911('0x20')](_0xd61db9)[_0xd911('0x33')](_0x3517eb);};}exports['index']=function(_0x50e380,_0x3aeae7){var _0x4fccbd={},_0x5bef65={},_0x375099={'count':0x0,'rows':[]};var _0x3a7acf=_['map'](db[_0xd911('0x34')][_0xd911('0x35')],function(_0x594848){return{'name':_0x594848['fieldName'],'type':_0x594848['type']['key']};});_0x5bef65[_0xd911('0x36')]=_['map'](_0x3a7acf,'name');_0x5bef65[_0xd911('0x37')]=_['keys'](_0x50e380[_0xd911('0x37')]);_0x5bef65[_0xd911('0x38')]=_[_0xd911('0x39')](_0x5bef65[_0xd911('0x36')],_0x5bef65[_0xd911('0x37')]);_0x4fccbd[_0xd911('0x3a')]=_[_0xd911('0x39')](_0x5bef65[_0xd911('0x36')],qs[_0xd911('0x3b')](_0x50e380['query']['fields']));_0x4fccbd['attributes']=_0x4fccbd['attributes'][_0xd911('0x3c')]?_0x4fccbd['attributes']:_0x5bef65[_0xd911('0x36')];if(!_0x50e380['query'][_0xd911('0x3d')](_0xd911('0x3e'))){_0x4fccbd[_0xd911('0x23')]=qs[_0xd911('0x23')](_0x50e380['query'][_0xd911('0x23')]);_0x4fccbd[_0xd911('0x22')]=qs[_0xd911('0x22')](_0x50e380[_0xd911('0x37')]['offset']);}_0x4fccbd[_0xd911('0x3f')]=qs['sort'](_0x50e380['query']['sort']);_0x4fccbd[_0xd911('0x40')]=qs[_0xd911('0x38')](_[_0xd911('0x41')](_0x50e380[_0xd911('0x37')],_0x5bef65[_0xd911('0x38')]),_0x3a7acf);if(_0x50e380['query'][_0xd911('0x42')]){_0x4fccbd[_0xd911('0x40')]=_[_0xd911('0x43')](_0x4fccbd[_0xd911('0x40')],{'$or':_[_0xd911('0x44')](_0x3a7acf,function(_0x2db627){if(_0x2db627[_0xd911('0x45')]!=='VIRTUAL'){var _0x6c2f5d={};_0x6c2f5d[_0x2db627[_0xd911('0x32')]]={'$like':'%'+_0x50e380[_0xd911('0x37')][_0xd911('0x42')]+'%'};return _0x6c2f5d;}})});}_0x4fccbd=_['merge']({},_0x4fccbd,_0x50e380[_0xd911('0x46')]);var _0x4f5f62={'where':_0x4fccbd[_0xd911('0x40')]};return db[_0xd911('0x34')][_0xd911('0x25')](_0x4f5f62)[_0xd911('0x2b')](function(_0x59f687){_0x375099[_0xd911('0x25')]=_0x59f687;if(_0x50e380['query'][_0xd911('0x47')]){_0x4fccbd['include']=[{'all':!![]}];}return db[_0xd911('0x34')][_0xd911('0x48')](_0x4fccbd);})['then'](function(_0x5a1df3){_0x375099[_0xd911('0x49')]=_0x5a1df3;return _0x375099;})[_0xd911('0x2b')](respondWithFilteredResult(_0x3aeae7,_0x4fccbd))[_0xd911('0x4a')](handleError(_0x3aeae7,null));};exports[_0xd911('0x4b')]=function(_0x5ecb2b,_0x157e39){var _0x4d1dad={'raw':!![],'where':{'id':_0x5ecb2b[_0xd911('0x4c')]['id']}},_0xc7f12a={};_0xc7f12a['model']=_[_0xd911('0x4d')](db['OpenchannelQueue'][_0xd911('0x35')]);_0xc7f12a[_0xd911('0x37')]=_['keys'](_0x5ecb2b['query']);_0xc7f12a['filters']=_['intersection'](_0xc7f12a[_0xd911('0x36')],_0xc7f12a[_0xd911('0x37')]);_0x4d1dad[_0xd911('0x3a')]=_[_0xd911('0x39')](_0xc7f12a[_0xd911('0x36')],qs[_0xd911('0x3b')](_0x5ecb2b['query'][_0xd911('0x3b')]));_0x4d1dad['attributes']=_0x4d1dad[_0xd911('0x3a')]['length']?_0x4d1dad[_0xd911('0x3a')]:_0xc7f12a[_0xd911('0x36')];if(_0x5ecb2b[_0xd911('0x37')][_0xd911('0x47')]){_0x4d1dad[_0xd911('0x4e')]=[{'all':!![]}];}_0x4d1dad=_[_0xd911('0x43')]({},_0x4d1dad,_0x5ecb2b[_0xd911('0x46')]);return db[_0xd911('0x34')]['find'](_0x4d1dad)[_0xd911('0x2b')](handleEntityNotFound(_0x157e39,null))[_0xd911('0x2b')](respondWithResult(_0x157e39,null))[_0xd911('0x4a')](handleError(_0x157e39,null));};exports['create']=function(_0x47df60,_0x15f2e8){return db[_0xd911('0x34')][_0xd911('0x4f')](_0x47df60[_0xd911('0x50')],{})[_0xd911('0x2b')](function(_0x662949){var _0x5def76=_0x47df60['user'][_0xd911('0x2d')]({'plain':!![]});if(!_0x5def76)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5def76['role']===_0xd911('0x51')){var _0x474500=_0x662949[_0xd911('0x2d')]({'plain':!![]});var _0x2ea18d='OpenchannelQueues';return db[_0xd911('0x52')][_0xd911('0x53')]({'where':{'name':_0x2ea18d,'userProfileId':_0x5def76[_0xd911('0x54')]},'raw':!![]})['then'](function(_0x32f5a4){if(_0x32f5a4&&_0x32f5a4[_0xd911('0x55')]===0x0){return db['UserProfileResource'][_0xd911('0x4f')]({'name':_0x474500[_0xd911('0x32')],'resourceId':_0x474500['id'],'type':_0x32f5a4[_0xd911('0x32')],'sectionId':_0x32f5a4['id']},{})[_0xd911('0x2b')](function(){return _0x662949;});}else{return _0x662949;}})[_0xd911('0x4a')](function(_0x332429){logger['error'](_0xd911('0x56'),_0x332429);throw _0x332429;});}return _0x662949;})[_0xd911('0x2b')](respondWithResult(_0x15f2e8,0xc9))[_0xd911('0x4a')](handleError(_0x15f2e8,null));};exports[_0xd911('0x2a')]=function(_0x1b4ea7,_0x3f67e1){if(_0x1b4ea7['body']['id']){delete _0x1b4ea7[_0xd911('0x50')]['id'];}return db[_0xd911('0x34')][_0xd911('0x53')]({'where':{'id':_0x1b4ea7[_0xd911('0x4c')]['id']}})[_0xd911('0x2b')](handleEntityNotFound(_0x3f67e1,null))[_0xd911('0x2b')](saveUpdates(_0x1b4ea7[_0xd911('0x50')],null))['then'](respondWithResult(_0x3f67e1,null))[_0xd911('0x4a')](handleError(_0x3f67e1,null));};exports[_0xd911('0x2c')]=function(_0x4dddf7,_0x3158b2){return db['OpenchannelQueue'][_0xd911('0x53')]({'where':{'id':_0x4dddf7[_0xd911('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3158b2,null))[_0xd911('0x2b')](removeEntity(_0x3158b2,null))[_0xd911('0x4a')](handleError(_0x3158b2,null));};exports[_0xd911('0x57')]=function(_0x48d149,_0x572f15){return db['OpenchannelQueue'][_0xd911('0x57')]()['then'](respondWithResult(_0x572f15,null))[_0xd911('0x4a')](handleError(_0x572f15,null));};exports[_0xd911('0x58')]=function(_0x26f5c2,_0x48b275,_0x30d803){var _0x5809d2={'raw':!![],'where':{}},_0x5bad14={},_0x51627d;return db[_0xd911('0x34')][_0xd911('0x59')]({'where':{'id':_0x26f5c2[_0xd911('0x4c')]['id']}})['then'](handleEntityNotFound(_0x48b275,null))['then'](function(_0x5b7adb){if(_0x5b7adb){_0x51627d=_0x5b7adb[_0xd911('0x2d')]({'plain':!![]});_0x5bad14[_0xd911('0x36')]=_['keys'](db[_0xd911('0x5a')][_0xd911('0x35')]);_0x5bad14['query']=_[_0xd911('0x4d')](_0x26f5c2[_0xd911('0x37')]);_0x5bad14[_0xd911('0x38')]=_['intersection'](_0x5bad14[_0xd911('0x36')],_0x5bad14['query']);_0x5809d2[_0xd911('0x3a')]=_[_0xd911('0x39')](_0x5bad14[_0xd911('0x36')],qs[_0xd911('0x3b')](_0x26f5c2[_0xd911('0x37')]['fields']));_0x5809d2[_0xd911('0x3a')]=_0x5809d2[_0xd911('0x3a')][_0xd911('0x3c')]?_0x5809d2['attributes']:_0x5bad14['model'];if(!_0x26f5c2[_0xd911('0x37')][_0xd911('0x3d')](_0xd911('0x3e'))){_0x5809d2[_0xd911('0x23')]=qs['limit'](_0x26f5c2[_0xd911('0x37')][_0xd911('0x23')]);_0x5809d2[_0xd911('0x22')]=qs[_0xd911('0x22')](_0x26f5c2['query'][_0xd911('0x22')]);}_0x5809d2[_0xd911('0x3f')]=qs['sort'](_0x26f5c2[_0xd911('0x37')]['sort']);_0x5809d2[_0xd911('0x40')]=qs['filters'](_['pick'](_0x26f5c2[_0xd911('0x37')],_0x5bad14[_0xd911('0x38')]));_0x5809d2[_0xd911('0x40')][_0xd911('0x5b')]=_0x5b7adb['id'];if(_0x26f5c2[_0xd911('0x37')][_0xd911('0x42')]){_0x5809d2[_0xd911('0x40')]=_['merge'](_0x5809d2['where'],{'$or':_[_0xd911('0x44')](_0x5809d2[_0xd911('0x3a')],function(_0x4cf967){var _0x2d8735={};_0x2d8735[_0x4cf967]={'$like':'%'+_0x26f5c2[_0xd911('0x37')][_0xd911('0x42')]+'%'};return _0x2d8735;})});}_0x5809d2=_['merge']({},_0x5809d2,_0x26f5c2[_0xd911('0x46')]);return db['UserOpenchannelQueue']['findAll'](_0x5809d2);}})['then'](function(_0x3e9918){if(_0x3e9918){return db[_0xd911('0x5c')][_0xd911('0x5d')]({'where':{'id':_[_0xd911('0x44')](_0x3e9918,_0xd911('0x5e')),'role':'agent'},'attributes':['id',_0xd911('0x32'),_0xd911('0x5f'),'updatedAt',_0xd911('0x60')]});}})[_0xd911('0x2b')](function(_0x161d9a){if(_0x161d9a){return{'count':_0x161d9a[_0xd911('0x25')],'rows':_[_0xd911('0x44')](_0x161d9a[_0xd911('0x49')],function(_0xfd5618){return{'membername':_0xfd5618[_0xd911('0x32')],'UserId':_0xfd5618['id'],'queue_name':_0x51627d[_0xd911('0x32')],'OpenchannelQueueId':_0x51627d['id'],'interface':util[_0xd911('0x61')](_0xd911('0x62'),_0xd911('0x63'),_0xfd5618[_0xd911('0x32')]),'penalty':0x0,'paused':_0xfd5618['openchannelPause'],'createdAt':_0xfd5618[_0xd911('0x60')],'updatedAt':_0xfd5618['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xd911('0x2b')](respondWithFilteredResult(_0x48b275,_0x5809d2))[_0xd911('0x4a')](handleError(_0x48b275,null));};exports[_0xd911('0x64')]=function(_0x981bab,_0x3e8404,_0x8f9a3c){var _0x111269={};var _0x345230={};var _0x1a1b58;var _0x9ca659;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x981bab[_0xd911('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3e8404,null))[_0xd911('0x2b')](function(_0x3ccfe6){if(_0x3ccfe6){_0x1a1b58=_0x3ccfe6;_0x345230[_0xd911('0x36')]=_[_0xd911('0x4d')](db['Team'][_0xd911('0x35')]);_0x345230[_0xd911('0x37')]=_[_0xd911('0x4d')](_0x981bab[_0xd911('0x37')]);_0x345230[_0xd911('0x38')]=_[_0xd911('0x39')](_0x345230['model'],_0x345230[_0xd911('0x37')]);_0x111269['attributes']=_[_0xd911('0x39')](_0x345230[_0xd911('0x36')],qs[_0xd911('0x3b')](_0x981bab[_0xd911('0x37')][_0xd911('0x3b')]));_0x111269[_0xd911('0x3a')]=_0x111269['attributes'][_0xd911('0x3c')]?_0x111269[_0xd911('0x3a')]:_0x345230[_0xd911('0x36')];_0x111269[_0xd911('0x3f')]=qs['sort'](_0x981bab[_0xd911('0x37')]['sort']);_0x111269[_0xd911('0x40')]=qs['filters'](_[_0xd911('0x41')](_0x981bab[_0xd911('0x37')],_0x345230['filters']));if(_0x981bab[_0xd911('0x37')][_0xd911('0x42')]){_0x111269[_0xd911('0x40')]=_[_0xd911('0x43')](_0x111269[_0xd911('0x40')],{'$or':_['map'](_0x111269[_0xd911('0x3a')],function(_0x4533f9){var _0x464523={};_0x464523[_0x4533f9]={'$like':'%'+_0x981bab[_0xd911('0x37')][_0xd911('0x42')]+'%'};return _0x464523;})});}_0x111269=_['merge']({},_0x111269,_0x981bab[_0xd911('0x46')]);return _0x1a1b58['getTeams'](_0x111269);}})[_0xd911('0x2b')](function(_0x382ed4){if(_0x382ed4){_0x9ca659=_0x382ed4[_0xd911('0x3c')];if(!_0x981bab[_0xd911('0x37')][_0xd911('0x3d')](_0xd911('0x3e'))){_0x111269[_0xd911('0x23')]=qs['limit'](_0x981bab[_0xd911('0x37')][_0xd911('0x23')]);_0x111269[_0xd911('0x22')]=qs[_0xd911('0x22')](_0x981bab[_0xd911('0x37')]['offset']);}return _0x1a1b58[_0xd911('0x64')](_0x111269);}})[_0xd911('0x2b')](function(_0x1ea0e4){if(_0x1ea0e4){return _0x1ea0e4?{'count':_0x9ca659,'rows':_0x1ea0e4}:null;}})[_0xd911('0x2b')](respondWithResult(_0x3e8404,null))['catch'](handleError(_0x3e8404,null));};exports[_0xd911('0x65')]=function(_0x10676f,_0x5dc153,_0x524ef5){var _0xd2a741=_0x10676f['body']['ids'];return db[_0xd911('0x66')][_0xd911('0x48')]({'where':{'id':_0xd2a741},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd911('0x67'),'attributes':['id',_0xd911('0x32'),_0xd911('0x68'),_0xd911('0x69'),_0xd911('0x6a')],'raw':!![]}]})[_0xd911('0x2b')](function(_0xe41482){if(_0xe41482){var _0x217e44=_[_0xd911('0x6b')](_0xe41482,function(_0x300a8){var _0xa2eb51=_0x300a8[_0xd911('0x2d')]({'plain':!![]});return _0xa2eb51[_0xd911('0x67')];});return db[_0xd911('0x34')][_0xd911('0x53')]({'where':{'id':_0x10676f['params']['id']}})[_0xd911('0x2b')](function(_0x27dfcf){return db['sequelize'][_0xd911('0x6c')](function(_0x34b92b){return _0x27dfcf['addTeams'](_0xd2a741,{'transaction':_0x34b92b})[_0xd911('0x2b')](function(){return BPromise[_0xd911('0x6d')](_0x217e44,function(_0x3ed3f0){return db[_0xd911('0x5a')][_0xd911('0x6e')]({'where':{'UserId':_0x3ed3f0['id'],'OpenchannelQueueId':_0x10676f[_0xd911('0x4c')]['id']},'transaction':_0x34b92b});});})[_0xd911('0x2b')](function(){_0x217e44[_0xd911('0x6f')](function(_0x44115a){socket[_0xd911('0x70')](_0xd911('0x71'),{'UserId':_0x44115a['id'],'OpenchannelQueueId':_0x27dfcf['id']});});});});});}})[_0xd911('0x2b')](respondWithStatusCode(_0x5dc153,null))['catch'](handleError(_0x5dc153,null));};exports[_0xd911('0x72')]=function(_0x38ab5d,_0x3bd235,_0x47721c){return db[_0xd911('0x66')][_0xd911('0x48')]({'where':{'id':_0x38ab5d['query'][_0xd911('0x73')]},'attributes':['id'],'include':[{'model':db[_0xd911('0x5c')],'as':_0xd911('0x67'),'attributes':['id'],'raw':!![]}]})[_0xd911('0x2b')](handleEntityNotFound(_0x3bd235,null))[_0xd911('0x2b')](function(_0x5ee8d0){var _0x17931a=_[_0xd911('0x44')](_0x5ee8d0,'id');var _0x3d47e8=[];var _0xf6baad=[];var _0x301425=squel[_0xd911('0x74')]();_0x301425[_0xd911('0x75')]('tq.TeamId')[_0xd911('0x76')](_0xd911('0x77'),'tq')[_0xd911('0x78')]('user_has_teams','ut',_0xd911('0x79'))[_0xd911('0x40')](_0xd911('0x7a'),_0x38ab5d['params']['id']);for(var _0x2ee7b4=0x0;_0x2ee7b4<_0x5ee8d0['length'];_0x2ee7b4+=0x1){let _0x50b475=_0x5ee8d0[_0x2ee7b4];for(var _0x232d15=0x0;_0x232d15<_0x50b475[_0xd911('0x67')]['length'];_0x232d15+=0x1){let _0xb5c023=_0x50b475[_0xd911('0x67')][_0x232d15];var _0x474383=_0x301425['clone']();_0x474383[_0xd911('0x40')](_0xd911('0x7b'),_0xb5c023['id']);_0xf6baad['push'](db[_0xd911('0x7c')][_0xd911('0x37')](_0x474383[_0xd911('0x7d')](),{'type':db[_0xd911('0x7c')][_0xd911('0x7e')][_0xd911('0x7f')]})['then'](function(_0x4786ad){if(_0x4786ad[_0xd911('0x3c')]===0x1){return _0xb5c023['id'];}else{var _0xdff188=_['every'](_[_0xd911('0x44')](_0x4786ad,'TeamId'),function(_0x59f801){return _['includes'](_0x17931a,_0x59f801);});if(_0xdff188){return _0xb5c023['id'];}}}));}}return BPromise[_0xd911('0x80')](_0xf6baad)[_0xd911('0x2b')](function(_0x1f3550){_0x3d47e8=_(_0x3d47e8)[_0xd911('0x81')](_0x1f3550)['compact']()[_0xd911('0x82')]();return db['OpenchannelQueue'][_0xd911('0x53')]({'where':{'id':_0x38ab5d['params']['id']}})[_0xd911('0x2b')](function(_0x8cdb9){return db[_0xd911('0x7c')][_0xd911('0x6c')](function(_0x31cb0e){return _0x8cdb9['removeTeams'](_0x38ab5d[_0xd911('0x37')]['ids'],{'transaction':_0x31cb0e})[_0xd911('0x2b')](function(){if(!_[_0xd911('0x83')](_0x3d47e8)){return _0x8cdb9[_0xd911('0x84')](_0x3d47e8,{'transaction':_0x31cb0e});}})['then'](function(){_0x3d47e8['forEach'](function(_0x340a00){socket[_0xd911('0x70')](_0xd911('0x85'),{'UserId':_0x340a00,'OpenchannelQueueId':_0x8cdb9['id']});});});});});});})[_0xd911('0x2b')](respondWithStatusCode(_0x3bd235,null))[_0xd911('0x4a')](handleError(_0x3bd235,null));};exports[_0xd911('0x86')]=function(_0x5b7892,_0x1877bb,_0x43081b){return db[_0xd911('0x34')][_0xd911('0x53')]({'where':{'id':_0x5b7892['params']['id']}})[_0xd911('0x2b')](handleEntityNotFound(_0x1877bb,null))[_0xd911('0x2b')](function(_0x23de81){if(_0x23de81){return _0x23de81[_0xd911('0x86')](_0x5b7892[_0xd911('0x50')][_0xd911('0x73')],_[_0xd911('0x87')](_0x5b7892[_0xd911('0x50')],[_0xd911('0x73'),'id'])||{})[_0xd911('0x88')](function(_0x7fbd68){for(var _0x3aa1e3=0x0;_0x3aa1e3<_0x5b7892[_0xd911('0x50')][_0xd911('0x73')]['length'];_0x3aa1e3+=0x1){socket[_0xd911('0x70')]('userOpenchannelQueue:save',{'UserId':Number(_0x5b7892['body'][_0xd911('0x73')][_0x3aa1e3]),'OpenchannelQueueId':Number(_0x5b7892['params']['id'])});}return _0x7fbd68;});}})[_0xd911('0x2b')](respondWithResult(_0x1877bb,null))[_0xd911('0x4a')](handleError(_0x1877bb,null));};exports['removeAgents']=function(_0x28b333,_0x4dbf1a,_0x3084c2){return db[_0xd911('0x34')]['find']({'where':{'id':_0x28b333[_0xd911('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4dbf1a,null))[_0xd911('0x2b')](function(_0x12356e){if(_0x12356e){return _0x12356e['removeAgents'](_0x28b333[_0xd911('0x37')][_0xd911('0x73')])[_0xd911('0x2b')](function(){if(_[_0xd911('0x89')](_0x28b333['query'][_0xd911('0x73')])){for(var _0x52aff3=0x0;_0x52aff3<_0x28b333['query']['ids'][_0xd911('0x3c')];_0x52aff3+=0x1){socket[_0xd911('0x70')](_0xd911('0x85'),{'UserId':Number(_0x28b333[_0xd911('0x37')]['ids'][_0x52aff3]),'OpenchannelQueueId':Number(_0x28b333[_0xd911('0x4c')]['id'])});}}else{socket['emit'](_0xd911('0x85'),{'UserId':Number(_0x28b333[_0xd911('0x37')]['ids']),'OpenchannelQueueId':Number(_0x28b333[_0xd911('0x4c')]['id'])});}});}})[_0xd911('0x2b')](respondWithStatusCode(_0x4dbf1a,null))['catch'](handleError(_0x4dbf1a,null));};exports[_0xd911('0x8a')]=function(_0x29784d,_0x1c463c,_0x259d07){var _0x6cff1e={};var _0x34cb6c={};var _0x567ff7;var _0x3939fb;return db['OpenchannelQueue'][_0xd911('0x59')]({'where':{'id':_0x29784d[_0xd911('0x4c')]['id']}})[_0xd911('0x2b')](handleEntityNotFound(_0x1c463c,null))[_0xd911('0x2b')](function(_0x2ec660){if(_0x2ec660){_0x567ff7=_0x2ec660;_0x34cb6c[_0xd911('0x36')]=_[_0xd911('0x4d')](db[_0xd911('0x5c')]['rawAttributes']);_0x34cb6c[_0xd911('0x37')]=_[_0xd911('0x4d')](_0x29784d[_0xd911('0x37')]);_0x34cb6c[_0xd911('0x38')]=_[_0xd911('0x39')](_0x34cb6c[_0xd911('0x36')],_0x34cb6c[_0xd911('0x37')]);_0x6cff1e['attributes']=_[_0xd911('0x39')](_0x34cb6c[_0xd911('0x36')],qs[_0xd911('0x3b')](_0x29784d[_0xd911('0x37')][_0xd911('0x3b')]));_0x6cff1e['attributes']=_0x6cff1e['attributes'][_0xd911('0x3c')]?_0x6cff1e['attributes']:_0x34cb6c['model'];_0x6cff1e[_0xd911('0x3f')]=qs['sort'](_0x29784d[_0xd911('0x37')][_0xd911('0x8b')]);_0x6cff1e[_0xd911('0x40')]=qs[_0xd911('0x38')](_['pick'](_0x29784d[_0xd911('0x37')],_0x34cb6c['filters']));if(_0x29784d['query'][_0xd911('0x42')]){_0x6cff1e['where']=_['merge'](_0x6cff1e[_0xd911('0x40')],{'$or':_[_0xd911('0x44')](_0x6cff1e[_0xd911('0x3a')],function(_0x47ec07){var _0x5315fe={};_0x5315fe[_0x47ec07]={'$like':'%'+_0x29784d[_0xd911('0x37')][_0xd911('0x42')]+'%'};return _0x5315fe;})});}_0x6cff1e=_[_0xd911('0x43')]({},_0x6cff1e,_0x29784d[_0xd911('0x46')]);return _0x567ff7[_0xd911('0x8a')](_0x6cff1e);}})['then'](function(_0x242d35){if(_0x242d35){_0x3939fb=_0x242d35['length'];if(!_0x29784d[_0xd911('0x37')]['hasOwnProperty'](_0xd911('0x3e'))){_0x6cff1e[_0xd911('0x23')]=qs[_0xd911('0x23')](_0x29784d[_0xd911('0x37')][_0xd911('0x23')]);_0x6cff1e['offset']=qs[_0xd911('0x22')](_0x29784d[_0xd911('0x37')][_0xd911('0x22')]);}return _0x567ff7[_0xd911('0x8a')](_0x6cff1e);}})['then'](function(_0x49fb91){if(_0x49fb91){return _0x49fb91?{'count':_0x3939fb,'rows':_0x49fb91}:null;}})['then'](respondWithResult(_0x1c463c,null))[_0xd911('0x4a')](handleError(_0x1c463c,null));}; \ No newline at end of file diff --git a/server/api/openchannelQueue/openchannelQueue.events.js b/server/api/openchannelQueue/openchannelQueue.events.js new file mode 100644 index 0000000..8228f86 --- /dev/null +++ b/server/api/openchannelQueue/openchannelQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9321=['exports','events','../../mysqldb','OpenchannelQueue','save','update','remove','emit','hasOwnProperty'];(function(_0x1c6b2c,_0x33636d){var _0x49b175=function(_0x434b23){while(--_0x434b23){_0x1c6b2c['push'](_0x1c6b2c['shift']());}};_0x49b175(++_0x33636d);}(_0x9321,0x17b));var _0x1932=function(_0x590651,_0x29dcf5){_0x590651=_0x590651-0x0;var _0xa4cee=_0x9321[_0x590651];return _0xa4cee;};'use strict';var EventEmitter=require(_0x1932('0x0'));var OpenchannelQueue=require(_0x1932('0x1'))['db'][_0x1932('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1932('0x3'),'afterUpdate':_0x1932('0x4'),'afterDestroy':_0x1932('0x5')};function emitEvent(_0x3cc138){return function(_0x4a3da8,_0xb299ea,_0x19d095){OpenchannelQueueEvents[_0x1932('0x6')](_0x3cc138+':'+_0x4a3da8['id'],_0x4a3da8);OpenchannelQueueEvents[_0x1932('0x6')](_0x3cc138,_0x4a3da8);_0x19d095(null);};}for(var e in events){if(events[_0x1932('0x7')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x1932('0x8')]=OpenchannelQueueEvents; \ No newline at end of file diff --git a/server/api/openchannelQueue/openchannelQueue.model.js b/server/api/openchannelQueue/openchannelQueue.model.js new file mode 100644 index 0000000..d3adcf3 --- /dev/null +++ b/server/api/openchannelQueue/openchannelQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x488c=['openchannel_queues','util','../../config/logger','moment','bluebird','request-promise','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x488c,0x17b));var _0xc488=function(_0x2cc437,_0x1b4c3f){_0x2cc437=_0x2cc437-0x0;var _0x2e163a=_0x488c[_0x2cc437];return _0x2e163a;};'use strict';var _=require('lodash');var util=require(_0xc488('0x0'));var logger=require(_0xc488('0x1'))('api');var moment=require(_0xc488('0x2'));var BPromise=require(_0xc488('0x3'));var rp=require(_0xc488('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./openchannelQueue.attributes');module[_0xc488('0x5')]=function(_0xd216fa,_0x3db0fe){return _0xd216fa['define']('OpenchannelQueue',attributes,{'tableName':_0xc488('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/openchannelQueue/openchannelQueue.rpc.js b/server/api/openchannelQueue/openchannelQueue.rpc.js new file mode 100644 index 0000000..b89e73e --- /dev/null +++ b/server/api/openchannelQueue/openchannelQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbd6e=['rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','attributes','limit','include','map','model','ShowOpenchannelQueue','find','raw','where','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x29a535,_0x227a89){var _0x1b3d33=function(_0x56e502){while(--_0x56e502){_0x29a535['push'](_0x29a535['shift']());}};_0x1b3d33(++_0x227a89);}(_0xbd6e,0x71));var _0xebd6=function(_0x4228d0,_0x1ab712){_0x4228d0=_0x4228d0-0x0;var _0x38435c=_0xbd6e[_0x4228d0];return _0x38435c;};'use strict';var _=require('lodash');var util=require(_0xebd6('0x0'));var moment=require(_0xebd6('0x1'));var BPromise=require(_0xebd6('0x2'));var rs=require(_0xebd6('0x3'));var fs=require('fs');var Redis=require(_0xebd6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xebd6('0x5'));var logger=require(_0xebd6('0x6'))(_0xebd6('0x7'));var config=require('../../config/environment');var jayson=require(_0xebd6('0x8'));var client=jayson[_0xebd6('0x9')][_0xebd6('0xa')]({'port':0x232a});config['redis']=_[_0xebd6('0xb')](config[_0xebd6('0xc')],{'host':_0xebd6('0xd'),'port':0x18eb});var socket=require(_0xebd6('0xe'))(new Redis(config[_0xebd6('0xc')]));require('./openchannelQueue.socket')[_0xebd6('0xf')](socket);function respondWithRpcPromise(_0x12abc4,_0x5a6ffd,_0x2f241b){return new BPromise(function(_0x4f554b,_0x61e494){return client['request'](_0x12abc4,_0x2f241b)[_0xebd6('0x10')](function(_0x36c631){logger[_0xebd6('0x11')](_0xebd6('0x12'),_0x5a6ffd,'request\x20sent');logger[_0xebd6('0x13')](_0xebd6('0x14'),_0x5a6ffd,'request\x20sent',JSON[_0xebd6('0x15')](_0x36c631));if(_0x36c631[_0xebd6('0x16')]){if(_0x36c631['error'][_0xebd6('0x17')]===0x1f4){logger[_0xebd6('0x16')](_0xebd6('0x12'),_0x5a6ffd,_0x36c631[_0xebd6('0x16')]['message']);return _0x61e494(_0x36c631['error'][_0xebd6('0x18')]);}logger[_0xebd6('0x16')](_0xebd6('0x12'),_0x5a6ffd,_0x36c631[_0xebd6('0x16')][_0xebd6('0x18')]);return _0x4f554b(_0x36c631[_0xebd6('0x16')][_0xebd6('0x18')]);}else{logger[_0xebd6('0x11')](_0xebd6('0x12'),_0x5a6ffd,'request\x20sent');_0x4f554b(_0x36c631[_0xebd6('0x19')][_0xebd6('0x18')]);}})[_0xebd6('0x1a')](function(_0xd29d8c){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x5a6ffd,_0xd29d8c);_0x61e494(_0xd29d8c);});});}exports[_0xebd6('0x1b')]=function(_0x1b5de2){var _0x348824=this;return new Promise(function(_0x1f12da,_0x5a11b7){return db[_0xebd6('0x1c')][_0xebd6('0x1d')]({'raw':_0x1b5de2['options']?_0x1b5de2['options']['raw']===undefined?!![]:![]:!![],'where':_0x1b5de2[_0xebd6('0x1e')]?_0x1b5de2[_0xebd6('0x1e')]['where']||null:null,'attributes':_0x1b5de2[_0xebd6('0x1e')]?_0x1b5de2[_0xebd6('0x1e')][_0xebd6('0x1f')]||null:null,'limit':_0x1b5de2[_0xebd6('0x1e')]?_0x1b5de2['options'][_0xebd6('0x20')]||null:null,'include':_0x1b5de2[_0xebd6('0x1e')]?_0x1b5de2[_0xebd6('0x1e')][_0xebd6('0x21')]?_[_0xebd6('0x22')](_0x1b5de2[_0xebd6('0x1e')][_0xebd6('0x21')],function(_0x13c6b2){return{'model':db[_0x13c6b2['model']],'as':_0x13c6b2['as'],'attributes':_0x13c6b2[_0xebd6('0x1f')],'include':_0x13c6b2[_0xebd6('0x21')]?_[_0xebd6('0x22')](_0x13c6b2[_0xebd6('0x21')],function(_0x295bba){return{'model':db[_0x295bba[_0xebd6('0x23')]],'as':_0x295bba['as'],'attributes':_0x295bba[_0xebd6('0x1f')],'include':_0x295bba[_0xebd6('0x21')]?_[_0xebd6('0x22')](_0x295bba[_0xebd6('0x21')],function(_0x32f459){return{'model':db[_0x32f459[_0xebd6('0x23')]],'as':_0x32f459['as'],'attributes':_0x32f459[_0xebd6('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x325aab){logger[_0xebd6('0x11')](_0xebd6('0x1b'),_0x1b5de2);logger[_0xebd6('0x13')](_0xebd6('0x1b'),_0x1b5de2,JSON[_0xebd6('0x15')](_0x325aab));_0x1f12da(_0x325aab);})[_0xebd6('0x1a')](function(_0x49917d){logger[_0xebd6('0x16')](_0xebd6('0x1b'),_0x49917d[_0xebd6('0x18')],_0x1b5de2);_0x5a11b7(_0x348824[_0xebd6('0x16')](0x1f4,_0x49917d['message']));});});};exports[_0xebd6('0x24')]=function(_0x1ca99f){var _0x447499=this;return new Promise(function(_0x236042,_0x57b61e){return db[_0xebd6('0x1c')][_0xebd6('0x25')]({'raw':_0x1ca99f[_0xebd6('0x1e')]?_0x1ca99f['options'][_0xebd6('0x26')]===undefined?!![]:![]:!![],'where':_0x1ca99f[_0xebd6('0x1e')]?_0x1ca99f['options'][_0xebd6('0x27')]||null:null,'attributes':_0x1ca99f[_0xebd6('0x1e')]?_0x1ca99f[_0xebd6('0x1e')][_0xebd6('0x1f')]||null:null,'include':_0x1ca99f[_0xebd6('0x1e')]?_0x1ca99f[_0xebd6('0x1e')][_0xebd6('0x21')]?_['map'](_0x1ca99f['options']['include'],function(_0x48f77f){return{'model':db[_0x48f77f[_0xebd6('0x23')]],'as':_0x48f77f['as'],'attributes':_0x48f77f[_0xebd6('0x1f')],'include':_0x48f77f[_0xebd6('0x21')]?_['map'](_0x48f77f[_0xebd6('0x21')],function(_0x2c75c0){return{'model':db[_0x2c75c0[_0xebd6('0x23')]],'as':_0x2c75c0['as'],'attributes':_0x2c75c0[_0xebd6('0x1f')],'include':_0x2c75c0['include']?_[_0xebd6('0x22')](_0x2c75c0[_0xebd6('0x21')],function(_0x287ae7){return{'model':db[_0x287ae7[_0xebd6('0x23')]],'as':_0x287ae7['as'],'attributes':_0x287ae7[_0xebd6('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1bc45e){logger[_0xebd6('0x11')]('ShowOpenchannelQueue',_0x1ca99f);logger[_0xebd6('0x13')]('ShowOpenchannelQueue',_0x1ca99f,JSON[_0xebd6('0x15')](_0x1bc45e));_0x236042(_0x1bc45e);})['catch'](function(_0x137864){logger[_0xebd6('0x16')](_0xebd6('0x24'),_0x137864[_0xebd6('0x18')],_0x1ca99f);_0x57b61e(_0x447499['error'](0x1f4,_0x137864[_0xebd6('0x18')]));});});}; \ No newline at end of file diff --git a/server/api/openchannelQueue/openchannelQueue.socket.js b/server/api/openchannelQueue/openchannelQueue.socket.js new file mode 100644 index 0000000..ad9f9a0 --- /dev/null +++ b/server/api/openchannelQueue/openchannelQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7b0a=['openchannelQueue:','./openchannelQueue.events','save','update','emit','removeListener','length'];(function(_0x6b8e6,_0x5b5b8d){var _0x11e8d9=function(_0x27609b){while(--_0x27609b){_0x6b8e6['push'](_0x6b8e6['shift']());}};_0x11e8d9(++_0x5b5b8d);}(_0x7b0a,0x143));var _0xa7b0=function(_0x561074,_0x4c03f4){_0x561074=_0x561074-0x0;var _0x5103d7=_0x7b0a[_0x561074];return _0x5103d7;};'use strict';var OpenchannelQueueEvents=require(_0xa7b0('0x0'));var events=[_0xa7b0('0x1'),'remove',_0xa7b0('0x2')];function createListener(_0x49074e,_0x370475){return function(_0x520f99){_0x370475[_0xa7b0('0x3')](_0x49074e,_0x520f99);};}function removeListener(_0x155de3,_0x6ea282){return function(){OpenchannelQueueEvents[_0xa7b0('0x4')](_0x155de3,_0x6ea282);};}exports['register']=function(_0x411f23){for(var _0xce91a1=0x0,_0x455631=events[_0xa7b0('0x5')];_0xce91a1<_0x455631;_0xce91a1++){var _0x2b6f25=events[_0xce91a1];var _0x59a921=createListener(_0xa7b0('0x6')+_0x2b6f25,_0x411f23);OpenchannelQueueEvents['on'](_0x2b6f25,_0x59a921);}}; \ No newline at end of file diff --git a/server/api/openchannelQueueReport/index.js b/server/api/openchannelQueueReport/index.js new file mode 100644 index 0000000..422d40d --- /dev/null +++ b/server/api/openchannelQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x02b3=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueueReport.controller','get','index','isAuthenticated','describe','/:id','show','post','create','update','destroy','exports','multer','util','path'];(function(_0x3cc16d,_0x2a569c){var _0x13c29c=function(_0x32e098){while(--_0x32e098){_0x3cc16d['push'](_0x3cc16d['shift']());}};_0x13c29c(++_0x2a569c);}(_0x02b3,0x115));var _0x302b=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x02b3[_0x5d2803];return _0xdcad2c;};'use strict';var multer=require(_0x302b('0x0'));var util=require(_0x302b('0x1'));var path=require(_0x302b('0x2'));var timeout=require(_0x302b('0x3'));var express=require('express');var router=express[_0x302b('0x4')]();var fs_extra=require(_0x302b('0x5'));var auth=require(_0x302b('0x6'));var interaction=require(_0x302b('0x7'));var config=require('../../config/environment');var controller=require(_0x302b('0x8'));router[_0x302b('0x9')]('/',auth['isAuthenticated'](),controller[_0x302b('0xa')]);router[_0x302b('0x9')]('/describe',auth[_0x302b('0xb')](),controller[_0x302b('0xc')]);router[_0x302b('0x9')](_0x302b('0xd'),auth['isAuthenticated'](),controller[_0x302b('0xe')]);router[_0x302b('0xf')]('/',auth['isAuthenticated'](),controller[_0x302b('0x10')]);router['put'](_0x302b('0xd'),auth[_0x302b('0xb')](),controller[_0x302b('0x11')]);router['delete']('/:id',auth[_0x302b('0xb')](),controller[_0x302b('0x12')]);module[_0x302b('0x13')]=router; \ No newline at end of file diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js b/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js new file mode 100644 index 0000000..3c1af20 --- /dev/null +++ b/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7579=['STRING','DATE','moment','sequelize','exports'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x7579,0x1e2));var _0x9757=function(_0x5d3ba7,_0x451333){_0x5d3ba7=_0x5d3ba7-0x0;var _0xe9fb2=_0x7579[_0x5d3ba7];return _0xe9fb2;};'use strict';var moment=require(_0x9757('0x0'));var Sequelize=require(_0x9757('0x1'));module[_0x9757('0x2')]={'uniqueid':{'type':Sequelize[_0x9757('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x9757('0x3')]},'joinAt':{'type':Sequelize[_0x9757('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x9757('0x4')]},'exitAt':{'type':Sequelize[_0x9757('0x4')]},'reason':{'type':Sequelize[_0x9757('0x3')]}}; \ No newline at end of file diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.controller.js b/server/api/openchannelQueueReport/openchannelQueueReport.controller.js new file mode 100644 index 0000000..83508b5 --- /dev/null +++ b/server/api/openchannelQueueReport/openchannelQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x58f3=['attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','OpenchannelQueueReport','include','rows','show','params','rawAttributes','length','includeAll','options','find','catch','create','body','describe','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','query','keys','filters','model'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x58f3,0x103));var _0x358f=function(_0x47a14e,_0x4701d1){_0x47a14e=_0x47a14e-0x0;var _0x3499e1=_0x58f3[_0x47a14e];return _0x3499e1;};'use strict';var emlformat=require(_0x358f('0x0'));var rimraf=require(_0x358f('0x1'));var zipdir=require(_0x358f('0x2'));var jsonpatch=require(_0x358f('0x3'));var rp=require(_0x358f('0x4'));var moment=require(_0x358f('0x5'));var BPromise=require(_0x358f('0x6'));var Mustache=require(_0x358f('0x7'));var util=require(_0x358f('0x8'));var path=require(_0x358f('0x9'));var sox=require(_0x358f('0xa'));var csv=require(_0x358f('0xb'));var ejs=require(_0x358f('0xc'));var fs=require('fs');var fs_extra=require(_0x358f('0xd'));var _=require(_0x358f('0xe'));var squel=require(_0x358f('0xf'));var crypto=require(_0x358f('0x10'));var jsforce=require(_0x358f('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x358f('0xb'));var querystring=require(_0x358f('0x12'));var Papa=require(_0x358f('0x13'));var Redis=require(_0x358f('0x14'));var authService=require(_0x358f('0x15'));var qs=require(_0x358f('0x16'));var as=require(_0x358f('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x358f('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x358f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x358f('0x1a'))['db'];function respondWithStatusCode(_0x13605d,_0x14bceb){_0x14bceb=_0x14bceb||0xcc;return function(_0x29bf5a){if(_0x29bf5a){return _0x13605d[_0x358f('0x1b')](_0x14bceb);}return _0x13605d[_0x358f('0x1c')](_0x14bceb)[_0x358f('0x1d')]();};}function respondWithResult(_0x368ab5,_0x57c005){_0x57c005=_0x57c005||0xc8;return function(_0x4632ae){if(_0x4632ae){return _0x368ab5['status'](_0x57c005)[_0x358f('0x1e')](_0x4632ae);}};}function respondWithFilteredResult(_0x404567,_0x1f554d){return function(_0x549a6d){if(_0x549a6d){var _0x14d4f9=typeof _0x1f554d[_0x358f('0x1f')]==='undefined'&&typeof _0x1f554d[_0x358f('0x20')]==='undefined';var _0x7978ba=_0x549a6d[_0x358f('0x21')];var _0x893b4d=_0x14d4f9?0x0:_0x1f554d[_0x358f('0x1f')];var _0x36dd0a=_0x14d4f9?_0x549a6d[_0x358f('0x21')]:_0x1f554d[_0x358f('0x1f')]+_0x1f554d[_0x358f('0x20')];var _0x250867;if(_0x36dd0a>=_0x7978ba){_0x36dd0a=_0x7978ba;_0x250867=0xc8;}else{_0x250867=0xce;}_0x404567[_0x358f('0x1c')](_0x250867);return _0x404567[_0x358f('0x22')]('Content-Range',_0x893b4d+'-'+_0x36dd0a+'/'+_0x7978ba)[_0x358f('0x1e')](_0x549a6d);}return null;};}function patchUpdates(_0x455033){return function(_0x104bf6){try{jsonpatch[_0x358f('0x23')](_0x104bf6,_0x455033,!![]);}catch(_0x2b5d04){return BPromise[_0x358f('0x24')](_0x2b5d04);}return _0x104bf6[_0x358f('0x25')]();};}function saveUpdates(_0x40a717,_0x2e4868){return function(_0x2e346a){if(_0x2e346a){return _0x2e346a[_0x358f('0x26')](_0x40a717)[_0x358f('0x27')](function(_0x57f043){return _0x57f043;});}return null;};}function removeEntity(_0x1fc19e,_0x4f2282){return function(_0x4a9035){if(_0x4a9035){return _0x4a9035[_0x358f('0x28')]()[_0x358f('0x27')](function(){_0x1fc19e[_0x358f('0x1c')](0xcc)[_0x358f('0x1d')]();});}};}function handleEntityNotFound(_0x1ee5ab,_0x3698a2){return function(_0x33798e){if(!_0x33798e){_0x1ee5ab['sendStatus'](0x194);}return _0x33798e;};}function handleError(_0x212cfd,_0x195a8d){_0x195a8d=_0x195a8d||0x1f4;return function(_0x56ad41){logger[_0x358f('0x29')](_0x56ad41[_0x358f('0x2a')]);if(_0x56ad41[_0x358f('0x2b')]){delete _0x56ad41[_0x358f('0x2b')];}_0x212cfd['status'](_0x195a8d)[_0x358f('0x2c')](_0x56ad41);};}exports['index']=function(_0x378367,_0x299500){var _0x22c40b={},_0x3a123a={},_0x4dcdf5={'count':0x0,'rows':[]};var _0x225d1c=_[_0x358f('0x2d')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x8d9766){return{'name':_0x8d9766[_0x358f('0x2e')],'type':_0x8d9766[_0x358f('0x2f')][_0x358f('0x30')]};});_0x3a123a['model']=_[_0x358f('0x2d')](_0x225d1c,'name');_0x3a123a[_0x358f('0x31')]=_[_0x358f('0x32')](_0x378367[_0x358f('0x31')]);_0x3a123a[_0x358f('0x33')]=_['intersection'](_0x3a123a[_0x358f('0x34')],_0x3a123a[_0x358f('0x31')]);_0x22c40b[_0x358f('0x35')]=_[_0x358f('0x36')](_0x3a123a['model'],qs[_0x358f('0x37')](_0x378367[_0x358f('0x31')][_0x358f('0x37')]));_0x22c40b[_0x358f('0x35')]=_0x22c40b[_0x358f('0x35')]['length']?_0x22c40b[_0x358f('0x35')]:_0x3a123a[_0x358f('0x34')];if(!_0x378367[_0x358f('0x31')][_0x358f('0x38')](_0x358f('0x39'))){_0x22c40b['limit']=qs[_0x358f('0x20')](_0x378367[_0x358f('0x31')][_0x358f('0x20')]);_0x22c40b[_0x358f('0x1f')]=qs[_0x358f('0x1f')](_0x378367[_0x358f('0x31')]['offset']);}_0x22c40b[_0x358f('0x3a')]=qs[_0x358f('0x3b')](_0x378367['query']['sort']);_0x22c40b[_0x358f('0x3c')]=qs[_0x358f('0x33')](_[_0x358f('0x3d')](_0x378367[_0x358f('0x31')],_0x3a123a['filters']),_0x225d1c);if(_0x378367['query'][_0x358f('0x3e')]){_0x22c40b[_0x358f('0x3c')]=_[_0x358f('0x3f')](_0x22c40b[_0x358f('0x3c')],{'$or':_[_0x358f('0x2d')](_0x225d1c,function(_0x4d9291){if(_0x4d9291[_0x358f('0x2f')]!=='VIRTUAL'){var _0x45d975={};_0x45d975[_0x4d9291[_0x358f('0x2b')]]={'$like':'%'+_0x378367[_0x358f('0x31')][_0x358f('0x3e')]+'%'};return _0x45d975;}})});}_0x22c40b=_[_0x358f('0x3f')]({},_0x22c40b,_0x378367['options']);var _0x34bf93={'where':_0x22c40b[_0x358f('0x3c')]};return db[_0x358f('0x40')][_0x358f('0x21')](_0x34bf93)['then'](function(_0x3c282a){_0x4dcdf5[_0x358f('0x21')]=_0x3c282a;if(_0x378367[_0x358f('0x31')]['includeAll']){_0x22c40b[_0x358f('0x41')]=[{'all':!![]}];}return db[_0x358f('0x40')]['findAll'](_0x22c40b);})[_0x358f('0x27')](function(_0x2525c7){_0x4dcdf5[_0x358f('0x42')]=_0x2525c7;return _0x4dcdf5;})[_0x358f('0x27')](respondWithFilteredResult(_0x299500,_0x22c40b))['catch'](handleError(_0x299500,null));};exports[_0x358f('0x43')]=function(_0x18b2a3,_0x1bebd5){var _0x2deeed={'raw':!![],'where':{'id':_0x18b2a3[_0x358f('0x44')]['id']}},_0x40fb18={};_0x40fb18[_0x358f('0x34')]=_['keys'](db[_0x358f('0x40')][_0x358f('0x45')]);_0x40fb18[_0x358f('0x31')]=_[_0x358f('0x32')](_0x18b2a3[_0x358f('0x31')]);_0x40fb18[_0x358f('0x33')]=_[_0x358f('0x36')](_0x40fb18[_0x358f('0x34')],_0x40fb18['query']);_0x2deeed[_0x358f('0x35')]=_['intersection'](_0x40fb18[_0x358f('0x34')],qs['fields'](_0x18b2a3[_0x358f('0x31')][_0x358f('0x37')]));_0x2deeed['attributes']=_0x2deeed[_0x358f('0x35')][_0x358f('0x46')]?_0x2deeed[_0x358f('0x35')]:_0x40fb18[_0x358f('0x34')];if(_0x18b2a3[_0x358f('0x31')][_0x358f('0x47')]){_0x2deeed[_0x358f('0x41')]=[{'all':!![]}];}_0x2deeed=_[_0x358f('0x3f')]({},_0x2deeed,_0x18b2a3[_0x358f('0x48')]);return db['OpenchannelQueueReport'][_0x358f('0x49')](_0x2deeed)['then'](handleEntityNotFound(_0x1bebd5,null))[_0x358f('0x27')](respondWithResult(_0x1bebd5,null))[_0x358f('0x4a')](handleError(_0x1bebd5,null));};exports[_0x358f('0x4b')]=function(_0x41761e,_0x4a2b5e){return db[_0x358f('0x40')][_0x358f('0x4b')](_0x41761e[_0x358f('0x4c')],{})[_0x358f('0x27')](respondWithResult(_0x4a2b5e,0xc9))[_0x358f('0x4a')](handleError(_0x4a2b5e,null));};exports['update']=function(_0x54010c,_0x2d4656){if(_0x54010c[_0x358f('0x4c')]['id']){delete _0x54010c['body']['id'];}return db[_0x358f('0x40')][_0x358f('0x49')]({'where':{'id':_0x54010c['params']['id']}})[_0x358f('0x27')](handleEntityNotFound(_0x2d4656,null))[_0x358f('0x27')](saveUpdates(_0x54010c[_0x358f('0x4c')],null))['then'](respondWithResult(_0x2d4656,null))['catch'](handleError(_0x2d4656,null));};exports[_0x358f('0x28')]=function(_0x50fa8e,_0x30b54e){return db[_0x358f('0x40')]['find']({'where':{'id':_0x50fa8e[_0x358f('0x44')]['id']}})[_0x358f('0x27')](handleEntityNotFound(_0x30b54e,null))[_0x358f('0x27')](removeEntity(_0x30b54e,null))[_0x358f('0x4a')](handleError(_0x30b54e,null));};exports[_0x358f('0x4d')]=function(_0x42eba8,_0x3f218b){return db[_0x358f('0x40')][_0x358f('0x4d')]()['then'](respondWithResult(_0x3f218b,null))[_0x358f('0x4a')](handleError(_0x3f218b,null));}; \ No newline at end of file diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.model.js b/server/api/openchannelQueueReport/openchannelQueueReport.model.js new file mode 100644 index 0000000..479338f --- /dev/null +++ b/server/api/openchannelQueueReport/openchannelQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x121ca9,_0x32bc76){var _0xbf761b=function(_0x292204){while(--_0x292204){_0x121ca9['push'](_0x121ca9['shift']());}};_0xbf761b(++_0x32bc76);}(_0x1261,0x144));var _0x1126=function(_0x51df00,_0x4ac573){_0x51df00=_0x51df00-0x0;var _0x198328=_0x1261[_0x51df00];return _0x198328;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js b/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js new file mode 100644 index 0000000..5e40d8c --- /dev/null +++ b/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x84a0=['OpenchannelQueueReport','create','body','options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','update','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','then','info','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch'];(function(_0x34e4a0,_0x1fd446){var _0x3ead3e=function(_0x47adec){while(--_0x47adec){_0x34e4a0['push'](_0x34e4a0['shift']());}};_0x3ead3e(++_0x1fd446);}(_0x84a0,0x66));var _0x084a=function(_0x5b67be,_0x59f4c5){_0x5b67be=_0x5b67be-0x0;var _0x383225=_0x84a0[_0x5b67be];return _0x383225;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var moment=require(_0x084a('0x2'));var BPromise=require(_0x084a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x084a('0x4'));var db=require(_0x084a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x084a('0x6'));var config=require(_0x084a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x084a('0x8')][_0x084a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e6810,_0x373d2,_0x2b30bc){return new BPromise(function(_0x58d419,_0x1051a9){return client[_0x084a('0xa')](_0x2e6810,_0x2b30bc)[_0x084a('0xb')](function(_0x2888e3){logger[_0x084a('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x373d2,'request\x20sent');logger[_0x084a('0xd')](_0x084a('0xe'),_0x373d2,_0x084a('0xf'),JSON[_0x084a('0x10')](_0x2888e3));if(_0x2888e3[_0x084a('0x11')]){if(_0x2888e3['error']['code']===0x1f4){logger[_0x084a('0x11')](_0x084a('0x12'),_0x373d2,_0x2888e3[_0x084a('0x11')][_0x084a('0x13')]);return _0x1051a9(_0x2888e3[_0x084a('0x11')][_0x084a('0x13')]);}logger[_0x084a('0x11')](_0x084a('0x12'),_0x373d2,_0x2888e3['error'][_0x084a('0x13')]);return _0x58d419(_0x2888e3['error'][_0x084a('0x13')]);}else{logger[_0x084a('0xc')](_0x084a('0x12'),_0x373d2,_0x084a('0xf'));_0x58d419(_0x2888e3[_0x084a('0x14')]['message']);}})[_0x084a('0x15')](function(_0x4abd81){logger[_0x084a('0x11')](_0x084a('0x12'),_0x373d2,_0x4abd81);_0x1051a9(_0x4abd81);});});}exports['CreateOpenchannelQueueReport']=function(_0xf2c333){var _0x32c729=this;return new Promise(function(_0x4134b9,_0x14bb19){return db[_0x084a('0x16')][_0x084a('0x17')](_0xf2c333[_0x084a('0x18')],{'raw':_0xf2c333[_0x084a('0x19')]?_0xf2c333[_0x084a('0x19')][_0x084a('0x1a')]===undefined?!![]:![]:!![]})[_0x084a('0xb')](function(_0x279e25){logger[_0x084a('0xc')](_0x084a('0x1b'),_0xf2c333);logger[_0x084a('0xd')]('CreateOpenchannelQueueReport',_0xf2c333,JSON[_0x084a('0x10')](_0x279e25));_0x4134b9(_0x279e25);})[_0x084a('0x15')](function(_0x41a90f){logger[_0x084a('0x11')](_0x084a('0x1b'),_0x41a90f['message'],_0xf2c333);_0x14bb19(_0x32c729[_0x084a('0x11')](0x1f4,_0x41a90f[_0x084a('0x13')]));});});};exports[_0x084a('0x1c')]=function(_0x1f2c9f){var _0x18b43d=this;return new Promise(function(_0x3cdc1e,_0x5be167){return db[_0x084a('0x16')][_0x084a('0x1d')](_0x1f2c9f[_0x084a('0x18')],{'raw':_0x1f2c9f['options']?_0x1f2c9f[_0x084a('0x19')][_0x084a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f2c9f[_0x084a('0x19')]?_0x1f2c9f['options']['where']||null:null,'attributes':_0x1f2c9f['options']?_0x1f2c9f['options'][_0x084a('0x1e')]||null:null,'limit':_0x1f2c9f['options']?_0x1f2c9f['options']['limit']||null:null})[_0x084a('0xb')](function(_0x4651e6){logger[_0x084a('0xc')](_0x084a('0x1c'),_0x1f2c9f);logger[_0x084a('0xd')](_0x084a('0x1c'),_0x1f2c9f,JSON[_0x084a('0x10')](_0x4651e6));_0x3cdc1e(_0x4651e6);})[_0x084a('0x15')](function(_0x5e6ea8){logger[_0x084a('0x11')](_0x084a('0x1c'),_0x5e6ea8['message'],_0x1f2c9f);_0x5be167(_0x18b43d[_0x084a('0x11')](0x1f4,_0x5e6ea8[_0x084a('0x13')]));});});}; \ No newline at end of file diff --git a/server/api/openchannelTransferReport/index.js b/server/api/openchannelTransferReport/index.js new file mode 100644 index 0000000..5f3557a --- /dev/null +++ b/server/api/openchannelTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9dcc=['delete','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','index','/describe','isAuthenticated','describe','get','/:id','show','post','put','update'];(function(_0x436ddb,_0x25443d){var _0x40a778=function(_0x18a2aa){while(--_0x18a2aa){_0x436ddb['push'](_0x436ddb['shift']());}};_0x40a778(++_0x25443d);}(_0x9dcc,0x1d0));var _0xc9dc=function(_0x58a18a,_0x1d948a){_0x58a18a=_0x58a18a-0x0;var _0x504330=_0x9dcc[_0x58a18a];return _0x504330;};'use strict';var multer=require(_0xc9dc('0x0'));var util=require(_0xc9dc('0x1'));var path=require(_0xc9dc('0x2'));var timeout=require('connect-timeout');var express=require(_0xc9dc('0x3'));var router=express[_0xc9dc('0x4')]();var fs_extra=require(_0xc9dc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc9dc('0x6'));var config=require(_0xc9dc('0x7'));var controller=require(_0xc9dc('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xc9dc('0x9')]);router['get'](_0xc9dc('0xa'),auth[_0xc9dc('0xb')](),controller[_0xc9dc('0xc')]);router[_0xc9dc('0xd')](_0xc9dc('0xe'),auth[_0xc9dc('0xb')](),controller[_0xc9dc('0xf')]);router[_0xc9dc('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc9dc('0x11')]('/:id',auth[_0xc9dc('0xb')](),controller[_0xc9dc('0x12')]);router[_0xc9dc('0x13')](_0xc9dc('0xe'),auth[_0xc9dc('0xb')](),controller['destroy']);module[_0xc9dc('0x14')]=router; \ No newline at end of file diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js b/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js new file mode 100644 index 0000000..151250d --- /dev/null +++ b/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x1da515,_0x56f169){var _0x1feff4=function(_0x580abe){while(--_0x580abe){_0x1da515['push'](_0x1da515['shift']());}};_0x1feff4(++_0x56f169);}(_0xf4eb,0xec));var _0xbf4e=function(_0x592cdd,_0x421fd2){_0x592cdd=_0x592cdd-0x0;var _0x36db80=_0xf4eb[_0x592cdd];return _0x36db80;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}}; \ No newline at end of file diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.controller.js b/server/api/openchannelTransferReport/openchannelTransferReport.controller.js new file mode 100644 index 0000000..4dfd4ee --- /dev/null +++ b/server/api/openchannelTransferReport/openchannelTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x81dc=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','stack','name','send','index','map','OpenchannelTransferReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','then','catch','show','params','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x541260,_0x4c7f2e){var _0x1dd2b5=function(_0x4140de){while(--_0x4140de){_0x541260['push'](_0x541260['shift']());}};_0x1dd2b5(++_0x4c7f2e);}(_0x81dc,0xdc));var _0xc81d=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x81dc[_0x5ce15c];return _0x36e4f5;};'use strict';var emlformat=require(_0xc81d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc81d('0x1'));var jsonpatch=require(_0xc81d('0x2'));var rp=require(_0xc81d('0x3'));var moment=require(_0xc81d('0x4'));var BPromise=require(_0xc81d('0x5'));var Mustache=require(_0xc81d('0x6'));var util=require(_0xc81d('0x7'));var path=require(_0xc81d('0x8'));var sox=require(_0xc81d('0x9'));var csv=require(_0xc81d('0xa'));var ejs=require(_0xc81d('0xb'));var fs=require('fs');var fs_extra=require(_0xc81d('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc81d('0xd'));var jsforce=require(_0xc81d('0xe'));var deskjs=require(_0xc81d('0xf'));var toCsv=require(_0xc81d('0xa'));var querystring=require('querystring');var Papa=require(_0xc81d('0x10'));var Redis=require(_0xc81d('0x11'));var authService=require(_0xc81d('0x12'));var qs=require(_0xc81d('0x13'));var as=require(_0xc81d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc81d('0x15'))(_0xc81d('0x16'));var utils=require('../../config/utils');var config=require(_0xc81d('0x17'));var licenseUtil=require(_0xc81d('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b90a3,_0x165d6d){_0x165d6d=_0x165d6d||0xcc;return function(_0x548fab){if(_0x548fab){return _0x4b90a3[_0xc81d('0x19')](_0x165d6d);}return _0x4b90a3[_0xc81d('0x1a')](_0x165d6d)[_0xc81d('0x1b')]();};}function respondWithResult(_0x446e16,_0x16dcb5){_0x16dcb5=_0x16dcb5||0xc8;return function(_0x30a14a){if(_0x30a14a){return _0x446e16[_0xc81d('0x1a')](_0x16dcb5)[_0xc81d('0x1c')](_0x30a14a);}};}function respondWithFilteredResult(_0x1b8e60,_0x41fc2a){return function(_0x3db0c9){if(_0x3db0c9){var _0xdcd131=typeof _0x41fc2a[_0xc81d('0x1d')]==='undefined'&&typeof _0x41fc2a['limit']===_0xc81d('0x1e');var _0x552aef=_0x3db0c9[_0xc81d('0x1f')];var _0x305e04=_0xdcd131?0x0:_0x41fc2a[_0xc81d('0x1d')];var _0x48da17=_0xdcd131?_0x3db0c9[_0xc81d('0x1f')]:_0x41fc2a[_0xc81d('0x1d')]+_0x41fc2a[_0xc81d('0x20')];var _0x328590;if(_0x48da17>=_0x552aef){_0x48da17=_0x552aef;_0x328590=0xc8;}else{_0x328590=0xce;}_0x1b8e60[_0xc81d('0x1a')](_0x328590);return _0x1b8e60['set']('Content-Range',_0x305e04+'-'+_0x48da17+'/'+_0x552aef)[_0xc81d('0x1c')](_0x3db0c9);}return null;};}function patchUpdates(_0x339b9c){return function(_0x5e53f1){try{jsonpatch[_0xc81d('0x21')](_0x5e53f1,_0x339b9c,!![]);}catch(_0x4f0d1b){return BPromise[_0xc81d('0x22')](_0x4f0d1b);}return _0x5e53f1[_0xc81d('0x23')]();};}function saveUpdates(_0x300ff1,_0x490dc8){return function(_0x16aabe){if(_0x16aabe){return _0x16aabe[_0xc81d('0x24')](_0x300ff1)['then'](function(_0x3b0a19){return _0x3b0a19;});}return null;};}function removeEntity(_0x1944a3,_0xda326c){return function(_0x3392a8){if(_0x3392a8){return _0x3392a8['destroy']()['then'](function(){_0x1944a3[_0xc81d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c347d,_0x1572e4){return function(_0x68ded3){if(!_0x68ded3){_0x2c347d[_0xc81d('0x19')](0x194);}return _0x68ded3;};}function handleError(_0x19861c,_0xbba2d4){_0xbba2d4=_0xbba2d4||0x1f4;return function(_0x363e20){logger['error'](_0x363e20[_0xc81d('0x25')]);if(_0x363e20[_0xc81d('0x26')]){delete _0x363e20[_0xc81d('0x26')];}_0x19861c[_0xc81d('0x1a')](_0xbba2d4)[_0xc81d('0x27')](_0x363e20);};}exports[_0xc81d('0x28')]=function(_0x458665,_0x57bce7){var _0x566918={},_0x2b0f70={},_0x5a2408={'count':0x0,'rows':[]};var _0x57703a=_[_0xc81d('0x29')](db[_0xc81d('0x2a')]['rawAttributes'],function(_0x31dcf6){return{'name':_0x31dcf6[_0xc81d('0x2b')],'type':_0x31dcf6[_0xc81d('0x2c')][_0xc81d('0x2d')]};});_0x2b0f70[_0xc81d('0x2e')]=_[_0xc81d('0x29')](_0x57703a,_0xc81d('0x26'));_0x2b0f70[_0xc81d('0x2f')]=_[_0xc81d('0x30')](_0x458665[_0xc81d('0x2f')]);_0x2b0f70[_0xc81d('0x31')]=_[_0xc81d('0x32')](_0x2b0f70[_0xc81d('0x2e')],_0x2b0f70[_0xc81d('0x2f')]);_0x566918['attributes']=_['intersection'](_0x2b0f70[_0xc81d('0x2e')],qs[_0xc81d('0x33')](_0x458665[_0xc81d('0x2f')][_0xc81d('0x33')]));_0x566918[_0xc81d('0x34')]=_0x566918['attributes'][_0xc81d('0x35')]?_0x566918[_0xc81d('0x34')]:_0x2b0f70[_0xc81d('0x2e')];if(!_0x458665[_0xc81d('0x2f')][_0xc81d('0x36')](_0xc81d('0x37'))){_0x566918[_0xc81d('0x20')]=qs[_0xc81d('0x20')](_0x458665[_0xc81d('0x2f')][_0xc81d('0x20')]);_0x566918[_0xc81d('0x1d')]=qs[_0xc81d('0x1d')](_0x458665[_0xc81d('0x2f')]['offset']);}_0x566918[_0xc81d('0x38')]=qs[_0xc81d('0x39')](_0x458665[_0xc81d('0x2f')]['sort']);_0x566918[_0xc81d('0x3a')]=qs[_0xc81d('0x31')](_[_0xc81d('0x3b')](_0x458665[_0xc81d('0x2f')],_0x2b0f70[_0xc81d('0x31')]),_0x57703a);if(_0x458665['query']['filter']){_0x566918['where']=_['merge'](_0x566918[_0xc81d('0x3a')],{'$or':_[_0xc81d('0x29')](_0x57703a,function(_0x58468b){if(_0x58468b[_0xc81d('0x2c')]!==_0xc81d('0x3c')){var _0x16133b={};_0x16133b[_0x58468b[_0xc81d('0x26')]]={'$like':'%'+_0x458665[_0xc81d('0x2f')]['filter']+'%'};return _0x16133b;}})});}_0x566918=_[_0xc81d('0x3d')]({},_0x566918,_0x458665[_0xc81d('0x3e')]);var _0x25f964={'where':_0x566918[_0xc81d('0x3a')]};return db[_0xc81d('0x2a')]['count'](_0x25f964)['then'](function(_0x3ce888){_0x5a2408[_0xc81d('0x1f')]=_0x3ce888;if(_0x458665[_0xc81d('0x2f')][_0xc81d('0x3f')]){_0x566918[_0xc81d('0x40')]=[{'all':!![]}];}return db[_0xc81d('0x2a')][_0xc81d('0x41')](_0x566918);})[_0xc81d('0x42')](function(_0x49b3fa){_0x5a2408['rows']=_0x49b3fa;return _0x5a2408;})[_0xc81d('0x42')](respondWithFilteredResult(_0x57bce7,_0x566918))[_0xc81d('0x43')](handleError(_0x57bce7,null));};exports[_0xc81d('0x44')]=function(_0x45ff3f,_0x90f7e7){var _0x43b2ea={'raw':!![],'where':{'id':_0x45ff3f[_0xc81d('0x45')]['id']}},_0x33b603={};_0x33b603['model']=_[_0xc81d('0x30')](db['OpenchannelTransferReport']['rawAttributes']);_0x33b603[_0xc81d('0x2f')]=_[_0xc81d('0x30')](_0x45ff3f[_0xc81d('0x2f')]);_0x33b603[_0xc81d('0x31')]=_[_0xc81d('0x32')](_0x33b603[_0xc81d('0x2e')],_0x33b603[_0xc81d('0x2f')]);_0x43b2ea[_0xc81d('0x34')]=_['intersection'](_0x33b603[_0xc81d('0x2e')],qs[_0xc81d('0x33')](_0x45ff3f['query'][_0xc81d('0x33')]));_0x43b2ea[_0xc81d('0x34')]=_0x43b2ea[_0xc81d('0x34')]['length']?_0x43b2ea[_0xc81d('0x34')]:_0x33b603[_0xc81d('0x2e')];if(_0x45ff3f['query']['includeAll']){_0x43b2ea[_0xc81d('0x40')]=[{'all':!![]}];}_0x43b2ea=_['merge']({},_0x43b2ea,_0x45ff3f[_0xc81d('0x3e')]);return db[_0xc81d('0x2a')][_0xc81d('0x46')](_0x43b2ea)[_0xc81d('0x42')](handleEntityNotFound(_0x90f7e7,null))['then'](respondWithResult(_0x90f7e7,null))['catch'](handleError(_0x90f7e7,null));};exports[_0xc81d('0x47')]=function(_0x5c0260,_0x1bd23c){return db[_0xc81d('0x2a')]['create'](_0x5c0260['body'],{})['then'](respondWithResult(_0x1bd23c,0xc9))[_0xc81d('0x43')](handleError(_0x1bd23c,null));};exports[_0xc81d('0x24')]=function(_0x2f4c0d,_0x396ff6){if(_0x2f4c0d[_0xc81d('0x48')]['id']){delete _0x2f4c0d['body']['id'];}return db[_0xc81d('0x2a')]['find']({'where':{'id':_0x2f4c0d['params']['id']}})[_0xc81d('0x42')](handleEntityNotFound(_0x396ff6,null))[_0xc81d('0x42')](saveUpdates(_0x2f4c0d['body'],null))['then'](respondWithResult(_0x396ff6,null))['catch'](handleError(_0x396ff6,null));};exports[_0xc81d('0x49')]=function(_0x204d78,_0x34668e){return db[_0xc81d('0x2a')][_0xc81d('0x46')]({'where':{'id':_0x204d78['params']['id']}})[_0xc81d('0x42')](handleEntityNotFound(_0x34668e,null))['then'](removeEntity(_0x34668e,null))[_0xc81d('0x43')](handleError(_0x34668e,null));};exports['describe']=function(_0x3066da,_0xefd06a){return db[_0xc81d('0x2a')][_0xc81d('0x4a')]()[_0xc81d('0x42')](respondWithResult(_0xefd06a,null))[_0xc81d('0x43')](handleError(_0xefd06a,null));}; \ No newline at end of file diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.model.js b/server/api/openchannelTransferReport/openchannelTransferReport.model.js new file mode 100644 index 0000000..a44fab9 --- /dev/null +++ b/server/api/openchannelTransferReport/openchannelTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb5fd=['request-promise','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','report_openchannel_transfer','uniqueid','../../config/logger','api','bluebird'];(function(_0x3e6c7a,_0x36746a){var _0xa990bb=function(_0x50c3e5){while(--_0x50c3e5){_0x3e6c7a['push'](_0x3e6c7a['shift']());}};_0xa990bb(++_0x36746a);}(_0xb5fd,0x1c9));var _0xdb5f=function(_0x4f139f,_0x150de5){_0x4f139f=_0x4f139f-0x0;var _0x24a88b=_0xb5fd[_0x4f139f];return _0x24a88b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdb5f('0x0'))(_0xdb5f('0x1'));var moment=require('moment');var BPromise=require(_0xdb5f('0x2'));var rp=require(_0xdb5f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb5f('0x4'));var config=require(_0xdb5f('0x5'));var attributes=require(_0xdb5f('0x6'));module['exports']=function(_0x6d762,_0x5731a2){return _0x6d762[_0xdb5f('0x7')]('OpenchannelTransferReport',attributes,{'tableName':_0xdb5f('0x8'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xdb5f('0x9')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js b/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js new file mode 100644 index 0000000..9b79cad --- /dev/null +++ b/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','OpenchannelTransferReport,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x4085b1,_0x515b5e){var _0x218dc5=function(_0x70bd3b){while(--_0x70bd3b){_0x4085b1['push'](_0x4085b1['shift']());}};_0x218dc5(++_0x515b5e);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2a0183,_0x3fc93c){_0x2a0183=_0x2a0183-0x0;var _0x158c3a=_0x5fc3[_0x2a0183];return _0x158c3a;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});} \ No newline at end of file diff --git a/server/api/pause/index.js b/server/api/pause/index.js new file mode 100644 index 0000000..199ce4d --- /dev/null +++ b/server/api/pause/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdeab=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x40f142,_0x57d68a){var _0x1b2292=function(_0x228c74){while(--_0x228c74){_0x40f142['push'](_0x40f142['shift']());}};_0x1b2292(++_0x57d68a);}(_0xdeab,0xc0));var _0xbdea=function(_0xc62435,_0x3584e0){_0xc62435=_0xc62435-0x0;var _0x56b63c=_0xdeab[_0xc62435];return _0x56b63c;};'use strict';var multer=require('multer');var util=require(_0xbdea('0x0'));var path=require(_0xbdea('0x1'));var timeout=require('connect-timeout');var express=require(_0xbdea('0x2'));var router=express[_0xbdea('0x3')]();var fs_extra=require(_0xbdea('0x4'));var auth=require(_0xbdea('0x5'));var interaction=require(_0xbdea('0x6'));var config=require(_0xbdea('0x7'));var controller=require('./pause.controller');router[_0xbdea('0x8')]('/',auth[_0xbdea('0x9')](),controller[_0xbdea('0xa')]);router[_0xbdea('0x8')](_0xbdea('0xb'),auth[_0xbdea('0x9')](),controller[_0xbdea('0xc')]);router[_0xbdea('0xd')]('/',auth[_0xbdea('0x9')](),controller[_0xbdea('0xe')]);router[_0xbdea('0xf')]('/:id',auth[_0xbdea('0x9')](),controller[_0xbdea('0x10')]);router['delete'](_0xbdea('0xb'),auth[_0xbdea('0x9')](),controller[_0xbdea('0x11')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/pause/pause.attributes.js b/server/api/pause/pause.attributes.js new file mode 100644 index 0000000..5862ebf --- /dev/null +++ b/server/api/pause/pause.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3be9=['exports','name','STRING','sequelize'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x3be9,0xc3));var _0x93be=function(_0x2f6541,_0x363cba){_0x2f6541=_0x2f6541-0x0;var _0x4d76d8=_0x3be9[_0x2f6541];return _0x4d76d8;};'use strict';var Sequelize=require(_0x93be('0x0'));module[_0x93be('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x93be('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x93be('0x3')]}}; \ No newline at end of file diff --git a/server/api/pause/pause.controller.js b/server/api/pause/pause.controller.js new file mode 100644 index 0000000..5d69a51 --- /dev/null +++ b/server/api/pause/pause.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd7ca=['reject','save','update','then','destroy','Pauses','UserProfileResource','end','error','name','send','index','map','rawAttributes','fieldName','type','keys','filters','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','Pause','findAll','rows','catch','params','length','include','find','create','user','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd7ca,0x171));var _0xad7c=function(_0x3db375,_0x5099d3){_0x3db375=_0x3db375-0x0;var _0x490cb9=_0xd7ca[_0x3db375];return _0x490cb9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xad7c('0x0'));var moment=require(_0xad7c('0x1'));var BPromise=require(_0xad7c('0x2'));var Mustache=require(_0xad7c('0x3'));var util=require(_0xad7c('0x4'));var path=require(_0xad7c('0x5'));var sox=require('sox');var csv=require(_0xad7c('0x6'));var ejs=require(_0xad7c('0x7'));var fs=require('fs');var fs_extra=require(_0xad7c('0x8'));var _=require(_0xad7c('0x9'));var squel=require(_0xad7c('0xa'));var crypto=require(_0xad7c('0xb'));var jsforce=require(_0xad7c('0xc'));var deskjs=require(_0xad7c('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xad7c('0xe'));var Redis=require(_0xad7c('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xad7c('0x10'));var logger=require(_0xad7c('0x11'))(_0xad7c('0x12'));var utils=require(_0xad7c('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xad7c('0x14'))['db'];function respondWithStatusCode(_0x9f6693,_0x39df21){_0x39df21=_0x39df21||0xcc;return function(_0x2684c8){if(_0x2684c8){return _0x9f6693[_0xad7c('0x15')](_0x39df21);}return _0x9f6693[_0xad7c('0x16')](_0x39df21)['end']();};}function respondWithResult(_0x35ba8d,_0xd81547){_0xd81547=_0xd81547||0xc8;return function(_0x23247f){if(_0x23247f){return _0x35ba8d[_0xad7c('0x16')](_0xd81547)[_0xad7c('0x17')](_0x23247f);}};}function respondWithFilteredResult(_0x5cc05d,_0x518bab){return function(_0x4ce323){if(_0x4ce323){var _0x48ec67=typeof _0x518bab[_0xad7c('0x18')]===_0xad7c('0x19')&&typeof _0x518bab[_0xad7c('0x1a')]===_0xad7c('0x19');var _0x29080e=_0x4ce323[_0xad7c('0x1b')];var _0x2fdf62=_0x48ec67?0x0:_0x518bab[_0xad7c('0x18')];var _0xaada7b=_0x48ec67?_0x4ce323[_0xad7c('0x1b')]:_0x518bab[_0xad7c('0x18')]+_0x518bab[_0xad7c('0x1a')];var _0x55b12c;if(_0xaada7b>=_0x29080e){_0xaada7b=_0x29080e;_0x55b12c=0xc8;}else{_0x55b12c=0xce;}_0x5cc05d[_0xad7c('0x16')](_0x55b12c);return _0x5cc05d[_0xad7c('0x1c')](_0xad7c('0x1d'),_0x2fdf62+'-'+_0xaada7b+'/'+_0x29080e)['json'](_0x4ce323);}return null;};}function patchUpdates(_0x1ae1ee){return function(_0x2c4289){try{jsonpatch[_0xad7c('0x1e')](_0x2c4289,_0x1ae1ee,!![]);}catch(_0x3a4d80){return BPromise[_0xad7c('0x1f')](_0x3a4d80);}return _0x2c4289[_0xad7c('0x20')]();};}function saveUpdates(_0xac064e,_0x1b4ef0){return function(_0x3f3620){if(_0x3f3620){return _0x3f3620[_0xad7c('0x21')](_0xac064e)[_0xad7c('0x22')](function(_0x40e6e2){return _0x40e6e2;});}return null;};}function removeEntity(_0x394507,_0x2e8598){return function(_0x365ac0){if(_0x365ac0){return _0x365ac0[_0xad7c('0x23')]()[_0xad7c('0x22')](function(){var _0x110d59=_0x365ac0['get']({'plain':!![]});var _0x201591=_0xad7c('0x24');return db[_0xad7c('0x25')]['destroy']({'where':{'type':_0x201591,'resourceId':_0x110d59['id']}})[_0xad7c('0x22')](function(){return _0x365ac0;});})[_0xad7c('0x22')](function(){_0x394507['status'](0xcc)[_0xad7c('0x26')]();});}};}function handleEntityNotFound(_0x7cfcfd,_0x5105d8){return function(_0x452398){if(!_0x452398){_0x7cfcfd[_0xad7c('0x15')](0x194);}return _0x452398;};}function handleError(_0x4e12a5,_0x25acc3){_0x25acc3=_0x25acc3||0x1f4;return function(_0x503594){logger[_0xad7c('0x27')](_0x503594['stack']);if(_0x503594[_0xad7c('0x28')]){delete _0x503594[_0xad7c('0x28')];}_0x4e12a5[_0xad7c('0x16')](_0x25acc3)[_0xad7c('0x29')](_0x503594);};}exports[_0xad7c('0x2a')]=function(_0x267c54,_0xb0c771){var _0x4aa24c={},_0x3e3ead={},_0x35354d={'count':0x0,'rows':[]};var _0x32761e=_[_0xad7c('0x2b')](db['Pause'][_0xad7c('0x2c')],function(_0x5673a0){return{'name':_0x5673a0[_0xad7c('0x2d')],'type':_0x5673a0[_0xad7c('0x2e')]['key']};});_0x3e3ead['model']=_[_0xad7c('0x2b')](_0x32761e,_0xad7c('0x28'));_0x3e3ead['query']=_[_0xad7c('0x2f')](_0x267c54['query']);_0x3e3ead[_0xad7c('0x30')]=_['intersection'](_0x3e3ead[_0xad7c('0x31')],_0x3e3ead[_0xad7c('0x32')]);_0x4aa24c[_0xad7c('0x33')]=_[_0xad7c('0x34')](_0x3e3ead[_0xad7c('0x31')],qs[_0xad7c('0x35')](_0x267c54[_0xad7c('0x32')][_0xad7c('0x35')]));_0x4aa24c['attributes']=_0x4aa24c[_0xad7c('0x33')]['length']?_0x4aa24c[_0xad7c('0x33')]:_0x3e3ead[_0xad7c('0x31')];if(!_0x267c54['query'][_0xad7c('0x36')](_0xad7c('0x37'))){_0x4aa24c[_0xad7c('0x1a')]=qs[_0xad7c('0x1a')](_0x267c54[_0xad7c('0x32')][_0xad7c('0x1a')]);_0x4aa24c[_0xad7c('0x18')]=qs['offset'](_0x267c54[_0xad7c('0x32')][_0xad7c('0x18')]);}_0x4aa24c[_0xad7c('0x38')]=qs[_0xad7c('0x39')](_0x267c54[_0xad7c('0x32')][_0xad7c('0x39')]);_0x4aa24c[_0xad7c('0x3a')]=qs[_0xad7c('0x30')](_[_0xad7c('0x3b')](_0x267c54[_0xad7c('0x32')],_0x3e3ead[_0xad7c('0x30')]),_0x32761e);if(_0x267c54[_0xad7c('0x32')][_0xad7c('0x3c')]){_0x4aa24c[_0xad7c('0x3a')]=_['merge'](_0x4aa24c[_0xad7c('0x3a')],{'$or':_['map'](_0x32761e,function(_0xdb2d3e){if(_0xdb2d3e[_0xad7c('0x2e')]!==_0xad7c('0x3d')){var _0x47426d={};_0x47426d[_0xdb2d3e[_0xad7c('0x28')]]={'$like':'%'+_0x267c54[_0xad7c('0x32')][_0xad7c('0x3c')]+'%'};return _0x47426d;}})});}_0x4aa24c=_[_0xad7c('0x3e')]({},_0x4aa24c,_0x267c54[_0xad7c('0x3f')]);var _0x1e37f9={'where':_0x4aa24c[_0xad7c('0x3a')]};return db['Pause'][_0xad7c('0x1b')](_0x1e37f9)[_0xad7c('0x22')](function(_0x2ad8d4){_0x35354d[_0xad7c('0x1b')]=_0x2ad8d4;if(_0x267c54[_0xad7c('0x32')][_0xad7c('0x40')]){_0x4aa24c['include']=[{'all':!![]}];}return db[_0xad7c('0x41')][_0xad7c('0x42')](_0x4aa24c);})[_0xad7c('0x22')](function(_0x2b86d1){_0x35354d[_0xad7c('0x43')]=_0x2b86d1;return _0x35354d;})[_0xad7c('0x22')](respondWithFilteredResult(_0xb0c771,_0x4aa24c))[_0xad7c('0x44')](handleError(_0xb0c771,null));};exports['show']=function(_0xd7af88,_0x141249){var _0x3984b7={'raw':!![],'where':{'id':_0xd7af88[_0xad7c('0x45')]['id']}},_0x5bc83b={};_0x5bc83b[_0xad7c('0x31')]=_[_0xad7c('0x2f')](db[_0xad7c('0x41')][_0xad7c('0x2c')]);_0x5bc83b[_0xad7c('0x32')]=_[_0xad7c('0x2f')](_0xd7af88[_0xad7c('0x32')]);_0x5bc83b[_0xad7c('0x30')]=_[_0xad7c('0x34')](_0x5bc83b[_0xad7c('0x31')],_0x5bc83b[_0xad7c('0x32')]);_0x3984b7[_0xad7c('0x33')]=_[_0xad7c('0x34')](_0x5bc83b[_0xad7c('0x31')],qs[_0xad7c('0x35')](_0xd7af88[_0xad7c('0x32')][_0xad7c('0x35')]));_0x3984b7['attributes']=_0x3984b7[_0xad7c('0x33')][_0xad7c('0x46')]?_0x3984b7['attributes']:_0x5bc83b['model'];if(_0xd7af88[_0xad7c('0x32')]['includeAll']){_0x3984b7[_0xad7c('0x47')]=[{'all':!![]}];}_0x3984b7=_[_0xad7c('0x3e')]({},_0x3984b7,_0xd7af88[_0xad7c('0x3f')]);return db[_0xad7c('0x41')][_0xad7c('0x48')](_0x3984b7)[_0xad7c('0x22')](handleEntityNotFound(_0x141249,null))['then'](respondWithResult(_0x141249,null))['catch'](handleError(_0x141249,null));};exports[_0xad7c('0x49')]=function(_0x1dd875,_0xd3a6e3){return db[_0xad7c('0x41')][_0xad7c('0x49')](_0x1dd875['body'],{})[_0xad7c('0x22')](function(_0x421a11){var _0x6ed308=_0x1dd875[_0xad7c('0x4a')][_0xad7c('0x4b')]({'plain':!![]});if(!_0x6ed308)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x6ed308['role']===_0xad7c('0x4a')){var _0x4bcdc5=_0x421a11[_0xad7c('0x4b')]({'plain':!![]});var _0x5a5219=_0xad7c('0x24');return db['UserProfileSection'][_0xad7c('0x48')]({'where':{'name':_0x5a5219,'userProfileId':_0x6ed308[_0xad7c('0x4c')]},'raw':!![]})[_0xad7c('0x22')](function(_0x4b6082){if(_0x4b6082&&_0x4b6082[_0xad7c('0x4d')]===0x0){return db['UserProfileResource'][_0xad7c('0x49')]({'name':_0x4bcdc5[_0xad7c('0x28')],'resourceId':_0x4bcdc5['id'],'type':_0x4b6082[_0xad7c('0x28')],'sectionId':_0x4b6082['id']},{})[_0xad7c('0x22')](function(){return _0x421a11;});}else{return _0x421a11;}})['catch'](function(_0x526828){logger[_0xad7c('0x27')](_0xad7c('0x4e'),_0x526828);throw _0x526828;});}return _0x421a11;})[_0xad7c('0x22')](respondWithResult(_0xd3a6e3,0xc9))[_0xad7c('0x44')](handleError(_0xd3a6e3,null));};exports['update']=function(_0x497955,_0x308140){if(_0x497955[_0xad7c('0x4f')]['id']){delete _0x497955[_0xad7c('0x4f')]['id'];}return db[_0xad7c('0x41')]['find']({'where':{'id':_0x497955[_0xad7c('0x45')]['id']}})[_0xad7c('0x22')](handleEntityNotFound(_0x308140,null))[_0xad7c('0x22')](saveUpdates(_0x497955[_0xad7c('0x4f')],null))['then'](respondWithResult(_0x308140,null))[_0xad7c('0x44')](handleError(_0x308140,null));};exports[_0xad7c('0x23')]=function(_0x267ffd,_0x4bd15a){return db['Pause'][_0xad7c('0x48')]({'where':{'id':_0x267ffd['params']['id']}})[_0xad7c('0x22')](handleEntityNotFound(_0x4bd15a,null))[_0xad7c('0x22')](removeEntity(_0x4bd15a,null))[_0xad7c('0x44')](handleError(_0x4bd15a,null));}; \ No newline at end of file diff --git a/server/api/pause/pause.model.js b/server/api/pause/pause.model.js new file mode 100644 index 0000000..4ff0f32 --- /dev/null +++ b/server/api/pause/pause.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x28394f,_0x5ebdd2){var _0x2618d2=function(_0x2ffed6){while(--_0x2ffed6){_0x28394f['push'](_0x28394f['shift']());}};_0x2618d2(++_0x5ebdd2);}(_0x7217,0x19e));var _0x7721=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x7217[_0x32d457];return _0x338386;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/pause/pause.rpc.js b/server/api/pause/pause.rpc.js new file mode 100644 index 0000000..27b8014 --- /dev/null +++ b/server/api/pause/pause.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +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(_0x4d5aa3,_0x13433b){var _0x3440fe=function(_0x2cc05){while(--_0x2cc05){_0x4d5aa3['push'](_0x4d5aa3['shift']());}};_0x3440fe(++_0x13433b);}(_0x7a54,0x106));var _0x47a5=function(_0x16c76e,_0x554243){_0x16c76e=_0x16c76e-0x0;var _0x3942eb=_0x7a54[_0x16c76e];return _0x3942eb;};'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 diff --git a/server/api/plugin/index.js b/server/api/plugin/index.js new file mode 100644 index 0000000..803a2d0 --- /dev/null +++ b/server/api/plugin/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xda55=['diskStorage','join','server/files/plugins','originalname','replace','format','%s-%s%s','now','extname','post','single','file','webhookPost','put','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','isAuthenticated','get','/webhook','webhookGet','/:id','show','download'];(function(_0x414b48,_0x27550e){var _0x4c2226=function(_0x21afc3){while(--_0x21afc3){_0x414b48['push'](_0x414b48['shift']());}};_0x4c2226(++_0x27550e);}(_0xda55,0x6d));var _0x5da5=function(_0x28e74e,_0x53fdf1){_0x28e74e=_0x28e74e-0x0;var _0xb45ac1=_0xda55[_0x28e74e];return _0xb45ac1;};'use strict';var multer=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5da5('0x2'));var router=express[_0x5da5('0x3')]();var fs_extra=require(_0x5da5('0x4'));var auth=require(_0x5da5('0x5'));var interaction=require(_0x5da5('0x6'));var config=require('../../config/environment');var controller=require(_0x5da5('0x7'));router['get']('/',auth[_0x5da5('0x8')](),controller['index']);router[_0x5da5('0x9')](_0x5da5('0xa'),controller[_0x5da5('0xb')]);router[_0x5da5('0x9')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xd')]);router[_0x5da5('0x9')]('/:id/download',auth[_0x5da5('0x8')](),controller[_0x5da5('0xe')]);var upload=multer({'storage':multer[_0x5da5('0xf')]({'destination':function(_0x26fbe3,_0x1a047e,_0x2a361c){_0x2a361c(null,path[_0x5da5('0x10')](config['root'],_0x5da5('0x11')));},'filename':function(_0x3b5ff9,_0x4f813b,_0x37aeb0){_0x4f813b[_0x5da5('0x12')]=_0x4f813b[_0x5da5('0x12')][_0x5da5('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x37aeb0(null,util[_0x5da5('0x14')](_0x5da5('0x15'),path['basename'](_0x4f813b['originalname'],path['extname'](_0x4f813b[_0x5da5('0x12')])),Date[_0x5da5('0x16')](),path[_0x5da5('0x17')](_0x4f813b[_0x5da5('0x12')])));}})});router[_0x5da5('0x18')]('/',upload[_0x5da5('0x19')](_0x5da5('0x1a')),controller['upload']);router[_0x5da5('0x18')](_0x5da5('0xa'),controller[_0x5da5('0x1b')]);router[_0x5da5('0x1c')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller['update']);router[_0x5da5('0x1d')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x1d')]);module[_0x5da5('0x1e')]=router; \ No newline at end of file diff --git a/server/api/plugin/plugin.attributes.js b/server/api/plugin/plugin.attributes.js new file mode 100644 index 0000000..fe1f4fb --- /dev/null +++ b/server/api/plugin/plugin.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x48bf=['never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','agentOnly'];(function(_0x5d3f22,_0x1064bf){var _0x3d3a25=function(_0x3e4b63){while(--_0x3e4b63){_0x5d3f22['push'](_0x5d3f22['shift']());}};_0x3d3a25(++_0x1064bf);}(_0x48bf,0x92));var _0xf48b=function(_0x3a7fe5,_0x371426){_0x3a7fe5=_0x3a7fe5-0x0;var _0x18ed66=_0x48bf[_0x3a7fe5];return _0x18ed66;};'use strict';var Sequelize=require(_0xf48b('0x0'));module[_0xf48b('0x1')]={'name':{'type':Sequelize[_0xf48b('0x2')]},'type':{'type':Sequelize[_0xf48b('0x3')](_0xf48b('0x4'),_0xf48b('0x5'))},'description':{'type':Sequelize[_0xf48b('0x6')]},'version':{'type':Sequelize[_0xf48b('0x6')]},'path':{'type':Sequelize[_0xf48b('0x2')],'comment':_0xf48b('0x7')},'active':{'type':Sequelize[_0xf48b('0x8')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0xf48b('0x3')]('adminOnly',_0xf48b('0x9'),'always',_0xf48b('0xa')),'defaultValue':_0xf48b('0xb'),'comment':_0xf48b('0xc')},'icon':{'type':Sequelize[_0xf48b('0x2')]},'adminUrl':{'type':Sequelize[_0xf48b('0x2')]},'agentUrl':{'type':Sequelize[_0xf48b('0x2')]},'scriptName':{'type':Sequelize[_0xf48b('0x2')]},'scriptPath':{'type':Sequelize[_0xf48b('0x2')]}}; \ No newline at end of file diff --git a/server/api/plugin/plugin.controller.js b/server/api/plugin/plugin.controller.js new file mode 100644 index 0000000..ce541a0 --- /dev/null +++ b/server/api/plugin/plugin.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0d07=['scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','html','plugins','test','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','endsWith','statusCode','webhookPost','http://localhost:','content-type','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','papaparse','extract-zip','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','./plugin.socket','register','sendStatus','json','offset','undefined','count','limit','status','set','Content-Range','reject','destroy','get','Plugins','UserProfileResource','then','end','error','stack','name','index','map','Plugin','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','show','find','catch','download','params','join','root','server/files/plugins','%s.zip','basename','createWriteStream','zip','warning','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','dirname','attachments/**/*','Sequelize','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','lstatSync','isFile','Invalid\x20plugin\x20structure','isDirectory','some','Plugin\x20manifest\x20missing','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','parameters','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing'];(function(_0x2791aa,_0x26a4c0){var _0x43b95a=function(_0x18b43b){while(--_0x18b43b){_0x2791aa['push'](_0x2791aa['shift']());}};_0x43b95a(++_0x26a4c0);}(_0x0d07,0x16f));var _0x70d0=function(_0x41aed2,_0x5320c3){_0x41aed2=_0x41aed2-0x0;var _0x114230=_0x0d07[_0x41aed2];return _0x114230;};'use strict';var emlformat=require(_0x70d0('0x0'));var rimraf=require(_0x70d0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x70d0('0x2'));var rp=require(_0x70d0('0x3'));var moment=require(_0x70d0('0x4'));var BPromise=require(_0x70d0('0x5'));var Mustache=require(_0x70d0('0x6'));var util=require(_0x70d0('0x7'));var path=require(_0x70d0('0x8'));var sox=require(_0x70d0('0x9'));var csv=require(_0x70d0('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x70d0('0xb'));var squel=require(_0x70d0('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x70d0('0xa'));var querystring=require('querystring');var Papa=require(_0x70d0('0xd'));var extract=require(_0x70d0('0xe'));var rimraf=require(_0x70d0('0x1'));var archiver=require('archiver');var Redis=require(_0x70d0('0xf'));var authService=require(_0x70d0('0x10'));var qs=require(_0x70d0('0x11'));var as=require(_0x70d0('0x12'));var hardwareService=require(_0x70d0('0x13'));var logger=require(_0x70d0('0x14'))('api');var utils=require(_0x70d0('0x15'));var config=require(_0x70d0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x70d0('0x17'))['db'];config['redis']=_[_0x70d0('0x18')](config[_0x70d0('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x70d0('0x19')]));require(_0x70d0('0x1a'))[_0x70d0('0x1b')](socket);function respondWithStatusCode(_0x56f276,_0x15f1c4){_0x15f1c4=_0x15f1c4||0xcc;return function(_0x2a4365){if(_0x2a4365){return _0x56f276[_0x70d0('0x1c')](_0x15f1c4);}return _0x56f276['status'](_0x15f1c4)['end']();};}function respondWithResult(_0x10412a,_0x2ed680){_0x2ed680=_0x2ed680||0xc8;return function(_0x47bf8d){if(_0x47bf8d){return _0x10412a['status'](_0x2ed680)[_0x70d0('0x1d')](_0x47bf8d);}};}function respondWithFilteredResult(_0x2336ee,_0x581077){return function(_0x1cb94b){if(_0x1cb94b){var _0x1e2897=typeof _0x581077[_0x70d0('0x1e')]==='undefined'&&typeof _0x581077['limit']===_0x70d0('0x1f');var _0x53eb9e=_0x1cb94b['count'];var _0x25d4f8=_0x1e2897?0x0:_0x581077['offset'];var _0x53f4c1=_0x1e2897?_0x1cb94b[_0x70d0('0x20')]:_0x581077[_0x70d0('0x1e')]+_0x581077[_0x70d0('0x21')];var _0x598637;if(_0x53f4c1>=_0x53eb9e){_0x53f4c1=_0x53eb9e;_0x598637=0xc8;}else{_0x598637=0xce;}_0x2336ee[_0x70d0('0x22')](_0x598637);return _0x2336ee[_0x70d0('0x23')](_0x70d0('0x24'),_0x25d4f8+'-'+_0x53f4c1+'/'+_0x53eb9e)['json'](_0x1cb94b);}return null;};}function patchUpdates(_0x47c5cb){return function(_0x23bd80){try{jsonpatch['apply'](_0x23bd80,_0x47c5cb,!![]);}catch(_0x3e9302){return BPromise[_0x70d0('0x25')](_0x3e9302);}return _0x23bd80['save']();};}function saveUpdates(_0x325cbf,_0x1add75){return function(_0x462ddd){if(_0x462ddd){return _0x462ddd['update'](_0x325cbf)['then'](function(_0x3d7ab6){return _0x3d7ab6;});}return null;};}function removeEntity(_0x5842ee,_0x206e70){return function(_0x3fe136){if(_0x3fe136){return _0x3fe136[_0x70d0('0x26')]()['then'](function(){var _0x124918=_0x3fe136[_0x70d0('0x27')]({'plain':!![]});var _0x513a7e=_0x70d0('0x28');return db[_0x70d0('0x29')][_0x70d0('0x26')]({'where':{'type':_0x513a7e,'resourceId':_0x124918['id']}})['then'](function(){return _0x3fe136;});})[_0x70d0('0x2a')](function(){_0x5842ee[_0x70d0('0x22')](0xcc)[_0x70d0('0x2b')]();});}};}function handleEntityNotFound(_0x44b16d,_0x3e3747){return function(_0x19a83f){if(!_0x19a83f){_0x44b16d[_0x70d0('0x1c')](0x194);}return _0x19a83f;};}function handleError(_0x16d0d9,_0x5e6ccc){_0x5e6ccc=_0x5e6ccc||0x1f4;return function(_0xb39b36){logger[_0x70d0('0x2c')](_0xb39b36[_0x70d0('0x2d')]);if(_0xb39b36[_0x70d0('0x2e')]){delete _0xb39b36['name'];}_0x16d0d9['status'](_0x5e6ccc)['send'](_0xb39b36);};}exports[_0x70d0('0x2f')]=function(_0x27f64d,_0x58bd0d){var _0x321422={},_0x3b86ec={},_0xbd6736={'count':0x0,'rows':[]};var _0x5d0ab1=_[_0x70d0('0x30')](db[_0x70d0('0x31')][_0x70d0('0x32')],function(_0x23bd00){return{'name':_0x23bd00[_0x70d0('0x33')],'type':_0x23bd00[_0x70d0('0x34')]['key']};});_0x3b86ec[_0x70d0('0x35')]=_[_0x70d0('0x30')](_0x5d0ab1,_0x70d0('0x2e'));_0x3b86ec[_0x70d0('0x36')]=_[_0x70d0('0x37')](_0x27f64d[_0x70d0('0x36')]);_0x3b86ec['filters']=_[_0x70d0('0x38')](_0x3b86ec[_0x70d0('0x35')],_0x3b86ec[_0x70d0('0x36')]);_0x321422[_0x70d0('0x39')]=_[_0x70d0('0x38')](_0x3b86ec[_0x70d0('0x35')],qs[_0x70d0('0x3a')](_0x27f64d[_0x70d0('0x36')][_0x70d0('0x3a')]));_0x321422[_0x70d0('0x39')]=_0x321422[_0x70d0('0x39')][_0x70d0('0x3b')]?_0x321422[_0x70d0('0x39')]:_0x3b86ec[_0x70d0('0x35')];if(!_0x27f64d['query']['hasOwnProperty'](_0x70d0('0x3c'))){_0x321422['limit']=qs[_0x70d0('0x21')](_0x27f64d['query'][_0x70d0('0x21')]);_0x321422[_0x70d0('0x1e')]=qs[_0x70d0('0x1e')](_0x27f64d[_0x70d0('0x36')][_0x70d0('0x1e')]);}_0x321422[_0x70d0('0x3d')]=qs[_0x70d0('0x3e')](_0x27f64d['query'][_0x70d0('0x3e')]);_0x321422['where']=qs[_0x70d0('0x3f')](_[_0x70d0('0x40')](_0x27f64d[_0x70d0('0x36')],_0x3b86ec[_0x70d0('0x3f')]),_0x5d0ab1);if(_0x27f64d[_0x70d0('0x36')][_0x70d0('0x41')]){_0x321422[_0x70d0('0x42')]=_[_0x70d0('0x43')](_0x321422[_0x70d0('0x42')],{'$or':_[_0x70d0('0x30')](_0x5d0ab1,function(_0x59c511){if(_0x59c511[_0x70d0('0x34')]!=='VIRTUAL'){var _0x1daa07={};_0x1daa07[_0x59c511[_0x70d0('0x2e')]]={'$like':'%'+_0x27f64d[_0x70d0('0x36')][_0x70d0('0x41')]+'%'};return _0x1daa07;}})});}_0x321422=_[_0x70d0('0x43')]({},_0x321422,_0x27f64d[_0x70d0('0x44')]);var _0x5825bd={'where':_0x321422[_0x70d0('0x42')]};return db['Plugin'][_0x70d0('0x20')](_0x5825bd)[_0x70d0('0x2a')](function(_0x19f6d7){_0xbd6736[_0x70d0('0x20')]=_0x19f6d7;if(_0x27f64d[_0x70d0('0x36')][_0x70d0('0x45')]){_0x321422[_0x70d0('0x46')]=[{'all':!![]}];}return db[_0x70d0('0x31')]['findAll'](_0x321422);})[_0x70d0('0x2a')](function(_0x9d6ab0){_0xbd6736['rows']=_0x9d6ab0;return _0xbd6736;})[_0x70d0('0x2a')](respondWithFilteredResult(_0x58bd0d,_0x321422))['catch'](handleError(_0x58bd0d,null));};exports[_0x70d0('0x47')]=function(_0x15a9a0,_0x1ffdd5){var _0x4f79a5={'raw':!![],'where':{'id':_0x15a9a0['params']['id']}},_0x3ee973={};_0x3ee973['model']=_['keys'](db[_0x70d0('0x31')][_0x70d0('0x32')]);_0x3ee973[_0x70d0('0x36')]=_[_0x70d0('0x37')](_0x15a9a0[_0x70d0('0x36')]);_0x3ee973[_0x70d0('0x3f')]=_[_0x70d0('0x38')](_0x3ee973[_0x70d0('0x35')],_0x3ee973[_0x70d0('0x36')]);_0x4f79a5[_0x70d0('0x39')]=_[_0x70d0('0x38')](_0x3ee973[_0x70d0('0x35')],qs[_0x70d0('0x3a')](_0x15a9a0[_0x70d0('0x36')][_0x70d0('0x3a')]));_0x4f79a5[_0x70d0('0x39')]=_0x4f79a5[_0x70d0('0x39')]['length']?_0x4f79a5[_0x70d0('0x39')]:_0x3ee973[_0x70d0('0x35')];if(_0x15a9a0[_0x70d0('0x36')][_0x70d0('0x45')]){_0x4f79a5[_0x70d0('0x46')]=[{'all':!![]}];}_0x4f79a5=_[_0x70d0('0x43')]({},_0x4f79a5,_0x15a9a0['options']);return db['Plugin'][_0x70d0('0x48')](_0x4f79a5)['then'](handleEntityNotFound(_0x1ffdd5,null))[_0x70d0('0x2a')](respondWithResult(_0x1ffdd5,null))[_0x70d0('0x49')](handleError(_0x1ffdd5,null));};exports[_0x70d0('0x4a')]=function(_0x2cc95b,_0x440bfb,_0x1f9688){return db[_0x70d0('0x31')][_0x70d0('0x48')]({'where':{'id':_0x2cc95b[_0x70d0('0x4b')]['id']},'attributes':[_0x70d0('0x2e'),_0x70d0('0x8')],'raw':!![]})[_0x70d0('0x2a')](handleEntityNotFound(_0x440bfb,null))['then'](function(_0x558bb1){if(_0x558bb1){var _0x3a83f6=path[_0x70d0('0x4c')](config[_0x70d0('0x4d')],_0x70d0('0x4e'),util['format'](_0x70d0('0x4f'),path[_0x70d0('0x50')](_0x558bb1[_0x70d0('0x8')])));var _0x348626=fs[_0x70d0('0x51')](_0x3a83f6);var _0x430947=archiver(_0x70d0('0x52'),{'zlib':{'level':0x9}});_0x430947['on'](_0x70d0('0x53'),function(_0x554c18){if(_0x554c18['code']===_0x70d0('0x54')){logger[_0x70d0('0x2c')](_0x554c18);}else{throw new db['Sequelize'][(_0x70d0('0x55'))](_0x70d0('0x56'));}});_0x430947['on'](_0x70d0('0x2c'),function(_0x789993){throw new db['Sequelize'][(_0x70d0('0x55'))](_0x70d0('0x56'));});_0x430947['pipe'](_0x348626);_0x430947[_0x70d0('0x57')]('**/*',{'cwd':path[_0x70d0('0x4c')](config[_0x70d0('0x4d')],_0x70d0('0x4e'),path[_0x70d0('0x58')](_0x558bb1[_0x70d0('0x8')])),'ignore':[path['join'](path['basename'](_0x558bb1['path']),'node_modules/**/*'),path[_0x70d0('0x4c')](path['basename'](_0x558bb1[_0x70d0('0x8')]),_0x70d0('0x59'))],'nodir':!![]})['finalize']();_0x348626['on']('close',function(){if(!fs['existsSync'](_0x3a83f6)){throw new db[(_0x70d0('0x5a'))]['Error'](_0x70d0('0x5b'));}return _0x440bfb[_0x70d0('0x4a')](_0x3a83f6,util[_0x70d0('0x5c')](_0x70d0('0x4f'),path[_0x70d0('0x50')](_0x558bb1[_0x70d0('0x8')])),function(_0x3ecbb4){if(_0x3ecbb4){throw new db[(_0x70d0('0x5a'))][(_0x70d0('0x55'))](_0x70d0('0x5d'));}fs[_0x70d0('0x5e')](_0x3a83f6);logger['info'](_0x70d0('0x5f'));logger[_0x70d0('0x60')]('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x440bfb,null));};exports['upload']=function(_0x1913d5,_0x1e130f,_0x1de3c7){var _0x222708=path[_0x70d0('0x50')](_0x1913d5[_0x70d0('0x61')][_0x70d0('0x62')],path['extname'](_0x1913d5[_0x70d0('0x61')][_0x70d0('0x62')]));var _0x416c59=path[_0x70d0('0x4c')](config[_0x70d0('0x4d')],_0x70d0('0x4e'),_0x1913d5[_0x70d0('0x61')][_0x70d0('0x62')]);var _0x27f9f9=path[_0x70d0('0x4c')](config[_0x70d0('0x4d')],_0x70d0('0x4e'),_0x222708);logger[_0x70d0('0x60')](_0x70d0('0x63'),_0x416c59);logger[_0x70d0('0x60')](_0x70d0('0x64'),_0x27f9f9);try{fs[_0x70d0('0x65')](_0x416c59,parseInt(_0x70d0('0x66'),0x8));extract(_0x416c59,{'dir':_0x27f9f9},function(_0x42b0cb){if(_0x42b0cb){logger['error'](_0x42b0cb);handleError(_0x42b0cb,!![]);};var _0x1e771b=fs[_0x70d0('0x67')](_0x27f9f9);if(_0x1e771b[_0x70d0('0x3b')]>0x1){removeReferences(_0x416c59,_0x27f9f9);logger[_0x70d0('0x2c')]('Invalid\x20plugin\x20structure');return _0x1de3c7(new Error('Invalid\x20plugin\x20structure'));}var _0x1d1b75=fs[_0x70d0('0x68')](path['join'](_0x27f9f9,_0x1e771b[0x0]));if(_0x1d1b75[_0x70d0('0x69')]()){removeReferences(_0x416c59,_0x27f9f9);logger[_0x70d0('0x2c')](_0x70d0('0x6a'));return _0x1de3c7(new Error(_0x70d0('0x6a')));}if(_0x1d1b75[_0x70d0('0x6b')]()){var _0x4c9d00=fs['readdirSync'](path[_0x70d0('0x4c')](_0x27f9f9,_0x1e771b[0x0]));if(_0x4c9d00[_0x70d0('0x3b')]===0x0){removeReferences(_0x416c59,_0x27f9f9);logger[_0x70d0('0x2c')]('Invalid\x20plugin\x20structure');return _0x1de3c7(new Error(_0x70d0('0x6a')));}var _0x3c296a=_0x4c9d00[_0x70d0('0x6c')](function(_0x23302e){return _0x23302e==='manifest.json';});if(!_0x3c296a){return _0x1de3c7(new Error(_0x70d0('0x6d')));}var _0x4e4758=fs[_0x70d0('0x6e')](path['join'](_0x27f9f9,_0x1e771b[0x0],_0x70d0('0x6f')));var _0x5ec13b=JSON[_0x70d0('0x70')](_0x4e4758);if(_0x70d0('0x1f')==typeof _0x5ec13b['name']){return _0x1de3c7(new Error(_0x70d0('0x71')));}if(_0x70d0('0x1f')==typeof _0x5ec13b['type']){return _0x1de3c7(new Error(_0x70d0('0x72')));}if(_0x70d0('0x1f')==typeof _0x5ec13b['version']){return _0x1de3c7(new Error(_0x70d0('0x73')));}if(_0x70d0('0x1f')==typeof _0x5ec13b['parameters']){return _0x1de3c7(new Error(_0x70d0('0x74')));}if(_0x5ec13b[_0x70d0('0x34')]==='html'){if(_0x70d0('0x1f')==typeof _0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')]){return _0x1de3c7(new Error(_0x70d0('0x77')));}if(_0x70d0('0x1f')==typeof _0x5ec13b[_0x70d0('0x75')]['views'][_0x70d0('0x78')]&&_0x70d0('0x1f')==typeof _0x5ec13b[_0x70d0('0x75')]['views'][_0x70d0('0x79')]){return _0x1de3c7(new Error(_0x70d0('0x7a')));}}else if(_0x5ec13b[_0x70d0('0x34')]===_0x70d0('0x7b')){if(_0x70d0('0x1f')==typeof _0x5ec13b[_0x70d0('0x75')]['scriptName']){return _0x1de3c7(new Error(_0x70d0('0x7c')));}if(_0x70d0('0x1f')==typeof _0x5ec13b[_0x70d0('0x75')][_0x70d0('0x7d')]){return _0x1de3c7(new Error(_0x70d0('0x7e')));}}else{return _0x1de3c7(new Error(_0x70d0('0x7f')));}var _0x4bbb8f=_0x5ec13b[_0x70d0('0x2e')];var _0x219eaf=_0x5ec13b['description'];var _0x747b9f=_0x5ec13b['type'];var _0x492dc1=_0x5ec13b[_0x70d0('0x80')]?_0x5ec13b[_0x70d0('0x80')]:_0x70d0('0x81');var _0x35cd86=_0x5ec13b[_0x70d0('0x82')]?_0x5ec13b['icon']:'icon-apps';var _0x45fe68='';var _0x445ebc='';var _0x31af1c='';var _0x4a41cb='';var _0x5b9273=_0x5ec13b['version'];if(_0x747b9f===_0x70d0('0x83')){if(_0x70d0('0x1f')!=typeof _0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')][_0x70d0('0x78')]){var _0x43ced8=_0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')][_0x70d0('0x78')];if(!/^(f|ht)tps?:\/\//i['test'](_0x43ced8)){_0x45fe68=path[_0x70d0('0x4c')](_0x70d0('0x84'),_0x222708,_0x1e771b[0x0],_0x43ced8);}else{_0x45fe68=_0x43ced8;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x70d0('0x1f')!=typeof _0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')][_0x70d0('0x79')]){var _0x26eb97=_0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x70d0('0x85')](_0x26eb97)){_0x445ebc=path[_0x70d0('0x4c')](_0x70d0('0x84'),_0x222708,_0x1e771b[0x0],_0x26eb97);}else{_0x445ebc=_0x26eb97;}}else{logger[_0x70d0('0x60')](_0x70d0('0x86'));}}else if(_0x747b9f===_0x70d0('0x7b')){_0x31af1c=_0x5ec13b[_0x70d0('0x75')][_0x70d0('0x87')];_0x4a41cb=_0x5ec13b[_0x70d0('0x75')][_0x70d0('0x7d')];if(_0x70d0('0x1f')!=typeof _0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')]){if(_0x70d0('0x1f')!=typeof _0x5ec13b['parameters'][_0x70d0('0x76')][_0x70d0('0x78')]){var _0x43ced8=_0x5ec13b['parameters']['views']['admin'];if(!/^(f|ht)tps?:\/\//i[_0x70d0('0x85')](_0x43ced8)){_0x45fe68=path[_0x70d0('0x4c')](_0x70d0('0x84'),_0x222708,_0x1e771b[0x0],_0x43ced8);}else{_0x45fe68=_0x43ced8;}}if(_0x70d0('0x1f')!=typeof _0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')][_0x70d0('0x79')]){var _0x26eb97=_0x5ec13b[_0x70d0('0x75')][_0x70d0('0x76')][_0x70d0('0x79')];if(!/^(f|ht)tps?:\/\//i['test'](_0x26eb97)){_0x445ebc=path[_0x70d0('0x4c')](_0x70d0('0x84'),_0x222708,_0x1e771b[0x0],_0x26eb97);}else{_0x445ebc=_0x26eb97;}}}}var _0x13cbe8={'name':_0x4bbb8f,'description':_0x219eaf,'path':path[_0x70d0('0x4c')](_0x222708,_0x1e771b[0x0]),'type':_0x747b9f,'sidebar':_0x492dc1,'icon':_0x35cd86,'adminUrl':_0x45fe68,'agentUrl':_0x445ebc,'scriptName':_0x31af1c,'scriptPath':_0x4a41cb,'version':_0x5b9273};removeReferences(_0x416c59,null);return db[_0x70d0('0x31')][_0x70d0('0x88')](_0x13cbe8)['then'](function(_0x4edab6){var _0x50bc9d={'role':_0x1913d5[_0x70d0('0x89')][_0x70d0('0x8a')],'userProfileId':_0x1913d5[_0x70d0('0x89')][_0x70d0('0x8b')]};if(!_0x50bc9d)throw new Error(_0x70d0('0x8c'));if(_0x50bc9d['role']===_0x70d0('0x8d')){var _0x390810=_0x4edab6[_0x70d0('0x27')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x70d0('0x28'),'userProfileId':_0x50bc9d[_0x70d0('0x8b')]},'raw':!![]})[_0x70d0('0x2a')](function(_0x33798e){if(_0x33798e&&_0x33798e[_0x70d0('0x8e')]===0x0){return db['UserProfileResource'][_0x70d0('0x88')]({'name':_0x390810[_0x70d0('0x2e')],'resourceId':_0x390810['id'],'type':_0x33798e[_0x70d0('0x2e')],'sectionId':_0x33798e['id']},{})['then'](function(){return _0x4edab6;});}else{return _0x4edab6;}})[_0x70d0('0x49')](function(_0x1851df){logger[_0x70d0('0x2c')](_0x70d0('0x8f'),_0x1851df);throw _0x1851df;});}return _0x4edab6;})['then'](respondWithResult(_0x1e130f,null))[_0x70d0('0x49')](handleError(_0x1e130f,null));}});}catch(_0x4a07f5){_0x1e130f[_0x70d0('0x22')](0x1f4)[_0x70d0('0x90')](_0x4a07f5);}};function removeReferences(_0x47a6e9,_0x278c27){try{if(_0x47a6e9){fs['unlinkSync'](_0x47a6e9);logger[_0x70d0('0x60')](_0x70d0('0x91'));}if(_0x278c27){rimraf(_0x278c27,function(){});logger[_0x70d0('0x60')](_0x70d0('0x92'));}}catch(_0x3e963f){logger['error'](_0x3e963f);}}exports[_0x70d0('0x93')]=function(_0x1a1352,_0x4ccf9d,_0x51f8f8){return db['Plugin'][_0x70d0('0x48')]({'where':{'id':_0x1a1352['params']['id']}})[_0x70d0('0x2a')](handleEntityNotFound(_0x4ccf9d,null))['then'](saveUpdates(_0x1a1352[_0x70d0('0x89')],null))['then'](respondWithResult(_0x4ccf9d,null))[_0x70d0('0x49')](handleError(_0x4ccf9d,null));};exports[_0x70d0('0x94')]=function(_0x453e34,_0x4ac25d,_0x2c5906){return db[_0x70d0('0x31')][_0x70d0('0x48')]({'where':{'id':_0x453e34[_0x70d0('0x4b')]['id']}})[_0x70d0('0x2a')](function(_0xe4acf1){if(_0xe4acf1){return _0xe4acf1['destroy']();}})[_0x70d0('0x2a')](function(_0x20e528){rimraf(path[_0x70d0('0x4c')](config[_0x70d0('0x4d')],_0x70d0('0x4e'),path[_0x70d0('0x58')](_0x20e528['path'])),function(){});return _0x20e528;})[_0x70d0('0x2a')](handleEntityNotFound(_0x4ac25d,null))['then'](respondWithStatusCode(_0x4ac25d,null))['catch'](handleError(_0x4ac25d,null));};exports[_0x70d0('0x95')]=function(_0x2e19df,_0x1c1de2,_0x2c359a){return BPromise['resolve']()[_0x70d0('0x2a')](function(){if(!_0x2e19df[_0x70d0('0x36')]['path']){throw new Error(_0x70d0('0x96'));}if(!_0x2e19df[_0x70d0('0x36')][_0x70d0('0x97')]){throw new Error(_0x70d0('0x98'));}var _0x53ba88=_0x2e19df['query'][_0x70d0('0x99')]?_0x2e19df['query'][_0x70d0('0x99')]+':'+_0x2e19df[_0x70d0('0x36')][_0x70d0('0x97')]:'http://localhost:'+_0x2e19df[_0x70d0('0x36')]['port'];var _0x3fccbd=_0x2e19df[_0x70d0('0x36')][_0x70d0('0x1d')]?_0x2e19df[_0x70d0('0x36')][_0x70d0('0x1d')]:!![];var _0x198bf7=_0x2e19df['query'][_0x70d0('0x9a')]?_0x2e19df[_0x70d0('0x36')][_0x70d0('0x9a')]:null;var _0x33fad3={'method':_0x2e19df[_0x70d0('0x9b')],'uri':util['format'](_0x70d0('0x9c'),_0x53ba88,_0x2e19df[_0x70d0('0x36')]['path']),'json':_0x3fccbd,'resolveWithFullResponse':!![],'encoding':_0x198bf7,'qs':_0x2e19df[_0x70d0('0x36')]};if(_0x2e19df[_0x70d0('0x9d')]){_0x33fad3[_0x70d0('0x9d')]=_0x2e19df[_0x70d0('0x9d')];if(_0x33fad3['headers']['content-length']){delete _0x33fad3[_0x70d0('0x9d')][_0x70d0('0x9e')];}}if(_0x33fad3[_0x70d0('0x9d')]['content-type']){delete _0x33fad3[_0x70d0('0x9d')]['content-type'];}return rp(_0x33fad3);})['then'](function(_0x5bd283){if(_0x5bd283){_0x1c1de2[_0x70d0('0x23')](_0x5bd283['headers']);logger[_0x70d0('0x60')](_0x5bd283[_0x70d0('0x89')]);if(_[_0x70d0('0x9f')](_0x2e19df[_0x70d0('0x36')][_0x70d0('0x8')],_0x70d0('0x4a'))&&_0x5bd283[_0x70d0('0xa0')]==0x1f4){return _0x1c1de2[_0x70d0('0x1c')](_0x5bd283[_0x70d0('0xa0')]);}else{return _0x1c1de2[_0x70d0('0x22')](_0x5bd283['statusCode'])[_0x70d0('0x90')](_0x5bd283[_0x70d0('0x89')]);}}else{return _0x1c1de2[_0x70d0('0x1c')](0xc8);}})[_0x70d0('0x49')](handleError(_0x1c1de2,null));};exports[_0x70d0('0xa1')]=function(_0x467b7b,_0x5dd22e,_0x2948f3){return BPromise['resolve']()[_0x70d0('0x2a')](function(){if(!_0x467b7b[_0x70d0('0x36')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x467b7b[_0x70d0('0x36')][_0x70d0('0x97')]){throw new Error(_0x70d0('0x98'));}var _0x386733=_0x467b7b[_0x70d0('0x36')][_0x70d0('0x99')]?_0x467b7b[_0x70d0('0x36')][_0x70d0('0x99')]+':'+_0x467b7b[_0x70d0('0x36')][_0x70d0('0x97')]:_0x70d0('0xa2')+_0x467b7b[_0x70d0('0x36')][_0x70d0('0x97')];var _0x4b0ed3=_0x467b7b[_0x70d0('0x36')][_0x70d0('0x1d')]?_0x467b7b[_0x70d0('0x36')][_0x70d0('0x1d')]:!![];var _0x2d6220=_0x467b7b[_0x70d0('0x36')][_0x70d0('0x9a')]?_0x467b7b[_0x70d0('0x36')][_0x70d0('0x9a')]:null;var _0x317220={'method':_0x467b7b[_0x70d0('0x9b')],'uri':util[_0x70d0('0x5c')](_0x70d0('0x9c'),_0x386733,_0x467b7b[_0x70d0('0x36')][_0x70d0('0x8')]),'json':_0x4b0ed3,'resolveWithFullResponse':!![],'encoding':_0x2d6220,'body':_0x467b7b[_0x70d0('0x89')]};if(_0x467b7b[_0x70d0('0x9d')]){_0x317220['headers']=_0x467b7b[_0x70d0('0x9d')];if(_0x317220[_0x70d0('0x9d')]['content-length']){delete _0x317220[_0x70d0('0x9d')][_0x70d0('0x9e')];}}if(_0x317220[_0x70d0('0x9d')][_0x70d0('0xa3')]){delete _0x317220[_0x70d0('0x9d')][_0x70d0('0xa3')];}return rp(_0x317220);})['then'](function(_0x413908){if(_0x413908){_0x5dd22e[_0x70d0('0x23')](_0x413908[_0x70d0('0x9d')]);logger[_0x70d0('0x60')](_0x413908['body']);return _0x5dd22e[_0x70d0('0x22')](_0x413908[_0x70d0('0xa0')])[_0x70d0('0x90')](_0x413908[_0x70d0('0x89')]);}else{return _0x5dd22e[_0x70d0('0x1c')](0xc8);}})[_0x70d0('0x49')](handleError(_0x5dd22e,null));}; \ No newline at end of file diff --git a/server/api/plugin/plugin.events.js b/server/api/plugin/plugin.events.js new file mode 100644 index 0000000..871fb3e --- /dev/null +++ b/server/api/plugin/plugin.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9f02=['save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x43c920,_0x187315){var _0x16e4c0=function(_0xa1ae11){while(--_0xa1ae11){_0x43c920['push'](_0x43c920['shift']());}};_0x16e4c0(++_0x187315);}(_0x9f02,0x68));var _0x29f0=function(_0x2c77d1,_0x172e20){_0x2c77d1=_0x2c77d1-0x0;var _0x1cac3f=_0x9f02[_0x2c77d1];return _0x1cac3f;};'use strict';var EventEmitter=require(_0x29f0('0x0'));var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x29f0('0x1'),'afterUpdate':_0x29f0('0x2'),'afterDestroy':_0x29f0('0x3')};function emitEvent(_0x24792b){return function(_0x1a49c1,_0x47e569,_0x204fc4){PluginEvents['emit'](_0x24792b+':'+_0x1a49c1['id'],_0x1a49c1);PluginEvents[_0x29f0('0x4')](_0x24792b,_0x1a49c1);_0x204fc4(null);};}for(var e in events){if(events[_0x29f0('0x5')](e)){var event=events[e];Plugin[_0x29f0('0x6')](e,emitEvent(event));}}module['exports']=PluginEvents; \ No newline at end of file diff --git a/server/api/plugin/plugin.model.js b/server/api/plugin/plugin.model.js new file mode 100644 index 0000000..1dd0741 --- /dev/null +++ b/server/api/plugin/plugin.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc0bc=['Plugin','plugins','util','../../config/logger','api','moment','request-promise','path','rimraf','./plugin.attributes','exports','define'];(function(_0x57d13b,_0x52d8cb){var _0x467696=function(_0x153000){while(--_0x153000){_0x57d13b['push'](_0x57d13b['shift']());}};_0x467696(++_0x52d8cb);}(_0xc0bc,0x176));var _0xcc0b=function(_0xfe34bc,_0x191504){_0xfe34bc=_0xfe34bc-0x0;var _0x3a085c=_0xc0bc[_0xfe34bc];return _0x3a085c;};'use strict';var _=require('lodash');var util=require(_0xcc0b('0x0'));var logger=require(_0xcc0b('0x1'))(_0xcc0b('0x2'));var moment=require(_0xcc0b('0x3'));var BPromise=require('bluebird');var rp=require(_0xcc0b('0x4'));var fs=require('fs');var path=require(_0xcc0b('0x5'));var rimraf=require(_0xcc0b('0x6'));var config=require('../../config/environment');var attributes=require(_0xcc0b('0x7'));module[_0xcc0b('0x8')]=function(_0x526a0d,_0x5b427c){return _0x526a0d[_0xcc0b('0x9')](_0xcc0b('0xa'),attributes,{'tableName':_0xcc0b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/plugin/plugin.rpc.js b/server/api/plugin/plugin.rpc.js new file mode 100644 index 0000000..60522a2 --- /dev/null +++ b/server/api/plugin/plugin.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5000=['create','body','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','error','message','result','CreatePlugin','Plugin'];(function(_0x1d3ece,_0x3fb359){var _0x1ba5d2=function(_0xaa2729){while(--_0xaa2729){_0x1d3ece['push'](_0x1d3ece['shift']());}};_0x1ba5d2(++_0x3fb359);}(_0x5000,0x1c5));var _0x0500=function(_0x522736,_0x30aadc){_0x522736=_0x522736-0x0;var _0x4b4aae=_0x5000[_0x522736];return _0x4b4aae;};'use strict';var _=require(_0x0500('0x0'));var util=require(_0x0500('0x1'));var moment=require('moment');var BPromise=require(_0x0500('0x2'));var rs=require(_0x0500('0x3'));var fs=require('fs');var Redis=require(_0x0500('0x4'));var db=require(_0x0500('0x5'))['db'];var utils=require(_0x0500('0x6'));var logger=require(_0x0500('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0500('0x8'));var client=jayson['client'][_0x0500('0x9')]({'port':0x232a});config[_0x0500('0xa')]=_[_0x0500('0xb')](config[_0x0500('0xa')],{'host':_0x0500('0xc'),'port':0x18eb});var socket=require(_0x0500('0xd'))(new Redis(config[_0x0500('0xa')]));require(_0x0500('0xe'))[_0x0500('0xf')](socket);function respondWithRpcPromise(_0x3757de,_0xfe456e,_0x344135){return new BPromise(function(_0x31970b,_0x3c76aa){return client['request'](_0x3757de,_0x344135)[_0x0500('0x10')](function(_0x2510c5){logger[_0x0500('0x11')](_0x0500('0x12'),_0xfe456e,_0x0500('0x13'));logger[_0x0500('0x14')](_0x0500('0x15'),_0xfe456e,_0x0500('0x13'),JSON['stringify'](_0x2510c5));if(_0x2510c5[_0x0500('0x16')]){if(_0x2510c5[_0x0500('0x16')]['code']===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0xfe456e,_0x2510c5[_0x0500('0x16')][_0x0500('0x17')]);return _0x3c76aa(_0x2510c5[_0x0500('0x16')][_0x0500('0x17')]);}logger['error'](_0x0500('0x12'),_0xfe456e,_0x2510c5['error']['message']);return _0x31970b(_0x2510c5['error'][_0x0500('0x17')]);}else{logger[_0x0500('0x11')]('Plugin,\x20%s,\x20%s',_0xfe456e,_0x0500('0x13'));_0x31970b(_0x2510c5[_0x0500('0x18')][_0x0500('0x17')]);}})['catch'](function(_0x557a93){logger['error']('Plugin,\x20%s,\x20%s',_0xfe456e,_0x557a93);_0x3c76aa(_0x557a93);});});}exports[_0x0500('0x19')]=function(_0x2da331){var _0x404583=this;return new Promise(function(_0x431b6e,_0x2ccb2d){return db[_0x0500('0x1a')][_0x0500('0x1b')](_0x2da331[_0x0500('0x1c')],{'raw':_0x2da331['options']?_0x2da331['options']['raw']===undefined?!![]:![]:!![]})[_0x0500('0x10')](function(_0x5c4c9b){logger[_0x0500('0x11')](_0x0500('0x19'),_0x2da331);logger['debug'](_0x0500('0x19'),_0x2da331,JSON[_0x0500('0x1d')](_0x5c4c9b));_0x431b6e(_0x5c4c9b);})['catch'](function(_0x56f033){logger['error'](_0x0500('0x19'),_0x56f033[_0x0500('0x17')],_0x2da331);_0x2ccb2d(_0x404583[_0x0500('0x16')](0x1f4,_0x56f033['message']));});});}; \ No newline at end of file diff --git a/server/api/plugin/plugin.socket.js b/server/api/plugin/plugin.socket.js new file mode 100644 index 0000000..3b18591 --- /dev/null +++ b/server/api/plugin/plugin.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8c93=['save','remove','update','removeListener','register','length','plugin:'];(function(_0x2a4885,_0x528f86){var _0x41a605=function(_0x2f756e){while(--_0x2f756e){_0x2a4885['push'](_0x2a4885['shift']());}};_0x41a605(++_0x528f86);}(_0x8c93,0xcb));var _0x38c9=function(_0x2d4d7e,_0x191aac){_0x2d4d7e=_0x2d4d7e-0x0;var _0x39c54c=_0x8c93[_0x2d4d7e];return _0x39c54c;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x38c9('0x0'),_0x38c9('0x1'),_0x38c9('0x2')];function createListener(_0x2f80f5,_0x18b2d2){return function(_0x20327f){_0x18b2d2['emit'](_0x2f80f5,_0x20327f);};}function removeListener(_0x3dad93,_0x370c11){return function(){PluginEvents[_0x38c9('0x3')](_0x3dad93,_0x370c11);};}exports[_0x38c9('0x4')]=function(_0x1e9fab){for(var _0x1f1094=0x0,_0x100272=events[_0x38c9('0x5')];_0x1f1094<_0x100272;_0x1f1094++){var _0x5829f0=events[_0x1f1094];var _0x2ef2bc=createListener(_0x38c9('0x6')+_0x5829f0,_0x1e9fab);PluginEvents['on'](_0x5829f0,_0x2ef2bc);}}; \ No newline at end of file diff --git a/server/api/pm2/index.js b/server/api/pm2/index.js new file mode 100644 index 0000000..7c1ab62 --- /dev/null +++ b/server/api/pm2/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x4186e4,_0x4db806){var _0x544e7a=function(_0x4a7e84){while(--_0x4a7e84){_0x4186e4['push'](_0x4186e4['shift']());}};_0x544e7a(++_0x4db806);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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 diff --git a/server/api/pm2/pm2.controller.js b/server/api/pm2/pm2.controller.js new file mode 100644 index 0000000..5662d67 --- /dev/null +++ b/server/api/pm2/pm2.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb469=['motion2','show','create','body','join','../../files/plugins','chdir','dirname','start','dump','catch','status','update','restart','hasOwnProperty','params','Unknown\x20status','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','sendStatus','error','stack','name','send','info','index','list','then','reject','express'];(function(_0x48aaac,_0x34c645){var _0xd9947a=function(_0x1a039a){while(--_0x1a039a){_0x48aaac['push'](_0x48aaac['shift']());}};_0xd9947a(++_0x34c645);}(_0xb469,0x13b));var _0x9b46=function(_0x32c10f,_0x10a371){_0x32c10f=_0x32c10f-0x0;var _0x46c409=_0xb469[_0x32c10f];return _0x46c409;};'use strict';var _=require(_0x9b46('0x0'));var pm2=require(_0x9b46('0x1'));var logger=require(_0x9b46('0x2'))(_0x9b46('0x3'));var path=require(_0x9b46('0x4'));var exec=require(_0x9b46('0x5'))[_0x9b46('0x6')];var BPromise=require('bluebird');function handleEntityNotFound(_0x31f853,_0x45322f){return function(_0x538fc4){if(!_0x538fc4){_0x31f853[_0x9b46('0x7')](0x194);;}return _0x538fc4;};}function respondWithResult(_0x405d1c,_0x50b49e){_0x50b49e=_0x50b49e||0xc8;return function(_0x1b2dd3){if(_0x1b2dd3){return _0x405d1c['status'](_0x50b49e)['json'](_0x1b2dd3);}return null;};}function handleError(_0x34c0de,_0x545b6c){_0x545b6c=_0x545b6c||0x1f4;return function(_0x402595){logger[_0x9b46('0x8')](_0x402595[_0x9b46('0x9')]);if(_0x402595['name']){delete _0x402595[_0x9b46('0xa')];}_0x34c0de['status'](_0x545b6c)[_0x9b46('0xb')](_0x402595);};}function execChildProcess(){return new BPromise(function(_0x568d9a,_0x2c29a7){exec('npm\x20install',function(_0x672157,_0x233b6b,_0x563de4){logger[_0x9b46('0xc')](_0x233b6b);logger[_0x9b46('0xc')](_0x563de4);if(_0x672157){logger['error'](_0x672157);return _0x2c29a7(_0x672157);}return _0x568d9a(_0x233b6b);});});}exports[_0x9b46('0xd')]=function(_0x2cfb35,_0x3d9618){return pm2[_0x9b46('0xe')]()[_0x9b46('0xf')](function(_0x35c5c1){if(_0x35c5c1){var _0x2136bc=_[_0x9b46('0x10')](_0x35c5c1,function(_0x3f2b28){return _0x3f2b28[_0x9b46('0xa')]===_0x9b46('0x11')||_0x3f2b28[_0x9b46('0xa')]===_0x9b46('0x12');});return{'rows':_0x2136bc,'count':_0x2136bc['length']};}return null;})['then'](respondWithResult(_0x3d9618,null))['catch'](handleError(_0x3d9618,null));};exports[_0x9b46('0x13')]=function(_0x5a380c,_0x29fec9){return pm2['describe'](_0x5a380c['params']['id'])[_0x9b46('0xf')](respondWithResult(_0x29fec9,null))['then'](handleEntityNotFound(_0x29fec9,null))['catch'](handleError(_0x29fec9,null));};exports[_0x9b46('0x14')]=function(_0x3a15cc,_0x5a0d25){if(_0x3a15cc[_0x9b46('0x15')][_0x9b46('0xa')]&&_0x3a15cc['body']['script']){var _0xbec2ea=path[_0x9b46('0x16')](__dirname,_0x9b46('0x17'),_0x3a15cc['body']['script']);var _0x2b3440=process['cwd']();process[_0x9b46('0x18')](path[_0x9b46('0x19')](_0xbec2ea));return execChildProcess()['then'](function(_0xadff19){process['chdir'](_0x2b3440);return pm2[_0x9b46('0x1a')]({'name':_0x3a15cc[_0x9b46('0x15')]['name'],'script':_0xbec2ea});})[_0x9b46('0xf')](function(_0x31ca63){pm2[_0x9b46('0x1b')]();return _0x31ca63[0x0];})[_0x9b46('0xf')](respondWithResult(_0x5a0d25,0xc9))[_0x9b46('0x1c')](handleError(_0x5a0d25,null));}else{return _0x5a0d25[_0x9b46('0x1d')](0x1f4)[_0x9b46('0xb')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x9b46('0x1e')]=function(_0x3ac37e,_0x478105){if(_0x3ac37e[_0x9b46('0x15')]['id']){delete _0x3ac37e[_0x9b46('0x15')]['id'];}var _0x2a79a5={'online':_0x9b46('0x1f'),'stopped':'stop'};if(_0x2a79a5[_0x9b46('0x20')](_0x3ac37e[_0x9b46('0x15')][_0x9b46('0x1d')])){return pm2[_0x2a79a5[_0x3ac37e[_0x9b46('0x15')][_0x9b46('0x1d')]]](_0x3ac37e[_0x9b46('0x21')]['id'])[_0x9b46('0xf')](respondWithResult(_0x478105,0xc8))[_0x9b46('0x1c')](handleError(_0x478105,null));}else{return _0x478105[_0x9b46('0x1d')](0x1f4)[_0x9b46('0xb')]({'message':_0x9b46('0x22')});}};exports['destroy']=function(_0x1f722d,_0x27f326){if(_0x1f722d[_0x9b46('0x15')]['id']){delete _0x1f722d[_0x9b46('0x15')]['id'];}if(_0x1f722d[_0x9b46('0x21')]['id']){return pm2[_0x9b46('0x23')](_0x1f722d[_0x9b46('0x21')]['id'])[_0x9b46('0xf')](function(_0x3ab49a){pm2[_0x9b46('0x1b')]();return _0x3ab49a[0x0];})[_0x9b46('0xf')](respondWithResult(_0x27f326,null))['catch'](handleError(_0x27f326,null));}else{return _0x27f326[_0x9b46('0x1d')](0x1f4)['send']({'message':_0x9b46('0x24')});}}; \ No newline at end of file diff --git a/server/api/realtime/index.js b/server/api/realtime/index.js new file mode 100644 index 0000000..05ad090 --- /dev/null +++ b/server/api/realtime/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3dd2=['getAgents','/queues','exports','../../components/auth/service','./realtime.controller','/agents','isAuthenticated'];(function(_0xfbe361,_0x5573e2){var _0x4fcb56=function(_0x65dcd5){while(--_0x65dcd5){_0xfbe361['push'](_0xfbe361['shift']());}};_0x4fcb56(++_0x5573e2);}(_0x3dd2,0xab));var _0x23dd=function(_0x27cf2e,_0x2e99ee){_0x27cf2e=_0x27cf2e-0x0;var _0x4e8da7=_0x3dd2[_0x27cf2e];return _0x4e8da7;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x23dd('0x0'));var controller=require(_0x23dd('0x1'));router['get'](_0x23dd('0x2'),auth[_0x23dd('0x3')](),controller[_0x23dd('0x4')]);router['get'](_0x23dd('0x5'),auth[_0x23dd('0x3')](),controller['getQueues']);module[_0x23dd('0x6')]=router; \ No newline at end of file diff --git a/server/api/realtime/realtime.controller.js b/server/api/realtime/realtime.controller.js new file mode 100644 index 0000000..ed6668b --- /dev/null +++ b/server/api/realtime/realtime.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0024=['then','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','validateSortParameter','getUpdatedSortOptions','fields','getAgentIdsByQueues','getRealtimeAgents','getSortedAgentsIdsByStatus','getAgentIdsByStatus','map','User','rawAttributes','type','agent','online','raw','length','sequelize','literal','FIELD(id,','order','push','Pause','forEach','where','user','role','userProfileId','Agents','extraQueryConditions','assign','UserProfile','findAndCountAll','rows','find','filterAgentAttributes','merge','globalStatus','getAgentStatus','pause','Status','sortAgentsByStatus','split','catch','getQueues','startCase','Queue','fieldName','name','voice','outbound','join','getOptions','QueueCampaigns','Queues','filter','initializeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','undefined','limit','offset','count','status','set','Content-Range','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','*pause','resolve'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x0024,0x13a));var _0x4002=function(_0x178619,_0x8acdca){_0x178619=_0x178619-0x0;var _0x5d16a0=_0x0024[_0x178619];return _0x5d16a0;};'use strict';var _=require(_0x4002('0x0'));var util=require(_0x4002('0x1'));var rta=require(_0x4002('0x2'));var rtq=require(_0x4002('0x3'));var qs=require(_0x4002('0x4'));var utils=require(_0x4002('0x5'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x4002('0x6'))[_0x4002('0x7')];var APIHandleError=require(_0x4002('0x6'))['handleError'];function respondWithFilteredResult(_0x17ef4c,_0x4c8855){return function(_0xfc8817){if(_0xfc8817){var _0x46fe98=typeof _0x4c8855['offset']===_0x4002('0x8')&&typeof _0x4c8855[_0x4002('0x9')]===_0x4002('0x8');var _0xe1c2b1=_0xfc8817['count'];var _0x3b6165=_0x46fe98?0x0:_0x4c8855[_0x4002('0xa')];var _0x966e72=_0x46fe98?_0xfc8817[_0x4002('0xb')]:_0x4c8855[_0x4002('0xa')]+_0x4c8855[_0x4002('0x9')];var _0x7e65f5;if(_0x966e72>=_0xe1c2b1){_0x966e72=_0xe1c2b1;_0x7e65f5=0xc8;}else{_0x7e65f5=0xce;}_0x17ef4c[_0x4002('0xc')](_0x7e65f5);return _0x17ef4c[_0x4002('0xd')](_0x4002('0xe'),_0x3b6165+'-'+_0x966e72+'/'+_0xe1c2b1)['json'](_0xfc8817);}return null;};}exports['getAgents']=function(_0x1429ae,_0xe2c82){var _0x391dff={'count':0x0,'rows':[]};var _0x3f4426={};var _0x3dafa7;var _0x592d33=utils[_0x4002('0xf')]();var _0xeb3e16;var _0x147a68;var _0x4c2a4f=_0x1429ae[_0x4002('0x10')][_0x4002('0x11')];var _0x3dd5e0=_0x1429ae['query'][_0x4002('0x12')];var _0x431d53=_0x1429ae[_0x4002('0x10')][_0x4002('0x13')];var _0x560357=_0x3dd5e0==='pause'||_0x3dd5e0===_0x4002('0x14')?!![]:![];var _0x39f259=[];var _0xccfbcc;var _0x41501f;Promise[_0x4002('0x15')]()[_0x4002('0x16')](function(){if(_0x1429ae[_0x4002('0x10')]['channel']){if(!utils['isValidChannel'](_0x1429ae[_0x4002('0x10')][_0x4002('0x17')])){throw new APIBadRequestError(util[_0x4002('0x18')](_0x4002('0x19'),_0x1429ae[_0x4002('0x10')][_0x4002('0x17')]));}_0x3dafa7=_0x1429ae['query'][_0x4002('0x17')][_0x4002('0x1a')]();}if(!_0x1429ae[_0x4002('0x10')][_0x4002('0x1b')]||!_0x1429ae[_0x4002('0x10')][_0x4002('0x1b')][_0x4002('0x1c')]('globalStatus')){_0x1429ae[_0x4002('0x10')][_0x4002('0x1b')]=rta[_0x4002('0x1d')](_0x1429ae[_0x4002('0x10')][_0x4002('0x1b')]);return;}var _0x2b3ea1=rta[_0x4002('0x1e')](_0x1429ae[_0x4002('0x10')]['sort']);_0x1429ae[_0x4002('0x10')]['sort']=_0x2b3ea1[_0x4002('0x1f')]['join'](',');_0xccfbcc=_0x2b3ea1['order'];})['then'](function(){if(!_0x4c2a4f){return[];}return rta[_0x4002('0x20')](_0x4c2a4f,_0x3dafa7);})[_0x4002('0x16')](function(_0x4aa848){_0x39f259=_0x4aa848;return rta[_0x4002('0x21')]();})['then'](function(_0x3ff082){_0x147a68=_0x3ff082['rows'];if((!_0x3dd5e0||_0x560357)&&!_0xccfbcc){return _0x39f259;}if(_0xccfbcc&&!_0x3dd5e0){return rta[_0x4002('0x22')](_0x147a68,_0x39f259,_0xccfbcc);}else{return rta[_0x4002('0x23')](_0x147a68,_0x39f259,_0x3dd5e0);}})[_0x4002('0x16')](function(_0x236b97){_0x39f259=_0x236b97;var _0x319637=![];if(_0x39f259['length']===0x0){if(_0x4c2a4f||_0x3dd5e0){_0x319637=!![];}if(_0x560357){_0x319637=![];}}if(_0x319637){return _0x391dff;}var _0x43d76c=_[_0x4002('0x24')](db[_0x4002('0x25')][_0x4002('0x26')],function(_0x3adfef){return{'name':_0x3adfef['fieldName'],'type':_0x3adfef[_0x4002('0x27')]['key']};});_0x1429ae['query']['role']=_0x4002('0x28');_0x1429ae[_0x4002('0x10')][_0x4002('0x29')]=!![];_0x3f4426=qs['getOptions'](_0x43d76c,_0x1429ae);_0x3f4426[_0x4002('0x2a')]=!![];var _0x2e3249=[];if(_0x39f259[_0x4002('0x2b')]>0x0){_0x2e3249['push']({'id':{'$in':_0x39f259}});if(_0xccfbcc&&!_0x3dd5e0){_0x41501f=[db[_0x4002('0x2c')][_0x4002('0x2d')](_0x4002('0x2e')+_0x39f259+')')];_0x3f4426[_0x4002('0x2f')]=_0x41501f;}}if(_0x560357){_0x592d33['forEach'](function(_0x5710ae){var _0xc0ade5=!![];if(_0x3dd5e0===_0x4002('0x14')&&_0x3dafa7!==_0x5710ae){_0xc0ade5=![];}_0x2e3249[_0x4002('0x30')]({[_0x5710ae+_0x4002('0x31')]:_0xc0ade5});});if(_0x431d53){_0x2e3249[_0x4002('0x30')]({'pauseType':_0x431d53});}}else if(_0x3dd5e0){_0x592d33[_0x4002('0x32')](function(_0x24a1ea){_0x2e3249[_0x4002('0x30')]({[_0x24a1ea+_0x4002('0x31')]:![]});});}_0x3f4426[_0x4002('0x33')]=_['merge'](_0x3f4426[_0x4002('0x33')],{'$and':_0x2e3249});if(_0x1429ae[_0x4002('0x34')][_0x4002('0x35')]===_0x4002('0x34')){var _0x5d4e2f={'params':{'id':_0x1429ae['user'][_0x4002('0x36')]},'query':{'section':_0x4002('0x37'),'role':'agent','online':!![],'raw':!![],'ids':_0x39f259,'customSorting':_0x41501f}};if(_0x560357){_0x5d4e2f[_0x4002('0x10')][_0x4002('0x38')]=_0x2e3249;}_0x5d4e2f['query']=Object[_0x4002('0x39')](_0x5d4e2f[_0x4002('0x10')],_0x1429ae[_0x4002('0x10')]);delete _0x5d4e2f[_0x4002('0x10')]['id'];return db[_0x4002('0x3a')]['getResources'](_0x5d4e2f);}return db[_0x4002('0x25')][_0x4002('0x3b')](_0x3f4426);})[_0x4002('0x16')](function(_0x50a6d9){_0x391dff[_0x4002('0xb')]=_0x50a6d9[_0x4002('0xb')];_0xeb3e16=_0x50a6d9[_0x4002('0x3c')];return _0xeb3e16[_0x4002('0x24')](function(_0x1266c7){var _0x59b58c=_[_0x4002('0x3d')](_0x147a68,['id',_0x1266c7['id']]);if(_0x59b58c){var _0x2f69b0=rta[_0x4002('0x3e')](_0x59b58c);_[_0x4002('0x3f')](_0x1266c7,_0x2f69b0);}_0x1266c7[_0x4002('0x40')]=rta[_0x4002('0x41')](_0x1266c7);if(_0x1266c7[_0x4002('0x40')][_0x4002('0x1c')](_0x4002('0x42'))){_0x592d33[_0x4002('0x32')](function(_0x7cdfe9){if(_0x1266c7[_0x7cdfe9+'Pause']){_0x1266c7[_0x7cdfe9+_0x4002('0x43')]=_0x4002('0x42');}});}return _0x1266c7;});})[_0x4002('0x16')](function(_0x1224bf){if(!_0xccfbcc||_0x41501f){return _0x1224bf;}return rta[_0x4002('0x44')](_0x1224bf,_0xccfbcc);})[_0x4002('0x16')](function(_0x51cab6){var _0x57e374=null;if(_0x1429ae[_0x4002('0x10')][_0x4002('0x1f')]){var _0x39b623=_0x1429ae[_0x4002('0x10')][_0x4002('0x1f')][_0x4002('0x45')](',');_0x57e374=_0x51cab6['map'](function(_0x1276a2){return _['pick'](_0x1276a2,_0x39b623);});}_0x391dff[_0x4002('0x3c')]=_0x57e374||_0x51cab6;return _0x391dff;})[_0x4002('0x16')](respondWithFilteredResult(_0xe2c82,_0x3f4426))[_0x4002('0x46')](APIHandleError(_0xe2c82));};exports[_0x4002('0x47')]=function(_0x37cf03,_0x597d87){var _0x1da662={'count':0x0,'rows':[]};var _0x21b8e4={};var _0xfa38ae;var _0x19ce66;var _0x471877;Promise['resolve']()[_0x4002('0x16')](function(){if(_0x37cf03[_0x4002('0x10')]['channel']){if(!utils['isValidChannel'](_0x37cf03[_0x4002('0x10')][_0x4002('0x17')])){throw new APIBadRequestError(util[_0x4002('0x18')](_0x4002('0x19'),_0x37cf03['query']['channel']));}_0xfa38ae=_0x37cf03['query'][_0x4002('0x17')][_0x4002('0x1a')]();}var _0xd37436=_[_0x4002('0x48')](_0xfa38ae)+_0x4002('0x49');var _0x3bc0f5=_[_0x4002('0x24')](db[_0xd37436][_0x4002('0x26')],function(_0x43f681){return{'name':_0x43f681[_0x4002('0x4a')],'type':_0x43f681['type']['key']};});if(!_0x37cf03[_0x4002('0x10')]['fields']){var _0x30b14b=['id',_0x4002('0x4b')];if(_0xfa38ae===_0x4002('0x4c')){_0x30b14b[_0x4002('0x30')]('type');if(_0x37cf03[_0x4002('0x10')]['type']===_0x4002('0x4d')){_0x30b14b[_0x4002('0x30')](['dialActive','dialMethod']);}}_0x37cf03[_0x4002('0x10')][_0x4002('0x1f')]=_0x30b14b[_0x4002('0x4e')](',');}_0x21b8e4=qs[_0x4002('0x4f')](_0x3bc0f5,_0x37cf03);if(_0x37cf03[_0x4002('0x34')][_0x4002('0x35')]==='user'){var _0x45613b={'params':{'id':_0x37cf03[_0x4002('0x34')][_0x4002('0x36')]},'query':{'section':_0xfa38ae===_0x4002('0x4c')&&_0x37cf03['query'][_0x4002('0x27')]==='outbound'?_0x4002('0x50'):_[_0x4002('0x48')](_0xfa38ae)+_0x4002('0x51'),'type':_0x37cf03[_0x4002('0x10')]['type'],'nolimit':!![],'sort':_0x4002('0x4b'),'filter':_0x37cf03[_0x4002('0x10')][_0x4002('0x52')]}};return db['UserProfile']['getResources'](_0x45613b);}return db[_0xd37436]['findAndCountAll'](_0x21b8e4);})[_0x4002('0x16')](function(_0x3e546b){_0x1da662['count']=_0x3e546b[_0x4002('0xb')];_0x19ce66=_0x3e546b[_0x4002('0x3c')];return rtq['getRealtimeQueues'](_0x37cf03,_0xfa38ae);})[_0x4002('0x16')](function(_0x52dba1){_0x471877=_0x52dba1['rows'];return rtq[_0x4002('0x53')](_0x19ce66,_0x471877,_0xfa38ae,_0x37cf03[_0x4002('0x10')][_0x4002('0x27')]);})[_0x4002('0x16')](function(_0x35d26b){_0x1da662[_0x4002('0x3c')]=_0x35d26b;return _0x1da662;})[_0x4002('0x16')](respondWithFilteredResult(_0x597d87,_0x21b8e4))['catch'](APIHandleError(_0x597d87));}; \ No newline at end of file diff --git a/server/api/reportAgentPreview/index.js b/server/api/reportAgentPreview/index.js new file mode 100644 index 0000000..723e800 --- /dev/null +++ b/server/api/reportAgentPreview/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x43469e,_0x4e69d6){var _0xcefd2a=function(_0x8ded6f){while(--_0x8ded6f){_0x43469e['push'](_0x43469e['shift']());}};_0xcefd2a(++_0x4e69d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 diff --git a/server/api/reportAgentPreview/reportAgentPreview.attributes.js b/server/api/reportAgentPreview/reportAgentPreview.attributes.js new file mode 100644 index 0000000..b0c0a30 --- /dev/null +++ b/server/api/reportAgentPreview/reportAgentPreview.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5e0c=['INTEGER','STRING','DATE','exports'];(function(_0xc64699,_0x1b3076){var _0x40732e=function(_0x23d369){while(--_0x23d369){_0xc64699['push'](_0xc64699['shift']());}};_0x40732e(++_0x1b3076);}(_0x5e0c,0x19f));var _0xc5e0=function(_0x37d8ef,_0x53fdea){_0x37d8ef=_0x37d8ef-0x0;var _0x520900=_0x5e0c[_0x37d8ef];return _0x520900;};'use strict';var Sequelize=require('sequelize');module[_0xc5e0('0x0')]={'state':{'type':Sequelize[_0xc5e0('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xc5e0('0x2')]},'scheduledat':{'type':Sequelize[_0xc5e0('0x3')]},'uniqueid':{'type':Sequelize[_0xc5e0('0x2')]},'starttime':{'type':Sequelize[_0xc5e0('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xc5e0('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xc5e0('0x2')]},'campaigntype':{'type':Sequelize[_0xc5e0('0x2')]},'membername':{'type':Sequelize[_0xc5e0('0x2')]}}; \ No newline at end of file diff --git a/server/api/reportAgentPreview/reportAgentPreview.model.js b/server/api/reportAgentPreview/reportAgentPreview.model.js new file mode 100644 index 0000000..f4af63b --- /dev/null +++ b/server/api/reportAgentPreview/reportAgentPreview.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8db8=['path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x528eb7,_0x1f0c9a){var _0x3a0370=function(_0x5dea57){while(--_0x5dea57){_0x528eb7['push'](_0x528eb7['shift']());}};_0x3a0370(++_0x1f0c9a);}(_0x8db8,0x145));var _0x88db=function(_0x5c6c50,_0x24be01){_0x5c6c50=_0x5c6c50-0x0;var _0x1a8d2a=_0x8db8[_0x5c6c50];return _0x1a8d2a;};'use strict';var _=require(_0x88db('0x0'));var util=require('util');var logger=require(_0x88db('0x1'))('api');var moment=require(_0x88db('0x2'));var BPromise=require(_0x88db('0x3'));var rp=require(_0x88db('0x4'));var fs=require('fs');var path=require(_0x88db('0x5'));var rimraf=require(_0x88db('0x6'));var config=require(_0x88db('0x7'));var attributes=require(_0x88db('0x8'));module[_0x88db('0x9')]=function(_0x2095b0,_0x56cc64){return _0x2095b0[_0x88db('0xa')]('ReportAgentPreview',attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/reportAgentPreview/reportAgentPreview.rpc.js b/server/api/reportAgentPreview/reportAgentPreview.rpc.js new file mode 100644 index 0000000..c1b7b8d --- /dev/null +++ b/server/api/reportAgentPreview/reportAgentPreview.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa713=['lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','http','request','then','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','ReportAgentPreview,\x20%s,\x20%s','result','catch','CreateReportAgentPreview','body','options','info'];(function(_0x473767,_0x1f69f9){var _0x193a36=function(_0x1851b4){while(--_0x1851b4){_0x473767['push'](_0x473767['shift']());}};_0x193a36(++_0x1f69f9);}(_0xa713,0xe6));var _0x3a71=function(_0x457e81,_0x44c530){_0x457e81=_0x457e81-0x0;var _0x2558e4=_0xa713[_0x457e81];return _0x2558e4;};'use strict';var _=require(_0x3a71('0x0'));var util=require(_0x3a71('0x1'));var moment=require(_0x3a71('0x2'));var BPromise=require('bluebird');var rs=require(_0x3a71('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3a71('0x4'));var logger=require(_0x3a71('0x5'))(_0x3a71('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x3a71('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x49ff93,_0x2029e6,_0x19d306){return new BPromise(function(_0x2d1a94,_0x4733fa){return client[_0x3a71('0x8')](_0x49ff93,_0x19d306)[_0x3a71('0x9')](function(_0x2828d1){logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x2029e6,'request\x20sent');logger[_0x3a71('0xa')](_0x3a71('0xb'),_0x2029e6,_0x3a71('0xc'),JSON[_0x3a71('0xd')](_0x2828d1));if(_0x2828d1['error']){if(_0x2828d1['error']['code']===0x1f4){logger[_0x3a71('0xe')]('ReportAgentPreview,\x20%s,\x20%s',_0x2029e6,_0x2828d1['error'][_0x3a71('0xf')]);return _0x4733fa(_0x2828d1[_0x3a71('0xe')][_0x3a71('0xf')]);}logger[_0x3a71('0xe')](_0x3a71('0x10'),_0x2029e6,_0x2828d1[_0x3a71('0xe')][_0x3a71('0xf')]);return _0x2d1a94(_0x2828d1[_0x3a71('0xe')][_0x3a71('0xf')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x2029e6,_0x3a71('0xc'));_0x2d1a94(_0x2828d1[_0x3a71('0x11')]['message']);}})[_0x3a71('0x12')](function(_0x4bf7b8){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x2029e6,_0x4bf7b8);_0x4733fa(_0x4bf7b8);});});}exports[_0x3a71('0x13')]=function(_0x4b60b8){var _0x2f7f9a=this;return new Promise(function(_0x4d6d10,_0x41b1e2){return db['ReportAgentPreview']['create'](_0x4b60b8[_0x3a71('0x14')],{'raw':_0x4b60b8[_0x3a71('0x15')]?_0x4b60b8[_0x3a71('0x15')]['raw']===undefined?!![]:![]:!![]})[_0x3a71('0x9')](function(_0x141e4a){logger[_0x3a71('0x16')](_0x3a71('0x13'),_0x4b60b8);logger[_0x3a71('0xa')](_0x3a71('0x13'),_0x4b60b8,JSON[_0x3a71('0xd')](_0x141e4a));_0x4d6d10(_0x141e4a);})['catch'](function(_0x1dd509){logger[_0x3a71('0xe')](_0x3a71('0x13'),_0x1dd509[_0x3a71('0xf')],_0x4b60b8);_0x41b1e2(_0x2f7f9a[_0x3a71('0xe')](0x1f4,_0x1dd509[_0x3a71('0xf')]));});});}; \ No newline at end of file diff --git a/server/api/rpc/index.js b/server/api/rpc/index.js new file mode 100644 index 0000000..c2dbafc --- /dev/null +++ b/server/api/rpc/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x33d4=['post','/mail/queues/:id/notify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','queueNotify','fax','/fax/queues/:id','/openchannel/queues/:id/notify','openchannel','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','exports','multer','path','express','Router','../../components/auth/service','./rpc.controller','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','/mail/accounts','mailAccounts','/openchannel/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','updateVoiceQueue','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions'];(function(_0x2d929c,_0x1e231d){var _0x20dac1=function(_0x3ac2c2){while(--_0x3ac2c2){_0x2d929c['push'](_0x2d929c['shift']());}};_0x20dac1(++_0x1e231d);}(_0x33d4,0x111));var _0x433d=function(_0x1111ba,_0x506977){_0x1111ba=_0x1111ba-0x0;var _0x5cf412=_0x33d4[_0x1111ba];return _0x5cf412;};'use strict';var multer=require(_0x433d('0x0'));var util=require('util');var path=require(_0x433d('0x1'));var express=require(_0x433d('0x2'));var router=express[_0x433d('0x3')]();var auth=require(_0x433d('0x4'));var controller=require(_0x433d('0x5'));router['get']('/voice/channels',auth[_0x433d('0x6')](),controller[_0x433d('0x7')]);router[_0x433d('0x8')](_0x433d('0x9'),auth['isAuthenticated'](),controller[_0x433d('0xa')]);router[_0x433d('0x8')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0x433d('0x6')](),controller['voiceChannelStopMixMonitor']);router[_0x433d('0x8')](_0x433d('0xb'),auth[_0x433d('0x6')](),controller[_0x433d('0xc')]);router['get'](_0x433d('0xd'),auth[_0x433d('0x6')](),controller[_0x433d('0xe')]);router[_0x433d('0x8')](_0x433d('0xf'),auth[_0x433d('0x6')](),controller['mailQueues']);router['get'](_0x433d('0x10'),auth['isAuthenticated'](),controller[_0x433d('0x11')]);router[_0x433d('0x8')](_0x433d('0x12'),auth[_0x433d('0x6')](),controller['openchannelQueues']);router[_0x433d('0x8')]('/sms/queues',auth[_0x433d('0x6')](),controller[_0x433d('0x13')]);router[_0x433d('0x8')](_0x433d('0x14'),auth[_0x433d('0x6')](),controller[_0x433d('0x15')]);router[_0x433d('0x8')](_0x433d('0x16'),auth[_0x433d('0x6')](),controller[_0x433d('0x17')]);router['get'](_0x433d('0x18'),auth[_0x433d('0x6')](),controller[_0x433d('0x19')]);router['get']('/voice/queues/channels',auth[_0x433d('0x6')](),controller[_0x433d('0x1a')]);router[_0x433d('0x8')](_0x433d('0x1b'),auth[_0x433d('0x6')](),controller[_0x433d('0x1c')]);router[_0x433d('0x8')](_0x433d('0x1d'),auth[_0x433d('0x6')](),controller[_0x433d('0x1e')]);router[_0x433d('0x8')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x433d('0x6')](),controller[_0x433d('0x1f')]);router[_0x433d('0x8')](_0x433d('0x20'),auth[_0x433d('0x6')](),controller[_0x433d('0x21')]);router['put']('/voice/queues/:id',auth[_0x433d('0x6')](),controller[_0x433d('0x22')]);router['get']('/outbound',auth[_0x433d('0x6')](),controller['outbound']);router[_0x433d('0x8')](_0x433d('0x23'),auth[_0x433d('0x6')](),controller[_0x433d('0x24')]);router[_0x433d('0x8')](_0x433d('0x25'),auth['isAuthenticated'](),controller[_0x433d('0x26')]);router['put'](_0x433d('0x27'),auth[_0x433d('0x6')](),controller[_0x433d('0x28')]);router[_0x433d('0x8')](_0x433d('0x29'),auth['isAuthenticated'](),controller[_0x433d('0x2a')]);router[_0x433d('0x8')](_0x433d('0x2b'),auth[_0x433d('0x6')](),controller[_0x433d('0x2c')]);router[_0x433d('0x8')](_0x433d('0x2d'),auth[_0x433d('0x6')](),controller['campaigns']);router['get'](_0x433d('0x2e'),auth['isAuthenticated'](),controller[_0x433d('0x2f')]);router[_0x433d('0x8')](_0x433d('0x30'),auth[_0x433d('0x6')](),controller[_0x433d('0x31')]);router[_0x433d('0x8')](_0x433d('0x32'),auth[_0x433d('0x6')](),controller[_0x433d('0x33')]);router['get'](_0x433d('0x34'),auth[_0x433d('0x6')](),controller[_0x433d('0x35')]);router[_0x433d('0x8')](_0x433d('0x36'),auth[_0x433d('0x6')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x433d('0x8')](_0x433d('0x37'),auth[_0x433d('0x6')](),controller[_0x433d('0x38')]);router['get']('/whatsapp/queues/waitinginteractions',auth['isAuthenticated'](),controller['whatsappQueuesWaitingInteractions']);router['get'](_0x433d('0x39'),auth[_0x433d('0x6')](),controller[_0x433d('0x3a')]);router[_0x433d('0x3b')](_0x433d('0x3c'),auth[_0x433d('0x6')](),controller['queueNotify'](_0x433d('0x3d')));router[_0x433d('0x8')](_0x433d('0x3e'),auth[_0x433d('0x6')](),controller[_0x433d('0x3f')]);router['post'](_0x433d('0x40'),auth['isAuthenticated'](),controller['queueNotify'](_0x433d('0x41')));router[_0x433d('0x8')](_0x433d('0x42'),auth[_0x433d('0x6')](),controller[_0x433d('0x43')]);router[_0x433d('0x3b')]('/fax/queues/:id/notify',auth[_0x433d('0x6')](),controller[_0x433d('0x44')](_0x433d('0x45')));router['get'](_0x433d('0x46'),auth[_0x433d('0x6')](),controller['showFaxQueues']);router[_0x433d('0x3b')](_0x433d('0x47'),auth['isAuthenticated'](),controller[_0x433d('0x44')](_0x433d('0x48')));router[_0x433d('0x8')]('/openchannel/queues/:id',auth[_0x433d('0x6')](),controller[_0x433d('0x49')]);router[_0x433d('0x3b')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0x433d('0x44')](_0x433d('0x4a')));router['post'](_0x433d('0x4b'),auth[_0x433d('0x6')](),controller['queueNotify'](_0x433d('0x4c')));router[_0x433d('0x8')](_0x433d('0x4d'),auth['isAuthenticated'](),controller[_0x433d('0x4e')]);router[_0x433d('0x8')](_0x433d('0x4f'),auth['isAuthenticated'](),controller['showWhatsappQueues']);router[_0x433d('0x3b')](_0x433d('0x50'),auth[_0x433d('0x6')](),controller[_0x433d('0x51')]);module[_0x433d('0x52')]=router; \ No newline at end of file diff --git a/server/api/rpc/rpc.controller.js b/server/api/rpc/rpc.controller.js new file mode 100644 index 0000000..1babb91 --- /dev/null +++ b/server/api/rpc/rpc.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe14b=['MessageId','InteractionId','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','chat','Website','User','agent','Agent\x20not\x20found','Message','update','From','bluebird','moment','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','error','message','result','catch','status','json','sendStatus','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','interface','internal','AgentCapacity','capacity','telephones','Trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found'];(function(_0x2d9443,_0x558bca){var _0x5cbf52=function(_0xa246f9){while(--_0xa246f9){_0x2d9443['push'](_0x2d9443['shift']());}};_0x5cbf52(++_0x558bca);}(_0xe14b,0x93));var _0xbe14=function(_0x3006cb,_0x570eda){_0x3006cb=_0x3006cb-0x0;var _0x3eb32f=_0xe14b[_0x3006cb];return _0x3eb32f;};'use strict';var BPromise=require(_0xbe14('0x0'));var moment=require(_0xbe14('0x1'));var _=require('lodash');var util=require('util');var db=require(_0xbe14('0x2'))['db'];var logger=require(_0xbe14('0x3'))('api');var jayson=require(_0xbe14('0x4'));var amiClient=jayson['client']['http']({'port':0x232a});var mailClient=jayson[_0xbe14('0x5')][_0xbe14('0x6')]({'port':0x232b});var routingClient=jayson[_0xbe14('0x5')][_0xbe14('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){var _0x496063=_0x196fca?_0x196fca:amiClient;return _0x496063[_0xbe14('0x7')](_0x1d9ade,_0x39387e)[_0xbe14('0x8')](function(_0xd68cd7){if(_0xd68cd7[_0xbe14('0x9')]){if(_0xd68cd7['error']['code']===0x1f4){return _0x50f909(_0xd68cd7[_0xbe14('0x9')][_0xbe14('0xa')]);}return _0x566ae7(_0xd68cd7['error'][_0xbe14('0xa')]);}else{_0x566ae7(_0xd68cd7[_0xbe14('0xb')]);}})[_0xbe14('0xc')](function(_0x3d38c2){_0x50f909(_0x3d38c2);});});}function respondWithResult(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xc8;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0xd')](_0x3b898d)[_0xbe14('0xe')](_0x23a730);}return _0x27792f[_0xbe14('0xf')](0x194);};}function handleError(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0x1f4;return function(_0x813399){logger['error'](_0x813399['stack']);if(_0x813399[_0xbe14('0x10')]){delete _0x813399[_0xbe14('0x10')];}_0x1e4826[_0xbe14('0xd')](_0x33fd54)[_0xbe14('0x11')](_0x813399);};}function findById(_0x4e8f34){return function(_0x21c789){if(!_[_0xbe14('0x12')](_0x4e8f34)&&!_[_0xbe14('0x12')](_0x21c789)&&!_[_0xbe14('0x12')](_0x21c789[_0xbe14('0x13')])){return _[_0xbe14('0x14')](_0x21c789[_0xbe14('0x13')],function(_0x5ea1f8){return _0x5ea1f8['id']==_0x4e8f34;});}return null;};}exports[_0xbe14('0x15')]=function(_0x456ca8,_0x329588){return respondWithRpcPromise(_0xbe14('0x16'),_0x456ca8[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x329588,null))['catch'](handleError(_0x329588,null));};exports[_0xbe14('0x18')]=function(_0x4a1bbd,_0x417c8d){return respondWithRpcPromise(_0xbe14('0x19'),_[_0xbe14('0x1a')](_0x4a1bbd['query'],_0x4a1bbd[_0xbe14('0x1b')]))['then'](respondWithResult(_0x417c8d,null))[_0xbe14('0xc')](handleError(_0x417c8d,null));};exports['voiceChannelStopMixMonitor']=function(_0x32e8eb,_0x4a25fa){return respondWithRpcPromise(_0xbe14('0x1c'),_[_0xbe14('0x1a')](_0x32e8eb['query'],_0x32e8eb[_0xbe14('0x1b')]))['then'](respondWithResult(_0x4a25fa,null))[_0xbe14('0xc')](handleError(_0x4a25fa,null));};exports['voiceQueues']=function(_0x36a21e,_0x5fa043){return respondWithRpcPromise(_0xbe14('0x1d'),_0x36a21e[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x5fa043,null))[_0xbe14('0xc')](handleError(_0x5fa043,null));};exports['showVoiceQueues']=function(_0x1822e0,_0x1ba46a){return respondWithRpcPromise(_0xbe14('0x1d'),_0x1822e0[_0xbe14('0x17')])['then'](findById(_0x1822e0[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x1ba46a,null))['catch'](handleError(_0x1ba46a,null));};exports[_0xbe14('0x1e')]=function(_0x3b3e84,_0x1c7cc7){return respondWithRpcPromise(_0xbe14('0x1f'),_[_0xbe14('0x1a')](_0x3b3e84[_0xbe14('0x20')],_0x3b3e84[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x1c7cc7,null))[_0xbe14('0xc')](handleError(_0x1c7cc7,null));};exports[_0xbe14('0x21')]=function(_0x40538f,_0x3bf43c){return respondWithRpcPromise(_0xbe14('0x22'),_[_0xbe14('0x1a')](_0x40538f[_0xbe14('0x17')],_0x40538f[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x3bf43c,null))[_0xbe14('0xc')](handleError(_0x3bf43c,null));};exports[_0xbe14('0x23')]=function(_0x14e7c4,_0x581e86){return respondWithRpcPromise(_0xbe14('0x24'),_0x14e7c4['query'])['then'](respondWithResult(_0x581e86,null))[_0xbe14('0xc')](handleError(_0x581e86,null));};exports['voiceQueuesChannel']=function(_0x243524,_0x345b0){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x243524['query'],_0x243524[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x345b0,null))['catch'](handleError(_0x345b0,null));};exports[_0xbe14('0x25')]=function(_0x1faf3e,_0x452635){return respondWithRpcPromise(_0xbe14('0x26'),_[_0xbe14('0x1a')](_0x1faf3e['query'],_0x1faf3e['params']))[_0xbe14('0x8')](respondWithResult(_0x452635,null))['catch'](handleError(_0x452635,null));};exports['voiceQueuesChannelRedirect']=function(_0x5c5e9f,_0x163ef7){return respondWithRpcPromise(_0xbe14('0x27'),_[_0xbe14('0x1a')](_0x5c5e9f[_0xbe14('0x17')],_0x5c5e9f[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x163ef7,null))[_0xbe14('0xc')](handleError(_0x163ef7,null));};exports[_0xbe14('0x28')]=function(_0x2d9c12,_0x2dfd5a){return respondWithRpcPromise(_0xbe14('0x29'),_0x2d9c12[_0xbe14('0x17')])['then'](respondWithResult(_0x2dfd5a,null))['catch'](handleError(_0x2dfd5a,null));};exports[_0xbe14('0x2a')]=function(_0x2951e1,_0x13bfcf){return respondWithRpcPromise('OutboundChannels',_0x2951e1[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x13bfcf,null))[_0xbe14('0xc')](handleError(_0x13bfcf,null));};exports[_0xbe14('0x2b')]=function(_0x3bd454,_0x25ee1f){var _0x19fa30;return respondWithRpcPromise(_0xbe14('0x2c'),_0x3bd454[_0xbe14('0x17')])['then'](function(_0xe51424){_0x19fa30=_0xe51424;return respondWithRpcPromise(_0xbe14('0x2c'),_0x3bd454[_0xbe14('0x17')],routingClient);})[_0xbe14('0x8')](function(_0x3287b9){return _[_0xbe14('0x1a')]({},_0x3287b9,_0x19fa30);})['then'](respondWithResult(_0x25ee1f,null))[_0xbe14('0xc')](handleError(_0x25ee1f,null));};exports[_0xbe14('0x2d')]=function(_0x1220c9,_0x36263c){if(_0x1220c9['body']&&_0x1220c9['body'][_0xbe14('0x2e')]&&_0x1220c9[_0xbe14('0x2f')]&&_0x1220c9[_0xbe14('0x2f')]['name']){for(var _0x5d5318 in _0x1220c9[_0xbe14('0x20')]['interaction']){if(_0x1220c9['body'][_0xbe14('0x2e')][_0xbe14('0x30')](_0x5d5318)){db[_0xbe14('0x31')]['findAll']({'where':{'channel':_0x5d5318,'membername':_0x1220c9['user']['name'],'type':_0xbe14('0x32'),'exitAt':null,'uniqueid':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318]&&_0x1220c9['body'][_0xbe14('0x2e')][_0x5d5318][_0xbe14('0x33')]?{'$notIn':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318]}:{'$ne':null}}})['then'](function(_0x4a1a4b){var _0x3e2fd3=moment()[_0xbe14('0x34')](_0xbe14('0x35'));for(var _0xb2b285=0x0,_0x2550dc=_0x4a1a4b['length'];_0xb2b285<_0x2550dc;_0xb2b285+=0x1){_0x4a1a4b[_0xb2b285]['updateAttributes']({'exitAt':_0x3e2fd3});}});for(var _0x46af81=0x0;_0x46af81<_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318][_0xbe14('0x33')];_0x46af81+=0x1){db['MemberReport'][_0xbe14('0x36')]({'where':{'channel':_0x5d5318,'membername':_0x1220c9[_0xbe14('0x2f')]['name'],'type':_0xbe14('0x32'),'uniqueid':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318][_0x46af81],'exitAt':null},'defaults':{'channel':_0x5d5318,'membername':_0x1220c9[_0xbe14('0x2f')]['name'],'interface':_['isNil'](_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x37')])?util['format']('SIP/%s',_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x10')]):_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x37')],'type':_0xbe14('0x32'),'enterAt':moment()[_0xbe14('0x34')](_0xbe14('0x35')),'role':'agent','internal':_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x38')],'uniqueid':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318][_0x46af81]}});}}}}return respondWithRpcPromise(_0xbe14('0x39'),{'id':_0x1220c9['params']['id'],'capacity':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x3a')]},routingClient)[_0xbe14('0x8')](respondWithResult(_0x36263c,null))[_0xbe14('0xc')](handleError(_0x36263c,null));};exports[_0xbe14('0x3b')]=function(_0x2dbeb1,_0x505829){return respondWithRpcPromise('Telephones',_0x2dbeb1[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x505829,null))[_0xbe14('0xc')](handleError(_0x505829,null));};exports['trunks']=function(_0x497b00,_0x44fe0d){return respondWithRpcPromise(_0xbe14('0x3c'),_0x497b00['query'])[_0xbe14('0x8')](respondWithResult(_0x44fe0d,null))[_0xbe14('0xc')](handleError(_0x44fe0d,null));};exports['campaigns']=function(_0x28f995,_0x4a40d2){return respondWithRpcPromise(_0xbe14('0x3d'),_0x28f995[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x4a40d2,null))['catch'](handleError(_0x4a40d2,null));};exports[_0xbe14('0x3e')]=function(_0x404212,_0x5dc78a){return respondWithRpcPromise(_0xbe14('0x3f'),_0x404212[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x5dc78a,null))[_0xbe14('0xc')](handleError(_0x5dc78a,null));};exports[_0xbe14('0x40')]=function(_0x4f06a3,_0x42a346){return respondWithRpcPromise(_0xbe14('0x3f'),_0x4f06a3[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](findById(_0x4f06a3[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x42a346,null))[_0xbe14('0xc')](handleError(_0x42a346,null));};exports['mailQueues']=function(_0x72c875,_0x1b47a4){return respondWithRpcPromise(_0xbe14('0x41'),_0x72c875[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x1b47a4,null))[_0xbe14('0xc')](handleError(_0x1b47a4,null));};exports[_0xbe14('0x42')]=function(_0x32df3c,_0x285b6e){return respondWithRpcPromise(_0xbe14('0x41'),_0x32df3c[_0xbe14('0x17')],routingClient)['then'](findById(_0x32df3c['params']['id']))['then'](respondWithResult(_0x285b6e,null))[_0xbe14('0xc')](handleError(_0x285b6e,null));};exports[_0xbe14('0x43')]=function(_0x2f4e52,_0xf79b21){return respondWithRpcPromise(_0xbe14('0x44'),_0x2f4e52[_0xbe14('0x17')],mailClient)[_0xbe14('0x8')](respondWithResult(_0xf79b21,null))[_0xbe14('0xc')](handleError(_0xf79b21,null));};exports[_0xbe14('0x45')]=function(_0x451b0b,_0x603816){return respondWithRpcPromise(_0xbe14('0x46'),_0x451b0b[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x603816,null))[_0xbe14('0xc')](handleError(_0x603816,null));};exports[_0xbe14('0x47')]=function(_0x179077,_0x2225d9){return respondWithRpcPromise(_0xbe14('0x46'),_0x179077[_0xbe14('0x17')],routingClient)['then'](findById(_0x179077[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x2225d9,null))[_0xbe14('0xc')](handleError(_0x2225d9,null));};exports[_0xbe14('0x48')]=function(_0x3ee6b7,_0x222944){return respondWithRpcPromise(_0xbe14('0x49'),_0x3ee6b7[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x222944,null))[_0xbe14('0xc')](handleError(_0x222944,null));};exports['showSmsQueues']=function(_0x18be56,_0x442ec4){return respondWithRpcPromise(_0xbe14('0x49'),_0x18be56[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](findById(_0x18be56['params']['id']))[_0xbe14('0x8')](respondWithResult(_0x442ec4,null))[_0xbe14('0xc')](handleError(_0x442ec4,null));};exports[_0xbe14('0x4a')]=function(_0xd4e1c7,_0x46ac9c){return respondWithRpcPromise('WhatsappQueues',_0xd4e1c7[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x46ac9c,null))[_0xbe14('0xc')](handleError(_0x46ac9c,null));};exports[_0xbe14('0x4b')]=function(_0xaebce8,_0x289c4d){return respondWithRpcPromise(_0xbe14('0x4c'),_0xaebce8[_0xbe14('0x17')],routingClient)['then'](findById(_0xaebce8[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x289c4d,null))[_0xbe14('0xc')](handleError(_0x289c4d,null));};exports[_0xbe14('0x4d')]=function(_0x5982b7,_0xa4b2a3){return respondWithRpcPromise(_0xbe14('0x4e'),_0x5982b7['query'],routingClient)['then'](respondWithResult(_0xa4b2a3,null))[_0xbe14('0xc')](handleError(_0xa4b2a3,null));};exports[_0xbe14('0x4f')]=function(_0x2d2643,_0x2510a0){return respondWithRpcPromise(_0xbe14('0x4e'),_0x2d2643[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](findById(_0x2d2643[_0xbe14('0x1b')]['id']))['then'](respondWithResult(_0x2510a0,null))['catch'](handleError(_0x2510a0,null));};exports[_0xbe14('0x50')]=function(_0x1c18b6,_0x29aa52){return respondWithRpcPromise('FaxAccounts',_0x1c18b6[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x29aa52,null))[_0xbe14('0xc')](handleError(_0x29aa52,null));};exports[_0xbe14('0x51')]=function(_0x468e9f,_0x1ef09b){return respondWithRpcPromise(_0xbe14('0x52'),_0x468e9f['query'],routingClient)[_0xbe14('0x8')](respondWithResult(_0x1ef09b,null))[_0xbe14('0xc')](handleError(_0x1ef09b,null));};exports[_0xbe14('0x53')]=function(_0x3afc5a,_0x469555){return respondWithRpcPromise(_0xbe14('0x54'),_0x3afc5a[_0xbe14('0x17')],routingClient)['then'](respondWithResult(_0x469555,null))[_0xbe14('0xc')](handleError(_0x469555,null));};exports[_0xbe14('0x55')]=function(_0x3cd17e,_0x1c0932){return respondWithRpcPromise(_0xbe14('0x56'),_0x3cd17e[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x1c0932,null))[_0xbe14('0xc')](handleError(_0x1c0932,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x1e5ce1,_0x401968){return respondWithRpcPromise(_0xbe14('0x56'),_0x1e5ce1[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](function(_0x17576b){if(_0x1e5ce1['query'][_0xbe14('0x57')]!==undefined){var _0x175213=_(_0x17576b[_0xbe14('0x13')])[_0xbe14('0x58')]([_0x1e5ce1['query'][_0xbe14('0x57')],_0x1e5ce1[_0xbe14('0x1b')]['id']])[_0xbe14('0x59')](_0xbe14('0x5a'))[_0xbe14('0x5b')]()[_0xbe14('0x5c')]();return _0x17576b[_0xbe14('0x13')]['filter'](function(_0x70ed08){return _0x175213['indexOf'](_0x70ed08[_0xbe14('0x5a')])>-0x1;});}else{return _0x17576b['rows'][_0xbe14('0x58')](function(_0x21837c){return _0x21837c[_0xbe14('0x5a')]===parseInt(_0x1e5ce1['params']['id']);});}})[_0xbe14('0x8')](respondWithResult(_0x401968,null))[_0xbe14('0xc')](handleError(_0x401968,null));};exports[_0xbe14('0x5d')]=function(_0x546f22,_0x41a896){return respondWithRpcPromise(_0xbe14('0x5e'),_0x546f22[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x41a896,null))['catch'](handleError(_0x41a896,null));};exports[_0xbe14('0x5f')]=function(_0x39bc54,_0x34f90b){return respondWithRpcPromise(_0xbe14('0x60'),_0x39bc54[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x34f90b,null))[_0xbe14('0xc')](handleError(_0x34f90b,null));};exports['faxQueuesWaitingInteractions']=function(_0x2ff94c,_0x123f4f){return respondWithRpcPromise(_0xbe14('0x61'),_0x2ff94c['query'],routingClient)[_0xbe14('0x8')](respondWithResult(_0x123f4f,null))[_0xbe14('0xc')](handleError(_0x123f4f,null));};exports[_0xbe14('0x62')]=function(_0x5bc52b){return function(_0xa53262,_0x1205d1){var _0x47d7bb,_0x2be969;var _0x49990b=_[_0xbe14('0x63')](_0x5bc52b);var _0x337073=_0x5bc52b==='chat'?'Website':_0xbe14('0x64');return db[_0x49990b+_0xbe14('0x65')][_0xbe14('0x66')]({'raw':!![],'where':{'id':_0xa53262['params']['id']}})[_0xbe14('0x8')](function(_0x30c03b){if(_[_0xbe14('0x12')](_0x30c03b)){throw new Error(_0x49990b+_0xbe14('0x67'));}_0x47d7bb=_0x30c03b;return db[_0x49990b+'Message']['findOne']({'where':{'id':_0xa53262[_0xbe14('0x20')][_0xbe14('0x68')]},'include':[{'model':db[_0x49990b+_0xbe14('0x69')],'as':_0xbe14('0x69')},{'model':db[_0x49990b+_0x337073],'as':_0xbe14('0x64')}]});})[_0xbe14('0x8')](function(_0x139aab){if(_['isNil'](_0x139aab)){throw new Error(_0x49990b+_0xbe14('0x6a'));}_0x2be969=_0x139aab;return _0x139aab['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xbe14('0x8')](function(){var _0x3a01bb={'uniqueid':_0x5bc52b+'.'+_0x2be969['id']+'.'+_0x2be969[_0xbe14('0x69')]['id'],'FromUserId':_0xa53262[_0xbe14('0x2f')]['id'],'type':'queue'};_0x3a01bb[_0x49990b+_0xbe14('0x6b')]=_0x2be969['id'];_0x3a01bb[_0x49990b+_0xbe14('0x6c')]=_0x2be969[_0xbe14('0x69')]['id'];_0x3a01bb['From'+_0x49990b+_0x337073+'Id']=_0x2be969[_0xbe14('0x64')]['id'];_0x3a01bb['To'+_0x49990b+_0xbe14('0x6d')]=_0x47d7bb['id'];return db[_0x49990b+_0xbe14('0x6e')][_0xbe14('0x6f')](_0x3a01bb);})[_0xbe14('0x8')](function(){return respondWithRpcPromise(_0xbe14('0x70'),{'channel':_0x5bc52b,'interaction':_0x2be969[_0xbe14('0x69')],'message':_0x2be969,'account':_0x2be969[_0xbe14('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xbe14('0x71'),'appdata':_0x47d7bb[_0xbe14('0x10')]+','+(_0x2be969[_0xbe14('0x64')][_0xbe14('0x72')]||0x12c),'interval':_0xbe14('0x73')}]},routingClient);})[_0xbe14('0x8')](respondWithResult(_0x1205d1,null))[_0xbe14('0xc')](handleError(_0x1205d1,null));};};exports[_0xbe14('0x74')]=function(_0x1de70d,_0x30be9e){var _0x1679bd,_0x2ca6e6;if(_['isNil'](_0x1de70d[_0xbe14('0x20')]['channel'])){throw new Error(_0xbe14('0x75'));}var _0x1b8733=_0x1de70d[_0xbe14('0x20')][_0xbe14('0x76')];var _0x1d7b08=_['capitalize'](_0x1b8733);var _0x5868d7=_0x1b8733===_0xbe14('0x77')?_0xbe14('0x78'):_0xbe14('0x64');return db[_0xbe14('0x79')]['findOne']({'raw':!![],'where':{'id':_0x1de70d[_0xbe14('0x1b')]['id'],'role':_0xbe14('0x7a')}})['then'](function(_0x186225){if(_[_0xbe14('0x12')](_0x186225)){throw new Error(_0xbe14('0x7b'));}_0x1679bd=_0x186225;return db[_0x1d7b08+_0xbe14('0x7c')]['findOne']({'where':{'id':_0x1de70d[_0xbe14('0x20')]['messageId']},'include':[{'model':db[_0x1d7b08+'Interaction'],'as':_0xbe14('0x69')},{'model':db[_0x1d7b08+_0x5868d7],'as':_0xbe14('0x64')}]});})[_0xbe14('0x8')](function(_0x3d890b){if(_[_0xbe14('0x12')](_0x3d890b)){throw new Error(_0x1d7b08+'\x20Message\x20not\x20found');}_0x2ca6e6=_0x3d890b;return _0x3d890b[_0xbe14('0x7d')]({'read':0x0,'readAt':null,'UserId':null});})[_0xbe14('0x8')](function(){var _0x5dc793={'uniqueid':_0x1b8733+'.'+_0x2ca6e6['id']+'.'+_0x2ca6e6['Interaction']['id'],'FromUserId':_0x1de70d[_0xbe14('0x2f')]['id'],'type':_0xbe14('0x71'),'ToUserId':_0x1679bd['id']};_0x5dc793[_0x1d7b08+'MessageId']=_0x2ca6e6['id'];_0x5dc793[_0x1d7b08+_0xbe14('0x6c')]=_0x2ca6e6['Interaction']['id'];_0x5dc793[_0xbe14('0x7e')+_0x1d7b08+_0x5868d7+'Id']=_0x2ca6e6['Account']['id'];return db[_0x1d7b08+_0xbe14('0x6e')]['create'](_0x5dc793);})[_0xbe14('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x1b8733,'interaction':_0x2ca6e6[_0xbe14('0x69')],'message':_0x2ca6e6,'account':_0x2ca6e6[_0xbe14('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x1679bd['name']+','+(_0x2ca6e6[_0xbe14('0x64')]['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xbe14('0x8')](respondWithResult(_0x30be9e,null))[_0xbe14('0xc')](handleError(_0x30be9e,null));}; \ No newline at end of file diff --git a/server/api/schedule/index.js b/server/api/schedule/index.js new file mode 100644 index 0000000..3ccde6b --- /dev/null +++ b/server/api/schedule/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4b3e=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','show','/:id/run','post','create','put','/:id','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x4d1b69,_0x26283b){var _0x594ccd=function(_0xdc39d5){while(--_0xdc39d5){_0x4d1b69['push'](_0x4d1b69['shift']());}};_0x594ccd(++_0x26283b);}(_0x4b3e,0x1a1));var _0xe4b3=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x4b3e[_0xbd08b4];return _0x314f1e;};'use strict';var multer=require(_0xe4b3('0x0'));var util=require(_0xe4b3('0x1'));var path=require('path');var timeout=require(_0xe4b3('0x2'));var express=require(_0xe4b3('0x3'));var router=express[_0xe4b3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe4b3('0x5'));var interaction=require(_0xe4b3('0x6'));var config=require(_0xe4b3('0x7'));var controller=require(_0xe4b3('0x8'));router[_0xe4b3('0x9')]('/',auth[_0xe4b3('0xa')](),controller[_0xe4b3('0xb')]);router[_0xe4b3('0x9')]('/:id',auth[_0xe4b3('0xa')](),controller[_0xe4b3('0xc')]);router[_0xe4b3('0x9')](_0xe4b3('0xd'),auth[_0xe4b3('0xa')](),controller['run']);router[_0xe4b3('0xe')]('/',auth['isAuthenticated'](),controller[_0xe4b3('0xf')]);router[_0xe4b3('0x10')](_0xe4b3('0x11'),auth[_0xe4b3('0xa')](),controller['update']);router[_0xe4b3('0x12')](_0xe4b3('0x11'),auth[_0xe4b3('0xa')](),controller[_0xe4b3('0x13')]);module[_0xe4b3('0x14')]=router; \ No newline at end of file diff --git a/server/api/schedule/schedule.attributes.js b/server/api/schedule/schedule.attributes.js new file mode 100644 index 0000000..a8fc7cd --- /dev/null +++ b/server/api/schedule/schedule.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5bd0=['days','minutes','csv','pdf','xlsx','custom','default','BOOLEAN','TEXT','sequelize','exports','STRING','DATE','INTEGER','ENUM','months','weeks'];(function(_0x441847,_0x21da34){var _0x5b109c=function(_0x1ec126){while(--_0x1ec126){_0x441847['push'](_0x441847['shift']());}};_0x5b109c(++_0x21da34);}(_0x5bd0,0xc4));var _0x05bd=function(_0x1a27f3,_0x1c082d){_0x1a27f3=_0x1a27f3-0x0;var _0x3ce222=_0x5bd0[_0x1a27f3];return _0x3ce222;};'use strict';var Sequelize=require(_0x05bd('0x0'));module[_0x05bd('0x1')]={'name':{'type':Sequelize[_0x05bd('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x05bd('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x05bd('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x05bd('0x3')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x05bd('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x05bd('0x5')]('years','quarters',_0x05bd('0x6'),_0x05bd('0x7'),_0x05bd('0x8'),'hours',_0x05bd('0x9')),'allowNull':![],'defaultValue':_0x05bd('0x8')},'output':{'type':Sequelize[_0x05bd('0x5')](_0x05bd('0xa'),_0x05bd('0xb'),_0x05bd('0xc')),'allowNull':![],'defaultValue':_0x05bd('0xa')},'type':{'type':Sequelize[_0x05bd('0x5')](_0x05bd('0xd'),_0x05bd('0xe')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0x05bd('0xf')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x05bd('0x10')]},'bcc':{'type':Sequelize[_0x05bd('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x05bd('0xf')],'defaultValue':!![]}}; \ No newline at end of file diff --git a/server/api/schedule/schedule.controller.js b/server/api/schedule/schedule.controller.js new file mode 100644 index 0000000..e694aa8 --- /dev/null +++ b/server/api/schedule/schedule.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2cc3=['intersection','model','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','rawAttributes','include','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','../../config/schedule','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','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','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Scheduler','UserProfileResource','destroy','end','error','stack','name','index','map','Schedule','fieldName','type','key','query','keys','filters'];(function(_0x559e13,_0x4b5c3f){var _0x1c5183=function(_0x12e8d7){while(--_0x12e8d7){_0x559e13['push'](_0x559e13['shift']());}};_0x1c5183(++_0x4b5c3f);}(_0x2cc3,0x180));var _0x32cc=function(_0x5e3632,_0x4a531d){_0x5e3632=_0x5e3632-0x0;var _0x5082f3=_0x2cc3[_0x5e3632];return _0x5082f3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x32cc('0x0'));var zipdir=require(_0x32cc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x32cc('0x2'));var moment=require(_0x32cc('0x3'));var BPromise=require(_0x32cc('0x4'));var Mustache=require(_0x32cc('0x5'));var util=require('util');var path=require(_0x32cc('0x6'));var sox=require(_0x32cc('0x7'));var csv=require(_0x32cc('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x32cc('0x9'));var _=require(_0x32cc('0xa'));var squel=require(_0x32cc('0xb'));var crypto=require('crypto');var jsforce=require(_0x32cc('0xc'));var deskjs=require(_0x32cc('0xd'));var toCsv=require(_0x32cc('0x8'));var querystring=require(_0x32cc('0xe'));var Papa=require(_0x32cc('0xf'));var Redis=require(_0x32cc('0x10'));var authService=require(_0x32cc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x32cc('0x12'));var hardwareService=require(_0x32cc('0x13'));var logger=require(_0x32cc('0x14'))(_0x32cc('0x15'));var utils=require(_0x32cc('0x16'));var config=require(_0x32cc('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x32cc('0x18'))['db'];function respondWithStatusCode(_0x186022,_0x55b1ac){_0x55b1ac=_0x55b1ac||0xcc;return function(_0x288cb2){if(_0x288cb2){return _0x186022[_0x32cc('0x19')](_0x55b1ac);}return _0x186022[_0x32cc('0x1a')](_0x55b1ac)['end']();};}function respondWithResult(_0x122c51,_0xba87e1){_0xba87e1=_0xba87e1||0xc8;return function(_0x33c094){if(_0x33c094){return _0x122c51['status'](_0xba87e1)[_0x32cc('0x1b')](_0x33c094);}};}function respondWithFilteredResult(_0x2a6348,_0x470f65){return function(_0x4e00e2){if(_0x4e00e2){var _0xf5ef74=typeof _0x470f65[_0x32cc('0x1c')]===_0x32cc('0x1d')&&typeof _0x470f65[_0x32cc('0x1e')]===_0x32cc('0x1d');var _0x1b07de=_0x4e00e2[_0x32cc('0x1f')];var _0x3cf07a=_0xf5ef74?0x0:_0x470f65[_0x32cc('0x1c')];var _0x52382b=_0xf5ef74?_0x4e00e2[_0x32cc('0x1f')]:_0x470f65[_0x32cc('0x1c')]+_0x470f65['limit'];var _0x341a85;if(_0x52382b>=_0x1b07de){_0x52382b=_0x1b07de;_0x341a85=0xc8;}else{_0x341a85=0xce;}_0x2a6348[_0x32cc('0x1a')](_0x341a85);return _0x2a6348[_0x32cc('0x20')](_0x32cc('0x21'),_0x3cf07a+'-'+_0x52382b+'/'+_0x1b07de)['json'](_0x4e00e2);}return null;};}function patchUpdates(_0x5e83ba){return function(_0x4da987){try{jsonpatch[_0x32cc('0x22')](_0x4da987,_0x5e83ba,!![]);}catch(_0x28e755){return BPromise[_0x32cc('0x23')](_0x28e755);}return _0x4da987[_0x32cc('0x24')]();};}function saveUpdates(_0x525d86,_0x538f4f){return function(_0xae743f){if(_0xae743f){return _0xae743f[_0x32cc('0x25')](_0x525d86)[_0x32cc('0x26')](function(_0x19ecd1){return _0x19ecd1;});}return null;};}function removeEntity(_0x37ca62,_0x3e3668){return function(_0x40d9bb){if(_0x40d9bb){return _0x40d9bb['destroy']()[_0x32cc('0x26')](function(){var _0x11ede9=_0x40d9bb[_0x32cc('0x27')]({'plain':!![]});var _0x833963=_0x32cc('0x28');return db[_0x32cc('0x29')][_0x32cc('0x2a')]({'where':{'type':_0x833963,'resourceId':_0x11ede9['id']}})[_0x32cc('0x26')](function(){return _0x40d9bb;});})[_0x32cc('0x26')](function(){_0x37ca62[_0x32cc('0x1a')](0xcc)[_0x32cc('0x2b')]();});}};}function handleEntityNotFound(_0x41c6d8,_0xd4743e){return function(_0x35dd1f){if(!_0x35dd1f){_0x41c6d8[_0x32cc('0x19')](0x194);}return _0x35dd1f;};}function handleError(_0x21b655,_0x3aced1){_0x3aced1=_0x3aced1||0x1f4;return function(_0xca3ba){logger[_0x32cc('0x2c')](_0xca3ba[_0x32cc('0x2d')]);if(_0xca3ba[_0x32cc('0x2e')]){delete _0xca3ba[_0x32cc('0x2e')];}_0x21b655[_0x32cc('0x1a')](_0x3aced1)['send'](_0xca3ba);};}exports[_0x32cc('0x2f')]=function(_0x2596c2,_0x5a69e6){var _0x488ae1={},_0x5bbbf4={},_0x2efcb7={'count':0x0,'rows':[]};var _0x44e1d8=_[_0x32cc('0x30')](db[_0x32cc('0x31')]['rawAttributes'],function(_0x1b5585){return{'name':_0x1b5585[_0x32cc('0x32')],'type':_0x1b5585[_0x32cc('0x33')][_0x32cc('0x34')]};});_0x5bbbf4['model']=_[_0x32cc('0x30')](_0x44e1d8,_0x32cc('0x2e'));_0x5bbbf4[_0x32cc('0x35')]=_[_0x32cc('0x36')](_0x2596c2[_0x32cc('0x35')]);_0x5bbbf4[_0x32cc('0x37')]=_[_0x32cc('0x38')](_0x5bbbf4[_0x32cc('0x39')],_0x5bbbf4[_0x32cc('0x35')]);_0x488ae1[_0x32cc('0x3a')]=_['intersection'](_0x5bbbf4[_0x32cc('0x39')],qs['fields'](_0x2596c2[_0x32cc('0x35')][_0x32cc('0x3b')]));_0x488ae1['attributes']=_0x488ae1['attributes'][_0x32cc('0x3c')]?_0x488ae1[_0x32cc('0x3a')]:_0x5bbbf4[_0x32cc('0x39')];if(!_0x2596c2[_0x32cc('0x35')]['hasOwnProperty'](_0x32cc('0x3d'))){_0x488ae1[_0x32cc('0x1e')]=qs[_0x32cc('0x1e')](_0x2596c2[_0x32cc('0x35')]['limit']);_0x488ae1['offset']=qs[_0x32cc('0x1c')](_0x2596c2[_0x32cc('0x35')][_0x32cc('0x1c')]);}_0x488ae1['order']=qs[_0x32cc('0x3e')](_0x2596c2[_0x32cc('0x35')][_0x32cc('0x3e')]);_0x488ae1[_0x32cc('0x3f')]=qs[_0x32cc('0x37')](_['pick'](_0x2596c2['query'],_0x5bbbf4[_0x32cc('0x37')]),_0x44e1d8);if(_0x2596c2[_0x32cc('0x35')][_0x32cc('0x40')]){_0x488ae1[_0x32cc('0x3f')]=_[_0x32cc('0x41')](_0x488ae1[_0x32cc('0x3f')],{'$or':_[_0x32cc('0x30')](_0x44e1d8,function(_0x4ea0f2){if(_0x4ea0f2[_0x32cc('0x33')]!==_0x32cc('0x42')){var _0x397175={};_0x397175[_0x4ea0f2[_0x32cc('0x2e')]]={'$like':'%'+_0x2596c2[_0x32cc('0x35')][_0x32cc('0x40')]+'%'};return _0x397175;}})});}_0x488ae1=_[_0x32cc('0x41')]({},_0x488ae1,_0x2596c2[_0x32cc('0x43')]);var _0x4f8026={'where':_0x488ae1[_0x32cc('0x3f')]};return db[_0x32cc('0x31')][_0x32cc('0x1f')](_0x4f8026)['then'](function(_0x4c2a6c){_0x2efcb7[_0x32cc('0x1f')]=_0x4c2a6c;if(_0x2596c2[_0x32cc('0x35')][_0x32cc('0x44')]){_0x488ae1['include']=[{'all':!![]}];}return db[_0x32cc('0x31')][_0x32cc('0x45')](_0x488ae1);})[_0x32cc('0x26')](function(_0xaa2919){_0x2efcb7[_0x32cc('0x46')]=_0xaa2919;return _0x2efcb7;})[_0x32cc('0x26')](respondWithFilteredResult(_0x5a69e6,_0x488ae1))['catch'](handleError(_0x5a69e6,null));};exports[_0x32cc('0x47')]=function(_0x114008,_0x4916f4){var _0x2e2ab3={'raw':![],'where':{'id':_0x114008[_0x32cc('0x48')]['id']}},_0x3e741f={};_0x3e741f[_0x32cc('0x39')]=_[_0x32cc('0x36')](db[_0x32cc('0x31')][_0x32cc('0x49')]);_0x3e741f[_0x32cc('0x35')]=_[_0x32cc('0x36')](_0x114008[_0x32cc('0x35')]);_0x3e741f[_0x32cc('0x37')]=_[_0x32cc('0x38')](_0x3e741f[_0x32cc('0x39')],_0x3e741f[_0x32cc('0x35')]);_0x2e2ab3[_0x32cc('0x3a')]=_[_0x32cc('0x38')](_0x3e741f['model'],qs[_0x32cc('0x3b')](_0x114008[_0x32cc('0x35')][_0x32cc('0x3b')]));_0x2e2ab3[_0x32cc('0x3a')]=_0x2e2ab3[_0x32cc('0x3a')][_0x32cc('0x3c')]?_0x2e2ab3['attributes']:_0x3e741f[_0x32cc('0x39')];if(_0x114008[_0x32cc('0x35')][_0x32cc('0x44')]){_0x2e2ab3[_0x32cc('0x4a')]=[{'all':!![]}];}_0x2e2ab3=_[_0x32cc('0x41')]({},_0x2e2ab3,_0x114008[_0x32cc('0x43')]);return db['Schedule'][_0x32cc('0x4b')](_0x2e2ab3)[_0x32cc('0x26')](handleEntityNotFound(_0x4916f4,null))['then'](respondWithResult(_0x4916f4,null))[_0x32cc('0x4c')](handleError(_0x4916f4,null));};exports[_0x32cc('0x4d')]=function(_0x2b74a2,_0x365311){return db[_0x32cc('0x31')]['create'](_0x2b74a2['body'],{})[_0x32cc('0x26')](function(_0x188548){var _0x55e1d6=_0x2b74a2[_0x32cc('0x4e')][_0x32cc('0x27')]({'plain':!![]});if(!_0x55e1d6)throw new Error(_0x32cc('0x4f'));if(_0x55e1d6[_0x32cc('0x50')]===_0x32cc('0x4e')){var _0x90f9b0=_0x188548[_0x32cc('0x27')]({'plain':!![]});var _0x491812=_0x32cc('0x28');return db[_0x32cc('0x51')][_0x32cc('0x4b')]({'where':{'name':_0x491812,'userProfileId':_0x55e1d6[_0x32cc('0x52')]},'raw':!![]})['then'](function(_0x48b2f9){if(_0x48b2f9&&_0x48b2f9[_0x32cc('0x53')]===0x0){return db['UserProfileResource'][_0x32cc('0x4d')]({'name':_0x90f9b0['name'],'resourceId':_0x90f9b0['id'],'type':_0x48b2f9['name'],'sectionId':_0x48b2f9['id']},{})['then'](function(){return _0x188548;});}else{return _0x188548;}})[_0x32cc('0x4c')](function(_0x101e18){logger[_0x32cc('0x2c')](_0x32cc('0x54'),_0x101e18);throw _0x101e18;});}return _0x188548;})['then'](respondWithResult(_0x365311,0xc9))[_0x32cc('0x4c')](handleError(_0x365311,null));};exports[_0x32cc('0x25')]=function(_0x49cf56,_0x4f7fa8){if(_0x49cf56[_0x32cc('0x55')]['id']){delete _0x49cf56[_0x32cc('0x55')]['id'];}return db[_0x32cc('0x31')]['find']({'where':{'id':_0x49cf56['params']['id']}})[_0x32cc('0x26')](handleEntityNotFound(_0x4f7fa8,null))[_0x32cc('0x26')](saveUpdates(_0x49cf56[_0x32cc('0x55')],null))[_0x32cc('0x26')](respondWithResult(_0x4f7fa8,null))['catch'](handleError(_0x4f7fa8,null));};exports['destroy']=function(_0x3d8741,_0x342dee){return db['Schedule'][_0x32cc('0x4b')]({'where':{'id':_0x3d8741[_0x32cc('0x48')]['id']}})['then'](handleEntityNotFound(_0x342dee,null))[_0x32cc('0x26')](removeEntity(_0x342dee,null))[_0x32cc('0x4c')](handleError(_0x342dee,null));};exports[_0x32cc('0x56')]=function(_0x2ab8a8,_0x19a84c,_0x3f49dc){var _0x1ddab2=require(_0x32cc('0x57'));return db['Schedule'][_0x32cc('0x4b')]({'where':{'id':_0x2ab8a8[_0x32cc('0x48')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x19a84c,null))[_0x32cc('0x26')](function(){_0x1ddab2[_0x32cc('0x56')](_0x2ab8a8['params']['id']);})[_0x32cc('0x26')](respondWithStatusCode(_0x19a84c,null))[_0x32cc('0x4c')](handleError(_0x19a84c,null));}; \ No newline at end of file diff --git a/server/api/schedule/schedule.model.js b/server/api/schedule/schedule.model.js new file mode 100644 index 0000000..df4e043 --- /dev/null +++ b/server/api/schedule/schedule.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1462=['bluebird','path','rimraf','../../config/environment','./schedule.attributes','exports','Schedule','tools_schedules','lodash','api','moment'];(function(_0xd02bb,_0x26e2d0){var _0x1cdf23=function(_0x18fd05){while(--_0x18fd05){_0xd02bb['push'](_0xd02bb['shift']());}};_0x1cdf23(++_0x26e2d0);}(_0x1462,0x15d));var _0x2146=function(_0x3e4ee2,_0x3bf500){_0x3e4ee2=_0x3e4ee2-0x0;var _0x89b47=_0x1462[_0x3e4ee2];return _0x89b47;};'use strict';var _=require(_0x2146('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2146('0x1'));var moment=require(_0x2146('0x2'));var BPromise=require(_0x2146('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2146('0x4'));var rimraf=require(_0x2146('0x5'));var config=require(_0x2146('0x6'));var attributes=require(_0x2146('0x7'));module[_0x2146('0x8')]=function(_0x1d0cf2,_0x1f2c51){return _0x1d0cf2['define'](_0x2146('0x9'),attributes,{'tableName':_0x2146('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/schedule/schedule.rpc.js b/server/api/schedule/schedule.rpc.js new file mode 100644 index 0000000..22e757f --- /dev/null +++ b/server/api/schedule/schedule.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e51=['request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','Schedule,\x20%s,\x20%s'];(function(_0x4db816,_0x530857){var _0x760883=function(_0x19c25b){while(--_0x19c25b){_0x4db816['push'](_0x4db816['shift']());}};_0x760883(++_0x530857);}(_0x3e51,0x181));var _0x13e5=function(_0x2aea7d,_0x4a2172){_0x2aea7d=_0x2aea7d-0x0;var _0x1ce285=_0x3e51[_0x2aea7d];return _0x1ce285;};'use strict';var _=require('lodash');var util=require(_0x13e5('0x0'));var moment=require(_0x13e5('0x1'));var BPromise=require(_0x13e5('0x2'));var rs=require(_0x13e5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x13e5('0x4'))['db'];var utils=require(_0x13e5('0x5'));var logger=require(_0x13e5('0x6'))(_0x13e5('0x7'));var config=require('../../config/environment');var jayson=require(_0x13e5('0x8'));var client=jayson['client'][_0x13e5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x856ec3,_0x520569,_0x160781){return new BPromise(function(_0x21f8df,_0x295823){return client[_0x13e5('0xa')](_0x856ec3,_0x160781)[_0x13e5('0xb')](function(_0x1cee71){logger[_0x13e5('0xc')](_0x13e5('0xd'),_0x520569,_0x13e5('0xe'));logger['debug'](_0x13e5('0xf'),_0x520569,'request\x20sent',JSON[_0x13e5('0x10')](_0x1cee71));if(_0x1cee71[_0x13e5('0x11')]){if(_0x1cee71[_0x13e5('0x11')][_0x13e5('0x12')]===0x1f4){logger[_0x13e5('0x11')](_0x13e5('0xd'),_0x520569,_0x1cee71[_0x13e5('0x11')][_0x13e5('0x13')]);return _0x295823(_0x1cee71['error']['message']);}logger[_0x13e5('0x11')](_0x13e5('0xd'),_0x520569,_0x1cee71[_0x13e5('0x11')][_0x13e5('0x13')]);return _0x21f8df(_0x1cee71['error'][_0x13e5('0x13')]);}else{logger[_0x13e5('0xc')](_0x13e5('0xd'),_0x520569,'request\x20sent');_0x21f8df(_0x1cee71['result']['message']);}})[_0x13e5('0x14')](function(_0x3c1938){logger[_0x13e5('0x11')](_0x13e5('0xd'),_0x520569,_0x3c1938);_0x295823(_0x3c1938);});});} \ No newline at end of file diff --git a/server/api/screenRecording/index.js b/server/api/screenRecording/index.js new file mode 100644 index 0000000..5cafd42 --- /dev/null +++ b/server/api/screenRecording/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x670f=['download','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./screenRecording.controller','isAuthenticated','index','get','/:id','show'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x670f,0x15b));var _0xf670=function(_0x2fa9f7,_0x1ab581){_0x2fa9f7=_0x2fa9f7-0x0;var _0xd18cec=_0x670f[_0x2fa9f7];return _0xd18cec;};'use strict';var multer=require(_0xf670('0x0'));var util=require(_0xf670('0x1'));var path=require(_0xf670('0x2'));var timeout=require(_0xf670('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf670('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf670('0x5'));var config=require(_0xf670('0x6'));var controller=require(_0xf670('0x7'));router['get']('/',auth[_0xf670('0x8')](),controller[_0xf670('0x9')]);router[_0xf670('0xa')]('/describe',auth[_0xf670('0x8')](),controller['describe']);router[_0xf670('0xa')](_0xf670('0xb'),auth['isAuthenticated'](),controller[_0xf670('0xc')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xf670('0xd')]);router[_0xf670('0xe')]('/',auth[_0xf670('0x8')](),controller[_0xf670('0xf')]);router[_0xf670('0x10')](_0xf670('0xb'),auth[_0xf670('0x8')](),controller[_0xf670('0x11')]);router['delete'](_0xf670('0xb'),auth[_0xf670('0x8')](),controller[_0xf670('0x12')]);module[_0xf670('0x13')]=router; \ No newline at end of file diff --git a/server/api/screenRecording/screenRecording.attributes.js b/server/api/screenRecording/screenRecording.attributes.js new file mode 100644 index 0000000..af16ad5 --- /dev/null +++ b/server/api/screenRecording/screenRecording.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x97b2=['path','../../config/environment','exports','VIRTUAL','value','extname','STRING','replace','INTEGER','startedAt','setDataValue','closedAt','duration','DATE','getDataValue','format','MM-DD-YYYY\x20HH:mm','toString','updatedAt','sequelize','moment'];(function(_0x306481,_0x54336d){var _0x1f1922=function(_0x4eaa77){while(--_0x4eaa77){_0x306481['push'](_0x306481['shift']());}};_0x1f1922(++_0x54336d);}(_0x97b2,0x1b7));var _0x297b=function(_0x4664db,_0x1de672){_0x4664db=_0x4664db-0x0;var _0x5615b4=_0x97b2[_0x4664db];return _0x5615b4;};'use strict';var Sequelize=require(_0x297b('0x0'));var moment=require(_0x297b('0x1'));var path=require(_0x297b('0x2'));var config=require(_0x297b('0x3'));module[_0x297b('0x4')]={'format':{'type':Sequelize[_0x297b('0x5')],'get':function(){return this['getDataValue'](_0x297b('0x6'))?path[_0x297b('0x7')](this['getDataValue'](_0x297b('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x297b('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x541d7b){var _0x2c5bf5=_0x541d7b[_0x297b('0x9')](/\\/g,'/');this['setDataValue'](_0x297b('0x6'),_0x2c5bf5);}},'rating':{'type':Sequelize[_0x297b('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x176f98){this['setDataValue'](_0x297b('0xb'),moment()['subtract'](_0x176f98,'ms'));this[_0x297b('0xc')](_0x297b('0xd'),moment());this[_0x297b('0xc')](_0x297b('0xe'),_0x176f98);}},'startedAt':{'type':Sequelize[_0x297b('0xf')],'get':function(){return moment(this[_0x297b('0x10')](_0x297b('0xb')))[_0x297b('0x11')](_0x297b('0x12'))[_0x297b('0x13')]();}},'closedAt':{'type':Sequelize[_0x297b('0xf')],'get':function(){return moment(this[_0x297b('0x10')](_0x297b('0xd')))[_0x297b('0x11')](_0x297b('0x12'))['toString']();}},'createdAt':{'type':Sequelize[_0x297b('0xf')],'get':function(){return moment(this[_0x297b('0x10')]('createdAt'))[_0x297b('0x11')](_0x297b('0x12'))[_0x297b('0x13')]();}},'updatedAt':{'type':Sequelize[_0x297b('0xf')],'get':function(){return moment(this[_0x297b('0x10')](_0x297b('0x14')))['format'](_0x297b('0x12'))[_0x297b('0x13')]();}}}; \ No newline at end of file diff --git a/server/api/screenRecording/screenRecording.controller.js b/server/api/screenRecording/screenRecording.controller.js new file mode 100644 index 0000000..9a8b8ec --- /dev/null +++ b/server/api/screenRecording/screenRecording.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb4c7=['rawAttributes','fieldName','type','format','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','keys','include','find','create','body','duration','createdAt','closedAt','value','describe','../../components/encryptor','uniqueid','params','join','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','root','ValidationError','download','filename','extname','unlink','message','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','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','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ScreenRecording'];(function(_0x50d56f,_0x5cba9d){var _0x1dd8ca=function(_0xa2e6b8){while(--_0xa2e6b8){_0x50d56f['push'](_0x50d56f['shift']());}};_0x1dd8ca(++_0x5cba9d);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x1de2a6,_0x569a01){_0x1de2a6=_0x1de2a6-0x0;var _0x15e08d=_0xb4c7[_0x1de2a6];return _0x15e08d;};'use strict';var emlformat=require(_0x7b4c('0x0'));var rimraf=require(_0x7b4c('0x1'));var zipdir=require(_0x7b4c('0x2'));var jsonpatch=require(_0x7b4c('0x3'));var rp=require(_0x7b4c('0x4'));var moment=require('moment');var BPromise=require(_0x7b4c('0x5'));var Mustache=require(_0x7b4c('0x6'));var util=require(_0x7b4c('0x7'));var path=require(_0x7b4c('0x8'));var sox=require(_0x7b4c('0x9'));var csv=require('to-csv');var ejs=require(_0x7b4c('0xa'));var fs=require('fs');var fs_extra=require(_0x7b4c('0xb'));var _=require(_0x7b4c('0xc'));var squel=require('squel');var crypto=require(_0x7b4c('0xd'));var jsforce=require(_0x7b4c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7b4c('0xf'));var querystring=require(_0x7b4c('0x10'));var Papa=require(_0x7b4c('0x11'));var Redis=require(_0x7b4c('0x12'));var authService=require(_0x7b4c('0x13'));var qs=require(_0x7b4c('0x14'));var as=require(_0x7b4c('0x15'));var hardwareService=require(_0x7b4c('0x16'));var logger=require(_0x7b4c('0x17'))(_0x7b4c('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7b4c('0x19'));var db=require(_0x7b4c('0x1a'))['db'];function respondWithStatusCode(_0x38656b,_0x1722ad){_0x1722ad=_0x1722ad||0xcc;return function(_0x3e1558){if(_0x3e1558){return _0x38656b[_0x7b4c('0x1b')](_0x1722ad);}return _0x38656b[_0x7b4c('0x1c')](_0x1722ad)[_0x7b4c('0x1d')]();};}function respondWithResult(_0x25b90b,_0x387488){_0x387488=_0x387488||0xc8;return function(_0x593a19){if(_0x593a19){return _0x25b90b[_0x7b4c('0x1c')](_0x387488)[_0x7b4c('0x1e')](_0x593a19);}};}function respondWithFilteredResult(_0xdc71cd,_0x2a0e2f){return function(_0xa0a812){if(_0xa0a812){var _0x2471b3=typeof _0x2a0e2f[_0x7b4c('0x1f')]===_0x7b4c('0x20')&&typeof _0x2a0e2f['limit']===_0x7b4c('0x20');var _0xe71d88=_0xa0a812[_0x7b4c('0x21')];var _0x36c02a=_0x2471b3?0x0:_0x2a0e2f['offset'];var _0x3ce10c=_0x2471b3?_0xa0a812[_0x7b4c('0x21')]:_0x2a0e2f[_0x7b4c('0x1f')]+_0x2a0e2f[_0x7b4c('0x22')];var _0x2d4c72;if(_0x3ce10c>=_0xe71d88){_0x3ce10c=_0xe71d88;_0x2d4c72=0xc8;}else{_0x2d4c72=0xce;}_0xdc71cd[_0x7b4c('0x1c')](_0x2d4c72);return _0xdc71cd[_0x7b4c('0x23')](_0x7b4c('0x24'),_0x36c02a+'-'+_0x3ce10c+'/'+_0xe71d88)[_0x7b4c('0x1e')](_0xa0a812);}return null;};}function patchUpdates(_0x55e3df){return function(_0x1f06ec){try{jsonpatch[_0x7b4c('0x25')](_0x1f06ec,_0x55e3df,!![]);}catch(_0x11996d){return BPromise[_0x7b4c('0x26')](_0x11996d);}return _0x1f06ec[_0x7b4c('0x27')]();};}function saveUpdates(_0x168ac9,_0x176704){return function(_0x3d4826){if(_0x3d4826){return _0x3d4826[_0x7b4c('0x28')](_0x168ac9)[_0x7b4c('0x29')](function(_0x5eec1e){return _0x5eec1e;});}return null;};}function removeEntity(_0x45438c,_0x4350c9){return function(_0x276271){if(_0x276271){return _0x276271[_0x7b4c('0x2a')]()[_0x7b4c('0x29')](function(){_0x45438c[_0x7b4c('0x1c')](0xcc)[_0x7b4c('0x1d')]();});}};}function handleEntityNotFound(_0x459eb4,_0x1f311e){return function(_0x1a69db){if(!_0x1a69db){_0x459eb4[_0x7b4c('0x1b')](0x194);}return _0x1a69db;};}function handleError(_0x257da2,_0x316e5f){_0x316e5f=_0x316e5f||0x1f4;return function(_0x501f75){logger[_0x7b4c('0x2b')](_0x501f75[_0x7b4c('0x2c')]);if(_0x501f75[_0x7b4c('0x2d')]){delete _0x501f75[_0x7b4c('0x2d')];}_0x257da2[_0x7b4c('0x1c')](_0x316e5f)[_0x7b4c('0x2e')](_0x501f75);};}exports[_0x7b4c('0x2f')]=function(_0x2552f9,_0x3e4a46){var _0x9a799b={},_0x3585cd={},_0x130ace={'count':0x0,'rows':[]};var _0x3544bc=_[_0x7b4c('0x30')](db[_0x7b4c('0x31')][_0x7b4c('0x32')],function(_0x1d0724){return{'name':_0x1d0724[_0x7b4c('0x33')],'type':_0x1d0724[_0x7b4c('0x34')]['key']};});_0x3585cd['model']=_['differenceBy'](_[_0x7b4c('0x30')](_0x3544bc,_0x7b4c('0x2d')),[_0x7b4c('0x35')]);_0x3585cd[_0x7b4c('0x36')]=_['keys'](_0x2552f9[_0x7b4c('0x36')]);_0x3585cd[_0x7b4c('0x37')]=_['intersection'](_0x3585cd[_0x7b4c('0x38')],_0x3585cd['query']);_0x9a799b[_0x7b4c('0x39')]=_[_0x7b4c('0x3a')](_0x3585cd[_0x7b4c('0x38')],qs['fields'](_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x3b')]));_0x9a799b['attributes']=_0x9a799b[_0x7b4c('0x39')][_0x7b4c('0x3c')]?_0x9a799b[_0x7b4c('0x39')]:_0x3585cd[_0x7b4c('0x38')];if(!_0x2552f9['query']['hasOwnProperty'](_0x7b4c('0x3d'))){_0x9a799b[_0x7b4c('0x22')]=qs['limit'](_0x2552f9[_0x7b4c('0x36')]['limit']);_0x9a799b['offset']=qs[_0x7b4c('0x1f')](_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x1f')]);}_0x9a799b[_0x7b4c('0x3e')]=qs['sort'](_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x3f')]);_0x9a799b[_0x7b4c('0x40')]=qs[_0x7b4c('0x37')](_[_0x7b4c('0x41')](_0x2552f9[_0x7b4c('0x36')],_0x3585cd[_0x7b4c('0x37')]),_0x3544bc);if(_0x2552f9['query']['filter']){_0x9a799b[_0x7b4c('0x40')]=_[_0x7b4c('0x42')](_0x9a799b[_0x7b4c('0x40')],{'$or':_[_0x7b4c('0x30')](_0x3544bc,function(_0xb8486d){if(_0xb8486d['type']!==_0x7b4c('0x43')){var _0x902367={};_0x902367[_0xb8486d[_0x7b4c('0x2d')]]={'$like':'%'+_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x44')]+'%'};return _0x902367;}})});}_0x9a799b=_[_0x7b4c('0x42')]({},_0x9a799b,_0x2552f9[_0x7b4c('0x45')]);var _0x1080fc={'where':_0x9a799b[_0x7b4c('0x40')]};return db['ScreenRecording'][_0x7b4c('0x21')](_0x1080fc)['then'](function(_0x2a3a74){_0x130ace['count']=_0x2a3a74;if(_0x2552f9[_0x7b4c('0x36')][_0x7b4c('0x46')]){_0x9a799b['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x7b4c('0x47')](_0x9a799b);})[_0x7b4c('0x29')](function(_0x1def44){_0x130ace[_0x7b4c('0x48')]=_0x1def44;return _0x130ace;})['then'](respondWithFilteredResult(_0x3e4a46,_0x9a799b))[_0x7b4c('0x49')](handleError(_0x3e4a46,null));};exports[_0x7b4c('0x4a')]=function(_0x100774,_0x5d4ed8){var _0x45ad59={'raw':![],'where':{'id':_0x100774['params']['id']}},_0x4b4757={};_0x4b4757[_0x7b4c('0x38')]=_['keys'](db[_0x7b4c('0x31')][_0x7b4c('0x32')]);_0x4b4757[_0x7b4c('0x36')]=_[_0x7b4c('0x4b')](_0x100774[_0x7b4c('0x36')]);_0x4b4757[_0x7b4c('0x37')]=_[_0x7b4c('0x3a')](_0x4b4757[_0x7b4c('0x38')],_0x4b4757[_0x7b4c('0x36')]);_0x45ad59['attributes']=_[_0x7b4c('0x3a')](_0x4b4757['model'],qs['fields'](_0x100774[_0x7b4c('0x36')][_0x7b4c('0x3b')]));_0x45ad59['attributes']=_0x45ad59['attributes'][_0x7b4c('0x3c')]?_0x45ad59[_0x7b4c('0x39')]:_0x4b4757[_0x7b4c('0x38')];if(_0x100774[_0x7b4c('0x36')][_0x7b4c('0x46')]){_0x45ad59[_0x7b4c('0x4c')]=[{'all':!![]}];}_0x45ad59=_[_0x7b4c('0x42')]({},_0x45ad59,_0x100774[_0x7b4c('0x45')]);return db['ScreenRecording'][_0x7b4c('0x4d')](_0x45ad59)[_0x7b4c('0x29')](handleEntityNotFound(_0x5d4ed8,null))[_0x7b4c('0x29')](respondWithResult(_0x5d4ed8,null))[_0x7b4c('0x49')](handleError(_0x5d4ed8,null));};exports[_0x7b4c('0x4e')]=function(_0x379f15,_0x11a6f9){return db[_0x7b4c('0x31')][_0x7b4c('0x4e')](_0x379f15['body'],{})['then'](respondWithResult(_0x11a6f9,0xc9))[_0x7b4c('0x49')](handleError(_0x11a6f9,null));};exports[_0x7b4c('0x28')]=function(_0x97eadf,_0x5d4192){if(_0x97eadf[_0x7b4c('0x4f')]['id']){delete _0x97eadf[_0x7b4c('0x4f')]['id'];}delete _0x97eadf['body'][_0x7b4c('0x50')];delete _0x97eadf['body'][_0x7b4c('0x51')];delete _0x97eadf['body'][_0x7b4c('0x52')];delete _0x97eadf['body'][_0x7b4c('0x53')];return db[_0x7b4c('0x31')]['find']({'where':{'id':_0x97eadf['params']['id']}})[_0x7b4c('0x29')](handleEntityNotFound(_0x5d4192,null))[_0x7b4c('0x29')](saveUpdates(_0x97eadf[_0x7b4c('0x4f')],null))['then'](respondWithResult(_0x5d4192,null))['catch'](handleError(_0x5d4192,null));};exports[_0x7b4c('0x54')]=function(_0x1c118a,_0x4cbf1b){return db['ScreenRecording'][_0x7b4c('0x54')]()[_0x7b4c('0x29')](respondWithResult(_0x4cbf1b,null))[_0x7b4c('0x49')](handleError(_0x4cbf1b,null));};exports['download']=function(_0x1d017d,_0x2f009a,_0x4aaf57){var _0x484e80=require(_0x7b4c('0x55'));var _0x4d8491=![];var _0x59db20={};if(_0x1d017d[_0x7b4c('0x36')]['type']&&_0x1d017d['query'][_0x7b4c('0x34')]===_0x7b4c('0x56')){_0x59db20[_0x7b4c('0x56')]=_0x1d017d[_0x7b4c('0x57')]['id'];}else{_0x59db20['id']=_0x1d017d['params']['id'];}return db['ScreenRecording'][_0x7b4c('0x4d')]({'where':_0x59db20,'attributes':['id',_0x7b4c('0x53')],'raw':!![]})[_0x7b4c('0x29')](handleEntityNotFound(_0x2f009a,null))['then'](function(_0x255262){if(_0x255262){var _0x3d81fb=path[_0x7b4c('0x58')](config['root'],_0x7b4c('0x59'),_0x255262[_0x7b4c('0x53')]);var _0x529803=util[_0x7b4c('0x35')](_0x7b4c('0x5a'),_0x3d81fb);if(fs[_0x7b4c('0x5b')](_0x529803)){_0x4d8491=!![];return _0x484e80[_0x7b4c('0x5c')](_0x529803,_0x3d81fb,config[_0x7b4c('0x5d')][_0x7b4c('0x5e')])[_0x7b4c('0x29')](function(){return _0x255262;});}return _0x255262;}})['then'](function(_0x4443d0){if(_0x4443d0){var _0x2dc79a=path['join'](config[_0x7b4c('0x5f')],_0x7b4c('0x59'),_0x4443d0[_0x7b4c('0x53')]);if(!fs[_0x7b4c('0x5b')](_0x2dc79a)){throw new db['Sequelize'][(_0x7b4c('0x60'))]('ScreenRecording\x20not\x20found');}if(_0x4443d0['filename']){return _0x2f009a[_0x7b4c('0x61')](_0x2dc79a,_0x4443d0[_0x7b4c('0x62')]+path[_0x7b4c('0x63')](_0x2dc79a),function(){if(_0x4d8491){fs[_0x7b4c('0x64')](_0x2dc79a);}});}else{return _0x2f009a[_0x7b4c('0x61')](_0x2dc79a,function(_0x5b24f6){if(_0x4d8491){fs['unlink'](_0x2dc79a);}});}}})[_0x7b4c('0x49')](function(_0x3c84af){if(_0x3c84af[_0x7b4c('0x65')]==='ScreenRecording\x20not\x20found'){_0x2f009a[_0x7b4c('0x1c')](0x194)[_0x7b4c('0x2e')](_0x7b4c('0x66'));}else{return handleError(_0x2f009a,null);}});};exports['destroy']=function(_0x222b47,_0x3b2144){return db[_0x7b4c('0x31')]['find']({'where':{'id':_0x222b47[_0x7b4c('0x57')]['id']}})[_0x7b4c('0x29')](function(_0x4ac03e){if(_[_0x7b4c('0x67')](_0x4ac03e)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4ac03e;})[_0x7b4c('0x29')](function(_0x11ae6e){var _0x3a3713=path['join'](config['root'],_0x7b4c('0x59'),_0x11ae6e[_0x7b4c('0x53')]);logger[_0x7b4c('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0x3a3713);if(!_[_0x7b4c('0x67')](_0x11ae6e['value'])&&fs[_0x7b4c('0x5b')](_0x3a3713)){logger[_0x7b4c('0x68')](_0x7b4c('0x69')+_0x3a3713+_0x7b4c('0x6a'));fs[_0x7b4c('0x6b')](_0x3a3713);}_0x3a3713=_0x3a3713+'.cypher';if(!_[_0x7b4c('0x67')](_0x11ae6e[_0x7b4c('0x53')])&&fs['existsSync'](_0x3a3713)){logger[_0x7b4c('0x68')](_0x7b4c('0x69')+_0x3a3713+_0x7b4c('0x6a'));fs[_0x7b4c('0x6b')](_0x3a3713);}return _0x11ae6e;})[_0x7b4c('0x29')](function(_0x2befd7){if(!_0x2befd7)throw new InternalError();return _0x2befd7[_0x7b4c('0x2a')]();})[_0x7b4c('0x29')](function(){_0x3b2144['status'](0xcc)[_0x7b4c('0x1d')]();})[_0x7b4c('0x49')](handleError(_0x3b2144,null));}; \ No newline at end of file diff --git a/server/api/screenRecording/screenRecording.model.js b/server/api/screenRecording/screenRecording.model.js new file mode 100644 index 0000000..1dd554f --- /dev/null +++ b/server/api/screenRecording/screenRecording.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x558a=['exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','api','moment','bluebird','path','rimraf','./screenRecording.attributes'];(function(_0x1ae3aa,_0x50e0b0){var _0x492fd8=function(_0x123371){while(--_0x123371){_0x1ae3aa['push'](_0x1ae3aa['shift']());}};_0x492fd8(++_0x50e0b0);}(_0x558a,0x14a));var _0xa558=function(_0x143475,_0x458e84){_0x143475=_0x143475-0x0;var _0x491066=_0x558a[_0x143475];return _0x491066;};'use strict';var _=require(_0xa558('0x0'));var util=require(_0xa558('0x1'));var logger=require('../../config/logger')(_0xa558('0x2'));var moment=require(_0xa558('0x3'));var BPromise=require(_0xa558('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa558('0x5'));var rimraf=require(_0xa558('0x6'));var config=require('../../config/environment');var attributes=require(_0xa558('0x7'));module[_0xa558('0x8')]=function(_0x147162,_0x219601){return _0x147162[_0xa558('0x9')](_0xa558('0xa'),attributes,{'tableName':_0xa558('0xb'),'paranoid':![],'indexes':[{'name':_0xa558('0xc'),'fields':[_0xa558('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/screenRecording/screenRecording.rpc.js b/server/api/screenRecording/screenRecording.rpc.js new file mode 100644 index 0000000..f713593 --- /dev/null +++ b/server/api/screenRecording/screenRecording.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x161b=['catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result'];(function(_0x450ea0,_0x3a0adf){var _0x338474=function(_0x470dbd){while(--_0x470dbd){_0x450ea0['push'](_0x450ea0['shift']());}};_0x338474(++_0x3a0adf);}(_0x161b,0x1b6));var _0xb161=function(_0x543c5f,_0x193f22){_0x543c5f=_0x543c5f-0x0;var _0xa5b4ad=_0x161b[_0x543c5f];return _0xa5b4ad;};'use strict';var _=require('lodash');var util=require(_0xb161('0x0'));var moment=require(_0xb161('0x1'));var BPromise=require(_0xb161('0x2'));var rs=require(_0xb161('0x3'));var fs=require('fs');var Redis=require(_0xb161('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb161('0x5'))(_0xb161('0x6'));var config=require('../../config/environment');var jayson=require(_0xb161('0x7'));var client=jayson[_0xb161('0x8')][_0xb161('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40a84e,_0x2de40c,_0x4a8e7a){return new BPromise(function(_0x2d4400,_0x44c228){return client[_0xb161('0xa')](_0x40a84e,_0x4a8e7a)[_0xb161('0xb')](function(_0xc6d0df){logger[_0xb161('0xc')](_0xb161('0xd'),_0x2de40c,'request\x20sent');logger[_0xb161('0xe')](_0xb161('0xf'),_0x2de40c,'request\x20sent',JSON[_0xb161('0x10')](_0xc6d0df));if(_0xc6d0df['error']){if(_0xc6d0df[_0xb161('0x11')][_0xb161('0x12')]===0x1f4){logger['error'](_0xb161('0xd'),_0x2de40c,_0xc6d0df[_0xb161('0x11')][_0xb161('0x13')]);return _0x44c228(_0xc6d0df[_0xb161('0x11')][_0xb161('0x13')]);}logger['error'](_0xb161('0xd'),_0x2de40c,_0xc6d0df[_0xb161('0x11')][_0xb161('0x13')]);return _0x2d4400(_0xc6d0df[_0xb161('0x11')][_0xb161('0x13')]);}else{logger[_0xb161('0xc')](_0xb161('0xd'),_0x2de40c,_0xb161('0x14'));_0x2d4400(_0xc6d0df[_0xb161('0x15')][_0xb161('0x13')]);}})[_0xb161('0x16')](function(_0x10a01e){logger[_0xb161('0x11')](_0xb161('0xd'),_0x2de40c,_0x10a01e);_0x44c228(_0x10a01e);});});} \ No newline at end of file diff --git a/server/api/setting/index.js b/server/api/setting/index.js new file mode 100644 index 0000000..e72a7a3 --- /dev/null +++ b/server/api/setting/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0174=['favicon','addFavicon','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','%s%s','logo','extname','originalname','post','file','addLogo','root','server/files/images/logos/','format','single','addLogoLogin','preferred'];(function(_0x1ba594,_0x47bb7a){var _0x2eedfc=function(_0x520a52){while(--_0x520a52){_0x1ba594['push'](_0x1ba594['shift']());}};_0x2eedfc(++_0x47bb7a);}(_0x0174,0x105));var _0x4017=function(_0x2eb13e,_0x1434b3){_0x2eb13e=_0x2eb13e-0x0;var _0x3589ac=_0x0174[_0x2eb13e];return _0x3589ac;};'use strict';var multer=require(_0x4017('0x0'));var util=require(_0x4017('0x1'));var path=require(_0x4017('0x2'));var timeout=require(_0x4017('0x3'));var express=require(_0x4017('0x4'));var router=express[_0x4017('0x5')]();var fs_extra=require(_0x4017('0x6'));var auth=require(_0x4017('0x7'));var interaction=require(_0x4017('0x8'));var config=require(_0x4017('0x9'));var controller=require(_0x4017('0xa'));router[_0x4017('0xb')]('/',auth[_0x4017('0xc')](),controller[_0x4017('0xd')]);router[_0x4017('0xb')](_0x4017('0xe'),controller['getDate']);router[_0x4017('0xb')](_0x4017('0xf'),controller['show']);router['get']('/:id/logo',controller[_0x4017('0x10')]);router[_0x4017('0xb')](_0x4017('0x11'),controller[_0x4017('0x12')]);router['get'](_0x4017('0x13'),controller[_0x4017('0x14')]);router[_0x4017('0xb')](_0x4017('0x15'),controller[_0x4017('0x16')]);router[_0x4017('0xb')](_0x4017('0x17'),controller[_0x4017('0x18')]);var upload=multer({'storage':multer[_0x4017('0x19')]({'destination':function(_0x16dae1,_0x3a1a03,_0x196d7e){_0x196d7e(null,path[_0x4017('0x1a')](config['root'],'server/files/images/logos/'));},'filename':function(_0x27c0cd,_0x3ccdb8,_0x4854c5){_0x4854c5(null,util['format'](_0x4017('0x1b'),_0x4017('0x1c'),path[_0x4017('0x1d')](_0x3ccdb8[_0x4017('0x1e')])));}})});router[_0x4017('0x1f')]('/:id/logo',upload['single'](_0x4017('0x20')),controller[_0x4017('0x21')]);var upload=multer({'storage':multer[_0x4017('0x19')]({'destination':function(_0x1af9b5,_0x589733,_0x279bce){_0x279bce(null,path[_0x4017('0x1a')](config[_0x4017('0x22')],_0x4017('0x23')));},'filename':function(_0x23c88f,_0x240043,_0x2c6b26){_0x2c6b26(null,util[_0x4017('0x24')](_0x4017('0x1b'),'logologin',path[_0x4017('0x1d')](_0x240043[_0x4017('0x1e')])));}})});router[_0x4017('0x1f')]('/:id/logo_login',upload[_0x4017('0x25')](_0x4017('0x20')),controller[_0x4017('0x26')]);var upload=multer({'storage':multer[_0x4017('0x19')]({'destination':function(_0x4fd117,_0x4fc65b,_0x48c937){_0x48c937(null,path[_0x4017('0x1a')](config['root'],'server/files/images/logos/'));},'filename':function(_0x134f4f,_0x585c04,_0x3f6614){_0x3f6614(null,util['format'](_0x4017('0x1b'),_0x4017('0x27'),path[_0x4017('0x1d')](_0x585c04['originalname'])));}})});router[_0x4017('0x1f')](_0x4017('0x15'),upload[_0x4017('0x25')](_0x4017('0x20')),controller['addPreferred']);var upload=multer({'storage':multer[_0x4017('0x19')]({'destination':function(_0x42de8f,_0x42d2ed,_0x4d335b){_0x4d335b(null,path[_0x4017('0x1a')](config['root'],_0x4017('0x23')));},'filename':function(_0x4b6238,_0x89250f,_0x557513){_0x557513(null,util[_0x4017('0x24')]('%s%s',_0x4017('0x28'),path[_0x4017('0x1d')](_0x89250f[_0x4017('0x1e')])));}})});router['post']('/:id/favicon',upload['single'](_0x4017('0x20')),controller[_0x4017('0x29')]);router['put'](_0x4017('0xf'),auth[_0x4017('0xc')](),controller['update']);module[_0x4017('0x2a')]=router; \ No newline at end of file diff --git a/server/api/setting/setting.attributes.js b/server/api/setting/setting.attributes.js new file mode 100644 index 0000000..b77f438 --- /dev/null +++ b/server/api/setting/setting.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x4d10fa,_0x178053){var _0x1b04bc=function(_0x2c2653){while(--_0x2c2653){_0x4d10fa['push'](_0x4d10fa['shift']());}};_0x1b04bc(++_0x178053);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}}; \ No newline at end of file diff --git a/server/api/setting/setting.controller.js b/server/api/setting/setting.controller.js new file mode 100644 index 0000000..93cecb5 --- /dev/null +++ b/server/api/setting/setting.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8039=['undefined','limit','count','status','set','json','apply','reject','save','update','destroy','stack','send','index','map','rawAttributes','fieldName','key','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','offset','sort','where','pick','filter','type','merge','Setting','include','findAll','rows','show','params','keys','length','includeAll','body','find','addLogo','file','filename','addLogoLogin','loginLogo','../../config/license/util','server/files/images/logos','getLicense','logo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','download','getLogoLogin','default_loginLogo.svg','\x20not\x20found','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','error','Setting,\x20%s,\x20%s','message','catch','sendStatus','end'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0x8039,0x14a));var _0x9803=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x8039[_0x403c20];return _0x2b271a;};'use strict';var emlformat=require(_0x9803('0x0'));var rimraf=require(_0x9803('0x1'));var zipdir=require(_0x9803('0x2'));var jsonpatch=require(_0x9803('0x3'));var rp=require(_0x9803('0x4'));var moment=require(_0x9803('0x5'));var BPromise=require(_0x9803('0x6'));var Mustache=require(_0x9803('0x7'));var util=require(_0x9803('0x8'));var path=require(_0x9803('0x9'));var sox=require('sox');var csv=require(_0x9803('0xa'));var ejs=require(_0x9803('0xb'));var fs=require('fs');var fs_extra=require(_0x9803('0xc'));var _=require(_0x9803('0xd'));var squel=require(_0x9803('0xe'));var crypto=require(_0x9803('0xf'));var jsforce=require(_0x9803('0x10'));var deskjs=require(_0x9803('0x11'));var toCsv=require(_0x9803('0xa'));var querystring=require(_0x9803('0x12'));var Papa=require(_0x9803('0x13'));var Redis=require(_0x9803('0x14'));var authService=require(_0x9803('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x9803('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9803('0x17'));var utils=require(_0x9803('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9803('0x19'))['db'];var jayson=require(_0x9803('0x1a'));var client=jayson[_0x9803('0x1b')][_0x9803('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x40168b,_0x4b0418,_0x46511b,_0x1e1519){return new BPromise(function(_0x341c9f,_0x4e9c6d){var _0x37066e=_0x1e1519||client;return _0x37066e[_0x9803('0x1d')](_0x40168b,_0x46511b)[_0x9803('0x1e')](function(_0x12830a){logger[_0x9803('0x1f')]('Setting,\x20%s,\x20%s',_0x4b0418,_0x9803('0x20'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x4b0418,_0x9803('0x20'),JSON['stringify'](_0x12830a));if(_0x12830a[_0x9803('0x21')]){if(_0x12830a['error']['code']===0x1f4){logger[_0x9803('0x21')](_0x9803('0x22'),_0x4b0418,_0x12830a[_0x9803('0x21')][_0x9803('0x23')]);return _0x4e9c6d(_0x12830a['error'][_0x9803('0x23')]);}logger[_0x9803('0x21')](_0x9803('0x22'),_0x4b0418,_0x12830a[_0x9803('0x21')][_0x9803('0x23')]);return _0x341c9f(_0x12830a[_0x9803('0x21')][_0x9803('0x23')]);}else{logger[_0x9803('0x1f')](_0x9803('0x22'),_0x4b0418,_0x9803('0x20'));_0x341c9f(_0x12830a['result'][_0x9803('0x23')]);}})[_0x9803('0x24')](function(_0x5ef5c2){logger[_0x9803('0x21')](_0x9803('0x22'),_0x4b0418,_0x5ef5c2);_0x4e9c6d(_0x5ef5c2);});});}function respondWithStatusCode(_0xa3b6c5,_0x1798d2){_0x1798d2=_0x1798d2||0xcc;return function(_0x42566f){if(_0x42566f){return _0xa3b6c5[_0x9803('0x25')](_0x1798d2);}return _0xa3b6c5['status'](_0x1798d2)[_0x9803('0x26')]();};}function respondWithResult(_0x415c91,_0x4e9d34){_0x4e9d34=_0x4e9d34||0xc8;return function(_0x695cf){if(_0x695cf){return _0x415c91['status'](_0x4e9d34)['json'](_0x695cf);}};}function respondWithFilteredResult(_0x348719,_0x4044e4){return function(_0x3f3c47){if(_0x3f3c47){var _0x36cf92=typeof _0x4044e4['offset']===_0x9803('0x27')&&typeof _0x4044e4[_0x9803('0x28')]===_0x9803('0x27');var _0x39ecb1=_0x3f3c47[_0x9803('0x29')];var _0x3b729f=_0x36cf92?0x0:_0x4044e4['offset'];var _0x18d1bf=_0x36cf92?_0x3f3c47[_0x9803('0x29')]:_0x4044e4['offset']+_0x4044e4[_0x9803('0x28')];var _0x302813;if(_0x18d1bf>=_0x39ecb1){_0x18d1bf=_0x39ecb1;_0x302813=0xc8;}else{_0x302813=0xce;}_0x348719[_0x9803('0x2a')](_0x302813);return _0x348719[_0x9803('0x2b')]('Content-Range',_0x3b729f+'-'+_0x18d1bf+'/'+_0x39ecb1)[_0x9803('0x2c')](_0x3f3c47);}return null;};}function patchUpdates(_0x36c38e){return function(_0x42f004){try{jsonpatch[_0x9803('0x2d')](_0x42f004,_0x36c38e,!![]);}catch(_0x54d2df){return BPromise[_0x9803('0x2e')](_0x54d2df);}return _0x42f004[_0x9803('0x2f')]();};}function saveUpdates(_0x1d687a,_0x17f162){return function(_0x2c0d9e){if(_0x2c0d9e){return _0x2c0d9e[_0x9803('0x30')](_0x1d687a)[_0x9803('0x1e')](function(_0x30b605){return _0x30b605;});}return null;};}function removeEntity(_0x197ad4,_0x22b04a){return function(_0x4678d5){if(_0x4678d5){return _0x4678d5[_0x9803('0x31')]()[_0x9803('0x1e')](function(){_0x197ad4[_0x9803('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5687db,_0x13f1ae){return function(_0x211b9d){if(!_0x211b9d){_0x5687db[_0x9803('0x25')](0x194);}return _0x211b9d;};}function handleError(_0x271f02,_0xfe5db8){_0xfe5db8=_0xfe5db8||0x1f4;return function(_0x27d7f6){logger['error'](_0x27d7f6[_0x9803('0x32')]);if(_0x27d7f6['name']){delete _0x27d7f6['name'];}_0x271f02[_0x9803('0x2a')](_0xfe5db8)[_0x9803('0x33')](_0x27d7f6);};}exports[_0x9803('0x34')]=function(_0x375109,_0xa17f4b){var _0x3c14e4={},_0x333dcb={},_0x4b78c9={'count':0x0,'rows':[]};var _0xb617d0=_[_0x9803('0x35')](db['Setting'][_0x9803('0x36')],function(_0x486a87){return{'name':_0x486a87[_0x9803('0x37')],'type':_0x486a87['type'][_0x9803('0x38')]};});_0x333dcb[_0x9803('0x39')]=_[_0x9803('0x35')](_0xb617d0,_0x9803('0x3a'));_0x333dcb[_0x9803('0x3b')]=_['keys'](_0x375109[_0x9803('0x3b')]);_0x333dcb[_0x9803('0x3c')]=_[_0x9803('0x3d')](_0x333dcb['model'],_0x333dcb[_0x9803('0x3b')]);_0x3c14e4[_0x9803('0x3e')]=_['intersection'](_0x333dcb[_0x9803('0x39')],qs[_0x9803('0x3f')](_0x375109[_0x9803('0x3b')][_0x9803('0x3f')]));_0x3c14e4[_0x9803('0x3e')]=_0x3c14e4[_0x9803('0x3e')]['length']?_0x3c14e4[_0x9803('0x3e')]:_0x333dcb[_0x9803('0x39')];if(!_0x375109[_0x9803('0x3b')][_0x9803('0x40')]('nolimit')){_0x3c14e4[_0x9803('0x28')]=qs[_0x9803('0x28')](_0x375109[_0x9803('0x3b')][_0x9803('0x28')]);_0x3c14e4[_0x9803('0x41')]=qs['offset'](_0x375109['query'][_0x9803('0x41')]);}_0x3c14e4['order']=qs['sort'](_0x375109['query'][_0x9803('0x42')]);_0x3c14e4[_0x9803('0x43')]=qs[_0x9803('0x3c')](_[_0x9803('0x44')](_0x375109[_0x9803('0x3b')],_0x333dcb[_0x9803('0x3c')]),_0xb617d0);if(_0x375109[_0x9803('0x3b')][_0x9803('0x45')]){_0x3c14e4[_0x9803('0x43')]=_['merge'](_0x3c14e4[_0x9803('0x43')],{'$or':_['map'](_0xb617d0,function(_0xe00855){if(_0xe00855[_0x9803('0x46')]!=='VIRTUAL'){var _0x38a5a4={};_0x38a5a4[_0xe00855['name']]={'$like':'%'+_0x375109[_0x9803('0x3b')][_0x9803('0x45')]+'%'};return _0x38a5a4;}})});}_0x3c14e4=_[_0x9803('0x47')]({},_0x3c14e4,_0x375109['options']);var _0x5592bd={'where':_0x3c14e4[_0x9803('0x43')]};return db[_0x9803('0x48')]['count'](_0x5592bd)[_0x9803('0x1e')](function(_0x4cc20b){_0x4b78c9[_0x9803('0x29')]=_0x4cc20b;if(_0x375109[_0x9803('0x3b')]['includeAll']){_0x3c14e4[_0x9803('0x49')]=[{'all':!![]}];}return db['Setting'][_0x9803('0x4a')](_0x3c14e4);})[_0x9803('0x1e')](function(_0x577755){_0x4b78c9[_0x9803('0x4b')]=_0x577755;return _0x4b78c9;})['then'](respondWithFilteredResult(_0xa17f4b,_0x3c14e4))[_0x9803('0x24')](handleError(_0xa17f4b,null));};exports[_0x9803('0x4c')]=function(_0x44a46a,_0x3fd64f){var _0x452e05={'raw':![],'where':{'id':_0x44a46a[_0x9803('0x4d')]['id']}},_0x326569={};_0x326569[_0x9803('0x39')]=_[_0x9803('0x4e')](db[_0x9803('0x48')][_0x9803('0x36')]);_0x326569['query']=_[_0x9803('0x4e')](_0x44a46a[_0x9803('0x3b')]);_0x326569[_0x9803('0x3c')]=_[_0x9803('0x3d')](_0x326569['model'],_0x326569[_0x9803('0x3b')]);_0x452e05[_0x9803('0x3e')]=_[_0x9803('0x3d')](_0x326569[_0x9803('0x39')],qs['fields'](_0x44a46a[_0x9803('0x3b')][_0x9803('0x3f')]));_0x452e05[_0x9803('0x3e')]=_0x452e05['attributes'][_0x9803('0x4f')]?_0x452e05[_0x9803('0x3e')]:_0x326569[_0x9803('0x39')];if(_0x44a46a[_0x9803('0x3b')][_0x9803('0x50')]){_0x452e05[_0x9803('0x49')]=[{'all':!![]}];}_0x452e05=_[_0x9803('0x47')]({},_0x452e05,_0x44a46a['options']);return db[_0x9803('0x48')]['find'](_0x452e05)['then'](handleEntityNotFound(_0x3fd64f,null))['then'](respondWithResult(_0x3fd64f,null))[_0x9803('0x24')](handleError(_0x3fd64f,null));};exports['update']=function(_0x2c929c,_0x36caf1){if(_0x2c929c[_0x9803('0x51')]['id']){delete _0x2c929c['body']['id'];}return db[_0x9803('0x48')][_0x9803('0x52')]({'where':{'id':_0x2c929c[_0x9803('0x4d')]['id']}})['then'](handleEntityNotFound(_0x36caf1,null))[_0x9803('0x1e')](saveUpdates(_0x2c929c['body'],null))[_0x9803('0x1e')](respondWithResult(_0x36caf1,null))[_0x9803('0x24')](handleError(_0x36caf1,null));};exports[_0x9803('0x53')]=function(_0x1518de,_0x4703e7,_0x4c510d){if(_0x1518de[_0x9803('0x54')]&&_0x1518de[_0x9803('0x54')]['filename']){_0x1518de['body']['logo']=_0x1518de['file'][_0x9803('0x55')];}return db[_0x9803('0x48')][_0x9803('0x52')]({'where':{'id':_0x1518de[_0x9803('0x4d')]['id']}})[_0x9803('0x1e')](handleEntityNotFound(_0x4703e7,null))[_0x9803('0x1e')](saveUpdates(_0x1518de[_0x9803('0x51')],null))[_0x9803('0x1e')](respondWithResult(_0x4703e7,null))[_0x9803('0x24')](handleError(_0x4703e7,null));};exports[_0x9803('0x56')]=function(_0x33ef53,_0x5bb7d5,_0x58838e){if(_0x33ef53[_0x9803('0x54')]&&_0x33ef53[_0x9803('0x54')][_0x9803('0x55')]){_0x33ef53['body'][_0x9803('0x57')]=_0x33ef53['file'][_0x9803('0x55')];}return db[_0x9803('0x48')][_0x9803('0x52')]({'where':{'id':_0x33ef53[_0x9803('0x4d')]['id']}})[_0x9803('0x1e')](handleEntityNotFound(_0x5bb7d5,null))[_0x9803('0x1e')](saveUpdates(_0x33ef53[_0x9803('0x51')],null))['then'](respondWithResult(_0x5bb7d5,null))[_0x9803('0x24')](handleError(_0x5bb7d5,null));};var utilLicense=require(_0x9803('0x58'));exports['getLogo']=function(_0x51bfd4,_0x281aa7,_0x5b2a48){var _0x3da3c3=_0x9803('0x59');var _0x26b04f={'custom':![]};return utilLicense[_0x9803('0x5a')]()['then'](function(_0x3a4d5e){if(_0x3a4d5e){_0x26b04f=_0x3a4d5e;}return db[_0x9803('0x48')][_0x9803('0x52')]({'where':{'id':_0x51bfd4[_0x9803('0x4d')]['id']},'attributes':[_0x9803('0x5b'),_0x9803('0x57'),_0x9803('0x5c'),_0x9803('0x5d'),_0x9803('0x5e'),_0x9803('0x5f'),_0x9803('0x60'),_0x9803('0x61')],'raw':!![]});})['then'](handleEntityNotFound(_0x281aa7,null))[_0x9803('0x1e')](function(_0x33b421){if(_0x33b421){var _0x30bd60=_0x33b421[_0x9803('0x5b')]&&fs[_0x9803('0x62')](path[_0x9803('0x63')](config[_0x9803('0x64')],_0x3da3c3,_[_0x9803('0x65')](_0x33b421[_0x9803('0x5b')])))?path[_0x9803('0x63')](config['root'],_0x3da3c3,_[_0x9803('0x65')](_0x33b421[_0x9803('0x5b')])):path['join'](config[_0x9803('0x64')],_0x3da3c3,_[_0x9803('0x65')](_0x9803('0x66')));var _0x2325d8=_0x9803('0x67')+_[_0x9803('0x68')](_0x9803('0x5b'));if(_0x33b421[_0x2325d8]||!_0x26b04f[_0x9803('0x69')]){_0x30bd60=path[_0x9803('0x63')](config['root'],_0x3da3c3,_[_0x9803('0x65')]('default_logo.svg'));}if(!fs[_0x9803('0x62')](_0x30bd60)){throw new db[(_0x9803('0x6a'))][(_0x9803('0x6b'))](_['upperFirst']('logo')+'\x20not\x20found');}return _0x281aa7[_0x9803('0x6c')](_0x30bd60);}})[_0x9803('0x24')](handleError(_0x281aa7,null));};var utilLicense=require(_0x9803('0x58'));exports[_0x9803('0x6d')]=function(_0x2b04c8,_0x567479,_0x468426){var _0x5beade='server/files/images/logos';var _0x1d7f63={'custom':![]};return utilLicense[_0x9803('0x5a')]()['then'](function(_0x446330){if(_0x446330){_0x1d7f63=_0x446330;}return db['Setting']['find']({'where':{'id':_0x2b04c8['params']['id']},'attributes':[_0x9803('0x5b'),_0x9803('0x57'),_0x9803('0x5c'),_0x9803('0x5d'),_0x9803('0x5e'),_0x9803('0x5f'),'defaultPreferred',_0x9803('0x61')],'raw':!![]});})[_0x9803('0x1e')](handleEntityNotFound(_0x567479,null))[_0x9803('0x1e')](function(_0x10415b){if(_0x10415b){var _0x1cd67a=_0x10415b[_0x9803('0x57')]&&fs[_0x9803('0x62')](path[_0x9803('0x63')](config[_0x9803('0x64')],_0x5beade,_['toLower'](_0x10415b[_0x9803('0x57')])))?path[_0x9803('0x63')](config[_0x9803('0x64')],_0x5beade,_[_0x9803('0x65')](_0x10415b[_0x9803('0x57')])):path['join'](config[_0x9803('0x64')],_0x5beade,_[_0x9803('0x65')]('default_loginLogo.svg'));var _0x95b4a2=_0x9803('0x67')+_[_0x9803('0x68')](_0x9803('0x57'));if(_0x10415b[_0x95b4a2]||!_0x1d7f63[_0x9803('0x69')]){_0x1cd67a=path[_0x9803('0x63')](config[_0x9803('0x64')],_0x5beade,_[_0x9803('0x65')](_0x9803('0x6e')));}if(!fs[_0x9803('0x62')](_0x1cd67a)){throw new db[(_0x9803('0x6a'))]['ValidationError'](_[_0x9803('0x68')]('loginLogo')+_0x9803('0x6f'));}return _0x567479[_0x9803('0x6c')](_0x1cd67a);}})[_0x9803('0x24')](handleError(_0x567479,null));};exports['gdpr']=function(_0x55b0fc,_0x19cc72){return db['Setting'][_0x9803('0x52')]({'where':{'id':_0x55b0fc[_0x9803('0x4d')]['id']},'attributes':[_0x9803('0x70')]})[_0x9803('0x1e')](respondWithResult(_0x19cc72,null))[_0x9803('0x24')](handleError(_0x19cc72,null));};exports[_0x9803('0x71')]=function(_0x4ae674,_0x340750,_0x5ba9d2){if(_0x4ae674['file']&&_0x4ae674[_0x9803('0x54')][_0x9803('0x55')]){_0x4ae674[_0x9803('0x51')][_0x9803('0x5c')]=_0x4ae674[_0x9803('0x54')][_0x9803('0x55')];}return db[_0x9803('0x48')][_0x9803('0x52')]({'where':{'id':_0x4ae674[_0x9803('0x4d')]['id']}})[_0x9803('0x1e')](handleEntityNotFound(_0x340750,null))['then'](saveUpdates(_0x4ae674['body'],null))[_0x9803('0x1e')](respondWithResult(_0x340750,null))['catch'](handleError(_0x340750,null));};var utilLicense=require(_0x9803('0x58'));exports[_0x9803('0x72')]=function(_0x1d96d8,_0x2849c6,_0x3238ff){var _0x29831e=_0x9803('0x59');var _0x16f0ed={'custom':![]};return utilLicense[_0x9803('0x5a')]()['then'](function(_0x5ed6ca){if(_0x5ed6ca){_0x16f0ed=_0x5ed6ca;}return db[_0x9803('0x48')]['find']({'where':{'id':_0x1d96d8['params']['id']},'attributes':[_0x9803('0x5b'),_0x9803('0x57'),_0x9803('0x5c'),_0x9803('0x5d'),_0x9803('0x5e'),'defaultLoginLogo',_0x9803('0x60'),_0x9803('0x61')],'raw':!![]});})[_0x9803('0x1e')](handleEntityNotFound(_0x2849c6,null))[_0x9803('0x1e')](function(_0x259282){if(_0x259282){var _0x50b81f=_0x259282[_0x9803('0x5c')]&&fs[_0x9803('0x62')](path[_0x9803('0x63')](config[_0x9803('0x64')],_0x29831e,_[_0x9803('0x65')](_0x259282[_0x9803('0x5c')])))?path[_0x9803('0x63')](config['root'],_0x29831e,_[_0x9803('0x65')](_0x259282[_0x9803('0x5c')])):path[_0x9803('0x63')](config[_0x9803('0x64')],_0x29831e,_['toLower'](_0x9803('0x73')));var _0x8d42da=_0x9803('0x67')+_['upperFirst'](_0x9803('0x5c'));if(_0x259282[_0x8d42da]||!_0x16f0ed['custom']||!_0x16f0ed[_0x9803('0x5c')]){_0x50b81f=path[_0x9803('0x63')](config['root'],_0x29831e,_[_0x9803('0x65')](_0x9803('0x73')));}if(!fs[_0x9803('0x62')](_0x50b81f)){throw new db['Sequelize'][(_0x9803('0x6b'))](_['upperFirst']('preferred')+_0x9803('0x6f'));}return _0x2849c6[_0x9803('0x6c')](_0x50b81f);}})[_0x9803('0x24')](handleError(_0x2849c6,null));};exports[_0x9803('0x74')]=function(_0x4e56b9,_0x211e51,_0x3979b6){if(_0x4e56b9[_0x9803('0x54')]&&_0x4e56b9['file'][_0x9803('0x55')]){_0x4e56b9['body'][_0x9803('0x5d')]=_0x4e56b9[_0x9803('0x54')][_0x9803('0x55')];}return db['Setting'][_0x9803('0x52')]({'where':{'id':_0x4e56b9[_0x9803('0x4d')]['id']}})['then'](handleEntityNotFound(_0x211e51,null))[_0x9803('0x1e')](saveUpdates(_0x4e56b9[_0x9803('0x51')],null))[_0x9803('0x1e')](respondWithResult(_0x211e51,null))['catch'](handleError(_0x211e51,null));};var utilLicense=require(_0x9803('0x58'));exports[_0x9803('0x75')]=function(_0x17fd4e,_0x2bd09c,_0x45f923){var _0x4e1f24=_0x9803('0x59');var _0x398995={'custom':![]};return utilLicense[_0x9803('0x5a')]()[_0x9803('0x1e')](function(_0x253863){if(_0x253863){_0x398995=_0x253863;}return db[_0x9803('0x48')][_0x9803('0x52')]({'where':{'id':_0x17fd4e[_0x9803('0x4d')]['id']},'attributes':[_0x9803('0x5b'),_0x9803('0x57'),_0x9803('0x5c'),'favicon',_0x9803('0x5e'),_0x9803('0x5f'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0x9803('0x1e')](handleEntityNotFound(_0x2bd09c,null))[_0x9803('0x1e')](function(_0x490387){if(_0x490387){var _0x11c471=_0x490387['favicon']&&fs['existsSync'](path[_0x9803('0x63')](config['root'],_0x4e1f24,_['toLower'](_0x490387[_0x9803('0x5d')])))?path[_0x9803('0x63')](config[_0x9803('0x64')],_0x4e1f24,_[_0x9803('0x65')](_0x490387[_0x9803('0x5d')])):path[_0x9803('0x63')](config[_0x9803('0x64')],_0x4e1f24,_[_0x9803('0x65')]('default_favicon.ico'));var _0x4f783c=_0x9803('0x67')+_[_0x9803('0x68')](_0x9803('0x5d'));if(_0x490387[_0x4f783c]||!_0x398995[_0x9803('0x69')]){_0x11c471=path[_0x9803('0x63')](config[_0x9803('0x64')],_0x4e1f24,_[_0x9803('0x65')](_0x9803('0x76')));}if(!fs['existsSync'](_0x11c471)){throw new db[(_0x9803('0x6a'))][(_0x9803('0x6b'))](_[_0x9803('0x68')](_0x9803('0x5d'))+_0x9803('0x6f'));}return _0x2bd09c[_0x9803('0x6c')](_0x11c471);}})[_0x9803('0x24')](handleError(_0x2bd09c,null));};exports[_0x9803('0x77')]=function(_0x211f1c,_0x1b126a){var _0x3cfcda={'offset':moment()[_0x9803('0x78')]()};_0x3cfcda[_0x9803('0x79')]=moment()[_0x9803('0x78')](_0x3cfcda['offset'])['format'](_0x9803('0x7a'));return _0x1b126a[_0x9803('0x2a')](0xc8)[_0x9803('0x33')](_0x3cfcda);}; \ No newline at end of file diff --git a/server/api/setting/setting.model.js b/server/api/setting/setting.model.js new file mode 100644 index 0000000..8a8aa3f --- /dev/null +++ b/server/api/setting/setting.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x504dc3,_0x547139){var _0x2d352c=function(_0x3cb526){while(--_0x3cb526){_0x504dc3['push'](_0x504dc3['shift']());}};_0x2d352c(++_0x547139);}(_0x008c,0x188));var _0xc008=function(_0x357f0a,_0x37aa60){_0x357f0a=_0x357f0a-0x0;var _0x10d41b=_0x008c[_0x357f0a];return _0x10d41b;};'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')]('Setting',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/setting/setting.rpc.js b/server/api/setting/setting.rpc.js new file mode 100644 index 0000000..de8df14 --- /dev/null +++ b/server/api/setting/setting.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbe3d=['client','http','request','then','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Setting,\x20%s,\x20%s','message','info','result','catch','ShowSetting','Setting','find','options','raw','where','include','map','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xbe3d,0x182));var _0xdbe3=function(_0x232fe0,_0x5aaf77){_0x232fe0=_0x232fe0-0x0;var _0x2fc97c=_0xbe3d[_0x232fe0];return _0x2fc97c;};'use strict';var _=require(_0xdbe3('0x0'));var util=require('util');var moment=require(_0xdbe3('0x1'));var BPromise=require(_0xdbe3('0x2'));var rs=require(_0xdbe3('0x3'));var fs=require('fs');var Redis=require(_0xdbe3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdbe3('0x5'));var logger=require(_0xdbe3('0x6'))(_0xdbe3('0x7'));var config=require(_0xdbe3('0x8'));var jayson=require(_0xdbe3('0x9'));var client=jayson[_0xdbe3('0xa')][_0xdbe3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14db19,_0x43f9f9,_0xf69004){return new BPromise(function(_0x11d22e,_0xe0b543){return client[_0xdbe3('0xc')](_0x14db19,_0xf69004)[_0xdbe3('0xd')](function(_0x5537ef){logger['info']('Setting,\x20%s,\x20%s',_0x43f9f9,'request\x20sent');logger['debug'](_0xdbe3('0xe'),_0x43f9f9,_0xdbe3('0xf'),JSON[_0xdbe3('0x10')](_0x5537ef));if(_0x5537ef[_0xdbe3('0x11')]){if(_0x5537ef[_0xdbe3('0x11')]['code']===0x1f4){logger[_0xdbe3('0x11')](_0xdbe3('0x12'),_0x43f9f9,_0x5537ef[_0xdbe3('0x11')][_0xdbe3('0x13')]);return _0xe0b543(_0x5537ef['error'][_0xdbe3('0x13')]);}logger[_0xdbe3('0x11')](_0xdbe3('0x12'),_0x43f9f9,_0x5537ef[_0xdbe3('0x11')]['message']);return _0x11d22e(_0x5537ef['error'][_0xdbe3('0x13')]);}else{logger[_0xdbe3('0x14')](_0xdbe3('0x12'),_0x43f9f9,'request\x20sent');_0x11d22e(_0x5537ef[_0xdbe3('0x15')][_0xdbe3('0x13')]);}})[_0xdbe3('0x16')](function(_0x421740){logger[_0xdbe3('0x11')](_0xdbe3('0x12'),_0x43f9f9,_0x421740);_0xe0b543(_0x421740);});});}exports[_0xdbe3('0x17')]=function(_0x4eb4fb){var _0x50f2c4=this;return new Promise(function(_0x2244ed,_0x2c70a6){return db[_0xdbe3('0x18')][_0xdbe3('0x19')]({'raw':_0x4eb4fb[_0xdbe3('0x1a')]?_0x4eb4fb[_0xdbe3('0x1a')][_0xdbe3('0x1b')]===undefined?!![]:![]:!![],'where':_0x4eb4fb[_0xdbe3('0x1a')]?_0x4eb4fb[_0xdbe3('0x1a')][_0xdbe3('0x1c')]||null:null,'attributes':_0x4eb4fb[_0xdbe3('0x1a')]?_0x4eb4fb[_0xdbe3('0x1a')]['attributes']||null:null,'include':_0x4eb4fb['options']?_0x4eb4fb[_0xdbe3('0x1a')][_0xdbe3('0x1d')]?_[_0xdbe3('0x1e')](_0x4eb4fb[_0xdbe3('0x1a')][_0xdbe3('0x1d')],function(_0x264fb6){return{'model':db[_0x264fb6[_0xdbe3('0x1f')]],'as':_0x264fb6['as'],'attributes':_0x264fb6['attributes'],'include':_0x264fb6[_0xdbe3('0x1d')]?_[_0xdbe3('0x1e')](_0x264fb6[_0xdbe3('0x1d')],function(_0x170f0c){return{'model':db[_0x170f0c['model']],'as':_0x170f0c['as'],'attributes':_0x170f0c[_0xdbe3('0x20')],'include':_0x170f0c[_0xdbe3('0x1d')]?_['map'](_0x170f0c[_0xdbe3('0x1d')],function(_0x465fa8){return{'model':db[_0x465fa8['model']],'as':_0x465fa8['as'],'attributes':_0x465fa8[_0xdbe3('0x20')]};}):[]};}):[]};}):[]:[]})[_0xdbe3('0xd')](function(_0x313ccd){logger[_0xdbe3('0x14')]('ShowSetting',_0x4eb4fb);logger['debug'](_0xdbe3('0x17'),_0x4eb4fb,JSON['stringify'](_0x313ccd));_0x2244ed(_0x313ccd);})[_0xdbe3('0x16')](function(_0x2a52a2){logger[_0xdbe3('0x11')](_0xdbe3('0x17'),_0x2a52a2[_0xdbe3('0x13')],_0x4eb4fb);_0x2c70a6(_0x50f2c4[_0xdbe3('0x11')](0x1f4,_0x2a52a2[_0xdbe3('0x13')]));});});}; \ No newline at end of file diff --git a/server/api/smsAccount/index.js b/server/api/smsAccount/index.js new file mode 100644 index 0000000..7d83461 --- /dev/null +++ b/server/api/smsAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x16dfb4,_0x51e627){var _0x1d2900=function(_0x511a48){while(--_0x511a48){_0x16dfb4['push'](_0x16dfb4['shift']());}};_0x1d2900(++_0x51e627);}(_0x53ec,0x192));var _0xc53e=function(_0x33f3f8,_0x51b47a){_0x33f3f8=_0x33f3f8-0x0;var _0x2122db=_0x53ec[_0x33f3f8];return _0x2122db;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router; \ No newline at end of file diff --git a/server/api/smsAccount/smsAccount.attributes.js b/server/api/smsAccount/smsAccount.attributes.js new file mode 100644 index 0000000..15e1665 --- /dev/null +++ b/server/api/smsAccount/smsAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbb34=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','exports','STRING','name','ENUM','skebby','clicksend','clickatell','csc','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}
{{#queue}}Queue:\x20{{queue.name}}
{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x1c7bf5,_0x3ef5f5){var _0x500c82=function(_0x2509a1){while(--_0x2509a1){_0x1c7bf5['push'](_0x1c7bf5['shift']());}};_0x500c82(++_0x3ef5f5);}(_0xbb34,0x1b3));var _0x4bb3=function(_0xdfcfd1,_0x1ec03b){_0xdfcfd1=_0xdfcfd1-0x0;var _0x4e8035=_0xbb34[_0xdfcfd1];return _0x4e8035;};'use strict';var Sequelize=require(_0x4bb3('0x0'));var rs=require('randomstring');module[_0x4bb3('0x1')]={'name':{'type':Sequelize[_0x4bb3('0x2')],'unique':_0x4bb3('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x4bb3('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x4bb3('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x4bb3('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x4bb3('0x2')]},'type':{'type':Sequelize[_0x4bb3('0x4')]('twilio',_0x4bb3('0x5'),'connectel',_0x4bb3('0x6'),'plivo',_0x4bb3('0x7'),'bandwidth',_0x4bb3('0x8'),'infobip',_0x4bb3('0x9'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0x4bb3('0x2')]},'authToken':{'type':Sequelize[_0x4bb3('0x2')]},'smsMethod':{'type':Sequelize[_0x4bb3('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x4bb3('0x2')]},'password':{'type':Sequelize[_0x4bb3('0x2')]},'apiKey':{'type':Sequelize[_0x4bb3('0x2')]},'applicationId':{'type':Sequelize[_0x4bb3('0x2')]},'accountId':{'type':Sequelize[_0x4bb3('0x2')]},'senderString':{'type':Sequelize[_0x4bb3('0x2')]},'deliveryReport':{'type':Sequelize[_0x4bb3('0xa')],'defaultValue':![]},'description':{'type':Sequelize[_0x4bb3('0x2')]},'notificationTemplate':{'type':Sequelize[_0x4bb3('0xb')],'defaultValue':function(){return _0x4bb3('0xc');}},'notificationSound':{'type':Sequelize[_0x4bb3('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4bb3('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4bb3('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4bb3('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4bb3('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4bb3('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4bb3('0xd')],'comment':_0x4bb3('0xe')},'mandatoryDisposition':{'type':Sequelize[_0x4bb3('0xa')],'defaultValue':![],'comment':_0x4bb3('0xf'),'set':function(_0x137fc3){if(!_0x137fc3)this['setDataValue'](_0x4bb3('0x10'),null);this[_0x4bb3('0x11')]('mandatoryDisposition',_0x137fc3);}}}; \ No newline at end of file diff --git a/server/api/smsAccount/smsAccount.controller.js b/server/api/smsAccount/smsAccount.controller.js new file mode 100644 index 0000000..6f0d334 --- /dev/null +++ b/server/api/smsAccount/smsAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd469=['getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsAccount.socket','register','jayson/promise','client','request','then','SmsAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsAccounts','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','SmsAccountId','Disposition','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','SmsApplication','account','applications','Applications','priority','asc','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','From','Body','messageId','MessageSid','skebby','from','sender','text','message_id','plivo','Text','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','replyMessageId','intelepeer','Sequelize','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','CmContact','DESC','list','omit','Contacts','SmsInteraction','spread','interaction','autoclose','push','close','unmanaged','*,*,*,*','created','SmsMessage','ContactId','AttachmentId','UserId','unshift','agent','startRouting','Start','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','\x0a','sequelize','ISOLATION_LEVELS','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','List','out','Messages','dataValues','inspect','skebby_dispatch_id','statusInt','requestid','clicksend','status_code','groupName','redif','DELIVERED','SmsAccount,\x20%s,\x20%s,\x20%s','connectel','error_code','RECEIVED_BY_RECIPIENT','bandwidth','message-delivered','DELIVRD','statusGet','received\x20delivery\x20report\x20from','message-id','state','addAgents','emit','userSmsAccount:save','isArray','userSmsAccount:remove'];(function(_0xfeddaf,_0xab5f9a){var _0x5b1150=function(_0x46d09d){while(--_0x46d09d){_0xfeddaf['push'](_0xfeddaf['shift']());}};_0x5b1150(++_0xab5f9a);}(_0xd469,0xe5));var _0x9d46=function(_0x5b4e9b,_0x3707a1){_0x5b4e9b=_0x5b4e9b-0x0;var _0x5b1ee4=_0xd469[_0x5b4e9b];return _0x5b1ee4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9d46('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9d46('0x1'));var rp=require(_0x9d46('0x2'));var moment=require(_0x9d46('0x3'));var BPromise=require(_0x9d46('0x4'));var Mustache=require('mustache');var util=require(_0x9d46('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9d46('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9d46('0x7'));var _=require(_0x9d46('0x8'));var squel=require(_0x9d46('0x9'));var crypto=require(_0x9d46('0xa'));var jsforce=require(_0x9d46('0xb'));var deskjs=require(_0x9d46('0xc'));var toCsv=require(_0x9d46('0x6'));var querystring=require('querystring');var Papa=require(_0x9d46('0xd'));var Redis=require('ioredis');var authService=require(_0x9d46('0xe'));var qs=require(_0x9d46('0xf'));var as=require(_0x9d46('0x10'));var hardwareService=require(_0x9d46('0x11'));var logger=require('../../config/logger')(_0x9d46('0x12'));var utils=require(_0x9d46('0x13'));var config=require(_0x9d46('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9d46('0x15'))['db'];config['redis']=_[_0x9d46('0x16')](config['redis'],{'host':_0x9d46('0x17'),'port':0x18eb});var socket=require(_0x9d46('0x18'))(new Redis(config[_0x9d46('0x19')]));require(_0x9d46('0x1a'))[_0x9d46('0x1b')](socket);var jayson=require(_0x9d46('0x1c'));var client=jayson[_0x9d46('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x347ee5,_0x41f8ff,_0xb3ec69,_0x3c5d41){return new BPromise(function(_0x48edc2,_0x5a7ffc){var _0x5e40d3=_0x3c5d41||client;return _0x5e40d3[_0x9d46('0x1e')](_0x347ee5,_0xb3ec69)[_0x9d46('0x1f')](function(_0x5b4520){logger['info'](_0x9d46('0x20'),_0x41f8ff,'request\x20sent');logger[_0x9d46('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x41f8ff,_0x9d46('0x22'),JSON[_0x9d46('0x23')](_0x5b4520));if(_0x5b4520[_0x9d46('0x24')]){if(_0x5b4520['error'][_0x9d46('0x25')]===0x1f4){logger[_0x9d46('0x24')](_0x9d46('0x20'),_0x41f8ff,_0x5b4520[_0x9d46('0x24')][_0x9d46('0x26')]);return _0x5a7ffc(_0x5b4520['error'][_0x9d46('0x26')]);}logger[_0x9d46('0x24')](_0x9d46('0x20'),_0x41f8ff,_0x5b4520[_0x9d46('0x24')][_0x9d46('0x26')]);return _0x48edc2(_0x5b4520[_0x9d46('0x24')]['message']);}else{logger[_0x9d46('0x27')](_0x9d46('0x20'),_0x41f8ff,_0x9d46('0x22'));_0x48edc2(_0x5b4520[_0x9d46('0x28')][_0x9d46('0x26')]);}})[_0x9d46('0x29')](function(_0xd232b){logger[_0x9d46('0x24')]('SmsAccount,\x20%s,\x20%s',_0x41f8ff,_0xd232b);_0x5a7ffc(_0xd232b);});});}function respondWithStatusCode(_0x398733,_0x5f3c9b){_0x5f3c9b=_0x5f3c9b||0xcc;return function(_0x386e18){if(_0x386e18){return _0x398733[_0x9d46('0x2a')](_0x5f3c9b);}return _0x398733[_0x9d46('0x2b')](_0x5f3c9b)['end']();};}function respondWithResult(_0x160c1b,_0x15b9a0){_0x15b9a0=_0x15b9a0||0xc8;return function(_0x43e66c){if(_0x43e66c){return _0x160c1b[_0x9d46('0x2b')](_0x15b9a0)[_0x9d46('0x2c')](_0x43e66c);}};}function respondWithFilteredResult(_0x14fa63,_0x16043b){return function(_0xca47e6){if(_0xca47e6){var _0x3cb939=typeof _0x16043b[_0x9d46('0x2d')]===_0x9d46('0x2e')&&typeof _0x16043b[_0x9d46('0x2f')]===_0x9d46('0x2e');var _0x1e9bad=_0xca47e6[_0x9d46('0x30')];var _0x526ea0=_0x3cb939?0x0:_0x16043b['offset'];var _0x40941b=_0x3cb939?_0xca47e6[_0x9d46('0x30')]:_0x16043b[_0x9d46('0x2d')]+_0x16043b[_0x9d46('0x2f')];var _0x458d8e;if(_0x40941b>=_0x1e9bad){_0x40941b=_0x1e9bad;_0x458d8e=0xc8;}else{_0x458d8e=0xce;}_0x14fa63[_0x9d46('0x2b')](_0x458d8e);return _0x14fa63[_0x9d46('0x31')](_0x9d46('0x32'),_0x526ea0+'-'+_0x40941b+'/'+_0x1e9bad)[_0x9d46('0x2c')](_0xca47e6);}return null;};}function patchUpdates(_0x6547be){return function(_0x325122){try{jsonpatch['apply'](_0x325122,_0x6547be,!![]);}catch(_0x129176){return BPromise[_0x9d46('0x33')](_0x129176);}return _0x325122[_0x9d46('0x34')]();};}function saveUpdates(_0x334ed3,_0x53a161){return function(_0x2e0050){if(_0x2e0050){return _0x2e0050[_0x9d46('0x35')](_0x334ed3)[_0x9d46('0x1f')](function(_0x5058e4){return _0x5058e4;});}return null;};}function removeEntity(_0x4bcef6,_0x58c13e){return function(_0x28bf4c){if(_0x28bf4c){return _0x28bf4c[_0x9d46('0x36')]()[_0x9d46('0x1f')](function(){var _0x361be9=_0x28bf4c[_0x9d46('0x37')]({'plain':!![]});var _0x342d38='SmsAccounts';return db[_0x9d46('0x38')][_0x9d46('0x36')]({'where':{'type':_0x342d38,'resourceId':_0x361be9['id']}})[_0x9d46('0x1f')](function(){return _0x28bf4c;});})['then'](function(){_0x4bcef6['status'](0xcc)[_0x9d46('0x39')]();});}};}function handleEntityNotFound(_0x1332c4,_0x1b3ae1){return function(_0x5a6940){if(!_0x5a6940){_0x1332c4[_0x9d46('0x2a')](0x194);}return _0x5a6940;};}function handleError(_0x31da0f,_0x2b9af8){_0x2b9af8=_0x2b9af8||0x1f4;return function(_0x35faa2){logger[_0x9d46('0x24')](_0x35faa2[_0x9d46('0x3a')]);if(_0x35faa2[_0x9d46('0x3b')]){delete _0x35faa2[_0x9d46('0x3b')];}_0x31da0f[_0x9d46('0x2b')](_0x2b9af8)[_0x9d46('0x3c')](_0x35faa2);};}exports[_0x9d46('0x3d')]=function(_0x2b67b9,_0x552298){var _0x2c8716={'include':[{'model':db[_0x9d46('0x3e')],'as':_0x9d46('0x3f')}]},_0x3a2051={},_0x10bb06={'count':0x0,'rows':[]};var _0x3b714c=_[_0x9d46('0x40')](db[_0x9d46('0x41')][_0x9d46('0x42')],function(_0x306ad0){return{'name':_0x306ad0['fieldName'],'type':_0x306ad0[_0x9d46('0x43')][_0x9d46('0x44')]};});_0x3a2051['model']=_[_0x9d46('0x40')](_0x3b714c,_0x9d46('0x3b'));_0x3a2051[_0x9d46('0x45')]=_[_0x9d46('0x46')](_0x2b67b9[_0x9d46('0x45')]);_0x3a2051['filters']=_[_0x9d46('0x47')](_0x3a2051[_0x9d46('0x48')],_0x3a2051['query']);_0x2c8716[_0x9d46('0x49')]=_['intersection'](_0x3a2051[_0x9d46('0x48')],qs[_0x9d46('0x4a')](_0x2b67b9[_0x9d46('0x45')][_0x9d46('0x4a')]));_0x2c8716[_0x9d46('0x49')]=_0x2c8716[_0x9d46('0x49')][_0x9d46('0x4b')]?_0x2c8716[_0x9d46('0x49')]:_0x3a2051[_0x9d46('0x48')];if(!_0x2b67b9[_0x9d46('0x45')][_0x9d46('0x4c')](_0x9d46('0x4d'))){_0x2c8716['limit']=qs[_0x9d46('0x2f')](_0x2b67b9[_0x9d46('0x45')]['limit']);_0x2c8716[_0x9d46('0x2d')]=qs[_0x9d46('0x2d')](_0x2b67b9[_0x9d46('0x45')]['offset']);}_0x2c8716[_0x9d46('0x4e')]=qs['sort'](_0x2b67b9[_0x9d46('0x45')][_0x9d46('0x4f')]);_0x2c8716[_0x9d46('0x50')]=qs['filters'](_[_0x9d46('0x51')](_0x2b67b9[_0x9d46('0x45')],_0x3a2051[_0x9d46('0x52')]),_0x3b714c);if(_0x2b67b9[_0x9d46('0x45')][_0x9d46('0x53')]){_0x2c8716['where']=_[_0x9d46('0x54')](_0x2c8716[_0x9d46('0x50')],{'$or':_[_0x9d46('0x40')](_0x3b714c,function(_0x1f540a){if(_0x1f540a['type']!==_0x9d46('0x55')){var _0xa085df={};_0xa085df[_0x1f540a[_0x9d46('0x3b')]]={'$like':'%'+_0x2b67b9[_0x9d46('0x45')][_0x9d46('0x53')]+'%'};return _0xa085df;}})});}_0x2c8716=_['merge']({},_0x2c8716,_0x2b67b9[_0x9d46('0x56')]);var _0x2958b2={'where':_0x2c8716[_0x9d46('0x50')]};return db[_0x9d46('0x41')]['count'](_0x2958b2)[_0x9d46('0x1f')](function(_0x78bbb5){_0x10bb06[_0x9d46('0x30')]=_0x78bbb5;if(_0x2b67b9[_0x9d46('0x45')][_0x9d46('0x57')]){_0x2c8716[_0x9d46('0x58')]=[{'all':!![]}];}return db[_0x9d46('0x41')][_0x9d46('0x59')](_0x2c8716);})['then'](function(_0x95b4d3){_0x10bb06[_0x9d46('0x5a')]=_0x95b4d3;return _0x10bb06;})['then'](respondWithFilteredResult(_0x552298,_0x2c8716))[_0x9d46('0x29')](handleError(_0x552298,null));};exports['show']=function(_0x364eb6,_0x519718){var _0x10ec1a={'raw':![],'where':{'id':_0x364eb6[_0x9d46('0x5b')]['id']},'include':[{'model':db[_0x9d46('0x3e')],'as':_0x9d46('0x3f')}]},_0x5b620c={};_0x5b620c[_0x9d46('0x48')]=_[_0x9d46('0x46')](db[_0x9d46('0x41')]['rawAttributes']);_0x5b620c[_0x9d46('0x45')]=_[_0x9d46('0x46')](_0x364eb6['query']);_0x5b620c['filters']=_[_0x9d46('0x47')](_0x5b620c['model'],_0x5b620c[_0x9d46('0x45')]);_0x10ec1a[_0x9d46('0x49')]=_[_0x9d46('0x47')](_0x5b620c[_0x9d46('0x48')],qs[_0x9d46('0x4a')](_0x364eb6[_0x9d46('0x45')][_0x9d46('0x4a')]));_0x10ec1a[_0x9d46('0x49')]=_0x10ec1a['attributes'][_0x9d46('0x4b')]?_0x10ec1a[_0x9d46('0x49')]:_0x5b620c[_0x9d46('0x48')];if(_0x364eb6[_0x9d46('0x45')]['includeAll']){_0x10ec1a[_0x9d46('0x58')]=[{'all':!![]}];}_0x10ec1a=_[_0x9d46('0x54')]({},_0x10ec1a,_0x364eb6['options']);return db['SmsAccount']['find'](_0x10ec1a)[_0x9d46('0x1f')](handleEntityNotFound(_0x519718,null))['then'](respondWithResult(_0x519718,null))[_0x9d46('0x29')](handleError(_0x519718,null));};exports[_0x9d46('0x5c')]=function(_0x2d9d46,_0x45ad77){return db[_0x9d46('0x41')][_0x9d46('0x5c')](_0x2d9d46[_0x9d46('0x5d')],{})['then'](function(_0x357628){var _0x273908=_0x2d9d46[_0x9d46('0x5e')]['get']({'plain':!![]});if(!_0x273908)throw new Error(_0x9d46('0x5f'));if(_0x273908['role']==='user'){var _0x4dec4a=_0x357628['get']({'plain':!![]});var _0x3e0268=_0x9d46('0x60');return db[_0x9d46('0x61')]['find']({'where':{'name':_0x3e0268,'userProfileId':_0x273908[_0x9d46('0x62')]},'raw':!![]})[_0x9d46('0x1f')](function(_0x1faee9){if(_0x1faee9&&_0x1faee9['autoAssociation']===0x0){return db[_0x9d46('0x38')][_0x9d46('0x5c')]({'name':_0x4dec4a[_0x9d46('0x3b')],'resourceId':_0x4dec4a['id'],'type':_0x1faee9[_0x9d46('0x3b')],'sectionId':_0x1faee9['id']},{})[_0x9d46('0x1f')](function(){return _0x357628;});}else{return _0x357628;}})[_0x9d46('0x29')](function(_0x3a11ce){logger[_0x9d46('0x24')](_0x9d46('0x63'),_0x3a11ce);throw _0x3a11ce;});}return _0x357628;})[_0x9d46('0x1f')](respondWithResult(_0x45ad77,0xc9))['catch'](handleError(_0x45ad77,null));};exports[_0x9d46('0x35')]=function(_0x554096,_0x2e6876){if(_0x554096[_0x9d46('0x5d')]['id']){delete _0x554096[_0x9d46('0x5d')]['id'];}return db['SmsAccount'][_0x9d46('0x64')]({'where':{'id':_0x554096['params']['id']},'include':[{'model':db[_0x9d46('0x3e')],'as':_0x9d46('0x3f')}]})[_0x9d46('0x1f')](handleEntityNotFound(_0x2e6876,null))[_0x9d46('0x1f')](saveUpdates(_0x554096[_0x9d46('0x5d')],null))[_0x9d46('0x1f')](respondWithResult(_0x2e6876,null))['catch'](handleError(_0x2e6876,null));};exports[_0x9d46('0x36')]=function(_0xd9a94,_0x550074){return db['SmsAccount'][_0x9d46('0x64')]({'where':{'id':_0xd9a94[_0x9d46('0x5b')]['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x550074,null))[_0x9d46('0x1f')](removeEntity(_0x550074,null))['catch'](handleError(_0x550074,null));};exports['describe']=function(_0x43c49a,_0x1f4ba4){return db[_0x9d46('0x41')][_0x9d46('0x65')]()['then'](respondWithResult(_0x1f4ba4,null))[_0x9d46('0x29')](handleError(_0x1f4ba4,null));};exports[_0x9d46('0x66')]=function(_0x5b01fa,_0x1fe090,_0x4e878e){if(_0x5b01fa[_0x9d46('0x5d')]['id']){delete _0x5b01fa['body']['id'];}return db['SmsAccount']['find']({'where':{'id':_0x5b01fa['params']['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1fe090,null))['then'](function(_0x5150dd){if(_0x5150dd){_0x5b01fa[_0x9d46('0x5d')][_0x9d46('0x67')]=_0x5150dd['id'];return db[_0x9d46('0x68')]['create'](_0x5b01fa[_0x9d46('0x5d')]);}})['then'](respondWithResult(_0x1fe090,null))[_0x9d46('0x29')](handleError(_0x1fe090,null));};exports['getDispositions']=function(_0x287d7f,_0x55a72c,_0xf4da0){var _0x2133a2={'raw':![],'where':{}};var _0x2e2c1a={};var _0x1cabb6={'count':0x0,'rows':[]};return db['SmsAccount'][_0x9d46('0x69')]({'where':{'id':_0x287d7f['params']['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x55a72c,null))[_0x9d46('0x1f')](function(_0x274afa){if(_0x274afa){_0x2e2c1a['model']=_['keys'](db[_0x9d46('0x68')][_0x9d46('0x42')]);_0x2e2c1a[_0x9d46('0x45')]=_[_0x9d46('0x46')](_0x287d7f['query']);_0x2e2c1a['filters']=_[_0x9d46('0x47')](_0x2e2c1a[_0x9d46('0x48')],_0x2e2c1a[_0x9d46('0x45')]);_0x2133a2[_0x9d46('0x49')]=_['intersection'](_0x2e2c1a[_0x9d46('0x48')],qs[_0x9d46('0x4a')](_0x287d7f[_0x9d46('0x45')][_0x9d46('0x4a')]));_0x2133a2[_0x9d46('0x49')]=_0x2133a2[_0x9d46('0x49')][_0x9d46('0x4b')]?_0x2133a2['attributes']:_0x2e2c1a[_0x9d46('0x48')];if(!_0x287d7f[_0x9d46('0x45')][_0x9d46('0x4c')](_0x9d46('0x4d'))){_0x2133a2['limit']=qs['limit'](_0x287d7f[_0x9d46('0x45')][_0x9d46('0x2f')]);_0x2133a2[_0x9d46('0x2d')]=qs[_0x9d46('0x2d')](_0x287d7f[_0x9d46('0x45')][_0x9d46('0x2d')]);}_0x2133a2['order']=qs['sort'](_0x287d7f[_0x9d46('0x45')][_0x9d46('0x4f')]);_0x2133a2[_0x9d46('0x50')]=qs[_0x9d46('0x52')](_['pick'](_0x287d7f[_0x9d46('0x45')],_0x2e2c1a[_0x9d46('0x52')]));_0x2133a2[_0x9d46('0x50')][_0x9d46('0x67')]=_0x274afa['id'];if(_0x287d7f['query'][_0x9d46('0x53')]){_0x2133a2[_0x9d46('0x50')]=_[_0x9d46('0x54')](_0x2133a2[_0x9d46('0x50')],{'$or':_[_0x9d46('0x40')](_0x2133a2[_0x9d46('0x49')],function(_0x4a100f){var _0x4086c1={};_0x4086c1[_0x4a100f]={'$like':'%'+_0x287d7f[_0x9d46('0x45')][_0x9d46('0x53')]+'%'};return _0x4086c1;})});}_0x2133a2=_['merge']({},_0x2133a2,_0x287d7f[_0x9d46('0x56')]);return db[_0x9d46('0x68')][_0x9d46('0x30')]({'where':_0x2133a2[_0x9d46('0x50')]})['then'](function(_0x4754c2){_0x1cabb6[_0x9d46('0x30')]=_0x4754c2;if(_0x287d7f['query'][_0x9d46('0x57')]){_0x2133a2['include']=[{'all':!![]}];}return db['Disposition'][_0x9d46('0x59')](_0x2133a2);})[_0x9d46('0x1f')](function(_0x2ff3ed){_0x1cabb6[_0x9d46('0x5a')]=_0x2ff3ed;return _0x1cabb6;});}})['then'](respondWithFilteredResult(_0x55a72c,_0x2133a2))[_0x9d46('0x29')](handleError(_0x55a72c,null));};exports[_0x9d46('0x6a')]=function(_0x5ba9a4,_0x20ea3b,_0x55cc64){return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0x5ba9a4[_0x9d46('0x5b')]['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x20ea3b,null))[_0x9d46('0x1f')](function(_0x32bf75){if(_0x32bf75){return _0x32bf75[_0x9d46('0x6a')](_0x5ba9a4[_0x9d46('0x45')][_0x9d46('0x6b')]);}})[_0x9d46('0x1f')](respondWithStatusCode(_0x20ea3b,null))[_0x9d46('0x29')](handleError(_0x20ea3b,null));};exports[_0x9d46('0x6c')]=function(_0xdd1d0b,_0x2f222d,_0x5491f9){if(_0xdd1d0b[_0x9d46('0x5d')]['id']){delete _0xdd1d0b[_0x9d46('0x5d')]['id'];}return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0xdd1d0b[_0x9d46('0x5b')]['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x2f222d,null))[_0x9d46('0x1f')](function(_0x43713d){if(_0x43713d){_0xdd1d0b[_0x9d46('0x5d')][_0x9d46('0x67')]=_0x43713d['id'];return db[_0x9d46('0x6d')][_0x9d46('0x5c')](_0xdd1d0b[_0x9d46('0x5d')]);}})[_0x9d46('0x1f')](respondWithResult(_0x2f222d,null))['catch'](handleError(_0x2f222d,null));};exports[_0x9d46('0x6e')]=function(_0xc48405,_0x40c5e2,_0x4e00bd){var _0x1fa9be={'raw':![],'where':{}};var _0x3c7d95={};var _0x5873f0={'count':0x0,'rows':[]};return db[_0x9d46('0x41')][_0x9d46('0x69')]({'where':{'id':_0xc48405[_0x9d46('0x5b')]['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x40c5e2,null))[_0x9d46('0x1f')](function(_0x236d91){if(_0x236d91){_0x3c7d95[_0x9d46('0x48')]=_[_0x9d46('0x46')](db[_0x9d46('0x6d')][_0x9d46('0x42')]);_0x3c7d95['query']=_['keys'](_0xc48405[_0x9d46('0x45')]);_0x3c7d95[_0x9d46('0x52')]=_[_0x9d46('0x47')](_0x3c7d95[_0x9d46('0x48')],_0x3c7d95[_0x9d46('0x45')]);_0x1fa9be[_0x9d46('0x49')]=_[_0x9d46('0x47')](_0x3c7d95['model'],qs[_0x9d46('0x4a')](_0xc48405[_0x9d46('0x45')][_0x9d46('0x4a')]));_0x1fa9be[_0x9d46('0x49')]=_0x1fa9be[_0x9d46('0x49')]['length']?_0x1fa9be[_0x9d46('0x49')]:_0x3c7d95[_0x9d46('0x48')];if(!_0xc48405[_0x9d46('0x45')][_0x9d46('0x4c')](_0x9d46('0x4d'))){_0x1fa9be[_0x9d46('0x2f')]=qs[_0x9d46('0x2f')](_0xc48405[_0x9d46('0x45')]['limit']);_0x1fa9be[_0x9d46('0x2d')]=qs['offset'](_0xc48405['query'][_0x9d46('0x2d')]);}_0x1fa9be[_0x9d46('0x4e')]=qs['sort'](_0xc48405[_0x9d46('0x45')][_0x9d46('0x4f')]);_0x1fa9be[_0x9d46('0x50')]=qs[_0x9d46('0x52')](_[_0x9d46('0x51')](_0xc48405[_0x9d46('0x45')],_0x3c7d95[_0x9d46('0x52')]));_0x1fa9be['where'][_0x9d46('0x67')]=_0x236d91['id'];if(_0xc48405['query']['filter']){_0x1fa9be[_0x9d46('0x50')]=_[_0x9d46('0x54')](_0x1fa9be[_0x9d46('0x50')],{'$or':_[_0x9d46('0x40')](_0x1fa9be[_0x9d46('0x49')],function(_0x131d0a){var _0x4b3b37={};_0x4b3b37[_0x131d0a]={'$like':'%'+_0xc48405[_0x9d46('0x45')][_0x9d46('0x53')]+'%'};return _0x4b3b37;})});}_0x1fa9be=_[_0x9d46('0x54')]({},_0x1fa9be,_0xc48405[_0x9d46('0x56')]);return db[_0x9d46('0x6d')][_0x9d46('0x30')]({'where':_0x1fa9be['where']})[_0x9d46('0x1f')](function(_0x5ebd5f){_0x5873f0['count']=_0x5ebd5f;if(_0xc48405['query']['includeAll']){_0x1fa9be[_0x9d46('0x58')]=[{'all':!![]}];}return db[_0x9d46('0x6d')][_0x9d46('0x59')](_0x1fa9be);})[_0x9d46('0x1f')](function(_0x8e6531){_0x5873f0[_0x9d46('0x5a')]=_0x8e6531;return _0x5873f0;});}})[_0x9d46('0x1f')](respondWithFilteredResult(_0x40c5e2,_0x1fa9be))[_0x9d46('0x29')](handleError(_0x40c5e2,null));};exports[_0x9d46('0x6f')]=function(_0x4c0e4a,_0x48c6ce,_0x34be2b){return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0x4c0e4a[_0x9d46('0x5b')]['id']}})['then'](handleEntityNotFound(_0x48c6ce,null))[_0x9d46('0x1f')](function(_0x183088){if(_0x183088){return _0x183088['removeAnswers'](_0x4c0e4a[_0x9d46('0x45')][_0x9d46('0x6b')]);}})[_0x9d46('0x1f')](respondWithStatusCode(_0x48c6ce,null))[_0x9d46('0x29')](handleError(_0x48c6ce,null));};exports[_0x9d46('0x70')]=function(_0x32d59a,_0x1cce9b,_0x37b425){var _0x54ddfb={'channel':'sms'};var _0x2bde1d=[];var _0x5f3d08=[];var _0x455be9={};return db['SmsAccount'][_0x9d46('0x64')]({'where':{'id':_0x32d59a[_0x9d46('0x5b')]['id']},'include':[{'model':db[_0x9d46('0x71')],'as':'Applications'}]})[_0x9d46('0x1f')](handleEntityNotFound(_0x1cce9b,null))['then'](function(_0x56ca75){_0x54ddfb[_0x9d46('0x72')]=_0x56ca75;_0x54ddfb[_0x9d46('0x73')]=_['orderBy'](_0x56ca75[_0x9d46('0x74')],[_0x9d46('0x75')],[_0x9d46('0x76')]);if(_0x54ddfb[_0x9d46('0x72')]['Applications']){delete _0x54ddfb['account'][_0x9d46('0x74')];}return db['CmContact'][_0x9d46('0x65')]();})[_0x9d46('0x1f')](function(_0x5e1e25){if(!_0x5e1e25){throw new db['Sequelize'][(_0x9d46('0x77'))](_0x9d46('0x78'));}_0x2bde1d=_[_0x9d46('0x79')](_[_0x9d46('0x46')](_0x5e1e25),['createdAt',_0x9d46('0x7a')]);_0x5f3d08=_['difference'](_[_0x9d46('0x46')](_0x5e1e25),['createdAt',_0x9d46('0x7a'),_0x9d46('0x7b'),'ListId']);_0x54ddfb[_0x9d46('0x5d')]={'mapKey':'mobile'};if(_0x54ddfb[_0x9d46('0x72')]['type']){switch(_0x54ddfb[_0x9d46('0x72')][_0x9d46('0x43')]){case'twilio':_0x54ddfb[_0x9d46('0x5d')]['from']=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x7c')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x7d')];_0x54ddfb['body'][_0x9d46('0x7e')]=_0x32d59a['body'][_0x9d46('0x7f')];break;case _0x9d46('0x80'):_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')]='+'+_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x82')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x83')];break;case'connectel':_0x54ddfb[_0x9d46('0x5d')]['from']=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x81')];_0x54ddfb['body']['body']=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x26')];break;case'clicksend':_0x54ddfb['body'][_0x9d46('0x81')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x81')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x5d')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x7e')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x84')];break;case _0x9d46('0x85'):_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')]=_0x32d59a[_0x9d46('0x5d')]['From'];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x86')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x7e')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x87')];break;case _0x9d46('0x88'):_0x54ddfb['body'][_0x9d46('0x81')]='+'+_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x89')][0x0][_0x9d46('0x81')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')]['results'][0x0][_0x9d46('0x83')];_0x54ddfb[_0x9d46('0x5d')]['messageId']=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x89')][0x0][_0x9d46('0x7e')];break;case _0x9d46('0x8a'):_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x8b')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x8c')]['message'];break;case _0x9d46('0x8d'):_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')]=_0x32d59a[_0x9d46('0x5d')]['fromNumber'];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')]['text'];_0x54ddfb['body'][_0x9d46('0x7e')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x8e')];break;case'bandwidth':_0x54ddfb['body']['messageId']=_0x32d59a[_0x9d46('0x5d')][0x0][_0x9d46('0x26')]['id'];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')]=_0x32d59a[_0x9d46('0x5d')][0x0][_0x9d46('0x26')][_0x9d46('0x81')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][0x0]['message'][_0x9d46('0x83')];break;case _0x9d46('0x8f'):_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')]=_0x32d59a['body'][_0x9d46('0x81')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')]=_0x32d59a[_0x9d46('0x5d')][_0x9d46('0x26')];_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x7e')]=_0x32d59a[_0x9d46('0x5d')]['refid'];break;}}if(_0x54ddfb[_0x9d46('0x5d')]['id']){delete _0x54ddfb['body']['id'];}if(_['isNil'](_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x81')])){throw new db[(_0x9d46('0x90'))][(_0x9d46('0x77'))](_0x9d46('0x91'));}if(_[_0x9d46('0x92')](_0x54ddfb[_0x9d46('0x5d')]['body'])||_0x54ddfb['body'][_0x9d46('0x5d')]===''){throw new db['Sequelize'][(_0x9d46('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x54ddfb['body'][_0x9d46('0x93')])){throw new db[(_0x9d46('0x90'))][(_0x9d46('0x77'))](_0x9d46('0x94')+_0x5f3d08);}if(!_[_0x9d46('0x95')](_0x5f3d08,_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x93')])){throw new db[(_0x9d46('0x90'))][(_0x9d46('0x77'))](_0x9d46('0x96')+_0x5f3d08);}_0x455be9[_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x93')]]=_0x54ddfb[_0x9d46('0x5d')]['from'];return db[_0x9d46('0x97')][_0x9d46('0x64')]({'where':{'id':_0x54ddfb['account'][_0x9d46('0x98')]},'include':[{'model':db[_0x9d46('0x99')],'as':'Contacts','where':_0x455be9,'limit':0x1,'order':[[_0x9d46('0x7a'),_0x9d46('0x9a')]]}]});})[_0x9d46('0x1f')](handleEntityNotFound(_0x1cce9b,null))['then'](function(_0x11014e){if(_0x11014e){_0x54ddfb[_0x9d46('0x9b')]=_[_0x9d46('0x9c')](_0x11014e,['Contacts']);if(_0x11014e['Contacts'][_0x9d46('0x4b')]){return _0x11014e[_0x9d46('0x9d')][0x0];}var _0x5f30a7=_[_0x9d46('0x16')](_0x54ddfb['body'],{'firstName':_0x54ddfb['body'][_0x9d46('0x81')],'ListId':_0x11014e['id']});_0x5f30a7[_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x93')]]=_0x54ddfb['body'][_0x9d46('0x81')];return db[_0x9d46('0x99')][_0x9d46('0x5c')](_0x5f30a7,{'fields':_0x2bde1d,'raw':!![]});}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1cce9b,null))[_0x9d46('0x1f')](function(_0x4503e3){if(_0x4503e3){_0x54ddfb['contact']=_0x4503e3;var _0x18523b={'ContactId':_0x4503e3['id'],'phone':_0x54ddfb[_0x9d46('0x5d')]['from'],'SmsAccountId':_0x32d59a['params']['id']};var _0x57b90d={'ContactId':_0x4503e3['id'],'SmsAccountId':_0x32d59a['params']['id'],'closed':![]};return db['SmsInteraction'][_0x9d46('0x64')]({'where':_0x57b90d})[_0x9d46('0x1f')](function(_0x356eb9){if(_0x356eb9){return[_0x356eb9,![]];}return db[_0x9d46('0x9e')][_0x9d46('0x5c')](_0x18523b)[_0x9d46('0x1f')](function(_0x285416){return[_0x285416,!![]];});});}})[_0x9d46('0x9f')](function(_0xb25d2,_0x50138e){_0x54ddfb[_0x9d46('0xa0')]=_0xb25d2[_0x9d46('0x37')]({'plain':!![]});_0x54ddfb['interaction']['created']=![];if(_0x50138e){if(_0x54ddfb[_0x9d46('0x72')][_0x9d46('0xa1')]){_0x54ddfb[_0x9d46('0x73')][_0x9d46('0xa2')]({'id':0x0,'priority':_0x54ddfb[_0x9d46('0x73')]['length']+0x1,'app':_0x9d46('0xa3'),'appdata':_0x9d46('0xa4'),'interval':_0x9d46('0xa5')});}_0x54ddfb[_0x9d46('0xa0')][_0x9d46('0xa6')]=!![];}return db[_0x9d46('0xa7')][_0x9d46('0x5c')]({'phone':_0x54ddfb['body'][_0x9d46('0x81')],'messageId':_0x54ddfb[_0x9d46('0x5d')]['messageId'],'body':_0x54ddfb[_0x9d46('0x5d')][_0x9d46('0x5d')],'SmsAccountId':_0x32d59a[_0x9d46('0x5b')]['id'],'SmsInteractionId':_0xb25d2['id'],'direction':'in','ContactId':_0xb25d2[_0x9d46('0xa8')],'AttachmentId':_0x54ddfb['body'][_0x9d46('0xa9')]});})[_0x9d46('0x1f')](function(_0x410e78){_0x54ddfb['message']=_0x410e78;if(_0x54ddfb[_0x9d46('0xa0')][_0x9d46('0xaa')]){return db['User'][_0x9d46('0x64')]({'attributes':['id',_0x9d46('0x3b')],'where':{'id':_0x54ddfb[_0x9d46('0xa0')][_0x9d46('0xaa')]}})['then'](function(_0x106420){if(_0x106420){_0x54ddfb[_0x9d46('0x73')][_0x9d46('0xab')]({'id':0x0,'priority':0x0,'app':_0x9d46('0xac'),'appdata':_0x106420[_0x9d46('0x3b')]+','+(_0x54ddfb[_0x9d46('0x72')]['waitForTheAssignedAgent']||0xa),'interval':_0x9d46('0xa5')});}return respondWithRpcPromise('Start',_0x9d46('0xad'),_0x54ddfb);});}return respondWithRpcPromise(_0x9d46('0xae'),'startRouting',_0x54ddfb);})[_0x9d46('0x1f')](function(_0x25e933){if(_0x25e933){var _0x4e1e6f=0xc8;var _0x5c9ffe='receiveMessage';logger[_0x9d46('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5c9ffe,_0x4e1e6f,_0x9d46('0xaf'));logger[_0x9d46('0x21')](_0x9d46('0xb0'),_0x5c9ffe,_0x4e1e6f,'entity\x20found',JSON[_0x9d46('0x23')](_0x25e933));if(_0x54ddfb[_0x9d46('0x72')][_0x9d46('0x43')]===_0x9d46('0xb1')){return _0x1cce9b[_0x9d46('0x2b')](_0x4e1e6f)[_0x9d46('0x31')](_0x9d46('0xb2'),_0x9d46('0xb3'))[_0x9d46('0x3c')](_0x9d46('0xb4'));}else{return _0x1cce9b['status'](_0x4e1e6f)['json'](_0x25e933);}}})[_0x9d46('0x29')](handleError(_0x1cce9b,null));};exports['addApplications']=function(_0x5654c1,_0x3623f8){var _0x1965fe=_0x5654c1[_0x9d46('0x5b')]['id'];var _0x1f30ea=_0x5654c1[_0x9d46('0x5d')];var _0x2ccfc4=0xc8;var _0x596d2a=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x9d46('0xb5')]['Transaction'][_0x9d46('0xb6')]['READ_COMMITTED']},function(_0x52d2c4){return db[_0x9d46('0x41')]['findOne']({'where':{'id':_0x1965fe},'transaction':_0x52d2c4})[_0x9d46('0x1f')](function(_0x2e7748){if(_0x2e7748){return db[_0x9d46('0x71')][_0x9d46('0x36')]({'where':{'SmsAccountId':_0x1965fe},'transaction':_0x52d2c4})[_0x9d46('0x1f')](function(){var _0x534f77=_['map'](_0x1f30ea,function(_0x57c0e6){_0x57c0e6[_0x9d46('0x67')]=_0x1965fe;return _0x57c0e6;});return db[_0x9d46('0x71')][_0x9d46('0xb7')](_0x534f77,{'transaction':_0x52d2c4});});}else{_0x2ccfc4=0x194;_0x596d2a=[];}});})[_0x9d46('0x1f')](function(){if(_0x2ccfc4!==0x194){return db[_0x9d46('0x71')][_0x9d46('0xb8')]({'where':{'SmsAccountId':_0x1965fe},'order':_0x9d46('0x75')})[_0x9d46('0x1f')](function(_0xf9610b){_0x596d2a=_0xf9610b;});}})[_0x9d46('0x29')](function(_0x38794b){_0x2ccfc4=0x1f4;logger[_0x9d46('0x24')](_0x38794b[_0x9d46('0x3a')]);if(_0x38794b['name']){delete _0x38794b[_0x9d46('0x3b')];}_0x596d2a=_0x38794b;})[_0x9d46('0xb9')](function(){if(_0x596d2a===null){_0x3623f8[_0x9d46('0x2a')](_0x2ccfc4);}else{if(_0x2ccfc4===0x1f4){_0x3623f8[_0x9d46('0x2b')](_0x2ccfc4)[_0x9d46('0x3c')](_0x596d2a);}else{_0x3623f8[_0x9d46('0x2b')](_0x2ccfc4)['json'](_0x596d2a);}}});};exports[_0x9d46('0xba')]=function(_0x38dd1a,_0x33b253,_0x24cce3){var _0x2d3e26={};var _0x52cce6={};var _0x1f42aa;var _0x33da10;return db['SmsAccount'][_0x9d46('0x69')]({'where':{'id':_0x38dd1a[_0x9d46('0x5b')]['id']}})['then'](handleEntityNotFound(_0x33b253,null))[_0x9d46('0x1f')](function(_0x2aeead){if(_0x2aeead){_0x1f42aa=_0x2aeead;_0x52cce6['model']=_[_0x9d46('0x46')](db[_0x9d46('0x71')][_0x9d46('0x42')]);_0x52cce6[_0x9d46('0x45')]=_[_0x9d46('0x46')](_0x38dd1a[_0x9d46('0x45')]);_0x52cce6[_0x9d46('0x52')]=_[_0x9d46('0x47')](_0x52cce6[_0x9d46('0x48')],_0x52cce6['query']);_0x2d3e26[_0x9d46('0x49')]=_[_0x9d46('0x47')](_0x52cce6[_0x9d46('0x48')],qs[_0x9d46('0x4a')](_0x38dd1a[_0x9d46('0x45')][_0x9d46('0x4a')]));_0x2d3e26[_0x9d46('0x49')]=_0x2d3e26[_0x9d46('0x49')][_0x9d46('0x4b')]?_0x2d3e26[_0x9d46('0x49')]:_0x52cce6[_0x9d46('0x48')];_0x2d3e26[_0x9d46('0x4e')]=qs['sort'](_0x38dd1a[_0x9d46('0x45')][_0x9d46('0x4f')]);_0x2d3e26[_0x9d46('0x50')]=qs['filters'](_['pick'](_0x38dd1a['query'],_0x52cce6[_0x9d46('0x52')]));if(_0x38dd1a[_0x9d46('0x45')]['filter']){_0x2d3e26[_0x9d46('0x50')]=_[_0x9d46('0x54')](_0x2d3e26[_0x9d46('0x50')],{'$or':_[_0x9d46('0x40')](_0x2d3e26[_0x9d46('0x49')],function(_0x251ded){var _0x528169={};_0x528169[_0x251ded]={'$like':'%'+_0x38dd1a[_0x9d46('0x45')][_0x9d46('0x53')]+'%'};return _0x528169;})});}_0x2d3e26=_[_0x9d46('0x54')]({},_0x2d3e26,_0x38dd1a['options']);return _0x1f42aa[_0x9d46('0xba')](_0x2d3e26);}})[_0x9d46('0x1f')](function(_0x34e418){if(_0x34e418){_0x33da10=_0x34e418['length'];if(!_0x38dd1a['query']['hasOwnProperty'](_0x9d46('0x4d'))){_0x2d3e26[_0x9d46('0x2f')]=qs[_0x9d46('0x2f')](_0x38dd1a[_0x9d46('0x45')]['limit']);_0x2d3e26[_0x9d46('0x2d')]=qs[_0x9d46('0x2d')](_0x38dd1a[_0x9d46('0x45')][_0x9d46('0x2d')]);}return _0x1f42aa['getApplications'](_0x2d3e26);}})[_0x9d46('0x1f')](function(_0x10ec0a){if(_0x10ec0a){return _0x10ec0a?{'count':_0x33da10,'rows':_0x10ec0a}:null;}})[_0x9d46('0x1f')](respondWithResult(_0x33b253,null))[_0x9d46('0x29')](handleError(_0x33b253,null));};exports[_0x9d46('0xbb')]=function(_0x12a6f4,_0x4d54f8,_0x265b53){var _0x41ca76={'raw':![],'where':{}};var _0x58659f={};var _0x272e80={'count':0x0,'rows':[]};return db[_0x9d46('0x41')][_0x9d46('0x69')]({'where':{'id':_0x12a6f4[_0x9d46('0x5b')]['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x4d54f8,null))['then'](function(_0x7f0092){if(_0x7f0092){_0x58659f[_0x9d46('0x48')]=_['keys'](db['SmsInteraction'][_0x9d46('0x42')]);_0x58659f[_0x9d46('0x45')]=_[_0x9d46('0x46')](_0x12a6f4[_0x9d46('0x45')]);_0x58659f[_0x9d46('0x52')]=_['intersection'](_0x58659f[_0x9d46('0x48')],_0x58659f[_0x9d46('0x45')]);_0x41ca76['attributes']=_[_0x9d46('0x47')](_0x58659f[_0x9d46('0x48')],qs[_0x9d46('0x4a')](_0x12a6f4['query'][_0x9d46('0x4a')]));_0x41ca76[_0x9d46('0x49')]=_0x41ca76[_0x9d46('0x49')][_0x9d46('0x4b')]?_0x41ca76[_0x9d46('0x49')]:_0x58659f[_0x9d46('0x48')];if(!_0x12a6f4[_0x9d46('0x45')][_0x9d46('0x4c')]('nolimit')){_0x41ca76['limit']=qs['limit'](_0x12a6f4[_0x9d46('0x45')][_0x9d46('0x2f')]);_0x41ca76[_0x9d46('0x2d')]=qs[_0x9d46('0x2d')](_0x12a6f4[_0x9d46('0x45')][_0x9d46('0x2d')]);}_0x41ca76['order']=qs[_0x9d46('0x4f')](_0x12a6f4[_0x9d46('0x45')]['sort']);_0x41ca76[_0x9d46('0x50')]=qs['filters'](_[_0x9d46('0x51')](_0x12a6f4[_0x9d46('0x45')],_0x58659f[_0x9d46('0x52')]));_0x41ca76[_0x9d46('0x50')][_0x9d46('0x67')]=_0x7f0092['id'];if(_0x12a6f4['query'][_0x9d46('0x53')]){_0x41ca76['where']=_[_0x9d46('0x54')](_0x41ca76[_0x9d46('0x50')],{'$or':_[_0x9d46('0x40')](_0x41ca76[_0x9d46('0x49')],function(_0xe25519){var _0x4d0a81={};_0x4d0a81[_0xe25519]={'$like':'%'+_0x12a6f4[_0x9d46('0x45')][_0x9d46('0x53')]+'%'};return _0x4d0a81;})});}_0x41ca76=_[_0x9d46('0x54')]({},_0x41ca76,_0x12a6f4[_0x9d46('0x56')]);return db[_0x9d46('0x9e')][_0x9d46('0x30')]({'where':_0x41ca76[_0x9d46('0x50')]})[_0x9d46('0x1f')](function(_0x54aaee){_0x272e80[_0x9d46('0x30')]=_0x54aaee;if(_0x12a6f4['query'][_0x9d46('0x57')]){_0x41ca76[_0x9d46('0x58')]=[{'model':db[_0x9d46('0x99')],'as':_0x9d46('0xbc'),'required':![]},{'model':db[_0x9d46('0xbd')],'as':_0x9d46('0xbe'),'attributes':[_0x9d46('0x3b'),_0x9d46('0xbf'),_0x9d46('0xc0')],'required':![]},{'model':db[_0x9d46('0xc1')],'as':_0x9d46('0xc2'),'attributes':['id','name',_0x9d46('0xc3')],'where':_0x12a6f4['query'][_0x9d46('0xc4')]?{'id':_0x12a6f4[_0x9d46('0x45')][_0x9d46('0xc4')]}:undefined,'required':_0x12a6f4[_0x9d46('0x45')][_0x9d46('0xc4')]?!![]:![]}];}return db[_0x9d46('0x9e')][_0x9d46('0x59')](_0x41ca76);})[_0x9d46('0x1f')](function(_0x50be0d){_0x272e80[_0x9d46('0x5a')]=_0x50be0d;return _0x272e80;});}})[_0x9d46('0x1f')](respondWithFilteredResult(_0x4d54f8,_0x41ca76))[_0x9d46('0x29')](handleError(_0x4d54f8,null));};exports['send']=function(_0x40e800,_0x1bf2ed,_0x208c37){var _0x13733c,_0x4d1059,_0x458b14;if(_['isNil'](_0x40e800[_0x9d46('0x5d')]['body'])||_0x40e800[_0x9d46('0x5d')][_0x9d46('0x5d')]===''){throw new db[(_0x9d46('0x90'))][(_0x9d46('0x77'))](_0x9d46('0xc5'));}if(_[_0x9d46('0x92')](_0x40e800[_0x9d46('0x5d')]['to'])){throw new db[(_0x9d46('0x90'))][(_0x9d46('0x77'))]('to\x20is\x20mandatory');}_0x13733c=_0x40e800[_0x9d46('0x5d')]['to'];return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0x40e800[_0x9d46('0x5b')]['id']},'include':[{'model':db['CmList'],'as':_0x9d46('0xc6'),'include':[{'model':db['CmContact'],'as':_0x9d46('0x9d'),'where':{'mobile':_0x13733c},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x9d46('0x1f')](handleEntityNotFound(_0x1bf2ed,null))['then'](function(_0x145f86){if(_0x145f86&&_0x145f86[_0x9d46('0xc6')]){_0x4d1059=_0x145f86[_0x9d46('0x37')]({'plain':!![]});if(_0x4d1059[_0x9d46('0xc6')]&&_0x4d1059[_0x9d46('0xc6')][_0x9d46('0x9d')][_0x9d46('0x4b')]){return _0x4d1059[_0x9d46('0xc6')][_0x9d46('0x9d')][0x0];}return db[_0x9d46('0x99')][_0x9d46('0x5c')](_[_0x9d46('0x16')](_0x40e800[_0x9d46('0x5d')],{'firstName':_0x13733c,'mobile':_0x13733c,'phone':_0x13733c,'ListId':_0x4d1059[_0x9d46('0x98')]}));}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1bf2ed,null))[_0x9d46('0x1f')](function(_0x205651){if(_0x205651){_0x458b14=_0x205651;return db['SmsInteraction'][_0x9d46('0x64')]({'where':{'ContactId':_0x458b14['id'],'closed':![],'SmsAccountId':_0x4d1059['id']}})[_0x9d46('0x1f')](function(_0x4a3d25){if(_0x4a3d25){return[_0x4a3d25,![]];}return db[_0x9d46('0x9e')][_0x9d46('0x5c')]({'UserId':_0x40e800['user']['id'],'ContactId':_0x458b14['id'],'SmsAccountId':_0x4d1059['id'],'phone':_0x13733c,'firstMsgDirection':_0x9d46('0xc7'),'Messages':[_['merge'](_0x40e800[_0x9d46('0x5d')],{'read':![],'body':_0x40e800[_0x9d46('0x5d')][_0x9d46('0x5d')],'phone':_0x13733c,'SmsAccountId':_0x4d1059['id'],'UserId':_0x40e800['user']['id'],'ContactId':_0x458b14['id']})]},{'include':[{'model':db[_0x9d46('0xa7')],'as':_0x9d46('0xc8')}]})[_0x9d46('0x1f')](function(_0x17a8cc){return[_0x17a8cc,!![]];});});}})[_0x9d46('0x9f')](function(_0x311c61,_0xb0e70f){if(_0xb0e70f){return _0x311c61;}return db[_0x9d46('0xa7')]['create'](_[_0x9d46('0x54')](_0x40e800[_0x9d46('0x5d')],{'read':![],'body':_0x40e800[_0x9d46('0x5d')][_0x9d46('0x5d')],'phone':_0x13733c,'SmsAccountId':_0x4d1059['id'],'SmsInteractionId':_0x311c61['id'],'UserId':_0x40e800[_0x9d46('0x5e')]['id'],'ContactId':_0x458b14['id']}))[_0x9d46('0x1f')](function(_0x3fe4e9){_0x311c61[_0x9d46('0xc9')][_0x9d46('0xc8')]=[];_0x311c61['dataValues'][_0x9d46('0xc8')][_0x9d46('0xa2')](_0x3fe4e9[_0x9d46('0xc9')]);return _0x311c61;});})[_0x9d46('0x1f')](respondWithResult(_0x1bf2ed,null))[_0x9d46('0x29')](handleError(_0x1bf2ed,null));};exports['status']=function(_0x2daff7,_0x1b6f1e,_0xc71b28){if(_0x2daff7[_0x9d46('0x5d')]['id']){delete _0x2daff7['body']['id'];}var _0x411c7b,_0x3c9c7e,_0xfd4d39;return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0x2daff7[_0x9d46('0x5b')]['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1b6f1e,null))[_0x9d46('0x1f')](function(_0x2870fd){if(_0x2870fd){_0xfd4d39=_0x2870fd;logger[_0x9d46('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x2870fd[_0x9d46('0x43')],util[_0x9d46('0xca')](_0x2daff7[_0x9d46('0x5d')],{'showHidden':![],'depth':null}));switch(_0x2870fd[_0x9d46('0x43')]){case _0x9d46('0x80'):if(_0x2daff7[_0x9d46('0x5d')][_0x9d46('0xcb')]&&_0x2daff7[_0x9d46('0x5d')]['status']){_0x3c9c7e=_0x2daff7[_0x9d46('0x5d')][_0x9d46('0x2b')];return db[_0x9d46('0xa7')][_0x9d46('0x64')]({'where':{'messageId':_0x2daff7[_0x9d46('0x5d')]['skebby_dispatch_id']}});}break;case'connectel':if(_0x2daff7['body']['requestid']&&_0x2daff7['body'][_0x9d46('0xcc')]){_0x3c9c7e=_0x2daff7['body'][_0x9d46('0xcc')];return db[_0x9d46('0xa7')][_0x9d46('0x64')]({'where':{'messageId':_0x2daff7['body'][_0x9d46('0xcd')]}});}break;case _0x9d46('0xce'):if(_0x2daff7['body'][_0x9d46('0x84')]&&_0x2daff7[_0x9d46('0x5d')][_0x9d46('0xcf')]){_0x3c9c7e=_0x2daff7[_0x9d46('0x5d')]['status_code'];return db[_0x9d46('0xa7')][_0x9d46('0x64')]({'where':{'messageId':_0x2daff7[_0x9d46('0x5d')]['message_id']}});}break;case _0x9d46('0x88'):var _0x402024=_0x2daff7[_0x9d46('0x5d')]['results'][0x0];if(_0x402024['messageId']&&_0x402024[_0x9d46('0x2b')]['groupName']==='DELIVERED'){_0x3c9c7e=_0x402024['status'][_0x9d46('0xd0')];return db[_0x9d46('0xa7')]['find']({'where':{'messageId':_0x402024[_0x9d46('0x7e')]}});}break;case _0x9d46('0x8d'):if(_0x2daff7[_0x9d46('0x5d')][_0x9d46('0x7e')]&&_0x2daff7[_0x9d46('0x5d')]['status']){_0x3c9c7e=_0x2daff7[_0x9d46('0x5d')]['status'];return db[_0x9d46('0xa7')][_0x9d46('0x64')]({'where':{'messageId':_0x2daff7[_0x9d46('0x5d')][_0x9d46('0x7e')]}});}break;case'bandwidth':if(_0x2daff7[_0x9d46('0x5d')][0x0][_0x9d46('0x26')]['id']){_0x3c9c7e=_0x2daff7[_0x9d46('0x5d')][0x0][_0x9d46('0x43')];return db[_0x9d46('0xa7')][_0x9d46('0x64')]({'where':{'messageId':_0x2daff7['body'][0x0][_0x9d46('0x26')]['id']}});}break;case _0x9d46('0x8f'):if(_0x2daff7[_0x9d46('0x5d')]['redif']&&_0x2daff7[_0x9d46('0x5d')][_0x9d46('0x2b')]){_0x3c9c7e=_0x2daff7[_0x9d46('0x5d')][_0x9d46('0x2b')];return db[_0x9d46('0xa7')][_0x9d46('0x64')]({'where':{'messageId':_0x2daff7[_0x9d46('0x5d')][_0x9d46('0xd1')]}});}break;}}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1b6f1e,null))[_0x9d46('0x1f')](function(_0x25d960){if(_0x25d960){_0x411c7b=_0x25d960;switch(_0xfd4d39[_0x9d46('0x43')]){case _0x9d46('0x80'):if(_0x3c9c7e===_0x9d46('0xd2')){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),'skebby',util[_0x9d46('0xca')](_0x2daff7[_0x9d46('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x9d46('0xd4'):if(_0x3c9c7e==='1'){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),_0x9d46('0x80'),util[_0x9d46('0xca')](_0x2daff7['body'],{'showHidden':![],'depth':null}));}break;case _0x9d46('0xce'):if(!_0x2daff7[_0x9d46('0x5d')][_0x9d46('0xd5')]&&_0x3c9c7e>=0xc8&&_0x3c9c7e<=0xce){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),_0x9d46('0xce'),util[_0x9d46('0xca')](_0x2daff7[_0x9d46('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x9d46('0x88'):var _0x15e28f=_0x2daff7[_0x9d46('0x5d')][_0x9d46('0x89')][0x0];if(_0x15e28f['status'][_0x9d46('0xd0')]==='DELIVERED'){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),_0x9d46('0x88'),util[_0x9d46('0xca')](_0x2daff7['body'],{'showHidden':![],'depth':null}));}break;case _0x9d46('0x8d'):if(_0x3c9c7e=='DELIVERED_TO_GATEWAY'||_0x3c9c7e==_0x9d46('0xd6')){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),_0x9d46('0x8d'),util[_0x9d46('0xca')](_0x2daff7[_0x9d46('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x9d46('0xd7'):if(_0x3c9c7e==_0x9d46('0xd8')){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),'bandwidth',util[_0x9d46('0xca')](_0x2daff7[_0x9d46('0x5d')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x3c9c7e===_0x9d46('0xd9')||_0x3c9c7e==='ACCEPTD'){return _0x411c7b[_0x9d46('0x35')]({'read':!![]});}else{logger['error'](_0x9d46('0xd3'),_0x9d46('0x2b'),'intelepeer',util['inspect'](_0x2daff7[_0x9d46('0x5d')],{'showHidden':![],'depth':null}));}break;}return _0x411c7b;}})[_0x9d46('0x1f')](respondWithResult(_0x1b6f1e,null))['catch'](handleError(_0x1b6f1e,null));};exports[_0x9d46('0xda')]=function(_0x39f398,_0x1ac65c,_0x58ce92){var _0x3996fa,_0x8f0b4,_0x3391b7;return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0x39f398[_0x9d46('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1ac65c,null))[_0x9d46('0x1f')](function(_0x32c6eb){if(_0x32c6eb){_0x3391b7=_0x32c6eb;logger[_0x9d46('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x9d46('0x2b'),_0x9d46('0xdb'),_0x32c6eb['type'],util['inspect'](_0x39f398['query'],{'showHidden':![],'depth':null}));switch(_0x32c6eb[_0x9d46('0x43')]){case _0x9d46('0x8a'):if(_0x39f398[_0x9d46('0x45')][_0x9d46('0xdc')]&&_0x39f398[_0x9d46('0x45')][_0x9d46('0xdd')]){_0x8f0b4=_0x39f398['query'][_0x9d46('0xdd')];return db['SmsMessage'][_0x9d46('0x64')]({'where':{'messageId':_0x39f398['query'][_0x9d46('0xdc')]}});}break;}}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1ac65c,null))[_0x9d46('0x1f')](function(_0x35e27f){if(_0x35e27f){_0x3996fa=_0x35e27f;switch(_0x3391b7['type']){case _0x9d46('0x8a'):if(_0x8f0b4==='2'||_0x8f0b4==='6'){return _0x3996fa[_0x9d46('0x35')]({'read':!![]});}else{logger[_0x9d46('0x24')](_0x9d46('0xd3'),_0x9d46('0x2b'),_0x9d46('0x8a'),util[_0x9d46('0xca')](_0x39f398['query'],{'showHidden':![],'depth':null}));};break;}return _0x3996fa;}})[_0x9d46('0x1f')](respondWithResult(_0x1ac65c,null))[_0x9d46('0x29')](handleError(_0x1ac65c,null));};exports['addAgents']=function(_0x4817f0,_0x10019f,_0x42985f){return db[_0x9d46('0x41')][_0x9d46('0x64')]({'where':{'id':_0x4817f0['params']['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x10019f,null))['then'](function(_0x4ce66d){if(_0x4ce66d){return _0x4ce66d[_0x9d46('0xde')](_0x4817f0[_0x9d46('0x5d')][_0x9d46('0x6b')],_[_0x9d46('0x9c')](_0x4817f0[_0x9d46('0x5d')],[_0x9d46('0x6b'),'id'])||{})[_0x9d46('0x9f')](function(_0x49aeb3){for(var _0x1205a0=0x0;_0x1205a0<_0x4817f0[_0x9d46('0x5d')][_0x9d46('0x6b')][_0x9d46('0x4b')];_0x1205a0+=0x1){socket[_0x9d46('0xdf')](_0x9d46('0xe0'),{'UserId':Number(_0x4817f0[_0x9d46('0x5d')][_0x9d46('0x6b')][_0x1205a0]),'SmsAccountId':Number(_0x4817f0['params']['id'])});}return _0x49aeb3;});}})[_0x9d46('0x1f')](respondWithResult(_0x10019f,null))[_0x9d46('0x29')](handleError(_0x10019f,null));};exports['removeAgents']=function(_0x5d0cb8,_0x1b5cb4,_0x4a05aa){return db[_0x9d46('0x41')]['find']({'where':{'id':_0x5d0cb8['params']['id']}})[_0x9d46('0x1f')](handleEntityNotFound(_0x1b5cb4,null))['then'](function(_0x5c8c7c){if(_0x5c8c7c){return _0x5c8c7c['removeAgents'](_0x5d0cb8[_0x9d46('0x45')][_0x9d46('0x6b')])[_0x9d46('0x1f')](function(){if(_[_0x9d46('0xe1')](_0x5d0cb8['query'][_0x9d46('0x6b')])){for(var _0x29e8a3=0x0;_0x29e8a3<_0x5d0cb8[_0x9d46('0x45')][_0x9d46('0x6b')][_0x9d46('0x4b')];_0x29e8a3+=0x1){socket[_0x9d46('0xdf')](_0x9d46('0xe2'),{'UserId':Number(_0x5d0cb8[_0x9d46('0x45')][_0x9d46('0x6b')][_0x29e8a3]),'SmsAccountId':Number(_0x5d0cb8[_0x9d46('0x5b')]['id'])});}}else{socket[_0x9d46('0xdf')](_0x9d46('0xe2'),{'UserId':Number(_0x5d0cb8[_0x9d46('0x45')][_0x9d46('0x6b')]),'SmsAccountId':Number(_0x5d0cb8[_0x9d46('0x5b')]['id'])});}});}})[_0x9d46('0x1f')](respondWithStatusCode(_0x1b5cb4,null))[_0x9d46('0x29')](handleError(_0x1b5cb4,null));};exports[_0x9d46('0xe3')]=function(_0x299c55,_0x12ea79,_0x53fd1e){var _0x4e537a={};var _0x3a0cc0={};var _0x1e945e;var _0x46a076;return db[_0x9d46('0x41')]['findOne']({'where':{'id':_0x299c55[_0x9d46('0x5b')]['id']}})['then'](handleEntityNotFound(_0x12ea79,null))[_0x9d46('0x1f')](function(_0x2d88eb){if(_0x2d88eb){_0x1e945e=_0x2d88eb;_0x3a0cc0[_0x9d46('0x48')]=_[_0x9d46('0x46')](db[_0x9d46('0xbd')]['rawAttributes']);_0x3a0cc0[_0x9d46('0x45')]=_[_0x9d46('0x46')](_0x299c55[_0x9d46('0x45')]);_0x3a0cc0[_0x9d46('0x52')]=_['intersection'](_0x3a0cc0[_0x9d46('0x48')],_0x3a0cc0['query']);_0x4e537a[_0x9d46('0x49')]=_[_0x9d46('0x47')](_0x3a0cc0[_0x9d46('0x48')],qs[_0x9d46('0x4a')](_0x299c55['query'][_0x9d46('0x4a')]));_0x4e537a[_0x9d46('0x49')]=_0x4e537a[_0x9d46('0x49')][_0x9d46('0x4b')]?_0x4e537a[_0x9d46('0x49')]:_0x3a0cc0[_0x9d46('0x48')];_0x4e537a[_0x9d46('0x4e')]=qs['sort'](_0x299c55[_0x9d46('0x45')][_0x9d46('0x4f')]);_0x4e537a[_0x9d46('0x50')]=qs['filters'](_[_0x9d46('0x51')](_0x299c55['query'],_0x3a0cc0[_0x9d46('0x52')]));if(_0x299c55['query'][_0x9d46('0x53')]){_0x4e537a[_0x9d46('0x50')]=_[_0x9d46('0x54')](_0x4e537a[_0x9d46('0x50')],{'$or':_[_0x9d46('0x40')](_0x4e537a[_0x9d46('0x49')],function(_0x15fbdc){var _0x418872={};_0x418872[_0x15fbdc]={'$like':'%'+_0x299c55[_0x9d46('0x45')][_0x9d46('0x53')]+'%'};return _0x418872;})});}_0x4e537a=_[_0x9d46('0x54')]({},_0x4e537a,_0x299c55[_0x9d46('0x56')]);return _0x1e945e[_0x9d46('0xe3')](_0x4e537a);}})[_0x9d46('0x1f')](function(_0xcb7511){if(_0xcb7511){_0x46a076=_0xcb7511[_0x9d46('0x4b')];if(!_0x299c55[_0x9d46('0x45')][_0x9d46('0x4c')](_0x9d46('0x4d'))){_0x4e537a[_0x9d46('0x2f')]=qs[_0x9d46('0x2f')](_0x299c55[_0x9d46('0x45')][_0x9d46('0x2f')]);_0x4e537a['offset']=qs[_0x9d46('0x2d')](_0x299c55[_0x9d46('0x45')][_0x9d46('0x2d')]);}return _0x1e945e[_0x9d46('0xe3')](_0x4e537a);}})[_0x9d46('0x1f')](function(_0x254134){if(_0x254134){return _0x254134?{'count':_0x46a076,'rows':_0x254134}:null;}})[_0x9d46('0x1f')](respondWithResult(_0x12ea79,null))[_0x9d46('0x29')](handleError(_0x12ea79,null));}; \ No newline at end of file diff --git a/server/api/smsAccount/smsAccount.events.js b/server/api/smsAccount/smsAccount.events.js new file mode 100644 index 0000000..3f49cf3 --- /dev/null +++ b/server/api/smsAccount/smsAccount.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4b35=['save','remove','emit','hasOwnProperty','exports','events','../../mysqldb','SmsAccount','setMaxListeners'];(function(_0x2e34c4,_0x4fb4c0){var _0xac971d=function(_0x1c16e2){while(--_0x1c16e2){_0x2e34c4['push'](_0x2e34c4['shift']());}};_0xac971d(++_0x4fb4c0);}(_0x4b35,0x95));var _0x54b3=function(_0x236ac8,_0xa798d6){_0x236ac8=_0x236ac8-0x0;var _0x1ff538=_0x4b35[_0x236ac8];return _0x1ff538;};'use strict';var EventEmitter=require(_0x54b3('0x0'));var SmsAccount=require(_0x54b3('0x1'))['db'][_0x54b3('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x54b3('0x3')](0x0);var events={'afterCreate':_0x54b3('0x4'),'afterUpdate':'update','afterDestroy':_0x54b3('0x5')};function emitEvent(_0x1f63ab){return function(_0x5bfaf2,_0x4db480,_0x5c7472){SmsAccountEvents[_0x54b3('0x6')](_0x1f63ab+':'+_0x5bfaf2['id'],_0x5bfaf2);SmsAccountEvents['emit'](_0x1f63ab,_0x5bfaf2);_0x5c7472(null);};}for(var e in events){if(events[_0x54b3('0x7')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x54b3('0x8')]=SmsAccountEvents; \ No newline at end of file diff --git a/server/api/smsAccount/smsAccount.model.js b/server/api/smsAccount/smsAccount.model.js new file mode 100644 index 0000000..bb6cf11 --- /dev/null +++ b/server/api/smsAccount/smsAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x844d=['./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','util','api','request-promise','path','rimraf','../../config/environment'];(function(_0xef8fab,_0x13938e){var _0x1fc438=function(_0x49f6b9){while(--_0x49f6b9){_0xef8fab['push'](_0xef8fab['shift']());}};_0x1fc438(++_0x13938e);}(_0x844d,0xec));var _0xd844=function(_0x43f489,_0x2b4fea){_0x43f489=_0x43f489-0x0;var _0x4134b4=_0x844d[_0x43f489];return _0x4134b4;};'use strict';var _=require('lodash');var util=require(_0xd844('0x0'));var logger=require('../../config/logger')(_0xd844('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd844('0x2'));var fs=require('fs');var path=require(_0xd844('0x3'));var rimraf=require(_0xd844('0x4'));var config=require(_0xd844('0x5'));var attributes=require(_0xd844('0x6'));module[_0xd844('0x7')]=function(_0x296298,_0x4752d7){return _0x296298[_0xd844('0x8')](_0xd844('0x9'),attributes,{'tableName':_0xd844('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/smsAccount/smsAccount.rpc.js b/server/api/smsAccount/smsAccount.rpc.js new file mode 100644 index 0000000..7c97002 --- /dev/null +++ b/server/api/smsAccount/smsAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xadce=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','debug'];(function(_0x67655b,_0x15ff31){var _0x71c09d=function(_0x50c331){while(--_0x50c331){_0x67655b['push'](_0x67655b['shift']());}};_0x71c09d(++_0x15ff31);}(_0xadce,0xc9));var _0xeadc=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0xadce[_0x599e60];return _0x468e19;};'use strict';var _=require(_0xeadc('0x0'));var util=require(_0xeadc('0x1'));var moment=require(_0xeadc('0x2'));var BPromise=require(_0xeadc('0x3'));var rs=require(_0xeadc('0x4'));var fs=require('fs');var Redis=require(_0xeadc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xeadc('0x6'));var logger=require('../../config/logger')(_0xeadc('0x7'));var config=require('../../config/environment');var jayson=require(_0xeadc('0x8'));var client=jayson[_0xeadc('0x9')][_0xeadc('0xa')]({'port':0x232a});config['redis']=_[_0xeadc('0xb')](config[_0xeadc('0xc')],{'host':_0xeadc('0xd'),'port':0x18eb});var socket=require(_0xeadc('0xe'))(new Redis(config[_0xeadc('0xc')]));require(_0xeadc('0xf'))[_0xeadc('0x10')](socket);function respondWithRpcPromise(_0x260891,_0x5a7c9a,_0x4d16a9){return new BPromise(function(_0x1184d4,_0x1d18f9){return client[_0xeadc('0x11')](_0x260891,_0x4d16a9)[_0xeadc('0x12')](function(_0x3a0019){logger[_0xeadc('0x13')](_0xeadc('0x14'),_0x5a7c9a,'request\x20sent');logger['debug'](_0xeadc('0x15'),_0x5a7c9a,_0xeadc('0x16'),JSON[_0xeadc('0x17')](_0x3a0019));if(_0x3a0019[_0xeadc('0x18')]){if(_0x3a0019[_0xeadc('0x18')][_0xeadc('0x19')]===0x1f4){logger[_0xeadc('0x18')](_0xeadc('0x14'),_0x5a7c9a,_0x3a0019['error'][_0xeadc('0x1a')]);return _0x1d18f9(_0x3a0019[_0xeadc('0x18')][_0xeadc('0x1a')]);}logger[_0xeadc('0x18')]('SmsAccount,\x20%s,\x20%s',_0x5a7c9a,_0x3a0019[_0xeadc('0x18')]['message']);return _0x1184d4(_0x3a0019[_0xeadc('0x18')][_0xeadc('0x1a')]);}else{logger[_0xeadc('0x13')](_0xeadc('0x14'),_0x5a7c9a,'request\x20sent');_0x1184d4(_0x3a0019[_0xeadc('0x1b')][_0xeadc('0x1a')]);}})['catch'](function(_0x953a9f){logger[_0xeadc('0x18')]('SmsAccount,\x20%s,\x20%s',_0x5a7c9a,_0x953a9f);_0x1d18f9(_0x953a9f);});});}exports[_0xeadc('0x1c')]=function(_0x16eb82){var _0x3b00aa=this;return new Promise(function(_0x5d29ca,_0x5950b0){return db[_0xeadc('0x1d')][_0xeadc('0x1e')]({'raw':_0x16eb82[_0xeadc('0x1f')]?_0x16eb82[_0xeadc('0x1f')][_0xeadc('0x20')]===undefined?!![]:![]:!![],'where':_0x16eb82[_0xeadc('0x1f')]?_0x16eb82['options'][_0xeadc('0x21')]||null:null,'attributes':_0x16eb82['options']?_0x16eb82[_0xeadc('0x1f')][_0xeadc('0x22')]||null:null,'include':_0x16eb82[_0xeadc('0x1f')]?_0x16eb82[_0xeadc('0x1f')][_0xeadc('0x23')]?_[_0xeadc('0x24')](_0x16eb82[_0xeadc('0x1f')][_0xeadc('0x23')],function(_0x4b6652){return{'model':db[_0x4b6652[_0xeadc('0x25')]],'as':_0x4b6652['as'],'attributes':_0x4b6652[_0xeadc('0x22')],'include':_0x4b6652[_0xeadc('0x23')]?_[_0xeadc('0x24')](_0x4b6652[_0xeadc('0x23')],function(_0x384187){return{'model':db[_0x384187['model']],'as':_0x384187['as'],'attributes':_0x384187[_0xeadc('0x22')],'include':_0x384187[_0xeadc('0x23')]?_[_0xeadc('0x24')](_0x384187[_0xeadc('0x23')],function(_0x3d581a){return{'model':db[_0x3d581a['model']],'as':_0x3d581a['as'],'attributes':_0x3d581a[_0xeadc('0x22')]};}):[]};}):[]};}):[]:[]})[_0xeadc('0x12')](function(_0x3b1324){logger['info']('ShowSmsAccount',_0x16eb82);logger[_0xeadc('0x26')]('ShowSmsAccount',_0x16eb82,JSON[_0xeadc('0x17')](_0x3b1324));_0x5d29ca(_0x3b1324);})[_0xeadc('0x27')](function(_0x1b1cd4){logger[_0xeadc('0x18')](_0xeadc('0x1c'),_0x1b1cd4['message'],_0x16eb82);_0x5950b0(_0x3b00aa['error'](0x1f4,_0x1b1cd4[_0xeadc('0x1a')]));});});}; \ No newline at end of file diff --git a/server/api/smsAccount/smsAccount.socket.js b/server/api/smsAccount/smsAccount.socket.js new file mode 100644 index 0000000..9c36c52 --- /dev/null +++ b/server/api/smsAccount/smsAccount.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 diff --git a/server/api/smsApplication/index.js b/server/api/smsApplication/index.js new file mode 100644 index 0000000..d6bf747 --- /dev/null +++ b/server/api/smsApplication/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +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(_0x3da3c4,_0x2b874d){var _0x36a3af=function(_0x6d3f2d){while(--_0x6d3f2d){_0x3da3c4['push'](_0x3da3c4['shift']());}};_0x36a3af(++_0x2b874d);}(_0x34e8,0x12c));var _0x834e=function(_0x150d0e,_0x31dd36){_0x150d0e=_0x150d0e-0x0;var _0x1fabcb=_0x34e8[_0x150d0e];return _0x1fabcb;};'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 diff --git a/server/api/smsApplication/smsApplication.attributes.js b/server/api/smsApplication/smsApplication.attributes.js new file mode 100644 index 0000000..f5d908a --- /dev/null +++ b/server/api/smsApplication/smsApplication.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x227e=['STRING','*,*,*,*','INTEGER'];(function(_0x3254a7,_0x1187a5){var _0x446a65=function(_0x3afd5a){while(--_0x3afd5a){_0x3254a7['push'](_0x3254a7['shift']());}};_0x446a65(++_0x1187a5);}(_0x227e,0xf2));var _0xe227=function(_0x22a2e1,_0x5c1836){_0x22a2e1=_0x22a2e1-0x0;var _0x4a78dc=_0x227e[_0x22a2e1];return _0x4a78dc;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xe227('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0xe227('0x1')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xe227('0x1')]},'interval':{'type':Sequelize[_0xe227('0x1')],'defaultValue':_0xe227('0x2')}}; \ No newline at end of file diff --git a/server/api/smsApplication/smsApplication.controller.js b/server/api/smsApplication/smsApplication.controller.js new file mode 100644 index 0000000..4c5b6d0 --- /dev/null +++ b/server/api/smsApplication/smsApplication.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcfa6=['status','end','json','limit','undefined','offset','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x1fe9ad,_0x44176a){var _0xbc7389=function(_0x9eabb2){while(--_0x9eabb2){_0x1fe9ad['push'](_0x1fe9ad['shift']());}};_0xbc7389(++_0x44176a);}(_0xcfa6,0x1ba));var _0x6cfa=function(_0x3d6ad7,_0x5258aa){_0x3d6ad7=_0x3d6ad7-0x0;var _0x5d36d9=_0xcfa6[_0x3d6ad7];return _0x5d36d9;};'use strict';var emlformat=require(_0x6cfa('0x0'));var rimraf=require(_0x6cfa('0x1'));var zipdir=require(_0x6cfa('0x2'));var jsonpatch=require(_0x6cfa('0x3'));var rp=require(_0x6cfa('0x4'));var moment=require(_0x6cfa('0x5'));var BPromise=require(_0x6cfa('0x6'));var Mustache=require(_0x6cfa('0x7'));var util=require('util');var path=require(_0x6cfa('0x8'));var sox=require(_0x6cfa('0x9'));var csv=require(_0x6cfa('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6cfa('0xb'));var squel=require(_0x6cfa('0xc'));var crypto=require(_0x6cfa('0xd'));var jsforce=require(_0x6cfa('0xe'));var deskjs=require(_0x6cfa('0xf'));var toCsv=require(_0x6cfa('0xa'));var querystring=require(_0x6cfa('0x10'));var Papa=require('papaparse');var Redis=require(_0x6cfa('0x11'));var authService=require(_0x6cfa('0x12'));var qs=require(_0x6cfa('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6cfa('0x14'))('api');var utils=require(_0x6cfa('0x15'));var config=require(_0x6cfa('0x16'));var licenseUtil=require(_0x6cfa('0x17'));var db=require(_0x6cfa('0x18'))['db'];function respondWithStatusCode(_0x112d1d,_0x2a1a20){_0x2a1a20=_0x2a1a20||0xcc;return function(_0x2ac066){if(_0x2ac066){return _0x112d1d[_0x6cfa('0x19')](_0x2a1a20);}return _0x112d1d[_0x6cfa('0x1a')](_0x2a1a20)[_0x6cfa('0x1b')]();};}function respondWithResult(_0x2efff1,_0x51b8b2){_0x51b8b2=_0x51b8b2||0xc8;return function(_0x31d516){if(_0x31d516){return _0x2efff1[_0x6cfa('0x1a')](_0x51b8b2)[_0x6cfa('0x1c')](_0x31d516);}};}function respondWithFilteredResult(_0x2d2c42,_0x42e0ca){return function(_0x4c60e8){if(_0x4c60e8){var _0x13d05f=typeof _0x42e0ca['offset']==='undefined'&&typeof _0x42e0ca[_0x6cfa('0x1d')]===_0x6cfa('0x1e');var _0x23aca1=_0x4c60e8['count'];var _0x3c575e=_0x13d05f?0x0:_0x42e0ca['offset'];var _0x4c697b=_0x13d05f?_0x4c60e8['count']:_0x42e0ca[_0x6cfa('0x1f')]+_0x42e0ca[_0x6cfa('0x1d')];var _0x1d00ce;if(_0x4c697b>=_0x23aca1){_0x4c697b=_0x23aca1;_0x1d00ce=0xc8;}else{_0x1d00ce=0xce;}_0x2d2c42[_0x6cfa('0x1a')](_0x1d00ce);return _0x2d2c42[_0x6cfa('0x20')](_0x6cfa('0x21'),_0x3c575e+'-'+_0x4c697b+'/'+_0x23aca1)['json'](_0x4c60e8);}return null;};}function patchUpdates(_0x28a757){return function(_0x7c3026){try{jsonpatch['apply'](_0x7c3026,_0x28a757,!![]);}catch(_0x2da53d){return BPromise[_0x6cfa('0x22')](_0x2da53d);}return _0x7c3026['save']();};}function saveUpdates(_0x324ef1,_0x1842f3){return function(_0xc9a510){if(_0xc9a510){return _0xc9a510[_0x6cfa('0x23')](_0x324ef1)[_0x6cfa('0x24')](function(_0x5340a2){return _0x5340a2;});}return null;};}function removeEntity(_0x4c2448,_0x459310){return function(_0x209afc){if(_0x209afc){return _0x209afc[_0x6cfa('0x25')]()['then'](function(){_0x4c2448[_0x6cfa('0x1a')](0xcc)[_0x6cfa('0x1b')]();});}};}function handleEntityNotFound(_0x3bc9b0,_0x228cd1){return function(_0x3faf77){if(!_0x3faf77){_0x3bc9b0[_0x6cfa('0x19')](0x194);}return _0x3faf77;};}function handleError(_0x3162f3,_0x1b4f5e){_0x1b4f5e=_0x1b4f5e||0x1f4;return function(_0x4326a5){logger[_0x6cfa('0x26')](_0x4326a5[_0x6cfa('0x27')]);if(_0x4326a5[_0x6cfa('0x28')]){delete _0x4326a5['name'];}_0x3162f3['status'](_0x1b4f5e)[_0x6cfa('0x29')](_0x4326a5);};}exports[_0x6cfa('0x2a')]=function(_0x50a880,_0xddde34){var _0x37686a={},_0x3585dc={},_0xed1b75={'count':0x0,'rows':[]};var _0x3252a0=_[_0x6cfa('0x2b')](db[_0x6cfa('0x2c')][_0x6cfa('0x2d')],function(_0xaad3d1){return{'name':_0xaad3d1[_0x6cfa('0x2e')],'type':_0xaad3d1['type'][_0x6cfa('0x2f')]};});_0x3585dc[_0x6cfa('0x30')]=_[_0x6cfa('0x2b')](_0x3252a0,_0x6cfa('0x28'));_0x3585dc['query']=_[_0x6cfa('0x31')](_0x50a880[_0x6cfa('0x32')]);_0x3585dc[_0x6cfa('0x33')]=_[_0x6cfa('0x34')](_0x3585dc[_0x6cfa('0x30')],_0x3585dc[_0x6cfa('0x32')]);_0x37686a[_0x6cfa('0x35')]=_[_0x6cfa('0x34')](_0x3585dc[_0x6cfa('0x30')],qs[_0x6cfa('0x36')](_0x50a880[_0x6cfa('0x32')]['fields']));_0x37686a[_0x6cfa('0x35')]=_0x37686a[_0x6cfa('0x35')][_0x6cfa('0x37')]?_0x37686a[_0x6cfa('0x35')]:_0x3585dc['model'];if(!_0x50a880[_0x6cfa('0x32')][_0x6cfa('0x38')](_0x6cfa('0x39'))){_0x37686a[_0x6cfa('0x1d')]=qs['limit'](_0x50a880[_0x6cfa('0x32')][_0x6cfa('0x1d')]);_0x37686a[_0x6cfa('0x1f')]=qs['offset'](_0x50a880['query']['offset']);}_0x37686a[_0x6cfa('0x3a')]=qs[_0x6cfa('0x3b')](_0x50a880[_0x6cfa('0x32')]['sort']);_0x37686a['where']=qs[_0x6cfa('0x33')](_[_0x6cfa('0x3c')](_0x50a880[_0x6cfa('0x32')],_0x3585dc[_0x6cfa('0x33')]),_0x3252a0);if(_0x50a880[_0x6cfa('0x32')][_0x6cfa('0x3d')]){_0x37686a[_0x6cfa('0x3e')]=_[_0x6cfa('0x3f')](_0x37686a[_0x6cfa('0x3e')],{'$or':_[_0x6cfa('0x2b')](_0x3252a0,function(_0x375d4b){if(_0x375d4b[_0x6cfa('0x40')]!==_0x6cfa('0x41')){var _0x271203={};_0x271203[_0x375d4b[_0x6cfa('0x28')]]={'$like':'%'+_0x50a880[_0x6cfa('0x32')][_0x6cfa('0x3d')]+'%'};return _0x271203;}})});}_0x37686a=_['merge']({},_0x37686a,_0x50a880[_0x6cfa('0x42')]);var _0x19f042={'where':_0x37686a['where']};return db[_0x6cfa('0x2c')][_0x6cfa('0x43')](_0x19f042)[_0x6cfa('0x24')](function(_0x4c450d){_0xed1b75[_0x6cfa('0x43')]=_0x4c450d;if(_0x50a880['query'][_0x6cfa('0x44')]){_0x37686a[_0x6cfa('0x45')]=[{'all':!![]}];}return db[_0x6cfa('0x2c')][_0x6cfa('0x46')](_0x37686a);})['then'](function(_0x28068){_0xed1b75[_0x6cfa('0x47')]=_0x28068;return _0xed1b75;})['then'](respondWithFilteredResult(_0xddde34,_0x37686a))['catch'](handleError(_0xddde34,null));};exports[_0x6cfa('0x48')]=function(_0x366f02,_0x831bcf){var _0x27e9da={'raw':!![],'where':{'id':_0x366f02[_0x6cfa('0x49')]['id']}},_0x15de2b={};_0x15de2b[_0x6cfa('0x30')]=_['keys'](db[_0x6cfa('0x2c')]['rawAttributes']);_0x15de2b[_0x6cfa('0x32')]=_[_0x6cfa('0x31')](_0x366f02[_0x6cfa('0x32')]);_0x15de2b[_0x6cfa('0x33')]=_[_0x6cfa('0x34')](_0x15de2b[_0x6cfa('0x30')],_0x15de2b['query']);_0x27e9da[_0x6cfa('0x35')]=_[_0x6cfa('0x34')](_0x15de2b[_0x6cfa('0x30')],qs[_0x6cfa('0x36')](_0x366f02[_0x6cfa('0x32')][_0x6cfa('0x36')]));_0x27e9da[_0x6cfa('0x35')]=_0x27e9da[_0x6cfa('0x35')][_0x6cfa('0x37')]?_0x27e9da['attributes']:_0x15de2b[_0x6cfa('0x30')];if(_0x366f02[_0x6cfa('0x32')][_0x6cfa('0x44')]){_0x27e9da[_0x6cfa('0x45')]=[{'all':!![]}];}_0x27e9da=_[_0x6cfa('0x3f')]({},_0x27e9da,_0x366f02['options']);return db[_0x6cfa('0x2c')][_0x6cfa('0x4a')](_0x27e9da)[_0x6cfa('0x24')](handleEntityNotFound(_0x831bcf,null))[_0x6cfa('0x24')](respondWithResult(_0x831bcf,null))[_0x6cfa('0x4b')](handleError(_0x831bcf,null));};exports[_0x6cfa('0x4c')]=function(_0xb3bda1,_0x30f749){return db[_0x6cfa('0x2c')][_0x6cfa('0x4c')](_0xb3bda1[_0x6cfa('0x4d')],{})[_0x6cfa('0x24')](respondWithResult(_0x30f749,0xc9))[_0x6cfa('0x4b')](handleError(_0x30f749,null));};exports['update']=function(_0x2a5b03,_0x3b23f0){if(_0x2a5b03[_0x6cfa('0x4d')]['id']){delete _0x2a5b03[_0x6cfa('0x4d')]['id'];}return db[_0x6cfa('0x2c')][_0x6cfa('0x4a')]({'where':{'id':_0x2a5b03[_0x6cfa('0x49')]['id']}})[_0x6cfa('0x24')](handleEntityNotFound(_0x3b23f0,null))[_0x6cfa('0x24')](saveUpdates(_0x2a5b03[_0x6cfa('0x4d')],null))[_0x6cfa('0x24')](respondWithResult(_0x3b23f0,null))['catch'](handleError(_0x3b23f0,null));};exports[_0x6cfa('0x25')]=function(_0x3d73fb,_0x18529f){return db['SmsApplication'][_0x6cfa('0x4a')]({'where':{'id':_0x3d73fb['params']['id']}})[_0x6cfa('0x24')](handleEntityNotFound(_0x18529f,null))[_0x6cfa('0x24')](removeEntity(_0x18529f,null))[_0x6cfa('0x4b')](handleError(_0x18529f,null));}; \ No newline at end of file diff --git a/server/api/smsApplication/smsApplication.model.js b/server/api/smsApplication/smsApplication.model.js new file mode 100644 index 0000000..1f63b72 --- /dev/null +++ b/server/api/smsApplication/smsApplication.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2aba=['utf8mb4','utf8mb4_unicode_ci','lodash','util','request-promise','path','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications'];(function(_0x2f05bd,_0x424ac5){var _0x5da135=function(_0x2f094d){while(--_0x2f094d){_0x2f05bd['push'](_0x2f05bd['shift']());}};_0x5da135(++_0x424ac5);}(_0x2aba,0x19a));var _0xa2ab=function(_0x2b5b9b,_0x5116a9){_0x2b5b9b=_0x2b5b9b-0x0;var _0x12720e=_0x2aba[_0x2b5b9b];return _0x12720e;};'use strict';var _=require(_0xa2ab('0x0'));var util=require(_0xa2ab('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa2ab('0x2'));var fs=require('fs');var path=require(_0xa2ab('0x3'));var rimraf=require('rimraf');var config=require(_0xa2ab('0x4'));var attributes=require(_0xa2ab('0x5'));module[_0xa2ab('0x6')]=function(_0x285676,_0x2d4d89){return _0x285676[_0xa2ab('0x7')](_0xa2ab('0x8'),attributes,{'tableName':_0xa2ab('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa2ab('0xa'),'collate':_0xa2ab('0xb')});}; \ No newline at end of file diff --git a/server/api/smsApplication/smsApplication.rpc.js b/server/api/smsApplication/smsApplication.rpc.js new file mode 100644 index 0000000..27b269d --- /dev/null +++ b/server/api/smsApplication/smsApplication.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3c32=['request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SmsApplication,\x20%s,\x20%s'];(function(_0x5a29e0,_0x56678a){var _0x5fc0a2=function(_0x6397d2){while(--_0x6397d2){_0x5a29e0['push'](_0x5a29e0['shift']());}};_0x5fc0a2(++_0x56678a);}(_0x3c32,0x161));var _0x23c3=function(_0x34e341,_0xbddc4f){_0x34e341=_0x34e341-0x0;var _0x2b4f95=_0x3c32[_0x34e341];return _0x2b4f95;};'use strict';var _=require(_0x23c3('0x0'));var util=require(_0x23c3('0x1'));var moment=require(_0x23c3('0x2'));var BPromise=require('bluebird');var rs=require(_0x23c3('0x3'));var fs=require('fs');var Redis=require(_0x23c3('0x4'));var db=require(_0x23c3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x23c3('0x6'))('rpc');var config=require(_0x23c3('0x7'));var jayson=require(_0x23c3('0x8'));var client=jayson[_0x23c3('0x9')][_0x23c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a6364,_0x56568e,_0x493ca6){return new BPromise(function(_0x4df5ee,_0x422558){return client[_0x23c3('0xb')](_0x4a6364,_0x493ca6)[_0x23c3('0xc')](function(_0x420987){logger[_0x23c3('0xd')](_0x23c3('0xe'),_0x56568e,_0x23c3('0xf'));logger[_0x23c3('0x10')](_0x23c3('0x11'),_0x56568e,_0x23c3('0xf'),JSON[_0x23c3('0x12')](_0x420987));if(_0x420987[_0x23c3('0x13')]){if(_0x420987[_0x23c3('0x13')][_0x23c3('0x14')]===0x1f4){logger[_0x23c3('0x13')](_0x23c3('0xe'),_0x56568e,_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);return _0x422558(_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x56568e,_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);return _0x4df5ee(_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);}else{logger[_0x23c3('0xd')](_0x23c3('0xe'),_0x56568e,_0x23c3('0xf'));_0x4df5ee(_0x420987['result']['message']);}})[_0x23c3('0x16')](function(_0x43534b){logger['error'](_0x23c3('0xe'),_0x56568e,_0x43534b);_0x422558(_0x43534b);});});} \ No newline at end of file diff --git a/server/api/smsInteraction/index.js b/server/api/smsInteraction/index.js new file mode 100644 index 0000000..a25bfa0 --- /dev/null +++ b/server/api/smsInteraction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8603=['sms','addTags','put','/:id','smsinteraction:update','update','delete','destroy','removeTags','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller','isAuthenticated','index','get','/describe','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','tracked'];(function(_0x1f8921,_0x38bd21){var _0x2c2f34=function(_0x33d700){while(--_0x33d700){_0x1f8921['push'](_0x1f8921['shift']());}};_0x2c2f34(++_0x38bd21);}(_0x8603,0x190));var _0x3860=function(_0x528687,_0x55bc89){_0x528687=_0x528687-0x0;var _0x31e7ab=_0x8603[_0x528687];return _0x31e7ab;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['describe']);router['get']('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xb')]);router['get'](_0x3860('0xc'),auth[_0x3860('0x7')](),controller['getMessages']);router[_0x3860('0x9')](_0x3860('0xd'),auth['isAuthenticated'](),controller[_0x3860('0xe')]);router[_0x3860('0xf')]('/',auth['isAuthenticated'](),controller[_0x3860('0x10')]);router[_0x3860('0xf')](_0x3860('0xc'),auth[_0x3860('0x7')](),controller[_0x3860('0x11')]);router[_0x3860('0xf')](_0x3860('0x12'),auth[_0x3860('0x7')](),interaction[_0x3860('0x13')](_0x3860('0x14'),'smsinteraction:addtags'),controller[_0x3860('0x15')]);router[_0x3860('0x16')](_0x3860('0x17'),auth[_0x3860('0x7')](),interaction[_0x3860('0x13')](_0x3860('0x14'),_0x3860('0x18')),controller[_0x3860('0x19')]);router[_0x3860('0x1a')](_0x3860('0x17'),auth[_0x3860('0x7')](),interaction[_0x3860('0x13')]('sms','smsinteraction:destroy'),controller[_0x3860('0x1b')]);router[_0x3860('0x1a')](_0x3860('0x12'),auth['isAuthenticated'](),controller[_0x3860('0x1c')]);module[_0x3860('0x1d')]=router; \ No newline at end of file diff --git a/server/api/smsInteraction/smsInteraction.attributes.js b/server/api/smsInteraction/smsInteraction.attributes.js new file mode 100644 index 0000000..d5e21fe --- /dev/null +++ b/server/api/smsInteraction/smsInteraction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0024=['moment','BOOLEAN','STRING','out','DATE','ENUM'];(function(_0x1b02bb,_0x3d9fde){var _0x131245=function(_0x2fd1d8){while(--_0x2fd1d8){_0x1b02bb['push'](_0x1b02bb['shift']());}};_0x131245(++_0x3d9fde);}(_0x0024,0xa8));var _0x4002=function(_0x5bfaa7,_0x404773){_0x5bfaa7=_0x5bfaa7-0x0;var _0xe1b1a3=_0x0024[_0x5bfaa7];return _0xe1b1a3;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x4002('0x0'));module['exports']={'closed':{'type':Sequelize[_0x4002('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x4002('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4002('0x2')]},'phone':{'type':Sequelize[_0x4002('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x4002('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x4002('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x4002('0x5')]('in',_0x4002('0x3')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/smsInteraction/smsInteraction.controller.js b/server/api/smsInteraction/smsInteraction.controller.js new file mode 100644 index 0000000..225eeb3 --- /dev/null +++ b/server/api/smsInteraction/smsInteraction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x169f=['pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','emit','smsInteractionTags:save','download','unix','toString','root','server','tmp','join','transcript-%d-%s.zip','push','User','fullname','CmContact','firstName','lastName','createdAt','direction','secret','Account','Owner','Sms','N.A.','closedAt','disposition','Messages','Contact','out','read','renderFile','views','.pdf','err','zip-dir','moment','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','redis','defaults','localhost','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','update','then','destroy','name','send','index','map','SmsInteraction','rawAttributes','type','key','findAll','sms','query','user','catch','show','params','keys','intersection','model','attributes','fields','includeAll','merge','options','find','create','body','describe','addMessage','ids','omit','getMessages','findOne','SmsMessage','filters','hasOwnProperty','nolimit','limit','order','sort','where'];(function(_0x114abb,_0x373ee1){var _0x4b2759=function(_0x527529){while(--_0x527529){_0x114abb['push'](_0x114abb['shift']());}};_0x4b2759(++_0x373ee1);}(_0x169f,0x172));var _0xf169=function(_0x253c0c,_0x55f71f){_0x253c0c=_0x253c0c-0x0;var _0x53fb71=_0x169f[_0x253c0c];return _0x53fb71;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xf169('0x0'));var moment=require(_0xf169('0x1'));var BPromise=require(_0xf169('0x2'));var util=require(_0xf169('0x3'));var path=require(_0xf169('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xf169('0x5'));var Redis=require('ioredis');var interaction=require(_0xf169('0x6'));var qs=require(_0xf169('0x7'));var pdf=require(_0xf169('0x8'));var logger=require(_0xf169('0x9'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xf169('0xa')]=_[_0xf169('0xb')](config[_0xf169('0xa')],{'host':_0xf169('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf169('0xa')]));require('./smsInteraction.socket')[_0xf169('0xd')](socket);function respondWithStatusCode(_0x3f1eb0,_0x147bbc){_0x147bbc=_0x147bbc||0xcc;return function(_0x524983){if(_0x524983){return _0x3f1eb0[_0xf169('0xe')](_0x147bbc);}return _0x3f1eb0[_0xf169('0xf')](_0x147bbc)[_0xf169('0x10')]();};}function respondWithResult(_0x5c186f,_0x46bb00){_0x46bb00=_0x46bb00||0xc8;return function(_0x516fba){if(_0x516fba){return _0x5c186f[_0xf169('0xf')](_0x46bb00)['json'](_0x516fba);}};}function respondWithFilteredResult(_0x22d0c8,_0x2fc12c){return function(_0x19a646){if(_0x19a646){var _0x49c50c=typeof _0x2fc12c[_0xf169('0x11')]==='undefined'&&typeof _0x2fc12c['limit']===_0xf169('0x12');var _0x2206f0=_0x19a646[_0xf169('0x13')];var _0x4c9e2c=_0x49c50c?0x0:_0x2fc12c[_0xf169('0x11')];var _0x2c8433=_0x49c50c?_0x19a646[_0xf169('0x13')]:_0x2fc12c[_0xf169('0x11')]+_0x2fc12c['limit'];var _0x1101d7;if(_0x2c8433>=_0x2206f0){_0x2c8433=_0x2206f0;_0x1101d7=0xc8;}else{_0x1101d7=0xce;}_0x22d0c8[_0xf169('0xf')](_0x1101d7);return _0x22d0c8[_0xf169('0x14')](_0xf169('0x15'),_0x4c9e2c+'-'+_0x2c8433+'/'+_0x2206f0)[_0xf169('0x16')](_0x19a646);}return null;};}function saveUpdates(_0x13e753){return function(_0x4956ae){if(_0x4956ae){return _0x4956ae[_0xf169('0x17')](_0x13e753)[_0xf169('0x18')](function(_0x58108e){return _0x58108e;});}return null;};}function removeEntity(_0x565f9e){return function(_0x13f9dc){if(_0x13f9dc){return _0x13f9dc[_0xf169('0x19')]()[_0xf169('0x18')](function(){_0x565f9e[_0xf169('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e09cd){return function(_0x103ecf){if(!_0x103ecf){_0x1e09cd['sendStatus'](0x194);}return _0x103ecf;};}function handleError(_0x301c47,_0x539eca){_0x539eca=_0x539eca||0x1f4;return function(_0x45f6bb){logger['error'](_0x45f6bb['stack']);if(_0x45f6bb[_0xf169('0x1a')]){delete _0x45f6bb[_0xf169('0x1a')];}_0x301c47[_0xf169('0xf')](_0x539eca)[_0xf169('0x1b')](_0x45f6bb);};}exports[_0xf169('0x1c')]=function(_0x201ad7,_0xe50264){var _0x5ecd50={};var _0x25a5e9=_[_0xf169('0x1d')](db[_0xf169('0x1e')][_0xf169('0x1f')],function(_0x513e24){return{'name':_0x513e24['fieldName'],'type':_0x513e24[_0xf169('0x20')][_0xf169('0x21')]};});_0x5ecd50=qs['getOptions'](_0x25a5e9,_0x201ad7);return interaction[_0xf169('0x22')](_0xf169('0x23'),_0x201ad7[_0xf169('0x24')],_0x201ad7[_0xf169('0x25')],_0x5ecd50,_0x25a5e9)[_0xf169('0x18')](respondWithFilteredResult(_0xe50264,_0x5ecd50))[_0xf169('0x26')](handleError(_0xe50264,null));};exports[_0xf169('0x27')]=function(_0x4d1f0d,_0x4b4095){var _0x4d37cc={'raw':![],'where':{'id':_0x4d1f0d[_0xf169('0x28')]['id']}},_0x5edf96={};_0x5edf96['model']=_['keys'](db[_0xf169('0x1e')][_0xf169('0x1f')]);_0x5edf96[_0xf169('0x24')]=_[_0xf169('0x29')](_0x4d1f0d[_0xf169('0x24')]);_0x5edf96['filters']=_[_0xf169('0x2a')](_0x5edf96[_0xf169('0x2b')],_0x5edf96[_0xf169('0x24')]);_0x4d37cc[_0xf169('0x2c')]=_['intersection'](_0x5edf96[_0xf169('0x2b')],qs[_0xf169('0x2d')](_0x4d1f0d[_0xf169('0x24')][_0xf169('0x2d')]));_0x4d37cc['attributes']=_0x4d37cc['attributes']['length']?_0x4d37cc[_0xf169('0x2c')]:_0x5edf96[_0xf169('0x2b')];if(_0x4d1f0d[_0xf169('0x24')][_0xf169('0x2e')]){_0x4d37cc['include']=[{'all':!![]}];}_0x4d37cc=_[_0xf169('0x2f')]({},_0x4d37cc,_0x4d1f0d[_0xf169('0x30')]);return db['SmsInteraction'][_0xf169('0x31')](_0x4d37cc)['then'](handleEntityNotFound(_0x4b4095,null))['then'](respondWithResult(_0x4b4095,null))[_0xf169('0x26')](handleError(_0x4b4095,null));};exports['create']=function(_0x56ef43,_0x501ac4){return db[_0xf169('0x1e')][_0xf169('0x32')](_0x56ef43[_0xf169('0x33')],{})['then'](respondWithResult(_0x501ac4,0xc9))['catch'](handleError(_0x501ac4,null));};exports[_0xf169('0x17')]=function(_0x273757,_0x4563d2){if(_0x273757[_0xf169('0x33')]['id']){delete _0x273757[_0xf169('0x33')]['id'];}return db[_0xf169('0x1e')][_0xf169('0x31')]({'where':{'id':_0x273757['params']['id']}})[_0xf169('0x18')](handleEntityNotFound(_0x4563d2,null))['then'](saveUpdates(_0x273757[_0xf169('0x33')],null))[_0xf169('0x18')](respondWithResult(_0x4563d2,null))[_0xf169('0x26')](handleError(_0x4563d2,null));};exports['destroy']=function(_0x1fb77d,_0x2a7e34){return db[_0xf169('0x1e')][_0xf169('0x31')]({'where':{'id':_0x1fb77d[_0xf169('0x28')]['id']}})[_0xf169('0x18')](handleEntityNotFound(_0x2a7e34,null))['then'](removeEntity(_0x2a7e34,null))[_0xf169('0x26')](handleError(_0x2a7e34,null));};exports[_0xf169('0x34')]=function(_0x3ca585,_0x48b202){return db[_0xf169('0x1e')][_0xf169('0x34')]()['then'](respondWithResult(_0x48b202,null))['catch'](handleError(_0x48b202,null));};exports[_0xf169('0x35')]=function(_0x2f9f52,_0x37f53c){return db['SmsMessage'][_0xf169('0x31')]({'where':{'id':_0x2f9f52[_0xf169('0x28')]['id']}})['then'](handleEntityNotFound(_0x37f53c,null))[_0xf169('0x18')](function(_0x52d980){if(_0x52d980){return _0x52d980[_0xf169('0x35')](_0x2f9f52[_0xf169('0x33')][_0xf169('0x36')],_[_0xf169('0x37')](_0x2f9f52['body'],[_0xf169('0x36'),'id'])||{});}})[_0xf169('0x18')](respondWithResult(_0x37f53c,null))[_0xf169('0x26')](handleError(_0x37f53c,null));};exports[_0xf169('0x38')]=function(_0x437cde,_0x18162e){var _0x3b62c3={'raw':![],'where':{}};var _0xe76c72={};var _0x2ccae9={'count':0x0,'rows':[]};return db['SmsInteraction'][_0xf169('0x39')]({'where':{'id':_0x437cde[_0xf169('0x28')]['id']}})['then'](handleEntityNotFound(_0x18162e,null))[_0xf169('0x18')](function(_0x5d2d8b){if(_0x5d2d8b){_0xe76c72['model']=_[_0xf169('0x29')](db[_0xf169('0x3a')][_0xf169('0x1f')]);_0xe76c72[_0xf169('0x24')]=_[_0xf169('0x29')](_0x437cde[_0xf169('0x24')]);_0xe76c72[_0xf169('0x3b')]=_[_0xf169('0x2a')](_0xe76c72[_0xf169('0x2b')],_0xe76c72[_0xf169('0x24')]);_0x3b62c3[_0xf169('0x2c')]=_[_0xf169('0x2a')](_0xe76c72[_0xf169('0x2b')],qs[_0xf169('0x2d')](_0x437cde['query'][_0xf169('0x2d')]));_0x3b62c3[_0xf169('0x2c')]=_0x3b62c3[_0xf169('0x2c')]['length']?_0x3b62c3[_0xf169('0x2c')]:_0xe76c72['model'];if(!_0x437cde[_0xf169('0x24')][_0xf169('0x3c')](_0xf169('0x3d'))){_0x3b62c3[_0xf169('0x3e')]=qs[_0xf169('0x3e')](_0x437cde[_0xf169('0x24')][_0xf169('0x3e')]);_0x3b62c3[_0xf169('0x11')]=qs['offset'](_0x437cde[_0xf169('0x24')][_0xf169('0x11')]);}_0x3b62c3[_0xf169('0x3f')]=qs[_0xf169('0x40')](_0x437cde[_0xf169('0x24')][_0xf169('0x40')]);_0x3b62c3[_0xf169('0x41')]=qs['filters'](_[_0xf169('0x42')](_0x437cde[_0xf169('0x24')],_0xe76c72[_0xf169('0x3b')]));_0x3b62c3['where']['SmsInteractionId']=_0x5d2d8b['id'];if(_0x437cde['query'][_0xf169('0x43')]){_0x3b62c3[_0xf169('0x41')]=_[_0xf169('0x2f')](_0x3b62c3[_0xf169('0x41')],{'$or':_[_0xf169('0x1d')](_0x3b62c3[_0xf169('0x2c')],function(_0x317909){var _0x4752b5={};_0x4752b5[_0x317909]={'$like':'%'+_0x437cde[_0xf169('0x24')][_0xf169('0x43')]+'%'};return _0x4752b5;})});}if(_0x437cde[_0xf169('0x24')][_0xf169('0x44')]){var _0x41a12b=_0x437cde['query']['$gte'][_0xf169('0x45')](',');var _0x114f08={};_0x114f08[_0x41a12b[0x0]]={'$gte':moment(_0x41a12b[0x1])[_0xf169('0x46')](_0xf169('0x47'))};_0x3b62c3[_0xf169('0x41')]=_[_0xf169('0x2f')](_0x3b62c3[_0xf169('0x41')],_0x114f08);}_0x3b62c3=_[_0xf169('0x2f')]({},_0x3b62c3,_0x437cde[_0xf169('0x30')]);return db[_0xf169('0x3a')][_0xf169('0x13')]({'where':_0x3b62c3[_0xf169('0x41')]})['then'](function(_0x14a72a){_0x2ccae9['count']=_0x14a72a;if(_0x437cde[_0xf169('0x24')]['includeAll']){_0x3b62c3[_0xf169('0x48')]=[{'all':!![]}];}return db[_0xf169('0x3a')]['findAll'](_0x3b62c3);})[_0xf169('0x18')](function(_0x46c407){_0x2ccae9[_0xf169('0x49')]=_0x46c407;return _0x2ccae9;});}})[_0xf169('0x18')](respondWithFilteredResult(_0x18162e,_0x3b62c3))['catch'](handleError(_0x18162e,null));};exports[_0xf169('0x4a')]=function(_0x106078,_0x344ac9){return db[_0xf169('0x1e')][_0xf169('0x31')]({'where':{'id':_0x106078[_0xf169('0x28')]['id']}})['then'](handleEntityNotFound(_0x344ac9,null))[_0xf169('0x18')](function(_0x520877){if(_0x520877){return _0x520877[_0xf169('0x4b')](_0x106078[_0xf169('0x33')][_0xf169('0x36')],_['omit'](_0x106078[_0xf169('0x33')],['ids','id'])||{})['spread'](function(){return db['Tag'][_0xf169('0x22')]({'attributes':['id','name','color'],'where':{'id':_0x106078[_0xf169('0x33')][_0xf169('0x36')]}});})[_0xf169('0x18')](function(_0x5336f4){socket[_0xf169('0x4c')](_0xf169('0x4d'),{'id':Number(_0x106078[_0xf169('0x28')]['id']),'tags':_0x5336f4||[]});return{'id':Number(_0x106078[_0xf169('0x28')]['id']),'tags':_0x5336f4||[]};});}})[_0xf169('0x18')](respondWithResult(_0x344ac9,null))[_0xf169('0x26')](handleError(_0x344ac9,null));};exports['removeTags']=function(_0x219912,_0x27d76b){return db[_0xf169('0x1e')]['find']({'where':{'id':_0x219912[_0xf169('0x28')]['id']}})[_0xf169('0x18')](handleEntityNotFound(_0x27d76b,null))[_0xf169('0x18')](function(_0x4190bf){if(_0x4190bf){return _0x4190bf['removeTags'](_0x219912[_0xf169('0x24')][_0xf169('0x36')]);}})[_0xf169('0x18')](respondWithStatusCode(_0x27d76b,null))['catch'](handleError(_0x27d76b,null));};exports[_0xf169('0x4e')]=function(_0xbecd49,_0x1730e2){var _0x54bbb3=moment()[_0xf169('0x4f')]()[_0xf169('0x50')]();var _0x3fa6db=path['join'](config[_0xf169('0x51')],_0xf169('0x52'),'files',_0xf169('0x53'));var _0x38bcfd=path[_0xf169('0x54')](_0x3fa6db,_0x54bbb3);var _0x555aa1=util[_0xf169('0x46')](_0xf169('0x55'),_0xbecd49[_0xf169('0x28')]['id'],_0x54bbb3);var _0x18852a=path[_0xf169('0x54')](_0x3fa6db,_0x555aa1);var _0x269b5b=[];_0x269b5b[_0xf169('0x56')]({'model':db['User'],'as':_0xf169('0x57'),'attributes':['id',_0xf169('0x58')],'raw':!![]});_0x269b5b[_0xf169('0x56')]({'model':db[_0xf169('0x59')],'as':'Contact','attributes':['id',_0xf169('0x5a'),_0xf169('0x5b')],'raw':!![]});var _0xb333a4=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0xf169('0x33'),_0xf169('0x5c'),_0xf169('0x5d'),_0xf169('0x5e'),'read'],'include':_0x269b5b}];_0xb333a4[_0xf169('0x56')]({'model':db['SmsAccount'],'as':_0xf169('0x5f'),'attributes':['id',_0xf169('0x1a')]});_0xb333a4['push']({'model':db[_0xf169('0x57')],'as':_0xf169('0x60'),'attributes':['id','fullname']});return db[_0xf169('0x1e')][_0xf169('0x31')]({'where':{'id':_0xbecd49[_0xf169('0x28')]['id']},'include':_0xb333a4})[_0xf169('0x18')](handleEntityNotFound(_0x1730e2,null))['then'](function(_0x1faf85){if(_0x1faf85){var _0x3e1903=_0x1faf85['get']({'plain':!![]});fs['mkdirSync'](_0x38bcfd);var _0x19515c={'channel':_0xf169('0x61'),'account':_0x3e1903[_0xf169('0x5f')][_0xf169('0x1a')],'agent':_0x3e1903[_0xf169('0x60')]?_0x3e1903[_0xf169('0x60')]['fullname']:_0xf169('0x62'),'createdAt':moment(_0x3e1903[_0xf169('0x5c')])['format'](_0xf169('0x47'))['toString'](),'closedAt':_0x3e1903['closed']?moment(_0x3e1903[_0xf169('0x63')])[_0xf169('0x46')](_0xf169('0x47'))['toString']():'','disposition':_0x3e1903[_0xf169('0x64')],'messages':_(_0x3e1903[_0xf169('0x65')])[_0xf169('0x43')]({'secret':![]})['map'](function(_0x23fb19){return{'date':moment(_0x23fb19[_0xf169('0x5c')])['format'](_0xf169('0x47'))[_0xf169('0x50')](),'sender':_0x23fb19['direction']==='out'?_0x23fb19[_0xf169('0x57')]?_0x23fb19[_0xf169('0x57')]['fullname']:'System':_0x23fb19[_0xf169('0x66')]['firstName']+(_0x23fb19[_0xf169('0x66')]['lastName']?'\x20'+_0x23fb19[_0xf169('0x66')][_0xf169('0x5b')]:''),'body':_0x23fb19[_0xf169('0x33')],'direction':_0x23fb19[_0xf169('0x5d')]===_0xf169('0x67')?'A':'C','secret':_0x23fb19[_0xf169('0x5e')],'read':_0x23fb19[_0xf169('0x68')]};})['value']()};return ejs[_0xf169('0x69')](path[_0xf169('0x54')](config['root'],_0xf169('0x52'),_0xf169('0x6a'),'downloadInteraction.ejs'),{'interaction':_0x19515c})[_0xf169('0x18')](function(_0x3dda1b){var _0x14b15c=path[_0xf169('0x54')](_0x38bcfd,'transcript-'+_0x3e1903['id']+'-'+_0x54bbb3+_0xf169('0x6b'));var _0x302481={'path':_0x14b15c,'channel':_0xf169('0x61'),'interactionId':_0x3e1903['id']};return pdf['createPdfFromHTML'](_0x3dda1b,_0x302481);})[_0xf169('0x18')](function(){return new BPromise(function(_0xf46078,_0x536b63){zipdir(_0x38bcfd,{'saveTo':_0x18852a},function(_0x71687e,_0x7921ce){if(_0x71687e)return _0x536b63(_0x71687e);return _0xf46078(_0x7921ce);});})['then'](function(){return new BPromise(function(_0x5b0350,_0x25548d){rimraf(_0x38bcfd,function(_0xff798){if(_0xff798)_0x25548d(_0xff798);return _0x5b0350();});});})[_0xf169('0x18')](function(){return _0x1730e2[_0xf169('0x4e')](_0x18852a,_0x555aa1,function(_0x331056){if(_0x331056){console['log'](_0xf169('0x6c'),_0x331056);}else{fs['unlinkSync'](_0x18852a);}});});});}else{return _0x1730e2[_0xf169('0xe')](0xc8);}})['catch'](handleError(_0x1730e2,null));}; \ No newline at end of file diff --git a/server/api/smsInteraction/smsInteraction.events.js b/server/api/smsInteraction/smsInteraction.events.js new file mode 100644 index 0000000..58bf224 --- /dev/null +++ b/server/api/smsInteraction/smsInteraction.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3266=['length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages'];(function(_0x1e78c1,_0x8ec6ad){var _0x3c827c=function(_0x41ce54){while(--_0x41ce54){_0x1e78c1['push'](_0x1e78c1['shift']());}};_0x3c827c(++_0x8ec6ad);}(_0x3266,0x6a));var _0x6326=function(_0x44b3bd,_0x44c97d){_0x44b3bd=_0x44b3bd-0x0;var _0x1efc4a=_0x3266[_0x44b3bd];return _0x1efc4a;};'use strict';var EventEmitter=require(_0x6326('0x0'));var SmsInteraction=require(_0x6326('0x1'))['db'][_0x6326('0x2')];var SmsMessage=require(_0x6326('0x1'))['db'][_0x6326('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x6326('0x4')](0x0);var events={'afterCreate':_0x6326('0x5'),'afterUpdate':_0x6326('0x6'),'afterDestroy':_0x6326('0x7')};function emitEvent(_0x5a6b4d){return function(_0x30b22e,_0x5f38a3,_0x25ecd8){_0x30b22e[_0x6326('0x8')]({'attributes':['id'],'raw':!![]})[_0x6326('0x9')](function(_0x5402e5){_0x30b22e[_0x6326('0xa')]('Users',_0x5402e5[_0x6326('0xb')](function(_0x90c0f){return{'id':_0x90c0f['id']};}));return SmsMessage[_0x6326('0xc')]({'where':{'SmsInteractionId':_0x30b22e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6326('0x9')](function(_0x37a23d){_0x30b22e['setDataValue'](_0x6326('0xd'),_0x37a23d[_0x6326('0xe')]);SmsInteractionEvents[_0x6326('0xf')](_0x5a6b4d+':'+_0x30b22e['id'],_0x30b22e);SmsInteractionEvents[_0x6326('0xf')](_0x5a6b4d,_0x30b22e);_0x25ecd8(null);})[_0x6326('0x10')](_0x25ecd8(null));};}for(var e in events){if(events[_0x6326('0x11')](e)){var event=events[e];SmsInteraction[_0x6326('0x12')](e,emitEvent(event));}}module[_0x6326('0x13')]=SmsInteractionEvents; \ No newline at end of file diff --git a/server/api/smsInteraction/smsInteraction.model.js b/server/api/smsInteraction/smsInteraction.model.js new file mode 100644 index 0000000..feb9892 --- /dev/null +++ b/server/api/smsInteraction/smsInteraction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa2e4=['util','moment','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x1d6e3d,_0x51b0c5){var _0x27d1e4=function(_0x37d6c4){while(--_0x37d6c4){_0x1d6e3d['push'](_0x1d6e3d['shift']());}};_0x27d1e4(++_0x51b0c5);}(_0xa2e4,0x153));var _0x4a2e=function(_0x184a28,_0x5edabd){_0x184a28=_0x184a28-0x0;var _0xdd5f60=_0xa2e4[_0x184a28];return _0xdd5f60;};'use strict';var _=require(_0x4a2e('0x0'));var util=require(_0x4a2e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4a2e('0x2'));var BPromise=require('bluebird');var rp=require(_0x4a2e('0x3'));var fs=require('fs');var path=require(_0x4a2e('0x4'));var rimraf=require(_0x4a2e('0x5'));var config=require(_0x4a2e('0x6'));var attributes=require(_0x4a2e('0x7'));module[_0x4a2e('0x8')]=function(_0x3ef64e,_0x8c64a3){return _0x3ef64e[_0x4a2e('0x9')](_0x4a2e('0xa'),attributes,{'tableName':_0x4a2e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x292b87,_0x185e22,_0x34aa2c){if(_0x292b87[_0x4a2e('0xc')](_0x4a2e('0xd'))){_0x292b87[_0x4a2e('0xe')]=moment()[_0x4a2e('0xf')](_0x4a2e('0x10'));}_0x34aa2c(null,_0x292b87);}}});}; \ No newline at end of file diff --git a/server/api/smsInteraction/smsInteraction.rpc.js b/server/api/smsInteraction/smsInteraction.rpc.js new file mode 100644 index 0000000..3649dff --- /dev/null +++ b/server/api/smsInteraction/smsInteraction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe48b=['AddTags','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','code','error','message','request\x20sent','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','debug','stringify','catch','AddTagsToSmsInteraction','addTags','ids','spread'];(function(_0x540e4e,_0x1dd221){var _0x13bd45=function(_0x5a1ef){while(--_0x5a1ef){_0x540e4e['push'](_0x540e4e['shift']());}};_0x13bd45(++_0x1dd221);}(_0xe48b,0xa5));var _0xbe48=function(_0x34a617,_0x3412b){_0x34a617=_0x34a617-0x0;var _0x41b538=_0xe48b[_0x34a617];return _0x41b538;};'use strict';var _=require(_0xbe48('0x0'));var util=require(_0xbe48('0x1'));var moment=require(_0xbe48('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe48('0x3'));var db=require(_0xbe48('0x4'))['db'];var utils=require(_0xbe48('0x5'));var logger=require(_0xbe48('0x6'))(_0xbe48('0x7'));var config=require(_0xbe48('0x8'));var jayson=require(_0xbe48('0x9'));var client=jayson[_0xbe48('0xa')][_0xbe48('0xb')]({'port':0x232a});config[_0xbe48('0xc')]=_[_0xbe48('0xd')](config[_0xbe48('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbe48('0xe'))[_0xbe48('0xf')](socket);function respondWithRpcPromise(_0x2c6931,_0x587882,_0x3f75e9){return new BPromise(function(_0x192d27,_0x30a4ea){return client[_0xbe48('0x10')](_0x2c6931,_0x3f75e9)[_0xbe48('0x11')](function(_0x241660){logger[_0xbe48('0x12')](_0xbe48('0x13'),_0x587882,'request\x20sent');logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x587882,'request\x20sent',JSON['stringify'](_0x241660));if(_0x241660['error']){if(_0x241660['error'][_0xbe48('0x14')]===0x1f4){logger[_0xbe48('0x15')](_0xbe48('0x13'),_0x587882,_0x241660[_0xbe48('0x15')][_0xbe48('0x16')]);return _0x30a4ea(_0x241660[_0xbe48('0x15')][_0xbe48('0x16')]);}logger[_0xbe48('0x15')](_0xbe48('0x13'),_0x587882,_0x241660[_0xbe48('0x15')][_0xbe48('0x16')]);return _0x192d27(_0x241660['error'][_0xbe48('0x16')]);}else{logger['info'](_0xbe48('0x13'),_0x587882,_0xbe48('0x17'));_0x192d27(_0x241660['result'][_0xbe48('0x16')]);}})['catch'](function(_0x1c2c25){logger[_0xbe48('0x15')](_0xbe48('0x13'),_0x587882,_0x1c2c25);_0x30a4ea(_0x1c2c25);});});}exports[_0xbe48('0x18')]=function(_0x3e9e63){var _0xb249b8=this;return new Promise(function(_0x531f2d,_0x4a5766){return db[_0xbe48('0x19')][_0xbe48('0x1a')](_0x3e9e63[_0xbe48('0x1b')],{'raw':_0x3e9e63['options']?_0x3e9e63[_0xbe48('0x1c')][_0xbe48('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e9e63[_0xbe48('0x1c')]?_0x3e9e63[_0xbe48('0x1c')][_0xbe48('0x1e')]||null:null,'attributes':_0x3e9e63['options']?_0x3e9e63[_0xbe48('0x1c')][_0xbe48('0x1f')]||null:null,'limit':_0x3e9e63['options']?_0x3e9e63['options'][_0xbe48('0x20')]||null:null})['then'](function(_0x59997f){logger[_0xbe48('0x12')](_0xbe48('0x18'),_0x3e9e63);logger[_0xbe48('0x21')]('UpdateSmsInteraction',_0x3e9e63,JSON[_0xbe48('0x22')](_0x59997f));_0x531f2d(_0x59997f);})[_0xbe48('0x23')](function(_0x2ff19d){logger[_0xbe48('0x15')](_0xbe48('0x18'),_0x2ff19d['message'],_0x3e9e63);_0x4a5766(_0xb249b8[_0xbe48('0x15')](0x1f4,_0x2ff19d['message']));});});};exports[_0xbe48('0x24')]=function(_0x355cfb){return new Promise(function(_0x2250ed,_0x458bee){return db[_0xbe48('0x19')]['find']({'where':_0x355cfb[_0xbe48('0x1c')]?_0x355cfb['options'][_0xbe48('0x1e')]||null:null})[_0xbe48('0x11')](function(_0x1997e2){if(_0x1997e2){return _0x1997e2[_0xbe48('0x25')](_0x355cfb[_0xbe48('0x1b')][_0xbe48('0x26')],_['omit'](_0x355cfb[_0xbe48('0x1b')],[_0xbe48('0x26'),'id'])||{});}})[_0xbe48('0x27')](function(_0x208d56){logger[_0xbe48('0x12')](_0xbe48('0x28'),_0x355cfb);logger[_0xbe48('0x21')](_0xbe48('0x28'),_0x355cfb,JSON[_0xbe48('0x22')](_0x208d56));_0x2250ed(_0x208d56);})[_0xbe48('0x23')](function(_0x3942d8){logger[_0xbe48('0x15')](_0xbe48('0x28'),_0x3942d8['message'],_0x355cfb);_0x458bee(_this[_0xbe48('0x15')](0x1f4,_0x3942d8[_0xbe48('0x16')]));});});}; \ No newline at end of file diff --git a/server/api/smsInteraction/smsInteraction.socket.js b/server/api/smsInteraction/smsInteraction.socket.js new file mode 100644 index 0000000..6495634 --- /dev/null +++ b/server/api/smsInteraction/smsInteraction.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfc94=['removeListener','register','smsInteraction:','./smsInteraction.events','update','emit'];(function(_0x2d8546,_0x5e75ee){var _0x4ae61d=function(_0x404e17){while(--_0x404e17){_0x2d8546['push'](_0x2d8546['shift']());}};_0x4ae61d(++_0x5e75ee);}(_0xfc94,0x1ef));var _0x4fc9=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xfc94[_0x413feb];return _0x40ee88;};'use strict';var SmsInteractionEvents=require(_0x4fc9('0x0'));var events=['save','remove',_0x4fc9('0x1')];function createListener(_0x286b45,_0xece44){return function(_0x196ae5){_0xece44[_0x4fc9('0x2')](_0x286b45,_0x196ae5);};}function removeListener(_0x500a19,_0x4c8610){return function(){SmsInteractionEvents[_0x4fc9('0x3')](_0x500a19,_0x4c8610);};}exports[_0x4fc9('0x4')]=function(_0x104877){for(var _0x5d5801=0x0,_0x5c093b=events['length'];_0x5d5801<_0x5c093b;_0x5d5801++){var _0x3fdf67=events[_0x5d5801];var _0x4d74b6=createListener(_0x4fc9('0x5')+_0x3fdf67,_0x104877);SmsInteractionEvents['on'](_0x3fdf67,_0x4d74b6);}}; \ No newline at end of file diff --git a/server/api/smsMessage/index.js b/server/api/smsMessage/index.js new file mode 100644 index 0000000..f54c52f --- /dev/null +++ b/server/api/smsMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6f18=['./smsMessage.controller','get','isAuthenticated','index','describe','/:id','post','tracked','sms','smsmessage:create','create','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x2d85ae,_0x47fd0a){var _0x17c0ec=function(_0x3d18fb){while(--_0x3d18fb){_0x2d85ae['push'](_0x2d85ae['shift']());}};_0x17c0ec(++_0x47fd0a);}(_0x6f18,0x1b4));var _0x86f1=function(_0xe460a,_0x10af0e){_0xe460a=_0xe460a-0x0;var _0x5affc7=_0x6f18[_0xe460a];return _0x5affc7;};'use strict';var multer=require(_0x86f1('0x0'));var util=require('util');var path=require(_0x86f1('0x1'));var timeout=require('connect-timeout');var express=require(_0x86f1('0x2'));var router=express[_0x86f1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x86f1('0x4'));var interaction=require(_0x86f1('0x5'));var config=require('../../config/environment');var controller=require(_0x86f1('0x6'));router[_0x86f1('0x7')]('/',auth[_0x86f1('0x8')](),controller[_0x86f1('0x9')]);router[_0x86f1('0x7')]('/describe',auth[_0x86f1('0x8')](),controller[_0x86f1('0xa')]);router[_0x86f1('0x7')](_0x86f1('0xb'),auth[_0x86f1('0x8')](),controller['show']);router[_0x86f1('0xc')]('/',auth[_0x86f1('0x8')](),interaction[_0x86f1('0xd')](_0x86f1('0xe'),_0x86f1('0xf')),controller[_0x86f1('0x10')]);router[_0x86f1('0xc')](_0x86f1('0x11'),controller['status']);router[_0x86f1('0x12')](_0x86f1('0xb'),auth[_0x86f1('0x8')](),controller[_0x86f1('0x13')]);router[_0x86f1('0x12')](_0x86f1('0x14'),auth['isAuthenticated'](),controller[_0x86f1('0x15')]);router[_0x86f1('0x12')](_0x86f1('0x16'),auth[_0x86f1('0x8')](),controller[_0x86f1('0x17')]);router[_0x86f1('0x18')](_0x86f1('0xb'),auth[_0x86f1('0x8')](),controller['destroy']);module[_0x86f1('0x19')]=router; \ No newline at end of file diff --git a/server/api/smsMessage/smsMessage.attributes.js b/server/api/smsMessage/smsMessage.attributes.js new file mode 100644 index 0000000..93cc93b --- /dev/null +++ b/server/api/smsMessage/smsMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdfc3=['TEXT','medium','BOOLEAN','out','STRING','DATE','sequelize','exports'];(function(_0x4b8b31,_0x241247){var _0x5a790f=function(_0x4ebc26){while(--_0x4ebc26){_0x4b8b31['push'](_0x4b8b31['shift']());}};_0x5a790f(++_0x241247);}(_0xdfc3,0x1de));var _0x3dfc=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0xdfc3[_0x342baa];return _0x1208f3;};'use strict';var Sequelize=require(_0x3dfc('0x0'));module[_0x3dfc('0x1')]={'body':{'type':Sequelize[_0x3dfc('0x2')](_0x3dfc('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x3dfc('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3dfc('0x5')),'defaultValue':_0x3dfc('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3dfc('0x6')](0xbe)},'phone':{'type':Sequelize[_0x3dfc('0x6')]},'readAt':{'type':Sequelize[_0x3dfc('0x7')]},'secret':{'type':Sequelize[_0x3dfc('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3dfc('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}}; \ No newline at end of file diff --git a/server/api/smsMessage/smsMessage.controller.js b/server/api/smsMessage/smsMessage.controller.js new file mode 100644 index 0000000..8c6984d --- /dev/null +++ b/server/api/smsMessage/smsMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe98f=['fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','SmsMessage','includeAll','include','findAll','catch','show','params','intersection','find','create','body','describe','sms-interactions','accept','sms','read','format','UserId','user','agent','SmsInteraction','SmsInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','contact','User','event','rejectmessage','SmsAccountId','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','twilio','plivo','MessageUUID','indexOf','SmsAccount,\x20%s,\x20%s,\x20%s','groupName','DELIVERED','infobip','eml-format','zip-dir','request-promise','moment','util','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','jayson/promise','client','http','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','attributes'];(function(_0x30e0fc,_0x39acb6){var _0x4802ed=function(_0x22a4fd){while(--_0x22a4fd){_0x30e0fc['push'](_0x30e0fc['shift']());}};_0x4802ed(++_0x39acb6);}(_0xe98f,0xde));var _0xfe98=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe98f[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xfe98('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfe98('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe98('0x2'));var moment=require(_0xfe98('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfe98('0x4'));var path=require('path');var sox=require(_0xfe98('0x5'));var csv=require(_0xfe98('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfe98('0x7'));var _=require('lodash');var squel=require(_0xfe98('0x8'));var crypto=require(_0xfe98('0x9'));var jsforce=require(_0xfe98('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xfe98('0x6'));var querystring=require(_0xfe98('0xb'));var Papa=require('papaparse');var Redis=require(_0xfe98('0xc'));var authService=require(_0xfe98('0xd'));var qs=require(_0xfe98('0xe'));var as=require(_0xfe98('0xf'));var hardwareService=require(_0xfe98('0x10'));var logger=require(_0xfe98('0x11'))('api');var utils=require(_0xfe98('0x12'));var config=require(_0xfe98('0x13'));var licenseUtil=require(_0xfe98('0x14'));var db=require(_0xfe98('0x15'))['db'];config[_0xfe98('0x16')]=_['defaults'](config[_0xfe98('0x16')],{'host':_0xfe98('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfe98('0x16')]));require('./smsMessage.socket')[_0xfe98('0x18')](socket);var jayson=require(_0xfe98('0x19'));var client=jayson[_0xfe98('0x1a')][_0xfe98('0x1b')]({'port':0x232c});var client9002=jayson['client'][_0xfe98('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4d92fc,_0x416c4c,_0x8c527c,_0x20d565){return new BPromise(function(_0x476932,_0x4deba7){var _0x56c0f4=_0x20d565||client;return _0x56c0f4[_0xfe98('0x1c')](_0x4d92fc,_0x8c527c)[_0xfe98('0x1d')](function(_0x31bb37){logger['info'](_0xfe98('0x1e'),_0x416c4c,_0xfe98('0x1f'));logger[_0xfe98('0x20')](_0xfe98('0x21'),_0x416c4c,_0xfe98('0x1f'),JSON[_0xfe98('0x22')](_0x31bb37));if(_0x31bb37[_0xfe98('0x23')]){if(_0x31bb37['error'][_0xfe98('0x24')]===0x1f4){logger['error'](_0xfe98('0x1e'),_0x416c4c,_0x31bb37['error']['message']);return _0x4deba7(_0x31bb37[_0xfe98('0x23')][_0xfe98('0x25')]);}logger[_0xfe98('0x23')](_0xfe98('0x1e'),_0x416c4c,_0x31bb37['error'][_0xfe98('0x25')]);return _0x476932(_0x31bb37['error'][_0xfe98('0x25')]);}else{logger[_0xfe98('0x26')](_0xfe98('0x1e'),_0x416c4c,'request\x20sent');_0x476932(_0x31bb37['result'][_0xfe98('0x25')]);}})['catch'](function(_0x7b629e){logger[_0xfe98('0x23')]('SmsMessage,\x20%s,\x20%s',_0x416c4c,_0x7b629e);_0x4deba7(_0x7b629e);});});}function respondWithStatusCode(_0x3dc31d,_0x25f675){_0x25f675=_0x25f675||0xcc;return function(_0x21325b){if(_0x21325b){return _0x3dc31d[_0xfe98('0x27')](_0x25f675);}return _0x3dc31d['status'](_0x25f675)['end']();};}function respondWithResult(_0x5921f0,_0x51da63){_0x51da63=_0x51da63||0xc8;return function(_0xc68e94){if(_0xc68e94){return _0x5921f0[_0xfe98('0x28')](_0x51da63)[_0xfe98('0x29')](_0xc68e94);}};}function respondWithFilteredResult(_0x21c730,_0x1f3fb5){return function(_0x1017b5){if(_0x1017b5){var _0x3029=typeof _0x1f3fb5[_0xfe98('0x2a')]===_0xfe98('0x2b')&&typeof _0x1f3fb5[_0xfe98('0x2c')]==='undefined';var _0x1bed97=_0x1017b5[_0xfe98('0x2d')];var _0x9eb9c9=_0x3029?0x0:_0x1f3fb5[_0xfe98('0x2a')];var _0x3094df=_0x3029?_0x1017b5[_0xfe98('0x2d')]:_0x1f3fb5[_0xfe98('0x2a')]+_0x1f3fb5[_0xfe98('0x2c')];var _0xdbb15e;if(_0x3094df>=_0x1bed97){_0x3094df=_0x1bed97;_0xdbb15e=0xc8;}else{_0xdbb15e=0xce;}_0x21c730[_0xfe98('0x28')](_0xdbb15e);return _0x21c730[_0xfe98('0x2e')](_0xfe98('0x2f'),_0x9eb9c9+'-'+_0x3094df+'/'+_0x1bed97)[_0xfe98('0x29')](_0x1017b5);}return null;};}function patchUpdates(_0x269899){return function(_0x9b0a91){try{jsonpatch['apply'](_0x9b0a91,_0x269899,!![]);}catch(_0x504b58){return BPromise[_0xfe98('0x30')](_0x504b58);}return _0x9b0a91[_0xfe98('0x31')]();};}function saveUpdates(_0x582efe,_0x1a1288){return function(_0x405ebf){if(_0x405ebf){return _0x405ebf[_0xfe98('0x32')](_0x582efe)[_0xfe98('0x1d')](function(_0x22a132){return _0x22a132;});}return null;};}function removeEntity(_0x5ceb1c,_0x2712b9){return function(_0x3a8ad9){if(_0x3a8ad9){return _0x3a8ad9[_0xfe98('0x33')]()[_0xfe98('0x1d')](function(){_0x5ceb1c[_0xfe98('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17dd03,_0x596609){return function(_0x19f0f1){if(!_0x19f0f1){_0x17dd03[_0xfe98('0x27')](0x194);}return _0x19f0f1;};}function handleError(_0x20738c,_0x15a19b){_0x15a19b=_0x15a19b||0x1f4;return function(_0x4131a4){logger[_0xfe98('0x23')](_0x4131a4[_0xfe98('0x34')]);if(_0x4131a4[_0xfe98('0x35')]){delete _0x4131a4['name'];}_0x20738c['status'](_0x15a19b)[_0xfe98('0x36')](_0x4131a4);};}exports[_0xfe98('0x37')]=function(_0x4002c1,_0x35502e){var _0x207a6c={},_0x535a61={},_0x3e996c={'count':0x0,'rows':[]};var _0xb371b=_[_0xfe98('0x38')](db['SmsMessage'][_0xfe98('0x39')],function(_0x30723b){return{'name':_0x30723b[_0xfe98('0x3a')],'type':_0x30723b[_0xfe98('0x3b')]['key']};});_0x535a61[_0xfe98('0x3c')]=_[_0xfe98('0x38')](_0xb371b,'name');_0x535a61[_0xfe98('0x3d')]=_[_0xfe98('0x3e')](_0x4002c1[_0xfe98('0x3d')]);_0x535a61['filters']=_['intersection'](_0x535a61['model'],_0x535a61['query']);_0x207a6c[_0xfe98('0x3f')]=_['intersection'](_0x535a61[_0xfe98('0x3c')],qs[_0xfe98('0x40')](_0x4002c1['query'][_0xfe98('0x40')]));_0x207a6c[_0xfe98('0x3f')]=_0x207a6c[_0xfe98('0x3f')][_0xfe98('0x41')]?_0x207a6c[_0xfe98('0x3f')]:_0x535a61[_0xfe98('0x3c')];if(!_0x4002c1[_0xfe98('0x3d')][_0xfe98('0x42')]('nolimit')){_0x207a6c[_0xfe98('0x2c')]=qs[_0xfe98('0x2c')](_0x4002c1['query'][_0xfe98('0x2c')]);_0x207a6c[_0xfe98('0x2a')]=qs[_0xfe98('0x2a')](_0x4002c1[_0xfe98('0x3d')]['offset']);}_0x207a6c[_0xfe98('0x43')]=qs['sort'](_0x4002c1[_0xfe98('0x3d')][_0xfe98('0x44')]);_0x207a6c[_0xfe98('0x45')]=qs[_0xfe98('0x46')](_['pick'](_0x4002c1[_0xfe98('0x3d')],_0x535a61[_0xfe98('0x46')]),_0xb371b);if(_0x4002c1[_0xfe98('0x3d')][_0xfe98('0x47')]){_0x207a6c[_0xfe98('0x45')]=_[_0xfe98('0x48')](_0x207a6c['where'],{'$or':_[_0xfe98('0x38')](_0xb371b,function(_0x1d430a){if(_0x1d430a[_0xfe98('0x3b')]!==_0xfe98('0x49')){var _0x46d5bb={};_0x46d5bb[_0x1d430a[_0xfe98('0x35')]]={'$like':'%'+_0x4002c1[_0xfe98('0x3d')]['filter']+'%'};return _0x46d5bb;}})});}_0x207a6c=_[_0xfe98('0x48')]({},_0x207a6c,_0x4002c1[_0xfe98('0x4a')]);var _0x183385={'where':_0x207a6c[_0xfe98('0x45')]};return db[_0xfe98('0x4b')]['count'](_0x183385)[_0xfe98('0x1d')](function(_0x5d9cb9){_0x3e996c[_0xfe98('0x2d')]=_0x5d9cb9;if(_0x4002c1[_0xfe98('0x3d')][_0xfe98('0x4c')]){_0x207a6c[_0xfe98('0x4d')]=[{'all':!![]}];}return db[_0xfe98('0x4b')][_0xfe98('0x4e')](_0x207a6c);})[_0xfe98('0x1d')](function(_0x754f39){_0x3e996c['rows']=_0x754f39;return _0x3e996c;})[_0xfe98('0x1d')](respondWithFilteredResult(_0x35502e,_0x207a6c))[_0xfe98('0x4f')](handleError(_0x35502e,null));};exports[_0xfe98('0x50')]=function(_0x1720d3,_0x5ad61e){var _0x26cb3d={'raw':!![],'where':{'id':_0x1720d3[_0xfe98('0x51')]['id']}},_0xc0573c={};_0xc0573c[_0xfe98('0x3c')]=_[_0xfe98('0x3e')](db[_0xfe98('0x4b')]['rawAttributes']);_0xc0573c[_0xfe98('0x3d')]=_[_0xfe98('0x3e')](_0x1720d3[_0xfe98('0x3d')]);_0xc0573c[_0xfe98('0x46')]=_[_0xfe98('0x52')](_0xc0573c['model'],_0xc0573c['query']);_0x26cb3d[_0xfe98('0x3f')]=_[_0xfe98('0x52')](_0xc0573c[_0xfe98('0x3c')],qs[_0xfe98('0x40')](_0x1720d3[_0xfe98('0x3d')][_0xfe98('0x40')]));_0x26cb3d[_0xfe98('0x3f')]=_0x26cb3d[_0xfe98('0x3f')][_0xfe98('0x41')]?_0x26cb3d[_0xfe98('0x3f')]:_0xc0573c['model'];if(_0x1720d3[_0xfe98('0x3d')]['includeAll']){_0x26cb3d[_0xfe98('0x4d')]=[{'all':!![]}];}_0x26cb3d=_[_0xfe98('0x48')]({},_0x26cb3d,_0x1720d3[_0xfe98('0x4a')]);return db['SmsMessage'][_0xfe98('0x53')](_0x26cb3d)['then'](handleEntityNotFound(_0x5ad61e,null))['then'](respondWithResult(_0x5ad61e,null))[_0xfe98('0x4f')](handleError(_0x5ad61e,null));};exports[_0xfe98('0x54')]=function(_0x2d7246,_0x3dfb51){return db[_0xfe98('0x4b')][_0xfe98('0x54')](_0x2d7246['body'],{})[_0xfe98('0x1d')](respondWithResult(_0x3dfb51,0xc9))['catch'](handleError(_0x3dfb51,null));};exports[_0xfe98('0x32')]=function(_0x4a5690,_0x54823a){if(_0x4a5690['body']['id']){delete _0x4a5690[_0xfe98('0x55')]['id'];}return db[_0xfe98('0x4b')][_0xfe98('0x53')]({'where':{'id':_0x4a5690[_0xfe98('0x51')]['id']}})['then'](handleEntityNotFound(_0x54823a,null))[_0xfe98('0x1d')](saveUpdates(_0x4a5690['body'],null))[_0xfe98('0x1d')](respondWithResult(_0x54823a,null))[_0xfe98('0x4f')](handleError(_0x54823a,null));};exports['destroy']=function(_0x7096d5,_0x6299e9){return db[_0xfe98('0x4b')][_0xfe98('0x53')]({'where':{'id':_0x7096d5['params']['id']}})[_0xfe98('0x1d')](handleEntityNotFound(_0x6299e9,null))[_0xfe98('0x1d')](removeEntity(_0x6299e9,null))[_0xfe98('0x4f')](handleError(_0x6299e9,null));};exports[_0xfe98('0x56')]=function(_0x4ab9c4,_0x4192e0){return db['SmsMessage'][_0xfe98('0x56')]()[_0xfe98('0x1d')](respondWithResult(_0x4192e0,null))[_0xfe98('0x4f')](handleError(_0x4192e0,null));};var interaction_log=require(_0xfe98('0x11'))(_0xfe98('0x57'));exports[_0xfe98('0x58')]=function(_0x4435d1,_0x247044,_0x36a92f){var _0x3b8626={'agent':{},'channel':_0xfe98('0x59')};if(_0x4435d1[_0xfe98('0x55')]['id']){delete _0x4435d1[_0xfe98('0x55')]['id'];}_0x4435d1['body'][_0xfe98('0x5a')]=!![];_0x4435d1['body']['readAt']=moment()[_0xfe98('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4435d1[_0xfe98('0x55')][_0xfe98('0x5c')]=_0x4435d1[_0xfe98('0x55')][_0xfe98('0x5c')]||_0x4435d1[_0xfe98('0x5d')]['id'];_0x3b8626[_0xfe98('0x5e')]['id']=_0x4435d1[_0xfe98('0x55')][_0xfe98('0x5c')];return db[_0xfe98('0x4b')][_0xfe98('0x53')]({'where':{'id':_0x4435d1[_0xfe98('0x51')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x247044,null))[_0xfe98('0x1d')](saveUpdates(_0x4435d1[_0xfe98('0x55')],null))[_0xfe98('0x1d')](function(_0x3d86ea){if(_0x3d86ea){_0x3b8626[_0xfe98('0x25')]=_0x3d86ea['get']({'plain':!![]});return db[_0xfe98('0x5f')][_0xfe98('0x53')]({'where':{'id':_0x3d86ea[_0xfe98('0x60')]}});}return null;})[_0xfe98('0x1d')](handleEntityNotFound(_0x247044,null))[_0xfe98('0x1d')](function(_0x15f053){if(_0x15f053){return _0x15f053['update']({'UserId':_0x4435d1[_0xfe98('0x55')][_0xfe98('0x5c')],'read1stAt':_[_0xfe98('0x61')](_0x15f053[_0xfe98('0x62')])?moment()[_0xfe98('0x5b')](_0xfe98('0x63')):undefined});}return null;})[_0xfe98('0x1d')](function(_0x534f43){if(_0x534f43){_0x3b8626[_0xfe98('0x64')]=_0x534f43[_0xfe98('0x65')]({'plain':!![]});interaction_log[_0xfe98('0x26')](_0xfe98('0x66'),_0x4435d1[_0xfe98('0x5d')]['id'],_0x4435d1[_0xfe98('0x5d')][_0xfe98('0x35')],_0x4435d1[_0xfe98('0x5d')][_0xfe98('0x67')],_0x3b8626[_0xfe98('0x64')]['id'],_0x4435d1[_0xfe98('0x55')]?JSON[_0xfe98('0x22')](_0x4435d1[_0xfe98('0x55')]):_0xfe98('0x68'));return respondWithRpcPromise(_0xfe98('0x69'),_0xfe98('0x6a'),_0x3b8626);}return null;})[_0xfe98('0x1d')](function(_0x172754){var _0x259e75=_0xfe98('0x6b')+_0x172754[_0xfe98('0x25')][_0xfe98('0x6c')];return db[_0xfe98('0x6d')][_0xfe98('0x3d')](_0x259e75,{'type':db[_0xfe98('0x6e')][_0xfe98('0x6f')][_0xfe98('0x70')],'raw':!![]})['then'](function(_0x5b0125){return _0x5b0125;});})[_0xfe98('0x1d')](function(_0x1ab844){if(_0x1ab844){_0x3b8626[_0xfe98('0x25')]['contact']=_0x1ab844[0x0];if(!_0x4435d1['body'][_0xfe98('0x5c')])return;return db['User'][_0xfe98('0x53')]({'where':{'id':_0x4435d1[_0xfe98('0x55')]['UserId'],'role':_0xfe98('0x5e')},'attributes':['id',_0xfe98('0x35'),_0xfe98('0x71'),_0xfe98('0x72'),_0xfe98('0x73')],'raw':!![]});}return null;})[_0xfe98('0x1d')](function(_0x271c09){if(!_0x271c09)return null;_0x3b8626[_0xfe98('0x25')][_0xfe98('0x5e')]=_0x271c09;return _0x3b8626;})['then'](function(_0x2c9d80){if(_0x2c9d80){if(_0x4435d1['body'][_0xfe98('0x74')]){_0x3b8626[_0xfe98('0x25')][_0xfe98('0x75')]=util[_0xfe98('0x5b')](_0xfe98('0x76'),_0x4435d1[_0xfe98('0x5d')][_0xfe98('0x35')]);_0x3b8626[_0xfe98('0x25')][_0xfe98('0x77')]=_0x3b8626[_0xfe98('0x77')];_0x3b8626[_0xfe98('0x25')][_0xfe98('0x78')]=_0x3b8626[_0xfe98('0x77')];_0x3b8626['message']['event']=_0xfe98('0x58');return respondWithRpcPromise(_0xfe98('0x79'),_0xfe98('0x79'),{'event':_0xfe98('0x7a'),'message':_0x3b8626[_0xfe98('0x25')]},client9002)[_0xfe98('0x1d')](function(){return _0x3b8626;});}return _0x3b8626;}return null;})[_0xfe98('0x1d')](respondWithResult(_0x247044,null))[_0xfe98('0x4f')](handleError(_0x247044,null));};var interaction_log=require(_0xfe98('0x11'))(_0xfe98('0x57'));exports[_0xfe98('0x30')]=function(_0x25dea1,_0x162294,_0x27f70e){var _0x3ddb98={'agent':{},'channel':_0xfe98('0x59')};if(_0x25dea1['body']['id']){delete _0x25dea1[_0xfe98('0x55')]['id'];}_0x25dea1[_0xfe98('0x55')][_0xfe98('0x5c')]=_0x25dea1['body'][_0xfe98('0x5c')]||_0x25dea1[_0xfe98('0x5d')]['id'];_0x3ddb98[_0xfe98('0x5e')]['id']=_0x25dea1[_0xfe98('0x55')][_0xfe98('0x5c')];return db['SmsMessage']['find']({'where':{'id':_0x25dea1[_0xfe98('0x51')]['id'],'UserId':null}})[_0xfe98('0x1d')](handleEntityNotFound(_0x162294,null))['then'](function(_0x56d390){if(_0x56d390){_0x3ddb98['message']=_0x56d390['get']({'plain':!![]});return db[_0xfe98('0x5f')][_0xfe98('0x53')]({'where':{'id':_0x56d390[_0xfe98('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x162294,null))[_0xfe98('0x1d')](function(_0x450c06){if(_0x450c06){_0x3ddb98[_0xfe98('0x64')]=_0x450c06[_0xfe98('0x65')]({'plain':!![]});interaction_log[_0xfe98('0x26')](_0xfe98('0x7b'),_0x25dea1[_0xfe98('0x5d')]['id'],_0x25dea1['user']['name'],_0x25dea1['user'][_0xfe98('0x67')],_0x3ddb98[_0xfe98('0x64')]['id'],_0x25dea1[_0xfe98('0x55')]?JSON[_0xfe98('0x22')](_0x25dea1[_0xfe98('0x55')]):_0xfe98('0x68'));return respondWithRpcPromise(_0xfe98('0x7c'),_0xfe98('0x7d'),_0x3ddb98);}return null;})['then'](function(_0x5df11e){var _0x55322a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5df11e[_0xfe98('0x25')][_0xfe98('0x6c')];return db[_0xfe98('0x6d')][_0xfe98('0x3d')](_0x55322a,{'type':db[_0xfe98('0x6e')][_0xfe98('0x6f')]['SELECT'],'raw':!![]})[_0xfe98('0x1d')](function(_0x2798d9){return _0x2798d9;});})['then'](function(_0x4a9028){if(_0x4a9028){_0x3ddb98[_0xfe98('0x25')][_0xfe98('0x7e')]=_0x4a9028[0x0];if(!_0x25dea1['body'][_0xfe98('0x5c')])return;return db[_0xfe98('0x7f')]['find']({'where':{'id':_0x25dea1[_0xfe98('0x55')]['UserId'],'role':_0xfe98('0x5e')},'attributes':['id',_0xfe98('0x35'),_0xfe98('0x71'),_0xfe98('0x72'),'internal'],'raw':!![]});}return null;})[_0xfe98('0x1d')](function(_0x42921a){if(!_0x42921a)return null;_0x3ddb98[_0xfe98('0x25')]['agent']=_0x42921a;return _0x3ddb98;})[_0xfe98('0x1d')](function(_0x406758){if(_0x406758){_0x406758['message'][_0xfe98('0x75')]=util[_0xfe98('0x5b')](_0xfe98('0x76'),_0x25dea1[_0xfe98('0x5d')]['name']);_0x406758[_0xfe98('0x25')][_0xfe98('0x77')]=_0x3ddb98[_0xfe98('0x77')];_0x406758[_0xfe98('0x25')]['motionChannel']=_0x3ddb98['channel'];_0x406758['message'][_0xfe98('0x80')]=_0xfe98('0x30');respondWithRpcPromise(_0xfe98('0x79'),_0xfe98('0x79'),{'event':_0xfe98('0x81'),'message':_0x406758[_0xfe98('0x25')]},client9002);return _0x3ddb98;}return null;})[_0xfe98('0x1d')](respondWithResult(_0x162294,null))[_0xfe98('0x4f')](handleError(_0x162294,null));};exports[_0xfe98('0x28')]=function(_0x1f21f7,_0xd367d9,_0x5cf971){if(_0x1f21f7[_0xfe98('0x55')]['id']){delete _0x1f21f7['body']['id'];}var _0xf1118;return db[_0xfe98('0x4b')][_0xfe98('0x53')]({'where':{'id':_0x1f21f7[_0xfe98('0x51')]['id']}})['then'](handleEntityNotFound(_0xd367d9,null))['then'](function(_0x1598db){if(_0x1598db){_0xf1118=_0x1598db;return db['SmsAccount'][_0xfe98('0x53')]({'where':{'id':_0x1598db[_0xfe98('0x82')]}});}})[_0xfe98('0x1d')](handleEntityNotFound(_0xd367d9,null))[_0xfe98('0x1d')](function(_0x362854){if(_0x362854){logger[_0xfe98('0x20')](_0xfe98('0x21'),_0xfe98('0x28'),_0xfe98('0x83'),_0x362854[_0xfe98('0x3b')],util[_0xfe98('0x84')](_0x1f21f7['body'],{'showHidden':![],'depth':null}));switch(_0x362854[_0xfe98('0x3b')]){case'twilio':if(_0x1f21f7[_0xfe98('0x55')]['MessageSid']&&_0x1f21f7[_0xfe98('0x55')][_0xfe98('0x85')]===_0xf1118[_0xfe98('0x86')]){return _0xf1118[_0xfe98('0x32')]({'read':!![]});}else{logger[_0xfe98('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfe98('0x28'),_0xfe98('0x87'),util['inspect'](_0x1f21f7[_0xfe98('0x55')],{'showHidden':![],'depth':null}));}break;case _0xfe98('0x88'):if(_0x1f21f7[_0xfe98('0x55')][_0xfe98('0x89')]&&_0x1f21f7[_0xfe98('0x55')][_0xfe98('0x89')]===_0xf1118[_0xfe98('0x86')]&&_[_0xfe98('0x8a')](['sent','delivered'],_0x1f21f7[_0xfe98('0x55')]['Status'])>=0x0){return _0xf1118[_0xfe98('0x32')]({'read':!![]});}else{logger[_0xfe98('0x23')](_0xfe98('0x8b'),_0xfe98('0x28'),'plivio',util['inspect'](_0x1f21f7[_0xfe98('0x55')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4b0c1e=_0x1f21f7[_0xfe98('0x55')]['results'][0x0];if(_0x4b0c1e[_0xfe98('0x28')][_0xfe98('0x8c')]===_0xfe98('0x8d')){return _0xf1118[_0xfe98('0x32')]({'read':!![]});}else{logger[_0xfe98('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfe98('0x28'),_0xfe98('0x8e'),util[_0xfe98('0x84')](_0x1f21f7[_0xfe98('0x55')],{'showHidden':![],'depth':null}));}break;}return _0xf1118;}})[_0xfe98('0x1d')](respondWithResult(_0xd367d9,null))[_0xfe98('0x4f')](handleError(_0xd367d9,null));}; \ No newline at end of file diff --git a/server/api/smsMessage/smsMessage.events.js b/server/api/smsMessage/smsMessage.events.js new file mode 100644 index 0000000..30da7e4 --- /dev/null +++ b/server/api/smsMessage/smsMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5af1=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','emit'];(function(_0x3b720b,_0x5ec82e){var _0x1ce3fe=function(_0x167a43){while(--_0x167a43){_0x3b720b['push'](_0x3b720b['shift']());}};_0x1ce3fe(++_0x5ec82e);}(_0x5af1,0xfd));var _0x15af=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0x5af1[_0x4e93a9];return _0x43013c;};'use strict';var EventEmitter=require(_0x15af('0x0'));var SmsMessage=require(_0x15af('0x1'))['db'][_0x15af('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x15af('0x3')](0x0);var events={'afterCreate':_0x15af('0x4'),'afterUpdate':_0x15af('0x5'),'afterDestroy':'remove'};function emitEvent(_0x304117){return function(_0x40afd9,_0x5c1f3b,_0x47ac6e){SmsMessageEvents[_0x15af('0x6')](_0x304117+':'+_0x40afd9['id'],_0x40afd9);SmsMessageEvents['emit'](_0x304117,_0x40afd9);_0x47ac6e(null);};}for(var e in events){if(events[_0x15af('0x7')](e)){var event=events[e];SmsMessage[_0x15af('0x8')](e,emitEvent(event));}}module[_0x15af('0x9')]=SmsMessageEvents; \ No newline at end of file diff --git a/server/api/smsMessage/smsMessage.model.js b/server/api/smsMessage/smsMessage.model.js new file mode 100644 index 0000000..4e1d4ad --- /dev/null +++ b/server/api/smsMessage/smsMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9528=['body','remote','/api/sms/messages/','/status?token=','token','sid','update','error','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','skebby','username','smsMethod','sender','login?username=','&password=','password','GET','split','POST','user_key','internal_order_id','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','deliveryReport','clicksend','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','toString','base64','http_code','data','head','message_id','clickSend','authId','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','plivo','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','login','text','keys','sort','length','apiKey','md5','digest','hex','signature=','/external/get/send.php?','id_sms','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','accountId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','messageId','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','SmsInteraction','findOne','then','createdAt','catch','find','SmsAccountId','type','twilio','authToken','phone','accountSid','messages','create'];(function(_0x38f82a,_0x7d8152){var _0x339806=function(_0x4ae87d){while(--_0x4ae87d){_0x38f82a['push'](_0x38f82a['shift']());}};_0x339806(++_0x7d8152);}(_0x9528,0x1bc));var _0x8952=function(_0x5e42a3,_0x5b36a9){_0x5e42a3=_0x5e42a3-0x0;var _0x17d0a6=_0x9528[_0x5e42a3];return _0x17d0a6;};'use strict';var _=require(_0x8952('0x0'));var util=require(_0x8952('0x1'));var logger=require(_0x8952('0x2'))(_0x8952('0x3'));var moment=require(_0x8952('0x4'));var BPromise=require(_0x8952('0x5'));var rp=require(_0x8952('0x6'));var fs=require('fs');var path=require(_0x8952('0x7'));var rimraf=require(_0x8952('0x8'));var config=require(_0x8952('0x9'));var attributes=require(_0x8952('0xa'));module[_0x8952('0xb')]=function(_0x24eebd,_0x142f2f){return _0x24eebd[_0x8952('0xc')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x8952('0xd')]},{'name':'fti_sms_messages','fields':['body'],'type':_0x8952('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2f3db6,_0xacbf1d,_0x37ff42){var _0x3c6e10=_0x24eebd[_0x8952('0xf')];var _0xd22858=_0x2f3db6[_0x8952('0x10')]({'plain':!![]});if(_0xd22858[_0x8952('0x11')][_0x8952('0x12')]()==='in'||_0xd22858[_0x8952('0x11')][_0x8952('0x12')]()===_0x8952('0x13')&&!_0xd22858[_0x8952('0x14')]&&!_[_0x8952('0x15')](_0xd22858['UserId'])&&!_[_0x8952('0x15')](_0xd22858['SmsInteractionId'])){_0x3c6e10[_0x8952('0x16')][_0x8952('0x17')]({'where':{'id':_0xd22858['SmsInteractionId']}})[_0x8952('0x18')](function(_0x466474){if(_0x466474){_0x466474['update']({'lastMsgAt':_0xd22858[_0x8952('0x19')],'lastMsgDirection':_0xd22858[_0x8952('0x11')][_0x8952('0x12')]()});}})[_0x8952('0x1a')](function(_0x526a3d){console['error'](_0x526a3d);});}if(_0xd22858[_0x8952('0x11')]===_0x8952('0x13')&&!_0xd22858['secret']){var _0x35aeed;_0x3c6e10['SmsAccount'][_0x8952('0x1b')]({'where':{'id':_0xd22858[_0x8952('0x1c')]},'raw':!![]})[_0x8952('0x18')](function(_0x5ad27b){_0x35aeed=_0x5ad27b;if(_0x35aeed&&_0x35aeed[_0x8952('0x1d')]){switch(_0x35aeed[_0x8952('0x1d')]){case _0x8952('0x1e'):var _0x4fb74a=require(_0x8952('0x1e'));if(_0x35aeed['accountSid']&&_0x35aeed[_0x8952('0x1f')]&&_0x35aeed[_0x8952('0x20')]){var _0x32fee5=new _0x4fb74a(_0x35aeed[_0x8952('0x21')],_0x35aeed[_0x8952('0x1f')]);_0x32fee5[_0x8952('0x22')][_0x8952('0x23')]({'body':_0xd22858[_0x8952('0x24')],'to':_0xd22858[_0x8952('0x20')],'from':_0x35aeed['phone'],'statusCallback':_0x35aeed[_0x8952('0x25')]+_0x8952('0x26')+_0xd22858['id']+_0x8952('0x27')+_0x35aeed[_0x8952('0x28')]})['then'](function(_0x5b76bc){if(_0x5b76bc[_0x8952('0x29')]){return _0x2f3db6[_0x8952('0x2a')]({'messageId':_0x5b76bc['sid']});}})['catch'](function(_0x10fbac){logger[_0x8952('0x2b')](_0x8952('0x2c'),'afterCreate',_0x8952('0x1e'),util[_0x8952('0x2d')](_0x10fbac,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x1e'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x8952('0x2f'):var _0x2972e6='https://api.skebby.it/API/v1.0/REST/';if(_0x35aeed[_0x8952('0x30')]&&_0x35aeed['password']){var _0x1657dd={'recipient':[_0xd22858[_0x8952('0x20')]],'message':_0xd22858[_0x8952('0x24')],'message_type':_0x35aeed[_0x8952('0x31')]};if(_0x35aeed[_0x8952('0x31')]&&_0x35aeed[_0x8952('0x31')]!=='SI'){_0x1657dd[_0x8952('0x32')]=_0x35aeed[_0x8952('0x20')];}var _0x3ba6d5={'url':_0x2972e6+_0x8952('0x33')+_0x35aeed[_0x8952('0x30')]+_0x8952('0x34')+_0x35aeed[_0x8952('0x35')],'method':_0x8952('0x36')};rp(_0x3ba6d5)['then'](function(_0x129f76){var _0x2a41e6=_0x129f76[_0x8952('0x37')](';');var _0x40ef55={'user_key':_0x2a41e6[0x0],'session_key':_0x2a41e6[0x1]};_0x3ba6d5={'url':_0x2972e6+'sms','method':_0x8952('0x38'),'headers':{'user_key':_0x40ef55[_0x8952('0x39')],'Session_key':_0x40ef55['session_key']},'json':!![],'body':_0x1657dd};return rp(_0x3ba6d5);})[_0x8952('0x18')](function(_0x25f05c){if(_0x25f05c['total_sent']>=0x1){var _0x45b430={'messageId':_0x25f05c[_0x8952('0x3a')]};if(_0x35aeed[_0x8952('0x31')]!=='GP'||!_0x35aeed['deliveryReport']){_0x45b430[_0x8952('0x3b')]=!![];}return _0x2f3db6[_0x8952('0x2a')](_0x45b430);}else{return logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x2f'),util[_0x8952('0x2d')](_0x25f05c,{'showHidden':![],'depth':null}));}})[_0x8952('0x1a')](function(_0x4dd23a){return logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),_0x8952('0x2f'),util[_0x8952('0x2d')](_0x4dd23a,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),'skebby',_0x8952('0x3c'));}break;case _0x8952('0x3d'):if(_0x35aeed[_0x8952('0x1f')]){var _0x314602={'recipient':_0xd22858[_0x8952('0x20')],'message':_0xd22858['body'],'sender':_0x35aeed[_0x8952('0x3e')]||_0x35aeed[_0x8952('0x20')],'authorization':_0x35aeed['authToken']};var _0xacbf1d={'method':_0x8952('0x38'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x314602,'json':!![]};rp(_0xacbf1d)[_0x8952('0x18')](function(_0x1197a7){var _0x2730b3={'messageId':_0x1197a7[_0x8952('0x3f')]};if(!_0x35aeed[_0x8952('0x40')]){_0x2730b3[_0x8952('0x3b')]=!![];}return _0x2f3db6['update'](_0x2730b3);})['catch'](function(_0x24b94b){logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),_0x8952('0x3d'),util[_0x8952('0x2d')](_0x24b94b,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x3d'),'Missing\x20parameters:\x20authToken');}break;case _0x8952('0x41'):if(_0x35aeed[_0x8952('0x30')]&&_0x35aeed[_0x8952('0x35')]){var _0x314602={'messages':[{'source':_0x8952('0x42'),'to':_0xd22858[_0x8952('0x20')],'body':_0xd22858['body'],'from':_0x35aeed[_0x8952('0x3e')]||_0x35aeed[_0x8952('0x20')]}]};var _0x2ea7c3=util['format'](_0x8952('0x43'),_0x35aeed['username'],_0x35aeed[_0x8952('0x35')]);var _0xacbf1d={'method':_0x8952('0x38'),'uri':_0x8952('0x44'),'body':_0x314602,'headers':{'Authorization':util[_0x8952('0x45')]('Basic\x20%s',new Buffer(_0x2ea7c3)[_0x8952('0x46')](_0x8952('0x47')))},'json':!![]};rp(_0xacbf1d)[_0x8952('0x18')](function(_0xef00be){if(_0xef00be[_0x8952('0x48')]>=0xc8&&_0xef00be[_0x8952('0x48')]<=0xce){if(_0xef00be['data']&&_0xef00be[_0x8952('0x49')]['queued_count']>0x0){var _0x46522f=_[_0x8952('0x4a')](_0xef00be[_0x8952('0x49')][_0x8952('0x22')]);var _0x36b433={'messageId':_0x46522f[_0x8952('0x4b')]};if(!_0x35aeed[_0x8952('0x40')]){_0x36b433[_0x8952('0x3b')]=!![];}return _0x2f3db6[_0x8952('0x2a')](_0x36b433);}else{logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),_0x8952('0x4c'),util[_0x8952('0x2d')](_0xef00be,{'showHidden':![],'depth':null}));}}else{logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','clickSend',util['inspect'](_0xef00be,{'showHidden':![],'depth':null}));}})[_0x8952('0x1a')](function(_0x5959d0){logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x4c'),util['inspect'](_0x5959d0,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x4c'),_0x8952('0x3c'));}break;case'plivo':if(_0x35aeed[_0x8952('0x4d')]&&_0x35aeed['authToken']){var _0x314602={'dst':_0xd22858[_0x8952('0x20')],'text':_0xd22858['body'],'src':_0x35aeed['senderString']||_0x35aeed[_0x8952('0x20')],'url':_0x35aeed[_0x8952('0x25')]+'/api/sms/messages/'+_0xd22858['id']+_0x8952('0x27')+_0x35aeed[_0x8952('0x28')]};var _0x2ea7c3=util[_0x8952('0x45')](_0x8952('0x43'),_0x35aeed[_0x8952('0x4d')],_0x35aeed['authToken']);var _0xacbf1d={'method':_0x8952('0x38'),'uri':util[_0x8952('0x45')](_0x8952('0x4e'),_0x35aeed[_0x8952('0x4d')]),'body':_0x314602,'headers':{'Authorization':util[_0x8952('0x45')](_0x8952('0x4f'),new Buffer(_0x2ea7c3)['toString'](_0x8952('0x47')))},'json':!![]};rp(_0xacbf1d)[_0x8952('0x18')](function(_0x2e88dc){var _0x391691={'messageId':_0x2e88dc['message_uuid'][0x0]};return _0x2f3db6['update'](_0x391691);})[_0x8952('0x1a')](function(_0x5c6e26){logger[_0x8952('0x2b')](_0x8952('0x2c'),'afterCreate',_0x8952('0x50'),util[_0x8952('0x2d')](_0x5c6e26,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),'plivo',_0x8952('0x51'));}break;case'infobip':if(_0x35aeed[_0x8952('0x30')]&&_0x35aeed[_0x8952('0x35')]){if(_0x35aeed[_0x8952('0x52')]){var _0x46aa19={'method':_0x8952('0x38'),'uri':_0x35aeed[_0x8952('0x52')]+_0x8952('0x53'),'body':{'username':_0x35aeed[_0x8952('0x30')],'password':_0x35aeed[_0x8952('0x35')]},'json':!![]};return rp(_0x46aa19)['then'](function(_0x2b5d2d){var _0x416917={'method':_0x8952('0x38'),'uri':_0x35aeed[_0x8952('0x52')]+_0x8952('0x54'),'body':{'messages':[{'from':_0x35aeed[_0x8952('0x20')],'destinations':[{'to':_0xd22858[_0x8952('0x20')]}],'text':_0xd22858[_0x8952('0x24')],'notifyUrl':_0x35aeed[_0x8952('0x25')]+'/api/sms/messages/'+_0xd22858['id']+_0x8952('0x27')+_0x35aeed[_0x8952('0x28')],'notifyContentType':_0x8952('0x55'),'callbackData':_0x35aeed[_0x8952('0x20')]+';'+_0xd22858[_0x8952('0x24')]}]},'headers':{'Authorization':_0x8952('0x56')+_0x2b5d2d[_0x8952('0x28')]},'json':!![]};return rp(_0x416917)[_0x8952('0x18')](function(_0x5a22b2){if(_0x5a22b2[_0x8952('0x22')]){var _0x1a7ae6={'messageId':_0x5a22b2[_0x8952('0x22')][0x0]['messageId']};if(!_0x35aeed['deliveryReport']){_0x1a7ae6['read']=!![];}return _0x2f3db6[_0x8952('0x2a')](_0x1a7ae6);}else{return logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x57'),util['inspect'](_0x5a22b2,{'showHidden':![],'depth':null}));}});})[_0x8952('0x1a')](function(_0x5ba1de){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),_0x8952('0x57'),util[_0x8952('0x2d')](_0x5ba1de,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x57'),_0x8952('0x58'));}}else{logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','infobip',_0x8952('0x3c'));}break;case _0x8952('0x59'):var _0x4bc649=require(_0x8952('0x5a'));if(_0x35aeed['apiKey']){var _0x15ed5b={};_0x15ed5b[_0x8952('0x5b')]=_0x35aeed['username'];_0x15ed5b['phone']=_0xd22858[_0x8952('0x20')];_0x15ed5b[_0x8952('0x32')]=_0x35aeed['phone'];_0x15ed5b[_0x8952('0x5c')]=_0xd22858[_0x8952('0x24')];_0x15ed5b['timestamp']=+new Date();var _0x386a7b='';var _0x3ecde4='';var _0x4bc077=Object[_0x8952('0x5d')](_0x15ed5b);_0x4bc077[_0x8952('0x5e')]();for(var _0x4804e7=0x0;_0x4804e7<_0x4bc077[_0x8952('0x5f')];_0x4804e7++){if(_0x386a7b!=''){_0x386a7b+='&';}_0x386a7b+=_0x4bc077[_0x4804e7]+'='+encodeURIComponent(_0x15ed5b[_0x4bc077[_0x4804e7]]);_0x3ecde4+=_0x15ed5b[_0x4bc077[_0x4804e7]];}_0x3ecde4+=_0x35aeed[_0x8952('0x60')];_0x3ecde4=_0x4bc649['createHash'](_0x8952('0x61'))[_0x8952('0x2a')](_0x3ecde4)[_0x8952('0x62')](_0x8952('0x63'));if(_0x386a7b!==''){_0x386a7b+='&';}_0x386a7b+=_0x8952('0x64')+_0x3ecde4;var _0x3ba6d5={'method':_0x8952('0x36'),'uri':_0x35aeed['baseUrl']+_0x8952('0x65')+_0x386a7b,'json':!![]};return rp(_0x3ba6d5)['then'](function(_0x18f4b){var _0x5bacd9=Object[_0x8952('0x5d')](_0x18f4b);if(_0x18f4b[_0x5bacd9[0x0]]['error']&&parseInt(_0x18f4b[_0x5bacd9[0x0]][_0x8952('0x2b')])===0x0){var _0x506e76={'messageId':_0x18f4b[_0x5bacd9[0x0]][_0x8952('0x66')]};if(!_0x35aeed[_0x8952('0x40')]){_0x506e76[_0x8952('0x3b')]=!![];}return _0x2f3db6['update'](_0x506e76);}else{return logger[_0x8952('0x2b')](_0x8952('0x2c'),'afterCreate','csc',util[_0x8952('0x2d')](_0x18f4b[_0x8952('0x2b')],{'showHidden':![],'depth':null}));}})[_0x8952('0x1a')](function(_0x509a67){return logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x59'),util[_0x8952('0x2d')](_0x509a67,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),_0x8952('0x59'),'Missing\x20parameters:\x20apiKey');}break;case _0x8952('0x67'):if(_0x35aeed[_0x8952('0x60')]){var _0xbc83ad={'method':_0x8952('0x38'),'uri':_0x8952('0x68'),'headers':{'Authorization':_0x35aeed[_0x8952('0x60')]},'body':{'content':_0xd22858[_0x8952('0x24')],'to':[_0xd22858[_0x8952('0x20')]],'from':_0x35aeed[_0x8952('0x20')],'binary':![],'clientMessageId':_0x8952('0x69'),'charset':_0x8952('0x6a')},'json':!![]};rp(_0xbc83ad)[_0x8952('0x18')](function(_0x38eb16){if(!_0x38eb16[_0x8952('0x2b')]){var _0x19649c={'messageId':_0x38eb16['messages'][0x0][_0x8952('0x6b')]};if(!_0x35aeed['deliveryReport']){_0x19649c[_0x8952('0x3b')]=!![];}return _0x2f3db6[_0x8952('0x2a')](_0x19649c);}else{return logger[_0x8952('0x2b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8952('0x2e'),_0x8952('0x67'),util[_0x8952('0x2d')](_0x38eb16['error'],{'showHidden':![],'depth':null}));}})[_0x8952('0x1a')](function(_0x43bda6){return logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x67'),util['inspect'](_0x43bda6,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x67'),'Missing\x20parameters:\x20apiKey');}break;case _0x8952('0x6c'):if(_0x35aeed[_0x8952('0x30')]&&_0x35aeed[_0x8952('0x35')]){var _0x2ea7c3=util['format'](_0x8952('0x43'),_0x35aeed['username'],_0x35aeed[_0x8952('0x35')]);var _0xacbf1d={'method':_0x8952('0x38'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x35aeed[_0x8952('0x6d')]+'/messages','body':{'to':[_0xd22858['phone']],'text':_0xd22858['body'],'from':_0x35aeed[_0x8952('0x20')],'applicationId':_0x35aeed['applicationId']},'headers':{'Authorization':util[_0x8952('0x45')](_0x8952('0x4f'),new Buffer(_0x2ea7c3)[_0x8952('0x46')](_0x8952('0x47')))},'json':!![]};rp(_0xacbf1d)['then'](function(_0x1a1b23){if(_0x1a1b23['id']){var _0x2ecd0f={'messageId':_0x1a1b23['id']};return _0x2f3db6[_0x8952('0x2a')](_0x2ecd0f);}else{logger['error'](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x6c'),util[_0x8952('0x2d')](_0x1a1b23,{'showHidden':![],'depth':null}));}})[_0x8952('0x1a')](function(_0x447f44){logger['error'](_0x8952('0x2c'),'afterCreate',_0x8952('0x6c'),util[_0x8952('0x2d')](_0x447f44,{'showHidden':![],'depth':null}));});}else{logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),'bandwidth',_0x8952('0x3c'));}break;case _0x8952('0x6e'):if(_0x35aeed['apiKey']){var _0x46ff54={};var _0x3ba6d5={'method':_0x8952('0x38'),'uri':_0x8952('0x6f'),'headers':{'Authorization':_0x8952('0x70')+_0x35aeed[_0x8952('0x60')],'Content-Type':_0x8952('0x55')},'body':{'from':_0x35aeed[_0x8952('0x20')],'to':_0xd22858[_0x8952('0x20')],'text':_0xd22858['body']},'json':!![]};return rp(_0x3ba6d5)[_0x8952('0x18')](function(_0x25414a){if(_0x25414a['code']==0xca){_0x46ff54[_0x8952('0x71')]=_0x25414a;var _0x5d56d0={'method':_0x8952('0x38'),'uri':_0x8952('0x72'),'headers':{'Authorization':_0x8952('0x70')+_0x35aeed[_0x8952('0x60')],'Content-Type':_0x8952('0x55')},'body':{'refid':_0x46ff54[_0x8952('0x71')][_0x8952('0x73')]},'json':!![]};return rp(_0x5d56d0)[_0x8952('0x18')](function(_0x5e4310){_0x46ff54[_0x8952('0x74')]=_0x5e4310;var _0x44843e={'messageId':_0x46ff54[_0x8952('0x71')][_0x8952('0x73')],'read':!![]};return _0x2f3db6[_0x8952('0x2a')](_0x44843e);});}else{return logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x6e'),util[_0x8952('0x2d')](_0x25414a,{'showHidden':![],'depth':null}));}})[_0x8952('0x1a')](function(_0x22ea51){return logger['error'](_0x8952('0x2c'),'afterCreate','intelepeer',util[_0x8952('0x2d')](_0x22ea51,{'showHidden':![],'depth':null}));});}else{return logger[_0x8952('0x2b')](_0x8952('0x2c'),_0x8952('0x2e'),_0x8952('0x6e'),_0x8952('0x75'));}break;}}})['finally'](function(){_0x37ff42();});}else{_0x37ff42();}}},'charset':_0x8952('0x76'),'collate':_0x8952('0x77')});}; \ No newline at end of file diff --git a/server/api/smsMessage/smsMessage.rpc.js b/server/api/smsMessage/smsMessage.rpc.js new file mode 100644 index 0000000..42a6b9e --- /dev/null +++ b/server/api/smsMessage/smsMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd6d1=['debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','SmsMessage','create','options','raw','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent'];(function(_0xa5caf7,_0x3ec2fe){var _0x14eca9=function(_0x1ca9b6){while(--_0x1ca9b6){_0xa5caf7['push'](_0xa5caf7['shift']());}};_0x14eca9(++_0x3ec2fe);}(_0xd6d1,0x137));var _0x1d6d=function(_0x36c078,_0x4072a7){_0x36c078=_0x36c078-0x0;var _0x29c6ed=_0xd6d1[_0x36c078];return _0x29c6ed;};'use strict';var _=require(_0x1d6d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1d6d('0x1'));var rs=require(_0x1d6d('0x2'));var fs=require('fs');var Redis=require(_0x1d6d('0x3'));var db=require(_0x1d6d('0x4'))['db'];var utils=require(_0x1d6d('0x5'));var logger=require('../../config/logger')(_0x1d6d('0x6'));var config=require(_0x1d6d('0x7'));var jayson=require(_0x1d6d('0x8'));var client=jayson[_0x1d6d('0x9')][_0x1d6d('0xa')]({'port':0x232a});config['redis']=_[_0x1d6d('0xb')](config['redis'],{'host':_0x1d6d('0xc'),'port':0x18eb});var socket=require(_0x1d6d('0xd'))(new Redis(config['redis']));require('./smsMessage.socket')[_0x1d6d('0xe')](socket);function respondWithRpcPromise(_0x2dca75,_0x2f81e5,_0x53ce80){return new BPromise(function(_0x46469f,_0x423762){return client[_0x1d6d('0xf')](_0x2dca75,_0x53ce80)[_0x1d6d('0x10')](function(_0x10908e){logger[_0x1d6d('0x11')]('SmsMessage,\x20%s,\x20%s',_0x2f81e5,_0x1d6d('0x12'));logger[_0x1d6d('0x13')](_0x1d6d('0x14'),_0x2f81e5,_0x1d6d('0x12'),JSON[_0x1d6d('0x15')](_0x10908e));if(_0x10908e[_0x1d6d('0x16')]){if(_0x10908e['error'][_0x1d6d('0x17')]===0x1f4){logger[_0x1d6d('0x16')](_0x1d6d('0x18'),_0x2f81e5,_0x10908e[_0x1d6d('0x16')]['message']);return _0x423762(_0x10908e[_0x1d6d('0x16')][_0x1d6d('0x19')]);}logger['error'](_0x1d6d('0x18'),_0x2f81e5,_0x10908e[_0x1d6d('0x16')][_0x1d6d('0x19')]);return _0x46469f(_0x10908e[_0x1d6d('0x16')]['message']);}else{logger[_0x1d6d('0x11')]('SmsMessage,\x20%s,\x20%s',_0x2f81e5,'request\x20sent');_0x46469f(_0x10908e[_0x1d6d('0x1a')]['message']);}})[_0x1d6d('0x1b')](function(_0x593dac){logger[_0x1d6d('0x16')](_0x1d6d('0x18'),_0x2f81e5,_0x593dac);_0x423762(_0x593dac);});});}exports[_0x1d6d('0x1c')]=function(_0x477aab){var _0x246df9=this;return new Promise(function(_0x43e8d0,_0x287586){return db[_0x1d6d('0x1d')][_0x1d6d('0x1e')](_0x477aab['body'],{'raw':_0x477aab[_0x1d6d('0x1f')]?_0x477aab[_0x1d6d('0x1f')][_0x1d6d('0x20')]===undefined?!![]:![]:!![]})[_0x1d6d('0x10')](function(_0x3505ea){logger[_0x1d6d('0x11')]('CreateSmsMessage',_0x477aab);logger[_0x1d6d('0x13')](_0x1d6d('0x1c'),_0x477aab,JSON[_0x1d6d('0x15')](_0x3505ea));_0x43e8d0(_0x3505ea);})[_0x1d6d('0x1b')](function(_0x1c16f4){logger[_0x1d6d('0x16')](_0x1d6d('0x1c'),_0x1c16f4[_0x1d6d('0x19')],_0x477aab);_0x287586(_0x246df9[_0x1d6d('0x16')](0x1f4,_0x1c16f4[_0x1d6d('0x19')]));});});}; \ No newline at end of file diff --git a/server/api/smsMessage/smsMessage.socket.js b/server/api/smsMessage/smsMessage.socket.js new file mode 100644 index 0000000..6e74bdf --- /dev/null +++ b/server/api/smsMessage/smsMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x02ae=['update','removeListener','register','smsMessage:','save'];(function(_0x5443ac,_0x2cb686){var _0x2e4780=function(_0x54addf){while(--_0x54addf){_0x5443ac['push'](_0x5443ac['shift']());}};_0x2e4780(++_0x2cb686);}(_0x02ae,0x1c6));var _0xe02a=function(_0x57ec43,_0x5cd0f8){_0x57ec43=_0x57ec43-0x0;var _0x31c313=_0x02ae[_0x57ec43];return _0x31c313;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xe02a('0x0'),'remove',_0xe02a('0x1')];function createListener(_0xbed195,_0x56e66d){return function(_0x436819){_0x56e66d['emit'](_0xbed195,_0x436819);};}function removeListener(_0x2d6a6a,_0x4e75b7){return function(){SmsMessageEvents[_0xe02a('0x2')](_0x2d6a6a,_0x4e75b7);};}exports[_0xe02a('0x3')]=function(_0x2c290b){for(var _0x3d9303=0x0,_0x1c87e1=events['length'];_0x3d9303<_0x1c87e1;_0x3d9303++){var _0x3af94b=events[_0x3d9303];var _0x29798d=createListener(_0xe02a('0x4')+_0x3af94b,_0x2c290b);SmsMessageEvents['on'](_0x3af94b,_0x29798d);}}; \ No newline at end of file diff --git a/server/api/smsQueue/index.js b/server/api/smsQueue/index.js new file mode 100644 index 0000000..6208a1b --- /dev/null +++ b/server/api/smsQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0874=['/:id','show','getMembers','/:id/users','getAgents','post','create','/:id/teams','addTeams','put','update','delete','destroy','removeTeams','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','describe'];(function(_0x58a4fe,_0x11d439){var _0x697de2=function(_0xe38c14){while(--_0xe38c14){_0x58a4fe['push'](_0x58a4fe['shift']());}};_0x697de2(++_0x11d439);}(_0x0874,0xe6));var _0x4087=function(_0x194d1c,_0x496df0){_0x194d1c=_0x194d1c-0x0;var _0x5c399b=_0x0874[_0x194d1c];return _0x5c399b;};'use strict';var multer=require(_0x4087('0x0'));var util=require(_0x4087('0x1'));var path=require(_0x4087('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4087('0x3')]();var fs_extra=require(_0x4087('0x4'));var auth=require(_0x4087('0x5'));var interaction=require(_0x4087('0x6'));var config=require(_0x4087('0x7'));var controller=require(_0x4087('0x8'));router[_0x4087('0x9')]('/',auth[_0x4087('0xa')](),controller[_0x4087('0xb')]);router[_0x4087('0x9')]('/describe',auth[_0x4087('0xa')](),controller[_0x4087('0xc')]);router[_0x4087('0x9')](_0x4087('0xd'),auth[_0x4087('0xa')](),controller[_0x4087('0xe')]);router[_0x4087('0x9')]('/:id/members',auth[_0x4087('0xa')](),controller[_0x4087('0xf')]);router['get']('/:id/teams',auth[_0x4087('0xa')](),controller['getTeams']);router[_0x4087('0x9')](_0x4087('0x10'),auth['isAuthenticated'](),controller[_0x4087('0x11')]);router[_0x4087('0x12')]('/',auth[_0x4087('0xa')](),controller[_0x4087('0x13')]);router['post'](_0x4087('0x14'),auth[_0x4087('0xa')](),controller[_0x4087('0x15')]);router[_0x4087('0x12')](_0x4087('0x10'),auth[_0x4087('0xa')](),controller['addAgents']);router[_0x4087('0x16')]('/:id',auth[_0x4087('0xa')](),controller[_0x4087('0x17')]);router[_0x4087('0x18')](_0x4087('0xd'),auth['isAuthenticated'](),controller[_0x4087('0x19')]);router['delete'](_0x4087('0x14'),auth[_0x4087('0xa')](),controller[_0x4087('0x1a')]);router[_0x4087('0x18')](_0x4087('0x10'),auth[_0x4087('0xa')](),controller['removeAgents']);module['exports']=router; \ No newline at end of file diff --git a/server/api/smsQueue/smsQueue.attributes.js b/server/api/smsQueue/smsQueue.attributes.js new file mode 100644 index 0000000..fa65090 --- /dev/null +++ b/server/api/smsQueue/smsQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe087=['sequelize','STRING','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x539fa9,_0x3f506d){var _0x4774b1=function(_0x22ecb9){while(--_0x22ecb9){_0x539fa9['push'](_0x539fa9['shift']());}};_0x4774b1(++_0x3f506d);}(_0xe087,0x1bc));var _0x7e08=function(_0x34407a,_0x30aec6){_0x34407a=_0x34407a-0x0;var _0x56fc57=_0xe087[_0x34407a];return _0x56fc57;};'use strict';var Sequelize=require(_0x7e08('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7e08('0x1')]},'timeout':{'type':Sequelize[_0x7e08('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x7e08('0x3'),_0x7e08('0x4'),_0x7e08('0x5'))}}; \ No newline at end of file diff --git a/server/api/smsQueue/smsQueue.controller.js b/server/api/smsQueue/smsQueue.controller.js new file mode 100644 index 0000000..99726d9 --- /dev/null +++ b/server/api/smsQueue/smsQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x547e=['../../mysqldb','redis','localhost','./smsQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','SmsQueues','UserProfileResource','error','stack','name','send','SmsQueue','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','length','find','catch','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','findOne','UserSmsQueue','order','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','toString','SELECT','TeamId','includes','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','spread','userSmsQueue:save','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x3eb3e9,_0x34745a){var _0x4100cc=function(_0x5b78fa){while(--_0x5b78fa){_0x3eb3e9['push'](_0x3eb3e9['shift']());}};_0x4100cc(++_0x34745a);}(_0x547e,0xfd));var _0xe547=function(_0x16c6f0,_0x9a213a){_0x16c6f0=_0x16c6f0-0x0;var _0x6d3732=_0x547e[_0x16c6f0];return _0x6d3732;};'use strict';var emlformat=require(_0xe547('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe547('0x1'));var jsonpatch=require(_0xe547('0x2'));var rp=require('request-promise');var moment=require(_0xe547('0x3'));var BPromise=require(_0xe547('0x4'));var Mustache=require('mustache');var util=require(_0xe547('0x5'));var path=require(_0xe547('0x6'));var sox=require('sox');var csv=require(_0xe547('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe547('0x8'));var _=require(_0xe547('0x9'));var squel=require('squel');var crypto=require(_0xe547('0xa'));var jsforce=require(_0xe547('0xb'));var deskjs=require(_0xe547('0xc'));var toCsv=require(_0xe547('0x7'));var querystring=require(_0xe547('0xd'));var Papa=require(_0xe547('0xe'));var Redis=require(_0xe547('0xf'));var authService=require(_0xe547('0x10'));var qs=require(_0xe547('0x11'));var as=require(_0xe547('0x12'));var hardwareService=require(_0xe547('0x13'));var logger=require(_0xe547('0x14'))('api');var utils=require(_0xe547('0x15'));var config=require(_0xe547('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe547('0x17'))['db'];config[_0xe547('0x18')]=_['defaults'](config['redis'],{'host':_0xe547('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe547('0x1a'))[_0xe547('0x1b')](socket);function respondWithStatusCode(_0x4102d5,_0x2cd2a0){_0x2cd2a0=_0x2cd2a0||0xcc;return function(_0x49a13f){if(_0x49a13f){return _0x4102d5[_0xe547('0x1c')](_0x2cd2a0);}return _0x4102d5['status'](_0x2cd2a0)[_0xe547('0x1d')]();};}function respondWithResult(_0x5b28fc,_0x3c7124){_0x3c7124=_0x3c7124||0xc8;return function(_0x31ba00){if(_0x31ba00){return _0x5b28fc[_0xe547('0x1e')](_0x3c7124)[_0xe547('0x1f')](_0x31ba00);}};}function respondWithFilteredResult(_0x3e3555,_0x216661){return function(_0x11ad38){if(_0x11ad38){var _0x5a968d=typeof _0x216661[_0xe547('0x20')]===_0xe547('0x21')&&typeof _0x216661[_0xe547('0x22')]===_0xe547('0x21');var _0x383801=_0x11ad38[_0xe547('0x23')];var _0x450701=_0x5a968d?0x0:_0x216661['offset'];var _0x5bc104=_0x5a968d?_0x11ad38[_0xe547('0x23')]:_0x216661['offset']+_0x216661[_0xe547('0x22')];var _0x50dbb0;if(_0x5bc104>=_0x383801){_0x5bc104=_0x383801;_0x50dbb0=0xc8;}else{_0x50dbb0=0xce;}_0x3e3555[_0xe547('0x1e')](_0x50dbb0);return _0x3e3555['set'](_0xe547('0x24'),_0x450701+'-'+_0x5bc104+'/'+_0x383801)[_0xe547('0x1f')](_0x11ad38);}return null;};}function patchUpdates(_0x5f40b7){return function(_0x5a2e80){try{jsonpatch[_0xe547('0x25')](_0x5a2e80,_0x5f40b7,!![]);}catch(_0x1cf90e){return BPromise['reject'](_0x1cf90e);}return _0x5a2e80[_0xe547('0x26')]();};}function saveUpdates(_0x259644,_0x3939fb){return function(_0x44ac10){if(_0x44ac10){return _0x44ac10['update'](_0x259644)[_0xe547('0x27')](function(_0x418d45){return _0x418d45;});}return null;};}function removeEntity(_0x46958f,_0x43ed5c){return function(_0x43ec18){if(_0x43ec18){return _0x43ec18[_0xe547('0x28')]()[_0xe547('0x27')](function(){var _0x2e0075=_0x43ec18['get']({'plain':!![]});var _0x4ff0ed=_0xe547('0x29');return db[_0xe547('0x2a')][_0xe547('0x28')]({'where':{'type':_0x4ff0ed,'resourceId':_0x2e0075['id']}})[_0xe547('0x27')](function(){return _0x43ec18;});})['then'](function(){_0x46958f['status'](0xcc)[_0xe547('0x1d')]();});}};}function handleEntityNotFound(_0x38a4ae,_0x46be34){return function(_0x2c97a5){if(!_0x2c97a5){_0x38a4ae[_0xe547('0x1c')](0x194);}return _0x2c97a5;};}function handleError(_0xc8f420,_0x5c5ed8){_0x5c5ed8=_0x5c5ed8||0x1f4;return function(_0x4a23a6){logger[_0xe547('0x2b')](_0x4a23a6[_0xe547('0x2c')]);if(_0x4a23a6['name']){delete _0x4a23a6[_0xe547('0x2d')];}_0xc8f420[_0xe547('0x1e')](_0x5c5ed8)[_0xe547('0x2e')](_0x4a23a6);};}exports['index']=function(_0xfda88c,_0x47c347){var _0x275264={},_0x1b5cc1={},_0x16b5e4={'count':0x0,'rows':[]};var _0x4c33d7=_['map'](db[_0xe547('0x2f')][_0xe547('0x30')],function(_0x5aafa8){return{'name':_0x5aafa8['fieldName'],'type':_0x5aafa8[_0xe547('0x31')][_0xe547('0x32')]};});_0x1b5cc1[_0xe547('0x33')]=_[_0xe547('0x34')](_0x4c33d7,_0xe547('0x2d'));_0x1b5cc1[_0xe547('0x35')]=_[_0xe547('0x36')](_0xfda88c['query']);_0x1b5cc1[_0xe547('0x37')]=_[_0xe547('0x38')](_0x1b5cc1[_0xe547('0x33')],_0x1b5cc1['query']);_0x275264[_0xe547('0x39')]=_['intersection'](_0x1b5cc1[_0xe547('0x33')],qs[_0xe547('0x3a')](_0xfda88c['query'][_0xe547('0x3a')]));_0x275264[_0xe547('0x39')]=_0x275264[_0xe547('0x39')]['length']?_0x275264[_0xe547('0x39')]:_0x1b5cc1[_0xe547('0x33')];if(!_0xfda88c['query'][_0xe547('0x3b')](_0xe547('0x3c'))){_0x275264[_0xe547('0x22')]=qs[_0xe547('0x22')](_0xfda88c[_0xe547('0x35')][_0xe547('0x22')]);_0x275264['offset']=qs['offset'](_0xfda88c[_0xe547('0x35')][_0xe547('0x20')]);}_0x275264['order']=qs[_0xe547('0x3d')](_0xfda88c[_0xe547('0x35')][_0xe547('0x3d')]);_0x275264[_0xe547('0x3e')]=qs['filters'](_[_0xe547('0x3f')](_0xfda88c[_0xe547('0x35')],_0x1b5cc1[_0xe547('0x37')]),_0x4c33d7);if(_0xfda88c['query'][_0xe547('0x40')]){_0x275264[_0xe547('0x3e')]=_[_0xe547('0x41')](_0x275264[_0xe547('0x3e')],{'$or':_['map'](_0x4c33d7,function(_0x3760ca){if(_0x3760ca[_0xe547('0x31')]!==_0xe547('0x42')){var _0x265623={};_0x265623[_0x3760ca[_0xe547('0x2d')]]={'$like':'%'+_0xfda88c[_0xe547('0x35')][_0xe547('0x40')]+'%'};return _0x265623;}})});}_0x275264=_[_0xe547('0x41')]({},_0x275264,_0xfda88c[_0xe547('0x43')]);var _0x4a9517={'where':_0x275264[_0xe547('0x3e')]};return db['SmsQueue']['count'](_0x4a9517)[_0xe547('0x27')](function(_0xa8656b){_0x16b5e4[_0xe547('0x23')]=_0xa8656b;if(_0xfda88c['query'][_0xe547('0x44')]){_0x275264[_0xe547('0x45')]=[{'all':!![]}];}return db[_0xe547('0x2f')][_0xe547('0x46')](_0x275264);})['then'](function(_0x4e73ad){_0x16b5e4[_0xe547('0x47')]=_0x4e73ad;return _0x16b5e4;})[_0xe547('0x27')](respondWithFilteredResult(_0x47c347,_0x275264))['catch'](handleError(_0x47c347,null));};exports['show']=function(_0x1e48b9,_0x379368){var _0xe97ef5={'raw':!![],'where':{'id':_0x1e48b9[_0xe547('0x48')]['id']}},_0x4376db={};_0x4376db['model']=_[_0xe547('0x36')](db[_0xe547('0x2f')][_0xe547('0x30')]);_0x4376db[_0xe547('0x35')]=_[_0xe547('0x36')](_0x1e48b9['query']);_0x4376db['filters']=_[_0xe547('0x38')](_0x4376db[_0xe547('0x33')],_0x4376db['query']);_0xe97ef5[_0xe547('0x39')]=_[_0xe547('0x38')](_0x4376db['model'],qs[_0xe547('0x3a')](_0x1e48b9[_0xe547('0x35')][_0xe547('0x3a')]));_0xe97ef5['attributes']=_0xe97ef5[_0xe547('0x39')][_0xe547('0x49')]?_0xe97ef5[_0xe547('0x39')]:_0x4376db['model'];if(_0x1e48b9[_0xe547('0x35')][_0xe547('0x44')]){_0xe97ef5['include']=[{'all':!![]}];}_0xe97ef5=_['merge']({},_0xe97ef5,_0x1e48b9['options']);return db['SmsQueue'][_0xe547('0x4a')](_0xe97ef5)[_0xe547('0x27')](handleEntityNotFound(_0x379368,null))[_0xe547('0x27')](respondWithResult(_0x379368,null))[_0xe547('0x4b')](handleError(_0x379368,null));};exports[_0xe547('0x4c')]=function(_0x4c88ca,_0x107546){return db[_0xe547('0x2f')][_0xe547('0x4c')](_0x4c88ca['body'],{})[_0xe547('0x27')](function(_0x41b305){var _0x4b54e0=_0x4c88ca['user'][_0xe547('0x4d')]({'plain':!![]});if(!_0x4b54e0)throw new Error(_0xe547('0x4e'));if(_0x4b54e0['role']===_0xe547('0x4f')){var _0x3545e1=_0x41b305[_0xe547('0x4d')]({'plain':!![]});var _0x31a479=_0xe547('0x29');return db[_0xe547('0x50')][_0xe547('0x4a')]({'where':{'name':_0x31a479,'userProfileId':_0x4b54e0[_0xe547('0x51')]},'raw':!![]})[_0xe547('0x27')](function(_0x14d89c){if(_0x14d89c&&_0x14d89c['autoAssociation']===0x0){return db[_0xe547('0x2a')]['create']({'name':_0x3545e1[_0xe547('0x2d')],'resourceId':_0x3545e1['id'],'type':_0x14d89c[_0xe547('0x2d')],'sectionId':_0x14d89c['id']},{})['then'](function(){return _0x41b305;});}else{return _0x41b305;}})[_0xe547('0x4b')](function(_0x3f0d88){logger[_0xe547('0x2b')](_0xe547('0x52'),_0x3f0d88);throw _0x3f0d88;});}return _0x41b305;})[_0xe547('0x27')](respondWithResult(_0x107546,0xc9))['catch'](handleError(_0x107546,null));};exports[_0xe547('0x53')]=function(_0x25ae22,_0x553357){if(_0x25ae22[_0xe547('0x54')]['id']){delete _0x25ae22['body']['id'];}return db['SmsQueue'][_0xe547('0x4a')]({'where':{'id':_0x25ae22[_0xe547('0x48')]['id']}})[_0xe547('0x27')](handleEntityNotFound(_0x553357,null))[_0xe547('0x27')](saveUpdates(_0x25ae22['body'],null))[_0xe547('0x27')](respondWithResult(_0x553357,null))[_0xe547('0x4b')](handleError(_0x553357,null));};exports[_0xe547('0x28')]=function(_0x1eed90,_0x2b9359){return db[_0xe547('0x2f')][_0xe547('0x4a')]({'where':{'id':_0x1eed90[_0xe547('0x48')]['id']}})['then'](handleEntityNotFound(_0x2b9359,null))['then'](removeEntity(_0x2b9359,null))[_0xe547('0x4b')](handleError(_0x2b9359,null));};exports[_0xe547('0x55')]=function(_0x5c4b97,_0x26099d){return db[_0xe547('0x2f')][_0xe547('0x55')]()[_0xe547('0x27')](respondWithResult(_0x26099d,null))[_0xe547('0x4b')](handleError(_0x26099d,null));};exports['getMembers']=function(_0x29f3be,_0x151834,_0x1a561a){var _0x42d4dd={'raw':!![],'where':{}},_0x26544a={},_0x24a1d5;return db[_0xe547('0x2f')][_0xe547('0x56')]({'where':{'id':_0x29f3be[_0xe547('0x48')]['id']}})[_0xe547('0x27')](handleEntityNotFound(_0x151834,null))[_0xe547('0x27')](function(_0x581e53){if(_0x581e53){_0x24a1d5=_0x581e53[_0xe547('0x4d')]({'plain':!![]});_0x26544a[_0xe547('0x33')]=_[_0xe547('0x36')](db[_0xe547('0x57')][_0xe547('0x30')]);_0x26544a[_0xe547('0x35')]=_[_0xe547('0x36')](_0x29f3be[_0xe547('0x35')]);_0x26544a[_0xe547('0x37')]=_[_0xe547('0x38')](_0x26544a[_0xe547('0x33')],_0x26544a[_0xe547('0x35')]);_0x42d4dd[_0xe547('0x39')]=_[_0xe547('0x38')](_0x26544a[_0xe547('0x33')],qs[_0xe547('0x3a')](_0x29f3be[_0xe547('0x35')][_0xe547('0x3a')]));_0x42d4dd[_0xe547('0x39')]=_0x42d4dd[_0xe547('0x39')][_0xe547('0x49')]?_0x42d4dd[_0xe547('0x39')]:_0x26544a[_0xe547('0x33')];if(!_0x29f3be[_0xe547('0x35')][_0xe547('0x3b')](_0xe547('0x3c'))){_0x42d4dd[_0xe547('0x22')]=qs[_0xe547('0x22')](_0x29f3be['query'][_0xe547('0x22')]);_0x42d4dd['offset']=qs['offset'](_0x29f3be['query'][_0xe547('0x20')]);}_0x42d4dd[_0xe547('0x58')]=qs[_0xe547('0x3d')](_0x29f3be[_0xe547('0x35')][_0xe547('0x3d')]);_0x42d4dd[_0xe547('0x3e')]=qs[_0xe547('0x37')](_['pick'](_0x29f3be['query'],_0x26544a[_0xe547('0x37')]));_0x42d4dd[_0xe547('0x3e')][_0xe547('0x59')]=_0x581e53['id'];if(_0x29f3be[_0xe547('0x35')][_0xe547('0x40')]){_0x42d4dd['where']=_[_0xe547('0x41')](_0x42d4dd[_0xe547('0x3e')],{'$or':_['map'](_0x42d4dd[_0xe547('0x39')],function(_0x32acf3){var _0x675d8={};_0x675d8[_0x32acf3]={'$like':'%'+_0x29f3be[_0xe547('0x35')][_0xe547('0x40')]+'%'};return _0x675d8;})});}_0x42d4dd=_[_0xe547('0x41')]({},_0x42d4dd,_0x29f3be[_0xe547('0x43')]);return db['UserSmsQueue']['findAll'](_0x42d4dd);}})[_0xe547('0x27')](function(_0x479f36){if(_0x479f36){return db[_0xe547('0x5a')][_0xe547('0x5b')]({'where':{'id':_[_0xe547('0x34')](_0x479f36,_0xe547('0x5c')),'role':_0xe547('0x5d')},'attributes':['id',_0xe547('0x2d'),_0xe547('0x5e'),_0xe547('0x5f'),_0xe547('0x60')]});}})['then'](function(_0x4b43a9){if(_0x4b43a9){return{'count':_0x4b43a9[_0xe547('0x23')],'rows':_[_0xe547('0x34')](_0x4b43a9[_0xe547('0x47')],function(_0x5b7a48){return{'membername':_0x5b7a48['name'],'UserId':_0x5b7a48['id'],'queue_name':_0x24a1d5[_0xe547('0x2d')],'SmsQueueId':_0x24a1d5['id'],'interface':util[_0xe547('0x61')]('%s/%s',_0xe547('0x62'),_0x5b7a48[_0xe547('0x2d')]),'penalty':0x0,'paused':_0x5b7a48['smsPause'],'createdAt':_0x5b7a48[_0xe547('0x60')],'updatedAt':_0x5b7a48['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xe547('0x27')](respondWithFilteredResult(_0x151834,_0x42d4dd))[_0xe547('0x4b')](handleError(_0x151834,null));};exports[_0xe547('0x63')]=function(_0x2d4705,_0x5d3f0b,_0x9c34dc){var _0x49fb12={};var _0x29c194={};var _0xb5e381;var _0x5dfdce;return db[_0xe547('0x2f')][_0xe547('0x56')]({'where':{'id':_0x2d4705[_0xe547('0x48')]['id']}})[_0xe547('0x27')](handleEntityNotFound(_0x5d3f0b,null))[_0xe547('0x27')](function(_0x597ce){if(_0x597ce){_0xb5e381=_0x597ce;_0x29c194[_0xe547('0x33')]=_[_0xe547('0x36')](db[_0xe547('0x64')][_0xe547('0x30')]);_0x29c194['query']=_[_0xe547('0x36')](_0x2d4705[_0xe547('0x35')]);_0x29c194[_0xe547('0x37')]=_[_0xe547('0x38')](_0x29c194['model'],_0x29c194[_0xe547('0x35')]);_0x49fb12['attributes']=_[_0xe547('0x38')](_0x29c194[_0xe547('0x33')],qs[_0xe547('0x3a')](_0x2d4705[_0xe547('0x35')]['fields']));_0x49fb12['attributes']=_0x49fb12[_0xe547('0x39')][_0xe547('0x49')]?_0x49fb12[_0xe547('0x39')]:_0x29c194[_0xe547('0x33')];_0x49fb12[_0xe547('0x58')]=qs[_0xe547('0x3d')](_0x2d4705[_0xe547('0x35')][_0xe547('0x3d')]);_0x49fb12[_0xe547('0x3e')]=qs['filters'](_[_0xe547('0x3f')](_0x2d4705[_0xe547('0x35')],_0x29c194[_0xe547('0x37')]));if(_0x2d4705[_0xe547('0x35')][_0xe547('0x40')]){_0x49fb12['where']=_[_0xe547('0x41')](_0x49fb12[_0xe547('0x3e')],{'$or':_['map'](_0x49fb12[_0xe547('0x39')],function(_0x8f865b){var _0x2f6831={};_0x2f6831[_0x8f865b]={'$like':'%'+_0x2d4705[_0xe547('0x35')][_0xe547('0x40')]+'%'};return _0x2f6831;})});}_0x49fb12=_['merge']({},_0x49fb12,_0x2d4705[_0xe547('0x43')]);return _0xb5e381[_0xe547('0x63')](_0x49fb12);}})[_0xe547('0x27')](function(_0x45adc0){if(_0x45adc0){_0x5dfdce=_0x45adc0[_0xe547('0x49')];if(!_0x2d4705['query'][_0xe547('0x3b')]('nolimit')){_0x49fb12[_0xe547('0x22')]=qs[_0xe547('0x22')](_0x2d4705[_0xe547('0x35')]['limit']);_0x49fb12['offset']=qs[_0xe547('0x20')](_0x2d4705[_0xe547('0x35')]['offset']);}return _0xb5e381[_0xe547('0x63')](_0x49fb12);}})[_0xe547('0x27')](function(_0x1f6301){if(_0x1f6301){return _0x1f6301?{'count':_0x5dfdce,'rows':_0x1f6301}:null;}})['then'](respondWithResult(_0x5d3f0b,null))['catch'](handleError(_0x5d3f0b,null));};exports[_0xe547('0x65')]=function(_0x482ed2,_0x20b113,_0x13b010){var _0x1b382e=_0x482ed2[_0xe547('0x54')][_0xe547('0x66')];return db[_0xe547('0x64')][_0xe547('0x46')]({'where':{'id':_0x1b382e},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe547('0x67'),'attributes':['id',_0xe547('0x2d'),_0xe547('0x68'),_0xe547('0x69'),_0xe547('0x6a')],'raw':!![]}]})[_0xe547('0x27')](function(_0x418b01){if(_0x418b01){var _0x27cc98=_['flatMap'](_0x418b01,function(_0x221b10){var _0x261b0b=_0x221b10['get']({'plain':!![]});return _0x261b0b['Agents'];});return db[_0xe547('0x2f')][_0xe547('0x4a')]({'where':{'id':_0x482ed2[_0xe547('0x48')]['id']}})['then'](function(_0x7bcf5a){return db[_0xe547('0x6b')][_0xe547('0x6c')](function(_0x288b0d){return _0x7bcf5a[_0xe547('0x65')](_0x1b382e,{'transaction':_0x288b0d})[_0xe547('0x27')](function(){return BPromise[_0xe547('0x6d')](_0x27cc98,function(_0x5e93d0){return db[_0xe547('0x57')][_0xe547('0x6e')]({'where':{'UserId':_0x5e93d0['id'],'SmsQueueId':_0x482ed2[_0xe547('0x48')]['id']},'transaction':_0x288b0d});});})[_0xe547('0x27')](function(){_0x27cc98[_0xe547('0x6f')](function(_0x504521){socket[_0xe547('0x70')]('userSmsQueue:save',{'UserId':_0x504521['id'],'SmsQueueId':_0x7bcf5a['id']});});});});});}})['then'](respondWithStatusCode(_0x20b113,null))[_0xe547('0x4b')](handleError(_0x20b113,null));};exports[_0xe547('0x71')]=function(_0x43b154,_0x47b4c7,_0x155693){return db[_0xe547('0x64')][_0xe547('0x46')]({'where':{'id':_0x43b154[_0xe547('0x35')][_0xe547('0x66')]},'attributes':['id'],'include':[{'model':db[_0xe547('0x5a')],'as':_0xe547('0x67'),'attributes':['id'],'raw':!![]}]})[_0xe547('0x27')](handleEntityNotFound(_0x47b4c7,null))[_0xe547('0x27')](function(_0x26b107){var _0x5cca18=_[_0xe547('0x34')](_0x26b107,'id');var _0x370f6f=[];var _0x44f540=[];var _0x58ff41=squel[_0xe547('0x72')]();_0x58ff41[_0xe547('0x73')](_0xe547('0x74'))[_0xe547('0x75')](_0xe547('0x76'),'tq')[_0xe547('0x77')](_0xe547('0x78'),'ut',_0xe547('0x79'))['where'](_0xe547('0x7a'),_0x43b154[_0xe547('0x48')]['id']);for(var _0x3a38b0=0x0;_0x3a38b0<_0x26b107[_0xe547('0x49')];_0x3a38b0+=0x1){let _0x3dbc52=_0x26b107[_0x3a38b0];for(var _0x2d13dc=0x0;_0x2d13dc<_0x3dbc52[_0xe547('0x67')][_0xe547('0x49')];_0x2d13dc+=0x1){let _0x10a9f4=_0x3dbc52['Agents'][_0x2d13dc];var _0x5e032e=_0x58ff41[_0xe547('0x7b')]();_0x5e032e[_0xe547('0x3e')]('ut.UserId\x20=\x20?',_0x10a9f4['id']);_0x44f540['push'](db[_0xe547('0x6b')][_0xe547('0x35')](_0x5e032e[_0xe547('0x7c')](),{'type':db['sequelize']['QueryTypes'][_0xe547('0x7d')]})['then'](function(_0x37973f){if(_0x37973f[_0xe547('0x49')]===0x1){return _0x10a9f4['id'];}else{var _0x216938=_['every'](_[_0xe547('0x34')](_0x37973f,_0xe547('0x7e')),function(_0x395547){return _[_0xe547('0x7f')](_0x5cca18,_0x395547);});if(_0x216938){return _0x10a9f4['id'];}}}));}}return BPromise['all'](_0x44f540)[_0xe547('0x27')](function(_0x342411){_0x370f6f=_(_0x370f6f)[_0xe547('0x80')](_0x342411)[_0xe547('0x81')]()[_0xe547('0x82')]();return db['SmsQueue'][_0xe547('0x4a')]({'where':{'id':_0x43b154[_0xe547('0x48')]['id']}})[_0xe547('0x27')](function(_0x43372b){return db[_0xe547('0x6b')][_0xe547('0x6c')](function(_0x5be988){return _0x43372b[_0xe547('0x71')](_0x43b154['query'][_0xe547('0x66')],{'transaction':_0x5be988})['then'](function(){if(!_[_0xe547('0x83')](_0x370f6f)){return _0x43372b[_0xe547('0x84')](_0x370f6f,{'transaction':_0x5be988});}})[_0xe547('0x27')](function(){_0x370f6f[_0xe547('0x6f')](function(_0x435d59){socket[_0xe547('0x70')](_0xe547('0x85'),{'UserId':_0x435d59,'SmsQueueId':_0x43372b['id']});});});});});});})[_0xe547('0x27')](respondWithStatusCode(_0x47b4c7,null))[_0xe547('0x4b')](handleError(_0x47b4c7,null));};exports[_0xe547('0x86')]=function(_0x1a1824,_0x386faf,_0x25f4e0){return db[_0xe547('0x2f')]['find']({'where':{'id':_0x1a1824['params']['id']}})[_0xe547('0x27')](handleEntityNotFound(_0x386faf,null))[_0xe547('0x27')](function(_0x1186e8){if(_0x1186e8){return _0x1186e8[_0xe547('0x86')](_0x1a1824[_0xe547('0x54')][_0xe547('0x66')],_['omit'](_0x1a1824[_0xe547('0x54')],[_0xe547('0x66'),'id'])||{})[_0xe547('0x87')](function(_0x379716){for(var _0x52ce7e=0x0;_0x52ce7e<_0x1a1824[_0xe547('0x54')][_0xe547('0x66')][_0xe547('0x49')];_0x52ce7e+=0x1){socket[_0xe547('0x70')](_0xe547('0x88'),{'UserId':Number(_0x1a1824['body']['ids'][_0x52ce7e]),'SmsQueueId':Number(_0x1a1824[_0xe547('0x48')]['id'])});}return _0x379716;});}})[_0xe547('0x27')](respondWithResult(_0x386faf,null))[_0xe547('0x4b')](handleError(_0x386faf,null));};exports['removeAgents']=function(_0x5cd43e,_0x1bdc18,_0xc22a84){return db['SmsQueue'][_0xe547('0x4a')]({'where':{'id':_0x5cd43e[_0xe547('0x48')]['id']}})['then'](handleEntityNotFound(_0x1bdc18,null))[_0xe547('0x27')](function(_0x5277b1){if(_0x5277b1){return _0x5277b1['removeAgents'](_0x5cd43e['query'][_0xe547('0x66')])[_0xe547('0x27')](function(){if(_['isArray'](_0x5cd43e['query'][_0xe547('0x66')])){for(var _0x242b80=0x0;_0x242b80<_0x5cd43e['query']['ids'][_0xe547('0x49')];_0x242b80+=0x1){socket[_0xe547('0x70')](_0xe547('0x85'),{'UserId':Number(_0x5cd43e[_0xe547('0x35')][_0xe547('0x66')][_0x242b80]),'SmsQueueId':Number(_0x5cd43e[_0xe547('0x48')]['id'])});}}else{socket[_0xe547('0x70')](_0xe547('0x85'),{'UserId':Number(_0x5cd43e[_0xe547('0x35')][_0xe547('0x66')]),'SmsQueueId':Number(_0x5cd43e[_0xe547('0x48')]['id'])});}});}})[_0xe547('0x27')](respondWithStatusCode(_0x1bdc18,null))[_0xe547('0x4b')](handleError(_0x1bdc18,null));};exports[_0xe547('0x89')]=function(_0x849e7c,_0x4d1d94,_0x5ae194){var _0xf33b49={};var _0x48983b={};var _0x3ca0cb;var _0x1282f0;return db[_0xe547('0x2f')][_0xe547('0x56')]({'where':{'id':_0x849e7c[_0xe547('0x48')]['id']}})[_0xe547('0x27')](handleEntityNotFound(_0x4d1d94,null))[_0xe547('0x27')](function(_0x3d7ef9){if(_0x3d7ef9){_0x3ca0cb=_0x3d7ef9;_0x48983b['model']=_[_0xe547('0x36')](db[_0xe547('0x5a')][_0xe547('0x30')]);_0x48983b['query']=_['keys'](_0x849e7c[_0xe547('0x35')]);_0x48983b[_0xe547('0x37')]=_[_0xe547('0x38')](_0x48983b[_0xe547('0x33')],_0x48983b['query']);_0xf33b49[_0xe547('0x39')]=_['intersection'](_0x48983b[_0xe547('0x33')],qs[_0xe547('0x3a')](_0x849e7c['query'][_0xe547('0x3a')]));_0xf33b49['attributes']=_0xf33b49[_0xe547('0x39')][_0xe547('0x49')]?_0xf33b49[_0xe547('0x39')]:_0x48983b['model'];_0xf33b49[_0xe547('0x58')]=qs['sort'](_0x849e7c[_0xe547('0x35')][_0xe547('0x3d')]);_0xf33b49[_0xe547('0x3e')]=qs[_0xe547('0x37')](_[_0xe547('0x3f')](_0x849e7c[_0xe547('0x35')],_0x48983b[_0xe547('0x37')]));if(_0x849e7c[_0xe547('0x35')]['filter']){_0xf33b49[_0xe547('0x3e')]=_[_0xe547('0x41')](_0xf33b49['where'],{'$or':_[_0xe547('0x34')](_0xf33b49['attributes'],function(_0x1b412f){var _0x5480b6={};_0x5480b6[_0x1b412f]={'$like':'%'+_0x849e7c[_0xe547('0x35')][_0xe547('0x40')]+'%'};return _0x5480b6;})});}_0xf33b49=_[_0xe547('0x41')]({},_0xf33b49,_0x849e7c[_0xe547('0x43')]);return _0x3ca0cb[_0xe547('0x89')](_0xf33b49);}})[_0xe547('0x27')](function(_0x5b5328){if(_0x5b5328){_0x1282f0=_0x5b5328[_0xe547('0x49')];if(!_0x849e7c[_0xe547('0x35')][_0xe547('0x3b')](_0xe547('0x3c'))){_0xf33b49[_0xe547('0x22')]=qs[_0xe547('0x22')](_0x849e7c[_0xe547('0x35')][_0xe547('0x22')]);_0xf33b49[_0xe547('0x20')]=qs['offset'](_0x849e7c[_0xe547('0x35')][_0xe547('0x20')]);}return _0x3ca0cb[_0xe547('0x89')](_0xf33b49);}})[_0xe547('0x27')](function(_0x143715){if(_0x143715){return _0x143715?{'count':_0x1282f0,'rows':_0x143715}:null;}})[_0xe547('0x27')](respondWithResult(_0x4d1d94,null))[_0xe547('0x4b')](handleError(_0x4d1d94,null));}; \ No newline at end of file diff --git a/server/api/smsQueue/smsQueue.events.js b/server/api/smsQueue/smsQueue.events.js new file mode 100644 index 0000000..8d21196 --- /dev/null +++ b/server/api/smsQueue/smsQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1859=['events','../../mysqldb','SmsQueue','setMaxListeners','update','emit','hasOwnProperty','hook','exports'];(function(_0x4864ea,_0x7764ed){var _0x12e74f=function(_0x3fe41d){while(--_0x3fe41d){_0x4864ea['push'](_0x4864ea['shift']());}};_0x12e74f(++_0x7764ed);}(_0x1859,0x183));var _0x9185=function(_0x177701,_0x3a9273){_0x177701=_0x177701-0x0;var _0xa4527e=_0x1859[_0x177701];return _0xa4527e;};'use strict';var EventEmitter=require(_0x9185('0x0'));var SmsQueue=require(_0x9185('0x1'))['db'][_0x9185('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x9185('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9185('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3b3d3d){return function(_0x3246b1,_0x1b8133,_0x208136){SmsQueueEvents[_0x9185('0x5')](_0x3b3d3d+':'+_0x3246b1['id'],_0x3246b1);SmsQueueEvents[_0x9185('0x5')](_0x3b3d3d,_0x3246b1);_0x208136(null);};}for(var e in events){if(events[_0x9185('0x6')](e)){var event=events[e];SmsQueue[_0x9185('0x7')](e,emitEvent(event));}}module[_0x9185('0x8')]=SmsQueueEvents; \ No newline at end of file diff --git a/server/api/smsQueue/smsQueue.model.js b/server/api/smsQueue/smsQueue.model.js new file mode 100644 index 0000000..b1bee86 --- /dev/null +++ b/server/api/smsQueue/smsQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7f63=['moment','bluebird','path','rimraf','../../config/environment','./smsQueue.attributes','exports','SmsQueue','sms_queues','lodash','../../config/logger','api'];(function(_0x2c7d03,_0x467e23){var _0x1892e1=function(_0x40d09f){while(--_0x40d09f){_0x2c7d03['push'](_0x2c7d03['shift']());}};_0x1892e1(++_0x467e23);}(_0x7f63,0xd5));var _0x37f6=function(_0x191c4c,_0x3b7c2b){_0x191c4c=_0x191c4c-0x0;var _0x2fd037=_0x7f63[_0x191c4c];return _0x2fd037;};'use strict';var _=require(_0x37f6('0x0'));var util=require('util');var logger=require(_0x37f6('0x1'))(_0x37f6('0x2'));var moment=require(_0x37f6('0x3'));var BPromise=require(_0x37f6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x37f6('0x5'));var rimraf=require(_0x37f6('0x6'));var config=require(_0x37f6('0x7'));var attributes=require(_0x37f6('0x8'));module[_0x37f6('0x9')]=function(_0x16a637,_0x6ba279){return _0x16a637['define'](_0x37f6('0xa'),attributes,{'tableName':_0x37f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/smsQueue/smsQueue.rpc.js b/server/api/smsQueue/smsQueue.rpc.js new file mode 100644 index 0000000..f70346f --- /dev/null +++ b/server/api/smsQueue/smsQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa993=['options','raw','where','attributes','include','map','model','ShowSmsQueue','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSmsQueue','SmsQueue','findAll'];(function(_0x5cd87c,_0x5e4540){var _0x4e9f40=function(_0x2964e0){while(--_0x2964e0){_0x5cd87c['push'](_0x5cd87c['shift']());}};_0x4e9f40(++_0x5e4540);}(_0xa993,0x1b6));var _0x3a99=function(_0x3fb5fa,_0x99815a){_0x3fb5fa=_0x3fb5fa-0x0;var _0x368105=_0xa993[_0x3fb5fa];return _0x368105;};'use strict';var _=require(_0x3a99('0x0'));var util=require(_0x3a99('0x1'));var moment=require(_0x3a99('0x2'));var BPromise=require(_0x3a99('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3a99('0x4'));var db=require(_0x3a99('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x3a99('0x6'));var jayson=require(_0x3a99('0x7'));var client=jayson[_0x3a99('0x8')][_0x3a99('0x9')]({'port':0x232a});config[_0x3a99('0xa')]=_[_0x3a99('0xb')](config['redis'],{'host':_0x3a99('0xc'),'port':0x18eb});var socket=require(_0x3a99('0xd'))(new Redis(config[_0x3a99('0xa')]));require(_0x3a99('0xe'))['register'](socket);function respondWithRpcPromise(_0x1be3d1,_0x31c45f,_0x3fc34d){return new BPromise(function(_0x2499af,_0x373241){return client['request'](_0x1be3d1,_0x3fc34d)[_0x3a99('0xf')](function(_0x41b5ad){logger[_0x3a99('0x10')](_0x3a99('0x11'),_0x31c45f,_0x3a99('0x12'));logger[_0x3a99('0x13')](_0x3a99('0x14'),_0x31c45f,_0x3a99('0x12'),JSON[_0x3a99('0x15')](_0x41b5ad));if(_0x41b5ad[_0x3a99('0x16')]){if(_0x41b5ad['error'][_0x3a99('0x17')]===0x1f4){logger[_0x3a99('0x16')](_0x3a99('0x11'),_0x31c45f,_0x41b5ad[_0x3a99('0x16')][_0x3a99('0x18')]);return _0x373241(_0x41b5ad['error'][_0x3a99('0x18')]);}logger[_0x3a99('0x16')](_0x3a99('0x11'),_0x31c45f,_0x41b5ad['error'][_0x3a99('0x18')]);return _0x2499af(_0x41b5ad[_0x3a99('0x16')]['message']);}else{logger[_0x3a99('0x10')]('SmsQueue,\x20%s,\x20%s',_0x31c45f,_0x3a99('0x12'));_0x2499af(_0x41b5ad[_0x3a99('0x19')]['message']);}})[_0x3a99('0x1a')](function(_0x33f3e4){logger[_0x3a99('0x16')](_0x3a99('0x11'),_0x31c45f,_0x33f3e4);_0x373241(_0x33f3e4);});});}exports[_0x3a99('0x1b')]=function(_0x4ca7dd){var _0x5c4c7d=this;return new Promise(function(_0x557ffb,_0x41d96e){return db[_0x3a99('0x1c')][_0x3a99('0x1d')]({'raw':_0x4ca7dd[_0x3a99('0x1e')]?_0x4ca7dd[_0x3a99('0x1e')][_0x3a99('0x1f')]===undefined?!![]:![]:!![],'where':_0x4ca7dd[_0x3a99('0x1e')]?_0x4ca7dd[_0x3a99('0x1e')][_0x3a99('0x20')]||null:null,'attributes':_0x4ca7dd[_0x3a99('0x1e')]?_0x4ca7dd[_0x3a99('0x1e')][_0x3a99('0x21')]||null:null,'limit':_0x4ca7dd[_0x3a99('0x1e')]?_0x4ca7dd[_0x3a99('0x1e')]['limit']||null:null,'include':_0x4ca7dd['options']?_0x4ca7dd[_0x3a99('0x1e')][_0x3a99('0x22')]?_[_0x3a99('0x23')](_0x4ca7dd['options'][_0x3a99('0x22')],function(_0x34ae45){return{'model':db[_0x34ae45['model']],'as':_0x34ae45['as'],'attributes':_0x34ae45[_0x3a99('0x21')],'include':_0x34ae45['include']?_[_0x3a99('0x23')](_0x34ae45[_0x3a99('0x22')],function(_0xa3872){return{'model':db[_0xa3872['model']],'as':_0xa3872['as'],'attributes':_0xa3872[_0x3a99('0x21')],'include':_0xa3872[_0x3a99('0x22')]?_[_0x3a99('0x23')](_0xa3872[_0x3a99('0x22')],function(_0x571e6f){return{'model':db[_0x571e6f[_0x3a99('0x24')]],'as':_0x571e6f['as'],'attributes':_0x571e6f[_0x3a99('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3a99('0xf')](function(_0x5d7e74){logger[_0x3a99('0x10')]('GetSmsQueue',_0x4ca7dd);logger[_0x3a99('0x13')](_0x3a99('0x1b'),_0x4ca7dd,JSON['stringify'](_0x5d7e74));_0x557ffb(_0x5d7e74);})[_0x3a99('0x1a')](function(_0x35ddee){logger['error'](_0x3a99('0x1b'),_0x35ddee[_0x3a99('0x18')],_0x4ca7dd);_0x41d96e(_0x5c4c7d[_0x3a99('0x16')](0x1f4,_0x35ddee[_0x3a99('0x18')]));});});};exports[_0x3a99('0x25')]=function(_0x335fc0){var _0x23fd81=this;return new Promise(function(_0x37fcf8,_0x314e40){return db[_0x3a99('0x1c')][_0x3a99('0x26')]({'raw':_0x335fc0[_0x3a99('0x1e')]?_0x335fc0[_0x3a99('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x335fc0[_0x3a99('0x1e')]?_0x335fc0[_0x3a99('0x1e')][_0x3a99('0x20')]||null:null,'attributes':_0x335fc0['options']?_0x335fc0['options'][_0x3a99('0x21')]||null:null,'include':_0x335fc0[_0x3a99('0x1e')]?_0x335fc0[_0x3a99('0x1e')][_0x3a99('0x22')]?_[_0x3a99('0x23')](_0x335fc0['options']['include'],function(_0x481710){return{'model':db[_0x481710[_0x3a99('0x24')]],'as':_0x481710['as'],'attributes':_0x481710[_0x3a99('0x21')],'include':_0x481710[_0x3a99('0x22')]?_[_0x3a99('0x23')](_0x481710[_0x3a99('0x22')],function(_0x4ea8ca){return{'model':db[_0x4ea8ca[_0x3a99('0x24')]],'as':_0x4ea8ca['as'],'attributes':_0x4ea8ca[_0x3a99('0x21')],'include':_0x4ea8ca['include']?_['map'](_0x4ea8ca[_0x3a99('0x22')],function(_0x3a2250){return{'model':db[_0x3a2250[_0x3a99('0x24')]],'as':_0x3a2250['as'],'attributes':_0x3a2250[_0x3a99('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3a99('0xf')](function(_0x5980fd){logger['info']('ShowSmsQueue',_0x335fc0);logger[_0x3a99('0x13')](_0x3a99('0x25'),_0x335fc0,JSON[_0x3a99('0x15')](_0x5980fd));_0x37fcf8(_0x5980fd);})[_0x3a99('0x1a')](function(_0x47d04d){logger['error']('ShowSmsQueue',_0x47d04d['message'],_0x335fc0);_0x314e40(_0x23fd81[_0x3a99('0x16')](0x1f4,_0x47d04d[_0x3a99('0x18')]));});});}; \ No newline at end of file diff --git a/server/api/smsQueue/smsQueue.socket.js b/server/api/smsQueue/smsQueue.socket.js new file mode 100644 index 0000000..00324ec --- /dev/null +++ b/server/api/smsQueue/smsQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xac22=['smsQueue:','save','remove','update','emit','removeListener'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xac22,0x133));var _0x2ac2=function(_0x5471f5,_0x1eb932){_0x5471f5=_0x5471f5-0x0;var _0x2ef429=_0xac22[_0x5471f5];return _0x2ef429;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x2ac2('0x0'),_0x2ac2('0x1'),_0x2ac2('0x2')];function createListener(_0x722f0,_0x1a4b3b){return function(_0x165994){_0x1a4b3b[_0x2ac2('0x3')](_0x722f0,_0x165994);};}function removeListener(_0xced1c7,_0x1cdff4){return function(){SmsQueueEvents[_0x2ac2('0x4')](_0xced1c7,_0x1cdff4);};}exports['register']=function(_0x4a51cb){for(var _0x5db06a=0x0,_0x19fb8c=events['length'];_0x5db06a<_0x19fb8c;_0x5db06a++){var _0x31db8c=events[_0x5db06a];var _0x49d334=createListener(_0x2ac2('0x5')+_0x31db8c,_0x4a51cb);SmsQueueEvents['on'](_0x31db8c,_0x49d334);}}; \ No newline at end of file diff --git a/server/api/smsQueueReport/index.js b/server/api/smsQueueReport/index.js new file mode 100644 index 0000000..13b2c70 --- /dev/null +++ b/server/api/smsQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc7b9=['multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xc7b9,0xa8));var _0x9c7b=function(_0x5cc3ad,_0x169e2a){_0x5cc3ad=_0x5cc3ad-0x0;var _0x773e57=_0xc7b9[_0x5cc3ad];return _0x773e57;};'use strict';var multer=require(_0x9c7b('0x0'));var util=require(_0x9c7b('0x1'));var path=require(_0x9c7b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9c7b('0x3')]();var fs_extra=require(_0x9c7b('0x4'));var auth=require(_0x9c7b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9c7b('0x6'));var controller=require('./smsQueueReport.controller');router[_0x9c7b('0x7')]('/',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0x9')]);router[_0x9c7b('0x7')](_0x9c7b('0xa'),auth['isAuthenticated'](),controller[_0x9c7b('0xb')]);router[_0x9c7b('0x7')](_0x9c7b('0xc'),auth[_0x9c7b('0x8')](),controller[_0x9c7b('0xd')]);router[_0x9c7b('0xe')]('/',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0xf')]);router[_0x9c7b('0x10')]('/:id',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0x11')]);router[_0x9c7b('0x12')]('/:id',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0x13')]);module[_0x9c7b('0x14')]=router; \ No newline at end of file diff --git a/server/api/smsQueueReport/smsQueueReport.attributes.js b/server/api/smsQueueReport/smsQueueReport.attributes.js new file mode 100644 index 0000000..1a54185 --- /dev/null +++ b/server/api/smsQueueReport/smsQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9a6b=['sequelize','exports','STRING','DATE','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9a6b,0x77));var _0xb9a6=function(_0x186888,_0xe402a8){_0x186888=_0x186888-0x0;var _0x3224bf=_0x9a6b[_0x186888];return _0x3224bf;};'use strict';var moment=require(_0xb9a6('0x0'));var Sequelize=require(_0xb9a6('0x1'));module[_0xb9a6('0x2')]={'uniqueid':{'type':Sequelize[_0xb9a6('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xb9a6('0x3')]},'joinAt':{'type':Sequelize[_0xb9a6('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xb9a6('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xb9a6('0x3')]}}; \ No newline at end of file diff --git a/server/api/smsQueueReport/smsQueueReport.controller.js b/server/api/smsQueueReport/smsQueueReport.controller.js new file mode 100644 index 0000000..cf09775 --- /dev/null +++ b/server/api/smsQueueReport/smsQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xea02=['fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','key','map','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','type','VIRTUAL','filter','merge','options','SmsQueueReport','includeAll','include','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs'];(function(_0x4efcad,_0x4ed9a7){var _0x5a6d2a=function(_0x908dca){while(--_0x908dca){_0x4efcad['push'](_0x4efcad['shift']());}};_0x5a6d2a(++_0x4ed9a7);}(_0xea02,0x1c2));var _0x2ea0=function(_0x1ffc15,_0x1dcef3){_0x1ffc15=_0x1ffc15-0x0;var _0x351b0a=_0xea02[_0x1ffc15];return _0x351b0a;};'use strict';var emlformat=require(_0x2ea0('0x0'));var rimraf=require(_0x2ea0('0x1'));var zipdir=require(_0x2ea0('0x2'));var jsonpatch=require(_0x2ea0('0x3'));var rp=require(_0x2ea0('0x4'));var moment=require(_0x2ea0('0x5'));var BPromise=require(_0x2ea0('0x6'));var Mustache=require(_0x2ea0('0x7'));var util=require(_0x2ea0('0x8'));var path=require(_0x2ea0('0x9'));var sox=require('sox');var csv=require(_0x2ea0('0xa'));var ejs=require(_0x2ea0('0xb'));var fs=require('fs');var fs_extra=require(_0x2ea0('0xc'));var _=require(_0x2ea0('0xd'));var squel=require('squel');var crypto=require(_0x2ea0('0xe'));var jsforce=require(_0x2ea0('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2ea0('0x10'));var Redis=require(_0x2ea0('0x11'));var authService=require(_0x2ea0('0x12'));var qs=require(_0x2ea0('0x13'));var as=require(_0x2ea0('0x14'));var hardwareService=require(_0x2ea0('0x15'));var logger=require(_0x2ea0('0x16'))('api');var utils=require(_0x2ea0('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2ea0('0x18'));var db=require(_0x2ea0('0x19'))['db'];function respondWithStatusCode(_0x351216,_0x5a3ee9){_0x5a3ee9=_0x5a3ee9||0xcc;return function(_0x580cbc){if(_0x580cbc){return _0x351216[_0x2ea0('0x1a')](_0x5a3ee9);}return _0x351216[_0x2ea0('0x1b')](_0x5a3ee9)[_0x2ea0('0x1c')]();};}function respondWithResult(_0x22b2d5,_0x47a43e){_0x47a43e=_0x47a43e||0xc8;return function(_0x1bffc3){if(_0x1bffc3){return _0x22b2d5['status'](_0x47a43e)[_0x2ea0('0x1d')](_0x1bffc3);}};}function respondWithFilteredResult(_0x1c75ca,_0x39d4bc){return function(_0x541e08){if(_0x541e08){var _0x2ad334=typeof _0x39d4bc[_0x2ea0('0x1e')]===_0x2ea0('0x1f')&&typeof _0x39d4bc[_0x2ea0('0x20')]==='undefined';var _0x1448db=_0x541e08['count'];var _0x3bd5a4=_0x2ad334?0x0:_0x39d4bc[_0x2ea0('0x1e')];var _0x39862f=_0x2ad334?_0x541e08[_0x2ea0('0x21')]:_0x39d4bc[_0x2ea0('0x1e')]+_0x39d4bc[_0x2ea0('0x20')];var _0xee6c3e;if(_0x39862f>=_0x1448db){_0x39862f=_0x1448db;_0xee6c3e=0xc8;}else{_0xee6c3e=0xce;}_0x1c75ca[_0x2ea0('0x1b')](_0xee6c3e);return _0x1c75ca[_0x2ea0('0x22')](_0x2ea0('0x23'),_0x3bd5a4+'-'+_0x39862f+'/'+_0x1448db)['json'](_0x541e08);}return null;};}function patchUpdates(_0x5dbc87){return function(_0x9254b1){try{jsonpatch[_0x2ea0('0x24')](_0x9254b1,_0x5dbc87,!![]);}catch(_0x49a15a){return BPromise[_0x2ea0('0x25')](_0x49a15a);}return _0x9254b1[_0x2ea0('0x26')]();};}function saveUpdates(_0x47be97,_0x58b97f){return function(_0x457ec2){if(_0x457ec2){return _0x457ec2[_0x2ea0('0x27')](_0x47be97)[_0x2ea0('0x28')](function(_0x47af26){return _0x47af26;});}return null;};}function removeEntity(_0x45830f,_0x17373b){return function(_0x21b28e){if(_0x21b28e){return _0x21b28e[_0x2ea0('0x29')]()[_0x2ea0('0x28')](function(){_0x45830f[_0x2ea0('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17b5c4,_0x174219){return function(_0x3cb828){if(!_0x3cb828){_0x17b5c4[_0x2ea0('0x1a')](0x194);}return _0x3cb828;};}function handleError(_0x210ac0,_0xcd9f2e){_0xcd9f2e=_0xcd9f2e||0x1f4;return function(_0x38767a){logger['error'](_0x38767a[_0x2ea0('0x2a')]);if(_0x38767a[_0x2ea0('0x2b')]){delete _0x38767a[_0x2ea0('0x2b')];}_0x210ac0['status'](_0xcd9f2e)[_0x2ea0('0x2c')](_0x38767a);};}exports[_0x2ea0('0x2d')]=function(_0x5df443,_0x53a105){var _0x5d0a0a={},_0x247187={},_0x24a07f={'count':0x0,'rows':[]};var _0x451691=_['map'](db['SmsQueueReport'][_0x2ea0('0x2e')],function(_0x8ca81e){return{'name':_0x8ca81e['fieldName'],'type':_0x8ca81e['type'][_0x2ea0('0x2f')]};});_0x247187['model']=_[_0x2ea0('0x30')](_0x451691,'name');_0x247187[_0x2ea0('0x31')]=_[_0x2ea0('0x32')](_0x5df443[_0x2ea0('0x31')]);_0x247187[_0x2ea0('0x33')]=_[_0x2ea0('0x34')](_0x247187['model'],_0x247187[_0x2ea0('0x31')]);_0x5d0a0a[_0x2ea0('0x35')]=_[_0x2ea0('0x34')](_0x247187[_0x2ea0('0x36')],qs[_0x2ea0('0x37')](_0x5df443['query'][_0x2ea0('0x37')]));_0x5d0a0a[_0x2ea0('0x35')]=_0x5d0a0a['attributes']['length']?_0x5d0a0a['attributes']:_0x247187['model'];if(!_0x5df443['query'][_0x2ea0('0x38')](_0x2ea0('0x39'))){_0x5d0a0a['limit']=qs[_0x2ea0('0x20')](_0x5df443['query'][_0x2ea0('0x20')]);_0x5d0a0a['offset']=qs[_0x2ea0('0x1e')](_0x5df443[_0x2ea0('0x31')][_0x2ea0('0x1e')]);}_0x5d0a0a[_0x2ea0('0x3a')]=qs[_0x2ea0('0x3b')](_0x5df443[_0x2ea0('0x31')][_0x2ea0('0x3b')]);_0x5d0a0a[_0x2ea0('0x3c')]=qs[_0x2ea0('0x33')](_['pick'](_0x5df443[_0x2ea0('0x31')],_0x247187['filters']),_0x451691);if(_0x5df443[_0x2ea0('0x31')]['filter']){_0x5d0a0a['where']=_['merge'](_0x5d0a0a[_0x2ea0('0x3c')],{'$or':_['map'](_0x451691,function(_0x149400){if(_0x149400[_0x2ea0('0x3d')]!==_0x2ea0('0x3e')){var _0x35cae0={};_0x35cae0[_0x149400[_0x2ea0('0x2b')]]={'$like':'%'+_0x5df443[_0x2ea0('0x31')][_0x2ea0('0x3f')]+'%'};return _0x35cae0;}})});}_0x5d0a0a=_[_0x2ea0('0x40')]({},_0x5d0a0a,_0x5df443[_0x2ea0('0x41')]);var _0x46c521={'where':_0x5d0a0a[_0x2ea0('0x3c')]};return db[_0x2ea0('0x42')][_0x2ea0('0x21')](_0x46c521)['then'](function(_0x34c7fb){_0x24a07f[_0x2ea0('0x21')]=_0x34c7fb;if(_0x5df443[_0x2ea0('0x31')][_0x2ea0('0x43')]){_0x5d0a0a[_0x2ea0('0x44')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x2ea0('0x45')](_0x5d0a0a);})[_0x2ea0('0x28')](function(_0x83f07d){_0x24a07f['rows']=_0x83f07d;return _0x24a07f;})[_0x2ea0('0x28')](respondWithFilteredResult(_0x53a105,_0x5d0a0a))[_0x2ea0('0x46')](handleError(_0x53a105,null));};exports[_0x2ea0('0x47')]=function(_0x16bab6,_0x2f8085){var _0x3f53af={'raw':!![],'where':{'id':_0x16bab6[_0x2ea0('0x48')]['id']}},_0x3eea46={};_0x3eea46[_0x2ea0('0x36')]=_['keys'](db['SmsQueueReport'][_0x2ea0('0x2e')]);_0x3eea46[_0x2ea0('0x31')]=_[_0x2ea0('0x32')](_0x16bab6[_0x2ea0('0x31')]);_0x3eea46[_0x2ea0('0x33')]=_[_0x2ea0('0x34')](_0x3eea46[_0x2ea0('0x36')],_0x3eea46[_0x2ea0('0x31')]);_0x3f53af['attributes']=_['intersection'](_0x3eea46[_0x2ea0('0x36')],qs[_0x2ea0('0x37')](_0x16bab6['query']['fields']));_0x3f53af[_0x2ea0('0x35')]=_0x3f53af[_0x2ea0('0x35')]['length']?_0x3f53af['attributes']:_0x3eea46['model'];if(_0x16bab6[_0x2ea0('0x31')]['includeAll']){_0x3f53af[_0x2ea0('0x44')]=[{'all':!![]}];}_0x3f53af=_[_0x2ea0('0x40')]({},_0x3f53af,_0x16bab6[_0x2ea0('0x41')]);return db['SmsQueueReport'][_0x2ea0('0x49')](_0x3f53af)[_0x2ea0('0x28')](handleEntityNotFound(_0x2f8085,null))['then'](respondWithResult(_0x2f8085,null))[_0x2ea0('0x46')](handleError(_0x2f8085,null));};exports[_0x2ea0('0x4a')]=function(_0x44f26b,_0x2c641b){return db['SmsQueueReport'][_0x2ea0('0x4a')](_0x44f26b[_0x2ea0('0x4b')],{})[_0x2ea0('0x28')](respondWithResult(_0x2c641b,0xc9))[_0x2ea0('0x46')](handleError(_0x2c641b,null));};exports[_0x2ea0('0x27')]=function(_0x161bee,_0x26a772){if(_0x161bee['body']['id']){delete _0x161bee[_0x2ea0('0x4b')]['id'];}return db[_0x2ea0('0x42')]['find']({'where':{'id':_0x161bee[_0x2ea0('0x48')]['id']}})[_0x2ea0('0x28')](handleEntityNotFound(_0x26a772,null))[_0x2ea0('0x28')](saveUpdates(_0x161bee[_0x2ea0('0x4b')],null))[_0x2ea0('0x28')](respondWithResult(_0x26a772,null))[_0x2ea0('0x46')](handleError(_0x26a772,null));};exports[_0x2ea0('0x29')]=function(_0x38e14f,_0x3083d2){return db[_0x2ea0('0x42')][_0x2ea0('0x49')]({'where':{'id':_0x38e14f[_0x2ea0('0x48')]['id']}})[_0x2ea0('0x28')](handleEntityNotFound(_0x3083d2,null))['then'](removeEntity(_0x3083d2,null))[_0x2ea0('0x46')](handleError(_0x3083d2,null));};exports[_0x2ea0('0x4c')]=function(_0x29bc6c,_0x42f738){return db[_0x2ea0('0x42')][_0x2ea0('0x4c')]()[_0x2ea0('0x28')](respondWithResult(_0x42f738,null))[_0x2ea0('0x46')](handleError(_0x42f738,null));}; \ No newline at end of file diff --git a/server/api/smsQueueReport/smsQueueReport.model.js b/server/api/smsQueueReport/smsQueueReport.model.js new file mode 100644 index 0000000..dbc4eb3 --- /dev/null +++ b/server/api/smsQueueReport/smsQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1e944f,_0x59fe91){var _0x20612c=function(_0xe002b4){while(--_0xe002b4){_0x1e944f['push'](_0x1e944f['shift']());}};_0x20612c(++_0x59fe91);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/smsQueueReport/smsQueueReport.rpc.js b/server/api/smsQueueReport/smsQueueReport.rpc.js new file mode 100644 index 0000000..a820d74 --- /dev/null +++ b/server/api/smsQueueReport/smsQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdebb=['request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsQueueReport','create','body','options','raw','debug','SmsQueueReport','update','where','attributes','limit','UpdateSmsQueueReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s'];(function(_0x283127,_0x54d4d5){var _0x43da5d=function(_0x10947f){while(--_0x10947f){_0x283127['push'](_0x283127['shift']());}};_0x43da5d(++_0x54d4d5);}(_0xdebb,0x14f));var _0xbdeb=function(_0xe539a7,_0x5733d8){_0xe539a7=_0xe539a7-0x0;var _0x3f2233=_0xdebb[_0xe539a7];return _0x3f2233;};'use strict';var _=require(_0xbdeb('0x0'));var util=require(_0xbdeb('0x1'));var moment=require(_0xbdeb('0x2'));var BPromise=require('bluebird');var rs=require(_0xbdeb('0x3'));var fs=require('fs');var Redis=require(_0xbdeb('0x4'));var db=require(_0xbdeb('0x5'))['db'];var utils=require(_0xbdeb('0x6'));var logger=require('../../config/logger')(_0xbdeb('0x7'));var config=require(_0xbdeb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbdeb('0x9')][_0xbdeb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x112a61,_0x140203,_0x178608){return new BPromise(function(_0x44b80a,_0x5dc8ed){return client[_0xbdeb('0xb')](_0x112a61,_0x178608)[_0xbdeb('0xc')](function(_0x53b32b){logger[_0xbdeb('0xd')](_0xbdeb('0xe'),_0x140203,_0xbdeb('0xf'));logger['debug'](_0xbdeb('0x10'),_0x140203,'request\x20sent',JSON[_0xbdeb('0x11')](_0x53b32b));if(_0x53b32b[_0xbdeb('0x12')]){if(_0x53b32b['error'][_0xbdeb('0x13')]===0x1f4){logger[_0xbdeb('0x12')](_0xbdeb('0xe'),_0x140203,_0x53b32b[_0xbdeb('0x12')]['message']);return _0x5dc8ed(_0x53b32b[_0xbdeb('0x12')][_0xbdeb('0x14')]);}logger[_0xbdeb('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0x140203,_0x53b32b[_0xbdeb('0x12')][_0xbdeb('0x14')]);return _0x44b80a(_0x53b32b[_0xbdeb('0x12')][_0xbdeb('0x14')]);}else{logger[_0xbdeb('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x140203,_0xbdeb('0xf'));_0x44b80a(_0x53b32b[_0xbdeb('0x15')][_0xbdeb('0x14')]);}})[_0xbdeb('0x16')](function(_0x56c49e){logger['error'](_0xbdeb('0xe'),_0x140203,_0x56c49e);_0x5dc8ed(_0x56c49e);});});}exports[_0xbdeb('0x17')]=function(_0x2ee33c){var _0x3af4cf=this;return new Promise(function(_0x26f5c8,_0x4489cc){return db['SmsQueueReport'][_0xbdeb('0x18')](_0x2ee33c[_0xbdeb('0x19')],{'raw':_0x2ee33c[_0xbdeb('0x1a')]?_0x2ee33c[_0xbdeb('0x1a')][_0xbdeb('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x5f1eae){logger[_0xbdeb('0xd')](_0xbdeb('0x17'),_0x2ee33c);logger[_0xbdeb('0x1c')](_0xbdeb('0x17'),_0x2ee33c,JSON['stringify'](_0x5f1eae));_0x26f5c8(_0x5f1eae);})[_0xbdeb('0x16')](function(_0x4b994e){logger[_0xbdeb('0x12')]('CreateSmsQueueReport',_0x4b994e[_0xbdeb('0x14')],_0x2ee33c);_0x4489cc(_0x3af4cf[_0xbdeb('0x12')](0x1f4,_0x4b994e[_0xbdeb('0x14')]));});});};exports['UpdateSmsQueueReport']=function(_0x302f6c){var _0x349d55=this;return new Promise(function(_0x41bf16,_0x1b903b){return db[_0xbdeb('0x1d')][_0xbdeb('0x1e')](_0x302f6c['body'],{'raw':_0x302f6c['options']?_0x302f6c[_0xbdeb('0x1a')][_0xbdeb('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x302f6c[_0xbdeb('0x1a')]?_0x302f6c[_0xbdeb('0x1a')][_0xbdeb('0x1f')]||null:null,'attributes':_0x302f6c[_0xbdeb('0x1a')]?_0x302f6c['options'][_0xbdeb('0x20')]||null:null,'limit':_0x302f6c['options']?_0x302f6c[_0xbdeb('0x1a')][_0xbdeb('0x21')]||null:null})[_0xbdeb('0xc')](function(_0x38e937){logger[_0xbdeb('0xd')]('UpdateSmsQueueReport',_0x302f6c);logger[_0xbdeb('0x1c')](_0xbdeb('0x22'),_0x302f6c,JSON['stringify'](_0x38e937));_0x41bf16(_0x38e937);})[_0xbdeb('0x16')](function(_0x50cf86){logger[_0xbdeb('0x12')](_0xbdeb('0x22'),_0x50cf86[_0xbdeb('0x14')],_0x302f6c);_0x1b903b(_0x349d55[_0xbdeb('0x12')](0x1f4,_0x50cf86[_0xbdeb('0x14')]));});});}; \ No newline at end of file diff --git a/server/api/smsTransferReport/index.js b/server/api/smsTransferReport/index.js new file mode 100644 index 0000000..60ee3b4 --- /dev/null +++ b/server/api/smsTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x446c=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','describe','get','/:id','post','create','put','update','delete'];(function(_0x50b63c,_0x690d99){var _0x258408=function(_0x57d169){while(--_0x57d169){_0x50b63c['push'](_0x50b63c['shift']());}};_0x258408(++_0x690d99);}(_0x446c,0x156));var _0xc446=function(_0x219fa0,_0x18b239){_0x219fa0=_0x219fa0-0x0;var _0xc603fb=_0x446c[_0x219fa0];return _0xc603fb;};'use strict';var multer=require(_0xc446('0x0'));var util=require(_0xc446('0x1'));var path=require(_0xc446('0x2'));var timeout=require(_0xc446('0x3'));var express=require('express');var router=express[_0xc446('0x4')]();var fs_extra=require(_0xc446('0x5'));var auth=require(_0xc446('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc446('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth[_0xc446('0x8')](),controller[_0xc446('0x9')]);router['get']('/describe',auth[_0xc446('0x8')](),controller[_0xc446('0xa')]);router[_0xc446('0xb')](_0xc446('0xc'),auth[_0xc446('0x8')](),controller['show']);router[_0xc446('0xd')]('/',auth[_0xc446('0x8')](),controller[_0xc446('0xe')]);router[_0xc446('0xf')]('/:id',auth[_0xc446('0x8')](),controller[_0xc446('0x10')]);router[_0xc446('0x11')](_0xc446('0xc'),auth[_0xc446('0x8')](),controller[_0xc446('0x12')]);module[_0xc446('0x13')]=router; \ No newline at end of file diff --git a/server/api/smsTransferReport/smsTransferReport.attributes.js b/server/api/smsTransferReport/smsTransferReport.attributes.js new file mode 100644 index 0000000..4cf5721 --- /dev/null +++ b/server/api/smsTransferReport/smsTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x24b852,_0x2bad67){var _0x180ad2=function(_0x454562){while(--_0x454562){_0x24b852['push'](_0x24b852['shift']());}};_0x180ad2(++_0x2bad67);}(_0x008c,0x188));var _0xc008=function(_0xc67084,_0x3e2efc){_0xc67084=_0xc67084-0x0;var _0x4d06c6=_0x008c[_0xc67084];return _0x4d06c6;};'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 diff --git a/server/api/smsTransferReport/smsTransferReport.controller.js b/server/api/smsTransferReport/smsTransferReport.controller.js new file mode 100644 index 0000000..11e83f0 --- /dev/null +++ b/server/api/smsTransferReport/smsTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xae0f=['sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','keys','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','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/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xae0f,0xbc));var _0xfae0=function(_0x584892,_0x3c53bf){_0x584892=_0x584892-0x0;var _0x210ce2=_0xae0f[_0x584892];return _0x210ce2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfae0('0x0'));var zipdir=require(_0xfae0('0x1'));var jsonpatch=require(_0xfae0('0x2'));var rp=require(_0xfae0('0x3'));var moment=require(_0xfae0('0x4'));var BPromise=require(_0xfae0('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xfae0('0x6'));var ejs=require(_0xfae0('0x7'));var fs=require('fs');var fs_extra=require(_0xfae0('0x8'));var _=require(_0xfae0('0x9'));var squel=require(_0xfae0('0xa'));var crypto=require('crypto');var jsforce=require(_0xfae0('0xb'));var deskjs=require(_0xfae0('0xc'));var toCsv=require('to-csv');var querystring=require(_0xfae0('0xd'));var Papa=require(_0xfae0('0xe'));var Redis=require('ioredis');var authService=require(_0xfae0('0xf'));var qs=require(_0xfae0('0x10'));var as=require(_0xfae0('0x11'));var hardwareService=require(_0xfae0('0x12'));var logger=require(_0xfae0('0x13'))(_0xfae0('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfae0('0x15'));var db=require(_0xfae0('0x16'))['db'];function respondWithStatusCode(_0x498145,_0x1c100a){_0x1c100a=_0x1c100a||0xcc;return function(_0x26c7bd){if(_0x26c7bd){return _0x498145['sendStatus'](_0x1c100a);}return _0x498145['status'](_0x1c100a)[_0xfae0('0x17')]();};}function respondWithResult(_0x26a7ef,_0x39535f){_0x39535f=_0x39535f||0xc8;return function(_0x23c393){if(_0x23c393){return _0x26a7ef[_0xfae0('0x18')](_0x39535f)[_0xfae0('0x19')](_0x23c393);}};}function respondWithFilteredResult(_0x484f5c,_0x442cd6){return function(_0x293fee){if(_0x293fee){var _0x329514=typeof _0x442cd6[_0xfae0('0x1a')]===_0xfae0('0x1b')&&typeof _0x442cd6[_0xfae0('0x1c')]==='undefined';var _0x2ccdd8=_0x293fee[_0xfae0('0x1d')];var _0xaeb197=_0x329514?0x0:_0x442cd6[_0xfae0('0x1a')];var _0x11080b=_0x329514?_0x293fee['count']:_0x442cd6[_0xfae0('0x1a')]+_0x442cd6[_0xfae0('0x1c')];var _0x24498b;if(_0x11080b>=_0x2ccdd8){_0x11080b=_0x2ccdd8;_0x24498b=0xc8;}else{_0x24498b=0xce;}_0x484f5c[_0xfae0('0x18')](_0x24498b);return _0x484f5c[_0xfae0('0x1e')](_0xfae0('0x1f'),_0xaeb197+'-'+_0x11080b+'/'+_0x2ccdd8)[_0xfae0('0x19')](_0x293fee);}return null;};}function patchUpdates(_0x1e99f1){return function(_0x52992f){try{jsonpatch[_0xfae0('0x20')](_0x52992f,_0x1e99f1,!![]);}catch(_0x2ba164){return BPromise[_0xfae0('0x21')](_0x2ba164);}return _0x52992f['save']();};}function saveUpdates(_0x1d3a04,_0x214faa){return function(_0x28d673){if(_0x28d673){return _0x28d673[_0xfae0('0x22')](_0x1d3a04)['then'](function(_0x5a3493){return _0x5a3493;});}return null;};}function removeEntity(_0x19903a,_0x569a83){return function(_0x2faad2){if(_0x2faad2){return _0x2faad2[_0xfae0('0x23')]()[_0xfae0('0x24')](function(){_0x19903a[_0xfae0('0x18')](0xcc)[_0xfae0('0x17')]();});}};}function handleEntityNotFound(_0x472cde,_0x21f02c){return function(_0x3d611f){if(!_0x3d611f){_0x472cde[_0xfae0('0x25')](0x194);}return _0x3d611f;};}function handleError(_0x3775fb,_0x37aa01){_0x37aa01=_0x37aa01||0x1f4;return function(_0x48feba){logger[_0xfae0('0x26')](_0x48feba[_0xfae0('0x27')]);if(_0x48feba[_0xfae0('0x28')]){delete _0x48feba[_0xfae0('0x28')];}_0x3775fb[_0xfae0('0x18')](_0x37aa01)[_0xfae0('0x29')](_0x48feba);};}exports[_0xfae0('0x2a')]=function(_0x3e10cc,_0x1951a1){var _0x1aab6c={},_0x27755c={},_0x551281={'count':0x0,'rows':[]};var _0x142c0b=_[_0xfae0('0x2b')](db[_0xfae0('0x2c')][_0xfae0('0x2d')],function(_0x6ad10e){return{'name':_0x6ad10e[_0xfae0('0x2e')],'type':_0x6ad10e[_0xfae0('0x2f')][_0xfae0('0x30')]};});_0x27755c['model']=_[_0xfae0('0x2b')](_0x142c0b,_0xfae0('0x28'));_0x27755c[_0xfae0('0x31')]=_['keys'](_0x3e10cc['query']);_0x27755c[_0xfae0('0x32')]=_[_0xfae0('0x33')](_0x27755c[_0xfae0('0x34')],_0x27755c[_0xfae0('0x31')]);_0x1aab6c[_0xfae0('0x35')]=_[_0xfae0('0x33')](_0x27755c[_0xfae0('0x34')],qs[_0xfae0('0x36')](_0x3e10cc[_0xfae0('0x31')][_0xfae0('0x36')]));_0x1aab6c[_0xfae0('0x35')]=_0x1aab6c[_0xfae0('0x35')][_0xfae0('0x37')]?_0x1aab6c[_0xfae0('0x35')]:_0x27755c[_0xfae0('0x34')];if(!_0x3e10cc[_0xfae0('0x31')][_0xfae0('0x38')]('nolimit')){_0x1aab6c[_0xfae0('0x1c')]=qs['limit'](_0x3e10cc[_0xfae0('0x31')]['limit']);_0x1aab6c[_0xfae0('0x1a')]=qs[_0xfae0('0x1a')](_0x3e10cc[_0xfae0('0x31')][_0xfae0('0x1a')]);}_0x1aab6c[_0xfae0('0x39')]=qs[_0xfae0('0x3a')](_0x3e10cc['query'][_0xfae0('0x3a')]);_0x1aab6c[_0xfae0('0x3b')]=qs[_0xfae0('0x32')](_[_0xfae0('0x3c')](_0x3e10cc[_0xfae0('0x31')],_0x27755c[_0xfae0('0x32')]),_0x142c0b);if(_0x3e10cc['query'][_0xfae0('0x3d')]){_0x1aab6c[_0xfae0('0x3b')]=_[_0xfae0('0x3e')](_0x1aab6c[_0xfae0('0x3b')],{'$or':_[_0xfae0('0x2b')](_0x142c0b,function(_0x477770){if(_0x477770['type']!=='VIRTUAL'){var _0x3a5535={};_0x3a5535[_0x477770[_0xfae0('0x28')]]={'$like':'%'+_0x3e10cc['query'][_0xfae0('0x3d')]+'%'};return _0x3a5535;}})});}_0x1aab6c=_[_0xfae0('0x3e')]({},_0x1aab6c,_0x3e10cc[_0xfae0('0x3f')]);var _0x2c0de0={'where':_0x1aab6c[_0xfae0('0x3b')]};return db[_0xfae0('0x2c')][_0xfae0('0x1d')](_0x2c0de0)[_0xfae0('0x24')](function(_0x21c3a8){_0x551281[_0xfae0('0x1d')]=_0x21c3a8;if(_0x3e10cc[_0xfae0('0x31')]['includeAll']){_0x1aab6c[_0xfae0('0x40')]=[{'all':!![]}];}return db[_0xfae0('0x2c')][_0xfae0('0x41')](_0x1aab6c);})[_0xfae0('0x24')](function(_0xa9e27c){_0x551281[_0xfae0('0x42')]=_0xa9e27c;return _0x551281;})[_0xfae0('0x24')](respondWithFilteredResult(_0x1951a1,_0x1aab6c))[_0xfae0('0x43')](handleError(_0x1951a1,null));};exports[_0xfae0('0x44')]=function(_0x29da7e,_0x419949){var _0x18eb37={'raw':!![],'where':{'id':_0x29da7e[_0xfae0('0x45')]['id']}},_0xfcf69a={};_0xfcf69a[_0xfae0('0x34')]=_[_0xfae0('0x46')](db[_0xfae0('0x2c')]['rawAttributes']);_0xfcf69a['query']=_[_0xfae0('0x46')](_0x29da7e[_0xfae0('0x31')]);_0xfcf69a['filters']=_[_0xfae0('0x33')](_0xfcf69a[_0xfae0('0x34')],_0xfcf69a[_0xfae0('0x31')]);_0x18eb37[_0xfae0('0x35')]=_[_0xfae0('0x33')](_0xfcf69a[_0xfae0('0x34')],qs[_0xfae0('0x36')](_0x29da7e[_0xfae0('0x31')]['fields']));_0x18eb37['attributes']=_0x18eb37[_0xfae0('0x35')][_0xfae0('0x37')]?_0x18eb37[_0xfae0('0x35')]:_0xfcf69a[_0xfae0('0x34')];if(_0x29da7e[_0xfae0('0x31')]['includeAll']){_0x18eb37[_0xfae0('0x40')]=[{'all':!![]}];}_0x18eb37=_[_0xfae0('0x3e')]({},_0x18eb37,_0x29da7e[_0xfae0('0x3f')]);return db['SmsTransferReport'][_0xfae0('0x47')](_0x18eb37)['then'](handleEntityNotFound(_0x419949,null))[_0xfae0('0x24')](respondWithResult(_0x419949,null))[_0xfae0('0x43')](handleError(_0x419949,null));};exports[_0xfae0('0x48')]=function(_0x46e1e4,_0x2b61f9){return db[_0xfae0('0x2c')][_0xfae0('0x48')](_0x46e1e4['body'],{})[_0xfae0('0x24')](respondWithResult(_0x2b61f9,0xc9))[_0xfae0('0x43')](handleError(_0x2b61f9,null));};exports[_0xfae0('0x22')]=function(_0x1f4834,_0x2d2ee5){if(_0x1f4834[_0xfae0('0x49')]['id']){delete _0x1f4834[_0xfae0('0x49')]['id'];}return db[_0xfae0('0x2c')]['find']({'where':{'id':_0x1f4834[_0xfae0('0x45')]['id']}})[_0xfae0('0x24')](handleEntityNotFound(_0x2d2ee5,null))[_0xfae0('0x24')](saveUpdates(_0x1f4834[_0xfae0('0x49')],null))['then'](respondWithResult(_0x2d2ee5,null))[_0xfae0('0x43')](handleError(_0x2d2ee5,null));};exports['destroy']=function(_0xe089dc,_0x19f419){return db['SmsTransferReport'][_0xfae0('0x47')]({'where':{'id':_0xe089dc[_0xfae0('0x45')]['id']}})[_0xfae0('0x24')](handleEntityNotFound(_0x19f419,null))[_0xfae0('0x24')](removeEntity(_0x19f419,null))[_0xfae0('0x43')](handleError(_0x19f419,null));};exports[_0xfae0('0x4a')]=function(_0x28abf3,_0x5621fd){return db['SmsTransferReport'][_0xfae0('0x4a')]()['then'](respondWithResult(_0x5621fd,null))['catch'](handleError(_0x5621fd,null));}; \ No newline at end of file diff --git a/server/api/smsTransferReport/smsTransferReport.model.js b/server/api/smsTransferReport/smsTransferReport.model.js new file mode 100644 index 0000000..42bb5c3 --- /dev/null +++ b/server/api/smsTransferReport/smsTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x92ba=['bluebird','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','report_sms_transfer','uniqueid','util','../../config/logger','api','moment'];(function(_0x3987d3,_0x5e9a84){var _0x389897=function(_0x307c3c){while(--_0x307c3c){_0x3987d3['push'](_0x3987d3['shift']());}};_0x389897(++_0x5e9a84);}(_0x92ba,0x1d0));var _0xa92b=function(_0x3e4a00,_0x5549e3){_0x3e4a00=_0x3e4a00-0x0;var _0x45598a=_0x92ba[_0x3e4a00];return _0x45598a;};'use strict';var _=require('lodash');var util=require(_0xa92b('0x0'));var logger=require(_0xa92b('0x1'))(_0xa92b('0x2'));var moment=require(_0xa92b('0x3'));var BPromise=require(_0xa92b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa92b('0x5'));var rimraf=require(_0xa92b('0x6'));var config=require(_0xa92b('0x7'));var attributes=require(_0xa92b('0x8'));module[_0xa92b('0x9')]=function(_0x15dbe0,_0x171f67){return _0x15dbe0[_0xa92b('0xa')]('SmsTransferReport',attributes,{'tableName':_0xa92b('0xb'),'paranoid':![],'indexes':[{'name':_0xa92b('0xc'),'fields':[_0xa92b('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/smsTransferReport/smsTransferReport.rpc.js b/server/api/smsTransferReport/smsTransferReport.rpc.js new file mode 100644 index 0000000..55e815c --- /dev/null +++ b/server/api/smsTransferReport/smsTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x79a8=['message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x79a8,0x1d0));var _0x879a=function(_0x1e9604,_0x5de613){_0x1e9604=_0x1e9604-0x0;var _0x522053=_0x79a8[_0x1e9604];return _0x522053;};'use strict';var _=require(_0x879a('0x0'));var util=require('util');var moment=require(_0x879a('0x1'));var BPromise=require(_0x879a('0x2'));var rs=require(_0x879a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x879a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x879a('0x5'))(_0x879a('0x6'));var config=require(_0x879a('0x7'));var jayson=require(_0x879a('0x8'));var client=jayson[_0x879a('0x9')][_0x879a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d353e,_0x2427bf,_0x4bf3ab){return new BPromise(function(_0xe27fe6,_0x5cb5c9){return client[_0x879a('0xb')](_0x1d353e,_0x4bf3ab)[_0x879a('0xc')](function(_0x5eba04){logger[_0x879a('0xd')](_0x879a('0xe'),_0x2427bf,_0x879a('0xf'));logger['debug'](_0x879a('0x10'),_0x2427bf,_0x879a('0xf'),JSON['stringify'](_0x5eba04));if(_0x5eba04['error']){if(_0x5eba04[_0x879a('0x11')][_0x879a('0x12')]===0x1f4){logger[_0x879a('0x11')](_0x879a('0xe'),_0x2427bf,_0x5eba04['error'][_0x879a('0x13')]);return _0x5cb5c9(_0x5eba04[_0x879a('0x11')][_0x879a('0x13')]);}logger[_0x879a('0x11')](_0x879a('0xe'),_0x2427bf,_0x5eba04[_0x879a('0x11')][_0x879a('0x13')]);return _0xe27fe6(_0x5eba04[_0x879a('0x11')][_0x879a('0x13')]);}else{logger[_0x879a('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x2427bf,'request\x20sent');_0xe27fe6(_0x5eba04[_0x879a('0x14')][_0x879a('0x13')]);}})['catch'](function(_0x119260){logger[_0x879a('0x11')](_0x879a('0xe'),_0x2427bf,_0x119260);_0x5cb5c9(_0x119260);});});} \ No newline at end of file diff --git a/server/api/sound/index.js b/server/api/sound/index.js new file mode 100644 index 0000000..fd8d425 --- /dev/null +++ b/server/api/sound/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcc02=['multer','util','path','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','/:id/download','download','diskStorage','root','server/files/sounds/original/','originalname','replace','basename','post','single','file','create','put','update','delete'];(function(_0x18b9cc,_0x42bafc){var _0x373cc9=function(_0x46aa3d){while(--_0x46aa3d){_0x18b9cc['push'](_0x18b9cc['shift']());}};_0x373cc9(++_0x42bafc);}(_0xcc02,0x9c));var _0x2cc0=function(_0x4a9b47,_0x8b9c3e){_0x4a9b47=_0x4a9b47-0x0;var _0x31ec47=_0xcc02[_0x4a9b47];return _0x31ec47;};'use strict';var multer=require(_0x2cc0('0x0'));var util=require(_0x2cc0('0x1'));var path=require(_0x2cc0('0x2'));var timeout=require('connect-timeout');var express=require(_0x2cc0('0x3'));var router=express[_0x2cc0('0x4')]();var fs_extra=require(_0x2cc0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2cc0('0x6'));var controller=require('./sound.controller');router[_0x2cc0('0x7')]('/',auth[_0x2cc0('0x8')](),controller[_0x2cc0('0x9')]);router['get'](_0x2cc0('0xa'),auth[_0x2cc0('0x8')](),controller['show']);router[_0x2cc0('0x7')](_0x2cc0('0xb'),auth[_0x2cc0('0x8')](),controller[_0x2cc0('0xc')]);var upload=multer({'storage':multer[_0x2cc0('0xd')]({'destination':function(_0x301c5e,_0x4635a4,_0x494a5e){_0x494a5e(null,path['join'](config[_0x2cc0('0xe')],_0x2cc0('0xf')));},'filename':function(_0x4afd6b,_0x1238d0,_0x2715d0){_0x1238d0[_0x2cc0('0x10')]=_0x1238d0[_0x2cc0('0x10')][_0x2cc0('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2715d0(null,util['format']('%s-%s%s',path[_0x2cc0('0x12')](_0x1238d0[_0x2cc0('0x10')],path['extname'](_0x1238d0[_0x2cc0('0x10')])),Date['now'](),path['extname'](_0x1238d0['originalname'])));}})});router[_0x2cc0('0x13')]('/',upload[_0x2cc0('0x14')](_0x2cc0('0x15')),controller[_0x2cc0('0x16')]);router[_0x2cc0('0x17')](_0x2cc0('0xa'),auth[_0x2cc0('0x8')](),controller[_0x2cc0('0x18')]);router[_0x2cc0('0x19')](_0x2cc0('0xa'),auth['isAuthenticated'](),controller[_0x2cc0('0x19')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/sound/sound.attributes.js b/server/api/sound/sound.attributes.js new file mode 100644 index 0000000..818dd23 --- /dev/null +++ b/server/api/sound/sound.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4121=['INTEGER','sequelize','STRING','name','FLOAT','BIGINT'];(function(_0x1e8f6b,_0x36ef00){var _0x171dfc=function(_0x573798){while(--_0x573798){_0x1e8f6b['push'](_0x1e8f6b['shift']());}};_0x171dfc(++_0x36ef00);}(_0x4121,0x14b));var _0x1412=function(_0x4133a2,_0x2287b6){_0x4133a2=_0x4133a2-0x0;var _0x4d8387=_0x4121[_0x4133a2];return _0x4d8387;};'use strict';var Sequelize=require(_0x1412('0x0'));module['exports']={'name':{'type':Sequelize[_0x1412('0x1')],'unique':_0x1412('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x1412('0x1')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x1412('0x1')]},'original_format':{'type':Sequelize[_0x1412('0x1')]},'original_duration':{'type':Sequelize[_0x1412('0x3')]},'original_sampleCount':{'type':Sequelize[_0x1412('0x4')]},'original_channelCount':{'type':Sequelize[_0x1412('0x5')]},'original_bitRate':{'type':Sequelize[_0x1412('0x4')]},'original_sampleRate':{'type':Sequelize[_0x1412('0x5')]},'converted_format':{'type':Sequelize[_0x1412('0x1')]},'converted_duration':{'type':Sequelize[_0x1412('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x1412('0x4')]},'converted_channelCount':{'type':Sequelize[_0x1412('0x5')]},'converted_bitRate':{'type':Sequelize[_0x1412('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x1412('0x5')]}}; \ No newline at end of file diff --git a/server/api/sound/sound.controller.js b/server/api/sound/sound.controller.js new file mode 100644 index 0000000..fc7051b --- /dev/null +++ b/server/api/sound/sound.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfaef=['body','role','userProfileId','user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','description','delete','params','save_name','original_format','eml-format','rimraf','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','save','update','then','get','Sounds','UserProfileResource','destroy','sendStatus','name','send','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Sound','includeAll','include','findAll','rows','catch','show','find','download','join','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','root','server/files/sounds/converted','%s.%s','create','basename','file','originalname','extname','filename','substring','format','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','wav','unlinkSync','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','converted_sampleRate'];(function(_0x15ec92,_0x1e80d2){var _0x376fc6=function(_0x4fb6ed){while(--_0x4fb6ed){_0x15ec92['push'](_0x15ec92['shift']());}};_0x376fc6(++_0x1e80d2);}(_0xfaef,0x8d));var _0xffae=function(_0x3e99cb,_0x1d2fe0){_0x3e99cb=_0x3e99cb-0x0;var _0x1bc729=_0xfaef[_0x3e99cb];return _0x1bc729;};'use strict';var emlformat=require(_0xffae('0x0'));var rimraf=require(_0xffae('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffae('0x2'));var rp=require(_0xffae('0x3'));var moment=require(_0xffae('0x4'));var BPromise=require(_0xffae('0x5'));var Mustache=require(_0xffae('0x6'));var util=require(_0xffae('0x7'));var path=require(_0xffae('0x8'));var sox=require(_0xffae('0x9'));var csv=require(_0xffae('0xa'));var ejs=require(_0xffae('0xb'));var fs=require('fs');var fs_extra=require(_0xffae('0xc'));var _=require(_0xffae('0xd'));var squel=require(_0xffae('0xe'));var crypto=require(_0xffae('0xf'));var jsforce=require(_0xffae('0x10'));var deskjs=require(_0xffae('0x11'));var toCsv=require(_0xffae('0xa'));var querystring=require(_0xffae('0x12'));var Papa=require(_0xffae('0x13'));var Redis=require('ioredis');var authService=require(_0xffae('0x14'));var qs=require(_0xffae('0x15'));var as=require(_0xffae('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xffae('0x17'))(_0xffae('0x18'));var utils=require(_0xffae('0x19'));var config=require(_0xffae('0x1a'));var licenseUtil=require(_0xffae('0x1b'));var db=require(_0xffae('0x1c'))['db'];function respondWithStatusCode(_0x1a6546,_0xfb6c18){_0xfb6c18=_0xfb6c18||0xcc;return function(_0x5d1c35){if(_0x5d1c35){return _0x1a6546['sendStatus'](_0xfb6c18);}return _0x1a6546[_0xffae('0x1d')](_0xfb6c18)[_0xffae('0x1e')]();};}function respondWithResult(_0x102fb3,_0xd4d71e){_0xd4d71e=_0xd4d71e||0xc8;return function(_0x5e3b60){if(_0x5e3b60){return _0x102fb3[_0xffae('0x1d')](_0xd4d71e)[_0xffae('0x1f')](_0x5e3b60);}};}function respondWithFilteredResult(_0x2bfadf,_0x3b61cd){return function(_0x3d8879){if(_0x3d8879){var _0x420a47=typeof _0x3b61cd['offset']==='undefined'&&typeof _0x3b61cd[_0xffae('0x20')]===_0xffae('0x21');var _0x1c3b50=_0x3d8879['count'];var _0x12e55d=_0x420a47?0x0:_0x3b61cd[_0xffae('0x22')];var _0x5e911e=_0x420a47?_0x3d8879[_0xffae('0x23')]:_0x3b61cd[_0xffae('0x22')]+_0x3b61cd[_0xffae('0x20')];var _0x454ba6;if(_0x5e911e>=_0x1c3b50){_0x5e911e=_0x1c3b50;_0x454ba6=0xc8;}else{_0x454ba6=0xce;}_0x2bfadf['status'](_0x454ba6);return _0x2bfadf[_0xffae('0x24')](_0xffae('0x25'),_0x12e55d+'-'+_0x5e911e+'/'+_0x1c3b50)[_0xffae('0x1f')](_0x3d8879);}return null;};}function patchUpdates(_0x4da60d){return function(_0x414495){try{jsonpatch[_0xffae('0x26')](_0x414495,_0x4da60d,!![]);}catch(_0x30eae2){return BPromise['reject'](_0x30eae2);}return _0x414495[_0xffae('0x27')]();};}function saveUpdates(_0x2778fd,_0x3af01e){return function(_0x5e2f27){if(_0x5e2f27){return _0x5e2f27[_0xffae('0x28')](_0x2778fd)[_0xffae('0x29')](function(_0x5e7e7d){return _0x5e7e7d;});}return null;};}function removeEntity(_0x47b9de,_0x35ea0b){return function(_0x2c28ff){if(_0x2c28ff){return _0x2c28ff['destroy']()[_0xffae('0x29')](function(){var _0x232bdb=_0x2c28ff[_0xffae('0x2a')]({'plain':!![]});var _0x206708=_0xffae('0x2b');return db[_0xffae('0x2c')][_0xffae('0x2d')]({'where':{'type':_0x206708,'resourceId':_0x232bdb['id']}})[_0xffae('0x29')](function(){return _0x2c28ff;});})['then'](function(){_0x47b9de[_0xffae('0x1d')](0xcc)[_0xffae('0x1e')]();});}};}function handleEntityNotFound(_0x35ba21,_0x2ab192){return function(_0x5c570f){if(!_0x5c570f){_0x35ba21[_0xffae('0x2e')](0x194);}return _0x5c570f;};}function handleError(_0x50b1e9,_0xd91a93){_0xd91a93=_0xd91a93||0x1f4;return function(_0x394de9){logger['error'](_0x394de9['stack']);if(_0x394de9[_0xffae('0x2f')]){delete _0x394de9[_0xffae('0x2f')];}_0x50b1e9[_0xffae('0x1d')](_0xd91a93)[_0xffae('0x30')](_0x394de9);};}exports['index']=function(_0x1cefed,_0x4714ff){var _0x1ebf77={},_0x167fd0={},_0x394720={'count':0x0,'rows':[]};var _0x5dfccf=_['map'](db['Sound'][_0xffae('0x31')],function(_0x294bb){return{'name':_0x294bb[_0xffae('0x32')],'type':_0x294bb['type'][_0xffae('0x33')]};});_0x167fd0[_0xffae('0x34')]=_[_0xffae('0x35')](_0x5dfccf,_0xffae('0x2f'));_0x167fd0['query']=_[_0xffae('0x36')](_0x1cefed[_0xffae('0x37')]);_0x167fd0[_0xffae('0x38')]=_[_0xffae('0x39')](_0x167fd0[_0xffae('0x34')],_0x167fd0[_0xffae('0x37')]);_0x1ebf77[_0xffae('0x3a')]=_['intersection'](_0x167fd0[_0xffae('0x34')],qs[_0xffae('0x3b')](_0x1cefed[_0xffae('0x37')]['fields']));_0x1ebf77[_0xffae('0x3a')]=_0x1ebf77[_0xffae('0x3a')][_0xffae('0x3c')]?_0x1ebf77[_0xffae('0x3a')]:_0x167fd0[_0xffae('0x34')];if(!_0x1cefed[_0xffae('0x37')]['hasOwnProperty']('nolimit')){_0x1ebf77[_0xffae('0x20')]=qs['limit'](_0x1cefed[_0xffae('0x37')]['limit']);_0x1ebf77[_0xffae('0x22')]=qs['offset'](_0x1cefed[_0xffae('0x37')][_0xffae('0x22')]);}_0x1ebf77[_0xffae('0x3d')]=qs['sort'](_0x1cefed['query'][_0xffae('0x3e')]);_0x1ebf77[_0xffae('0x3f')]=qs['filters'](_[_0xffae('0x40')](_0x1cefed[_0xffae('0x37')],_0x167fd0[_0xffae('0x38')]),_0x5dfccf);if(_0x1cefed['query'][_0xffae('0x41')]){_0x1ebf77[_0xffae('0x3f')]=_[_0xffae('0x42')](_0x1ebf77['where'],{'$or':_[_0xffae('0x35')](_0x5dfccf,function(_0x522390){if(_0x522390[_0xffae('0x43')]!==_0xffae('0x44')){var _0x13d8b7={};_0x13d8b7[_0x522390[_0xffae('0x2f')]]={'$like':'%'+_0x1cefed['query'][_0xffae('0x41')]+'%'};return _0x13d8b7;}})});}_0x1ebf77=_[_0xffae('0x42')]({},_0x1ebf77,_0x1cefed[_0xffae('0x45')]);var _0x46aa71={'where':_0x1ebf77['where']};return db[_0xffae('0x46')][_0xffae('0x23')](_0x46aa71)[_0xffae('0x29')](function(_0x3ea6dc){_0x394720[_0xffae('0x23')]=_0x3ea6dc;if(_0x1cefed[_0xffae('0x37')][_0xffae('0x47')]){_0x1ebf77[_0xffae('0x48')]=[{'all':!![]}];}return db[_0xffae('0x46')][_0xffae('0x49')](_0x1ebf77);})['then'](function(_0x194880){_0x394720[_0xffae('0x4a')]=_0x194880;return _0x394720;})['then'](respondWithFilteredResult(_0x4714ff,_0x1ebf77))[_0xffae('0x4b')](handleError(_0x4714ff,null));};exports[_0xffae('0x4c')]=function(_0x2d2802,_0x2cebf2){var _0x35485b={'raw':!![],'where':{'id':_0x2d2802['params']['id']}},_0x95315d={};_0x95315d['model']=_['keys'](db[_0xffae('0x46')][_0xffae('0x31')]);_0x95315d[_0xffae('0x37')]=_['keys'](_0x2d2802[_0xffae('0x37')]);_0x95315d[_0xffae('0x38')]=_['intersection'](_0x95315d[_0xffae('0x34')],_0x95315d[_0xffae('0x37')]);_0x35485b[_0xffae('0x3a')]=_[_0xffae('0x39')](_0x95315d['model'],qs[_0xffae('0x3b')](_0x2d2802[_0xffae('0x37')][_0xffae('0x3b')]));_0x35485b[_0xffae('0x3a')]=_0x35485b[_0xffae('0x3a')][_0xffae('0x3c')]?_0x35485b[_0xffae('0x3a')]:_0x95315d['model'];if(_0x2d2802[_0xffae('0x37')][_0xffae('0x47')]){_0x35485b['include']=[{'all':!![]}];}_0x35485b=_[_0xffae('0x42')]({},_0x35485b,_0x2d2802[_0xffae('0x45')]);return db[_0xffae('0x46')][_0xffae('0x4d')](_0x35485b)['then'](handleEntityNotFound(_0x2cebf2,null))[_0xffae('0x29')](respondWithResult(_0x2cebf2,null))[_0xffae('0x4b')](handleError(_0x2cebf2,null));};exports[_0xffae('0x4e')]=function(_0x2803a7,_0x27cf07,_0x2902bd){return db[_0xffae('0x46')][_0xffae('0x4d')]({'where':{'id':_0x2803a7['params']['id']},'attributes':[_0xffae('0x2f'),'save_name','converted_format'],'raw':!![]})[_0xffae('0x29')](handleEntityNotFound(_0x27cf07,null))[_0xffae('0x29')](function(_0x5b01cf){if(_0x5b01cf){if(!fs['existsSync'](path[_0xffae('0x4f')](config['root'],'server/files/sounds/converted',_0x5b01cf['save_name']+'.'+_0x5b01cf[_0xffae('0x50')]))){throw new db[(_0xffae('0x51'))][(_0xffae('0x52'))](_0xffae('0x53'));}return _0x27cf07['download'](path[_0xffae('0x4f')](config[_0xffae('0x54')],_0xffae('0x55'),util['format'](_0xffae('0x56'),_0x5b01cf['save_name'],_0x5b01cf['converted_format'])),util['format'](_0xffae('0x56'),_0x5b01cf['name'],_0x5b01cf[_0xffae('0x50')]));}return null;})['catch'](handleError(_0x27cf07,null));};exports[_0xffae('0x57')]=function(_0x44f03e,_0x2b60f2,_0x5578c0){var _0x5328b2={'name':path[_0xffae('0x58')](_0x44f03e[_0xffae('0x59')][_0xffae('0x5a')],path[_0xffae('0x5b')](_0x44f03e[_0xffae('0x59')]['originalname'])),'save_name':path[_0xffae('0x58')](_0x44f03e[_0xffae('0x59')][_0xffae('0x5c')],path[_0xffae('0x5b')](_0x44f03e['file'][_0xffae('0x5c')])),'original_format':path['extname'](_0x44f03e['file']['originalname'])[_0xffae('0x5d')](0x1),'converted_format':'wav'};var _0xc7ee21=path[_0xffae('0x4f')](config[_0xffae('0x54')],'server/files/sounds/original',_0x44f03e[_0xffae('0x59')][_0xffae('0x5c')]);var _0x23886b=path['join'](config['root'],'server/files/sounds/converted',util[_0xffae('0x5e')](_0xffae('0x56'),path['basename'](_0x44f03e[_0xffae('0x59')][_0xffae('0x5c')],path[_0xffae('0x5b')](_0x44f03e[_0xffae('0x59')][_0xffae('0x5c')])),_0x5328b2[_0xffae('0x50')]));logger[_0xffae('0x5f')](_0xffae('0x60'),_0xc7ee21);logger[_0xffae('0x5f')](_0xffae('0x61'),_0x23886b);try{fs[_0xffae('0x62')](_0xc7ee21,parseInt('0777',0x8));var _0xb03ccc=sox[_0xffae('0x63')](_0xc7ee21,_0x23886b,{'sampleRate':0x1f40,'format':_0xffae('0x64'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xb03ccc['on']('error',function(_0x5785c3){fs[_0xffae('0x65')](_0xc7ee21);_0x2b60f2[_0xffae('0x1d')](0x1f4)[_0xffae('0x30')](_0x5785c3);});_0xb03ccc['on']('src',function(_0x1c83e7){_0x5328b2[_0xffae('0x66')]=isNaN(_0x1c83e7[_0xffae('0x67')])?null:_0x1c83e7[_0xffae('0x67')]*0x3e8;_0x5328b2[_0xffae('0x68')]=isNaN(_0x1c83e7['sampleCount'])?null:_0x1c83e7[_0xffae('0x69')];_0x5328b2[_0xffae('0x6a')]=isNaN(_0x1c83e7[_0xffae('0x6b')])?null:_0x1c83e7[_0xffae('0x6b')];_0x5328b2['original_bitRate']=isNaN(_0x1c83e7[_0xffae('0x6c')])?null:_0x1c83e7[_0xffae('0x6c')];_0x5328b2[_0xffae('0x6d')]=isNaN(_0x1c83e7[_0xffae('0x6e')])?null:_0x1c83e7[_0xffae('0x6e')];});_0xb03ccc['on']('dest',function(_0x99fc7d){_0x5328b2[_0xffae('0x6f')]=isNaN(_0x99fc7d[_0xffae('0x67')])?null:_0x99fc7d[_0xffae('0x67')]*0x3e8;_0x5328b2[_0xffae('0x70')]=isNaN(_0x99fc7d[_0xffae('0x69')])?null:_0x99fc7d[_0xffae('0x69')];_0x5328b2[_0xffae('0x71')]=isNaN(_0x99fc7d['channelCount'])?null:_0x99fc7d['channelCount'];_0x5328b2['converted_bitRate']=isNaN(_0x99fc7d['bitRate'])?null:_0x99fc7d[_0xffae('0x6c')];_0x5328b2[_0xffae('0x72')]=isNaN(_0x99fc7d['sampleRate'])?null:_0x99fc7d[_0xffae('0x6e')];});_0xb03ccc['on'](_0xffae('0x1e'),function(){fs['chmodSync'](_0x23886b,parseInt('0777',0x8));return db[_0xffae('0x46')][_0xffae('0x57')](_0x5328b2)['then'](function(_0x52c51e){var _0x4565a0={'role':_0x44f03e[_0xffae('0x73')][_0xffae('0x74')],'userProfileId':_0x44f03e['body'][_0xffae('0x75')]};if(!_0x4565a0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4565a0[_0xffae('0x74')]===_0xffae('0x76')){var _0x45266d=_0x52c51e['get']({'plain':!![]});return db[_0xffae('0x77')][_0xffae('0x4d')]({'where':{'name':_0xffae('0x2b'),'userProfileId':_0x4565a0[_0xffae('0x75')]},'raw':!![]})[_0xffae('0x29')](function(_0x46b170){if(_0x46b170&&_0x46b170[_0xffae('0x78')]===0x0){return db[_0xffae('0x2c')][_0xffae('0x57')]({'name':_0x45266d[_0xffae('0x2f')],'resourceId':_0x45266d['id'],'type':_0x46b170[_0xffae('0x2f')],'sectionId':_0x46b170['id']},{})['then'](function(){return _0x52c51e;});}else{return _0x52c51e;}})['catch'](function(_0x367cc8){logger[_0xffae('0x79')](_0xffae('0x7a'),_0x367cc8);throw _0x367cc8;});}return _0x52c51e;})[_0xffae('0x29')](respondWithResult(_0x2b60f2,null))[_0xffae('0x4b')](handleError(_0x2b60f2,null));});_0xb03ccc['start']();}catch(_0x192199){_0x2b60f2[_0xffae('0x1d')](0x1f4)[_0xffae('0x30')](_0x192199);}};exports[_0xffae('0x28')]=function(_0x5d7760,_0x16df68,_0x5af6c3){return db['Sound'][_0xffae('0x4d')]({'where':{'id':_0x5d7760['params']['id']}})['then'](handleEntityNotFound(_0x16df68,null))[_0xffae('0x29')](saveUpdates(_[_0xffae('0x40')](_0x5d7760[_0xffae('0x73')],['name',_0xffae('0x7b')]),null))[_0xffae('0x29')](respondWithResult(_0x16df68,null))[_0xffae('0x4b')](handleError(_0x16df68,null));};exports[_0xffae('0x7c')]=function(_0xb5059a,_0x1920fd,_0x3d7d8f){return db['Sound']['find']({'where':{'id':_0xb5059a[_0xffae('0x7d')]['id']}})[_0xffae('0x29')](function(_0x5d0279){if(_0x5d0279){return _0x5d0279[_0xffae('0x2d')]();}})[_0xffae('0x29')](function(_0x50809c){var _0xd2b6cc=path['join'](config[_0xffae('0x54')],'server/files/sounds/original',util[_0xffae('0x5e')](_0xffae('0x56'),_0x50809c[_0xffae('0x7e')],_0x50809c[_0xffae('0x7f')]));var _0x5b0427=path['join'](config[_0xffae('0x54')],_0xffae('0x55'),util[_0xffae('0x5e')](_0xffae('0x56'),_0x50809c[_0xffae('0x7e')],_0x50809c['converted_format']));fs[_0xffae('0x65')](_0xd2b6cc);fs['unlinkSync'](_0x5b0427);return _0x50809c;})['then'](function(_0x1fba0){if(_0x1fba0){return _0x1920fd[_0xffae('0x1d')](0xcc)[_0xffae('0x1e')]();}})[_0xffae('0x29')](handleEntityNotFound(_0x1920fd,null))['catch'](handleError(_0x1920fd,null));}; \ No newline at end of file diff --git a/server/api/sound/sound.model.js b/server/api/sound/sound.model.js new file mode 100644 index 0000000..8c01b43 --- /dev/null +++ b/server/api/sound/sound.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xad7c=['path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xc368f5,_0x5ef6a3){var _0x5855ef=function(_0x791ae1){while(--_0x791ae1){_0xc368f5['push'](_0xc368f5['shift']());}};_0x5855ef(++_0x5ef6a3);}(_0xad7c,0x1d6));var _0xcad7=function(_0x59c718,_0x5e3a4d){_0x59c718=_0x59c718-0x0;var _0x5edd9b=_0xad7c[_0x59c718];return _0x5edd9b;};'use strict';var _=require(_0xcad7('0x0'));var util=require(_0xcad7('0x1'));var logger=require(_0xcad7('0x2'))(_0xcad7('0x3'));var moment=require(_0xcad7('0x4'));var BPromise=require(_0xcad7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcad7('0x6'));var rimraf=require(_0xcad7('0x7'));var config=require(_0xcad7('0x8'));var attributes=require(_0xcad7('0x9'));module[_0xcad7('0xa')]=function(_0x2f73d9,_0x522a64){return _0x2f73d9[_0xcad7('0xb')](_0xcad7('0xc'),attributes,{'tableName':_0xcad7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/sound/sound.rpc.js b/server/api/sound/sound.rpc.js new file mode 100644 index 0000000..f84dd98 --- /dev/null +++ b/server/api/sound/sound.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb957=['message','request\x20sent','result','ShowSound','find','options','where','attributes','include','model','map','then','debug','catch','lodash','util','bluebird','../../config/logger','rpc','../../config/environment','client','http','request','info','Sound,\x20%s,\x20%s','Sound,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4bec27,_0x529585){var _0x5ab08f=function(_0x45e6d5){while(--_0x45e6d5){_0x4bec27['push'](_0x4bec27['shift']());}};_0x5ab08f(++_0x529585);}(_0xb957,0x126));var _0x7b95=function(_0x4402f3,_0xd95eca){_0x4402f3=_0x4402f3-0x0;var _0x3b4f40=_0xb957[_0x4402f3];return _0x3b4f40;};'use strict';var _=require(_0x7b95('0x0'));var util=require(_0x7b95('0x1'));var moment=require('moment');var BPromise=require(_0x7b95('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(_0x7b95('0x3'))(_0x7b95('0x4'));var config=require(_0x7b95('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x7b95('0x6')][_0x7b95('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x164ca2,_0xa823b5,_0x591267){return new BPromise(function(_0x4b02a5,_0x1616f8){return client[_0x7b95('0x8')](_0x164ca2,_0x591267)['then'](function(_0x4e8633){logger[_0x7b95('0x9')](_0x7b95('0xa'),_0xa823b5,'request\x20sent');logger['debug'](_0x7b95('0xb'),_0xa823b5,'request\x20sent',JSON[_0x7b95('0xc')](_0x4e8633));if(_0x4e8633[_0x7b95('0xd')]){if(_0x4e8633[_0x7b95('0xd')]['code']===0x1f4){logger[_0x7b95('0xd')](_0x7b95('0xa'),_0xa823b5,_0x4e8633[_0x7b95('0xd')][_0x7b95('0xe')]);return _0x1616f8(_0x4e8633[_0x7b95('0xd')][_0x7b95('0xe')]);}logger[_0x7b95('0xd')](_0x7b95('0xa'),_0xa823b5,_0x4e8633['error'][_0x7b95('0xe')]);return _0x4b02a5(_0x4e8633[_0x7b95('0xd')][_0x7b95('0xe')]);}else{logger[_0x7b95('0x9')](_0x7b95('0xa'),_0xa823b5,_0x7b95('0xf'));_0x4b02a5(_0x4e8633[_0x7b95('0x10')]['message']);}})['catch'](function(_0x16b3ae){logger[_0x7b95('0xd')]('Sound,\x20%s,\x20%s',_0xa823b5,_0x16b3ae);_0x1616f8(_0x16b3ae);});});}exports[_0x7b95('0x11')]=function(_0x48c5dc){var _0x59d66a=this;return new Promise(function(_0x543ff0,_0x1b04f3){return db['Sound'][_0x7b95('0x12')]({'raw':_0x48c5dc[_0x7b95('0x13')]?_0x48c5dc[_0x7b95('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x48c5dc[_0x7b95('0x13')]?_0x48c5dc[_0x7b95('0x13')][_0x7b95('0x14')]||null:null,'attributes':_0x48c5dc[_0x7b95('0x13')]?_0x48c5dc['options'][_0x7b95('0x15')]||null:null,'include':_0x48c5dc[_0x7b95('0x13')]?_0x48c5dc[_0x7b95('0x13')][_0x7b95('0x16')]?_['map'](_0x48c5dc[_0x7b95('0x13')][_0x7b95('0x16')],function(_0x5cea27){return{'model':db[_0x5cea27[_0x7b95('0x17')]],'as':_0x5cea27['as'],'attributes':_0x5cea27[_0x7b95('0x15')],'include':_0x5cea27[_0x7b95('0x16')]?_['map'](_0x5cea27[_0x7b95('0x16')],function(_0x23bdd3){return{'model':db[_0x23bdd3['model']],'as':_0x23bdd3['as'],'attributes':_0x23bdd3[_0x7b95('0x15')],'include':_0x23bdd3[_0x7b95('0x16')]?_[_0x7b95('0x18')](_0x23bdd3['include'],function(_0x1296ea){return{'model':db[_0x1296ea['model']],'as':_0x1296ea['as'],'attributes':_0x1296ea['attributes']};}):[]};}):[]};}):[]:[]})[_0x7b95('0x19')](function(_0x5770fb){logger[_0x7b95('0x9')]('ShowSound',_0x48c5dc);logger[_0x7b95('0x1a')](_0x7b95('0x11'),_0x48c5dc,JSON[_0x7b95('0xc')](_0x5770fb));_0x543ff0(_0x5770fb);})[_0x7b95('0x1b')](function(_0x6b25fa){logger[_0x7b95('0xd')]('ShowSound',_0x6b25fa[_0x7b95('0xe')],_0x48c5dc);_0x1b04f3(_0x59d66a[_0x7b95('0xd')](0x1f4,_0x6b25fa['message']));});});}; \ No newline at end of file diff --git a/server/api/squareMessage/index.js b/server/api/squareMessage/index.js new file mode 100644 index 0000000..b9ce4f9 --- /dev/null +++ b/server/api/squareMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5eb8=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports','path','connect-timeout','express','Router'];(function(_0x53dacc,_0x1ab9b6){var _0x38eff2=function(_0x5b3814){while(--_0x5b3814){_0x53dacc['push'](_0x53dacc['shift']());}};_0x38eff2(++_0x1ab9b6);}(_0x5eb8,0xb0));var _0x85eb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5eb8[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['post']('/',auth[_0x85eb('0xa')](),controller['create']);router[_0x85eb('0xe')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xf')]);router[_0x85eb('0x10')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller['destroy']);module[_0x85eb('0x11')]=router; \ No newline at end of file diff --git a/server/api/squareMessage/squareMessage.attributes.js b/server/api/squareMessage/squareMessage.attributes.js new file mode 100644 index 0000000..dfdae37 --- /dev/null +++ b/server/api/squareMessage/squareMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x83cf=['sequelize','exports','STRING','TEXT','ENUM','out'];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0x83cf,0x180));var _0xf83c=function(_0xd384ec,_0x4f1c7c){_0xd384ec=_0xd384ec-0x0;var _0x4f0f80=_0x83cf[_0xd384ec];return _0x4f0f80;};'use strict';var Sequelize=require(_0xf83c('0x0'));module[_0xf83c('0x1')]={'uniqueid':{'type':Sequelize[_0xf83c('0x2')]},'body':{'type':Sequelize[_0xf83c('0x3')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xf83c('0x4')]('in',_0xf83c('0x5')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0xf83c('0x2')]},'providerResponse':{'type':Sequelize['TEXT']}}; \ No newline at end of file diff --git a/server/api/squareMessage/squareMessage.controller.js b/server/api/squareMessage/squareMessage.controller.js new file mode 100644 index 0000000..31f2a2d --- /dev/null +++ b/server/api/squareMessage/squareMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc4d8=['nolimit','limit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','eml-format','zip-dir','fast-json-patch','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','name','index','map','SquareMessage','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','model','length','hasOwnProperty'];(function(_0x506a60,_0x46793f){var _0x4d12df=function(_0x27b10b){while(--_0x27b10b){_0x506a60['push'](_0x506a60['shift']());}};_0x4d12df(++_0x46793f);}(_0xc4d8,0xa6));var _0x8c4d=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xc4d8[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require(_0x8c4d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8c4d('0x1'));var jsonpatch=require(_0x8c4d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8c4d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8c4d('0x4'));var sox=require(_0x8c4d('0x5'));var csv=require(_0x8c4d('0x6'));var ejs=require(_0x8c4d('0x7'));var fs=require('fs');var fs_extra=require(_0x8c4d('0x8'));var _=require(_0x8c4d('0x9'));var squel=require(_0x8c4d('0xa'));var crypto=require(_0x8c4d('0xb'));var jsforce=require(_0x8c4d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8c4d('0x6'));var querystring=require(_0x8c4d('0xd'));var Papa=require(_0x8c4d('0xe'));var Redis=require(_0x8c4d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8c4d('0x10'));var hardwareService=require(_0x8c4d('0x11'));var logger=require(_0x8c4d('0x12'))(_0x8c4d('0x13'));var utils=require(_0x8c4d('0x14'));var config=require(_0x8c4d('0x15'));var licenseUtil=require(_0x8c4d('0x16'));var db=require(_0x8c4d('0x17'))['db'];function respondWithStatusCode(_0x50de53,_0x21768d){_0x21768d=_0x21768d||0xcc;return function(_0x303bbc){if(_0x303bbc){return _0x50de53[_0x8c4d('0x18')](_0x21768d);}return _0x50de53[_0x8c4d('0x19')](_0x21768d)[_0x8c4d('0x1a')]();};}function respondWithResult(_0x207f67,_0x3d42f1){_0x3d42f1=_0x3d42f1||0xc8;return function(_0x220cfa){if(_0x220cfa){return _0x207f67['status'](_0x3d42f1)['json'](_0x220cfa);}};}function respondWithFilteredResult(_0x20ab4f,_0x1d410e){return function(_0x498e5d){if(_0x498e5d){var _0x355345=typeof _0x1d410e[_0x8c4d('0x1b')]===_0x8c4d('0x1c')&&typeof _0x1d410e['limit']===_0x8c4d('0x1c');var _0x3d082f=_0x498e5d[_0x8c4d('0x1d')];var _0x3a9321=_0x355345?0x0:_0x1d410e[_0x8c4d('0x1b')];var _0x59cc48=_0x355345?_0x498e5d[_0x8c4d('0x1d')]:_0x1d410e[_0x8c4d('0x1b')]+_0x1d410e['limit'];var _0x409568;if(_0x59cc48>=_0x3d082f){_0x59cc48=_0x3d082f;_0x409568=0xc8;}else{_0x409568=0xce;}_0x20ab4f[_0x8c4d('0x19')](_0x409568);return _0x20ab4f[_0x8c4d('0x1e')](_0x8c4d('0x1f'),_0x3a9321+'-'+_0x59cc48+'/'+_0x3d082f)[_0x8c4d('0x20')](_0x498e5d);}return null;};}function patchUpdates(_0x10ef16){return function(_0x17c206){try{jsonpatch[_0x8c4d('0x21')](_0x17c206,_0x10ef16,!![]);}catch(_0x17708c){return BPromise['reject'](_0x17708c);}return _0x17c206[_0x8c4d('0x22')]();};}function saveUpdates(_0x16ddc9,_0x33f0a2){return function(_0x663624){if(_0x663624){return _0x663624[_0x8c4d('0x23')](_0x16ddc9)[_0x8c4d('0x24')](function(_0x54d835){return _0x54d835;});}return null;};}function removeEntity(_0x3fd1e1,_0x10ea9b){return function(_0x52114f){if(_0x52114f){return _0x52114f[_0x8c4d('0x25')]()['then'](function(){_0x3fd1e1[_0x8c4d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a0d83,_0x292602){return function(_0x3f428b){if(!_0x3f428b){_0x2a0d83[_0x8c4d('0x18')](0x194);}return _0x3f428b;};}function handleError(_0x3dec4b,_0x10ed15){_0x10ed15=_0x10ed15||0x1f4;return function(_0x33d5f1){logger['error'](_0x33d5f1['stack']);if(_0x33d5f1[_0x8c4d('0x26')]){delete _0x33d5f1[_0x8c4d('0x26')];}_0x3dec4b[_0x8c4d('0x19')](_0x10ed15)['send'](_0x33d5f1);};}exports[_0x8c4d('0x27')]=function(_0x2c829b,_0x10ef81){var _0x5dfb6f={},_0x22f944={},_0x476266={'count':0x0,'rows':[]};var _0x2e4076=_[_0x8c4d('0x28')](db[_0x8c4d('0x29')][_0x8c4d('0x2a')],function(_0x5b35b6){return{'name':_0x5b35b6[_0x8c4d('0x2b')],'type':_0x5b35b6[_0x8c4d('0x2c')]['key']};});_0x22f944['model']=_['map'](_0x2e4076,_0x8c4d('0x26'));_0x22f944[_0x8c4d('0x2d')]=_[_0x8c4d('0x2e')](_0x2c829b[_0x8c4d('0x2d')]);_0x22f944[_0x8c4d('0x2f')]=_['intersection'](_0x22f944['model'],_0x22f944['query']);_0x5dfb6f[_0x8c4d('0x30')]=_[_0x8c4d('0x31')](_0x22f944[_0x8c4d('0x32')],qs['fields'](_0x2c829b[_0x8c4d('0x2d')]['fields']));_0x5dfb6f[_0x8c4d('0x30')]=_0x5dfb6f[_0x8c4d('0x30')][_0x8c4d('0x33')]?_0x5dfb6f[_0x8c4d('0x30')]:_0x22f944['model'];if(!_0x2c829b[_0x8c4d('0x2d')][_0x8c4d('0x34')](_0x8c4d('0x35'))){_0x5dfb6f[_0x8c4d('0x36')]=qs[_0x8c4d('0x36')](_0x2c829b[_0x8c4d('0x2d')][_0x8c4d('0x36')]);_0x5dfb6f[_0x8c4d('0x1b')]=qs['offset'](_0x2c829b[_0x8c4d('0x2d')]['offset']);}_0x5dfb6f[_0x8c4d('0x37')]=qs[_0x8c4d('0x38')](_0x2c829b[_0x8c4d('0x2d')][_0x8c4d('0x38')]);_0x5dfb6f[_0x8c4d('0x39')]=qs['filters'](_[_0x8c4d('0x3a')](_0x2c829b[_0x8c4d('0x2d')],_0x22f944[_0x8c4d('0x2f')]),_0x2e4076);if(_0x2c829b[_0x8c4d('0x2d')][_0x8c4d('0x3b')]){_0x5dfb6f[_0x8c4d('0x39')]=_[_0x8c4d('0x3c')](_0x5dfb6f[_0x8c4d('0x39')],{'$or':_[_0x8c4d('0x28')](_0x2e4076,function(_0x1b67b5){if(_0x1b67b5[_0x8c4d('0x2c')]!=='VIRTUAL'){var _0x3391d6={};_0x3391d6[_0x1b67b5[_0x8c4d('0x26')]]={'$like':'%'+_0x2c829b['query']['filter']+'%'};return _0x3391d6;}})});}_0x5dfb6f=_[_0x8c4d('0x3c')]({},_0x5dfb6f,_0x2c829b[_0x8c4d('0x3d')]);var _0x40d23c={'where':_0x5dfb6f[_0x8c4d('0x39')]};return db[_0x8c4d('0x29')][_0x8c4d('0x1d')](_0x40d23c)[_0x8c4d('0x24')](function(_0x1fa027){_0x476266['count']=_0x1fa027;if(_0x2c829b[_0x8c4d('0x2d')][_0x8c4d('0x3e')]){_0x5dfb6f[_0x8c4d('0x3f')]=[{'all':!![]}];}return db['SquareMessage'][_0x8c4d('0x40')](_0x5dfb6f);})[_0x8c4d('0x24')](function(_0x5d930c){_0x476266[_0x8c4d('0x41')]=_0x5d930c;return _0x476266;})['then'](respondWithFilteredResult(_0x10ef81,_0x5dfb6f))[_0x8c4d('0x42')](handleError(_0x10ef81,null));};exports[_0x8c4d('0x43')]=function(_0xf30b0d,_0x22487e){var _0x5ed269={'raw':!![],'where':{'id':_0xf30b0d[_0x8c4d('0x44')]['id']}},_0x3d95fd={};_0x3d95fd[_0x8c4d('0x32')]=_[_0x8c4d('0x2e')](db['SquareMessage']['rawAttributes']);_0x3d95fd['query']=_[_0x8c4d('0x2e')](_0xf30b0d[_0x8c4d('0x2d')]);_0x3d95fd[_0x8c4d('0x2f')]=_['intersection'](_0x3d95fd['model'],_0x3d95fd[_0x8c4d('0x2d')]);_0x5ed269[_0x8c4d('0x30')]=_[_0x8c4d('0x31')](_0x3d95fd['model'],qs[_0x8c4d('0x45')](_0xf30b0d[_0x8c4d('0x2d')][_0x8c4d('0x45')]));_0x5ed269[_0x8c4d('0x30')]=_0x5ed269[_0x8c4d('0x30')]['length']?_0x5ed269[_0x8c4d('0x30')]:_0x3d95fd['model'];if(_0xf30b0d['query'][_0x8c4d('0x3e')]){_0x5ed269['include']=[{'all':!![]}];}_0x5ed269=_['merge']({},_0x5ed269,_0xf30b0d[_0x8c4d('0x3d')]);return db[_0x8c4d('0x29')][_0x8c4d('0x46')](_0x5ed269)[_0x8c4d('0x24')](handleEntityNotFound(_0x22487e,null))['then'](respondWithResult(_0x22487e,null))[_0x8c4d('0x42')](handleError(_0x22487e,null));};exports[_0x8c4d('0x47')]=function(_0x590c79,_0x44c0d8){return db[_0x8c4d('0x29')][_0x8c4d('0x47')](_0x590c79[_0x8c4d('0x48')],{})[_0x8c4d('0x24')](respondWithResult(_0x44c0d8,0xc9))['catch'](handleError(_0x44c0d8,null));};exports[_0x8c4d('0x23')]=function(_0x1b7801,_0x3018e2){if(_0x1b7801[_0x8c4d('0x48')]['id']){delete _0x1b7801['body']['id'];}return db[_0x8c4d('0x29')][_0x8c4d('0x46')]({'where':{'id':_0x1b7801[_0x8c4d('0x44')]['id']}})[_0x8c4d('0x24')](handleEntityNotFound(_0x3018e2,null))[_0x8c4d('0x24')](saveUpdates(_0x1b7801[_0x8c4d('0x48')],null))[_0x8c4d('0x24')](respondWithResult(_0x3018e2,null))[_0x8c4d('0x42')](handleError(_0x3018e2,null));};exports[_0x8c4d('0x25')]=function(_0xa4ec88,_0x396e8c){return db[_0x8c4d('0x29')][_0x8c4d('0x46')]({'where':{'id':_0xa4ec88[_0x8c4d('0x44')]['id']}})[_0x8c4d('0x24')](handleEntityNotFound(_0x396e8c,null))[_0x8c4d('0x24')](removeEntity(_0x396e8c,null))[_0x8c4d('0x42')](handleError(_0x396e8c,null));}; \ No newline at end of file diff --git a/server/api/squareMessage/squareMessage.model.js b/server/api/squareMessage/squareMessage.model.js new file mode 100644 index 0000000..b4ae52b --- /dev/null +++ b/server/api/squareMessage/squareMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x85f3=['path','rimraf','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2ba24f,_0x1e67d4){var _0x564da4=function(_0x3f3c06){while(--_0x3f3c06){_0x2ba24f['push'](_0x2ba24f['shift']());}};_0x564da4(++_0x1e67d4);}(_0x85f3,0x132));var _0x385f=function(_0xd73d53,_0x598443){_0xd73d53=_0xd73d53-0x0;var _0x560148=_0x85f3[_0xd73d53];return _0x560148;};'use strict';var _=require(_0x385f('0x0'));var util=require('util');var logger=require(_0x385f('0x1'))(_0x385f('0x2'));var moment=require(_0x385f('0x3'));var BPromise=require(_0x385f('0x4'));var rp=require(_0x385f('0x5'));var fs=require('fs');var path=require(_0x385f('0x6'));var rimraf=require(_0x385f('0x7'));var config=require('../../config/environment');var attributes=require(_0x385f('0x8'));module[_0x385f('0x9')]=function(_0x18ae19,_0x5c8a1e){return _0x18ae19[_0x385f('0xa')](_0x385f('0xb'),attributes,{'tableName':_0x385f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/squareMessage/squareMessage.rpc.js b/server/api/squareMessage/squareMessage.rpc.js new file mode 100644 index 0000000..d979fc0 --- /dev/null +++ b/server/api/squareMessage/squareMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8e27=['lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareMessage','body','options','raw','debug'];(function(_0x2a2840,_0x19c9a2){var _0xecebc9=function(_0x1777af){while(--_0x1777af){_0x2a2840['push'](_0x2a2840['shift']());}};_0xecebc9(++_0x19c9a2);}(_0x8e27,0xa2));var _0x78e2=function(_0x291e0e,_0x792683){_0x291e0e=_0x291e0e-0x0;var _0x3f85f3=_0x8e27[_0x291e0e];return _0x3f85f3;};'use strict';var _=require(_0x78e2('0x0'));var util=require(_0x78e2('0x1'));var moment=require(_0x78e2('0x2'));var BPromise=require(_0x78e2('0x3'));var rs=require(_0x78e2('0x4'));var fs=require('fs');var Redis=require(_0x78e2('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x78e2('0x6'));var config=require(_0x78e2('0x7'));var jayson=require(_0x78e2('0x8'));var client=jayson[_0x78e2('0x9')][_0x78e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e71ce,_0x356ea9,_0x17a522){return new BPromise(function(_0x1a5fc9,_0x286a10){return client['request'](_0x2e71ce,_0x17a522)[_0x78e2('0xb')](function(_0xbf81c2){logger[_0x78e2('0xc')](_0x78e2('0xd'),_0x356ea9,_0x78e2('0xe'));logger['debug'](_0x78e2('0xf'),_0x356ea9,_0x78e2('0xe'),JSON[_0x78e2('0x10')](_0xbf81c2));if(_0xbf81c2[_0x78e2('0x11')]){if(_0xbf81c2[_0x78e2('0x11')][_0x78e2('0x12')]===0x1f4){logger[_0x78e2('0x11')]('SquareMessage,\x20%s,\x20%s',_0x356ea9,_0xbf81c2[_0x78e2('0x11')]['message']);return _0x286a10(_0xbf81c2[_0x78e2('0x11')][_0x78e2('0x13')]);}logger[_0x78e2('0x11')]('SquareMessage,\x20%s,\x20%s',_0x356ea9,_0xbf81c2[_0x78e2('0x11')][_0x78e2('0x13')]);return _0x1a5fc9(_0xbf81c2[_0x78e2('0x11')][_0x78e2('0x13')]);}else{logger['info'](_0x78e2('0xd'),_0x356ea9,_0x78e2('0xe'));_0x1a5fc9(_0xbf81c2[_0x78e2('0x14')][_0x78e2('0x13')]);}})[_0x78e2('0x15')](function(_0x2d8a9f){logger['error'](_0x78e2('0xd'),_0x356ea9,_0x2d8a9f);_0x286a10(_0x2d8a9f);});});}exports[_0x78e2('0x16')]=function(_0x3f8b4b){var _0x5509a0=this;return new Promise(function(_0x516a2a,_0x2e958e){return db['SquareMessage']['create'](_0x3f8b4b[_0x78e2('0x17')],{'raw':_0x3f8b4b[_0x78e2('0x18')]?_0x3f8b4b[_0x78e2('0x18')][_0x78e2('0x19')]===undefined?!![]:![]:!![]})[_0x78e2('0xb')](function(_0x343257){logger[_0x78e2('0xc')](_0x78e2('0x16'),_0x3f8b4b);logger[_0x78e2('0x1a')](_0x78e2('0x16'),_0x3f8b4b,JSON[_0x78e2('0x10')](_0x343257));_0x516a2a(_0x343257);})[_0x78e2('0x15')](function(_0x359a08){logger[_0x78e2('0x11')](_0x78e2('0x16'),_0x359a08[_0x78e2('0x13')],_0x3f8b4b);_0x2e958e(_0x5509a0[_0x78e2('0x11')](0x1f4,_0x359a08[_0x78e2('0x13')]));});});}; \ No newline at end of file diff --git a/server/api/squareOdbc/index.js b/server/api/squareOdbc/index.js new file mode 100644 index 0000000..f64c703 --- /dev/null +++ b/server/api/squareOdbc/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc609=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','/:id/test','15s','post','create','put'];(function(_0x1e451e,_0x5c27d1){var _0x324014=function(_0x1a2b32){while(--_0x1a2b32){_0x1e451e['push'](_0x1e451e['shift']());}};_0x324014(++_0x5c27d1);}(_0xc609,0x1d1));var _0x9c60=function(_0x316ff9,_0x2ed79f){_0x316ff9=_0x316ff9-0x0;var _0x3a1328=_0xc609[_0x316ff9];return _0x3a1328;};'use strict';var multer=require(_0x9c60('0x0'));var util=require(_0x9c60('0x1'));var path=require(_0x9c60('0x2'));var timeout=require(_0x9c60('0x3'));var express=require(_0x9c60('0x4'));var router=express[_0x9c60('0x5')]();var fs_extra=require(_0x9c60('0x6'));var auth=require(_0x9c60('0x7'));var interaction=require(_0x9c60('0x8'));var config=require(_0x9c60('0x9'));var controller=require('./squareOdbc.controller');router[_0x9c60('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9c60('0xa')](_0x9c60('0xb'),auth[_0x9c60('0xc')](),controller['show']);router[_0x9c60('0xa')](_0x9c60('0xd'),auth[_0x9c60('0xc')](),timeout(_0x9c60('0xe')),controller['test']);router[_0x9c60('0xf')]('/',auth[_0x9c60('0xc')](),controller[_0x9c60('0x10')]);router[_0x9c60('0x11')](_0x9c60('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x9c60('0x12')](_0x9c60('0xb'),auth['isAuthenticated'](),controller[_0x9c60('0x13')]);module[_0x9c60('0x14')]=router; \ No newline at end of file diff --git a/server/api/squareOdbc/squareOdbc.attributes.js b/server/api/squareOdbc/squareOdbc.attributes.js new file mode 100644 index 0000000..e875c90 --- /dev/null +++ b/server/api/squareOdbc/squareOdbc.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5c5f=['STRING','sequelize','exports'];(function(_0x5e7de0,_0x3d6b19){var _0x3a627d=function(_0x1ffee2){while(--_0x1ffee2){_0x5e7de0['push'](_0x5e7de0['shift']());}};_0x3a627d(++_0x3d6b19);}(_0x5c5f,0x1d8));var _0xf5c5=function(_0x456a49,_0x80653c){_0x456a49=_0x456a49-0x0;var _0x4dc2ba=_0x5c5f[_0x456a49];return _0x4dc2ba;};'use strict';var Sequelize=require(_0xf5c5('0x0'));module[_0xf5c5('0x1')]={'name':{'type':Sequelize[_0xf5c5('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xf5c5('0x2')]},'description':{'type':Sequelize[_0xf5c5('0x2')]}}; \ No newline at end of file diff --git a/server/api/squareOdbc/squareOdbc.controller.js b/server/api/squareOdbc/squareOdbc.controller.js new file mode 100644 index 0000000..f5a436a --- /dev/null +++ b/server/api/squareOdbc/squareOdbc.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7f97=['offset','set','Content-Range','reject','save','destroy','then','get','ODBC','end','name','send','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','include','SquareOdbc','findAll','rows','catch','show','params','keys','includeAll','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','dsn','odbc','openSync','closeSync','rimraf','zip-dir','request-promise','bluebird','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/utils','../../config/environment','sendStatus','status','json','undefined','count'];(function(_0x542da8,_0x509c26){var _0x533d7e=function(_0x2a3d04){while(--_0x2a3d04){_0x542da8['push'](_0x542da8['shift']());}};_0x533d7e(++_0x509c26);}(_0x7f97,0x196));var _0x77f9=function(_0x382384,_0x446aba){_0x382384=_0x382384-0x0;var _0x6d92b5=_0x7f97[_0x382384];return _0x6d92b5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x77f9('0x0'));var zipdir=require(_0x77f9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x77f9('0x2'));var moment=require('moment');var BPromise=require(_0x77f9('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x77f9('0x4'));var sox=require(_0x77f9('0x5'));var csv=require(_0x77f9('0x6'));var ejs=require(_0x77f9('0x7'));var fs=require('fs');var fs_extra=require(_0x77f9('0x8'));var _=require('lodash');var squel=require(_0x77f9('0x9'));var crypto=require(_0x77f9('0xa'));var jsforce=require(_0x77f9('0xb'));var deskjs=require(_0x77f9('0xc'));var toCsv=require(_0x77f9('0x6'));var querystring=require(_0x77f9('0xd'));var Papa=require(_0x77f9('0xe'));var Redis=require(_0x77f9('0xf'));var authService=require(_0x77f9('0x10'));var qs=require(_0x77f9('0x11'));var as=require(_0x77f9('0x12'));var hardwareService=require(_0x77f9('0x13'));var logger=require(_0x77f9('0x14'))(_0x77f9('0x15'));var utils=require(_0x77f9('0x16'));var config=require(_0x77f9('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4aac03,_0x1ae84b){_0x1ae84b=_0x1ae84b||0xcc;return function(_0x2edd21){if(_0x2edd21){return _0x4aac03[_0x77f9('0x18')](_0x1ae84b);}return _0x4aac03[_0x77f9('0x19')](_0x1ae84b)['end']();};}function respondWithResult(_0x335fe5,_0x6415b1){_0x6415b1=_0x6415b1||0xc8;return function(_0x3dc699){if(_0x3dc699){return _0x335fe5[_0x77f9('0x19')](_0x6415b1)[_0x77f9('0x1a')](_0x3dc699);}};}function respondWithFilteredResult(_0x561417,_0x340431){return function(_0x21a619){if(_0x21a619){var _0x3e515d=typeof _0x340431['offset']==='undefined'&&typeof _0x340431['limit']===_0x77f9('0x1b');var _0x2813fa=_0x21a619[_0x77f9('0x1c')];var _0x38ceea=_0x3e515d?0x0:_0x340431[_0x77f9('0x1d')];var _0x162b4a=_0x3e515d?_0x21a619[_0x77f9('0x1c')]:_0x340431[_0x77f9('0x1d')]+_0x340431['limit'];var _0x123171;if(_0x162b4a>=_0x2813fa){_0x162b4a=_0x2813fa;_0x123171=0xc8;}else{_0x123171=0xce;}_0x561417[_0x77f9('0x19')](_0x123171);return _0x561417[_0x77f9('0x1e')](_0x77f9('0x1f'),_0x38ceea+'-'+_0x162b4a+'/'+_0x2813fa)['json'](_0x21a619);}return null;};}function patchUpdates(_0x2ba8d6){return function(_0x56ed54){try{jsonpatch['apply'](_0x56ed54,_0x2ba8d6,!![]);}catch(_0x4f525a){return BPromise[_0x77f9('0x20')](_0x4f525a);}return _0x56ed54[_0x77f9('0x21')]();};}function saveUpdates(_0x15c8f6,_0x4b3181){return function(_0x13135f){if(_0x13135f){return _0x13135f['update'](_0x15c8f6)['then'](function(_0x5d3951){return _0x5d3951;});}return null;};}function removeEntity(_0x270243,_0x34ce34){return function(_0x581c40){if(_0x581c40){return _0x581c40[_0x77f9('0x22')]()[_0x77f9('0x23')](function(){var _0x399bef=_0x581c40[_0x77f9('0x24')]({'plain':!![]});var _0xf9636d=_0x77f9('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0xf9636d,'resourceId':_0x399bef['id']}})[_0x77f9('0x23')](function(){return _0x581c40;});})[_0x77f9('0x23')](function(){_0x270243[_0x77f9('0x19')](0xcc)[_0x77f9('0x26')]();});}};}function handleEntityNotFound(_0x143048,_0x2414d9){return function(_0x2c5027){if(!_0x2c5027){_0x143048[_0x77f9('0x18')](0x194);}return _0x2c5027;};}function handleError(_0x52d7b6,_0x3b525b){_0x3b525b=_0x3b525b||0x1f4;return function(_0x4c9483){logger['error'](_0x4c9483['stack']);if(_0x4c9483[_0x77f9('0x27')]){delete _0x4c9483[_0x77f9('0x27')];}_0x52d7b6[_0x77f9('0x19')](_0x3b525b)[_0x77f9('0x28')](_0x4c9483);};}exports['index']=function(_0x31a80e,_0xae58e2){var _0x386077={},_0x355d65={},_0x4fc7fb={'count':0x0,'rows':[]};var _0x346a58=_[_0x77f9('0x29')](db['SquareOdbc'][_0x77f9('0x2a')],function(_0x26a621){return{'name':_0x26a621[_0x77f9('0x2b')],'type':_0x26a621[_0x77f9('0x2c')][_0x77f9('0x2d')]};});_0x355d65[_0x77f9('0x2e')]=_[_0x77f9('0x29')](_0x346a58,_0x77f9('0x27'));_0x355d65[_0x77f9('0x2f')]=_['keys'](_0x31a80e[_0x77f9('0x2f')]);_0x355d65['filters']=_[_0x77f9('0x30')](_0x355d65[_0x77f9('0x2e')],_0x355d65[_0x77f9('0x2f')]);_0x386077[_0x77f9('0x31')]=_[_0x77f9('0x30')](_0x355d65[_0x77f9('0x2e')],qs['fields'](_0x31a80e[_0x77f9('0x2f')][_0x77f9('0x32')]));_0x386077[_0x77f9('0x31')]=_0x386077[_0x77f9('0x31')][_0x77f9('0x33')]?_0x386077[_0x77f9('0x31')]:_0x355d65[_0x77f9('0x2e')];if(!_0x31a80e[_0x77f9('0x2f')]['hasOwnProperty']('nolimit')){_0x386077[_0x77f9('0x34')]=qs[_0x77f9('0x34')](_0x31a80e['query'][_0x77f9('0x34')]);_0x386077[_0x77f9('0x1d')]=qs[_0x77f9('0x1d')](_0x31a80e['query']['offset']);}_0x386077[_0x77f9('0x35')]=qs['sort'](_0x31a80e['query'][_0x77f9('0x36')]);_0x386077[_0x77f9('0x37')]=qs[_0x77f9('0x38')](_[_0x77f9('0x39')](_0x31a80e['query'],_0x355d65[_0x77f9('0x38')]),_0x346a58);if(_0x31a80e[_0x77f9('0x2f')][_0x77f9('0x3a')]){_0x386077[_0x77f9('0x37')]=_[_0x77f9('0x3b')](_0x386077['where'],{'$or':_[_0x77f9('0x29')](_0x346a58,function(_0x1aa776){if(_0x1aa776[_0x77f9('0x2c')]!==_0x77f9('0x3c')){var _0x1df8ad={};_0x1df8ad[_0x1aa776[_0x77f9('0x27')]]={'$like':'%'+_0x31a80e[_0x77f9('0x2f')][_0x77f9('0x3a')]+'%'};return _0x1df8ad;}})});}_0x386077=_['merge']({},_0x386077,_0x31a80e['options']);var _0x284602={'where':_0x386077[_0x77f9('0x37')]};return db['SquareOdbc'][_0x77f9('0x1c')](_0x284602)[_0x77f9('0x23')](function(_0x42bd69){_0x4fc7fb[_0x77f9('0x1c')]=_0x42bd69;if(_0x31a80e[_0x77f9('0x2f')]['includeAll']){_0x386077[_0x77f9('0x3d')]=[{'all':!![]}];}return db[_0x77f9('0x3e')][_0x77f9('0x3f')](_0x386077);})[_0x77f9('0x23')](function(_0x32e2d0){_0x4fc7fb[_0x77f9('0x40')]=_0x32e2d0;return _0x4fc7fb;})['then'](respondWithFilteredResult(_0xae58e2,_0x386077))[_0x77f9('0x41')](handleError(_0xae58e2,null));};exports[_0x77f9('0x42')]=function(_0x1d7597,_0x1e3d6b){var _0x4d794c={'raw':!![],'where':{'id':_0x1d7597[_0x77f9('0x43')]['id']}},_0x2aef9f={};_0x2aef9f['model']=_[_0x77f9('0x44')](db[_0x77f9('0x3e')][_0x77f9('0x2a')]);_0x2aef9f[_0x77f9('0x2f')]=_[_0x77f9('0x44')](_0x1d7597[_0x77f9('0x2f')]);_0x2aef9f[_0x77f9('0x38')]=_[_0x77f9('0x30')](_0x2aef9f[_0x77f9('0x2e')],_0x2aef9f[_0x77f9('0x2f')]);_0x4d794c[_0x77f9('0x31')]=_[_0x77f9('0x30')](_0x2aef9f[_0x77f9('0x2e')],qs[_0x77f9('0x32')](_0x1d7597[_0x77f9('0x2f')][_0x77f9('0x32')]));_0x4d794c['attributes']=_0x4d794c['attributes']['length']?_0x4d794c[_0x77f9('0x31')]:_0x2aef9f[_0x77f9('0x2e')];if(_0x1d7597['query'][_0x77f9('0x45')]){_0x4d794c[_0x77f9('0x3d')]=[{'all':!![]}];}_0x4d794c=_[_0x77f9('0x3b')]({},_0x4d794c,_0x1d7597[_0x77f9('0x46')]);return db['SquareOdbc'][_0x77f9('0x47')](_0x4d794c)[_0x77f9('0x23')](handleEntityNotFound(_0x1e3d6b,null))[_0x77f9('0x23')](respondWithResult(_0x1e3d6b,null))['catch'](handleError(_0x1e3d6b,null));};exports[_0x77f9('0x48')]=function(_0x52a87f,_0x4abad5){return db[_0x77f9('0x3e')][_0x77f9('0x48')](_0x52a87f['body'],{})[_0x77f9('0x23')](function(_0xa2cafa){var _0x15d728=_0x52a87f[_0x77f9('0x49')][_0x77f9('0x24')]({'plain':!![]});if(!_0x15d728)throw new Error(_0x77f9('0x4a'));if(_0x15d728[_0x77f9('0x4b')]===_0x77f9('0x49')){var _0x12fde4=_0xa2cafa[_0x77f9('0x24')]({'plain':!![]});var _0x2313c2=_0x77f9('0x25');return db['UserProfileSection'][_0x77f9('0x47')]({'where':{'name':_0x2313c2,'userProfileId':_0x15d728[_0x77f9('0x4c')]},'raw':!![]})[_0x77f9('0x23')](function(_0x410fae){if(_0x410fae&&_0x410fae[_0x77f9('0x4d')]===0x0){return db[_0x77f9('0x4e')][_0x77f9('0x48')]({'name':_0x12fde4[_0x77f9('0x27')],'resourceId':_0x12fde4['id'],'type':_0x410fae[_0x77f9('0x27')],'sectionId':_0x410fae['id']},{})['then'](function(){return _0xa2cafa;});}else{return _0xa2cafa;}})[_0x77f9('0x41')](function(_0x24266d){logger[_0x77f9('0x4f')](_0x77f9('0x50'),_0x24266d);throw _0x24266d;});}return _0xa2cafa;})[_0x77f9('0x23')](respondWithResult(_0x4abad5,0xc9))[_0x77f9('0x41')](handleError(_0x4abad5,null));};exports[_0x77f9('0x51')]=function(_0x2980f6,_0x89351d){if(_0x2980f6[_0x77f9('0x52')]['id']){delete _0x2980f6[_0x77f9('0x52')]['id'];}return db[_0x77f9('0x3e')]['find']({'where':{'id':_0x2980f6['params']['id']}})['then'](handleEntityNotFound(_0x89351d,null))[_0x77f9('0x23')](saveUpdates(_0x2980f6[_0x77f9('0x52')],null))['then'](respondWithResult(_0x89351d,null))[_0x77f9('0x41')](handleError(_0x89351d,null));};exports[_0x77f9('0x22')]=function(_0x3b0a8d,_0x514628){return db[_0x77f9('0x3e')][_0x77f9('0x47')]({'where':{'id':_0x3b0a8d['params']['id']}})[_0x77f9('0x23')](handleEntityNotFound(_0x514628,null))[_0x77f9('0x23')](removeEntity(_0x514628,null))[_0x77f9('0x41')](handleError(_0x514628,null));};exports['test']=function(_0x572b5a,_0x19484d,_0x4b3007){var _0x549954;return db[_0x77f9('0x3e')][_0x77f9('0x47')]({'where':{'id':_0x572b5a[_0x77f9('0x43')]['id']},'attributes':['id',_0x77f9('0x53')]})[_0x77f9('0x23')](handleEntityNotFound(_0x19484d,null))[_0x77f9('0x23')](function(_0x32ba99){if(_0x32ba99){var _0x4b1354=require(_0x77f9('0x54'))();_0x4b1354[_0x77f9('0x55')](_0x32ba99[_0x77f9('0x53')]);_0x4b1354[_0x77f9('0x56')]();return _0x32ba99;}})['then'](respondWithResult(_0x19484d,null))['catch'](handleError(_0x19484d,null));}; \ No newline at end of file diff --git a/server/api/squareOdbc/squareOdbc.model.js b/server/api/squareOdbc/squareOdbc.model.js new file mode 100644 index 0000000..a6a783c --- /dev/null +++ b/server/api/squareOdbc/squareOdbc.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x59d7=['square_odbc','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./squareOdbc.attributes','define','SquareOdbc'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x59d7,0x1f0));var _0x759d=function(_0x396466,_0xe9857b){_0x396466=_0x396466-0x0;var _0x5e9ab4=_0x59d7[_0x396466];return _0x5e9ab4;};'use strict';var _=require(_0x759d('0x0'));var util=require(_0x759d('0x1'));var logger=require(_0x759d('0x2'))(_0x759d('0x3'));var moment=require(_0x759d('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x759d('0x5'));var config=require(_0x759d('0x6'));var attributes=require(_0x759d('0x7'));module['exports']=function(_0x1f188d,_0x4c5167){return _0x1f188d[_0x759d('0x8')](_0x759d('0x9'),attributes,{'tableName':_0x759d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/squareOdbc/squareOdbc.rpc.js b/server/api/squareOdbc/squareOdbc.rpc.js new file mode 100644 index 0000000..29f2262 --- /dev/null +++ b/server/api/squareOdbc/squareOdbc.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x52e9=['model','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','ShowSquareOdbc','SquareOdbc','find','options','where','attributes','map','include'];(function(_0x3fd603,_0x5f5b06){var _0x5026af=function(_0x5f199d){while(--_0x5f199d){_0x3fd603['push'](_0x3fd603['shift']());}};_0x5026af(++_0x5f5b06);}(_0x52e9,0x145));var _0x952e=function(_0x4f6692,_0x298a79){_0x4f6692=_0x4f6692-0x0;var _0x58b110=_0x52e9[_0x4f6692];return _0x58b110;};'use strict';var _=require(_0x952e('0x0'));var util=require('util');var moment=require(_0x952e('0x1'));var BPromise=require('bluebird');var rs=require(_0x952e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x952e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x952e('0x4'))(_0x952e('0x5'));var config=require(_0x952e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x952e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x99d4e1,_0x319fef,_0x381146){return new BPromise(function(_0x283ba1,_0x282bd7){return client['request'](_0x99d4e1,_0x381146)[_0x952e('0x8')](function(_0x22fae9){logger[_0x952e('0x9')](_0x952e('0xa'),_0x319fef,_0x952e('0xb'));logger[_0x952e('0xc')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x319fef,_0x952e('0xb'),JSON[_0x952e('0xd')](_0x22fae9));if(_0x22fae9[_0x952e('0xe')]){if(_0x22fae9[_0x952e('0xe')][_0x952e('0xf')]===0x1f4){logger[_0x952e('0xe')]('SquareOdbc,\x20%s,\x20%s',_0x319fef,_0x22fae9[_0x952e('0xe')]['message']);return _0x282bd7(_0x22fae9['error'][_0x952e('0x10')]);}logger[_0x952e('0xe')](_0x952e('0xa'),_0x319fef,_0x22fae9[_0x952e('0xe')][_0x952e('0x10')]);return _0x283ba1(_0x22fae9[_0x952e('0xe')][_0x952e('0x10')]);}else{logger[_0x952e('0x9')](_0x952e('0xa'),_0x319fef,_0x952e('0xb'));_0x283ba1(_0x22fae9['result'][_0x952e('0x10')]);}})[_0x952e('0x11')](function(_0x47be9a){logger['error'](_0x952e('0xa'),_0x319fef,_0x47be9a);_0x282bd7(_0x47be9a);});});}exports[_0x952e('0x12')]=function(_0x2829cf){var _0x3df865=this;return new Promise(function(_0x74cb7f,_0x4722e7){return db[_0x952e('0x13')][_0x952e('0x14')]({'raw':_0x2829cf[_0x952e('0x15')]?_0x2829cf[_0x952e('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x2829cf[_0x952e('0x15')]?_0x2829cf[_0x952e('0x15')][_0x952e('0x16')]||null:null,'attributes':_0x2829cf[_0x952e('0x15')]?_0x2829cf[_0x952e('0x15')][_0x952e('0x17')]||null:null,'include':_0x2829cf['options']?_0x2829cf[_0x952e('0x15')]['include']?_[_0x952e('0x18')](_0x2829cf[_0x952e('0x15')][_0x952e('0x19')],function(_0x54deb6){return{'model':db[_0x54deb6[_0x952e('0x1a')]],'as':_0x54deb6['as'],'attributes':_0x54deb6[_0x952e('0x17')],'include':_0x54deb6['include']?_['map'](_0x54deb6['include'],function(_0x377bcc){return{'model':db[_0x377bcc['model']],'as':_0x377bcc['as'],'attributes':_0x377bcc[_0x952e('0x17')],'include':_0x377bcc[_0x952e('0x19')]?_[_0x952e('0x18')](_0x377bcc['include'],function(_0x40f760){return{'model':db[_0x40f760[_0x952e('0x1a')]],'as':_0x40f760['as'],'attributes':_0x40f760[_0x952e('0x17')]};}):[]};}):[]};}):[]:[]})[_0x952e('0x8')](function(_0x164a09){logger[_0x952e('0x9')](_0x952e('0x12'),_0x2829cf);logger[_0x952e('0xc')](_0x952e('0x12'),_0x2829cf,JSON['stringify'](_0x164a09));_0x74cb7f(_0x164a09);})[_0x952e('0x11')](function(_0x5e7e3d){logger[_0x952e('0xe')](_0x952e('0x12'),_0x5e7e3d[_0x952e('0x10')],_0x2829cf);_0x4722e7(_0x3df865['error'](0x1f4,_0x5e7e3d[_0x952e('0x10')]));});});}; \ No newline at end of file diff --git a/server/api/squareProject/index.js b/server/api/squareProject/index.js new file mode 100644 index 0000000..4a7ce00 --- /dev/null +++ b/server/api/squareProject/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xea02=['index','/:id','show','post','create','put','delete','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated'];(function(_0x55b6e1,_0x18d927){var _0x5e69af=function(_0x47d45f){while(--_0x47d45f){_0x55b6e1['push'](_0x55b6e1['shift']());}};_0x5e69af(++_0x18d927);}(_0xea02,0xb1));var _0x2ea0=function(_0x51a03c,_0x28e37a){_0x51a03c=_0x51a03c-0x0;var _0x4d9b98=_0xea02[_0x51a03c];return _0x4d9b98;};'use strict';var multer=require(_0x2ea0('0x0'));var util=require('util');var path=require(_0x2ea0('0x1'));var timeout=require(_0x2ea0('0x2'));var express=require(_0x2ea0('0x3'));var router=express[_0x2ea0('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2ea0('0x5'));var config=require(_0x2ea0('0x6'));var controller=require(_0x2ea0('0x7'));router[_0x2ea0('0x8')]('/',auth[_0x2ea0('0x9')](),controller[_0x2ea0('0xa')]);router[_0x2ea0('0x8')](_0x2ea0('0xb'),auth[_0x2ea0('0x9')](),controller[_0x2ea0('0xc')]);router[_0x2ea0('0xd')]('/',auth[_0x2ea0('0x9')](),controller[_0x2ea0('0xe')]);router[_0x2ea0('0xf')](_0x2ea0('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x2ea0('0x10')](_0x2ea0('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router; \ No newline at end of file diff --git a/server/api/squareProject/squareProject.attributes.js b/server/api/squareProject/squareProject.attributes.js new file mode 100644 index 0000000..14901a7 --- /dev/null +++ b/server/api/squareProject/squareProject.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe396=['long','getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','STRING','name','TEXT','BLOB'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe396,0xa3));var _0x6e39=function(_0xe2b853,_0x114638){_0xe2b853=_0xe2b853-0x0;var _0x3717ed=_0xe396[_0xe2b853];return _0x3717ed;};'use strict';var Sequelize=require(_0x6e39('0x0'));module[_0x6e39('0x1')]={'name':{'type':Sequelize[_0x6e39('0x2')],'unique':_0x6e39('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x6e39('0x2')]},'notes':{'type':Sequelize[_0x6e39('0x4')]},'preproduction':{'type':Sequelize[_0x6e39('0x5')](_0x6e39('0x6')),'get':function(){if(this[_0x6e39('0x7')]('preproduction')){return this[_0x6e39('0x7')](_0x6e39('0x8'))[_0x6e39('0x9')](_0x6e39('0xa'));}}},'production':{'type':Sequelize[_0x6e39('0x5')](_0x6e39('0x6')),'get':function(){if(this['getDataValue']('production')){return this[_0x6e39('0x7')](_0x6e39('0xb'))[_0x6e39('0x9')](_0x6e39('0xa'));}}},'savedAt':{'type':Sequelize[_0x6e39('0xc')]},'publishedAt':{'type':Sequelize[_0x6e39('0xc')]}}; \ No newline at end of file diff --git a/server/api/squareProject/squareProject.controller.js b/server/api/squareProject/squareProject.controller.js new file mode 100644 index 0000000..1d9fc4c --- /dev/null +++ b/server/api/squareProject/squareProject.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x37ea=['pick','filter','merge','VIRTUAL','options','SquareProject','includeAll','include','rows','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','production','ioredis','../../components/parsers/qs','api','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','json','limit','undefined','count','offset','set','Content-Range','then','destroy','get','SquareProjects','publish','agi','stringify','status','end','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','intersection','model','attributes','fields','length','nolimit','order','sort','where','filters'];(function(_0x238942,_0x3fe35e){var _0x17b205=function(_0x307c77){while(--_0x307c77){_0x238942['push'](_0x238942['shift']());}};_0x17b205(++_0x3fe35e);}(_0x37ea,0x1c3));var _0xa37e=function(_0x6a088b,_0x7000f8){_0x6a088b=_0x6a088b-0x0;var _0x18e69b=_0x37ea[_0x6a088b];return _0x18e69b;};'use strict';var _=require('lodash');var Redis=require(_0xa37e('0x0'));var qs=require(_0xa37e('0x1'));var logger=require('../../config/logger')(_0xa37e('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xa37e('0x3')]=_[_0xa37e('0x4')](config[_0xa37e('0x3')],{'host':_0xa37e('0x5'),'port':0x18eb});var socket=require(_0xa37e('0x6'))(new Redis(config[_0xa37e('0x3')]));require(_0xa37e('0x7'))['register'](socket);function respondWithResult(_0x54ca7b,_0x163ffe){_0x163ffe=_0x163ffe||0xc8;return function(_0x3a05e0){if(_0x3a05e0){return _0x54ca7b['status'](_0x163ffe)[_0xa37e('0x8')](_0x3a05e0);}};}function respondWithFilteredResult(_0x5b831f,_0x332d16){return function(_0x2964e9){if(_0x2964e9){var _0x14d4ae=typeof _0x332d16['offset']==='undefined'&&typeof _0x332d16[_0xa37e('0x9')]===_0xa37e('0xa');var _0x55ddb7=_0x2964e9[_0xa37e('0xb')];var _0xc4cfbd=_0x14d4ae?0x0:_0x332d16[_0xa37e('0xc')];var _0x242598=_0x14d4ae?_0x2964e9[_0xa37e('0xb')]:_0x332d16['offset']+_0x332d16['limit'];var _0x164c3b;if(_0x242598>=_0x55ddb7){_0x242598=_0x55ddb7;_0x164c3b=0xc8;}else{_0x164c3b=0xce;}_0x5b831f['status'](_0x164c3b);return _0x5b831f[_0xa37e('0xd')](_0xa37e('0xe'),_0xc4cfbd+'-'+_0x242598+'/'+_0x55ddb7)[_0xa37e('0x8')](_0x2964e9);}return null;};}function saveUpdates(_0x6595a){return function(_0x5939c7){if(_0x5939c7){return _0x5939c7['update'](_0x6595a)[_0xa37e('0xf')](function(_0x5c9596){return _0x5c9596;});}return null;};}function removeEntity(_0x5c3dce){return function(_0x476baa){if(_0x476baa){return _0x476baa[_0xa37e('0x10')]()[_0xa37e('0xf')](function(){var _0x26e369=_0x476baa[_0xa37e('0x11')]({'plain':!![]});var _0xef3fe1=_0xa37e('0x12');return db['UserProfileResource'][_0xa37e('0x10')]({'where':{'type':_0xef3fe1,'resourceId':_0x26e369['id']}})['then'](function(){return _0x476baa;});})['then'](function(){var _0xdb8974=new Redis(config[_0xa37e('0x3')]);_0xdb8974[_0xa37e('0x13')](_0xa37e('0x14'),JSON[_0xa37e('0x15')]({'id':_0x476baa['id'],'deleted':!![]}));})[_0xa37e('0xf')](function(){_0x5c3dce[_0xa37e('0x16')](0xcc)[_0xa37e('0x17')]();});}};}function handleEntityNotFound(_0x112e93){return function(_0x5d378e){if(!_0x5d378e){_0x112e93[_0xa37e('0x18')](0x194);}return _0x5d378e;};}function handleError(_0x5c1ab8,_0x3f1ec7){_0x3f1ec7=_0x3f1ec7||0x1f4;return function(_0x8b4e70){logger[_0xa37e('0x19')](_0x8b4e70[_0xa37e('0x1a')]);if(_0x8b4e70[_0xa37e('0x1b')]){delete _0x8b4e70[_0xa37e('0x1b')];}_0x5c1ab8[_0xa37e('0x16')](_0x3f1ec7)[_0xa37e('0x1c')](_0x8b4e70);};}exports[_0xa37e('0x1d')]=function(_0xe9e9e7,_0x5d47b0){var _0x489947={},_0x5ac340={},_0x530b0f={'count':0x0,'rows':[]};var _0x463936=_['map'](db['SquareProject'][_0xa37e('0x1e')],function(_0x504c32){return{'name':_0x504c32[_0xa37e('0x1f')],'type':_0x504c32[_0xa37e('0x20')][_0xa37e('0x21')]};});_0x5ac340['model']=_[_0xa37e('0x22')](_0x463936,_0xa37e('0x1b'));_0x5ac340['query']=_['keys'](_0xe9e9e7[_0xa37e('0x23')]);_0x5ac340['filters']=_[_0xa37e('0x24')](_0x5ac340[_0xa37e('0x25')],_0x5ac340['query']);_0x489947[_0xa37e('0x26')]=_[_0xa37e('0x24')](_0x5ac340[_0xa37e('0x25')],qs[_0xa37e('0x27')](_0xe9e9e7[_0xa37e('0x23')][_0xa37e('0x27')]));_0x489947['attributes']=_0x489947['attributes'][_0xa37e('0x28')]?_0x489947['attributes']:_0x5ac340[_0xa37e('0x25')];if(!_0xe9e9e7[_0xa37e('0x23')]['hasOwnProperty'](_0xa37e('0x29'))){_0x489947[_0xa37e('0x9')]=qs['limit'](_0xe9e9e7[_0xa37e('0x23')]['limit']);_0x489947[_0xa37e('0xc')]=qs[_0xa37e('0xc')](_0xe9e9e7[_0xa37e('0x23')][_0xa37e('0xc')]);}_0x489947[_0xa37e('0x2a')]=qs[_0xa37e('0x2b')](_0xe9e9e7['query'][_0xa37e('0x2b')]);_0x489947[_0xa37e('0x2c')]=qs[_0xa37e('0x2d')](_[_0xa37e('0x2e')](_0xe9e9e7[_0xa37e('0x23')],_0x5ac340[_0xa37e('0x2d')]),_0x463936);if(_0xe9e9e7['query'][_0xa37e('0x2f')]){_0x489947['where']=_[_0xa37e('0x30')](_0x489947[_0xa37e('0x2c')],{'$or':_['map'](_0x463936,function(_0x1d978c){if(_0x1d978c[_0xa37e('0x20')]!==_0xa37e('0x31')){var _0x5527fd={};_0x5527fd[_0x1d978c[_0xa37e('0x1b')]]={'$like':'%'+_0xe9e9e7[_0xa37e('0x23')][_0xa37e('0x2f')]+'%'};return _0x5527fd;}})});}_0x489947=_[_0xa37e('0x30')]({},_0x489947,_0xe9e9e7[_0xa37e('0x32')]);var _0x3edbd9={'where':_0x489947[_0xa37e('0x2c')]};return db[_0xa37e('0x33')][_0xa37e('0xb')](_0x3edbd9)[_0xa37e('0xf')](function(_0x5ee82e){_0x530b0f['count']=_0x5ee82e;if(_0xe9e9e7[_0xa37e('0x23')][_0xa37e('0x34')]){_0x489947[_0xa37e('0x35')]=[{'all':!![]}];}return db[_0xa37e('0x33')]['findAll'](_0x489947);})[_0xa37e('0xf')](function(_0x49c149){_0x530b0f[_0xa37e('0x36')]=_0x49c149;return _0x530b0f;})[_0xa37e('0xf')](respondWithFilteredResult(_0x5d47b0,_0x489947))['catch'](handleError(_0x5d47b0,null));};exports[_0xa37e('0x37')]=function(_0x559a18,_0x4840b4){var _0x586f7e={'raw':![],'where':{'id':_0x559a18[_0xa37e('0x38')]['id']}},_0x7e8c55={};_0x7e8c55[_0xa37e('0x25')]=_['keys'](db[_0xa37e('0x33')][_0xa37e('0x1e')]);_0x7e8c55[_0xa37e('0x23')]=_[_0xa37e('0x39')](_0x559a18[_0xa37e('0x23')]);_0x7e8c55['filters']=_[_0xa37e('0x24')](_0x7e8c55[_0xa37e('0x25')],_0x7e8c55[_0xa37e('0x23')]);_0x586f7e[_0xa37e('0x26')]=_[_0xa37e('0x24')](_0x7e8c55[_0xa37e('0x25')],qs['fields'](_0x559a18[_0xa37e('0x23')][_0xa37e('0x27')]));_0x586f7e[_0xa37e('0x26')]=_0x586f7e[_0xa37e('0x26')][_0xa37e('0x28')]?_0x586f7e[_0xa37e('0x26')]:_0x7e8c55[_0xa37e('0x25')];if(_0x559a18[_0xa37e('0x23')][_0xa37e('0x34')]){_0x586f7e[_0xa37e('0x35')]=[{'all':!![]}];}_0x586f7e=_[_0xa37e('0x30')]({},_0x586f7e,_0x559a18[_0xa37e('0x32')]);return db[_0xa37e('0x33')][_0xa37e('0x3a')](_0x586f7e)[_0xa37e('0xf')](handleEntityNotFound(_0x4840b4,null))['then'](respondWithResult(_0x4840b4,null))['catch'](handleError(_0x4840b4,null));};exports['create']=function(_0x5c44d9,_0x166aea){return db[_0xa37e('0x33')][_0xa37e('0x3b')](_0x5c44d9[_0xa37e('0x3c')],{})[_0xa37e('0xf')](function(_0x38ad10){var _0x410198=_0x5c44d9['user'][_0xa37e('0x11')]({'plain':!![]});if(!_0x410198)throw new Error(_0xa37e('0x3d'));if(_0x410198[_0xa37e('0x3e')]==='user'){var _0xcbc764=_0x38ad10[_0xa37e('0x11')]({'plain':!![]});var _0x5f37da=_0xa37e('0x12');return db[_0xa37e('0x3f')][_0xa37e('0x3a')]({'where':{'name':_0x5f37da,'userProfileId':_0x410198[_0xa37e('0x40')]},'raw':!![]})[_0xa37e('0xf')](function(_0x4eabf9){if(_0x4eabf9&&_0x4eabf9[_0xa37e('0x41')]===0x0){return db[_0xa37e('0x42')][_0xa37e('0x3b')]({'name':_0xcbc764[_0xa37e('0x1b')],'resourceId':_0xcbc764['id'],'type':_0x4eabf9[_0xa37e('0x1b')],'sectionId':_0x4eabf9['id']},{})[_0xa37e('0xf')](function(){return _0x38ad10;});}else{return _0x38ad10;}})[_0xa37e('0x43')](function(_0x260da0){logger[_0xa37e('0x19')](_0xa37e('0x44'),_0x260da0);throw _0x260da0;});}return _0x38ad10;})[_0xa37e('0xf')](respondWithResult(_0x166aea,0xc9))['catch'](handleError(_0x166aea,null));};exports[_0xa37e('0x45')]=function(_0x501040,_0x4085b5){if(_0x501040[_0xa37e('0x3c')]['id']){delete _0x501040['body']['id'];}return db['SquareProject'][_0xa37e('0x3a')]({'where':{'id':_0x501040['params']['id']}})[_0xa37e('0xf')](handleEntityNotFound(_0x4085b5,null))[_0xa37e('0xf')](saveUpdates(_0x501040['body'],null))['then'](function(_0x1fc20e){if(!_0x1fc20e)return;var _0x30ae8f=_0x1fc20e[_0xa37e('0x11')]({'plain':!![]});return _0x30ae8f;})[_0xa37e('0xf')](function(_0x2f2f0c){var _0x2e8af6=new Redis(config['redis']);_0x2e8af6[_0xa37e('0x13')]('agi',JSON['stringify'](_[_0xa37e('0x2e')](_0x2f2f0c,['id',_0xa37e('0x1b'),_0xa37e('0x46')])));return _0x2f2f0c;})[_0xa37e('0xf')](respondWithResult(_0x4085b5,null))[_0xa37e('0x43')](handleError(_0x4085b5,null));};exports[_0xa37e('0x10')]=function(_0x1f8b3c,_0x4fbb50){return db[_0xa37e('0x33')]['find']({'where':{'id':_0x1f8b3c[_0xa37e('0x38')]['id']}})[_0xa37e('0xf')](handleEntityNotFound(_0x4fbb50,null))[_0xa37e('0xf')](removeEntity(_0x4fbb50,null))[_0xa37e('0x43')](handleError(_0x4fbb50,null));}; \ No newline at end of file diff --git a/server/api/squareProject/squareProject.events.js b/server/api/squareProject/squareProject.events.js new file mode 100644 index 0000000..2dde876 --- /dev/null +++ b/server/api/squareProject/squareProject.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfd1c=['setMaxListeners','save','update','remove','hook','exports','events','../../mysqldb','SquareProject'];(function(_0x1976a1,_0x522f17){var _0x85e7=function(_0x24ca63){while(--_0x24ca63){_0x1976a1['push'](_0x1976a1['shift']());}};_0x85e7(++_0x522f17);}(_0xfd1c,0x96));var _0xcfd1=function(_0xfad1a7,_0x2e3b8d){_0xfad1a7=_0xfad1a7-0x0;var _0x571012=_0xfd1c[_0xfad1a7];return _0x571012;};'use strict';var EventEmitter=require(_0xcfd1('0x0'));var SquareProject=require(_0xcfd1('0x1'))['db'][_0xcfd1('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xcfd1('0x3')](0x0);var events={'afterCreate':_0xcfd1('0x4'),'afterUpdate':_0xcfd1('0x5'),'afterDestroy':_0xcfd1('0x6')};function emitEvent(_0x5f5ad8){return function(_0xcfcc7e,_0xd0fcb2,_0x2d6c5b){SquareProjectEvents['emit'](_0x5f5ad8+':'+_0xcfcc7e['id'],_0xcfcc7e);SquareProjectEvents['emit'](_0x5f5ad8,_0xcfcc7e);_0x2d6c5b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0xcfd1('0x7')](e,emitEvent(event));}}module[_0xcfd1('0x8')]=SquareProjectEvents; \ No newline at end of file diff --git a/server/api/squareProject/squareProject.model.js b/server/api/squareProject/squareProject.model.js new file mode 100644 index 0000000..505a2cd --- /dev/null +++ b/server/api/squareProject/squareProject.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd6f1=['changed','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects'];(function(_0x2c9062,_0x525a88){var _0x48fa9f=function(_0x2d2731){while(--_0x2d2731){_0x2c9062['push'](_0x2c9062['shift']());}};_0x48fa9f(++_0x525a88);}(_0xd6f1,0x145));var _0x1d6f=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xd6f1[_0x28947d];return _0x12d2ee;};'use strict';var _=require(_0x1d6f('0x0'));var util=require(_0x1d6f('0x1'));var logger=require(_0x1d6f('0x2'))(_0x1d6f('0x3'));var moment=require(_0x1d6f('0x4'));var BPromise=require(_0x1d6f('0x5'));var rp=require(_0x1d6f('0x6'));var fs=require('fs');var path=require(_0x1d6f('0x7'));var rimraf=require(_0x1d6f('0x8'));var config=require(_0x1d6f('0x9'));var attributes=require(_0x1d6f('0xa'));module[_0x1d6f('0xb')]=function(_0x1dcb94,_0x69e6f2){return _0x1dcb94[_0x1d6f('0xc')](_0x1d6f('0xd'),attributes,{'tableName':_0x1d6f('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x155da3,_0x3e7326,_0x56d4ed){if(_0x155da3[_0x1d6f('0xf')]('preproduction')){_0x155da3[_0x1d6f('0x10')]=moment()[_0x1d6f('0x11')](_0x1d6f('0x12'));}if(_0x155da3['changed'](_0x1d6f('0x13'))){_0x155da3['publishedAt']=moment()['format'](_0x1d6f('0x12'));}_0x56d4ed(null,_0x155da3);}}});}; \ No newline at end of file diff --git a/server/api/squareProject/squareProject.rpc.js b/server/api/squareProject/squareProject.rpc.js new file mode 100644 index 0000000..00e4596 --- /dev/null +++ b/server/api/squareProject/squareProject.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x131e=['model','then','info','GetSquareProjects','debug','stringify','catch','error','message','ShowSquareProject','find','where','lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','localhost','./squareProject.socket','register','SquareProject','findAll','options','raw','attributes','limit','include','map'];(function(_0x24e91d,_0x5d6ffe){var _0x324d8d=function(_0x53a0e0){while(--_0x53a0e0){_0x24e91d['push'](_0x24e91d['shift']());}};_0x324d8d(++_0x5d6ffe);}(_0x131e,0xfc));var _0xe131=function(_0x1f58ad,_0x959626){_0x1f58ad=_0x1f58ad-0x0;var _0x211dd4=_0x131e[_0x1f58ad];return _0x211dd4;};'use strict';var _=require(_0xe131('0x0'));var Redis=require(_0xe131('0x1'));var db=require(_0xe131('0x2'))['db'];var logger=require(_0xe131('0x3'))(_0xe131('0x4'));var config=require(_0xe131('0x5'));config[_0xe131('0x6')]=_['defaults'](config[_0xe131('0x6')],{'host':_0xe131('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe131('0x8'))[_0xe131('0x9')](socket);exports['GetSquareProjects']=function(_0x45962d){var _0x1277dc=this;return new Promise(function(_0x36f26e,_0x54caa4){return db[_0xe131('0xa')][_0xe131('0xb')]({'raw':_0x45962d[_0xe131('0xc')]?_0x45962d['options'][_0xe131('0xd')]===undefined?!![]:![]:!![],'where':_0x45962d[_0xe131('0xc')]?_0x45962d[_0xe131('0xc')]['where']||null:null,'attributes':_0x45962d[_0xe131('0xc')]?_0x45962d[_0xe131('0xc')][_0xe131('0xe')]||null:null,'limit':_0x45962d[_0xe131('0xc')]?_0x45962d[_0xe131('0xc')][_0xe131('0xf')]||null:null,'include':_0x45962d[_0xe131('0xc')]?_0x45962d[_0xe131('0xc')][_0xe131('0x10')]?_[_0xe131('0x11')](_0x45962d[_0xe131('0xc')][_0xe131('0x10')],function(_0x5f209f){return{'model':db[_0x5f209f['model']],'as':_0x5f209f['as'],'attributes':_0x5f209f[_0xe131('0xe')],'include':_0x5f209f[_0xe131('0x10')]?_[_0xe131('0x11')](_0x5f209f[_0xe131('0x10')],function(_0x2c2a49){return{'model':db[_0x2c2a49[_0xe131('0x12')]],'as':_0x2c2a49['as'],'attributes':_0x2c2a49[_0xe131('0xe')],'include':_0x2c2a49[_0xe131('0x10')]?_[_0xe131('0x11')](_0x2c2a49['include'],function(_0x20b9c9){return{'model':db[_0x20b9c9[_0xe131('0x12')]],'as':_0x20b9c9['as'],'attributes':_0x20b9c9[_0xe131('0xe')]};}):[]};}):[]};}):[]:[]})[_0xe131('0x13')](function(_0x5f4678){logger[_0xe131('0x14')](_0xe131('0x15'),_0x45962d);logger[_0xe131('0x16')](_0xe131('0x15'),_0x45962d,JSON[_0xe131('0x17')](_0x5f4678));_0x36f26e(_0x5f4678);})[_0xe131('0x18')](function(_0x9df200){logger[_0xe131('0x19')](_0xe131('0x15'),_0x9df200[_0xe131('0x1a')],_0x45962d);_0x54caa4(_0x1277dc[_0xe131('0x19')](0x1f4,_0x9df200['message']));});});};exports[_0xe131('0x1b')]=function(_0x5c9ddb){var _0x46deb0=this;return new Promise(function(_0x3d96ed,_0x1c4d00){return db[_0xe131('0xa')][_0xe131('0x1c')]({'raw':_0x5c9ddb[_0xe131('0xc')]?_0x5c9ddb[_0xe131('0xc')][_0xe131('0xd')]===undefined?!![]:![]:!![],'where':_0x5c9ddb[_0xe131('0xc')]?_0x5c9ddb[_0xe131('0xc')][_0xe131('0x1d')]||null:null,'attributes':_0x5c9ddb['options']?_0x5c9ddb['options'][_0xe131('0xe')]||null:null,'include':_0x5c9ddb[_0xe131('0xc')]?_0x5c9ddb[_0xe131('0xc')][_0xe131('0x10')]?_[_0xe131('0x11')](_0x5c9ddb['options']['include'],function(_0x524c8b){return{'model':db[_0x524c8b[_0xe131('0x12')]],'as':_0x524c8b['as'],'attributes':_0x524c8b[_0xe131('0xe')],'include':_0x524c8b[_0xe131('0x10')]?_['map'](_0x524c8b[_0xe131('0x10')],function(_0x2e3767){return{'model':db[_0x2e3767['model']],'as':_0x2e3767['as'],'attributes':_0x2e3767[_0xe131('0xe')],'include':_0x2e3767[_0xe131('0x10')]?_['map'](_0x2e3767[_0xe131('0x10')],function(_0x4be986){return{'model':db[_0x4be986['model']],'as':_0x4be986['as'],'attributes':_0x4be986[_0xe131('0xe')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4aee1f){logger[_0xe131('0x14')](_0xe131('0x1b'),_0x5c9ddb);logger[_0xe131('0x16')](_0xe131('0x1b'),_0x5c9ddb,JSON[_0xe131('0x17')](_0x4aee1f));_0x3d96ed(_0x4aee1f);})['catch'](function(_0x1a5cfe){logger[_0xe131('0x19')](_0xe131('0x1b'),_0x1a5cfe['message'],_0x5c9ddb);_0x1c4d00(_0x46deb0['error'](0x1f4,_0x1a5cfe['message']));});});}; \ No newline at end of file diff --git a/server/api/squareProject/squareProject.socket.js b/server/api/squareProject/squareProject.socket.js new file mode 100644 index 0000000..7f56e09 --- /dev/null +++ b/server/api/squareProject/squareProject.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa283=['save','remove','update','removeListener','register','length','squareProject:','./squareProject.events'];(function(_0x2e08d1,_0x3ee7c3){var _0x5e76ec=function(_0x5d070f){while(--_0x5d070f){_0x2e08d1['push'](_0x2e08d1['shift']());}};_0x5e76ec(++_0x3ee7c3);}(_0xa283,0xbf));var _0x3a28=function(_0x212d2f,_0x2522bd){_0x212d2f=_0x212d2f-0x0;var _0x537dba=_0xa283[_0x212d2f];return _0x537dba;};'use strict';var SquareProjectEvents=require(_0x3a28('0x0'));var events=[_0x3a28('0x1'),_0x3a28('0x2'),_0x3a28('0x3')];function createListener(_0x1ba5d9,_0x4ca068){return function(_0x17c869){_0x4ca068['emit'](_0x1ba5d9,_0x17c869);};}function removeListener(_0x318dad,_0x1f269f){return function(){SquareProjectEvents[_0x3a28('0x4')](_0x318dad,_0x1f269f);};}exports[_0x3a28('0x5')]=function(_0x219555){for(var _0x3a2621=0x0,_0x5d34f4=events[_0x3a28('0x6')];_0x3a2621<_0x5d34f4;_0x3a2621++){var _0x467b86=events[_0x3a2621];var _0x320fe1=createListener(_0x3a28('0x7')+_0x467b86,_0x219555);SquareProjectEvents['on'](_0x467b86,_0x320fe1);}}; \ No newline at end of file diff --git a/server/api/squareRecording/index.js b/server/api/squareRecording/index.js new file mode 100644 index 0000000..9d63737 --- /dev/null +++ b/server/api/squareRecording/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1261=['isAuthenticated','show','/:id/download','post','create','/:id','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','index','get'];(function(_0x1f38db,_0x2af54a){var _0x598816=function(_0x3c82d2){while(--_0x3c82d2){_0x1f38db['push'](_0x1f38db['shift']());}};_0x598816(++_0x2af54a);}(_0x1261,0x144));var _0x1126=function(_0x598b78,_0xf4ee7e){_0x598b78=_0x598b78-0x0;var _0x6392fa=_0x1261[_0x598b78];return _0x6392fa;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['download']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x12')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x13')]);module[_0x1126('0x14')]=router; \ No newline at end of file diff --git a/server/api/squareRecording/squareRecording.attributes.js b/server/api/squareRecording/squareRecording.attributes.js new file mode 100644 index 0000000..5975dcd --- /dev/null +++ b/server/api/squareRecording/squareRecording.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbd51=['VIRTUAL','getDataValue','savePath','lastIndexOf','sequelize','STRING'];(function(_0x1e673a,_0x3070c4){var _0x4350b7=function(_0x26b207){while(--_0x26b207){_0x1e673a['push'](_0x1e673a['shift']());}};_0x4350b7(++_0x3070c4);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x5aa2d7,_0x2a0504){_0x5aa2d7=_0x5aa2d7-0x0;var _0x1328f2=_0xbd51[_0x5aa2d7];return _0x1328f2;};'use strict';var Sequelize=require(_0x1bd5('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x1bd5('0x1')]},'callerid':{'type':Sequelize[_0x1bd5('0x1')]},'calleridname':{'type':Sequelize[_0x1bd5('0x1')]},'context':{'type':Sequelize[_0x1bd5('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x1bd5('0x1')]},'saveName':{'type':Sequelize[_0x1bd5('0x1')]},'filename':{'type':Sequelize[_0x1bd5('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x1bd5('0x2')],'get':function(){var _0x30a385='';var _0x19077c=this[_0x1bd5('0x3')](_0x1bd5('0x4'));if(_0x19077c){_0x30a385=_0x19077c['substring'](_0x19077c[_0x1bd5('0x5')]('.'));}return _0x30a385;}}}; \ No newline at end of file diff --git a/server/api/squareRecording/squareRecording.controller.js b/server/api/squareRecording/squareRecording.controller.js new file mode 100644 index 0000000..3543f53 --- /dev/null +++ b/server/api/squareRecording/squareRecording.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x94ce=['SquareRecording','includeAll','include','findAll','catch','params','create','body','find','download','../../components/encryptor','uniqueid','savePath','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','extname','Not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','then','stack','name','send','index','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options'];(function(_0x3c7fbf,_0x57c5eb){var _0x2b0aa4=function(_0x21460c){while(--_0x21460c){_0x3c7fbf['push'](_0x3c7fbf['shift']());}};_0x2b0aa4(++_0x57c5eb);}(_0x94ce,0xd4));var _0xe94c=function(_0x53dac4,_0x436fac){_0x53dac4=_0x53dac4-0x0;var _0x589366=_0x94ce[_0x53dac4];return _0x589366;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe94c('0x0'));var zipdir=require(_0xe94c('0x1'));var jsonpatch=require(_0xe94c('0x2'));var rp=require('request-promise');var moment=require(_0xe94c('0x3'));var BPromise=require(_0xe94c('0x4'));var Mustache=require(_0xe94c('0x5'));var util=require('util');var path=require(_0xe94c('0x6'));var sox=require(_0xe94c('0x7'));var csv=require(_0xe94c('0x8'));var ejs=require(_0xe94c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xe94c('0xa'));var jsforce=require(_0xe94c('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe94c('0x8'));var querystring=require(_0xe94c('0xc'));var Papa=require(_0xe94c('0xd'));var Redis=require(_0xe94c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe94c('0xf'));var as=require(_0xe94c('0x10'));var hardwareService=require(_0xe94c('0x11'));var logger=require(_0xe94c('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe94c('0x13'))['db'];function respondWithStatusCode(_0x5c563b,_0x5a9b68){_0x5a9b68=_0x5a9b68||0xcc;return function(_0x39151d){if(_0x39151d){return _0x5c563b[_0xe94c('0x14')](_0x5a9b68);}return _0x5c563b[_0xe94c('0x15')](_0x5a9b68)[_0xe94c('0x16')]();};}function respondWithResult(_0x5b09e2,_0x404478){_0x404478=_0x404478||0xc8;return function(_0x1ac0fe){if(_0x1ac0fe){return _0x5b09e2[_0xe94c('0x15')](_0x404478)['json'](_0x1ac0fe);}};}function respondWithFilteredResult(_0x2b3508,_0xc0911d){return function(_0x48a470){if(_0x48a470){var _0x216e6d=typeof _0xc0911d[_0xe94c('0x17')]===_0xe94c('0x18')&&typeof _0xc0911d[_0xe94c('0x19')]===_0xe94c('0x18');var _0x3e03a9=_0x48a470['count'];var _0x433373=_0x216e6d?0x0:_0xc0911d[_0xe94c('0x17')];var _0x19cf11=_0x216e6d?_0x48a470[_0xe94c('0x1a')]:_0xc0911d[_0xe94c('0x17')]+_0xc0911d[_0xe94c('0x19')];var _0x459109;if(_0x19cf11>=_0x3e03a9){_0x19cf11=_0x3e03a9;_0x459109=0xc8;}else{_0x459109=0xce;}_0x2b3508[_0xe94c('0x15')](_0x459109);return _0x2b3508[_0xe94c('0x1b')](_0xe94c('0x1c'),_0x433373+'-'+_0x19cf11+'/'+_0x3e03a9)[_0xe94c('0x1d')](_0x48a470);}return null;};}function patchUpdates(_0x4fcd2d){return function(_0x5bbb10){try{jsonpatch[_0xe94c('0x1e')](_0x5bbb10,_0x4fcd2d,!![]);}catch(_0x134323){return BPromise[_0xe94c('0x1f')](_0x134323);}return _0x5bbb10['save']();};}function saveUpdates(_0xe6612f,_0x2d60f4){return function(_0x52a5c2){if(_0x52a5c2){return _0x52a5c2[_0xe94c('0x20')](_0xe6612f)['then'](function(_0xb11e48){return _0xb11e48;});}return null;};}function removeEntity(_0x5d71c0,_0xc19af2){return function(_0x1df2c7){if(_0x1df2c7){return _0x1df2c7[_0xe94c('0x21')]()[_0xe94c('0x22')](function(){_0x5d71c0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ff532,_0x230397){return function(_0x86a400){if(!_0x86a400){_0x4ff532[_0xe94c('0x14')](0x194);}return _0x86a400;};}function handleError(_0x1f5632,_0x33a155){_0x33a155=_0x33a155||0x1f4;return function(_0x2c125d){logger['error'](_0x2c125d[_0xe94c('0x23')]);if(_0x2c125d['name']){delete _0x2c125d[_0xe94c('0x24')];}_0x1f5632[_0xe94c('0x15')](_0x33a155)[_0xe94c('0x25')](_0x2c125d);};}exports[_0xe94c('0x26')]=function(_0x1ccea8,_0x1eeade){var _0x7926c1={},_0x4478e0={},_0x34f507={'count':0x0,'rows':[]};var _0x1a4b47=_['map'](db['SquareRecording'][_0xe94c('0x27')],function(_0x47e61c){return{'name':_0x47e61c[_0xe94c('0x28')],'type':_0x47e61c[_0xe94c('0x29')]['key']};});_0x4478e0['model']=_[_0xe94c('0x2a')](_0x1a4b47,_0xe94c('0x24'));_0x4478e0[_0xe94c('0x2b')]=_[_0xe94c('0x2c')](_0x1ccea8[_0xe94c('0x2b')]);_0x4478e0[_0xe94c('0x2d')]=_[_0xe94c('0x2e')](_0x4478e0['model'],_0x4478e0[_0xe94c('0x2b')]);_0x7926c1['attributes']=_[_0xe94c('0x2e')](_0x4478e0[_0xe94c('0x2f')],qs[_0xe94c('0x30')](_0x1ccea8[_0xe94c('0x2b')][_0xe94c('0x30')]));_0x7926c1[_0xe94c('0x31')]=_0x7926c1[_0xe94c('0x31')][_0xe94c('0x32')]?_0x7926c1[_0xe94c('0x31')]:_0x4478e0[_0xe94c('0x2f')];if(!_0x1ccea8[_0xe94c('0x2b')][_0xe94c('0x33')](_0xe94c('0x34'))){_0x7926c1[_0xe94c('0x19')]=qs[_0xe94c('0x19')](_0x1ccea8['query'][_0xe94c('0x19')]);_0x7926c1[_0xe94c('0x17')]=qs[_0xe94c('0x17')](_0x1ccea8[_0xe94c('0x2b')][_0xe94c('0x17')]);}_0x7926c1[_0xe94c('0x35')]=qs[_0xe94c('0x36')](_0x1ccea8[_0xe94c('0x2b')][_0xe94c('0x36')]);_0x7926c1[_0xe94c('0x37')]=qs[_0xe94c('0x2d')](_[_0xe94c('0x38')](_0x1ccea8[_0xe94c('0x2b')],_0x4478e0['filters']),_0x1a4b47);if(_0x1ccea8[_0xe94c('0x2b')][_0xe94c('0x39')]){_0x7926c1[_0xe94c('0x37')]=_['merge'](_0x7926c1[_0xe94c('0x37')],{'$or':_['map'](_0x1a4b47,function(_0x31e6c8){if(_0x31e6c8[_0xe94c('0x29')]!==_0xe94c('0x3a')){var _0x5b46ce={};_0x5b46ce[_0x31e6c8[_0xe94c('0x24')]]={'$like':'%'+_0x1ccea8[_0xe94c('0x2b')]['filter']+'%'};return _0x5b46ce;}})});}_0x7926c1=_[_0xe94c('0x3b')]({},_0x7926c1,_0x1ccea8[_0xe94c('0x3c')]);var _0x37a335={'where':_0x7926c1[_0xe94c('0x37')]};return db[_0xe94c('0x3d')][_0xe94c('0x1a')](_0x37a335)[_0xe94c('0x22')](function(_0x46d1ae){_0x34f507[_0xe94c('0x1a')]=_0x46d1ae;if(_0x1ccea8[_0xe94c('0x2b')][_0xe94c('0x3e')]){_0x7926c1[_0xe94c('0x3f')]=[{'all':!![]}];}return db[_0xe94c('0x3d')][_0xe94c('0x40')](_0x7926c1);})[_0xe94c('0x22')](function(_0x1ea345){_0x34f507['rows']=_0x1ea345;return _0x34f507;})[_0xe94c('0x22')](respondWithFilteredResult(_0x1eeade,_0x7926c1))[_0xe94c('0x41')](handleError(_0x1eeade,null));};exports['show']=function(_0x4d63bb,_0x4efc3b){var _0x3016f6={'raw':!![],'where':{'id':_0x4d63bb[_0xe94c('0x42')]['id']}},_0x2b9ce7={};_0x2b9ce7[_0xe94c('0x2f')]=_[_0xe94c('0x2c')](db[_0xe94c('0x3d')]['rawAttributes']);_0x2b9ce7[_0xe94c('0x2b')]=_[_0xe94c('0x2c')](_0x4d63bb['query']);_0x2b9ce7['filters']=_['intersection'](_0x2b9ce7[_0xe94c('0x2f')],_0x2b9ce7['query']);_0x3016f6[_0xe94c('0x31')]=_[_0xe94c('0x2e')](_0x2b9ce7[_0xe94c('0x2f')],qs[_0xe94c('0x30')](_0x4d63bb[_0xe94c('0x2b')]['fields']));_0x3016f6[_0xe94c('0x31')]=_0x3016f6[_0xe94c('0x31')][_0xe94c('0x32')]?_0x3016f6['attributes']:_0x2b9ce7['model'];if(_0x4d63bb[_0xe94c('0x2b')][_0xe94c('0x3e')]){_0x3016f6[_0xe94c('0x3f')]=[{'all':!![]}];}_0x3016f6=_['merge']({},_0x3016f6,_0x4d63bb[_0xe94c('0x3c')]);return db['SquareRecording']['find'](_0x3016f6)[_0xe94c('0x22')](handleEntityNotFound(_0x4efc3b,null))[_0xe94c('0x22')](respondWithResult(_0x4efc3b,null))[_0xe94c('0x41')](handleError(_0x4efc3b,null));};exports['create']=function(_0x569f62,_0x51d8a2){return db[_0xe94c('0x3d')][_0xe94c('0x43')](_0x569f62['body'],{})['then'](respondWithResult(_0x51d8a2,0xc9))['catch'](handleError(_0x51d8a2,null));};exports['update']=function(_0x181a8c,_0x201bbb){if(_0x181a8c[_0xe94c('0x44')]['id']){delete _0x181a8c[_0xe94c('0x44')]['id'];}return db['SquareRecording'][_0xe94c('0x45')]({'where':{'id':_0x181a8c['params']['id']}})[_0xe94c('0x22')](handleEntityNotFound(_0x201bbb,null))[_0xe94c('0x22')](saveUpdates(_0x181a8c[_0xe94c('0x44')],null))[_0xe94c('0x22')](respondWithResult(_0x201bbb,null))[_0xe94c('0x41')](handleError(_0x201bbb,null));};exports[_0xe94c('0x46')]=function(_0xbf8090,_0x222807,_0x13b3c0){var _0x3f2fd=require(_0xe94c('0x47'));var _0xbe587e=![];var _0x3e0e5b={};if(_0xbf8090[_0xe94c('0x2b')]['type']&&_0xbf8090[_0xe94c('0x2b')][_0xe94c('0x29')]===_0xe94c('0x48')){_0x3e0e5b['uniqueid']=_0xbf8090['params']['id'];}else{_0x3e0e5b['id']=_0xbf8090[_0xe94c('0x42')]['id'];}return db[_0xe94c('0x3d')]['find']({'where':_0x3e0e5b,'attributes':['id',_0xe94c('0x49'),'filename'],'raw':!![]})[_0xe94c('0x22')](handleEntityNotFound(_0x222807,null))[_0xe94c('0x22')](function(_0x27a0b5){if(_0x27a0b5){var _0x1f269e=_0x27a0b5[_0xe94c('0x49')];var _0x309001=util['format']('%s.cypher',_0x1f269e);if(fs[_0xe94c('0x4a')](_0x309001)){_0xbe587e=!![];return _0x3f2fd[_0xe94c('0x4b')](_0x309001,_0x1f269e,config[_0xe94c('0x4c')][_0xe94c('0x4d')])[_0xe94c('0x22')](function(){return _0x27a0b5;});}return _0x27a0b5;}})[_0xe94c('0x22')](function(_0x51cbc7){if(_0x51cbc7){var _0x19209e=_0x51cbc7['savePath'];if(!fs[_0xe94c('0x4a')](_0x19209e)){throw new db[(_0xe94c('0x4e'))][(_0xe94c('0x4f'))](_0xe94c('0x50'));}if(_0x51cbc7[_0xe94c('0x51')]){return _0x222807['download'](_0x19209e,_0x51cbc7['filename']+path[_0xe94c('0x52')](_0x19209e),function(){if(_0xbe587e){fs['unlink'](_0x19209e);}});}else{return _0x222807[_0xe94c('0x46')](_0x19209e,function(_0x2e3e67){if(_0xbe587e){fs['unlink'](_0x19209e);}});}}})['catch'](function(_0x1ba590){if(_0x1ba590['message']===_0xe94c('0x50')){_0x222807[_0xe94c('0x15')](0x194)['send'](_0xe94c('0x53'));}else{return handleError(_0x222807,null);}});};exports[_0xe94c('0x21')]=function(_0x304559,_0x53b5cf){return db[_0xe94c('0x3d')][_0xe94c('0x45')]({'where':{'id':_0x304559['params']['id']}})[_0xe94c('0x22')](function(_0x27db64){if(_['isNil'](_0x27db64)){throw new ReferenceError('Entity\x20not\x20found');}return _0x27db64;})[_0xe94c('0x22')](function(_0x4f656c){var _0x25bf48=_0x4f656c[_0xe94c('0x49')];logger['info'](_0xe94c('0x54'),_0x25bf48);if(!_[_0xe94c('0x55')](_0x4f656c['savePath'])&&fs[_0xe94c('0x4a')](_0x25bf48)){logger[_0xe94c('0x56')](_0xe94c('0x57')+_0x25bf48+_0xe94c('0x58'));fs[_0xe94c('0x59')](_0x25bf48);}_0x25bf48=_0x25bf48+_0xe94c('0x5a');if(!_['isNil'](_0x4f656c['savePath'])&&fs[_0xe94c('0x4a')](_0x25bf48)){logger['info'](_0xe94c('0x57')+_0x25bf48+_0xe94c('0x58'));fs[_0xe94c('0x59')](_0x25bf48);}return _0x4f656c;})[_0xe94c('0x22')](function(_0x5ec6f3){if(!_0x5ec6f3)throw new InternalError();return _0x5ec6f3[_0xe94c('0x21')]();})[_0xe94c('0x22')](function(){_0x53b5cf[_0xe94c('0x15')](0xcc)[_0xe94c('0x16')]();})[_0xe94c('0x41')](handleError(_0x53b5cf,null));}; \ No newline at end of file diff --git a/server/api/squareRecording/squareRecording.model.js b/server/api/squareRecording/squareRecording.model.js new file mode 100644 index 0000000..08dfc47 --- /dev/null +++ b/server/api/squareRecording/squareRecording.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe3da=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','lodash'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0xe3da,0x1cd));var _0xae3d=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe3da[_0x2641f9];return _0x585741;};'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'));module[_0xae3d('0xb')]=function(_0xa9a1a,_0xa54808){return _0xa9a1a[_0xae3d('0xc')](_0xae3d('0xd'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/squareRecording/squareRecording.rpc.js b/server/api/squareRecording/squareRecording.rpc.js new file mode 100644 index 0000000..260ec5e --- /dev/null +++ b/server/api/squareRecording/squareRecording.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9934=['stringify','error','code','message','CreateSquareRecording','SquareRecording','create','body','options','raw','then','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x9934,0x7c));var _0x4993=function(_0x58a4ac,_0x43fd42){_0x58a4ac=_0x58a4ac-0x0;var _0x545810=_0x9934[_0x58a4ac];return _0x545810;};'use strict';var _=require('lodash');var util=require(_0x4993('0x0'));var moment=require('moment');var BPromise=require(_0x4993('0x1'));var rs=require(_0x4993('0x2'));var fs=require('fs');var Redis=require(_0x4993('0x3'));var db=require(_0x4993('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4993('0x5'))(_0x4993('0x6'));var config=require(_0x4993('0x7'));var jayson=require(_0x4993('0x8'));var client=jayson[_0x4993('0x9')][_0x4993('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x484c87,_0x4afbb7,_0x31354d){return new BPromise(function(_0x1171aa,_0x5125dc){return client['request'](_0x484c87,_0x31354d)['then'](function(_0x390beb){logger[_0x4993('0xb')](_0x4993('0xc'),_0x4afbb7,_0x4993('0xd'));logger[_0x4993('0xe')](_0x4993('0xf'),_0x4afbb7,'request\x20sent',JSON[_0x4993('0x10')](_0x390beb));if(_0x390beb[_0x4993('0x11')]){if(_0x390beb[_0x4993('0x11')][_0x4993('0x12')]===0x1f4){logger['error'](_0x4993('0xc'),_0x4afbb7,_0x390beb[_0x4993('0x11')][_0x4993('0x13')]);return _0x5125dc(_0x390beb['error'][_0x4993('0x13')]);}logger[_0x4993('0x11')]('SquareRecording,\x20%s,\x20%s',_0x4afbb7,_0x390beb[_0x4993('0x11')][_0x4993('0x13')]);return _0x1171aa(_0x390beb[_0x4993('0x11')][_0x4993('0x13')]);}else{logger[_0x4993('0xb')](_0x4993('0xc'),_0x4afbb7,_0x4993('0xd'));_0x1171aa(_0x390beb['result'][_0x4993('0x13')]);}})['catch'](function(_0x4b4a27){logger[_0x4993('0x11')](_0x4993('0xc'),_0x4afbb7,_0x4b4a27);_0x5125dc(_0x4b4a27);});});}exports[_0x4993('0x14')]=function(_0x276282){var _0x57eefd=this;return new Promise(function(_0x5d8d07,_0x4c0172){return db[_0x4993('0x15')][_0x4993('0x16')](_0x276282[_0x4993('0x17')],{'raw':_0x276282[_0x4993('0x18')]?_0x276282[_0x4993('0x18')][_0x4993('0x19')]===undefined?!![]:![]:!![]})[_0x4993('0x1a')](function(_0x49b97a){logger[_0x4993('0xb')](_0x4993('0x14'),_0x276282);logger[_0x4993('0xe')]('CreateSquareRecording',_0x276282,JSON['stringify'](_0x49b97a));_0x5d8d07(_0x49b97a);})[_0x4993('0x1b')](function(_0x498490){logger[_0x4993('0x11')](_0x4993('0x14'),_0x498490[_0x4993('0x13')],_0x276282);_0x4c0172(_0x57eefd[_0x4993('0x11')](0x1f4,_0x498490[_0x4993('0x13')]));});});}; \ No newline at end of file diff --git a/server/api/squareReport/index.js b/server/api/squareReport/index.js new file mode 100644 index 0000000..6a98abe --- /dev/null +++ b/server/api/squareReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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','./squareReport.controller','get','index','/describe','show','post'];(function(_0x879e31,_0x139d02){var _0x3467e8=function(_0x544fc6){while(--_0x544fc6){_0x879e31['push'](_0x879e31['shift']());}};_0x3467e8(++_0x139d02);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 diff --git a/server/api/squareReport/squareReport.attributes.js b/server/api/squareReport/squareReport.attributes.js new file mode 100644 index 0000000..9012e1e --- /dev/null +++ b/server/api/squareReport/squareReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x633c=['BOOLEAN','sequelize','STRING','DATE'];(function(_0x2b78e5,_0x3126f8){var _0xa8d52d=function(_0x51fd7f){while(--_0x51fd7f){_0x2b78e5['push'](_0x2b78e5['shift']());}};_0xa8d52d(++_0x3126f8);}(_0x633c,0x1c5));var _0xc633=function(_0x21839e,_0x22f8ed){_0x21839e=_0x21839e-0x0;var _0x5cf6ba=_0x633c[_0x21839e];return _0x5cf6ba;};'use strict';var Sequelize=require(_0xc633('0x0'));module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0xc633('0x1')]},'request':{'type':Sequelize[_0xc633('0x1')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xc633('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xc633('0x1')]},'version':{'type':Sequelize[_0xc633('0x1')]},'callerid':{'type':Sequelize[_0xc633('0x1')]},'calleridname':{'type':Sequelize[_0xc633('0x1')]},'callingpres':{'type':Sequelize[_0xc633('0x1')]},'callingani2':{'type':Sequelize[_0xc633('0x1')]},'callington':{'type':Sequelize[_0xc633('0x1')]},'callingtns':{'type':Sequelize[_0xc633('0x1')]},'dnid':{'type':Sequelize[_0xc633('0x1')]},'rdnis':{'type':Sequelize[_0xc633('0x1')]},'context':{'type':Sequelize[_0xc633('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0xc633('0x1')]},'accountcode':{'type':Sequelize[_0xc633('0x1')]},'threadid':{'type':Sequelize[_0xc633('0x1')]},'project_name':{'type':Sequelize[_0xc633('0x1')]},'joinAt':{'type':Sequelize[_0xc633('0x2')]},'leaveAt':{'type':Sequelize[_0xc633('0x2')]},'bot':{'type':Sequelize[_0xc633('0x3')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/squareReport/squareReport.controller.js b/server/api/squareReport/squareReport.controller.js new file mode 100644 index 0000000..a842d18 --- /dev/null +++ b/server/api/squareReport/squareReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x54aa=['path','sox','ejs','fs-extra','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','map','SquareReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x54aa,0x1c1));var _0xa54a=function(_0x12c007,_0xe2c490){_0x12c007=_0x12c007-0x0;var _0x5bc14b=_0x54aa[_0x12c007];return _0x5bc14b;};'use strict';var emlformat=require(_0xa54a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa54a('0x1'));var jsonpatch=require(_0xa54a('0x2'));var rp=require(_0xa54a('0x3'));var moment=require(_0xa54a('0x4'));var BPromise=require(_0xa54a('0x5'));var Mustache=require(_0xa54a('0x6'));var util=require('util');var path=require(_0xa54a('0x7'));var sox=require(_0xa54a('0x8'));var csv=require('to-csv');var ejs=require(_0xa54a('0x9'));var fs=require('fs');var fs_extra=require(_0xa54a('0xa'));var _=require('lodash');var squel=require(_0xa54a('0xb'));var crypto=require('crypto');var jsforce=require(_0xa54a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa54a('0xd'));var querystring=require(_0xa54a('0xe'));var Papa=require(_0xa54a('0xf'));var Redis=require(_0xa54a('0x10'));var authService=require(_0xa54a('0x11'));var qs=require(_0xa54a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa54a('0x13'));var logger=require(_0xa54a('0x14'))('api');var utils=require(_0xa54a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa54a('0x16'));var db=require(_0xa54a('0x17'))['db'];function respondWithStatusCode(_0x2f7cf2,_0x4c9cca){_0x4c9cca=_0x4c9cca||0xcc;return function(_0x294d62){if(_0x294d62){return _0x2f7cf2['sendStatus'](_0x4c9cca);}return _0x2f7cf2[_0xa54a('0x18')](_0x4c9cca)['end']();};}function respondWithResult(_0x1f8b0e,_0x43e94f){_0x43e94f=_0x43e94f||0xc8;return function(_0x4d1da9){if(_0x4d1da9){return _0x1f8b0e[_0xa54a('0x18')](_0x43e94f)[_0xa54a('0x19')](_0x4d1da9);}};}function respondWithFilteredResult(_0x352268,_0x5580c8){return function(_0x2212bc){if(_0x2212bc){var _0x503526=typeof _0x5580c8['offset']===_0xa54a('0x1a')&&typeof _0x5580c8[_0xa54a('0x1b')]===_0xa54a('0x1a');var _0xe5e79b=_0x2212bc[_0xa54a('0x1c')];var _0x485885=_0x503526?0x0:_0x5580c8[_0xa54a('0x1d')];var _0x3d993f=_0x503526?_0x2212bc[_0xa54a('0x1c')]:_0x5580c8[_0xa54a('0x1d')]+_0x5580c8[_0xa54a('0x1b')];var _0x189b32;if(_0x3d993f>=_0xe5e79b){_0x3d993f=_0xe5e79b;_0x189b32=0xc8;}else{_0x189b32=0xce;}_0x352268[_0xa54a('0x18')](_0x189b32);return _0x352268[_0xa54a('0x1e')](_0xa54a('0x1f'),_0x485885+'-'+_0x3d993f+'/'+_0xe5e79b)['json'](_0x2212bc);}return null;};}function patchUpdates(_0x51b9b7){return function(_0x3dd310){try{jsonpatch[_0xa54a('0x20')](_0x3dd310,_0x51b9b7,!![]);}catch(_0x426a5a){return BPromise[_0xa54a('0x21')](_0x426a5a);}return _0x3dd310[_0xa54a('0x22')]();};}function saveUpdates(_0x455c74,_0x2ae94b){return function(_0x13ed15){if(_0x13ed15){return _0x13ed15[_0xa54a('0x23')](_0x455c74)[_0xa54a('0x24')](function(_0x4a9da6){return _0x4a9da6;});}return null;};}function removeEntity(_0x33e794,_0x1ebd62){return function(_0x1ef230){if(_0x1ef230){return _0x1ef230[_0xa54a('0x25')]()[_0xa54a('0x24')](function(){_0x33e794[_0xa54a('0x18')](0xcc)[_0xa54a('0x26')]();});}};}function handleEntityNotFound(_0x5b01f2,_0x3c8279){return function(_0x314e2d){if(!_0x314e2d){_0x5b01f2[_0xa54a('0x27')](0x194);}return _0x314e2d;};}function handleError(_0x109469,_0x395053){_0x395053=_0x395053||0x1f4;return function(_0x3d59e0){logger[_0xa54a('0x28')](_0x3d59e0[_0xa54a('0x29')]);if(_0x3d59e0[_0xa54a('0x2a')]){delete _0x3d59e0[_0xa54a('0x2a')];}_0x109469[_0xa54a('0x18')](_0x395053)['send'](_0x3d59e0);};}exports['index']=function(_0x6b0ba5,_0x295fd8){var _0x17aa6b={},_0x52376f={},_0x1369df={'count':0x0,'rows':[]};var _0x5958d4=_[_0xa54a('0x2b')](db[_0xa54a('0x2c')][_0xa54a('0x2d')],function(_0x4476ec){return{'name':_0x4476ec['fieldName'],'type':_0x4476ec[_0xa54a('0x2e')][_0xa54a('0x2f')]};});_0x52376f[_0xa54a('0x30')]=_[_0xa54a('0x2b')](_0x5958d4,_0xa54a('0x2a'));_0x52376f[_0xa54a('0x31')]=_[_0xa54a('0x32')](_0x6b0ba5[_0xa54a('0x31')]);_0x52376f[_0xa54a('0x33')]=_[_0xa54a('0x34')](_0x52376f[_0xa54a('0x30')],_0x52376f[_0xa54a('0x31')]);_0x17aa6b[_0xa54a('0x35')]=_[_0xa54a('0x34')](_0x52376f[_0xa54a('0x30')],qs[_0xa54a('0x36')](_0x6b0ba5[_0xa54a('0x31')][_0xa54a('0x36')]));_0x17aa6b['attributes']=_0x17aa6b[_0xa54a('0x35')][_0xa54a('0x37')]?_0x17aa6b[_0xa54a('0x35')]:_0x52376f['model'];if(!_0x6b0ba5[_0xa54a('0x31')]['hasOwnProperty'](_0xa54a('0x38'))){_0x17aa6b[_0xa54a('0x1b')]=qs['limit'](_0x6b0ba5[_0xa54a('0x31')][_0xa54a('0x1b')]);_0x17aa6b[_0xa54a('0x1d')]=qs[_0xa54a('0x1d')](_0x6b0ba5[_0xa54a('0x31')]['offset']);}_0x17aa6b[_0xa54a('0x39')]=qs[_0xa54a('0x3a')](_0x6b0ba5[_0xa54a('0x31')]['sort']);_0x17aa6b['where']=qs[_0xa54a('0x33')](_[_0xa54a('0x3b')](_0x6b0ba5[_0xa54a('0x31')],_0x52376f[_0xa54a('0x33')]),_0x5958d4);if(_0x6b0ba5[_0xa54a('0x31')]['filter']){_0x17aa6b[_0xa54a('0x3c')]=_[_0xa54a('0x3d')](_0x17aa6b[_0xa54a('0x3c')],{'$or':_[_0xa54a('0x2b')](_0x5958d4,function(_0x512d1d){if(_0x512d1d[_0xa54a('0x2e')]!==_0xa54a('0x3e')){var _0x287604={};_0x287604[_0x512d1d[_0xa54a('0x2a')]]={'$like':'%'+_0x6b0ba5['query'][_0xa54a('0x3f')]+'%'};return _0x287604;}})});}_0x17aa6b=_[_0xa54a('0x3d')]({},_0x17aa6b,_0x6b0ba5[_0xa54a('0x40')]);var _0x3f542f={'where':_0x17aa6b[_0xa54a('0x3c')]};return db[_0xa54a('0x2c')]['count'](_0x3f542f)['then'](function(_0x29af18){_0x1369df['count']=_0x29af18;if(_0x6b0ba5[_0xa54a('0x31')][_0xa54a('0x41')]){_0x17aa6b[_0xa54a('0x42')]=[{'all':!![]}];}return db[_0xa54a('0x2c')][_0xa54a('0x43')](_0x17aa6b);})['then'](function(_0x577a48){_0x1369df[_0xa54a('0x44')]=_0x577a48;return _0x1369df;})[_0xa54a('0x24')](respondWithFilteredResult(_0x295fd8,_0x17aa6b))['catch'](handleError(_0x295fd8,null));};exports[_0xa54a('0x45')]=function(_0x21181b,_0x1091da){var _0x317015={'raw':!![],'where':{'id':_0x21181b[_0xa54a('0x46')]['id']}},_0x277936={};_0x277936[_0xa54a('0x30')]=_[_0xa54a('0x32')](db[_0xa54a('0x2c')][_0xa54a('0x2d')]);_0x277936[_0xa54a('0x31')]=_[_0xa54a('0x32')](_0x21181b[_0xa54a('0x31')]);_0x277936[_0xa54a('0x33')]=_[_0xa54a('0x34')](_0x277936['model'],_0x277936[_0xa54a('0x31')]);_0x317015[_0xa54a('0x35')]=_[_0xa54a('0x34')](_0x277936[_0xa54a('0x30')],qs[_0xa54a('0x36')](_0x21181b[_0xa54a('0x31')][_0xa54a('0x36')]));_0x317015[_0xa54a('0x35')]=_0x317015['attributes'][_0xa54a('0x37')]?_0x317015['attributes']:_0x277936[_0xa54a('0x30')];if(_0x21181b[_0xa54a('0x31')][_0xa54a('0x41')]){_0x317015[_0xa54a('0x42')]=[{'all':!![]}];}_0x317015=_[_0xa54a('0x3d')]({},_0x317015,_0x21181b['options']);return db[_0xa54a('0x2c')][_0xa54a('0x47')](_0x317015)['then'](handleEntityNotFound(_0x1091da,null))[_0xa54a('0x24')](respondWithResult(_0x1091da,null))[_0xa54a('0x48')](handleError(_0x1091da,null));};exports[_0xa54a('0x49')]=function(_0x749d2b,_0xca62a6){return db[_0xa54a('0x2c')][_0xa54a('0x49')](_0x749d2b[_0xa54a('0x4a')],{})[_0xa54a('0x24')](respondWithResult(_0xca62a6,0xc9))[_0xa54a('0x48')](handleError(_0xca62a6,null));};exports['update']=function(_0x2a05b8,_0x4baa75){if(_0x2a05b8[_0xa54a('0x4a')]['id']){delete _0x2a05b8['body']['id'];}return db[_0xa54a('0x2c')][_0xa54a('0x47')]({'where':{'id':_0x2a05b8[_0xa54a('0x46')]['id']}})['then'](handleEntityNotFound(_0x4baa75,null))[_0xa54a('0x24')](saveUpdates(_0x2a05b8[_0xa54a('0x4a')],null))[_0xa54a('0x24')](respondWithResult(_0x4baa75,null))[_0xa54a('0x48')](handleError(_0x4baa75,null));};exports[_0xa54a('0x25')]=function(_0x526f27,_0x4f2159){return db[_0xa54a('0x2c')][_0xa54a('0x47')]({'where':{'id':_0x526f27[_0xa54a('0x46')]['id']}})[_0xa54a('0x24')](handleEntityNotFound(_0x4f2159,null))[_0xa54a('0x24')](removeEntity(_0x4f2159,null))['catch'](handleError(_0x4f2159,null));};exports[_0xa54a('0x4b')]=function(_0x49e963,_0x122b91){return db['SquareReport'][_0xa54a('0x4b')]()['then'](respondWithResult(_0x122b91,null))[_0xa54a('0x48')](handleError(_0x122b91,null));}; \ No newline at end of file diff --git a/server/api/squareReport/squareReport.model.js b/server/api/squareReport/squareReport.model.js new file mode 100644 index 0000000..5110438 --- /dev/null +++ b/server/api/squareReport/squareReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x81f5=['moment','request-promise','path','./squareReport.attributes','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api'];(function(_0xc7d42d,_0x27afe7){var _0x1f5389=function(_0x8f0a0a){while(--_0x8f0a0a){_0xc7d42d['push'](_0xc7d42d['shift']());}};_0x1f5389(++_0x27afe7);}(_0x81f5,0xec));var _0x581f=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x81f5[_0x49ca18];return _0x145d54;};'use strict';var _=require(_0x581f('0x0'));var util=require(_0x581f('0x1'));var logger=require(_0x581f('0x2'))(_0x581f('0x3'));var moment=require(_0x581f('0x4'));var BPromise=require('bluebird');var rp=require(_0x581f('0x5'));var fs=require('fs');var path=require(_0x581f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x581f('0x7'));module['exports']=function(_0x4861ba,_0x4bdd78){return _0x4861ba[_0x581f('0x8')](_0x581f('0x9'),attributes,{'tableName':_0x581f('0xa'),'paranoid':![],'indexes':[{'name':_0x581f('0xb'),'fields':[_0x581f('0xc'),_0x581f('0xd')]},{'name':_0x581f('0xe'),'fields':[_0x581f('0xe')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/squareReport/squareReport.rpc.js b/server/api/squareReport/squareReport.rpc.js new file mode 100644 index 0000000..afde7af --- /dev/null +++ b/server/api/squareReport/squareReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1b27=['moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','request','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateSquareReport','SquareReport','create','body','options','raw','then','catch','UpdateSquareReport','where','limit','lodash','util'];(function(_0x162f3d,_0x431654){var _0x2f5437=function(_0x37483f){while(--_0x37483f){_0x162f3d['push'](_0x162f3d['shift']());}};_0x2f5437(++_0x431654);}(_0x1b27,0x14e));var _0x71b2=function(_0x2a9461,_0x25ecf8){_0x2a9461=_0x2a9461-0x0;var _0x15b1f0=_0x1b27[_0x2a9461];return _0x15b1f0;};'use strict';var _=require(_0x71b2('0x0'));var util=require(_0x71b2('0x1'));var moment=require(_0x71b2('0x2'));var BPromise=require(_0x71b2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x71b2('0x4'));var db=require(_0x71b2('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x71b2('0x6'));var config=require(_0x71b2('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x22e912,_0xa9dac2,_0x100945){return new BPromise(function(_0xc4de6b,_0x4dc169){return client[_0x71b2('0x8')](_0x22e912,_0x100945)['then'](function(_0x5a7a07){logger[_0x71b2('0x9')](_0x71b2('0xa'),_0xa9dac2,'request\x20sent');logger[_0x71b2('0xb')](_0x71b2('0xc'),_0xa9dac2,'request\x20sent',JSON[_0x71b2('0xd')](_0x5a7a07));if(_0x5a7a07[_0x71b2('0xe')]){if(_0x5a7a07['error'][_0x71b2('0xf')]===0x1f4){logger[_0x71b2('0xe')]('SquareReport,\x20%s,\x20%s',_0xa9dac2,_0x5a7a07[_0x71b2('0xe')][_0x71b2('0x10')]);return _0x4dc169(_0x5a7a07['error'][_0x71b2('0x10')]);}logger[_0x71b2('0xe')](_0x71b2('0xa'),_0xa9dac2,_0x5a7a07[_0x71b2('0xe')]['message']);return _0xc4de6b(_0x5a7a07['error'][_0x71b2('0x10')]);}else{logger[_0x71b2('0x9')](_0x71b2('0xa'),_0xa9dac2,'request\x20sent');_0xc4de6b(_0x5a7a07['result']['message']);}})['catch'](function(_0x575719){logger[_0x71b2('0xe')](_0x71b2('0xa'),_0xa9dac2,_0x575719);_0x4dc169(_0x575719);});});}exports[_0x71b2('0x11')]=function(_0x3b4bd0){var _0x3e906f=this;return new Promise(function(_0x50dc52,_0x3e2568){return db[_0x71b2('0x12')][_0x71b2('0x13')](_0x3b4bd0[_0x71b2('0x14')],{'raw':_0x3b4bd0[_0x71b2('0x15')]?_0x3b4bd0[_0x71b2('0x15')][_0x71b2('0x16')]===undefined?!![]:![]:!![]})[_0x71b2('0x17')](function(_0x629550){logger[_0x71b2('0x9')](_0x71b2('0x11'),_0x3b4bd0);logger['debug']('CreateSquareReport',_0x3b4bd0,JSON[_0x71b2('0xd')](_0x629550));_0x50dc52(_0x629550);})[_0x71b2('0x18')](function(_0x5c971d){logger['error']('CreateSquareReport',_0x5c971d[_0x71b2('0x10')],_0x3b4bd0);_0x3e2568(_0x3e906f[_0x71b2('0xe')](0x1f4,_0x5c971d[_0x71b2('0x10')]));});});};exports[_0x71b2('0x19')]=function(_0x20efb3){var _0x12f56f=this;return new Promise(function(_0x26de16,_0x530cff){return db['SquareReport']['update'](_0x20efb3[_0x71b2('0x14')],{'raw':_0x20efb3[_0x71b2('0x15')]?_0x20efb3[_0x71b2('0x15')][_0x71b2('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20efb3[_0x71b2('0x15')]?_0x20efb3[_0x71b2('0x15')][_0x71b2('0x1a')]||null:null,'attributes':_0x20efb3[_0x71b2('0x15')]?_0x20efb3[_0x71b2('0x15')]['attributes']||null:null,'limit':_0x20efb3['options']?_0x20efb3[_0x71b2('0x15')][_0x71b2('0x1b')]||null:null})[_0x71b2('0x17')](function(_0x32f3da){logger[_0x71b2('0x9')](_0x71b2('0x19'),_0x20efb3);logger[_0x71b2('0xb')](_0x71b2('0x19'),_0x20efb3,JSON[_0x71b2('0xd')](_0x32f3da));_0x26de16(_0x32f3da);})[_0x71b2('0x18')](function(_0x159763){logger[_0x71b2('0xe')](_0x71b2('0x19'),_0x159763[_0x71b2('0x10')],_0x20efb3);_0x530cff(_0x12f56f[_0x71b2('0xe')](0x1f4,_0x159763[_0x71b2('0x10')]));});});}; \ No newline at end of file diff --git a/server/api/squareReportDetail/index.js b/server/api/squareReportDetail/index.js new file mode 100644 index 0000000..a9bb203 --- /dev/null +++ b/server/api/squareReportDetail/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x66d3=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','update','delete','destroy','exports','multer','util'];(function(_0x4e8c42,_0x36dc88){var _0x22952f=function(_0x31a013){while(--_0x31a013){_0x4e8c42['push'](_0x4e8c42['shift']());}};_0x22952f(++_0x36dc88);}(_0x66d3,0x106));var _0x366d=function(_0x43d31b,_0x1f6c4c){_0x43d31b=_0x43d31b-0x0;var _0x3b7e15=_0x66d3[_0x43d31b];return _0x3b7e15;};'use strict';var multer=require(_0x366d('0x0'));var util=require(_0x366d('0x1'));var path=require(_0x366d('0x2'));var timeout=require('connect-timeout');var express=require(_0x366d('0x3'));var router=express[_0x366d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x366d('0x5'));var interaction=require(_0x366d('0x6'));var config=require(_0x366d('0x7'));var controller=require(_0x366d('0x8'));router[_0x366d('0x9')]('/',auth['isAuthenticated'](),controller[_0x366d('0xa')]);router[_0x366d('0x9')](_0x366d('0xb'),auth[_0x366d('0xc')](),controller[_0x366d('0xd')]);router[_0x366d('0x9')](_0x366d('0xe'),auth[_0x366d('0xc')](),controller[_0x366d('0xf')]);router[_0x366d('0x10')]('/',auth[_0x366d('0xc')](),controller[_0x366d('0x11')]);router['put']('/:id',auth[_0x366d('0xc')](),controller[_0x366d('0x12')]);router[_0x366d('0x13')](_0x366d('0xe'),auth[_0x366d('0xc')](),controller[_0x366d('0x14')]);module[_0x366d('0x15')]=router; \ No newline at end of file diff --git a/server/api/squareReportDetail/squareReportDetail.attributes.js b/server/api/squareReportDetail/squareReportDetail.attributes.js new file mode 100644 index 0000000..1a08011 --- /dev/null +++ b/server/api/squareReportDetail/squareReportDetail.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4b23=['STRING','TEXT','sequelize'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0x4b23,0xb6));var _0x34b2=function(_0x2d61b2,_0x142947){_0x2d61b2=_0x2d61b2-0x0;var _0x12df89=_0x4b23[_0x2d61b2];return _0x12df89;};'use strict';var Sequelize=require(_0x34b2('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x34b2('0x1')]},'node':{'type':Sequelize[_0x34b2('0x1')]},'application':{'type':Sequelize[_0x34b2('0x1')]},'data':{'type':Sequelize[_0x34b2('0x2')]},'project_name':{'type':Sequelize[_0x34b2('0x1')]},'callerid':{'type':Sequelize[_0x34b2('0x1')]}}; \ No newline at end of file diff --git a/server/api/squareReportDetail/squareReportDetail.controller.js b/server/api/squareReportDetail/squareReportDetail.controller.js new file mode 100644 index 0000000..6992346 --- /dev/null +++ b/server/api/squareReportDetail/squareReportDetail.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x52de=['limit','count','offset','set','Content-Range','apply','save','destroy','error','stack','name','send','map','SquareDetailsReport','rawAttributes','fieldName','type','model','keys','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined'];(function(_0x51b14d,_0x2d7ac5){var _0x3af577=function(_0x4ef060){while(--_0x4ef060){_0x51b14d['push'](_0x51b14d['shift']());}};_0x3af577(++_0x2d7ac5);}(_0x52de,0x119));var _0xe52d=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x52de[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xe52d('0x0'));var rimraf=require(_0xe52d('0x1'));var zipdir=require(_0xe52d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe52d('0x3'));var moment=require(_0xe52d('0x4'));var BPromise=require(_0xe52d('0x5'));var Mustache=require(_0xe52d('0x6'));var util=require('util');var path=require(_0xe52d('0x7'));var sox=require(_0xe52d('0x8'));var csv=require('to-csv');var ejs=require(_0xe52d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe52d('0xa'));var squel=require(_0xe52d('0xb'));var crypto=require(_0xe52d('0xc'));var jsforce=require(_0xe52d('0xd'));var deskjs=require(_0xe52d('0xe'));var toCsv=require(_0xe52d('0xf'));var querystring=require(_0xe52d('0x10'));var Papa=require(_0xe52d('0x11'));var Redis=require('ioredis');var authService=require(_0xe52d('0x12'));var qs=require(_0xe52d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe52d('0x14'));var logger=require(_0xe52d('0x15'))(_0xe52d('0x16'));var utils=require(_0xe52d('0x17'));var config=require(_0xe52d('0x18'));var licenseUtil=require(_0xe52d('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49a7f0,_0x107688){_0x107688=_0x107688||0xcc;return function(_0x192de5){if(_0x192de5){return _0x49a7f0[_0xe52d('0x1a')](_0x107688);}return _0x49a7f0[_0xe52d('0x1b')](_0x107688)[_0xe52d('0x1c')]();};}function respondWithResult(_0x2468ea,_0x407cd4){_0x407cd4=_0x407cd4||0xc8;return function(_0x23020b){if(_0x23020b){return _0x2468ea[_0xe52d('0x1b')](_0x407cd4)[_0xe52d('0x1d')](_0x23020b);}};}function respondWithFilteredResult(_0x4c8a6c,_0x12c009){return function(_0x19346d){if(_0x19346d){var _0x2148b1=typeof _0x12c009['offset']===_0xe52d('0x1e')&&typeof _0x12c009[_0xe52d('0x1f')]===_0xe52d('0x1e');var _0x9a12b7=_0x19346d[_0xe52d('0x20')];var _0x6f28d9=_0x2148b1?0x0:_0x12c009[_0xe52d('0x21')];var _0x3c7d7e=_0x2148b1?_0x19346d[_0xe52d('0x20')]:_0x12c009[_0xe52d('0x21')]+_0x12c009[_0xe52d('0x1f')];var _0x50cc43;if(_0x3c7d7e>=_0x9a12b7){_0x3c7d7e=_0x9a12b7;_0x50cc43=0xc8;}else{_0x50cc43=0xce;}_0x4c8a6c[_0xe52d('0x1b')](_0x50cc43);return _0x4c8a6c[_0xe52d('0x22')](_0xe52d('0x23'),_0x6f28d9+'-'+_0x3c7d7e+'/'+_0x9a12b7)[_0xe52d('0x1d')](_0x19346d);}return null;};}function patchUpdates(_0x15e278){return function(_0x33a816){try{jsonpatch[_0xe52d('0x24')](_0x33a816,_0x15e278,!![]);}catch(_0x12560c){return BPromise['reject'](_0x12560c);}return _0x33a816[_0xe52d('0x25')]();};}function saveUpdates(_0x1aef7c,_0x4e581d){return function(_0x257a18){if(_0x257a18){return _0x257a18['update'](_0x1aef7c)['then'](function(_0xc67ef7){return _0xc67ef7;});}return null;};}function removeEntity(_0x28752a,_0x123097){return function(_0x5c5625){if(_0x5c5625){return _0x5c5625[_0xe52d('0x26')]()['then'](function(){_0x28752a[_0xe52d('0x1b')](0xcc)[_0xe52d('0x1c')]();});}};}function handleEntityNotFound(_0x53fbac,_0x1ab7f0){return function(_0x3636dc){if(!_0x3636dc){_0x53fbac[_0xe52d('0x1a')](0x194);}return _0x3636dc;};}function handleError(_0x448ea4,_0x3d24cc){_0x3d24cc=_0x3d24cc||0x1f4;return function(_0x15d356){logger[_0xe52d('0x27')](_0x15d356[_0xe52d('0x28')]);if(_0x15d356['name']){delete _0x15d356[_0xe52d('0x29')];}_0x448ea4[_0xe52d('0x1b')](_0x3d24cc)[_0xe52d('0x2a')](_0x15d356);};}exports['index']=function(_0x3ebffa,_0x3110cd){var _0x705b82={},_0x3329e0={},_0x37a5ec={'count':0x0,'rows':[]};var _0x454573=_[_0xe52d('0x2b')](db[_0xe52d('0x2c')][_0xe52d('0x2d')],function(_0x5e8ee8){return{'name':_0x5e8ee8[_0xe52d('0x2e')],'type':_0x5e8ee8[_0xe52d('0x2f')]['key']};});_0x3329e0[_0xe52d('0x30')]=_['map'](_0x454573,_0xe52d('0x29'));_0x3329e0['query']=_[_0xe52d('0x31')](_0x3ebffa['query']);_0x3329e0['filters']=_[_0xe52d('0x32')](_0x3329e0[_0xe52d('0x30')],_0x3329e0['query']);_0x705b82[_0xe52d('0x33')]=_[_0xe52d('0x32')](_0x3329e0[_0xe52d('0x30')],qs[_0xe52d('0x34')](_0x3ebffa[_0xe52d('0x35')]['fields']));_0x705b82['attributes']=_0x705b82[_0xe52d('0x33')][_0xe52d('0x36')]?_0x705b82[_0xe52d('0x33')]:_0x3329e0[_0xe52d('0x30')];if(!_0x3ebffa['query'][_0xe52d('0x37')]('nolimit')){_0x705b82[_0xe52d('0x1f')]=qs[_0xe52d('0x1f')](_0x3ebffa[_0xe52d('0x35')][_0xe52d('0x1f')]);_0x705b82[_0xe52d('0x21')]=qs[_0xe52d('0x21')](_0x3ebffa['query']['offset']);}_0x705b82[_0xe52d('0x38')]=qs[_0xe52d('0x39')](_0x3ebffa[_0xe52d('0x35')][_0xe52d('0x39')]);_0x705b82[_0xe52d('0x3a')]=qs['filters'](_[_0xe52d('0x3b')](_0x3ebffa[_0xe52d('0x35')],_0x3329e0[_0xe52d('0x3c')]),_0x454573);if(_0x3ebffa['query'][_0xe52d('0x3d')]){_0x705b82[_0xe52d('0x3a')]=_[_0xe52d('0x3e')](_0x705b82[_0xe52d('0x3a')],{'$or':_[_0xe52d('0x2b')](_0x454573,function(_0x784d7f){if(_0x784d7f[_0xe52d('0x2f')]!==_0xe52d('0x3f')){var _0x23842f={};_0x23842f[_0x784d7f['name']]={'$like':'%'+_0x3ebffa[_0xe52d('0x35')][_0xe52d('0x3d')]+'%'};return _0x23842f;}})});}_0x705b82=_[_0xe52d('0x3e')]({},_0x705b82,_0x3ebffa[_0xe52d('0x40')]);var _0x3f2c93={'where':_0x705b82[_0xe52d('0x3a')]};return db[_0xe52d('0x2c')][_0xe52d('0x20')](_0x3f2c93)[_0xe52d('0x41')](function(_0x44ad2e){_0x37a5ec[_0xe52d('0x20')]=_0x44ad2e;if(_0x3ebffa['query'][_0xe52d('0x42')]){_0x705b82[_0xe52d('0x43')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0xe52d('0x44')](_0x705b82);})['then'](function(_0x1ef696){_0x37a5ec[_0xe52d('0x45')]=_0x1ef696;return _0x37a5ec;})[_0xe52d('0x41')](respondWithFilteredResult(_0x3110cd,_0x705b82))[_0xe52d('0x46')](handleError(_0x3110cd,null));};exports[_0xe52d('0x47')]=function(_0x492247,_0x47319a){var _0x344dc8={'raw':!![],'where':{'id':_0x492247[_0xe52d('0x48')]['id']}},_0x44068c={};_0x44068c['model']=_['keys'](db['SquareDetailsReport'][_0xe52d('0x2d')]);_0x44068c[_0xe52d('0x35')]=_[_0xe52d('0x31')](_0x492247[_0xe52d('0x35')]);_0x44068c[_0xe52d('0x3c')]=_[_0xe52d('0x32')](_0x44068c[_0xe52d('0x30')],_0x44068c['query']);_0x344dc8['attributes']=_[_0xe52d('0x32')](_0x44068c[_0xe52d('0x30')],qs[_0xe52d('0x34')](_0x492247['query'][_0xe52d('0x34')]));_0x344dc8[_0xe52d('0x33')]=_0x344dc8[_0xe52d('0x33')][_0xe52d('0x36')]?_0x344dc8[_0xe52d('0x33')]:_0x44068c['model'];if(_0x492247[_0xe52d('0x35')]['includeAll']){_0x344dc8['include']=[{'all':!![]}];}_0x344dc8=_[_0xe52d('0x3e')]({},_0x344dc8,_0x492247[_0xe52d('0x40')]);return db['SquareDetailsReport'][_0xe52d('0x49')](_0x344dc8)[_0xe52d('0x41')](handleEntityNotFound(_0x47319a,null))[_0xe52d('0x41')](respondWithResult(_0x47319a,null))[_0xe52d('0x46')](handleError(_0x47319a,null));};exports[_0xe52d('0x4a')]=function(_0x149321,_0x73a082){return db[_0xe52d('0x2c')][_0xe52d('0x4a')](_0x149321[_0xe52d('0x4b')],{})[_0xe52d('0x41')](respondWithResult(_0x73a082,0xc9))[_0xe52d('0x46')](handleError(_0x73a082,null));};exports[_0xe52d('0x4c')]=function(_0x3b516d,_0x5818df){if(_0x3b516d[_0xe52d('0x4b')]['id']){delete _0x3b516d[_0xe52d('0x4b')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x3b516d['params']['id']}})[_0xe52d('0x41')](handleEntityNotFound(_0x5818df,null))[_0xe52d('0x41')](saveUpdates(_0x3b516d[_0xe52d('0x4b')],null))[_0xe52d('0x41')](respondWithResult(_0x5818df,null))[_0xe52d('0x46')](handleError(_0x5818df,null));};exports[_0xe52d('0x26')]=function(_0x65601e,_0x3c2989){return db[_0xe52d('0x2c')][_0xe52d('0x49')]({'where':{'id':_0x65601e[_0xe52d('0x48')]['id']}})[_0xe52d('0x41')](handleEntityNotFound(_0x3c2989,null))['then'](removeEntity(_0x3c2989,null))[_0xe52d('0x46')](handleError(_0x3c2989,null));};exports[_0xe52d('0x4d')]=function(_0x27f04a,_0xd07cbc){return db[_0xe52d('0x2c')][_0xe52d('0x4d')]()['then'](respondWithResult(_0xd07cbc,null))[_0xe52d('0x46')](handleError(_0xd07cbc,null));}; \ No newline at end of file diff --git a/server/api/squareReportDetail/squareReportDetail.model.js b/server/api/squareReportDetail/squareReportDetail.model.js new file mode 100644 index 0000000..94e1071 --- /dev/null +++ b/server/api/squareReportDetail/squareReportDetail.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xff9d=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','lodash','util'];(function(_0x100f34,_0x15422f){var _0x422458=function(_0x2596cf){while(--_0x2596cf){_0x100f34['push'](_0x100f34['shift']());}};_0x422458(++_0x15422f);}(_0xff9d,0x11c));var _0xdff9=function(_0x419fff,_0x2827cd){_0x419fff=_0x419fff-0x0;var _0x57bb43=_0xff9d[_0x419fff];return _0x57bb43;};'use strict';var _=require(_0xdff9('0x0'));var util=require(_0xdff9('0x1'));var logger=require(_0xdff9('0x2'))(_0xdff9('0x3'));var moment=require(_0xdff9('0x4'));var BPromise=require(_0xdff9('0x5'));var rp=require(_0xdff9('0x6'));var fs=require('fs');var path=require(_0xdff9('0x7'));var rimraf=require('rimraf');var config=require(_0xdff9('0x8'));var attributes=require(_0xdff9('0x9'));module[_0xdff9('0xa')]=function(_0x400d59,_0x39f13b){return _0x400d59['define'](_0xdff9('0xb'),attributes,{'tableName':_0xdff9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/squareReportDetail/squareReportDetail.rpc.js b/server/api/squareReportDetail/squareReportDetail.rpc.js new file mode 100644 index 0000000..9b09152 --- /dev/null +++ b/server/api/squareReportDetail/squareReportDetail.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfef3=['../../config/environment','jayson/promise','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateSquareDetailsReport','SquareDetailsReport','body','options','raw','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x4246bd,_0xdab764){var _0x20e0b7=function(_0x402785){while(--_0x402785){_0x4246bd['push'](_0x4246bd['shift']());}};_0x20e0b7(++_0xdab764);}(_0xfef3,0x118));var _0x3fef=function(_0x3aa48e,_0x22eb8d){_0x3aa48e=_0x3aa48e-0x0;var _0x26f857=_0xfef3[_0x3aa48e];return _0x26f857;};'use strict';var _=require(_0x3fef('0x0'));var util=require('util');var moment=require(_0x3fef('0x1'));var BPromise=require('bluebird');var rs=require(_0x3fef('0x2'));var fs=require('fs');var Redis=require(_0x3fef('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3fef('0x4'));var logger=require(_0x3fef('0x5'))('rpc');var config=require(_0x3fef('0x6'));var jayson=require(_0x3fef('0x7'));var client=jayson['client'][_0x3fef('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5f5b72,_0x800850,_0x33e00a){return new BPromise(function(_0x1fffc5,_0x41960c){return client[_0x3fef('0x9')](_0x5f5b72,_0x33e00a)[_0x3fef('0xa')](function(_0x31c30f){logger[_0x3fef('0xb')](_0x3fef('0xc'),_0x800850,_0x3fef('0xd'));logger[_0x3fef('0xe')](_0x3fef('0xf'),_0x800850,'request\x20sent',JSON[_0x3fef('0x10')](_0x31c30f));if(_0x31c30f[_0x3fef('0x11')]){if(_0x31c30f[_0x3fef('0x11')]['code']===0x1f4){logger[_0x3fef('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0x800850,_0x31c30f[_0x3fef('0x11')][_0x3fef('0x12')]);return _0x41960c(_0x31c30f[_0x3fef('0x11')]['message']);}logger[_0x3fef('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0x800850,_0x31c30f[_0x3fef('0x11')][_0x3fef('0x12')]);return _0x1fffc5(_0x31c30f['error'][_0x3fef('0x12')]);}else{logger[_0x3fef('0xb')](_0x3fef('0xc'),_0x800850,_0x3fef('0xd'));_0x1fffc5(_0x31c30f[_0x3fef('0x13')][_0x3fef('0x12')]);}})['catch'](function(_0x1cbdbb){logger[_0x3fef('0x11')](_0x3fef('0xc'),_0x800850,_0x1cbdbb);_0x41960c(_0x1cbdbb);});});}exports[_0x3fef('0x14')]=function(_0x1613ad){var _0xaa0ae3=this;return new Promise(function(_0x53d993,_0x36669d){return db[_0x3fef('0x15')]['create'](_0x1613ad[_0x3fef('0x16')],{'raw':_0x1613ad[_0x3fef('0x17')]?_0x1613ad[_0x3fef('0x17')][_0x3fef('0x18')]===undefined?!![]:![]:!![]})[_0x3fef('0xa')](function(_0x2b5226){logger[_0x3fef('0xb')](_0x3fef('0x14'),_0x1613ad);logger[_0x3fef('0xe')](_0x3fef('0x14'),_0x1613ad,JSON[_0x3fef('0x10')](_0x2b5226));_0x53d993(_0x2b5226);})[_0x3fef('0x19')](function(_0x2eb578){logger[_0x3fef('0x11')](_0x3fef('0x14'),_0x2eb578['message'],_0x1613ad);_0x36669d(_0xaa0ae3['error'](0x1f4,_0x2eb578['message']));});});}; \ No newline at end of file diff --git a/server/api/system/index.js b/server/api/system/index.js new file mode 100644 index 0000000..505d342 --- /dev/null +++ b/server/api/system/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3e44=['index','/process/:pid/kill','exports','express','Router','get','isAuthenticated'];(function(_0x4e349e,_0x92589f){var _0x20abd3=function(_0x29837f){while(--_0x29837f){_0x4e349e['push'](_0x4e349e['shift']());}};_0x20abd3(++_0x92589f);}(_0x3e44,0x6c));var _0x43e4=function(_0x362bed,_0x40d4c3){_0x362bed=_0x362bed-0x0;var _0x197fd6=_0x3e44[_0x362bed];return _0x197fd6;};'use strict';var express=require(_0x43e4('0x0'));var router=express[_0x43e4('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0x43e4('0x2')]('/',auth[_0x43e4('0x3')](),controller[_0x43e4('0x4')]);router[_0x43e4('0x2')](_0x43e4('0x5'),auth[_0x43e4('0x3')](),controller['killProcess']);module[_0x43e4('0x6')]=router; \ No newline at end of file diff --git a/server/api/system/system.controller.js b/server/api/system/system.controller.js new file mode 100644 index 0000000..f140a15 --- /dev/null +++ b/server/api/system/system.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdd40=['catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','../../config/logger','api','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','send','index','getAllData','status','json'];(function(_0x2a0a56,_0x209e23){var _0x3b959e=function(_0x91be9d){while(--_0x91be9d){_0x2a0a56['push'](_0x2a0a56['shift']());}};_0x3b959e(++_0x209e23);}(_0xdd40,0x151));var _0x0dd4=function(_0xa9e64b,_0x4701f4){_0xa9e64b=_0xa9e64b-0x0;var _0x389dc9=_0xdd40[_0xa9e64b];return _0x389dc9;};'use strict';var info=require(_0x0dd4('0x0'));var exec=require(_0x0dd4('0x1'))[_0x0dd4('0x2')];var logger=require(_0x0dd4('0x3'))(_0x0dd4('0x4'));var util=require('util');var BPromise=require('bluebird');var _=require(_0x0dd4('0x5'));function handleError(_0x109c7e,_0x44cfc0,_0x73c505){_0x44cfc0=_0x44cfc0||0x1f4;return function(_0x40c72c){logger[_0x0dd4('0x6')](_0x0dd4('0x7'),_0x73c505,_0x44cfc0,util[_0x0dd4('0x8')](_0x40c72c,{'showHidden':![],'depth':null}));delete _0x40c72c['name'];_0x109c7e['status'](_0x44cfc0)[_0x0dd4('0x9')](_0x40c72c);};}exports[_0x0dd4('0xa')]=function(_0x5d1d68,_0x20a518){return info[_0x0dd4('0xb')]()['then'](function(_0x4b2b3a){return _0x20a518[_0x0dd4('0xc')](0xc8)[_0x0dd4('0xd')](_0x4b2b3a);})[_0x0dd4('0xe')](function(_0x3e54a4){return _0x20a518[_0x0dd4('0xc')](0x1f4)[_0x0dd4('0xd')](_0x3e54a4);});};exports[_0x0dd4('0xf')]=function(_0x67803,_0x50053e){var _0x18d3c7=[_0x0dd4('0x10')];return new BPromise(function(_0x4fbca2,_0x5ec7af){return exec(util[_0x0dd4('0x11')](_0x0dd4('0x12'),_0x67803[_0x0dd4('0x13')][_0x0dd4('0x14')]),function(_0x650f76,_0x1de3fd,_0x46668f){if(_0x650f76){return _0x5ec7af(_0x650f76);}return _0x4fbca2(_0x1de3fd);});})['then'](function(_0x58dcf5){var _0x250cd9=![];var _0xae26c6=_0x58dcf5['split'](/\n/);for(var _0x43e263=0x0,_0x44dd52=_0x18d3c7[_0x0dd4('0x15')];_0x43e263<_0x44dd52,_0x250cd9===![];_0x43e263+=0x1){if(_0x58dcf5[_0x0dd4('0x16')](_0x18d3c7[_0x43e263])>=0x0){_0x250cd9=!![];}}if(!_0x250cd9){throw new Error(util[_0x0dd4('0x11')](_0x0dd4('0x17'),_0x67803['params'][_0x0dd4('0x14')]));}process[_0x0dd4('0x18')](_0x67803['params'][_0x0dd4('0x14')],_0x0dd4('0x19'));return _0x50053e[_0x0dd4('0xc')](0xc8)[_0x0dd4('0xd')]({'message':util[_0x0dd4('0x11')](_0x0dd4('0x1a'),_0x67803[_0x0dd4('0x13')][_0x0dd4('0x14')])});})[_0x0dd4('0xe')](handleError(_0x50053e,null,_0x0dd4('0xf')));}; \ No newline at end of file diff --git a/server/api/tag/index.js b/server/api/tag/index.js new file mode 100644 index 0000000..aa8a9e0 --- /dev/null +++ b/server/api/tag/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7e0c=['/:id','isAuthenticated','show','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get'];(function(_0x3ec71b,_0x1d3472){var _0x4ed32b=function(_0x381497){while(--_0x381497){_0x3ec71b['push'](_0x3ec71b['shift']());}};_0x4ed32b(++_0x1d3472);}(_0x7e0c,0xdf));var _0xc7e0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e0c[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc7e0('0x0'));var util=require(_0xc7e0('0x1'));var path=require(_0xc7e0('0x2'));var timeout=require(_0xc7e0('0x3'));var express=require(_0xc7e0('0x4'));var router=express[_0xc7e0('0x5')]();var fs_extra=require(_0xc7e0('0x6'));var auth=require(_0xc7e0('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xc7e0('0x8'));var controller=require(_0xc7e0('0x9'));router[_0xc7e0('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc7e0('0xa')](_0xc7e0('0xb'),auth[_0xc7e0('0xc')](),controller[_0xc7e0('0xd')]);router['post']('/',auth[_0xc7e0('0xc')](),controller[_0xc7e0('0xe')]);router['put'](_0xc7e0('0xb'),auth[_0xc7e0('0xc')](),controller[_0xc7e0('0xf')]);router['delete'](_0xc7e0('0xb'),auth[_0xc7e0('0xc')](),controller[_0xc7e0('0x10')]);module[_0xc7e0('0x11')]=router; \ No newline at end of file diff --git a/server/api/tag/tag.attributes.js b/server/api/tag/tag.attributes.js new file mode 100644 index 0000000..3283501 --- /dev/null +++ b/server/api/tag/tag.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8227=['STRING','#0091EA','exports','name'];(function(_0x2dde6e,_0x41f1c4){var _0x321eb2=function(_0x424a90){while(--_0x424a90){_0x2dde6e['push'](_0x2dde6e['shift']());}};_0x321eb2(++_0x41f1c4);}(_0x8227,0x146));var _0x7822=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8227[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module[_0x7822('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x7822('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x7822('0x2')],'defaultValue':_0x7822('0x3')},'description':{'type':Sequelize[_0x7822('0x2')]}}; \ No newline at end of file diff --git a/server/api/tag/tag.controller.js b/server/api/tag/tag.controller.js new file mode 100644 index 0000000..4996007 --- /dev/null +++ b/server/api/tag/tag.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x407f=['filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','Tags','error','stack','name','send','index','map','Tag','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x46a60a,_0x1c54fe){var _0x1ff42a=function(_0x55f6c3){while(--_0x55f6c3){_0x46a60a['push'](_0x46a60a['shift']());}};_0x1ff42a(++_0x1c54fe);}(_0x407f,0xc2));var _0xf407=function(_0x5b37e5,_0x101120){_0x5b37e5=_0x5b37e5-0x0;var _0x5d285c=_0x407f[_0x5b37e5];return _0x5d285c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf407('0x0'));var rp=require(_0xf407('0x1'));var moment=require(_0xf407('0x2'));var BPromise=require(_0xf407('0x3'));var Mustache=require(_0xf407('0x4'));var util=require(_0xf407('0x5'));var path=require(_0xf407('0x6'));var sox=require(_0xf407('0x7'));var csv=require(_0xf407('0x8'));var ejs=require(_0xf407('0x9'));var fs=require('fs');var fs_extra=require(_0xf407('0xa'));var _=require(_0xf407('0xb'));var squel=require(_0xf407('0xc'));var crypto=require(_0xf407('0xd'));var jsforce=require(_0xf407('0xe'));var deskjs=require(_0xf407('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf407('0x10'));var Papa=require(_0xf407('0x11'));var Redis=require(_0xf407('0x12'));var authService=require(_0xf407('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf407('0x14'))(_0xf407('0x15'));var utils=require(_0xf407('0x16'));var config=require(_0xf407('0x17'));var licenseUtil=require(_0xf407('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ee485,_0x3f4ca0){_0x3f4ca0=_0x3f4ca0||0xcc;return function(_0x3b26ae){if(_0x3b26ae){return _0x2ee485[_0xf407('0x19')](_0x3f4ca0);}return _0x2ee485[_0xf407('0x1a')](_0x3f4ca0)[_0xf407('0x1b')]();};}function respondWithResult(_0x242f43,_0x5257ef){_0x5257ef=_0x5257ef||0xc8;return function(_0x5d80ab){if(_0x5d80ab){return _0x242f43['status'](_0x5257ef)[_0xf407('0x1c')](_0x5d80ab);}};}function respondWithFilteredResult(_0x593e36,_0x454710){return function(_0x4c1320){if(_0x4c1320){var _0x48fd5d=typeof _0x454710[_0xf407('0x1d')]===_0xf407('0x1e')&&typeof _0x454710[_0xf407('0x1f')]===_0xf407('0x1e');var _0x351252=_0x4c1320[_0xf407('0x20')];var _0x4ddbe6=_0x48fd5d?0x0:_0x454710[_0xf407('0x1d')];var _0x588fe4=_0x48fd5d?_0x4c1320[_0xf407('0x20')]:_0x454710[_0xf407('0x1d')]+_0x454710[_0xf407('0x1f')];var _0x334c1a;if(_0x588fe4>=_0x351252){_0x588fe4=_0x351252;_0x334c1a=0xc8;}else{_0x334c1a=0xce;}_0x593e36[_0xf407('0x1a')](_0x334c1a);return _0x593e36[_0xf407('0x21')]('Content-Range',_0x4ddbe6+'-'+_0x588fe4+'/'+_0x351252)[_0xf407('0x1c')](_0x4c1320);}return null;};}function patchUpdates(_0x39febd){return function(_0x2f7ed0){try{jsonpatch[_0xf407('0x22')](_0x2f7ed0,_0x39febd,!![]);}catch(_0x4eb0c3){return BPromise[_0xf407('0x23')](_0x4eb0c3);}return _0x2f7ed0[_0xf407('0x24')]();};}function saveUpdates(_0x23659c,_0xa6f11e){return function(_0x5f32bb){if(_0x5f32bb){return _0x5f32bb['update'](_0x23659c)[_0xf407('0x25')](function(_0x100e6e){return _0x100e6e;});}return null;};}function removeEntity(_0x2558a1,_0x2cea00){return function(_0x9406cf){if(_0x9406cf){return _0x9406cf[_0xf407('0x26')]()[_0xf407('0x25')](function(){var _0x5aecf2=_0x9406cf[_0xf407('0x27')]({'plain':!![]});var _0x1996c8=_0xf407('0x28');return db['UserProfileResource'][_0xf407('0x26')]({'where':{'type':_0x1996c8,'resourceId':_0x5aecf2['id']}})[_0xf407('0x25')](function(){return _0x9406cf;});})[_0xf407('0x25')](function(){_0x2558a1[_0xf407('0x1a')](0xcc)[_0xf407('0x1b')]();});}};}function handleEntityNotFound(_0x187c93,_0x524b34){return function(_0x3953c5){if(!_0x3953c5){_0x187c93['sendStatus'](0x194);}return _0x3953c5;};}function handleError(_0x4fc4df,_0x949669){_0x949669=_0x949669||0x1f4;return function(_0x115dce){logger[_0xf407('0x29')](_0x115dce[_0xf407('0x2a')]);if(_0x115dce[_0xf407('0x2b')]){delete _0x115dce[_0xf407('0x2b')];}_0x4fc4df['status'](_0x949669)[_0xf407('0x2c')](_0x115dce);};}exports[_0xf407('0x2d')]=function(_0xa91b61,_0x89915b){var _0x15cd8d={},_0x5e12da={},_0x4a763e={'count':0x0,'rows':[]};var _0xce3a12=_[_0xf407('0x2e')](db[_0xf407('0x2f')][_0xf407('0x30')],function(_0x153287){return{'name':_0x153287[_0xf407('0x31')],'type':_0x153287[_0xf407('0x32')]['key']};});_0x5e12da[_0xf407('0x33')]=_['map'](_0xce3a12,_0xf407('0x2b'));_0x5e12da[_0xf407('0x34')]=_['keys'](_0xa91b61['query']);_0x5e12da['filters']=_[_0xf407('0x35')](_0x5e12da[_0xf407('0x33')],_0x5e12da['query']);_0x15cd8d[_0xf407('0x36')]=_[_0xf407('0x35')](_0x5e12da[_0xf407('0x33')],qs[_0xf407('0x37')](_0xa91b61['query']['fields']));_0x15cd8d[_0xf407('0x36')]=_0x15cd8d[_0xf407('0x36')][_0xf407('0x38')]?_0x15cd8d[_0xf407('0x36')]:_0x5e12da[_0xf407('0x33')];if(!_0xa91b61[_0xf407('0x34')][_0xf407('0x39')](_0xf407('0x3a'))){_0x15cd8d[_0xf407('0x1f')]=qs[_0xf407('0x1f')](_0xa91b61['query'][_0xf407('0x1f')]);_0x15cd8d['offset']=qs[_0xf407('0x1d')](_0xa91b61[_0xf407('0x34')][_0xf407('0x1d')]);}_0x15cd8d[_0xf407('0x3b')]=qs[_0xf407('0x3c')](_0xa91b61['query'][_0xf407('0x3c')]);_0x15cd8d[_0xf407('0x3d')]=qs[_0xf407('0x3e')](_[_0xf407('0x3f')](_0xa91b61['query'],_0x5e12da[_0xf407('0x3e')]),_0xce3a12);if(_0xa91b61[_0xf407('0x34')][_0xf407('0x40')]){_0x15cd8d['where']=_['merge'](_0x15cd8d[_0xf407('0x3d')],{'$or':_['map'](_0xce3a12,function(_0x573fae){if(_0x573fae[_0xf407('0x32')]!==_0xf407('0x41')){var _0x4890ae={};_0x4890ae[_0x573fae[_0xf407('0x2b')]]={'$like':'%'+_0xa91b61[_0xf407('0x34')][_0xf407('0x40')]+'%'};return _0x4890ae;}})});}_0x15cd8d=_[_0xf407('0x42')]({},_0x15cd8d,_0xa91b61[_0xf407('0x43')]);var _0x5c27c4={'where':_0x15cd8d[_0xf407('0x3d')]};return db['Tag']['count'](_0x5c27c4)[_0xf407('0x25')](function(_0x1ddb15){_0x4a763e['count']=_0x1ddb15;if(_0xa91b61[_0xf407('0x34')][_0xf407('0x44')]){_0x15cd8d[_0xf407('0x45')]=[{'all':!![]}];}return db[_0xf407('0x2f')][_0xf407('0x46')](_0x15cd8d);})[_0xf407('0x25')](function(_0x1c8f17){_0x4a763e[_0xf407('0x47')]=_0x1c8f17;return _0x4a763e;})['then'](respondWithFilteredResult(_0x89915b,_0x15cd8d))[_0xf407('0x48')](handleError(_0x89915b,null));};exports['show']=function(_0x2def2e,_0x571188){var _0x444b01={'raw':!![],'where':{'id':_0x2def2e[_0xf407('0x49')]['id']}},_0x56ea2b={};_0x56ea2b[_0xf407('0x33')]=_[_0xf407('0x4a')](db[_0xf407('0x2f')][_0xf407('0x30')]);_0x56ea2b[_0xf407('0x34')]=_[_0xf407('0x4a')](_0x2def2e['query']);_0x56ea2b[_0xf407('0x3e')]=_[_0xf407('0x35')](_0x56ea2b[_0xf407('0x33')],_0x56ea2b[_0xf407('0x34')]);_0x444b01[_0xf407('0x36')]=_[_0xf407('0x35')](_0x56ea2b['model'],qs[_0xf407('0x37')](_0x2def2e[_0xf407('0x34')][_0xf407('0x37')]));_0x444b01[_0xf407('0x36')]=_0x444b01[_0xf407('0x36')][_0xf407('0x38')]?_0x444b01['attributes']:_0x56ea2b[_0xf407('0x33')];if(_0x2def2e[_0xf407('0x34')][_0xf407('0x44')]){_0x444b01['include']=[{'all':!![]}];}_0x444b01=_[_0xf407('0x42')]({},_0x444b01,_0x2def2e['options']);return db[_0xf407('0x2f')][_0xf407('0x4b')](_0x444b01)[_0xf407('0x25')](handleEntityNotFound(_0x571188,null))[_0xf407('0x25')](respondWithResult(_0x571188,null))['catch'](handleError(_0x571188,null));};exports[_0xf407('0x4c')]=function(_0x3b6c44,_0x16cf14){return db['Tag']['create'](_0x3b6c44[_0xf407('0x4d')],{})[_0xf407('0x25')](function(_0x45e9ab){var _0x4799c1=_0x3b6c44[_0xf407('0x4e')][_0xf407('0x27')]({'plain':!![]});if(!_0x4799c1)throw new Error(_0xf407('0x4f'));if(_0x4799c1[_0xf407('0x50')]==='user'){var _0x1282df=_0x45e9ab[_0xf407('0x27')]({'plain':!![]});var _0x4e8483=_0xf407('0x28');return db[_0xf407('0x51')][_0xf407('0x4b')]({'where':{'name':_0x4e8483,'userProfileId':_0x4799c1['userProfileId']},'raw':!![]})[_0xf407('0x25')](function(_0xd168af){if(_0xd168af&&_0xd168af[_0xf407('0x52')]===0x0){return db[_0xf407('0x53')]['create']({'name':_0x1282df[_0xf407('0x2b')],'resourceId':_0x1282df['id'],'type':_0xd168af[_0xf407('0x2b')],'sectionId':_0xd168af['id']},{})['then'](function(){return _0x45e9ab;});}else{return _0x45e9ab;}})[_0xf407('0x48')](function(_0x588fd7){logger[_0xf407('0x29')](_0xf407('0x54'),_0x588fd7);throw _0x588fd7;});}return _0x45e9ab;})['then'](respondWithResult(_0x16cf14,0xc9))[_0xf407('0x48')](handleError(_0x16cf14,null));};exports[_0xf407('0x55')]=function(_0x4b161b,_0x289d00){if(_0x4b161b['body']['id']){delete _0x4b161b['body']['id'];}return db[_0xf407('0x2f')][_0xf407('0x4b')]({'where':{'id':_0x4b161b[_0xf407('0x49')]['id']}})[_0xf407('0x25')](handleEntityNotFound(_0x289d00,null))[_0xf407('0x25')](saveUpdates(_0x4b161b[_0xf407('0x4d')],null))['then'](respondWithResult(_0x289d00,null))['catch'](handleError(_0x289d00,null));};exports[_0xf407('0x26')]=function(_0x34cdf1,_0x417bdd){return db[_0xf407('0x2f')][_0xf407('0x4b')]({'where':{'id':_0x34cdf1[_0xf407('0x49')]['id']}})['then'](handleEntityNotFound(_0x417bdd,null))[_0xf407('0x25')](removeEntity(_0x417bdd,null))[_0xf407('0x48')](handleError(_0x417bdd,null));}; \ No newline at end of file diff --git a/server/api/tag/tag.model.js b/server/api/tag/tag.model.js new file mode 100644 index 0000000..0e431f4 --- /dev/null +++ b/server/api/tag/tag.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf8bc=['path','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x450689,_0x3b857c){var _0x46ffb0=function(_0x5d3679){while(--_0x5d3679){_0x450689['push'](_0x450689['shift']());}};_0x46ffb0(++_0x3b857c);}(_0xf8bc,0x180));var _0xcf8b=function(_0x1d04b5,_0x30792c){_0x1d04b5=_0x1d04b5-0x0;var _0x161342=_0xf8bc[_0x1d04b5];return _0x161342;};'use strict';var _=require(_0xcf8b('0x0'));var util=require(_0xcf8b('0x1'));var logger=require(_0xcf8b('0x2'))(_0xcf8b('0x3'));var moment=require(_0xcf8b('0x4'));var BPromise=require(_0xcf8b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcf8b('0x6'));var rimraf=require('rimraf');var config=require(_0xcf8b('0x7'));var attributes=require(_0xcf8b('0x8'));module[_0xcf8b('0x9')]=function(_0x5aef34,_0x597405){return _0x5aef34[_0xcf8b('0xa')](_0xcf8b('0xb'),attributes,{'tableName':_0xcf8b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/tag/tag.rpc.js b/server/api/tag/tag.rpc.js new file mode 100644 index 0000000..0203402 --- /dev/null +++ b/server/api/tag/tag.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe13a=['code','message','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x14815b,_0x258a44){var _0x3ccb14=function(_0xb53a){while(--_0xb53a){_0x14815b['push'](_0x14815b['shift']());}};_0x3ccb14(++_0x258a44);}(_0xe13a,0x178));var _0xae13=function(_0x484f49,_0x247163){_0x484f49=_0x484f49-0x0;var _0x4dcedc=_0xe13a[_0x484f49];return _0x4dcedc;};'use strict';var _=require('lodash');var util=require(_0xae13('0x0'));var moment=require(_0xae13('0x1'));var BPromise=require(_0xae13('0x2'));var rs=require(_0xae13('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae13('0x4'))['db'];var utils=require(_0xae13('0x5'));var logger=require(_0xae13('0x6'))(_0xae13('0x7'));var config=require(_0xae13('0x8'));var jayson=require(_0xae13('0x9'));var client=jayson[_0xae13('0xa')][_0xae13('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x341ba4,_0x4ae51f,_0x2f6d10){return new BPromise(function(_0x2b2e1f,_0x27fefd){return client[_0xae13('0xc')](_0x341ba4,_0x2f6d10)[_0xae13('0xd')](function(_0x41bf44){logger[_0xae13('0xe')](_0xae13('0xf'),_0x4ae51f,_0xae13('0x10'));logger['debug'](_0xae13('0x11'),_0x4ae51f,_0xae13('0x10'),JSON[_0xae13('0x12')](_0x41bf44));if(_0x41bf44[_0xae13('0x13')]){if(_0x41bf44[_0xae13('0x13')][_0xae13('0x14')]===0x1f4){logger[_0xae13('0x13')]('Tag,\x20%s,\x20%s',_0x4ae51f,_0x41bf44[_0xae13('0x13')][_0xae13('0x15')]);return _0x27fefd(_0x41bf44['error']['message']);}logger['error']('Tag,\x20%s,\x20%s',_0x4ae51f,_0x41bf44['error'][_0xae13('0x15')]);return _0x2b2e1f(_0x41bf44[_0xae13('0x13')][_0xae13('0x15')]);}else{logger[_0xae13('0xe')](_0xae13('0xf'),_0x4ae51f,_0xae13('0x10'));_0x2b2e1f(_0x41bf44['result'][_0xae13('0x15')]);}})['catch'](function(_0xe10aab){logger[_0xae13('0x13')](_0xae13('0xf'),_0x4ae51f,_0xe10aab);_0x27fefd(_0xe10aab);});});} \ No newline at end of file diff --git a/server/api/team/index.js b/server/api/team/index.js new file mode 100644 index 0000000..67bd2a0 --- /dev/null +++ b/server/api/team/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'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 diff --git a/server/api/team/team.attributes.js b/server/api/team/team.attributes.js new file mode 100644 index 0000000..b8fa0d2 --- /dev/null +++ b/server/api/team/team.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb7e7=['STRING','sequelize'];(function(_0x504df1,_0x289598){var _0x1063b5=function(_0x627abd){while(--_0x627abd){_0x504df1['push'](_0x504df1['shift']());}};_0x1063b5(++_0x289598);}(_0xb7e7,0x121));var _0x7b7e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xb7e7[_0x4b7b62];return _0x2280df;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}}; \ No newline at end of file diff --git a/server/api/team/team.controller.js b/server/api/team/team.controller.js new file mode 100644 index 0000000..cc7d5e5 --- /dev/null +++ b/server/api/team/team.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x29f5=['register','sendStatus','status','end','undefined','limit','count','offset','json','save','then','error','name','index','Team','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','pick','where','VIRTUAL','options','includeAll','include','findAll','rows','params','length','merge','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','send','channel','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queue','rawAttributes','Queues','addQueues','findOne','ValidationError','ids','removeQueues','remove','addAgents','isArray','Voice','Mail','Sms','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','emit','Queue:save','online','interface','UserVoiceQueueRt','upsert','isNil','voicePause','all','VoicePrefixId','spread','removeAgents','Chat','Openchannel','Queue:remove','getAgents','filter','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','defaults','redis','localhost','./team.socket'];(function(_0x7fab1f,_0x3b5399){var _0x1699e2=function(_0x340ffd){while(--_0x340ffd){_0x7fab1f['push'](_0x7fab1f['shift']());}};_0x1699e2(++_0x3b5399);}(_0x29f5,0x1ac));var _0x529f=function(_0x1a5059,_0x48e6b2){_0x1a5059=_0x1a5059-0x0;var _0x318d5b=_0x29f5[_0x1a5059];return _0x318d5b;};'use strict';var emlformat=require(_0x529f('0x0'));var rimraf=require(_0x529f('0x1'));var zipdir=require(_0x529f('0x2'));var jsonpatch=require(_0x529f('0x3'));var rp=require(_0x529f('0x4'));var moment=require(_0x529f('0x5'));var BPromise=require(_0x529f('0x6'));var Mustache=require(_0x529f('0x7'));var util=require(_0x529f('0x8'));var path=require('path');var sox=require(_0x529f('0x9'));var csv=require(_0x529f('0xa'));var ejs=require(_0x529f('0xb'));var fs=require('fs');var fs_extra=require(_0x529f('0xc'));var _=require(_0x529f('0xd'));var squel=require(_0x529f('0xe'));var crypto=require(_0x529f('0xf'));var jsforce=require(_0x529f('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x529f('0x11'));var Papa=require(_0x529f('0x12'));var Redis=require(_0x529f('0x13'));var authService=require(_0x529f('0x14'));var qs=require(_0x529f('0x15'));var as=require(_0x529f('0x16'));var hardwareService=require(_0x529f('0x17'));var logger=require('../../config/logger')(_0x529f('0x18'));var utils=require(_0x529f('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x529f('0x1a'))['db'];config['redis']=_[_0x529f('0x1b')](config[_0x529f('0x1c')],{'host':_0x529f('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x529f('0x1e'))[_0x529f('0x1f')](socket);function respondWithStatusCode(_0x59012f,_0x46d07a){_0x46d07a=_0x46d07a||0xcc;return function(_0x238319){if(_0x238319){return _0x59012f[_0x529f('0x20')](_0x46d07a);}return _0x59012f[_0x529f('0x21')](_0x46d07a)[_0x529f('0x22')]();};}function respondWithResult(_0x40404f,_0x492751){_0x492751=_0x492751||0xc8;return function(_0x5cdc28){if(_0x5cdc28){return _0x40404f['status'](_0x492751)['json'](_0x5cdc28);}};}function respondWithFilteredResult(_0x5b6561,_0x483d3e){return function(_0x80d2d){if(_0x80d2d){var _0x1cfb38=typeof _0x483d3e['offset']===_0x529f('0x23')&&typeof _0x483d3e[_0x529f('0x24')]===_0x529f('0x23');var _0x18bdaf=_0x80d2d[_0x529f('0x25')];var _0x5b8d0a=_0x1cfb38?0x0:_0x483d3e[_0x529f('0x26')];var _0x2b3c2a=_0x1cfb38?_0x80d2d['count']:_0x483d3e[_0x529f('0x26')]+_0x483d3e[_0x529f('0x24')];var _0x512fb7;if(_0x2b3c2a>=_0x18bdaf){_0x2b3c2a=_0x18bdaf;_0x512fb7=0xc8;}else{_0x512fb7=0xce;}_0x5b6561[_0x529f('0x21')](_0x512fb7);return _0x5b6561['set']('Content-Range',_0x5b8d0a+'-'+_0x2b3c2a+'/'+_0x18bdaf)[_0x529f('0x27')](_0x80d2d);}return null;};}function patchUpdates(_0x3415c9){return function(_0x310b8c){try{jsonpatch['apply'](_0x310b8c,_0x3415c9,!![]);}catch(_0xae27d7){return BPromise['reject'](_0xae27d7);}return _0x310b8c[_0x529f('0x28')]();};}function saveUpdates(_0x539080,_0x451f55){return function(_0x3c24ce){if(_0x3c24ce){return _0x3c24ce['update'](_0x539080)[_0x529f('0x29')](function(_0x58874d){return _0x58874d;});}return null;};}function handleEntityNotFound(_0x10f0a3,_0xd52676){return function(_0x3cb06b){if(!_0x3cb06b){_0x10f0a3[_0x529f('0x20')](0x194);}return _0x3cb06b;};}function handleError(_0x2571b6,_0x3ca0b4){_0x3ca0b4=_0x3ca0b4||0x1f4;return function(_0x5ca83f){logger[_0x529f('0x2a')](_0x5ca83f['stack']);if(_0x5ca83f[_0x529f('0x2b')]){delete _0x5ca83f[_0x529f('0x2b')];}_0x2571b6[_0x529f('0x21')](_0x3ca0b4)['send'](_0x5ca83f);};}exports[_0x529f('0x2c')]=function(_0x4a13ce,_0x4c10ee){var _0x37e5ab={},_0x364cd7={},_0x48b00d={'count':0x0,'rows':[]};var _0x51027d=_['map'](db[_0x529f('0x2d')]['rawAttributes'],function(_0x5e5a64){return{'name':_0x5e5a64[_0x529f('0x2e')],'type':_0x5e5a64[_0x529f('0x2f')][_0x529f('0x30')]};});_0x364cd7[_0x529f('0x31')]=_[_0x529f('0x32')](_0x51027d,_0x529f('0x2b'));_0x364cd7[_0x529f('0x33')]=_[_0x529f('0x34')](_0x4a13ce[_0x529f('0x33')]);_0x364cd7['filters']=_['intersection'](_0x364cd7[_0x529f('0x31')],_0x364cd7[_0x529f('0x33')]);_0x37e5ab[_0x529f('0x35')]=_[_0x529f('0x36')](_0x364cd7[_0x529f('0x31')],qs[_0x529f('0x37')](_0x4a13ce[_0x529f('0x33')][_0x529f('0x37')]));_0x37e5ab[_0x529f('0x35')]=_0x37e5ab[_0x529f('0x35')]['length']?_0x37e5ab[_0x529f('0x35')]:_0x364cd7[_0x529f('0x31')];if(!_0x4a13ce[_0x529f('0x33')][_0x529f('0x38')](_0x529f('0x39'))){_0x37e5ab[_0x529f('0x24')]=qs[_0x529f('0x24')](_0x4a13ce[_0x529f('0x33')][_0x529f('0x24')]);_0x37e5ab[_0x529f('0x26')]=qs[_0x529f('0x26')](_0x4a13ce[_0x529f('0x33')][_0x529f('0x26')]);}_0x37e5ab[_0x529f('0x3a')]=qs[_0x529f('0x3b')](_0x4a13ce[_0x529f('0x33')][_0x529f('0x3b')]);_0x37e5ab['where']=qs[_0x529f('0x3c')](_[_0x529f('0x3d')](_0x4a13ce['query'],_0x364cd7[_0x529f('0x3c')]),_0x51027d);if(_0x4a13ce['query']['filter']){_0x37e5ab['where']=_['merge'](_0x37e5ab[_0x529f('0x3e')],{'$or':_['map'](_0x51027d,function(_0x56a2f7){if(_0x56a2f7[_0x529f('0x2f')]!==_0x529f('0x3f')){var _0x254c87={};_0x254c87[_0x56a2f7[_0x529f('0x2b')]]={'$like':'%'+_0x4a13ce['query']['filter']+'%'};return _0x254c87;}})});}_0x37e5ab=_['merge']({},_0x37e5ab,_0x4a13ce[_0x529f('0x40')]);var _0x19928b={'where':_0x37e5ab[_0x529f('0x3e')]};return db['Team']['count'](_0x19928b)[_0x529f('0x29')](function(_0x852c41){_0x48b00d[_0x529f('0x25')]=_0x852c41;if(_0x4a13ce[_0x529f('0x33')][_0x529f('0x41')]){_0x37e5ab[_0x529f('0x42')]=[{'all':!![]}];}return db['Team'][_0x529f('0x43')](_0x37e5ab);})[_0x529f('0x29')](function(_0x41c831){_0x48b00d[_0x529f('0x44')]=_0x41c831;return _0x48b00d;})[_0x529f('0x29')](respondWithFilteredResult(_0x4c10ee,_0x37e5ab))['catch'](handleError(_0x4c10ee,null));};exports['show']=function(_0x4bfa40,_0x1414a5){var _0x147238={'raw':![],'where':{'id':_0x4bfa40[_0x529f('0x45')]['id']}},_0x46926b={};_0x46926b[_0x529f('0x31')]=_[_0x529f('0x34')](db[_0x529f('0x2d')]['rawAttributes']);_0x46926b[_0x529f('0x33')]=_[_0x529f('0x34')](_0x4bfa40['query']);_0x46926b[_0x529f('0x3c')]=_[_0x529f('0x36')](_0x46926b[_0x529f('0x31')],_0x46926b[_0x529f('0x33')]);_0x147238['attributes']=_[_0x529f('0x36')](_0x46926b[_0x529f('0x31')],qs[_0x529f('0x37')](_0x4bfa40['query'][_0x529f('0x37')]));_0x147238[_0x529f('0x35')]=_0x147238[_0x529f('0x35')][_0x529f('0x46')]?_0x147238['attributes']:_0x46926b[_0x529f('0x31')];if(_0x4bfa40[_0x529f('0x33')][_0x529f('0x41')]){_0x147238[_0x529f('0x42')]=[{'all':!![]}];}_0x147238=_[_0x529f('0x47')]({},_0x147238,_0x4bfa40[_0x529f('0x40')]);return db[_0x529f('0x2d')][_0x529f('0x48')](_0x147238)[_0x529f('0x29')](handleEntityNotFound(_0x1414a5,null))['then'](respondWithResult(_0x1414a5,null))[_0x529f('0x49')](handleError(_0x1414a5,null));};exports['create']=function(_0x4b476d,_0x534f8e){return db[_0x529f('0x2d')][_0x529f('0x4a')](_0x4b476d[_0x529f('0x4b')],{})[_0x529f('0x29')](function(_0x332457){var _0x5def85=_0x4b476d[_0x529f('0x4c')][_0x529f('0x4d')]({'plain':!![]});if(!_0x5def85)throw new Error(_0x529f('0x4e'));if(_0x5def85['role']===_0x529f('0x4c')){var _0x483ec7=_0x332457[_0x529f('0x4d')]({'plain':!![]});var _0x4ce297=_0x529f('0x4f');return db['UserProfileSection']['find']({'where':{'name':_0x4ce297,'userProfileId':_0x5def85[_0x529f('0x50')]},'raw':!![]})[_0x529f('0x29')](function(_0x491aaf){if(_0x491aaf&&_0x491aaf[_0x529f('0x51')]===0x0){return db[_0x529f('0x52')][_0x529f('0x4a')]({'name':_0x483ec7['name'],'resourceId':_0x483ec7['id'],'type':_0x491aaf['name'],'sectionId':_0x491aaf['id']},{})[_0x529f('0x29')](function(){return _0x332457;});}else{return _0x332457;}})[_0x529f('0x49')](function(_0x320e1a){logger[_0x529f('0x2a')](_0x529f('0x53'),_0x320e1a);throw _0x320e1a;});}return _0x332457;})[_0x529f('0x29')](respondWithResult(_0x534f8e,0xc9))[_0x529f('0x49')](handleError(_0x534f8e,null));};exports['update']=function(_0x5044ae,_0x365088){if(_0x5044ae[_0x529f('0x4b')]['id']){delete _0x5044ae['body']['id'];}return db[_0x529f('0x2d')]['find']({'where':{'id':_0x5044ae[_0x529f('0x45')]['id']}})[_0x529f('0x29')](handleEntityNotFound(_0x365088,null))[_0x529f('0x29')](saveUpdates(_0x5044ae[_0x529f('0x4b')],null))[_0x529f('0x29')](respondWithResult(_0x365088,null))[_0x529f('0x49')](handleError(_0x365088,null));};exports[_0x529f('0x54')]=function(_0x211cf6,_0x5413ff){var _0x4dd668=_0x211cf6[_0x529f('0x45')]['id'];var _0x2db0d6=[];return db[_0x529f('0x55')][_0x529f('0x56')](function(_0xab075f){var _0x4d0205=_0x529f('0x57')+_0x4dd668;return db[_0x529f('0x55')][_0x529f('0x33')](_0x4d0205,{'type':db[_0x529f('0x58')][_0x529f('0x59')][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f})['then'](function(_0x7ffddd){_0x2db0d6=_[_0x529f('0x32')](_0x7ffddd,function(_0x3e487b){return Number(_0x3e487b[_0x529f('0x5b')]);});})[_0x529f('0x29')](function(){var _0x17b4b5=_0x529f('0x5c')+_0x4dd668;return db[_0x529f('0x55')]['query'](_0x17b4b5,{'type':db['Sequelize'][_0x529f('0x59')][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x2f65c8){var _0x14c4f1=_[_0x529f('0x32')](_0x2f65c8,function(_0x5ba69d){return Number(_0x5ba69d[_0x529f('0x5d')]);});return db[_0x529f('0x5e')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'VoiceQueueId':{'$in':_0x14c4f1}},'transaction':_0xab075f});})[_0x529f('0x29')](function(){var _0x5d9bff=_0x529f('0x5f')+_0x4dd668;return db[_0x529f('0x55')]['query'](_0x5d9bff,{'type':db[_0x529f('0x58')]['QueryTypes'][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x5477e6){var _0x5e8b2b=_[_0x529f('0x32')](_0x5477e6,function(_0x57ecf4){return Number(_0x57ecf4[_0x529f('0x60')]);});return db[_0x529f('0x61')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'MailQueueId':{'$in':_0x5e8b2b}},'transaction':_0xab075f});})[_0x529f('0x29')](function(){var _0x48e05e=_0x529f('0x62')+_0x4dd668;return db[_0x529f('0x55')]['query'](_0x48e05e,{'type':db[_0x529f('0x58')][_0x529f('0x59')][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x1d543a){var _0xf095c2=_[_0x529f('0x32')](_0x1d543a,function(_0xe352f4){return Number(_0xe352f4[_0x529f('0x63')]);});return db[_0x529f('0x64')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'SmsQueueId':{'$in':_0xf095c2}},'transaction':_0xab075f});})['then'](function(){var _0x4791ab='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4dd668;return db[_0x529f('0x55')][_0x529f('0x33')](_0x4791ab,{'type':db['Sequelize']['QueryTypes'][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x4c8000){var _0x4d37cb=_[_0x529f('0x32')](_0x4c8000,function(_0x438c06){return Number(_0x438c06['ChatQueueId']);});return db[_0x529f('0x65')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'ChatQueueId':{'$in':_0x4d37cb}},'transaction':_0xab075f});})['then'](function(){var _0x479900=_0x529f('0x66')+_0x4dd668;return db['sequelize'][_0x529f('0x33')](_0x479900,{'type':db['Sequelize']['QueryTypes'][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})['then'](function(_0x33ef7d){var _0xc853ca=_[_0x529f('0x32')](_0x33ef7d,function(_0xd1a964){return Number(_0xd1a964[_0x529f('0x67')]);});return db[_0x529f('0x68')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'FaxQueueId':{'$in':_0xc853ca}},'transaction':_0xab075f});})[_0x529f('0x29')](function(){var _0xa79758='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4dd668;return db[_0x529f('0x55')]['query'](_0xa79758,{'type':db['Sequelize'][_0x529f('0x59')][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x543950){var _0x12b6aa=_['map'](_0x543950,function(_0x491169){return Number(_0x491169['OpenchannelQueueId']);});return db[_0x529f('0x69')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'OpenchannelQueueId':{'$in':_0x12b6aa}},'transaction':_0xab075f});})[_0x529f('0x29')](function(){var _0x1be5d3=_0x529f('0x6a')+_0x4dd668;return db[_0x529f('0x55')][_0x529f('0x33')](_0x1be5d3,{'type':db[_0x529f('0x58')]['QueryTypes'][_0x529f('0x5a')],'raw':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x2bded7){var _0x5d1f9b=_[_0x529f('0x32')](_0x2bded7,function(_0x259288){return Number(_0x259288['WhatsappQueueId']);});return db[_0x529f('0x6b')][_0x529f('0x54')]({'where':{'UserId':{'$in':_0x2db0d6},'WhatsappQueueId':{'$in':_0x5d1f9b}},'transaction':_0xab075f});})['then'](function(){return db[_0x529f('0x6c')][_0x529f('0x48')]({'where':{'TeamId':_0x4dd668}});})['then'](function(_0x4ae59e){if(_0x4ae59e===null){return;}return db[_0x529f('0x6d')]['destroy']({'where':{'UserId':{'$in':_0x2db0d6},'VoicePrefixId':_0x4ae59e['VoicePrefixId']},'transaction':_0xab075f});})['then'](function(){return db['Team']['destroy']({'where':{'id':_0x4dd668},'cascade':!![],'transaction':_0xab075f});})[_0x529f('0x29')](function(_0x5c1837){if(_0x5c1837===0x0){_0x5413ff['sendStatus'](0x194);}else{return db[_0x529f('0x52')][_0x529f('0x54')]({'where':{'type':_0x529f('0x4f'),'resourceId':_0x4dd668},'cascade':!![],'transaction':_0xab075f})[_0x529f('0x29')](function(){_0x5413ff[_0x529f('0x21')](0xcc)[_0x529f('0x22')]();});}})[_0x529f('0x49')](function(_0x30a800){_0x5413ff['status'](0x1f4)[_0x529f('0x6e')](_0x30a800);});});};exports['getQueues']=function(_0x533107,_0x43b795,_0x40da34){return db[_0x529f('0x2d')]['findOne']({'where':{'id':_0x533107[_0x529f('0x45')]['id']}})[_0x529f('0x29')](handleEntityNotFound(_0x43b795,null))[_0x529f('0x29')](function(_0x9c43a5){if(!_0x533107['query'][_0x529f('0x6f')]||!utils[_0x529f('0x70')](_0x533107[_0x529f('0x33')][_0x529f('0x6f')])){throw new db[(_0x529f('0x58'))]['ValidationError'](_0x529f('0x71'));}var _0x2cde23={};var _0x3ac992={};_0x3ac992[_0x529f('0x31')]=_[_0x529f('0x34')](db[_[_0x529f('0x72')](_0x533107[_0x529f('0x33')]['channel'][_0x529f('0x73')]())+_0x529f('0x74')][_0x529f('0x75')]);_0x3ac992['query']=_[_0x529f('0x34')](_0x533107[_0x529f('0x33')]);_0x3ac992['filters']=_[_0x529f('0x36')](_0x3ac992[_0x529f('0x31')],_0x3ac992[_0x529f('0x33')]);_0x2cde23[_0x529f('0x35')]=_['intersection'](_0x3ac992[_0x529f('0x31')],qs[_0x529f('0x37')](_0x533107[_0x529f('0x33')][_0x529f('0x37')]));_0x2cde23['attributes']=_0x2cde23[_0x529f('0x35')][_0x529f('0x46')]?_0x2cde23[_0x529f('0x35')]:_0x3ac992[_0x529f('0x31')];_0x2cde23[_0x529f('0x24')]=qs[_0x529f('0x24')](_0x533107[_0x529f('0x33')][_0x529f('0x24')]);_0x2cde23['offset']=qs[_0x529f('0x26')](_0x533107['query'][_0x529f('0x26')]);_0x2cde23['order']=qs[_0x529f('0x3b')](_0x533107[_0x529f('0x33')][_0x529f('0x3b')]);_0x2cde23[_0x529f('0x3e')]=qs[_0x529f('0x3c')](_[_0x529f('0x3d')](_0x533107['query'],_0x3ac992[_0x529f('0x3c')]));_0x2cde23=_['merge']({},_0x2cde23,_0x533107[_0x529f('0x40')]);return _0x9c43a5[_0x529f('0x4d')+_[_0x529f('0x72')](_0x533107[_0x529f('0x33')][_0x529f('0x6f')][_0x529f('0x73')]())+_0x529f('0x76')](_0x2cde23);})[_0x529f('0x29')](respondWithResult(_0x43b795,null))[_0x529f('0x49')](handleError(_0x43b795,null));};exports[_0x529f('0x77')]=function(_0x135769,_0x45737d,_0x274738){return db[_0x529f('0x2d')][_0x529f('0x78')]({'where':{'id':_0x135769['params']['id']}})['then'](function(_0x2e34ba){if(_0x2e34ba){if(!_0x135769[_0x529f('0x4b')][_0x529f('0x6f')]||!utils[_0x529f('0x70')](_0x135769[_0x529f('0x4b')][_0x529f('0x6f')])){throw new db[(_0x529f('0x58'))][(_0x529f('0x79'))](_0x529f('0x71'));}return _0x2e34ba['add'+_[_0x529f('0x72')](_0x135769[_0x529f('0x4b')][_0x529f('0x6f')]['toLowerCase']())+_0x529f('0x76')](_0x135769[_0x529f('0x4b')][_0x529f('0x7a')]);}return null;})['then'](handleEntityNotFound(_0x45737d,null))[_0x529f('0x29')](respondWithStatusCode(_0x45737d,null))[_0x529f('0x49')](handleError(_0x45737d,null));};exports[_0x529f('0x7b')]=function(_0x40788c,_0x69a984,_0x4bb6bf){return db[_0x529f('0x2d')][_0x529f('0x78')]({'where':{'id':_0x40788c[_0x529f('0x45')]['id']}})[_0x529f('0x29')](function(_0x306a13){if(_0x306a13){if(!_0x40788c[_0x529f('0x33')][_0x529f('0x6f')]||!utils['isValidChannel'](_0x40788c[_0x529f('0x33')][_0x529f('0x6f')])){throw new db[(_0x529f('0x58'))][(_0x529f('0x79'))](_0x529f('0x71'));}return _0x306a13[_0x529f('0x7c')+_['capitalize'](_0x40788c[_0x529f('0x33')]['channel']['toLowerCase']())+_0x529f('0x76')](_0x40788c[_0x529f('0x33')][_0x529f('0x7a')]);}return null;})[_0x529f('0x29')](handleEntityNotFound(_0x69a984,null))['then'](respondWithStatusCode(_0x69a984,null))['catch'](handleError(_0x69a984,null));};exports[_0x529f('0x7d')]=function(_0x29cc35,_0x342816){var _0x458ada=_[_0x529f('0x7e')](_0x29cc35[_0x529f('0x4b')][_0x529f('0x7a')])?_0x29cc35[_0x529f('0x4b')][_0x529f('0x7a')]:[_0x29cc35[_0x529f('0x4b')][_0x529f('0x7a')]];var _0x1e2a4f=_0x29cc35[_0x529f('0x45')]['id'];return db['Team'][_0x529f('0x48')]({'where':{'id':_0x1e2a4f}})[_0x529f('0x29')](handleEntityNotFound(_0x342816,null))[_0x529f('0x29')](function(_0xae677e){if(_0xae677e){var _0x537896=[_0x529f('0x7f'),'Chat',_0x529f('0x80'),_0x529f('0x81'),'Fax','Openchannel',_0x529f('0x82')];return db[_0x529f('0x55')][_0x529f('0x56')](function(_0x2df48c){var _0x2e28a8=_[_0x529f('0x32')](_0x537896,function(_0x3667e3){var _0x51cd29={'attributes':['id',_0x529f('0x2b')]};if(_0x3667e3===_0x529f('0x7f')){_0x51cd29[_0x529f('0x83')]={'attributes':[_0x529f('0x84')]};}return _0xae677e[_0x529f('0x4d')+_0x3667e3+_0x529f('0x76')](_0x51cd29)[_0x529f('0x29')](function(_0x2b7963){var _0x2ebadc=_[_0x529f('0x32')](_0x2b7963,function(_0x38d051){var _0x3bfe83=_[_0x529f('0x32')](_0x458ada,function(_0x39dc78){var _0xc6486b={'where':{'UserId':_0x39dc78,[_0x3667e3+_0x529f('0x85')]:_0x38d051['id']},'transaction':_0x2df48c};if(_0x3667e3==='Voice'){_0xc6486b[_0x529f('0x1b')]={'penalty':_0x38d051[_0x529f('0x86')]['penalty']};}return db[_0x529f('0x87')+_0x3667e3+_0x529f('0x74')]['findOrCreate'](_0xc6486b)[_0x529f('0x29')](function(){socket[_0x529f('0x88')]('user'+_0x3667e3+_0x529f('0x89'),{'UserId':_0x39dc78,[_0x3667e3+_0x529f('0x85')]:_0x38d051['id']});if(_0x3667e3!==_0x529f('0x7f')){return;}return db[_0x529f('0x87')][_0x529f('0x43')]({'where':{'id':_0x458ada,'online':0x1},'attributes':['id',_0x529f('0x2b'),_0x529f('0x8a'),'voicePause',_0x529f('0x8b')],'raw':!![]})[_0x529f('0x29')](function(_0x31f645){var _0x26fad8=_[_0x529f('0x32')](_0x31f645,function(_0x205065){return db[_0x529f('0x8c')][_0x529f('0x8d')]({'membername':_0x205065['name'],'UserId':_0x205065['id'],'queue_name':_0x38d051[_0x529f('0x2b')],'VoiceQueueId':_0x38d051['id'],'interface':_[_0x529f('0x8e')](_0x205065[_0x529f('0x8b')])?util['format']('SIP/%s',_0x205065[_0x529f('0x2b')]):_0x205065[_0x529f('0x8b')],'paused':_0x205065[_0x529f('0x8f')]||![],'penalty':_0x38d051['TeamVoiceQueue'][_0x529f('0x84')]},{'transaction':_0x2df48c});});return Promise[_0x529f('0x90')](_0x26fad8);});});});return Promise[_0x529f('0x90')](_0x3bfe83);});return Promise['all'](_0x2ebadc);})[_0x529f('0x29')](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x1e2a4f}})['then'](function(_0x185b72){if(_0x185b72){var _0x5a7b8c=_['map'](_0x458ada,function(_0x963c63){db[_0x529f('0x6d')][_0x529f('0x8d')]({'UserId':_0x963c63,'VoicePrefixId':_0x185b72[_0x529f('0x91')]});});return Promise[_0x529f('0x90')](_0x5a7b8c);}});});});return Promise[_0x529f('0x90')](_0x2e28a8)['then'](function(){return _0xae677e[_0x529f('0x7d')](_0x458ada,{'transaction':_0x2df48c})[_0x529f('0x92')](function(_0x464c19){return _0x464c19;});});});}})[_0x529f('0x29')](respondWithResult(_0x342816,null))[_0x529f('0x49')](handleError(_0x342816,null));};exports[_0x529f('0x93')]=function(_0x2aa253,_0x4cded4){var _0xaeaeba=_[_0x529f('0x7e')](_0x2aa253['query'][_0x529f('0x7a')])?_0x2aa253[_0x529f('0x33')][_0x529f('0x7a')]:[_0x2aa253[_0x529f('0x33')]['ids']];var _0xd54448=_0x2aa253['params']['id'];return db[_0x529f('0x2d')][_0x529f('0x48')]({'where':{'id':_0xd54448}})[_0x529f('0x29')](handleEntityNotFound(_0x4cded4,null))[_0x529f('0x29')](function(_0x21b2f4){if(_0x21b2f4){var _0x4bcbc8=[_0x529f('0x7f'),_0x529f('0x94'),'Mail',_0x529f('0x81'),'Fax',_0x529f('0x95'),_0x529f('0x82')];return db[_0x529f('0x55')][_0x529f('0x56')](function(_0xe660a4){var _0x3dd7f3=_[_0x529f('0x32')](_0x4bcbc8,function(_0x1708be){var _0x204394={'attributes':['id',_0x529f('0x2b')]};return _0x21b2f4[_0x529f('0x4d')+_0x1708be+'Queues'](_0x204394)[_0x529f('0x29')](function(_0xf4183){var _0x16a811=_[_0x529f('0x32')](_0xf4183,function(_0x1cf5ae){return _0x1cf5ae['removeAgents'](_0xaeaeba,{'transaction':_0xe660a4})[_0x529f('0x29')](function(){var _0x424c27=_['map'](_0xaeaeba,function(_0x43172b){socket['emit'](_0x529f('0x4c')+_0x1708be+_0x529f('0x96'),{'UserId':Number(_0x43172b),[_0x1708be+_0x529f('0x85')]:_0x1cf5ae['id']});if(_0x1708be!==_0x529f('0x7f')){return;}return db[_0x529f('0x8c')]['destroy']({'where':{'VoiceQueueId':_0x1cf5ae['id'],'UserId':_0x43172b},'transaction':_0xe660a4});});return Promise[_0x529f('0x90')](_0x424c27);});});return Promise[_0x529f('0x90')](_0x16a811);});});return Promise['all'](_0x3dd7f3)[_0x529f('0x29')](function(){return _0x21b2f4[_0x529f('0x93')](_0xaeaeba,{'transaction':_0xe660a4});})[_0x529f('0x29')](function(){return db['TeamVoicePrefix'][_0x529f('0x78')]({'where':{'teamId':_0xd54448}})[_0x529f('0x29')](function(_0x28e15f){if(_0x28e15f){var _0x3f1b0a=_[_0x529f('0x32')](_0xaeaeba,function(_0x315d16){db[_0x529f('0x6d')][_0x529f('0x54')]({'where':{'UserId':_0x315d16,'VoicePrefixId':_0x28e15f[_0x529f('0x91')]}});});return Promise[_0x529f('0x90')](_0x3f1b0a);}});});});}})['then'](respondWithStatusCode(_0x4cded4,null))[_0x529f('0x49')](handleError(_0x4cded4,null));};exports[_0x529f('0x97')]=function(_0x54af22,_0x385baa,_0xb0dd65){var _0x1eef02={};var _0x40ce20={};var _0x48de07;var _0xca906b;return db[_0x529f('0x2d')]['findOne']({'where':{'id':_0x54af22['params']['id']}})[_0x529f('0x29')](handleEntityNotFound(_0x385baa,null))[_0x529f('0x29')](function(_0x5b3e23){if(_0x5b3e23){_0x48de07=_0x5b3e23;_0x40ce20['model']=_[_0x529f('0x34')](db[_0x529f('0x87')][_0x529f('0x75')]);_0x40ce20[_0x529f('0x33')]=_[_0x529f('0x34')](_0x54af22[_0x529f('0x33')]);_0x40ce20[_0x529f('0x3c')]=_[_0x529f('0x36')](_0x40ce20['model'],_0x40ce20['query']);_0x1eef02[_0x529f('0x35')]=_['intersection'](_0x40ce20[_0x529f('0x31')],qs[_0x529f('0x37')](_0x54af22[_0x529f('0x33')]['fields']));_0x1eef02['attributes']=_0x1eef02[_0x529f('0x35')][_0x529f('0x46')]?_0x1eef02[_0x529f('0x35')]:_0x40ce20[_0x529f('0x31')];_0x1eef02[_0x529f('0x3a')]=qs[_0x529f('0x3b')](_0x54af22[_0x529f('0x33')][_0x529f('0x3b')]);_0x1eef02[_0x529f('0x3e')]=qs[_0x529f('0x3c')](_[_0x529f('0x3d')](_0x54af22[_0x529f('0x33')],_0x40ce20[_0x529f('0x3c')]));if(_0x54af22[_0x529f('0x33')][_0x529f('0x98')]){_0x1eef02['where']=_[_0x529f('0x47')](_0x1eef02['where'],{'$or':_[_0x529f('0x32')](_0x1eef02['attributes'],function(_0x48677d){var _0x40ed05={};_0x40ed05[_0x48677d]={'$like':'%'+_0x54af22[_0x529f('0x33')]['filter']+'%'};return _0x40ed05;})});}_0x1eef02=_[_0x529f('0x47')]({},_0x1eef02,_0x54af22[_0x529f('0x40')]);return _0x48de07['getAgents'](_0x1eef02);}})[_0x529f('0x29')](function(_0x392c7a){if(_0x392c7a){_0xca906b=_0x392c7a['length'];if(!_0x54af22[_0x529f('0x33')][_0x529f('0x38')]('nolimit')){_0x1eef02[_0x529f('0x24')]=qs[_0x529f('0x24')](_0x54af22[_0x529f('0x33')][_0x529f('0x24')]);_0x1eef02[_0x529f('0x26')]=qs[_0x529f('0x26')](_0x54af22[_0x529f('0x33')][_0x529f('0x26')]);}return _0x48de07['getAgents'](_0x1eef02);}})[_0x529f('0x29')](function(_0x17aa20){if(_0x17aa20){return _0x17aa20?{'count':_0xca906b,'rows':_0x17aa20}:null;}})[_0x529f('0x29')](respondWithResult(_0x385baa,null))[_0x529f('0x49')](handleError(_0x385baa,null));}; \ No newline at end of file diff --git a/server/api/team/team.events.js b/server/api/team/team.events.js new file mode 100644 index 0000000..1060eff --- /dev/null +++ b/server/api/team/team.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x680b=['remove','emit','hasOwnProperty','hook','exports','events','save'];(function(_0x81e39d,_0x4c3934){var _0x548fbb=function(_0x1adda5){while(--_0x1adda5){_0x81e39d['push'](_0x81e39d['shift']());}};_0x548fbb(++_0x4c3934);}(_0x680b,0x10f));var _0xb680=function(_0x1a2ccd,_0x356f8c){_0x1a2ccd=_0x1a2ccd-0x0;var _0x52fb4f=_0x680b[_0x1a2ccd];return _0x52fb4f;};'use strict';var EventEmitter=require(_0xb680('0x0'));var Team=require('../../mysqldb')['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb680('0x1'),'afterUpdate':'update','afterDestroy':_0xb680('0x2')};function emitEvent(_0x50ba97){return function(_0x12a8cf,_0x4869c4,_0x302f73){TeamEvents[_0xb680('0x3')](_0x50ba97+':'+_0x12a8cf['id'],_0x12a8cf);TeamEvents['emit'](_0x50ba97,_0x12a8cf);_0x302f73(null);};}for(var e in events){if(events[_0xb680('0x4')](e)){var event=events[e];Team[_0xb680('0x5')](e,emitEvent(event));}}module[_0xb680('0x6')]=TeamEvents; \ No newline at end of file diff --git a/server/api/team/team.model.js b/server/api/team/team.model.js new file mode 100644 index 0000000..6d5d104 --- /dev/null +++ b/server/api/team/team.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbb00=['then','map','catch','exports','define','Team','teams','Fax','Mail','Openchannel','Sms','Voice','resolve','all','lodash','get'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xbb00,0x13e));var _0x0bb0=function(_0x29b1b7,_0x9947f){_0x29b1b7=_0x29b1b7-0x0;var _0x326e97=_0xbb00[_0x29b1b7];return _0x326e97;};'use strict';var _=require(_0x0bb0('0x0'));var attributes=require('./team.attributes');function getQueuesByChannel(_0x1a24fc,_0x35b047){var _0x1bd1aa=_0x0bb0('0x1')+_0x35b047+'Queues';return _0x1a24fc[_0x1bd1aa]()[_0x0bb0('0x2')](function(_0x217ceb){return _[_0x0bb0('0x3')](_0x217ceb,function(_0x1a114d){_0x1a114d['setDataValue']('channel',_0x35b047);return _0x1a114d;});})[_0x0bb0('0x4')](function(_0x321ddb){throw _0x321ddb;});}module[_0x0bb0('0x5')]=function(_0x1a5f38){return _0x1a5f38[_0x0bb0('0x6')](_0x0bb0('0x7'),attributes,{'tableName':_0x0bb0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x5c1960=this;var _0x22b9bd=['Chat',_0x0bb0('0x9'),_0x0bb0('0xa'),_0x0bb0('0xb'),_0x0bb0('0xc'),_0x0bb0('0xd'),'Whatsapp'];return Promise[_0x0bb0('0xe')]()['then'](function(){var _0xad7d2d=_[_0x0bb0('0x3')](_0x22b9bd,function(_0x237c49){return getQueuesByChannel(_0x5c1960,_0x237c49);});return Promise[_0x0bb0('0xf')](_0xad7d2d);})['catch'](function(_0x4ffdf0){throw _0x4ffdf0;});}}});}; \ No newline at end of file diff --git a/server/api/team/team.rpc.js b/server/api/team/team.rpc.js new file mode 100644 index 0000000..e54ca3a --- /dev/null +++ b/server/api/team/team.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4855=['moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','info','request\x20sent','Team,\x20%s,\x20%s,\x20%s','error','code','Team,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x1b85b3,_0x23861a){var _0x35a6b9=function(_0x1b663e){while(--_0x1b663e){_0x1b85b3['push'](_0x1b85b3['shift']());}};_0x35a6b9(++_0x23861a);}(_0x4855,0x1d9));var _0x5485=function(_0x10bae6,_0x41d85f){_0x10bae6=_0x10bae6-0x0;var _0x251123=_0x4855[_0x10bae6];return _0x251123;};'use strict';var _=require(_0x5485('0x0'));var util=require(_0x5485('0x1'));var moment=require(_0x5485('0x2'));var BPromise=require(_0x5485('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5485('0x4'));var db=require(_0x5485('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5485('0x6'))('rpc');var config=require(_0x5485('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5485('0x8')][_0x5485('0x9')]({'port':0x232a});config[_0x5485('0xa')]=_[_0x5485('0xb')](config[_0x5485('0xa')],{'host':_0x5485('0xc'),'port':0x18eb});var socket=require(_0x5485('0xd'))(new Redis(config[_0x5485('0xa')]));require(_0x5485('0xe'))[_0x5485('0xf')](socket);function respondWithRpcPromise(_0x7ce15e,_0x76b576,_0x233cc1){return new BPromise(function(_0x5b9662,_0x31786f){return client[_0x5485('0x10')](_0x7ce15e,_0x233cc1)['then'](function(_0x30688c){logger[_0x5485('0x11')]('Team,\x20%s,\x20%s',_0x76b576,_0x5485('0x12'));logger['debug'](_0x5485('0x13'),_0x76b576,_0x5485('0x12'),JSON['stringify'](_0x30688c));if(_0x30688c['error']){if(_0x30688c[_0x5485('0x14')][_0x5485('0x15')]===0x1f4){logger[_0x5485('0x14')](_0x5485('0x16'),_0x76b576,_0x30688c[_0x5485('0x14')][_0x5485('0x17')]);return _0x31786f(_0x30688c['error'][_0x5485('0x17')]);}logger[_0x5485('0x14')](_0x5485('0x16'),_0x76b576,_0x30688c[_0x5485('0x14')][_0x5485('0x17')]);return _0x5b9662(_0x30688c[_0x5485('0x14')][_0x5485('0x17')]);}else{logger[_0x5485('0x11')]('Team,\x20%s,\x20%s',_0x76b576,_0x5485('0x12'));_0x5b9662(_0x30688c['result']['message']);}})[_0x5485('0x18')](function(_0x36e66c){logger[_0x5485('0x14')]('Team,\x20%s,\x20%s',_0x76b576,_0x36e66c);_0x31786f(_0x36e66c);});});} \ No newline at end of file diff --git a/server/api/team/team.socket.js b/server/api/team/team.socket.js new file mode 100644 index 0000000..837f455 --- /dev/null +++ b/server/api/team/team.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe62a=['team:','./team.events','save','emit','removeListener','register','length'];(function(_0x1f951b,_0x654997){var _0x503af0=function(_0x40a7d9){while(--_0x40a7d9){_0x1f951b['push'](_0x1f951b['shift']());}};_0x503af0(++_0x654997);}(_0xe62a,0x143));var _0xae62=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe62a[_0x19950b];return _0x3c6b41;};'use strict';var TeamEvents=require(_0xae62('0x0'));var events=[_0xae62('0x1'),'remove','update'];function createListener(_0x4b6bce,_0x10f15b){return function(_0x37923c){_0x10f15b[_0xae62('0x2')](_0x4b6bce,_0x37923c);};}function removeListener(_0x3ce754,_0x2bb2ba){return function(){TeamEvents[_0xae62('0x3')](_0x3ce754,_0x2bb2ba);};}exports[_0xae62('0x4')]=function(_0x1c69d8){for(var _0x10a5dd=0x0,_0x362244=events[_0xae62('0x5')];_0x10a5dd<_0x362244;_0x10a5dd++){var _0x2a8d24=events[_0x10a5dd];var _0x891ab3=createListener(_0xae62('0x6')+_0x2a8d24,_0x1c69d8);TeamEvents['on'](_0x2a8d24,_0x891ab3);}}; \ No newline at end of file diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js new file mode 100644 index 0000000..23ebf6a --- /dev/null +++ b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbc47=['exports','INTEGER','sequelize'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbc47,0x7a));var _0x7bc4=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xbc47[_0x279d37];return _0x530173;};'use strict';var Sequelize=require(_0x7bc4('0x0'));module[_0x7bc4('0x1')]={'TeamId':{'type':Sequelize[_0x7bc4('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x7bc4('0x2')]}}; \ No newline at end of file diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js new file mode 100644 index 0000000..c663263 --- /dev/null +++ b/server/api/teamVoicePrefix/teamVoicePrefix.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf996=['path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','../../config/logger','moment'];(function(_0x50d984,_0x4d41e4){var _0xa81ece=function(_0x45e047){while(--_0x45e047){_0x50d984['push'](_0x50d984['shift']());}};_0xa81ece(++_0x4d41e4);}(_0xf996,0x74));var _0x6f99=function(_0x48b7ca,_0x592d87){_0x48b7ca=_0x48b7ca-0x0;var _0x2d4fda=_0xf996[_0x48b7ca];return _0x2d4fda;};'use strict';var _=require(_0x6f99('0x0'));var util=require(_0x6f99('0x1'));var logger=require(_0x6f99('0x2'))('api');var moment=require(_0x6f99('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6f99('0x4'));var rimraf=require(_0x6f99('0x5'));var config=require(_0x6f99('0x6'));var attributes=require(_0x6f99('0x7'));module[_0x6f99('0x8')]=function(_0xf2b5ee,_0xa07ac1){return _0xf2b5ee[_0x6f99('0x9')](_0x6f99('0xa'),attributes,{'tableName':_0x6f99('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/teamVoiceQueue/index.js b/server/api/teamVoiceQueue/index.js new file mode 100644 index 0000000..a6b752c --- /dev/null +++ b/server/api/teamVoiceQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x2c3255,_0x4e00ae){var _0x282aba=function(_0x5721d5){while(--_0x5721d5){_0x2c3255['push'](_0x2c3255['shift']());}};_0x282aba(++_0x4e00ae);}(_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 diff --git a/server/api/teamVoiceQueue/teamVoiceQueue.attributes.js b/server/api/teamVoiceQueue/teamVoiceQueue.attributes.js new file mode 100644 index 0000000..c9b7819 --- /dev/null +++ b/server/api/teamVoiceQueue/teamVoiceQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3697=['INTEGER','sequelize','exports'];(function(_0x2921de,_0x5896b3){var _0x3b8d59=function(_0x435c59){while(--_0x435c59){_0x2921de['push'](_0x2921de['shift']());}};_0x3b8d59(++_0x5896b3);}(_0x3697,0x1ea));var _0x7369=function(_0x37e0a0,_0x462179){_0x37e0a0=_0x37e0a0-0x0;var _0x21badd=_0x3697[_0x37e0a0];return _0x21badd;};'use strict';var Sequelize=require(_0x7369('0x0'));module[_0x7369('0x1')]={'penalty':{'type':Sequelize[_0x7369('0x2')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/teamVoiceQueue/teamVoiceQueue.model.js b/server/api/teamVoiceQueue/teamVoiceQueue.model.js new file mode 100644 index 0000000..635e863 --- /dev/null +++ b/server/api/teamVoiceQueue/teamVoiceQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5636=['./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','bluebird','request-promise','path','../../config/environment'];(function(_0x287883,_0x39bc56){var _0x477ce9=function(_0x28e702){while(--_0x28e702){_0x287883['push'](_0x287883['shift']());}};_0x477ce9(++_0x39bc56);}(_0x5636,0x102));var _0x6563=function(_0x48666f,_0x2c7e1a){_0x48666f=_0x48666f-0x0;var _0xc3d576=_0x5636[_0x48666f];return _0xc3d576;};'use strict';var _=require(_0x6563('0x0'));var util=require(_0x6563('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6563('0x2'));var rp=require(_0x6563('0x3'));var fs=require('fs');var path=require(_0x6563('0x4'));var rimraf=require('rimraf');var config=require(_0x6563('0x5'));var attributes=require(_0x6563('0x6'));module[_0x6563('0x7')]=function(_0x39792f,_0x29f687){return _0x39792f[_0x6563('0x8')](_0x6563('0x9'),attributes,{'tableName':_0x6563('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/teamVoiceQueue/teamVoiceQueue.rpc.js b/server/api/teamVoiceQueue/teamVoiceQueue.rpc.js new file mode 100644 index 0000000..8634c39 --- /dev/null +++ b/server/api/teamVoiceQueue/teamVoiceQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa952=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','error','code','TeamVoiceQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x54a14f,_0x59c124){var _0x47d334=function(_0xfe197f){while(--_0xfe197f){_0x54a14f['push'](_0x54a14f['shift']());}};_0x47d334(++_0x59c124);}(_0xa952,0x1b2));var _0x2a95=function(_0x1c0713,_0xb12e42){_0x1c0713=_0x1c0713-0x0;var _0x3559a6=_0xa952[_0x1c0713];return _0x3559a6;};'use strict';var _=require(_0x2a95('0x0'));var util=require(_0x2a95('0x1'));var moment=require(_0x2a95('0x2'));var BPromise=require(_0x2a95('0x3'));var rs=require(_0x2a95('0x4'));var fs=require('fs');var Redis=require(_0x2a95('0x5'));var db=require(_0x2a95('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2a95('0x7'))(_0x2a95('0x8'));var config=require(_0x2a95('0x9'));var jayson=require(_0x2a95('0xa'));var client=jayson['client'][_0x2a95('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c279d,_0x36e284,_0x538ef9){return new BPromise(function(_0x2a9705,_0x4922bc){return client[_0x2a95('0xc')](_0x1c279d,_0x538ef9)[_0x2a95('0xd')](function(_0x15b1c8){logger[_0x2a95('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x36e284,_0x2a95('0xf'));logger[_0x2a95('0x10')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x36e284,_0x2a95('0xf'),JSON['stringify'](_0x15b1c8));if(_0x15b1c8[_0x2a95('0x11')]){if(_0x15b1c8[_0x2a95('0x11')][_0x2a95('0x12')]===0x1f4){logger[_0x2a95('0x11')](_0x2a95('0x13'),_0x36e284,_0x15b1c8[_0x2a95('0x11')][_0x2a95('0x14')]);return _0x4922bc(_0x15b1c8[_0x2a95('0x11')][_0x2a95('0x14')]);}logger['error'](_0x2a95('0x13'),_0x36e284,_0x15b1c8[_0x2a95('0x11')][_0x2a95('0x14')]);return _0x2a9705(_0x15b1c8[_0x2a95('0x11')][_0x2a95('0x14')]);}else{logger[_0x2a95('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x36e284,'request\x20sent');_0x2a9705(_0x15b1c8['result'][_0x2a95('0x14')]);}})[_0x2a95('0x15')](function(_0x3d3448){logger[_0x2a95('0x11')](_0x2a95('0x13'),_0x36e284,_0x3d3448);_0x4922bc(_0x3d3448);});});} \ No newline at end of file diff --git a/server/api/template/index.js b/server/api/template/index.js new file mode 100644 index 0000000..ddf1707 --- /dev/null +++ b/server/api/template/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9fc=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','index','/:id','isAuthenticated','show','post','create','put','update','delete'];(function(_0x3743d4,_0x73ba92){var _0x4e3e2f=function(_0x40a8af){while(--_0x40a8af){_0x3743d4['push'](_0x3743d4['shift']());}};_0x4e3e2f(++_0x73ba92);}(_0xa9fc,0x19f));var _0xca9f=function(_0x1602fb,_0x20b6b3){_0x1602fb=_0x1602fb-0x0;var _0x461831=_0xa9fc[_0x1602fb];return _0x461831;};'use strict';var multer=require(_0xca9f('0x0'));var util=require(_0xca9f('0x1'));var path=require(_0xca9f('0x2'));var timeout=require(_0xca9f('0x3'));var express=require(_0xca9f('0x4'));var router=express['Router']();var fs_extra=require(_0xca9f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xca9f('0x6'));var config=require(_0xca9f('0x7'));var controller=require('./template.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xca9f('0x8')]);router['get'](_0xca9f('0x9'),auth[_0xca9f('0xa')](),controller[_0xca9f('0xb')]);router[_0xca9f('0xc')]('/',auth[_0xca9f('0xa')](),controller[_0xca9f('0xd')]);router[_0xca9f('0xe')](_0xca9f('0x9'),auth['isAuthenticated'](),controller[_0xca9f('0xf')]);router[_0xca9f('0x10')](_0xca9f('0x9'),auth[_0xca9f('0xa')](),controller['destroy']);module[_0xca9f('0x11')]=router; \ No newline at end of file diff --git a/server/api/template/template.attributes.js b/server/api/template/template.attributes.js new file mode 100644 index 0000000..d346158 --- /dev/null +++ b/server/api/template/template.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8f53=['exports','STRING','sequelize'];(function(_0x496b11,_0x576cb0){var _0x3030ac=function(_0x38185b){while(--_0x38185b){_0x496b11['push'](_0x496b11['shift']());}};_0x3030ac(++_0x576cb0);}(_0x8f53,0x125));var _0x38f5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8f53[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x38f5('0x0'));module[_0x38f5('0x1')]={'name':{'type':Sequelize[_0x38f5('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}}; \ No newline at end of file diff --git a/server/api/template/template.controller.js b/server/api/template/template.controller.js new file mode 100644 index 0000000..841cace --- /dev/null +++ b/server/api/template/template.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4388=['../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','end','error','name','send','index','map','Template','fieldName','type','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','params','rawAttributes','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Templates','UserProfileSection','userProfileId','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x2d7e09,_0x16be83){var _0x1ba707=function(_0x4d3063){while(--_0x4d3063){_0x2d7e09['push'](_0x2d7e09['shift']());}};_0x1ba707(++_0x16be83);}(_0x4388,0x127));var _0x8438=function(_0x10a951,_0x5da875){_0x10a951=_0x10a951-0x0;var _0x6da0d=_0x4388[_0x10a951];return _0x6da0d;};'use strict';var emlformat=require(_0x8438('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8438('0x1'));var jsonpatch=require(_0x8438('0x2'));var rp=require(_0x8438('0x3'));var moment=require(_0x8438('0x4'));var BPromise=require(_0x8438('0x5'));var Mustache=require('mustache');var util=require(_0x8438('0x6'));var path=require(_0x8438('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8438('0x8'));var _=require('lodash');var squel=require(_0x8438('0x9'));var crypto=require(_0x8438('0xa'));var jsforce=require(_0x8438('0xb'));var deskjs=require(_0x8438('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8438('0xd'));var Redis=require(_0x8438('0xe'));var authService=require(_0x8438('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8438('0x10'));var hardwareService=require(_0x8438('0x11'));var logger=require(_0x8438('0x12'))('api');var utils=require(_0x8438('0x13'));var config=require(_0x8438('0x14'));var licenseUtil=require(_0x8438('0x15'));var db=require(_0x8438('0x16'))['db'];function respondWithStatusCode(_0x43fcb5,_0x4fe2d2){_0x4fe2d2=_0x4fe2d2||0xcc;return function(_0x1cf599){if(_0x1cf599){return _0x43fcb5[_0x8438('0x17')](_0x4fe2d2);}return _0x43fcb5[_0x8438('0x18')](_0x4fe2d2)['end']();};}function respondWithResult(_0x403773,_0x57f98e){_0x57f98e=_0x57f98e||0xc8;return function(_0x53224d){if(_0x53224d){return _0x403773[_0x8438('0x18')](_0x57f98e)[_0x8438('0x19')](_0x53224d);}};}function respondWithFilteredResult(_0x562c66,_0x5639f4){return function(_0x4601d9){if(_0x4601d9){var _0x4171f2=typeof _0x5639f4[_0x8438('0x1a')]===_0x8438('0x1b')&&typeof _0x5639f4[_0x8438('0x1c')]===_0x8438('0x1b');var _0x2cbf37=_0x4601d9['count'];var _0x58110d=_0x4171f2?0x0:_0x5639f4['offset'];var _0xccb427=_0x4171f2?_0x4601d9[_0x8438('0x1d')]:_0x5639f4['offset']+_0x5639f4[_0x8438('0x1c')];var _0xa0edc0;if(_0xccb427>=_0x2cbf37){_0xccb427=_0x2cbf37;_0xa0edc0=0xc8;}else{_0xa0edc0=0xce;}_0x562c66['status'](_0xa0edc0);return _0x562c66[_0x8438('0x1e')](_0x8438('0x1f'),_0x58110d+'-'+_0xccb427+'/'+_0x2cbf37)[_0x8438('0x19')](_0x4601d9);}return null;};}function patchUpdates(_0x3c62be){return function(_0x23d43e){try{jsonpatch['apply'](_0x23d43e,_0x3c62be,!![]);}catch(_0x441a8c){return BPromise[_0x8438('0x20')](_0x441a8c);}return _0x23d43e[_0x8438('0x21')]();};}function saveUpdates(_0xcc7d67,_0x391848){return function(_0x59a60c){if(_0x59a60c){return _0x59a60c[_0x8438('0x22')](_0xcc7d67)['then'](function(_0x3ea90b){return _0x3ea90b;});}return null;};}function removeEntity(_0x23947c,_0xd81cf1){return function(_0x2a947b){if(_0x2a947b){return _0x2a947b[_0x8438('0x23')]()[_0x8438('0x24')](function(){var _0x5d4369=_0x2a947b['get']({'plain':!![]});var _0x31a318='Templates';return db['UserProfileResource'][_0x8438('0x23')]({'where':{'type':_0x31a318,'resourceId':_0x5d4369['id']}})['then'](function(){return _0x2a947b;});})[_0x8438('0x24')](function(){_0x23947c['status'](0xcc)[_0x8438('0x25')]();});}};}function handleEntityNotFound(_0x5a80e3,_0x4b4069){return function(_0x1f101a){if(!_0x1f101a){_0x5a80e3[_0x8438('0x17')](0x194);}return _0x1f101a;};}function handleError(_0x3359e6,_0xad7dd4){_0xad7dd4=_0xad7dd4||0x1f4;return function(_0x3f8bae){logger[_0x8438('0x26')](_0x3f8bae['stack']);if(_0x3f8bae[_0x8438('0x27')]){delete _0x3f8bae['name'];}_0x3359e6[_0x8438('0x18')](_0xad7dd4)[_0x8438('0x28')](_0x3f8bae);};}exports[_0x8438('0x29')]=function(_0x1efe7f,_0x5a07d9){var _0x103b8b={},_0x5787a1={},_0x28d6a3={'count':0x0,'rows':[]};var _0x3b0bee=_[_0x8438('0x2a')](db[_0x8438('0x2b')]['rawAttributes'],function(_0x51af99){return{'name':_0x51af99[_0x8438('0x2c')],'type':_0x51af99[_0x8438('0x2d')][_0x8438('0x2e')]};});_0x5787a1['model']=_['map'](_0x3b0bee,'name');_0x5787a1['query']=_[_0x8438('0x2f')](_0x1efe7f[_0x8438('0x30')]);_0x5787a1['filters']=_[_0x8438('0x31')](_0x5787a1[_0x8438('0x32')],_0x5787a1['query']);_0x103b8b[_0x8438('0x33')]=_[_0x8438('0x31')](_0x5787a1[_0x8438('0x32')],qs[_0x8438('0x34')](_0x1efe7f[_0x8438('0x30')]['fields']));_0x103b8b[_0x8438('0x33')]=_0x103b8b['attributes'][_0x8438('0x35')]?_0x103b8b['attributes']:_0x5787a1[_0x8438('0x32')];if(!_0x1efe7f['query'][_0x8438('0x36')](_0x8438('0x37'))){_0x103b8b[_0x8438('0x1c')]=qs[_0x8438('0x1c')](_0x1efe7f[_0x8438('0x30')][_0x8438('0x1c')]);_0x103b8b['offset']=qs[_0x8438('0x1a')](_0x1efe7f[_0x8438('0x30')]['offset']);}_0x103b8b['order']=qs[_0x8438('0x38')](_0x1efe7f[_0x8438('0x30')]['sort']);_0x103b8b[_0x8438('0x39')]=qs[_0x8438('0x3a')](_[_0x8438('0x3b')](_0x1efe7f['query'],_0x5787a1[_0x8438('0x3a')]),_0x3b0bee);if(_0x1efe7f[_0x8438('0x30')][_0x8438('0x3c')]){_0x103b8b['where']=_['merge'](_0x103b8b[_0x8438('0x39')],{'$or':_[_0x8438('0x2a')](_0x3b0bee,function(_0x2687ac){if(_0x2687ac[_0x8438('0x2d')]!==_0x8438('0x3d')){var _0x1197fb={};_0x1197fb[_0x2687ac['name']]={'$like':'%'+_0x1efe7f[_0x8438('0x30')][_0x8438('0x3c')]+'%'};return _0x1197fb;}})});}_0x103b8b=_[_0x8438('0x3e')]({},_0x103b8b,_0x1efe7f[_0x8438('0x3f')]);var _0x5793c4={'where':_0x103b8b[_0x8438('0x39')]};return db['Template'][_0x8438('0x1d')](_0x5793c4)[_0x8438('0x24')](function(_0x303ada){_0x28d6a3[_0x8438('0x1d')]=_0x303ada;if(_0x1efe7f[_0x8438('0x30')][_0x8438('0x40')]){_0x103b8b[_0x8438('0x41')]=[{'all':!![]}];}return db['Template'][_0x8438('0x42')](_0x103b8b);})[_0x8438('0x24')](function(_0x3727e3){_0x28d6a3['rows']=_0x3727e3;return _0x28d6a3;})[_0x8438('0x24')](respondWithFilteredResult(_0x5a07d9,_0x103b8b))['catch'](handleError(_0x5a07d9,null));};exports['show']=function(_0x4d7d60,_0x1781b1){var _0x2d744e={'raw':!![],'where':{'id':_0x4d7d60[_0x8438('0x43')]['id']}},_0x9879b7={};_0x9879b7[_0x8438('0x32')]=_[_0x8438('0x2f')](db[_0x8438('0x2b')][_0x8438('0x44')]);_0x9879b7[_0x8438('0x30')]=_[_0x8438('0x2f')](_0x4d7d60['query']);_0x9879b7['filters']=_[_0x8438('0x31')](_0x9879b7[_0x8438('0x32')],_0x9879b7[_0x8438('0x30')]);_0x2d744e[_0x8438('0x33')]=_[_0x8438('0x31')](_0x9879b7[_0x8438('0x32')],qs[_0x8438('0x34')](_0x4d7d60[_0x8438('0x30')]['fields']));_0x2d744e[_0x8438('0x33')]=_0x2d744e['attributes'][_0x8438('0x35')]?_0x2d744e[_0x8438('0x33')]:_0x9879b7['model'];if(_0x4d7d60[_0x8438('0x30')][_0x8438('0x40')]){_0x2d744e[_0x8438('0x41')]=[{'all':!![]}];}_0x2d744e=_[_0x8438('0x3e')]({},_0x2d744e,_0x4d7d60[_0x8438('0x3f')]);return db[_0x8438('0x2b')][_0x8438('0x45')](_0x2d744e)[_0x8438('0x24')](handleEntityNotFound(_0x1781b1,null))['then'](respondWithResult(_0x1781b1,null))[_0x8438('0x46')](handleError(_0x1781b1,null));};exports[_0x8438('0x47')]=function(_0x30da72,_0x2369b6){return db[_0x8438('0x2b')][_0x8438('0x47')](_0x30da72['body'],{})[_0x8438('0x24')](function(_0x9a11c9){var _0x361630=_0x30da72[_0x8438('0x48')][_0x8438('0x49')]({'plain':!![]});if(!_0x361630)throw new Error(_0x8438('0x4a'));if(_0x361630['role']===_0x8438('0x48')){var _0x54e116=_0x9a11c9['get']({'plain':!![]});var _0x48c290=_0x8438('0x4b');return db[_0x8438('0x4c')]['find']({'where':{'name':_0x48c290,'userProfileId':_0x361630[_0x8438('0x4d')]},'raw':!![]})[_0x8438('0x24')](function(_0xb83c7b){if(_0xb83c7b&&_0xb83c7b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x54e116[_0x8438('0x27')],'resourceId':_0x54e116['id'],'type':_0xb83c7b[_0x8438('0x27')],'sectionId':_0xb83c7b['id']},{})['then'](function(){return _0x9a11c9;});}else{return _0x9a11c9;}})['catch'](function(_0x3170e9){logger[_0x8438('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3170e9);throw _0x3170e9;});}return _0x9a11c9;})[_0x8438('0x24')](respondWithResult(_0x2369b6,0xc9))['catch'](handleError(_0x2369b6,null));};exports[_0x8438('0x22')]=function(_0x5b9aad,_0x42aab3){if(_0x5b9aad[_0x8438('0x4e')]['id']){delete _0x5b9aad['body']['id'];}return db['Template'][_0x8438('0x45')]({'where':{'id':_0x5b9aad[_0x8438('0x43')]['id']}})[_0x8438('0x24')](handleEntityNotFound(_0x42aab3,null))[_0x8438('0x24')](saveUpdates(_0x5b9aad[_0x8438('0x4e')],null))['then'](respondWithResult(_0x42aab3,null))[_0x8438('0x46')](handleError(_0x42aab3,null));};exports[_0x8438('0x23')]=function(_0x166456,_0xa1de40){return db[_0x8438('0x2b')][_0x8438('0x45')]({'where':{'id':_0x166456[_0x8438('0x43')]['id']}})[_0x8438('0x24')](handleEntityNotFound(_0xa1de40,null))[_0x8438('0x24')](removeEntity(_0xa1de40,null))[_0x8438('0x46')](handleError(_0xa1de40,null));}; \ No newline at end of file diff --git a/server/api/template/template.model.js b/server/api/template/template.model.js new file mode 100644 index 0000000..2abc473 --- /dev/null +++ b/server/api/template/template.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x267f=['rimraf','exports','define','Template','lodash','util','api','request-promise'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x267f,0x64));var _0xf267=function(_0x562c31,_0x15841a){_0x562c31=_0x562c31-0x0;var _0x480eb4=_0x267f[_0x562c31];return _0x480eb4;};'use strict';var _=require(_0xf267('0x0'));var util=require(_0xf267('0x1'));var logger=require('../../config/logger')(_0xf267('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf267('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf267('0x4'));var config=require('../../config/environment');var attributes=require('./template.attributes');module[_0xf267('0x5')]=function(_0xaab24,_0xfb8eca){return _0xaab24[_0xf267('0x6')](_0xf267('0x7'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/template/template.rpc.js b/server/api/template/template.rpc.js new file mode 100644 index 0000000..58868e2 --- /dev/null +++ b/server/api/template/template.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcd84=['rpc','../../config/environment','http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetTemplate','Template','findAll','options','raw','where','include','map','attributes','model','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xcd84,0x1d9));var _0x4cd8=function(_0x236812,_0x40484a){_0x236812=_0x236812-0x0;var _0x28b8e2=_0xcd84[_0x236812];return _0x28b8e2;};'use strict';var _=require('lodash');var util=require(_0x4cd8('0x0'));var moment=require(_0x4cd8('0x1'));var BPromise=require(_0x4cd8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4cd8('0x3'));var db=require(_0x4cd8('0x4'))['db'];var utils=require(_0x4cd8('0x5'));var logger=require(_0x4cd8('0x6'))(_0x4cd8('0x7'));var config=require(_0x4cd8('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4cd8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x427835,_0x2fc73f,_0x6cfede){return new BPromise(function(_0x25400f,_0x3389c6){return client[_0x4cd8('0xa')](_0x427835,_0x6cfede)[_0x4cd8('0xb')](function(_0xc4ab9f){logger[_0x4cd8('0xc')](_0x4cd8('0xd'),_0x2fc73f,_0x4cd8('0xe'));logger[_0x4cd8('0xf')](_0x4cd8('0x10'),_0x2fc73f,'request\x20sent',JSON[_0x4cd8('0x11')](_0xc4ab9f));if(_0xc4ab9f[_0x4cd8('0x12')]){if(_0xc4ab9f[_0x4cd8('0x12')][_0x4cd8('0x13')]===0x1f4){logger[_0x4cd8('0x12')](_0x4cd8('0xd'),_0x2fc73f,_0xc4ab9f[_0x4cd8('0x12')][_0x4cd8('0x14')]);return _0x3389c6(_0xc4ab9f[_0x4cd8('0x12')][_0x4cd8('0x14')]);}logger[_0x4cd8('0x12')](_0x4cd8('0xd'),_0x2fc73f,_0xc4ab9f[_0x4cd8('0x12')]['message']);return _0x25400f(_0xc4ab9f[_0x4cd8('0x12')]['message']);}else{logger[_0x4cd8('0xc')](_0x4cd8('0xd'),_0x2fc73f,_0x4cd8('0xe'));_0x25400f(_0xc4ab9f['result'][_0x4cd8('0x14')]);}})[_0x4cd8('0x15')](function(_0x3d0f97){logger[_0x4cd8('0x12')]('Template,\x20%s,\x20%s',_0x2fc73f,_0x3d0f97);_0x3389c6(_0x3d0f97);});});}exports[_0x4cd8('0x16')]=function(_0x47a364){var _0x216aa0=this;return new Promise(function(_0x21b3b6,_0x2a666e){return db[_0x4cd8('0x17')][_0x4cd8('0x18')]({'raw':_0x47a364[_0x4cd8('0x19')]?_0x47a364[_0x4cd8('0x19')][_0x4cd8('0x1a')]===undefined?!![]:![]:!![],'where':_0x47a364[_0x4cd8('0x19')]?_0x47a364[_0x4cd8('0x19')][_0x4cd8('0x1b')]||null:null,'attributes':_0x47a364[_0x4cd8('0x19')]?_0x47a364['options']['attributes']||null:null,'limit':_0x47a364[_0x4cd8('0x19')]?_0x47a364[_0x4cd8('0x19')]['limit']||null:null,'include':_0x47a364[_0x4cd8('0x19')]?_0x47a364[_0x4cd8('0x19')][_0x4cd8('0x1c')]?_[_0x4cd8('0x1d')](_0x47a364[_0x4cd8('0x19')]['include'],function(_0x4ea593){return{'model':db[_0x4ea593['model']],'as':_0x4ea593['as'],'attributes':_0x4ea593[_0x4cd8('0x1e')],'include':_0x4ea593[_0x4cd8('0x1c')]?_['map'](_0x4ea593[_0x4cd8('0x1c')],function(_0x5b0f5f){return{'model':db[_0x5b0f5f[_0x4cd8('0x1f')]],'as':_0x5b0f5f['as'],'attributes':_0x5b0f5f['attributes'],'include':_0x5b0f5f[_0x4cd8('0x1c')]?_[_0x4cd8('0x1d')](_0x5b0f5f[_0x4cd8('0x1c')],function(_0x2675ab){return{'model':db[_0x2675ab[_0x4cd8('0x1f')]],'as':_0x2675ab['as'],'attributes':_0x2675ab[_0x4cd8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4cd8('0xb')](function(_0x4656d4){logger[_0x4cd8('0xc')](_0x4cd8('0x16'),_0x47a364);logger['debug'](_0x4cd8('0x16'),_0x47a364,JSON[_0x4cd8('0x11')](_0x4656d4));_0x21b3b6(_0x4656d4);})[_0x4cd8('0x15')](function(_0x3cda62){logger[_0x4cd8('0x12')]('GetTemplate',_0x3cda62[_0x4cd8('0x14')],_0x47a364);_0x2a666e(_0x216aa0['error'](0x1f4,_0x3cda62['message']));});});}; \ No newline at end of file diff --git a/server/api/trigger/index.js b/server/api/trigger/index.js new file mode 100644 index 0000000..8c2170e --- /dev/null +++ b/server/api/trigger/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe3f6=['isAuthenticated','index','/:id/all_conditions','/:id/any_conditions','getAnyConditions','/:id/actions','create','post','addAllCondition','addAction','put','/:id','update','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3f6,0x92));var _0x6e3f=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0xe3f6[_0x616290];return _0x453879;};'use strict';var multer=require(_0x6e3f('0x0'));var util=require(_0x6e3f('0x1'));var path=require(_0x6e3f('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e3f('0x3'));var router=express['Router']();var fs_extra=require(_0x6e3f('0x4'));var auth=require(_0x6e3f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6e3f('0x6'));var controller=require('./trigger.controller');router[_0x6e3f('0x7')]('/',auth[_0x6e3f('0x8')](),controller[_0x6e3f('0x9')]);router[_0x6e3f('0x7')]('/:id',auth[_0x6e3f('0x8')](),controller['show']);router[_0x6e3f('0x7')](_0x6e3f('0xa'),auth[_0x6e3f('0x8')](),controller['getAllConditions']);router[_0x6e3f('0x7')](_0x6e3f('0xb'),auth[_0x6e3f('0x8')](),controller[_0x6e3f('0xc')]);router[_0x6e3f('0x7')](_0x6e3f('0xd'),auth[_0x6e3f('0x8')](),controller['getActions']);router['post']('/',auth['isAuthenticated'](),controller[_0x6e3f('0xe')]);router[_0x6e3f('0xf')](_0x6e3f('0xa'),auth[_0x6e3f('0x8')](),controller[_0x6e3f('0x10')]);router[_0x6e3f('0xf')]('/:id/any_conditions',auth[_0x6e3f('0x8')](),controller['addAnyCondition']);router['post'](_0x6e3f('0xd'),auth[_0x6e3f('0x8')](),controller[_0x6e3f('0x11')]);router[_0x6e3f('0x12')](_0x6e3f('0x13'),auth['isAuthenticated'](),controller[_0x6e3f('0x14')]);router['delete'](_0x6e3f('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e3f('0x15')]=router; \ No newline at end of file diff --git a/server/api/trigger/trigger.attributes.js b/server/api/trigger/trigger.attributes.js new file mode 100644 index 0000000..ebea0b9 --- /dev/null +++ b/server/api/trigger/trigger.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xaf70=['STRING','exports'];(function(_0x39a6ca,_0x10c9f0){var _0x752c2f=function(_0x3f6ed1){while(--_0x3f6ed1){_0x39a6ca['push'](_0x39a6ca['shift']());}};_0x752c2f(++_0x10c9f0);}(_0xaf70,0x10d));var _0x0af7=function(_0x5c737b,_0x13ad79){_0x5c737b=_0x5c737b-0x0;var _0x2b0492=_0xaf70[_0x5c737b];return _0x2b0492;};'use strict';var Sequelize=require('sequelize');module[_0x0af7('0x0')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x0af7('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/trigger/trigger.controller.js b/server/api/trigger/trigger.controller.js new file mode 100644 index 0000000..2477d69 --- /dev/null +++ b/server/api/trigger/trigger.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5eb4=['TriggerAnyId','Condition','getAllConditions','findOne','getAnyConditions','pick','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../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','limit','count','apply','reject','save','update','UserProfileResource','destroy','then','sendStatus','error','stack','name','send','index','map','Trigger','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','rows','params','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','catch','body','addAllCondition','TriggerAllId'];(function(_0x51d84c,_0x303457){var _0x52a4f2=function(_0x267d3a){while(--_0x267d3a){_0x51d84c['push'](_0x51d84c['shift']());}};_0x52a4f2(++_0x303457);}(_0x5eb4,0x1d6));var _0x45eb=function(_0x15c83b,_0x1299cc){_0x15c83b=_0x15c83b-0x0;var _0x1a54ef=_0x5eb4[_0x15c83b];return _0x1a54ef;};'use strict';var emlformat=require(_0x45eb('0x0'));var rimraf=require(_0x45eb('0x1'));var zipdir=require(_0x45eb('0x2'));var jsonpatch=require(_0x45eb('0x3'));var rp=require('request-promise');var moment=require(_0x45eb('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x45eb('0x5'));var path=require(_0x45eb('0x6'));var sox=require(_0x45eb('0x7'));var csv=require(_0x45eb('0x8'));var ejs=require(_0x45eb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x45eb('0xa'));var crypto=require(_0x45eb('0xb'));var jsforce=require(_0x45eb('0xc'));var deskjs=require(_0x45eb('0xd'));var toCsv=require(_0x45eb('0x8'));var querystring=require(_0x45eb('0xe'));var Papa=require(_0x45eb('0xf'));var Redis=require('ioredis');var authService=require(_0x45eb('0x10'));var qs=require(_0x45eb('0x11'));var as=require(_0x45eb('0x12'));var hardwareService=require(_0x45eb('0x13'));var logger=require('../../config/logger')(_0x45eb('0x14'));var utils=require(_0x45eb('0x15'));var config=require(_0x45eb('0x16'));var licenseUtil=require(_0x45eb('0x17'));var db=require(_0x45eb('0x18'))['db'];function respondWithStatusCode(_0x4cc905,_0x3c581f){_0x3c581f=_0x3c581f||0xcc;return function(_0x1761b6){if(_0x1761b6){return _0x4cc905['sendStatus'](_0x3c581f);}return _0x4cc905[_0x45eb('0x19')](_0x3c581f)[_0x45eb('0x1a')]();};}function respondWithResult(_0x3163ad,_0x210c03){_0x210c03=_0x210c03||0xc8;return function(_0x4bd580){if(_0x4bd580){return _0x3163ad[_0x45eb('0x19')](_0x210c03)[_0x45eb('0x1b')](_0x4bd580);}};}function respondWithFilteredResult(_0x371524,_0xe528f){return function(_0x2aba46){if(_0x2aba46){var _0xe24d6d=typeof _0xe528f[_0x45eb('0x1c')]===_0x45eb('0x1d')&&typeof _0xe528f[_0x45eb('0x1e')]===_0x45eb('0x1d');var _0x103cd9=_0x2aba46[_0x45eb('0x1f')];var _0x49720a=_0xe24d6d?0x0:_0xe528f[_0x45eb('0x1c')];var _0x51dcab=_0xe24d6d?_0x2aba46['count']:_0xe528f['offset']+_0xe528f[_0x45eb('0x1e')];var _0x4e2e1a;if(_0x51dcab>=_0x103cd9){_0x51dcab=_0x103cd9;_0x4e2e1a=0xc8;}else{_0x4e2e1a=0xce;}_0x371524['status'](_0x4e2e1a);return _0x371524['set']('Content-Range',_0x49720a+'-'+_0x51dcab+'/'+_0x103cd9)[_0x45eb('0x1b')](_0x2aba46);}return null;};}function patchUpdates(_0x50ddd2){return function(_0x241099){try{jsonpatch[_0x45eb('0x20')](_0x241099,_0x50ddd2,!![]);}catch(_0x262b55){return BPromise[_0x45eb('0x21')](_0x262b55);}return _0x241099[_0x45eb('0x22')]();};}function saveUpdates(_0x5e0435,_0x231082){return function(_0x26e976){if(_0x26e976){return _0x26e976[_0x45eb('0x23')](_0x5e0435)['then'](function(_0x164ddf){return _0x164ddf;});}return null;};}function removeEntity(_0x473e2d,_0x167725){return function(_0x289902){if(_0x289902){return _0x289902['destroy']()['then'](function(){var _0x56cc58=_0x289902['get']({'plain':!![]});var _0x4b9fb4='Triggers';return db[_0x45eb('0x24')][_0x45eb('0x25')]({'where':{'type':_0x4b9fb4,'resourceId':_0x56cc58['id']}})[_0x45eb('0x26')](function(){return _0x289902;});})[_0x45eb('0x26')](function(){_0x473e2d[_0x45eb('0x19')](0xcc)[_0x45eb('0x1a')]();});}};}function handleEntityNotFound(_0x12524d,_0x2d0373){return function(_0xdd6a28){if(!_0xdd6a28){_0x12524d[_0x45eb('0x27')](0x194);}return _0xdd6a28;};}function handleError(_0x150ac4,_0x5b4a4a){_0x5b4a4a=_0x5b4a4a||0x1f4;return function(_0x2a62e1){logger[_0x45eb('0x28')](_0x2a62e1[_0x45eb('0x29')]);if(_0x2a62e1[_0x45eb('0x2a')]){delete _0x2a62e1['name'];}_0x150ac4[_0x45eb('0x19')](_0x5b4a4a)[_0x45eb('0x2b')](_0x2a62e1);};}exports[_0x45eb('0x2c')]=function(_0x44ac5e,_0x455b85){var _0x56acb8={},_0x4e3122={},_0x5ed7b2={'count':0x0,'rows':[]};var _0x3c15f0=_[_0x45eb('0x2d')](db[_0x45eb('0x2e')][_0x45eb('0x2f')],function(_0x2ddc63){return{'name':_0x2ddc63[_0x45eb('0x30')],'type':_0x2ddc63[_0x45eb('0x31')]['key']};});_0x4e3122[_0x45eb('0x32')]=_[_0x45eb('0x2d')](_0x3c15f0,_0x45eb('0x2a'));_0x4e3122[_0x45eb('0x33')]=_[_0x45eb('0x34')](_0x44ac5e[_0x45eb('0x33')]);_0x4e3122[_0x45eb('0x35')]=_[_0x45eb('0x36')](_0x4e3122[_0x45eb('0x32')],_0x4e3122[_0x45eb('0x33')]);_0x56acb8[_0x45eb('0x37')]=_[_0x45eb('0x36')](_0x4e3122['model'],qs[_0x45eb('0x38')](_0x44ac5e[_0x45eb('0x33')][_0x45eb('0x38')]));_0x56acb8[_0x45eb('0x37')]=_0x56acb8['attributes'][_0x45eb('0x39')]?_0x56acb8[_0x45eb('0x37')]:_0x4e3122[_0x45eb('0x32')];if(!_0x44ac5e[_0x45eb('0x33')][_0x45eb('0x3a')](_0x45eb('0x3b'))){_0x56acb8[_0x45eb('0x1e')]=qs[_0x45eb('0x1e')](_0x44ac5e[_0x45eb('0x33')][_0x45eb('0x1e')]);_0x56acb8[_0x45eb('0x1c')]=qs[_0x45eb('0x1c')](_0x44ac5e[_0x45eb('0x33')][_0x45eb('0x1c')]);}_0x56acb8[_0x45eb('0x3c')]=qs[_0x45eb('0x3d')](_0x44ac5e[_0x45eb('0x33')][_0x45eb('0x3d')]);_0x56acb8[_0x45eb('0x3e')]=qs[_0x45eb('0x35')](_['pick'](_0x44ac5e[_0x45eb('0x33')],_0x4e3122[_0x45eb('0x35')]),_0x3c15f0);if(_0x44ac5e['query'][_0x45eb('0x3f')]){_0x56acb8['where']=_['merge'](_0x56acb8[_0x45eb('0x3e')],{'$or':_[_0x45eb('0x2d')](_0x3c15f0,function(_0x1d7207){if(_0x1d7207[_0x45eb('0x31')]!==_0x45eb('0x40')){var _0x2c7d27={};_0x2c7d27[_0x1d7207[_0x45eb('0x2a')]]={'$like':'%'+_0x44ac5e['query']['filter']+'%'};return _0x2c7d27;}})});}_0x56acb8=_[_0x45eb('0x41')]({},_0x56acb8,_0x44ac5e[_0x45eb('0x42')]);var _0x38c350={'where':_0x56acb8[_0x45eb('0x3e')]};return db[_0x45eb('0x2e')][_0x45eb('0x1f')](_0x38c350)[_0x45eb('0x26')](function(_0x705c5e){_0x5ed7b2[_0x45eb('0x1f')]=_0x705c5e;if(_0x44ac5e[_0x45eb('0x33')][_0x45eb('0x43')]){_0x56acb8['include']=[{'all':!![]}];}return db[_0x45eb('0x2e')]['findAll'](_0x56acb8);})['then'](function(_0x3ab2d1){_0x5ed7b2[_0x45eb('0x44')]=_0x3ab2d1;return _0x5ed7b2;})[_0x45eb('0x26')](respondWithFilteredResult(_0x455b85,_0x56acb8))['catch'](handleError(_0x455b85,null));};exports['show']=function(_0x4a56d1,_0xcdf901){var _0x3ffefa={'raw':![],'where':{'id':_0x4a56d1[_0x45eb('0x45')]['id']}},_0x5ec5a5={};_0x5ec5a5[_0x45eb('0x32')]=_[_0x45eb('0x34')](db[_0x45eb('0x2e')]['rawAttributes']);_0x5ec5a5[_0x45eb('0x33')]=_[_0x45eb('0x34')](_0x4a56d1[_0x45eb('0x33')]);_0x5ec5a5['filters']=_[_0x45eb('0x36')](_0x5ec5a5['model'],_0x5ec5a5[_0x45eb('0x33')]);_0x3ffefa['attributes']=_[_0x45eb('0x36')](_0x5ec5a5[_0x45eb('0x32')],qs[_0x45eb('0x38')](_0x4a56d1[_0x45eb('0x33')][_0x45eb('0x38')]));_0x3ffefa['attributes']=_0x3ffefa[_0x45eb('0x37')][_0x45eb('0x39')]?_0x3ffefa[_0x45eb('0x37')]:_0x5ec5a5[_0x45eb('0x32')];if(_0x4a56d1['query'][_0x45eb('0x43')]){_0x3ffefa[_0x45eb('0x46')]=[{'all':!![]}];}_0x3ffefa=_['merge']({},_0x3ffefa,_0x4a56d1[_0x45eb('0x42')]);return db['Trigger'][_0x45eb('0x47')](_0x3ffefa)[_0x45eb('0x26')](handleEntityNotFound(_0xcdf901,null))[_0x45eb('0x26')](respondWithResult(_0xcdf901,null))['catch'](handleError(_0xcdf901,null));};exports[_0x45eb('0x48')]=function(_0x1e5adc,_0x4738f7){return db[_0x45eb('0x2e')]['create'](_0x1e5adc['body'],{})[_0x45eb('0x26')](function(_0x4bfe7d){var _0x150285=_0x1e5adc[_0x45eb('0x49')][_0x45eb('0x4a')]({'plain':!![]});if(!_0x150285)throw new Error(_0x45eb('0x4b'));if(_0x150285[_0x45eb('0x4c')]===_0x45eb('0x49')){var _0xc77996=_0x4bfe7d[_0x45eb('0x4a')]({'plain':!![]});var _0x1d801c='Triggers';return db[_0x45eb('0x4d')][_0x45eb('0x47')]({'where':{'name':_0x1d801c,'userProfileId':_0x150285['userProfileId']},'raw':!![]})[_0x45eb('0x26')](function(_0x3fe992){if(_0x3fe992&&_0x3fe992['autoAssociation']===0x0){return db[_0x45eb('0x24')][_0x45eb('0x48')]({'name':_0xc77996['name'],'resourceId':_0xc77996['id'],'type':_0x3fe992[_0x45eb('0x2a')],'sectionId':_0x3fe992['id']},{})[_0x45eb('0x26')](function(){return _0x4bfe7d;});}else{return _0x4bfe7d;}})[_0x45eb('0x4e')](function(_0xae871b){logger[_0x45eb('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xae871b);throw _0xae871b;});}return _0x4bfe7d;})['then'](respondWithResult(_0x4738f7,0xc9))[_0x45eb('0x4e')](handleError(_0x4738f7,null));};exports[_0x45eb('0x23')]=function(_0x421be8,_0x1e8604){if(_0x421be8[_0x45eb('0x4f')]['id']){delete _0x421be8['body']['id'];}return db['Trigger'][_0x45eb('0x47')]({'where':{'id':_0x421be8[_0x45eb('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e8604,null))[_0x45eb('0x26')](saveUpdates(_0x421be8[_0x45eb('0x4f')],null))[_0x45eb('0x26')](respondWithResult(_0x1e8604,null))[_0x45eb('0x4e')](handleError(_0x1e8604,null));};exports[_0x45eb('0x25')]=function(_0x24eb54,_0xaf5b03){return db[_0x45eb('0x2e')]['find']({'where':{'id':_0x24eb54[_0x45eb('0x45')]['id']}})['then'](handleEntityNotFound(_0xaf5b03,null))[_0x45eb('0x26')](removeEntity(_0xaf5b03,null))['catch'](handleError(_0xaf5b03,null));};exports[_0x45eb('0x50')]=function(_0x218fb8,_0xc02d32,_0x2c78a2){if(_0x218fb8[_0x45eb('0x4f')]['id']){delete _0x218fb8[_0x45eb('0x4f')]['id'];}return db[_0x45eb('0x2e')][_0x45eb('0x47')]({'where':{'id':_0x218fb8[_0x45eb('0x45')]['id']}})[_0x45eb('0x26')](handleEntityNotFound(_0xc02d32,null))[_0x45eb('0x26')](function(_0x52a76f){if(_0x52a76f){_0x218fb8[_0x45eb('0x4f')][_0x45eb('0x51')]=_0x52a76f['id'];return db['Condition'][_0x45eb('0x48')](_0x218fb8['body']);}})[_0x45eb('0x26')](respondWithResult(_0xc02d32,null))[_0x45eb('0x4e')](handleError(_0xc02d32,null));};exports['addAnyCondition']=function(_0x3e94a7,_0x9ee309,_0x5ef509){if(_0x3e94a7['body']['id']){delete _0x3e94a7[_0x45eb('0x4f')]['id'];}return db[_0x45eb('0x2e')]['find']({'where':{'id':_0x3e94a7[_0x45eb('0x45')]['id']}})[_0x45eb('0x26')](handleEntityNotFound(_0x9ee309,null))[_0x45eb('0x26')](function(_0x214b9d){if(_0x214b9d){_0x3e94a7[_0x45eb('0x4f')][_0x45eb('0x52')]=_0x214b9d['id'];return db[_0x45eb('0x53')][_0x45eb('0x48')](_0x3e94a7[_0x45eb('0x4f')]);}})['then'](respondWithResult(_0x9ee309,null))['catch'](handleError(_0x9ee309,null));};exports[_0x45eb('0x54')]=function(_0x277a1d,_0x2b9d52,_0x153228){var _0x15a910={};var _0x4fc7c6={};var _0xe8c72e;var _0x5afcee;return db[_0x45eb('0x2e')][_0x45eb('0x55')]({'where':{'id':_0x277a1d['params']['id']}})['then'](handleEntityNotFound(_0x2b9d52,null))['then'](function(_0x12a767){if(_0x12a767){_0xe8c72e=_0x12a767;_0x4fc7c6[_0x45eb('0x32')]=_[_0x45eb('0x34')](db[_0x45eb('0x53')][_0x45eb('0x2f')]);_0x4fc7c6['query']=_[_0x45eb('0x34')](_0x277a1d[_0x45eb('0x33')]);_0x4fc7c6['filters']=_[_0x45eb('0x36')](_0x4fc7c6[_0x45eb('0x32')],_0x4fc7c6['query']);_0x15a910[_0x45eb('0x37')]=_[_0x45eb('0x36')](_0x4fc7c6['model'],qs[_0x45eb('0x38')](_0x277a1d[_0x45eb('0x33')][_0x45eb('0x38')]));_0x15a910[_0x45eb('0x37')]=_0x15a910[_0x45eb('0x37')][_0x45eb('0x39')]?_0x15a910[_0x45eb('0x37')]:_0x4fc7c6['model'];_0x15a910['order']=qs[_0x45eb('0x3d')](_0x277a1d[_0x45eb('0x33')][_0x45eb('0x3d')]);_0x15a910[_0x45eb('0x3e')]=qs[_0x45eb('0x35')](_['pick'](_0x277a1d['query'],_0x4fc7c6[_0x45eb('0x35')]));if(_0x277a1d[_0x45eb('0x33')][_0x45eb('0x3f')]){_0x15a910[_0x45eb('0x3e')]=_[_0x45eb('0x41')](_0x15a910[_0x45eb('0x3e')],{'$or':_['map'](_0x15a910['attributes'],function(_0x2ab2e6){var _0x2ae790={};_0x2ae790[_0x2ab2e6]={'$like':'%'+_0x277a1d[_0x45eb('0x33')][_0x45eb('0x3f')]+'%'};return _0x2ae790;})});}_0x15a910=_[_0x45eb('0x41')]({},_0x15a910,_0x277a1d[_0x45eb('0x42')]);return _0xe8c72e[_0x45eb('0x54')](_0x15a910);}})[_0x45eb('0x26')](function(_0x49fb58){if(_0x49fb58){_0x5afcee=_0x49fb58[_0x45eb('0x39')];if(!_0x277a1d[_0x45eb('0x33')]['hasOwnProperty']('nolimit')){_0x15a910[_0x45eb('0x1e')]=qs[_0x45eb('0x1e')](_0x277a1d[_0x45eb('0x33')][_0x45eb('0x1e')]);_0x15a910['offset']=qs['offset'](_0x277a1d[_0x45eb('0x33')]['offset']);}return _0xe8c72e[_0x45eb('0x54')](_0x15a910);}})[_0x45eb('0x26')](function(_0x971fa1){if(_0x971fa1){return _0x971fa1?{'count':_0x5afcee,'rows':_0x971fa1}:null;}})[_0x45eb('0x26')](respondWithResult(_0x2b9d52,null))['catch'](handleError(_0x2b9d52,null));};exports[_0x45eb('0x56')]=function(_0x2a2a5f,_0x215b48,_0x193f92){var _0x2a2959={};var _0x398266={};var _0x1d35b3;var _0x1093dd;return db[_0x45eb('0x2e')][_0x45eb('0x55')]({'where':{'id':_0x2a2a5f[_0x45eb('0x45')]['id']}})[_0x45eb('0x26')](handleEntityNotFound(_0x215b48,null))[_0x45eb('0x26')](function(_0x2ad73b){if(_0x2ad73b){_0x1d35b3=_0x2ad73b;_0x398266['model']=_['keys'](db[_0x45eb('0x53')][_0x45eb('0x2f')]);_0x398266[_0x45eb('0x33')]=_['keys'](_0x2a2a5f[_0x45eb('0x33')]);_0x398266[_0x45eb('0x35')]=_[_0x45eb('0x36')](_0x398266['model'],_0x398266[_0x45eb('0x33')]);_0x2a2959[_0x45eb('0x37')]=_['intersection'](_0x398266[_0x45eb('0x32')],qs['fields'](_0x2a2a5f[_0x45eb('0x33')][_0x45eb('0x38')]));_0x2a2959[_0x45eb('0x37')]=_0x2a2959[_0x45eb('0x37')][_0x45eb('0x39')]?_0x2a2959[_0x45eb('0x37')]:_0x398266[_0x45eb('0x32')];_0x2a2959[_0x45eb('0x3c')]=qs[_0x45eb('0x3d')](_0x2a2a5f[_0x45eb('0x33')]['sort']);_0x2a2959[_0x45eb('0x3e')]=qs[_0x45eb('0x35')](_[_0x45eb('0x57')](_0x2a2a5f['query'],_0x398266[_0x45eb('0x35')]));if(_0x2a2a5f[_0x45eb('0x33')][_0x45eb('0x3f')]){_0x2a2959[_0x45eb('0x3e')]=_[_0x45eb('0x41')](_0x2a2959[_0x45eb('0x3e')],{'$or':_['map'](_0x2a2959['attributes'],function(_0x392d2b){var _0x4a685f={};_0x4a685f[_0x392d2b]={'$like':'%'+_0x2a2a5f['query'][_0x45eb('0x3f')]+'%'};return _0x4a685f;})});}_0x2a2959=_[_0x45eb('0x41')]({},_0x2a2959,_0x2a2a5f[_0x45eb('0x42')]);return _0x1d35b3[_0x45eb('0x56')](_0x2a2959);}})[_0x45eb('0x26')](function(_0x4d2f28){if(_0x4d2f28){_0x1093dd=_0x4d2f28[_0x45eb('0x39')];if(!_0x2a2a5f[_0x45eb('0x33')][_0x45eb('0x3a')](_0x45eb('0x3b'))){_0x2a2959[_0x45eb('0x1e')]=qs[_0x45eb('0x1e')](_0x2a2a5f['query']['limit']);_0x2a2959['offset']=qs[_0x45eb('0x1c')](_0x2a2a5f['query'][_0x45eb('0x1c')]);}return _0x1d35b3[_0x45eb('0x56')](_0x2a2959);}})['then'](function(_0xf45206){if(_0xf45206){return _0xf45206?{'count':_0x1093dd,'rows':_0xf45206}:null;}})[_0x45eb('0x26')](respondWithResult(_0x215b48,null))[_0x45eb('0x4e')](handleError(_0x215b48,null));};exports[_0x45eb('0x58')]=function(_0x81c22f,_0x55a18d,_0x3292d7){if(_0x81c22f[_0x45eb('0x4f')]['id']){delete _0x81c22f['body']['id'];}return db[_0x45eb('0x2e')][_0x45eb('0x47')]({'where':{'id':_0x81c22f['params']['id']}})[_0x45eb('0x26')](handleEntityNotFound(_0x55a18d,null))[_0x45eb('0x26')](function(_0x663c5f){if(_0x663c5f){_0x81c22f[_0x45eb('0x4f')][_0x45eb('0x59')]=_0x663c5f['id'];return db['Action'][_0x45eb('0x48')](_0x81c22f['body']);}})[_0x45eb('0x26')](respondWithResult(_0x55a18d,null))[_0x45eb('0x4e')](handleError(_0x55a18d,null));};exports['getActions']=function(_0x2cc0f2,_0x223608,_0x4b7195){var _0x400b58={};var _0x57453e={};var _0x171d25;var _0x522a21;return db[_0x45eb('0x2e')][_0x45eb('0x55')]({'where':{'id':_0x2cc0f2['params']['id']}})[_0x45eb('0x26')](handleEntityNotFound(_0x223608,null))[_0x45eb('0x26')](function(_0x5344da){if(_0x5344da){_0x171d25=_0x5344da;_0x57453e[_0x45eb('0x32')]=_[_0x45eb('0x34')](db[_0x45eb('0x5a')][_0x45eb('0x2f')]);_0x57453e['query']=_['keys'](_0x2cc0f2['query']);_0x57453e[_0x45eb('0x35')]=_[_0x45eb('0x36')](_0x57453e[_0x45eb('0x32')],_0x57453e[_0x45eb('0x33')]);_0x400b58['attributes']=_['intersection'](_0x57453e[_0x45eb('0x32')],qs[_0x45eb('0x38')](_0x2cc0f2['query'][_0x45eb('0x38')]));_0x400b58[_0x45eb('0x37')]=_0x400b58[_0x45eb('0x37')][_0x45eb('0x39')]?_0x400b58[_0x45eb('0x37')]:_0x57453e[_0x45eb('0x32')];_0x400b58[_0x45eb('0x3c')]=qs[_0x45eb('0x3d')](_0x2cc0f2[_0x45eb('0x33')][_0x45eb('0x3d')]);_0x400b58['where']=qs[_0x45eb('0x35')](_[_0x45eb('0x57')](_0x2cc0f2[_0x45eb('0x33')],_0x57453e[_0x45eb('0x35')]));if(_0x2cc0f2[_0x45eb('0x33')][_0x45eb('0x3f')]){_0x400b58[_0x45eb('0x3e')]=_[_0x45eb('0x41')](_0x400b58['where'],{'$or':_[_0x45eb('0x2d')](_0x400b58['attributes'],function(_0x5b7a8f){var _0x1d2bdc={};_0x1d2bdc[_0x5b7a8f]={'$like':'%'+_0x2cc0f2[_0x45eb('0x33')][_0x45eb('0x3f')]+'%'};return _0x1d2bdc;})});}_0x400b58=_[_0x45eb('0x41')]({},_0x400b58,_0x2cc0f2[_0x45eb('0x42')]);return _0x171d25[_0x45eb('0x5b')](_0x400b58);}})['then'](function(_0x51e6de){if(_0x51e6de){_0x522a21=_0x51e6de[_0x45eb('0x39')];if(!_0x2cc0f2[_0x45eb('0x33')][_0x45eb('0x3a')](_0x45eb('0x3b'))){_0x400b58[_0x45eb('0x1e')]=qs[_0x45eb('0x1e')](_0x2cc0f2[_0x45eb('0x33')][_0x45eb('0x1e')]);_0x400b58[_0x45eb('0x1c')]=qs[_0x45eb('0x1c')](_0x2cc0f2[_0x45eb('0x33')][_0x45eb('0x1c')]);}return _0x171d25[_0x45eb('0x5b')](_0x400b58);}})[_0x45eb('0x26')](function(_0x3f1650){if(_0x3f1650){return _0x3f1650?{'count':_0x522a21,'rows':_0x3f1650}:null;}})[_0x45eb('0x26')](respondWithResult(_0x223608,null))[_0x45eb('0x4e')](handleError(_0x223608,null));}; \ No newline at end of file diff --git a/server/api/trigger/trigger.model.js b/server/api/trigger/trigger.model.js new file mode 100644 index 0000000..51c4e69 --- /dev/null +++ b/server/api/trigger/trigger.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfe60=['define','Trigger','tools_triggers','util','api','moment','bluebird','path','rimraf','../../config/environment','./trigger.attributes','exports'];(function(_0x4cba56,_0x5b2c44){var _0x3cc9f3=function(_0x5bb80a){while(--_0x5bb80a){_0x4cba56['push'](_0x4cba56['shift']());}};_0x3cc9f3(++_0x5b2c44);}(_0xfe60,0x1cb));var _0x0fe6=function(_0x25962a,_0x1011b2){_0x25962a=_0x25962a-0x0;var _0x117af3=_0xfe60[_0x25962a];return _0x117af3;};'use strict';var _=require('lodash');var util=require(_0x0fe6('0x0'));var logger=require('../../config/logger')(_0x0fe6('0x1'));var moment=require(_0x0fe6('0x2'));var BPromise=require(_0x0fe6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0fe6('0x4'));var rimraf=require(_0x0fe6('0x5'));var config=require(_0x0fe6('0x6'));var attributes=require(_0x0fe6('0x7'));module[_0x0fe6('0x8')]=function(_0x1281fc,_0x13b947){return _0x1281fc[_0x0fe6('0x9')](_0x0fe6('0xa'),attributes,{'tableName':_0x0fe6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/trigger/trigger.rpc.js b/server/api/trigger/trigger.rpc.js new file mode 100644 index 0000000..fbcda6a --- /dev/null +++ b/server/api/trigger/trigger.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf68c=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','stringify','error','code','Trigger,\x20%s,\x20%s','message','info','result','catch','GetTrigger','Trigger','findAll','options','raw','where','limit','include','map','model','attributes','ShowTrigger','lodash','util'];(function(_0x5cbe5e,_0x259669){var _0x57db9f=function(_0x14c544){while(--_0x14c544){_0x5cbe5e['push'](_0x5cbe5e['shift']());}};_0x57db9f(++_0x259669);}(_0xf68c,0x152));var _0xcf68=function(_0x4d0856,_0x102ed6){_0x4d0856=_0x4d0856-0x0;var _0x783ff6=_0xf68c[_0x4d0856];return _0x783ff6;};'use strict';var _=require(_0xcf68('0x0'));var util=require(_0xcf68('0x1'));var moment=require(_0xcf68('0x2'));var BPromise=require(_0xcf68('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcf68('0x4'));var db=require(_0xcf68('0x5'))['db'];var utils=require(_0xcf68('0x6'));var logger=require('../../config/logger')(_0xcf68('0x7'));var config=require(_0xcf68('0x8'));var jayson=require(_0xcf68('0x9'));var client=jayson[_0xcf68('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x546e73,_0x57edc5,_0x5a6091){return new BPromise(function(_0x48e749,_0x37a783){return client[_0xcf68('0xb')](_0x546e73,_0x5a6091)[_0xcf68('0xc')](function(_0x36c02d){logger['info']('Trigger,\x20%s,\x20%s',_0x57edc5,_0xcf68('0xd'));logger['debug']('Trigger,\x20%s,\x20%s,\x20%s',_0x57edc5,_0xcf68('0xd'),JSON[_0xcf68('0xe')](_0x36c02d));if(_0x36c02d['error']){if(_0x36c02d[_0xcf68('0xf')][_0xcf68('0x10')]===0x1f4){logger[_0xcf68('0xf')](_0xcf68('0x11'),_0x57edc5,_0x36c02d[_0xcf68('0xf')][_0xcf68('0x12')]);return _0x37a783(_0x36c02d['error'][_0xcf68('0x12')]);}logger[_0xcf68('0xf')](_0xcf68('0x11'),_0x57edc5,_0x36c02d['error'][_0xcf68('0x12')]);return _0x48e749(_0x36c02d[_0xcf68('0xf')][_0xcf68('0x12')]);}else{logger[_0xcf68('0x13')]('Trigger,\x20%s,\x20%s',_0x57edc5,'request\x20sent');_0x48e749(_0x36c02d[_0xcf68('0x14')]['message']);}})[_0xcf68('0x15')](function(_0xd8896b){logger['error'](_0xcf68('0x11'),_0x57edc5,_0xd8896b);_0x37a783(_0xd8896b);});});}exports[_0xcf68('0x16')]=function(_0x5e17aa){var _0x598c32=this;return new Promise(function(_0x3c5bf5,_0x35e546){return db[_0xcf68('0x17')][_0xcf68('0x18')]({'raw':_0x5e17aa[_0xcf68('0x19')]?_0x5e17aa[_0xcf68('0x19')][_0xcf68('0x1a')]===undefined?!![]:![]:!![],'where':_0x5e17aa[_0xcf68('0x19')]?_0x5e17aa[_0xcf68('0x19')][_0xcf68('0x1b')]||null:null,'attributes':_0x5e17aa[_0xcf68('0x19')]?_0x5e17aa[_0xcf68('0x19')]['attributes']||null:null,'limit':_0x5e17aa[_0xcf68('0x19')]?_0x5e17aa[_0xcf68('0x19')][_0xcf68('0x1c')]||null:null,'include':_0x5e17aa[_0xcf68('0x19')]?_0x5e17aa[_0xcf68('0x19')][_0xcf68('0x1d')]?_[_0xcf68('0x1e')](_0x5e17aa[_0xcf68('0x19')]['include'],function(_0x542b6c){return{'model':db[_0x542b6c[_0xcf68('0x1f')]],'as':_0x542b6c['as'],'attributes':_0x542b6c[_0xcf68('0x20')],'include':_0x542b6c[_0xcf68('0x1d')]?_['map'](_0x542b6c[_0xcf68('0x1d')],function(_0xc48bb0){return{'model':db[_0xc48bb0['model']],'as':_0xc48bb0['as'],'attributes':_0xc48bb0[_0xcf68('0x20')],'include':_0xc48bb0[_0xcf68('0x1d')]?_[_0xcf68('0x1e')](_0xc48bb0[_0xcf68('0x1d')],function(_0x182a0d){return{'model':db[_0x182a0d[_0xcf68('0x1f')]],'as':_0x182a0d['as'],'attributes':_0x182a0d[_0xcf68('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1411db){logger[_0xcf68('0x13')]('GetTrigger',_0x5e17aa);logger['debug'](_0xcf68('0x16'),_0x5e17aa,JSON[_0xcf68('0xe')](_0x1411db));_0x3c5bf5(_0x1411db);})[_0xcf68('0x15')](function(_0x48816b){logger['error'](_0xcf68('0x16'),_0x48816b[_0xcf68('0x12')],_0x5e17aa);_0x35e546(_0x598c32[_0xcf68('0xf')](0x1f4,_0x48816b[_0xcf68('0x12')]));});});};exports[_0xcf68('0x21')]=function(_0x53d9d3){var _0x224e14=this;return new Promise(function(_0x42e643,_0x2d7ea4){return db[_0xcf68('0x17')]['find']({'raw':_0x53d9d3[_0xcf68('0x19')]?_0x53d9d3[_0xcf68('0x19')][_0xcf68('0x1a')]===undefined?!![]:![]:!![],'where':_0x53d9d3[_0xcf68('0x19')]?_0x53d9d3['options'][_0xcf68('0x1b')]||null:null,'attributes':_0x53d9d3[_0xcf68('0x19')]?_0x53d9d3[_0xcf68('0x19')]['attributes']||null:null,'include':_0x53d9d3[_0xcf68('0x19')]?_0x53d9d3[_0xcf68('0x19')][_0xcf68('0x1d')]?_['map'](_0x53d9d3[_0xcf68('0x19')][_0xcf68('0x1d')],function(_0x317d10){return{'model':db[_0x317d10['model']],'as':_0x317d10['as'],'attributes':_0x317d10['attributes'],'include':_0x317d10['include']?_[_0xcf68('0x1e')](_0x317d10[_0xcf68('0x1d')],function(_0x42d53a){return{'model':db[_0x42d53a[_0xcf68('0x1f')]],'as':_0x42d53a['as'],'attributes':_0x42d53a[_0xcf68('0x20')],'include':_0x42d53a['include']?_['map'](_0x42d53a['include'],function(_0xb36283){return{'model':db[_0xb36283['model']],'as':_0xb36283['as'],'attributes':_0xb36283['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x53cdf0){logger[_0xcf68('0x13')]('ShowTrigger',_0x53d9d3);logger['debug'](_0xcf68('0x21'),_0x53d9d3,JSON[_0xcf68('0xe')](_0x53cdf0));_0x42e643(_0x53cdf0);})[_0xcf68('0x15')](function(_0xd89388){logger[_0xcf68('0xf')](_0xcf68('0x21'),_0xd89388[_0xcf68('0x12')],_0x53d9d3);_0x2d7ea4(_0x224e14['error'](0x1f4,_0xd89388[_0xcf68('0x12')]));});});}; \ No newline at end of file diff --git a/server/api/trunk/index.js b/server/api/trunk/index.js new file mode 100644 index 0000000..ec940dc --- /dev/null +++ b/server/api/trunk/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0937=['show','post','/:id/clone','isAuthenticated','clone','create','put','/:id','update','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller'];(function(_0x322743,_0x3903b9){var _0x13de4d=function(_0x13a597){while(--_0x13a597){_0x322743['push'](_0x322743['shift']());}};_0x13de4d(++_0x3903b9);}(_0x0937,0x197));var _0x7093=function(_0x427ba3,_0x37c2ce){_0x427ba3=_0x427ba3-0x0;var _0x49a8d1=_0x0937[_0x427ba3];return _0x49a8d1;};'use strict';var multer=require(_0x7093('0x0'));var util=require(_0x7093('0x1'));var path=require(_0x7093('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x7093('0x3'));var auth=require(_0x7093('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7093('0x5'));var controller=require(_0x7093('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x7093('0x7')]);router[_0x7093('0x8')](_0x7093('0x9'),auth[_0x7093('0xa')](),controller[_0x7093('0xb')]);router[_0x7093('0x8')]('/',auth[_0x7093('0xa')](),controller[_0x7093('0xc')]);router[_0x7093('0xd')](_0x7093('0xe'),auth['isAuthenticated'](),controller[_0x7093('0xf')]);router['delete'](_0x7093('0xe'),auth['isAuthenticated'](),controller[_0x7093('0x10')]);module[_0x7093('0x11')]=router; \ No newline at end of file diff --git a/server/api/trunk/trunk.attributes.js b/server/api/trunk/trunk.attributes.js new file mode 100644 index 0000000..49353ca --- /dev/null +++ b/server/api/trunk/trunk.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x48a3=['insecure','never','INTEGER','\x22\x22\x20<>','always','refuse','originate','uac','uas','pai','fingerprint','active','passive','dynamic','nonat','BOOLEAN','sequelize','exports','name','ENUM','user','peer','friend','STRING','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','update','outgoing','force_rport,comedia','setDataValue','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite'];(function(_0x3d966a,_0x447353){var _0x4180f0=function(_0x424871){while(--_0x424871){_0x3d966a['push'](_0x3d966a['shift']());}};_0x4180f0(++_0x447353);}(_0x48a3,0x1ed));var _0x348a=function(_0x64e3c1,_0x14da00){_0x64e3c1=_0x64e3c1-0x0;var _0x44adc8=_0x48a3[_0x64e3c1];return _0x44adc8;};'use strict';var Sequelize=require(_0x348a('0x0'));module[_0x348a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x348a('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x348a('0x3')]('friend',_0x348a('0x4'),_0x348a('0x5')),'allowNull':![],'defaultValue':_0x348a('0x6')},'context':{'type':Sequelize[_0x348a('0x7')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x8'),_0x348a('0x9'),'ALLOWED_FAILED_SCREEN',_0x348a('0xa'),_0x348a('0xb'),_0x348a('0xc'),'PROHIB_FAILED_SCREEN',_0x348a('0xd'))},'deny':{'type':Sequelize[_0x348a('0x7')]},'permit':{'type':Sequelize[_0x348a('0x7')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0x348a('0x7')]},'remotesecret':{'type':Sequelize[_0x348a('0x7')]},'transport':{'type':Sequelize[_0x348a('0x7')],'defaultValue':_0x348a('0xe'),'set':function(_0xa2da0d){this['setDataValue'](_0x348a('0xf'),_0xa2da0d?_0xa2da0d[_0x348a('0x10')](','):null);},'get':function(){return this['getDataValue'](_0x348a('0xf'))?this['getDataValue'](_0x348a('0xf'))[_0x348a('0x11')](','):null;},'comment':_0x348a('0x12')},'dtmfmode':{'type':Sequelize[_0x348a('0x3')]('rfc2833',_0x348a('0x13'),_0x348a('0x14'),_0x348a('0x15'),_0x348a('0x16')),'defaultValue':_0x348a('0x17')},'directmedia':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no','nonat',_0x348a('0x19'),_0x348a('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x348a('0x7')]},'directmediadeny':{'type':Sequelize[_0x348a('0x7')]},'nat':{'type':Sequelize[_0x348a('0x7')],'defaultValue':_0x348a('0x1b'),'set':function(_0x1e92d6){this[_0x348a('0x1c')](_0x348a('0x1d'),_0x1e92d6?_0x1e92d6['join'](','):null);},'get':function(){return this['getDataValue'](_0x348a('0x1d'))?this['getDataValue'](_0x348a('0x1d'))[_0x348a('0x11')](','):null;},'comment':_0x348a('0x1e')},'callgroup':{'type':Sequelize[_0x348a('0x7')]},'namedcallgroup':{'type':Sequelize[_0x348a('0x7')]},'pickupgroup':{'type':Sequelize[_0x348a('0x7')]},'namedpickupgroup':{'type':Sequelize[_0x348a('0x7')]},'language':{'type':Sequelize[_0x348a('0x7')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x348a('0x1f')},'allow':{'type':Sequelize[_0x348a('0x7')],'allowNull':![],'defaultValue':_0x348a('0x20'),'set':function(_0x30ebcd){this[_0x348a('0x1c')](_0x348a('0x21'),_0x30ebcd?_0x30ebcd[_0x348a('0x10')](';'):_0x348a('0x20'));},'get':function(){return this[_0x348a('0x22')](_0x348a('0x21'))?this[_0x348a('0x22')](_0x348a('0x21'))[_0x348a('0x11')](';'):null;},'comment':_0x348a('0x23')},'autoframing':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no')},'insecure':{'type':Sequelize[_0x348a('0x7')],'defaultValue':_0x348a('0x24'),'set':function(_0x10e120){this[_0x348a('0x1c')]('insecure',_0x10e120?_0x10e120['join'](','):null);},'get':function(){return this[_0x348a('0x22')](_0x348a('0x25'))?this[_0x348a('0x22')](_0x348a('0x25'))[_0x348a('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no',_0x348a('0x26'))},'promiscredir':{'type':Sequelize['ENUM'](_0x348a('0x18'),'no')},'useclientcode':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no')},'accountcode':{'type':Sequelize[_0x348a('0x27')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x348a('0x7')],'defaultValue':_0x348a('0x28')},'amaflags':{'type':Sequelize[_0x348a('0x7')]},'callcounter':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no'),'defaultValue':_0x348a('0x18')},'busylevel':{'type':Sequelize[_0x348a('0x27')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x348a('0x18'),'no')},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no')},'allowtransfer':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no')},'ignoresdpversion':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no',_0x348a('0x29')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x348a('0x27')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x348a('0x18'),'no')},'mailbox':{'type':Sequelize[_0x348a('0x7')]},'session_timers':{'type':Sequelize[_0x348a('0x3')]('accept',_0x348a('0x2a'),_0x348a('0x2b'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x348a('0x27')](0xb)},'session_refresher':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x2c'),_0x348a('0x2d')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x348a('0x7')]},'regexten':{'type':Sequelize[_0x348a('0x7')]},'fromdomain':{'type':Sequelize[_0x348a('0x7')]},'fromuser':{'type':Sequelize[_0x348a('0x7')]},'port':{'type':Sequelize[_0x348a('0x27')](0x5)},'qualify':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no'),'defaultValue':_0x348a('0x18')},'keepalive':{'type':Sequelize[_0x348a('0x27')](0xb)},'defaultip':{'type':Sequelize[_0x348a('0x7')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x348a('0x27')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x348a('0x27')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no',_0x348a('0x2e')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x348a('0x7')]},'callbackextension':{'type':Sequelize[_0x348a('0x7')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x348a('0x27')](0xb)},'qualifyfreq':{'type':Sequelize[_0x348a('0x27')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x348a('0x7')]},'contactacl':{'type':Sequelize[_0x348a('0x7')]},'unsolicited_mailbox':{'type':Sequelize[_0x348a('0x7')]},'use_q850_reason':{'type':Sequelize[_0x348a('0x7')]},'maxforwards':{'type':Sequelize[_0x348a('0x27')](0xb)},'encryption':{'type':Sequelize[_0x348a('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x348a('0x3')]('yes','no')},'force_avp':{'type':Sequelize[_0x348a('0x3')]('yes','no')},'icesupport':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no')},'dtlsenable':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x18'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x348a('0x18'),'no',_0x348a('0x2f'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x348a('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0x348a('0x7')]},'dtlsprivatekey':{'type':Sequelize[_0x348a('0x7')]},'dtlscipher':{'type':Sequelize[_0x348a('0x7')]},'dtlscafile':{'type':Sequelize[_0x348a('0x7')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0x348a('0x3')](_0x348a('0x30'),_0x348a('0x31'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x348a('0x7')]},'usereqphone':{'type':Sequelize['ENUM'](_0x348a('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x348a('0x7')]},'recordofffeature':{'type':Sequelize[_0x348a('0x7')]},'call_limit':{'type':Sequelize[_0x348a('0x27')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x348a('0x3')]('yes','no')},'subscribemwi':{'type':Sequelize[_0x348a('0x3')]('yes','no')},'vmexten':{'type':Sequelize[_0x348a('0x7')]},'mohinterpret':{'type':Sequelize[_0x348a('0x7')]},'mohsuggest':{'type':Sequelize[_0x348a('0x7')]},'parkinglot':{'type':Sequelize[_0x348a('0x7')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x348a('0x7')],'defaultValue':_0x348a('0x32')},'canreinvite':{'type':Sequelize['ENUM'](_0x348a('0x18'),'no',_0x348a('0x33'),_0x348a('0x19'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x348a('0x7')]},'otherFields':{'type':Sequelize[_0x348a('0x7')]},'active':{'type':Sequelize[_0x348a('0x34')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x348a('0x7')],'defaultValue':'no'}}; \ No newline at end of file diff --git a/server/api/trunk/trunk.controller.js b/server/api/trunk/trunk.controller.js new file mode 100644 index 0000000..11bfe24 --- /dev/null +++ b/server/api/trunk/trunk.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9a19=['query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','include','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','autoAssociation','findAll','readFileSync','writeFileSync','Reload','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type'];(function(_0x4ae39d,_0x5c3787){var _0x1015a7=function(_0x261278){while(--_0x261278){_0x4ae39d['push'](_0x4ae39d['shift']());}};_0x1015a7(++_0x5c3787);}(_0x9a19,0x114));var _0x99a1=function(_0x152fe3,_0x12b0c8){_0x152fe3=_0x152fe3-0x0;var _0xc5bb39=_0x9a19[_0x152fe3];return _0xc5bb39;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];var jayson=require(_0x99a1('0x19'));var client=jayson[_0x99a1('0x1a')][_0x99a1('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xf713b9,_0x40c19c,_0x3a865c,_0x47815e){return new BPromise(function(_0xe1a1f,_0x3c9ef4){var _0x39ee55=_0x47815e||client;return _0x39ee55['request'](_0xf713b9,_0x3a865c)[_0x99a1('0x1c')](function(_0x3e45d4){logger[_0x99a1('0x1d')](_0x99a1('0x1e'),_0x40c19c,_0x99a1('0x1f'));logger[_0x99a1('0x20')](_0x99a1('0x21'),_0x40c19c,'request\x20sent',JSON['stringify'](_0x3e45d4));if(_0x3e45d4[_0x99a1('0x22')]){if(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x23')]===0x1f4){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);return _0x3c9ef4(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);}logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4['error'][_0x99a1('0x24')]);return _0xe1a1f(_0x3e45d4[_0x99a1('0x22')]['message']);}else{logger[_0x99a1('0x1d')]('Trunk,\x20%s,\x20%s',_0x40c19c,_0x99a1('0x1f'));_0xe1a1f(_0x3e45d4[_0x99a1('0x25')][_0x99a1('0x24')]);}})[_0x99a1('0x26')](function(_0x5a88c6){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x5a88c6);_0x3c9ef4(_0x5a88c6);});});}function respondWithStatusCode(_0x483c17,_0x44df2d){_0x44df2d=_0x44df2d||0xcc;return function(_0x5b5dfa){if(_0x5b5dfa){return _0x483c17[_0x99a1('0x27')](_0x44df2d);}return _0x483c17[_0x99a1('0x28')](_0x44df2d)[_0x99a1('0x29')]();};}function respondWithResult(_0xdaa27d,_0x3c813){_0x3c813=_0x3c813||0xc8;return function(_0x491341){if(_0x491341){return _0xdaa27d['status'](_0x3c813)[_0x99a1('0x2a')](_0x491341);}};}function respondWithFilteredResult(_0x5dabd9,_0x5dc733){return function(_0xafea84){if(_0xafea84){var _0x440879=typeof _0x5dc733[_0x99a1('0x2b')]===_0x99a1('0x2c')&&typeof _0x5dc733[_0x99a1('0x2d')]===_0x99a1('0x2c');var _0x183037=_0xafea84['count'];var _0xf41b0d=_0x440879?0x0:_0x5dc733['offset'];var _0x255197=_0x440879?_0xafea84[_0x99a1('0x2e')]:_0x5dc733[_0x99a1('0x2b')]+_0x5dc733['limit'];var _0x371edf;if(_0x255197>=_0x183037){_0x255197=_0x183037;_0x371edf=0xc8;}else{_0x371edf=0xce;}_0x5dabd9[_0x99a1('0x28')](_0x371edf);return _0x5dabd9['set'](_0x99a1('0x2f'),_0xf41b0d+'-'+_0x255197+'/'+_0x183037)[_0x99a1('0x2a')](_0xafea84);}return null;};}function patchUpdates(_0x36aa34){return function(_0x303d1e){try{jsonpatch[_0x99a1('0x30')](_0x303d1e,_0x36aa34,!![]);}catch(_0x969f6e){return BPromise[_0x99a1('0x31')](_0x969f6e);}return _0x303d1e[_0x99a1('0x32')]();};}function saveUpdates(_0x52da8d,_0x4960e4){return function(_0x3fa342){if(_0x3fa342){return _0x3fa342['update'](_0x52da8d)[_0x99a1('0x1c')](function(_0x400581){return _0x400581;});}return null;};}function removeEntity(_0x5b1a79,_0xa5972b){return function(_0x3503d5){if(_0x3503d5){return _0x3503d5[_0x99a1('0x33')]()[_0x99a1('0x1c')](function(){var _0x13f4db=_0x3503d5[_0x99a1('0x34')]({'plain':!![]});var _0x3081cd=_0x99a1('0x35');return db[_0x99a1('0x36')][_0x99a1('0x33')]({'where':{'type':_0x3081cd,'resourceId':_0x13f4db['id']}})[_0x99a1('0x1c')](function(){return _0x3503d5;});})[_0x99a1('0x1c')](function(){_0x5b1a79[_0x99a1('0x28')](0xcc)[_0x99a1('0x29')]();});}};}function handleEntityNotFound(_0x55005e,_0x53fed5){return function(_0x46e3f2){if(!_0x46e3f2){_0x55005e[_0x99a1('0x27')](0x194);}return _0x46e3f2;};}function handleError(_0x416a36,_0x4131e0){_0x4131e0=_0x4131e0||0x1f4;return function(_0x2690bd){logger[_0x99a1('0x22')](_0x2690bd[_0x99a1('0x37')]);if(_0x2690bd['name']){delete _0x2690bd[_0x99a1('0x38')];}_0x416a36[_0x99a1('0x28')](_0x4131e0)['send'](_0x2690bd);};}exports[_0x99a1('0x39')]=function(_0x2d328c,_0x391afa){var _0x3cd1a0={},_0x430cbc={},_0x399fd4={'count':0x0,'rows':[]};var _0x30e8a9=_[_0x99a1('0x3a')](db[_0x99a1('0x3b')][_0x99a1('0x3c')],function(_0x1da3e7){return{'name':_0x1da3e7[_0x99a1('0x3d')],'type':_0x1da3e7[_0x99a1('0x3e')]['key']};});_0x430cbc['model']=_['map'](_0x30e8a9,_0x99a1('0x38'));_0x430cbc[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x2d328c[_0x99a1('0x3f')]);_0x430cbc[_0x99a1('0x41')]=_['intersection'](_0x430cbc[_0x99a1('0x42')],_0x430cbc[_0x99a1('0x3f')]);_0x3cd1a0[_0x99a1('0x43')]=_['intersection'](_0x430cbc['model'],qs[_0x99a1('0x44')](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x3cd1a0['attributes']=_0x3cd1a0[_0x99a1('0x43')][_0x99a1('0x45')]?_0x3cd1a0[_0x99a1('0x43')]:_0x430cbc[_0x99a1('0x42')];if(!_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x46')](_0x99a1('0x47'))){_0x3cd1a0[_0x99a1('0x2d')]=qs[_0x99a1('0x2d')](_0x2d328c[_0x99a1('0x3f')]['limit']);_0x3cd1a0[_0x99a1('0x2b')]=qs[_0x99a1('0x2b')](_0x2d328c[_0x99a1('0x3f')]['offset']);}_0x3cd1a0[_0x99a1('0x48')]=qs['sort'](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x49')]);_0x3cd1a0[_0x99a1('0x4a')]=qs[_0x99a1('0x41')](_[_0x99a1('0x4b')](_0x2d328c[_0x99a1('0x3f')],_0x430cbc['filters']),_0x30e8a9);if(_0x2d328c[_0x99a1('0x3f')]['filter']){_0x3cd1a0[_0x99a1('0x4a')]=_[_0x99a1('0x4c')](_0x3cd1a0[_0x99a1('0x4a')],{'$or':_[_0x99a1('0x3a')](_0x30e8a9,function(_0x3a0b44){if(_0x3a0b44[_0x99a1('0x3e')]!==_0x99a1('0x4d')){var _0x3861b6={};_0x3861b6[_0x3a0b44[_0x99a1('0x38')]]={'$like':'%'+_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x4e')]+'%'};return _0x3861b6;}})});}_0x3cd1a0=_['merge']({},_0x3cd1a0,_0x2d328c[_0x99a1('0x4f')]);var _0x330e3b={'where':_0x3cd1a0['where']};return db[_0x99a1('0x3b')][_0x99a1('0x2e')](_0x330e3b)[_0x99a1('0x1c')](function(_0x2e377b){_0x399fd4[_0x99a1('0x2e')]=_0x2e377b;if(_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x50')]){_0x3cd1a0['include']=[{'all':!![]}];}return db[_0x99a1('0x3b')]['findAll'](_0x3cd1a0);})[_0x99a1('0x1c')](function(_0x269798){_0x399fd4['rows']=_0x269798;return _0x399fd4;})['then'](respondWithFilteredResult(_0x391afa,_0x3cd1a0))[_0x99a1('0x26')](handleError(_0x391afa,null));};exports[_0x99a1('0x51')]=function(_0x462c15,_0x4519fb){var _0xee2b1b={'raw':![],'where':{'id':_0x462c15['params']['id']}},_0x597836={};_0x597836['model']=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x597836[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x462c15[_0x99a1('0x3f')]);_0x597836[_0x99a1('0x41')]=_['intersection'](_0x597836[_0x99a1('0x42')],_0x597836[_0x99a1('0x3f')]);_0xee2b1b[_0x99a1('0x43')]=_['intersection'](_0x597836[_0x99a1('0x42')],qs['fields'](_0x462c15['query'][_0x99a1('0x44')]));_0xee2b1b[_0x99a1('0x43')]=_0xee2b1b[_0x99a1('0x43')][_0x99a1('0x45')]?_0xee2b1b[_0x99a1('0x43')]:_0x597836[_0x99a1('0x42')];if(_0x462c15[_0x99a1('0x3f')][_0x99a1('0x50')]){_0xee2b1b[_0x99a1('0x52')]=[{'all':!![]}];}_0xee2b1b=_['merge']({},_0xee2b1b,_0x462c15[_0x99a1('0x4f')]);return db['Trunk'][_0x99a1('0x53')](_0xee2b1b)[_0x99a1('0x1c')](handleEntityNotFound(_0x4519fb,null))['then'](respondWithResult(_0x4519fb,null))[_0x99a1('0x26')](handleError(_0x4519fb,null));};exports[_0x99a1('0x54')]=function(_0x469e10,_0x2b2d63){var _0x2800d5={'where':{'id':_0x469e10[_0x99a1('0x55')]['id']}},_0x1bff78={};_0x1bff78[_0x99a1('0x42')]=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x2800d5[_0x99a1('0x43')]=_['intersection'](_0x1bff78['model'],qs[_0x99a1('0x44')](_0x469e10[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x2800d5[_0x99a1('0x43')]=_0x2800d5[_0x99a1('0x43')]['length']?_0x2800d5[_0x99a1('0x43')]:_0x1bff78[_0x99a1('0x42')];if(_0x469e10['query'][_0x99a1('0x50')]){_0x2800d5[_0x99a1('0x52')]=[{'all':!![]}];}_0x2800d5=_[_0x99a1('0x4c')]({},_0x2800d5,_0x469e10[_0x99a1('0x4f')]);return db[_0x99a1('0x3b')]['find'](_0x2800d5)[_0x99a1('0x1c')](handleEntityNotFound(_0x2b2d63,null))[_0x99a1('0x1c')](function(_0x1bb1cb){if(_0x1bb1cb){var _0x22811f=_0x1bb1cb[_0x99a1('0x34')]({'plain':!![]});_0x22811f=qs[_0x99a1('0x56')](_0x22811f,['id','createdAt',_0x99a1('0x57')]);_0x469e10[_0x99a1('0x58')]=_['omit'](_0x469e10[_0x99a1('0x58')],['id',_0x99a1('0x59'),_0x99a1('0x57')]);return db[_0x99a1('0x3b')][_0x99a1('0x5a')](_['merge'](_0x22811f,_0x469e10[_0x99a1('0x58')]),{'include':_0x469e10['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x38ce3c){var _0x3f7c16=_0x469e10['user']['get']({'plain':!![]});if(!_0x3f7c16)throw new Error(_0x99a1('0x5b'));if(_0x3f7c16['role']===_0x99a1('0x5c')){var _0x263db3=_0x38ce3c[_0x99a1('0x34')]({'plain':!![]});var _0x180c1e='Trunks';return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x180c1e,'userProfileId':_0x3f7c16[_0x99a1('0x5e')]},'raw':!![]})['then'](function(_0x3a62c6){if(_0x3a62c6&&_0x3a62c6['autoAssociation']===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x263db3[_0x99a1('0x38')],'resourceId':_0x263db3['id'],'type':_0x3a62c6[_0x99a1('0x38')],'sectionId':_0x3a62c6['id']},{})[_0x99a1('0x1c')](function(){return _0x38ce3c;});}else{return _0x38ce3c;}})['catch'](function(_0x4d37f8){logger['error'](_0x99a1('0x5f'),_0x4d37f8);throw _0x4d37f8;});}return _0x38ce3c;});}})[_0x99a1('0x1c')](respondWithResult(_0x2b2d63,0xc9))['catch'](handleError(_0x2b2d63,null));};exports['create']=function(_0x1fe7af,_0x2f5587,_0x401c8f){var _0x509d4f;return db['Trunk'][_0x99a1('0x5a')](_0x1fe7af['body'],{'raw':!![]})[_0x99a1('0x1c')](function(_0x129690){_0x509d4f=_0x129690;return db[_0x99a1('0x3b')]['findAll']({'raw':!![]});})[_0x99a1('0x1c')](function(_0x28c7d8){var _0x4ac99e=fs['readFileSync'](path[_0x99a1('0x60')](config['root'],_0x99a1('0x61')),_0x99a1('0x62'));var _0x30a0a5=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x3d0ff6=ejs['render'](_0x4ac99e,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x65'),_0x3d0ff6);if(_0x509d4f[_0x99a1('0x66')]){var _0x1750d5=ejs[_0x99a1('0x67')](_0x30a0a5,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x68'),_0x1750d5);}})['then'](function(){return respondWithRpcPromise('Reload',_0x99a1('0x5a'),{'module':_0x99a1('0x69')});})[_0x99a1('0x1c')](function(){var _0x525969=_0x1fe7af[_0x99a1('0x5c')][_0x99a1('0x34')]({'plain':!![]});if(!_0x525969)throw new Error(_0x99a1('0x5b'));if(_0x525969[_0x99a1('0x6a')]===_0x99a1('0x5c')){var _0x4ae313=_0x509d4f[_0x99a1('0x34')]({'plain':!![]});return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x99a1('0x35'),'userProfileId':_0x525969[_0x99a1('0x5e')]},'raw':!![]})[_0x99a1('0x1c')](function(_0x5e42be){if(_0x5e42be&&_0x5e42be[_0x99a1('0x6b')]===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x4ae313[_0x99a1('0x38')],'resourceId':_0x4ae313['id'],'type':_0x5e42be[_0x99a1('0x38')],'sectionId':_0x5e42be['id']},{})['then'](function(){return _0x509d4f;});}else{return _0x509d4f;}})[_0x99a1('0x26')](function(_0x68c944){logger[_0x99a1('0x22')](_0x99a1('0x5f'),_0x68c944);throw _0x68c944;});}return _0x509d4f;})[_0x99a1('0x1c')](respondWithResult(_0x2f5587,0xc9))[_0x99a1('0x26')](handleError(_0x2f5587,null));};exports['update']=function(_0xaa953e,_0x33d96b,_0x4a5617){var _0x56716a;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0xaa953e['params']['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x33d96b,null))[_0x99a1('0x1c')](saveUpdates(_0xaa953e[_0x99a1('0x58')],null))[_0x99a1('0x1c')](function(_0x43156f){if(_0x43156f){_0x56716a=_0x43156f;return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});}})[_0x99a1('0x1c')](function(_0x4260d7){if(_0x4260d7){var _0x3e099c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],'server/files/templates/trunk.ejs'),_0x99a1('0x62'));var _0x5a9a7d=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0xbbbe26=ejs[_0x99a1('0x67')](_0x3e099c,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0xbbbe26);var _0x361ce6=ejs['render'](_0x5a9a7d,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x68'),_0x361ce6);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x70'),{'module':_0x99a1('0x69')});}return null;})[_0x99a1('0x1c')](function(_0x6dab29){if(_0x6dab29){return _0x56716a;}})[_0x99a1('0x1c')](respondWithResult(_0x33d96b,null))['catch'](handleError(_0x33d96b,null));};exports['destroy']=function(_0x51c289,_0x2dd29b,_0x353f25){var _0x53cdb3;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0x51c289[_0x99a1('0x55')]['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x2dd29b,null))['then'](removeEntity(_0x2dd29b,null))[_0x99a1('0x1c')](function(){return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});})[_0x99a1('0x1c')](function(_0x4e9fe9){var _0x24aa05=fs['readFileSync'](path['join'](config['root'],_0x99a1('0x61')),'utf8');var _0xb7744c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x444e43=ejs['render'](_0x24aa05,{'trunks':_0x4e9fe9});var _0x4fcd65=ejs[_0x99a1('0x67')](_0xb7744c,{'trunks':_0x4e9fe9});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0x444e43);fs['writeFileSync'](_0x99a1('0x68'),_0x4fcd65);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x33'),{'module':'chan_sip.so'});})[_0x99a1('0x26')](handleError(_0x2dd29b,null));}; \ No newline at end of file diff --git a/server/api/trunk/trunk.model.js b/server/api/trunk/trunk.model.js new file mode 100644 index 0000000..5999c9c --- /dev/null +++ b/server/api/trunk/trunk.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa7f8=['api','moment','request-promise','path','rimraf','exports','define','Trunk','tools_trunks','lodash','util','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa7f8,0x195));var _0x8a7f=function(_0x3d34da,_0x3abcc1){_0x3d34da=_0x3d34da-0x0;var _0xcf6af8=_0xa7f8[_0x3d34da];return _0xcf6af8;};'use strict';var _=require(_0x8a7f('0x0'));var util=require(_0x8a7f('0x1'));var logger=require(_0x8a7f('0x2'))(_0x8a7f('0x3'));var moment=require(_0x8a7f('0x4'));var BPromise=require('bluebird');var rp=require(_0x8a7f('0x5'));var fs=require('fs');var path=require(_0x8a7f('0x6'));var rimraf=require(_0x8a7f('0x7'));var config=require('../../config/environment');var attributes=require('./trunk.attributes');module[_0x8a7f('0x8')]=function(_0x3369b5,_0x345f63){return _0x3369b5[_0x8a7f('0x9')](_0x8a7f('0xa'),attributes,{'tableName':_0x8a7f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/trunk/trunk.rpc.js b/server/api/trunk/trunk.rpc.js new file mode 100644 index 0000000..f7e9d85 --- /dev/null +++ b/server/api/trunk/trunk.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9f5=['Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetTrunk','Trunk','findAll','options','raw','where','attributes','map','include','model','catch','find','ShowTrunk','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Trunk,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x8a25ce,_0x1d3d41){var _0x195a76=function(_0x37787e){while(--_0x37787e){_0x8a25ce['push'](_0x8a25ce['shift']());}};_0x195a76(++_0x1d3d41);}(_0xa9f5,0x17c));var _0x5a9f=function(_0x24c643,_0x5555c6){_0x24c643=_0x24c643-0x0;var _0x51afe6=_0xa9f5[_0x24c643];return _0x51afe6;};'use strict';var _=require(_0x5a9f('0x0'));var util=require(_0x5a9f('0x1'));var moment=require('moment');var BPromise=require(_0x5a9f('0x2'));var rs=require(_0x5a9f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5a9f('0x4'))['db'];var utils=require(_0x5a9f('0x5'));var logger=require(_0x5a9f('0x6'))(_0x5a9f('0x7'));var config=require(_0x5a9f('0x8'));var jayson=require(_0x5a9f('0x9'));var client=jayson[_0x5a9f('0xa')][_0x5a9f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4393c,_0xb4234e,_0x53e462){return new BPromise(function(_0x3c2a53,_0x543cc3){return client['request'](_0x4393c,_0x53e462)[_0x5a9f('0xc')](function(_0x321803){logger['info'](_0x5a9f('0xd'),_0xb4234e,_0x5a9f('0xe'));logger[_0x5a9f('0xf')](_0x5a9f('0x10'),_0xb4234e,_0x5a9f('0xe'),JSON[_0x5a9f('0x11')](_0x321803));if(_0x321803[_0x5a9f('0x12')]){if(_0x321803[_0x5a9f('0x12')][_0x5a9f('0x13')]===0x1f4){logger[_0x5a9f('0x12')](_0x5a9f('0xd'),_0xb4234e,_0x321803[_0x5a9f('0x12')][_0x5a9f('0x14')]);return _0x543cc3(_0x321803[_0x5a9f('0x12')][_0x5a9f('0x14')]);}logger[_0x5a9f('0x12')](_0x5a9f('0xd'),_0xb4234e,_0x321803[_0x5a9f('0x12')]['message']);return _0x3c2a53(_0x321803[_0x5a9f('0x12')][_0x5a9f('0x14')]);}else{logger[_0x5a9f('0x15')]('Trunk,\x20%s,\x20%s',_0xb4234e,_0x5a9f('0xe'));_0x3c2a53(_0x321803[_0x5a9f('0x16')][_0x5a9f('0x14')]);}})['catch'](function(_0x1092ac){logger[_0x5a9f('0x12')](_0x5a9f('0xd'),_0xb4234e,_0x1092ac);_0x543cc3(_0x1092ac);});});}exports[_0x5a9f('0x17')]=function(_0x4706e0){var _0x3038e1=this;return new Promise(function(_0x7dfda6,_0x55649f){return db[_0x5a9f('0x18')][_0x5a9f('0x19')]({'raw':_0x4706e0[_0x5a9f('0x1a')]?_0x4706e0[_0x5a9f('0x1a')][_0x5a9f('0x1b')]===undefined?!![]:![]:!![],'where':_0x4706e0[_0x5a9f('0x1a')]?_0x4706e0[_0x5a9f('0x1a')][_0x5a9f('0x1c')]||null:null,'attributes':_0x4706e0['options']?_0x4706e0[_0x5a9f('0x1a')][_0x5a9f('0x1d')]||null:null,'limit':_0x4706e0['options']?_0x4706e0[_0x5a9f('0x1a')]['limit']||null:null,'include':_0x4706e0[_0x5a9f('0x1a')]?_0x4706e0[_0x5a9f('0x1a')]['include']?_[_0x5a9f('0x1e')](_0x4706e0[_0x5a9f('0x1a')][_0x5a9f('0x1f')],function(_0x3bb460){return{'model':db[_0x3bb460['model']],'as':_0x3bb460['as'],'attributes':_0x3bb460[_0x5a9f('0x1d')],'include':_0x3bb460[_0x5a9f('0x1f')]?_['map'](_0x3bb460['include'],function(_0x36f1dc){return{'model':db[_0x36f1dc['model']],'as':_0x36f1dc['as'],'attributes':_0x36f1dc[_0x5a9f('0x1d')],'include':_0x36f1dc[_0x5a9f('0x1f')]?_[_0x5a9f('0x1e')](_0x36f1dc[_0x5a9f('0x1f')],function(_0x361dd1){return{'model':db[_0x361dd1[_0x5a9f('0x20')]],'as':_0x361dd1['as'],'attributes':_0x361dd1[_0x5a9f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5a9f('0xc')](function(_0x6a089a){logger[_0x5a9f('0x15')](_0x5a9f('0x17'),_0x4706e0);logger['debug']('GetTrunk',_0x4706e0,JSON[_0x5a9f('0x11')](_0x6a089a));_0x7dfda6(_0x6a089a);})[_0x5a9f('0x21')](function(_0x3c10a9){logger['error'](_0x5a9f('0x17'),_0x3c10a9[_0x5a9f('0x14')],_0x4706e0);_0x55649f(_0x3038e1[_0x5a9f('0x12')](0x1f4,_0x3c10a9[_0x5a9f('0x14')]));});});};exports['ShowTrunk']=function(_0x2c518a){var _0xf7efa9=this;return new Promise(function(_0x4a0d1f,_0x103a6c){return db['Trunk'][_0x5a9f('0x22')]({'raw':_0x2c518a[_0x5a9f('0x1a')]?_0x2c518a[_0x5a9f('0x1a')][_0x5a9f('0x1b')]===undefined?!![]:![]:!![],'where':_0x2c518a[_0x5a9f('0x1a')]?_0x2c518a['options'][_0x5a9f('0x1c')]||null:null,'attributes':_0x2c518a['options']?_0x2c518a[_0x5a9f('0x1a')]['attributes']||null:null,'include':_0x2c518a[_0x5a9f('0x1a')]?_0x2c518a['options'][_0x5a9f('0x1f')]?_['map'](_0x2c518a['options'][_0x5a9f('0x1f')],function(_0x1c51af){return{'model':db[_0x1c51af[_0x5a9f('0x20')]],'as':_0x1c51af['as'],'attributes':_0x1c51af[_0x5a9f('0x1d')],'include':_0x1c51af[_0x5a9f('0x1f')]?_[_0x5a9f('0x1e')](_0x1c51af[_0x5a9f('0x1f')],function(_0x186f87){return{'model':db[_0x186f87[_0x5a9f('0x20')]],'as':_0x186f87['as'],'attributes':_0x186f87['attributes'],'include':_0x186f87[_0x5a9f('0x1f')]?_[_0x5a9f('0x1e')](_0x186f87['include'],function(_0x2e8c49){return{'model':db[_0x2e8c49[_0x5a9f('0x20')]],'as':_0x2e8c49['as'],'attributes':_0x2e8c49[_0x5a9f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5a9f('0xc')](function(_0x2f05bd){logger[_0x5a9f('0x15')](_0x5a9f('0x23'),_0x2c518a);logger['debug']('ShowTrunk',_0x2c518a,JSON['stringify'](_0x2f05bd));_0x4a0d1f(_0x2f05bd);})['catch'](function(_0x4a920b){logger['error'](_0x5a9f('0x23'),_0x4a920b[_0x5a9f('0x14')],_0x2c518a);_0x103a6c(_0xf7efa9[_0x5a9f('0x12')](0x1f4,_0x4a920b[_0x5a9f('0x14')]));});});}; \ No newline at end of file diff --git a/server/api/user-setting/index.js b/server/api/user-setting/index.js new file mode 100644 index 0000000..3e0cba0 --- /dev/null +++ b/server/api/user-setting/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x21d0=['update','exports','../../components/auth/service','./user-setting.controller','put','/:id','isAuthenticated'];(function(_0x3f4def,_0x21d1aa){var _0x5a2c09=function(_0xefd26b){while(--_0xefd26b){_0x3f4def['push'](_0x3f4def['shift']());}};_0x5a2c09(++_0x21d1aa);}(_0x21d0,0x16e));var _0x021d=function(_0x56d54c,_0x24037a){_0x56d54c=_0x56d54c-0x0;var _0x35fd91=_0x21d0[_0x56d54c];return _0x35fd91;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x021d('0x0'));var controller=require(_0x021d('0x1'));router[_0x021d('0x2')](_0x021d('0x3'),auth[_0x021d('0x4')](),controller[_0x021d('0x5')]);module[_0x021d('0x6')]=router; \ No newline at end of file diff --git a/server/api/user-setting/user-setting.attributes.js b/server/api/user-setting/user-setting.attributes.js new file mode 100644 index 0000000..d9bf19f --- /dev/null +++ b/server/api/user-setting/user-setting.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb702=['error','info','debug','exports','ENUM','DATE','INTEGER','UserId'];(function(_0x502eb9,_0x279312){var _0x49f697=function(_0x287dc2){while(--_0x287dc2){_0x502eb9['push'](_0x502eb9['shift']());}};_0x49f697(++_0x279312);}(_0xb702,0x130));var _0x2b70=function(_0x5e8c32,_0x1b1f3f){_0x5e8c32=_0x5e8c32-0x0;var _0x595f7b=_0xb702[_0x5e8c32];return _0x595f7b;};'use strict';var Sequelize=require('sequelize');const CLIENT_SIDE_LOG_LEVELS=[_0x2b70('0x0'),'warning',_0x2b70('0x1'),_0x2b70('0x2')];module[_0x2b70('0x3')]={'clientSideLoggingLevel':{'type':Sequelize[_0x2b70('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x2b70('0x0'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x2b70('0x5')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x2b70('0x6')],'unique':_0x2b70('0x7')}}; \ No newline at end of file diff --git a/server/api/user-setting/user-setting.controller.js b/server/api/user-setting/user-setting.controller.js new file mode 100644 index 0000000..da09c70 --- /dev/null +++ b/server/api/user-setting/user-setting.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd2ea=['catch','lodash','ioredis','../../config/logger','api','../../config/environment','socket.io-emitter','redis','./user-setting.socket','register','defaults','json','update','sendStatus','error','stack','name','send','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','then','body'];(function(_0x488602,_0x3a62aa){var _0x4e53db=function(_0x4db67d){while(--_0x4db67d){_0x488602['push'](_0x488602['shift']());}};_0x4e53db(++_0x3a62aa);}(_0xd2ea,0x15f));var _0xad2e=function(_0x155c6d,_0xcb4e2d){_0x155c6d=_0x155c6d-0x0;var _0x3080c8=_0xd2ea[_0x155c6d];return _0x3080c8;};'use strict';var _=require(_0xad2e('0x0'));var Redis=require(_0xad2e('0x1'));var logger=require(_0xad2e('0x2'))(_0xad2e('0x3'));var config=require(_0xad2e('0x4'));var db=require('../../mysqldb')['db'];var socket=require(_0xad2e('0x5'))(new Redis(config[_0xad2e('0x6')]));require(_0xad2e('0x7'))[_0xad2e('0x8')](socket);config[_0xad2e('0x6')]=_[_0xad2e('0x9')](config[_0xad2e('0x6')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x3b5170,_0x3e3d1f){_0x3e3d1f=_0x3e3d1f||0xc8;return function(_0x2ff7b2){if(_0x2ff7b2){return _0x3b5170['status'](_0x3e3d1f)[_0xad2e('0xa')](_0x2ff7b2);}};}function saveUpdates(_0x19bb0d){return function(_0x4b45f2){if(_0x4b45f2){return _0x4b45f2[_0xad2e('0xb')](_0x19bb0d)['then'](function(_0x430443){return _0x430443;});}return null;};}function handleEntityNotFound(_0x415a41){return function(_0x9879f2){if(!_0x9879f2){_0x415a41[_0xad2e('0xc')](0x194);}return _0x9879f2;};}function handleError(_0x489f25,_0x7df3c6){_0x7df3c6=_0x7df3c6||0x1f4;return function(_0x5707a5){logger[_0xad2e('0xd')](_0x5707a5[_0xad2e('0xe')]);if(_0x5707a5[_0xad2e('0xf')]){delete _0x5707a5[_0xad2e('0xf')];}_0x489f25['status'](_0x7df3c6)[_0xad2e('0x10')](_0x5707a5);};}exports['update']=function(_0x1a91ce,_0x5772f0){if(_0x1a91ce['user']['role']!=='admin')throw new Error(_0xad2e('0x11'));if(isNaN(Number(_0x1a91ce[_0xad2e('0x12')]['id'])))throw new Error(_0xad2e('0x13'));return db[_0xad2e('0x14')][_0xad2e('0x15')]({'where':{'id':_0x1a91ce[_0xad2e('0x12')]['id']}})[_0xad2e('0x16')](handleEntityNotFound(_0x5772f0,null))[_0xad2e('0x16')](saveUpdates(_0x1a91ce[_0xad2e('0x17')],null))[_0xad2e('0x16')](respondWithResult(_0x5772f0,null))[_0xad2e('0x18')](handleError(_0x5772f0,null));}; \ No newline at end of file diff --git a/server/api/user-setting/user-setting.events.js b/server/api/user-setting/user-setting.events.js new file mode 100644 index 0000000..0560d86 --- /dev/null +++ b/server/api/user-setting/user-setting.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2ce5=['remove','emit','hook','exports','../../mysqldb','UserSetting','setMaxListeners','save','update'];(function(_0x585fae,_0x21653d){var _0x5516dc=function(_0x1aba97){while(--_0x1aba97){_0x585fae['push'](_0x585fae['shift']());}};_0x5516dc(++_0x21653d);}(_0x2ce5,0xa6));var _0x52ce=function(_0x3f3b4b,_0x42e5aa){_0x3f3b4b=_0x3f3b4b-0x0;var _0x26f149=_0x2ce5[_0x3f3b4b];return _0x26f149;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0x52ce('0x0'))['db'][_0x52ce('0x1')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x52ce('0x2')](0x0);var events={'afterCreate':_0x52ce('0x3'),'afterUpdate':_0x52ce('0x4'),'afterDestroy':_0x52ce('0x5')};function emitEvent(_0x533231){return function(_0x2b6723,_0x1f81c7,_0x2c38fe){UserSettingEvents[_0x52ce('0x6')](_0x533231+':'+_0x2b6723['id'],_0x2b6723);UserSettingEvents['emit'](_0x533231,_0x2b6723);_0x2c38fe(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0x52ce('0x7')](e,emitEvent(event));}}module[_0x52ce('0x8')]=UserSettingEvents; \ No newline at end of file diff --git a/server/api/user-setting/user-setting.model.js b/server/api/user-setting/user-setting.model.js new file mode 100644 index 0000000..a7e147c --- /dev/null +++ b/server/api/user-setting/user-setting.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9354=['exports','UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince'];(function(_0x1f5ee7,_0x1e4b82){var _0x25d695=function(_0x2756a2){while(--_0x2756a2){_0x1f5ee7['push'](_0x1f5ee7['shift']());}};_0x25d695(++_0x1e4b82);}(_0x9354,0x96));var _0x4935=function(_0x4ee9cd,_0xd375b0){_0x4ee9cd=_0x4ee9cd-0x0;var _0x328a5b=_0x9354[_0x4ee9cd];return _0x328a5b;};'use strict';var attributes=require('./user-setting.attributes');module[_0x4935('0x0')]=function(_0xc3c1f3){return _0xc3c1f3['define'](_0x4935('0x1'),attributes,{'tableName':_0x4935('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x29d1eb){if(!_0x29d1eb[_0x4935('0x3')])_0x29d1eb['clientSideLoggingEnabledSince']=null;else if(_0x29d1eb[_0x4935('0x4')]===null)_0x29d1eb[_0x4935('0x4')]=new Date();}}});}; \ No newline at end of file diff --git a/server/api/user-setting/user-setting.socket.js b/server/api/user-setting/user-setting.socket.js new file mode 100644 index 0000000..d526443 --- /dev/null +++ b/server/api/user-setting/user-setting.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd547=['save','remove','update','emit','user-setting:update','user-setting:update:user-','UserId','register','length','user-setting:','./user-setting.events'];(function(_0x1ba955,_0x3bbd8a){var _0x345c04=function(_0x5be11f){while(--_0x5be11f){_0x1ba955['push'](_0x1ba955['shift']());}};_0x345c04(++_0x3bbd8a);}(_0xd547,0x1a1));var _0x7d54=function(_0x799123,_0x4e7fbc){_0x799123=_0x799123-0x0;var _0x46d7bc=_0xd547[_0x799123];return _0x46d7bc;};'use strict';var UserSettingEvents=require(_0x7d54('0x0'));var events=[_0x7d54('0x1'),_0x7d54('0x2'),_0x7d54('0x3')];function createListener(_0x3f2a6f,_0x3068bd){return function(_0x5a1b05){_0x3068bd[_0x7d54('0x4')](_0x3f2a6f,_0x5a1b05);if(_0x3f2a6f===_0x7d54('0x5')){_0x3068bd['emit'](_0x7d54('0x6')+_0x5a1b05[_0x7d54('0x7')],_0x5a1b05);}};}exports[_0x7d54('0x8')]=function(_0x32d549){for(var _0x4985eb=0x0,_0x1d6982=events[_0x7d54('0x9')];_0x4985eb<_0x1d6982;_0x4985eb++){var _0x45aae0=events[_0x4985eb];var _0x228e3b=createListener(_0x7d54('0xa')+_0x45aae0,_0x32d549);UserSettingEvents['on'](_0x45aae0,_0x228e3b);}}; \ No newline at end of file diff --git a/server/api/user/index.js b/server/api/user/index.js new file mode 100644 index 0000000..7bf0a44 --- /dev/null +++ b/server/api/user/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdc25=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/presence','/:id','show','/:id/open_tabs','getOpenTabs','/:id/contacts','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/scheduled_calls','addContacts','post','addQueues','server/files/images/','format','now','originalname','/:id/avatar','file','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','addTeams','/:id/chat_interactions','addMailInteractions','addFaxInteractions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addOpenchannelAccounts','createApiKey','put','update','/:id/password','changePassword','delete','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeFaxInteractions','/:id/sms_interactions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','/:id/api_key','removeApiKey','multer','util','path','connect-timeout'];(function(_0x42fb74,_0xd10771){var _0x88ec64=function(_0x458dc6){while(--_0x458dc6){_0x42fb74['push'](_0x42fb74['shift']());}};_0x88ec64(++_0xd10771);}(_0xdc25,0x128));var _0x5dc2=function(_0xf53f90,_0x1f94cb){_0xf53f90=_0xf53f90-0x0;var _0x2a3e6b=_0xdc25[_0xf53f90];return _0x2a3e6b;};'use strict';var multer=require(_0x5dc2('0x0'));var util=require(_0x5dc2('0x1'));var path=require(_0x5dc2('0x2'));var timeout=require(_0x5dc2('0x3'));var express=require('express');var router=express[_0x5dc2('0x4')]();var fs_extra=require(_0x5dc2('0x5'));var auth=require(_0x5dc2('0x6'));var interaction=require(_0x5dc2('0x7'));var config=require(_0x5dc2('0x8'));var controller=require(_0x5dc2('0x9'));router[_0x5dc2('0xa')]('/',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0xc')]);router[_0x5dc2('0xa')](_0x5dc2('0xd'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0xe')]);router[_0x5dc2('0xa')]('/whoami',auth[_0x5dc2('0xb')](),controller['whoami']);router[_0x5dc2('0xa')](_0x5dc2('0xf'),auth[_0x5dc2('0xb')](),controller['getPresence']);router[_0x5dc2('0xa')](_0x5dc2('0x10'),auth['isAuthenticated'](),controller[_0x5dc2('0x11')]);router[_0x5dc2('0xa')]('/:id/avatar',controller['getAvatar']);router['get'](_0x5dc2('0x12'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x13')]);router[_0x5dc2('0xa')](_0x5dc2('0x14'),auth[_0x5dc2('0xb')](),controller['getContacts']);router[_0x5dc2('0xa')]('/:id/queues',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x15')]);router[_0x5dc2('0xa')](_0x5dc2('0x16'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x17')]);router[_0x5dc2('0xa')](_0x5dc2('0x18'),auth['isAuthenticated'](),controller[_0x5dc2('0x19')]);router[_0x5dc2('0xa')](_0x5dc2('0x1a'),auth['isAuthenticated'](),controller[_0x5dc2('0x1b')]);router[_0x5dc2('0xa')](_0x5dc2('0x1c'),auth['isAuthenticated'](),controller[_0x5dc2('0x1d')]);router[_0x5dc2('0xa')](_0x5dc2('0x1e'),auth[_0x5dc2('0xb')](),controller['getChatInteractions']);router[_0x5dc2('0xa')](_0x5dc2('0x1f'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x20')]);router[_0x5dc2('0xa')]('/:id/mail/interactions',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x21')]);router[_0x5dc2('0xa')]('/:id/sms/interactions',auth[_0x5dc2('0xb')](),controller['getSmsInteractions']);router[_0x5dc2('0xa')](_0x5dc2('0x22'),auth['isAuthenticated'](),controller['getFaxInteractions']);router['get'](_0x5dc2('0x23'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x24')]);router['get'](_0x5dc2('0x25'),auth[_0x5dc2('0xb')](),controller['getTeams']);router[_0x5dc2('0xa')](_0x5dc2('0x26'),auth['isAuthenticated'](),controller[_0x5dc2('0x27')]);router[_0x5dc2('0xa')](_0x5dc2('0x28'),auth['isAuthenticated'](),controller[_0x5dc2('0x29')]);router[_0x5dc2('0xa')](_0x5dc2('0x2a'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x2b')]);router[_0x5dc2('0xa')](_0x5dc2('0x2c'),auth[_0x5dc2('0xb')](),controller['getFaxAccounts']);router[_0x5dc2('0xa')](_0x5dc2('0x2d'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x2e')]);router[_0x5dc2('0xa')](_0x5dc2('0x2f'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x30')]);router[_0x5dc2('0xa')]('/:id/sms_accounts',auth['isAuthenticated'](),controller[_0x5dc2('0x31')]);router['get'](_0x5dc2('0x32'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x33')]);router['get'](_0x5dc2('0x34'),auth[_0x5dc2('0xb')](),controller['getWhatsappAccounts']);router['get'](_0x5dc2('0x35'),auth['isAuthenticated'](),controller['getScheduledCalls']);router['get']('/:id/api_key',auth[_0x5dc2('0xb')](),controller['getApiKey']);router['post'](_0x5dc2('0x14'),auth['isAuthenticated'](),controller[_0x5dc2('0x36')]);router[_0x5dc2('0x37')]('/',auth[_0x5dc2('0xb')](),controller['create']);router['post']('/create_many',auth[_0x5dc2('0xb')](),controller['bulkCreate']);router[_0x5dc2('0x37')]('/:id/queues',auth['isAuthenticated'](),controller[_0x5dc2('0x38')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1f1f8e,_0x1b551c,_0x5993cc){_0x5993cc(null,path['join'](config['root'],_0x5dc2('0x39')));},'filename':function(_0x4027de,_0x3eb518,_0x491f96){_0x491f96(null,util[_0x5dc2('0x3a')]('%s-%s',Date[_0x5dc2('0x3b')](),_0x3eb518[_0x5dc2('0x3c')]));}})});router[_0x5dc2('0x37')](_0x5dc2('0x3d'),upload['single'](_0x5dc2('0x3e')),controller[_0x5dc2('0x3f')]);router['post'](_0x5dc2('0x40'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x41')]);router['post'](_0x5dc2('0x42'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x43')]);router['post'](_0x5dc2('0x44'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x45')]);router[_0x5dc2('0x37')](_0x5dc2('0x46'),auth[_0x5dc2('0xb')](),controller['unpause']);router[_0x5dc2('0x37')]('/:id/teams',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x47')]);router[_0x5dc2('0x37')](_0x5dc2('0x48'),auth[_0x5dc2('0xb')](),controller['addChatInteractions']);router[_0x5dc2('0x37')]('/:id/mail_interactions',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x49')]);router['post']('/:id/fax_interactions',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x4a')]);router[_0x5dc2('0x37')]('/:id/sms_interactions',auth['isAuthenticated'](),controller[_0x5dc2('0x4b')]);router[_0x5dc2('0x37')](_0x5dc2('0x4c'),auth[_0x5dc2('0xb')](),controller['addOpenchannelInteractions']);router[_0x5dc2('0x37')](_0x5dc2('0x4d'),auth['isAuthenticated'](),controller[_0x5dc2('0x4e')]);router['post'](_0x5dc2('0x2c'),auth['isAuthenticated'](),controller['addFaxAccounts']);router['post']('/:id/mail_accounts',auth['isAuthenticated'](),controller['addMailAccounts']);router[_0x5dc2('0x37')](_0x5dc2('0x2f'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x4f')]);router[_0x5dc2('0x37')]('/:id/sms_accounts',auth[_0x5dc2('0xb')](),controller['addSmsAccounts']);router[_0x5dc2('0x37')](_0x5dc2('0x32'),auth[_0x5dc2('0xb')](),controller['addChatWebsites']);router[_0x5dc2('0x37')](_0x5dc2('0x34'),auth[_0x5dc2('0xb')](),controller['addWhatsappAccounts']);router[_0x5dc2('0x37')]('/:id/api_key',auth['isAuthenticated'](),controller[_0x5dc2('0x50')]);router[_0x5dc2('0x51')](_0x5dc2('0x10'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x52')]);router[_0x5dc2('0x51')](_0x5dc2('0x53'),auth['isAuthenticated'](),controller[_0x5dc2('0x54')]);router[_0x5dc2('0x55')]('/:id/queues',auth[_0x5dc2('0xb')](),controller['removeQueues']);router[_0x5dc2('0x55')](_0x5dc2('0x25'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x56')]);router['delete'](_0x5dc2('0x10'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x57')]);router[_0x5dc2('0x55')](_0x5dc2('0x48'),auth['isAuthenticated'](),controller[_0x5dc2('0x58')]);router[_0x5dc2('0x55')](_0x5dc2('0x59'),auth['isAuthenticated'](),controller['removeMailInteractions']);router[_0x5dc2('0x55')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0x5dc2('0x5a')]);router[_0x5dc2('0x55')](_0x5dc2('0x5b'),auth[_0x5dc2('0xb')](),controller['removeSmsInteractions']);router[_0x5dc2('0x55')](_0x5dc2('0x4c'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x5c')]);router['delete'](_0x5dc2('0x4d'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x5d')]);router[_0x5dc2('0x55')](_0x5dc2('0x2c'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x5e')]);router[_0x5dc2('0x55')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x5dc2('0x5f')]);router[_0x5dc2('0x55')](_0x5dc2('0x2f'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x60')]);router['delete']('/:id/sms_accounts',auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x61')]);router['delete'](_0x5dc2('0x32'),auth[_0x5dc2('0xb')](),controller['removeChatWebsites']);router[_0x5dc2('0x55')](_0x5dc2('0x34'),auth['isAuthenticated'](),controller['removeWhatsappAccounts']);router['delete'](_0x5dc2('0x62'),auth[_0x5dc2('0xb')](),controller[_0x5dc2('0x63')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/user/user.attributes.js b/server/api/user/user.attributes.js new file mode 100644 index 0000000..6b108c1 --- /dev/null +++ b/server/api/user/user.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x34e8=['isArray','wss','encryption','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','avpf','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','sequelize','moment','util','lodash','STRING','name','setDataValue','defaultuser','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','agent','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','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\x22gsm\x22]','insecure','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','certificate','passive','actpass','update,nonat','TEXT','showWebBar','get'];(function(_0x444bb4,_0x327ffb){var _0x14905d=function(_0x11465d){while(--_0x11465d){_0x444bb4['push'](_0x444bb4['shift']());}};_0x14905d(++_0x327ffb);}(_0x34e8,0x12c));var _0x834e=function(_0x4a960a,_0x21ee52){_0x4a960a=_0x4a960a-0x0;var _0xb9972a=_0x34e8[_0x4a960a];return _0xb9972a;};'use strict';var Sequelize=require(_0x834e('0x0'));var moment=require(_0x834e('0x1'));var util=require(_0x834e('0x2'));var _=require(_0x834e('0x3'));module['exports']={'name':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x472111){this[_0x834e('0x6')](_0x834e('0x5'),_0x472111);this[_0x834e('0x6')](_0x834e('0x7'),_0x472111);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'set':function(_0x52056d){this[_0x834e('0x6')](_0x834e('0x8'),_0x52056d);this[_0x834e('0x6')](_0x834e('0x9'),util[_0x834e('0xa')](_0x834e('0xb'),_0x52056d,this[_0x834e('0xc')](_0x834e('0xd'))));}},'alias':{'type':Sequelize[_0x834e('0x4')]},'email':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0xe'),'validate':{'isEmail':!![]},'set':function(_0x36e124){if(_0x36e124){this[_0x834e('0x6')](_0x834e('0xe'),_0x36e124[_0x834e('0xf')]());}}},'role':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x11'),'user',_0x834e('0x12'),_0x834e('0x13')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x834e('0x4')],'defaultValue':_0x834e('0x14')},'internal':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':![],'unique':_0x834e('0xd'),'set':function(_0x50e860){this[_0x834e('0x6')](_0x834e('0xd'),_0x50e860);this['setDataValue'](_0x834e('0x16'),_0x50e860);this['setDataValue'](_0x834e('0x9'),util[_0x834e('0xa')]('\x22%s\x22\x20<%s>',this[_0x834e('0xc')](_0x834e('0x8')),_0x50e860));}},'salt':{'type':Sequelize[_0x834e('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x834e('0x4')]},'address':{'type':Sequelize[_0x834e('0x4')]},'zipcode':{'type':Sequelize[_0x834e('0x4')]},'userpic':{'type':Sequelize[_0x834e('0x4')]},'city':{'type':Sequelize[_0x834e('0x4')]},'country':{'type':Sequelize[_0x834e('0x4')]},'online':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x834e('0x18')},'lastPauseAt':{'type':Sequelize[_0x834e('0x19')]},'chatCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x834e('0x15')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x1a')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x834e('0x15')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend','user','peer'),'allowNull':!![],'defaultValue':_0x834e('0x1b')},'context':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0x834e('0x1d'),_0x834e('0x1e'),_0x834e('0x1f'),_0x834e('0x20'),_0x834e('0x21'),_0x834e('0x22'),_0x834e('0x23'),_0x834e('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x25'),'set':function(_0x2b3418){this[_0x834e('0x6')](_0x834e('0x26'),_0x2b3418?_0x2b3418[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x26'))?this[_0x834e('0xc')]('transport')[_0x834e('0x28')](','):null;},'comment':_0x834e('0x29')},'dtmfmode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2a'),'info',_0x834e('0x2b'),_0x834e('0x2c'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x31'),'set':function(_0x6a3ac){this['setDataValue'](_0x834e('0x32'),_0x6a3ac?_0x6a3ac[_0x834e('0x27')](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x834e('0xc')](_0x834e('0x32'))[_0x834e('0x28')](','):null;},'comment':_0x834e('0x33')},'callgroup':{'type':Sequelize[_0x834e('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x834e('0x4')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x834e('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x834e('0x34')},'allow':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'defaultValue':_0x834e('0x35'),'set':function(_0x3c59af){this[_0x834e('0x6')]('allow',_0x3c59af?_0x3c59af[_0x834e('0x27')](';'):_0x834e('0x35'));},'get':function(){return this[_0x834e('0xc')]('allow')?this[_0x834e('0xc')](_0x834e('0x36'))['split'](';'):null;},'comment':_0x834e('0x37')},'autoframing':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'set':function(_0x4a18bb){this['setDataValue'](_0x834e('0x38'),_0x4a18bb?_0x4a18bb[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x38'))?this[_0x834e('0xc')](_0x834e('0x38'))[_0x834e('0x28')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x834e('0x10')]('yes','no',_0x834e('0x39')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x3a')},'amaflags':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3c'),_0x834e('0x3d'),_0x834e('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3f'),_0x834e('0x40')),'allowNull':!![],'defaultValue':_0x834e('0x40')},'t38pt_usertpsource':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x834e('0x10')]('yes','no','fingerprint',_0x834e('0x41')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x834e('0x10')]('active',_0x834e('0x42'),_0x834e('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x834e('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x834e('0x19')]},'passwordResetAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x834e('0x45')]},'showWebBar':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0,'set':function(_0x1e4310){this[_0x834e('0x6')](_0x834e('0x46'),_0x1e4310);var _0x1659c8=this[_0x834e('0x47')]({'plain':!![]});switch(_0x1e4310){case 0x0:case 0x1:var _0x17b8e3=_0x1659c8[_0x834e('0x26')]?_[_0x834e('0x48')](_0x1659c8[_0x834e('0x26')])?_0x1659c8[_0x834e('0x26')][_0x834e('0x27')]():_0x1659c8[_0x834e('0x26')]:'udp';if(_0x17b8e3===_0x834e('0x49')){_0x17b8e3=_0x834e('0x25');}this[_0x834e('0x6')](_0x834e('0x26'),_0x17b8e3);this['setDataValue'](_0x834e('0x4a'),'no');this['setDataValue']('avpf',null);this[_0x834e('0x6')](_0x834e('0x4b'),null);this[_0x834e('0x6')](_0x834e('0x4c'),null);this[_0x834e('0x6')](_0x834e('0x4d'),null);this[_0x834e('0x6')](_0x834e('0x4e'),null);this['setDataValue'](_0x834e('0x4f'),null);this['setDataValue'](_0x834e('0x50'),null);this[_0x834e('0x6')]('dtlsprivatekey',null);this['setDataValue'](_0x834e('0x51'),'no');break;case 0x2:this[_0x834e('0x6')](_0x834e('0x26'),_0x834e('0x49'));this[_0x834e('0x6')]('encryption',_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x52'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4b'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4c'),_0x834e('0x2d'));this['setDataValue'](_0x834e('0x4d'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4e'),'no');this['setDataValue'](_0x834e('0x4f'),'actpass');this['setDataValue']('dtlscertfile',_0x1659c8[_0x834e('0x50')]||_0x834e('0x53'));this['setDataValue'](_0x834e('0x54'),_0x1659c8[_0x834e('0x54')]||'/etc/pki/tls/private/motion.key');this[_0x834e('0x6')](_0x834e('0x51'),'yes');break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x346be5){this[_0x834e('0x6')](_0x834e('0x55'),_0x346be5?_0x346be5[_0x834e('0x27')](','):[]);},'get':function(){return this[_0x834e('0xc')]('permissions')?_[_0x834e('0x56')](this['getDataValue'](_0x834e('0x55'))[_0x834e('0x28')](','),function(_0x2c758c){return parseInt(_0x2c758c,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x834e('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x834e('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('phoneBarEnableScreenRecordingByAgent')?this[_0x834e('0xc')](_0x834e('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x18ddac){if(typeof _0x18ddac===_0x834e('0x58')){var _0x5acf5c=_0x18ddac==='1'?!![]:_0x18ddac==='0'?![]:_0x18ddac===_0x834e('0x59')?!![]:_0x18ddac===_0x834e('0x5a')?![]:![];this[_0x834e('0x6')]('screenrecording',_0x5acf5c);}else{this[_0x834e('0x6')](_0x834e('0x5b'),_0x18ddac);}}},'blocked':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x443633){this[_0x834e('0x6')]('blocked',_0x443633);if(_0x443633===!![]){this['setDataValue'](_0x834e('0x5c'),moment());this[_0x834e('0x6')]('loginAttempts',0x0);}else{this[_0x834e('0x6')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x834e('0x15')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/user/user.controller.js b/server/api/user/user.controller.js new file mode 100644 index 0000000..d3b4956 --- /dev/null +++ b/server/api/user/user.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb449=['uniqBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','SELECT','select','InteractionId','field','ui.createdAt','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','APIBadRequestError','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','defaults','localhost','http','request','then','info','User,\x20%s,\x20%s','debug','request\x20sent','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','json','update','role','agent','emit','userNotification:recalc:','get','user','Agents','Telephones','telephone','filter','ignore','map','value','includes','find','name','destroy','stack','send','index','User','fieldName','type','key','getOptions','where','query','userSetting','true','UserSetting','attributes','push','findAll','rows','openTabs','length','chat','dataValues','sms','fax','mail','openchannel','whatsapp','all','show','params','model','differenceBy','keys','rawAttributes','password','salt','filters','intersection','fields','includeAll','include','options','body','describe','addContacts','ids','internal','findById','validatePasswordPattern','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','from','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','104','107','108','100','111','114','115','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','isEmpty','autoAssociation','compact','changePassword','oldPassword','newPassword','Sequelize','authenticate','Wrong\x20credentials','ValidationError','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','securePassword','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','addQueues','channel','loginInPause','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','penalty','QueueId','Queue:save','voice','online','interface','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','remove','Queues','isArray','Queue:remove','addAvatar','filename','join','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','getContacts','findOne','order','sort','pick','merge','hasOwnProperty','CmList','List','Tag','Tags','color','tag','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','phone','LOCAL/%s@from-sip/n','intrf','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','PAUSE','LOGININPAUSE','bulkCreate','concat','resolve','logout','pause','QueuePause','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','addTeams','Team','getAssociatedQueues','flattenDeep','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','getLists','getAgents','addChatInteractions','omit','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','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','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notILike','$overlap','$contains','$contained','firstName','lastName','dialActive','VoiceQueue','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','generateApiKey','iat','nonce','apiKeyNonce','whoami','getUserSetting','getPresence','teams','queues','flatten','col','toString','asc','desc','substring'];(function(_0xcc84ec,_0x348bb6){var _0x3e9632=function(_0x317c71){while(--_0x317c71){_0xcc84ec['push'](_0xcc84ec['shift']());}};_0x3e9632(++_0x348bb6);}(_0xb449,0x19d));var _0x9b44=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb449[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x9b44('0x0'));var util=require(_0x9b44('0x1'));var path=require('path');var fs=require('fs');var _=require(_0x9b44('0x2'));var squel=require(_0x9b44('0x3'));var jayson=require(_0x9b44('0x4'));var Redis=require(_0x9b44('0x5'));var authService=require(_0x9b44('0x6'));var qs=require(_0x9b44('0x7'));var logger=require(_0x9b44('0x8'))('api');var utils=require(_0x9b44('0x9'));var config=require(_0x9b44('0xa'));var licenseUtil=require(_0x9b44('0xb'));var APIBadRequestError=require('../../errors/api')[_0x9b44('0xc')];var APINotFoundError=require(_0x9b44('0xd'))[_0x9b44('0xe')];var APIHandleError=require('../../errors/api')[_0x9b44('0xf')];var db=require(_0x9b44('0x10'))['db'];var socket=require(_0x9b44('0x11'))(new Redis(config[_0x9b44('0x12')]));require('./user.socket')['register'](socket);config[_0x9b44('0x12')]=_[_0x9b44('0x13')](config[_0x9b44('0x12')],{'host':_0x9b44('0x14'),'port':0x18eb});var amiClient=jayson['client'][_0x9b44('0x15')]({'port':0x232a});var values;function respondWithRpcPromise(_0x5af290,_0xdf7a5,_0x3b052f,_0x3e3cb3){return new Promise(function(_0x2a7d4e,_0x1ba7b9){var _0x50fd16=_0x3e3cb3||amiClient;return _0x50fd16[_0x9b44('0x16')](_0x5af290,_0x3b052f)[_0x9b44('0x17')](function(_0x5e25f3){logger[_0x9b44('0x18')](_0x9b44('0x19'),_0xdf7a5,'request\x20sent');logger[_0x9b44('0x1a')]('User,\x20%s,\x20%s,\x20%s',_0xdf7a5,_0x9b44('0x1b'),JSON['stringify'](_0x5e25f3));if(_0x5e25f3[_0x9b44('0x1c')]){if(_0x5e25f3['error'][_0x9b44('0x1d')]===0x1f4){logger['error'](_0x9b44('0x19'),_0xdf7a5,_0x5e25f3[_0x9b44('0x1c')][_0x9b44('0x1e')]);return _0x1ba7b9(_0x5e25f3[_0x9b44('0x1c')][_0x9b44('0x1e')]);}logger['error'](_0x9b44('0x19'),_0xdf7a5,_0x5e25f3[_0x9b44('0x1c')][_0x9b44('0x1e')]);return _0x2a7d4e(_0x5e25f3[_0x9b44('0x1c')][_0x9b44('0x1e')]);}else{logger[_0x9b44('0x18')]('User,\x20%s,\x20%s',_0xdf7a5,_0x9b44('0x1b'));_0x2a7d4e(_0x5e25f3['result'][_0x9b44('0x1e')]);}})[_0x9b44('0x1f')](function(_0x33d69a){logger[_0x9b44('0x1c')]('User,\x20%s,\x20%s',_0xdf7a5,_0x33d69a);_0x1ba7b9(_0x33d69a);});});}function respondWithStatusCode(_0x2910cf,_0x129ed4){_0x129ed4=_0x129ed4||0xcc;return function(_0x16baa3){if(_0x16baa3){return _0x2910cf[_0x9b44('0x20')](_0x129ed4);}return _0x2910cf[_0x9b44('0x21')](_0x129ed4)[_0x9b44('0x22')]();};}function respondWithResult(_0x658819,_0xc57f15){_0xc57f15=_0xc57f15||0xc8;return function(_0x592743){if(_0x592743){return _0x658819['status'](_0xc57f15)['json'](_0x592743);}};}function respondWithFilteredResult(_0x4b25a5,_0x1cbb79){return function(_0x15f49d){if(_0x15f49d){var _0x913b68=typeof _0x1cbb79[_0x9b44('0x23')]===_0x9b44('0x24')&&typeof _0x1cbb79[_0x9b44('0x25')]===_0x9b44('0x24');var _0x1085d1=_0x15f49d[_0x9b44('0x26')];var _0x276dfc=_0x913b68?0x0:_0x1cbb79['offset'];var _0x1cc388=_0x913b68?_0x15f49d['count']:_0x1cbb79['offset']+_0x1cbb79[_0x9b44('0x25')];var _0x1932f4;if(_0x1cc388>=_0x1085d1){_0x1cc388=_0x1085d1;_0x1932f4=0xc8;}else{_0x1932f4=0xce;}_0x4b25a5[_0x9b44('0x21')](_0x1932f4);return _0x4b25a5['set']('Content-Range',_0x276dfc+'-'+_0x1cc388+'/'+_0x1085d1)[_0x9b44('0x27')](_0x15f49d);}return null;};}function saveUpdates(_0x2920e8){return function(_0x380e19){if(_0x380e19){return _0x380e19[_0x9b44('0x28')](_0x2920e8)[_0x9b44('0x17')](function(_0x56b456){if(_0x56b456[_0x9b44('0x29')]===_0x9b44('0x2a')){socket[_0x9b44('0x2b')](_0x9b44('0x2c')+_0x56b456['id'],_0x56b456);}return _0x56b456;});}return null;};}function removeEntity(_0xc7a7f5){return function(_0x3e8e4b){if(_0x3e8e4b){return _0x3e8e4b['destroy']()['then'](function(){var _0x4f4ee0=_0x3e8e4b[_0x9b44('0x2d')]({'plain':!![]});if(_0x4f4ee0[_0x9b44('0x29')]==='admin')return;var _0xa3875b=[{'name':'Users','value':_0x9b44('0x2e'),'ignore':!![]},{'name':_0x9b44('0x2f'),'value':_0x9b44('0x2a'),'ignore':![]},{'name':_0x9b44('0x30'),'value':_0x9b44('0x31'),'ignore':![]}];var _0x710d91=_(_0xa3875b)[_0x9b44('0x32')](_0x9b44('0x33'))[_0x9b44('0x34')](_0x9b44('0x35'))['value']();if(_[_0x9b44('0x36')](_0x710d91,_0x4f4ee0['role'])){return;}var _0x3d66d5=_[_0x9b44('0x37')](_0xa3875b,[_0x9b44('0x35'),_0x4f4ee0['role']])[_0x9b44('0x38')];return db['UserProfileResource'][_0x9b44('0x39')]({'where':{'type':_0x3d66d5,'resourceId':_0x4f4ee0['id']}})[_0x9b44('0x17')](function(){return _0x3e8e4b;});})[_0x9b44('0x17')](function(){_0xc7a7f5[_0x9b44('0x21')](0xcc)[_0x9b44('0x22')]();});}};}function handleEntityNotFound(_0x3cec7d){return function(_0x242809){if(!_0x242809){_0x3cec7d[_0x9b44('0x20')](0x194);}return _0x242809;};}function handleError(_0x5826be,_0x17401a){_0x17401a=_0x17401a||0x1f4;return function(_0x187d0d){logger[_0x9b44('0x1c')](_0x187d0d[_0x9b44('0x3a')]);if(_0x187d0d['name']){delete _0x187d0d['name'];}_0x5826be[_0x9b44('0x21')](_0x17401a)[_0x9b44('0x3b')](_0x187d0d);};}exports[_0x9b44('0x3c')]=function(_0x361368,_0x4f37d8){var _0xc16d90={},_0x5c459f={'count':0x0,'rows':[]};var _0x200baf=_(db[_0x9b44('0x3d')]['rawAttributes'])[_0x9b44('0x34')](function(_0x30905c){return{'name':_0x30905c[_0x9b44('0x3e')],'type':_0x30905c[_0x9b44('0x3f')][_0x9b44('0x40')]};})[_0x9b44('0x32')](function(_0x42e7de){return!_[_0x9b44('0x36')](['password','salt'],_0x42e7de['name']);})[_0x9b44('0x35')]();_0xc16d90=qs[_0x9b44('0x41')](_0x200baf,_0x361368);var _0x1fe244={'where':_0xc16d90[_0x9b44('0x42')]};return db[_0x9b44('0x3d')][_0x9b44('0x26')](_0x1fe244)[_0x9b44('0x17')](function(_0x2d1afc){_0x5c459f[_0x9b44('0x26')]=_0x2d1afc;if(_0x361368[_0x9b44('0x43')]['includeAll']){_0xc16d90['include']=[{'all':!![]}];}if(_0x361368[_0x9b44('0x43')][_0x9b44('0x44')]===_0x9b44('0x45')){_0xc16d90['include']=[{'model':db[_0x9b44('0x46')],'as':_0x9b44('0x44')}];}if(!_['includes'](_0xc16d90[_0x9b44('0x47')],'id')){_0xc16d90[_0x9b44('0x47')][_0x9b44('0x48')]('id');}return db[_0x9b44('0x3d')][_0x9b44('0x49')](_0xc16d90);})[_0x9b44('0x17')](function(_0x32ccaa){_0x5c459f[_0x9b44('0x4a')]=_0x32ccaa;if(_0x361368['query'][_0x9b44('0x4b')]===_0x9b44('0x45')){var _0x91fee1=[];for(var _0x5a3615=0x0;_0x5a3615<_0x5c459f[_0x9b44('0x4a')][_0x9b44('0x4c')];_0x5a3615++){_0x91fee1[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x4d'),_0x5c459f[_0x9b44('0x4a')][_0x5a3615][_0x9b44('0x4e')]));_0x91fee1[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x4f'),_0x5c459f[_0x9b44('0x4a')][_0x5a3615]['dataValues']));_0x91fee1[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x50'),_0x5c459f[_0x9b44('0x4a')][_0x5a3615]['dataValues']));_0x91fee1[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x51'),_0x5c459f[_0x9b44('0x4a')][_0x5a3615][_0x9b44('0x4e')]));_0x91fee1[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x52'),_0x5c459f[_0x9b44('0x4a')][_0x5a3615][_0x9b44('0x4e')]));_0x91fee1['push'](get_open_tabs(_0x9b44('0x53'),_0x5c459f[_0x9b44('0x4a')][_0x5a3615][_0x9b44('0x4e')]));}return Promise[_0x9b44('0x54')](_0x91fee1)[_0x9b44('0x17')](function(){return _0x5c459f;});}else{return _0x5c459f;}})['then'](respondWithFilteredResult(_0x4f37d8,_0xc16d90))[_0x9b44('0x1f')](handleError(_0x4f37d8,null));};exports[_0x9b44('0x55')]=function(_0x108fcb,_0x4d9521){var _0x278abb={'raw':![],'where':{'id':_0x108fcb[_0x9b44('0x56')]['id']}},_0x3883fb={};_0x3883fb[_0x9b44('0x57')]=_[_0x9b44('0x58')](_[_0x9b44('0x59')](db['User'][_0x9b44('0x5a')]),[_0x9b44('0x5b'),_0x9b44('0x5c')]);_0x3883fb['query']=_[_0x9b44('0x59')](_0x108fcb[_0x9b44('0x43')]);_0x3883fb[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x3883fb[_0x9b44('0x57')],_0x3883fb[_0x9b44('0x43')]);_0x278abb['attributes']=_[_0x9b44('0x5e')](_0x3883fb[_0x9b44('0x57')],qs[_0x9b44('0x5f')](_0x108fcb['query'][_0x9b44('0x5f')]));_0x278abb[_0x9b44('0x47')]=_0x278abb[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x278abb[_0x9b44('0x47')]:_0x3883fb[_0x9b44('0x57')];if(_0x108fcb[_0x9b44('0x43')][_0x9b44('0x60')]){_0x278abb['include']=[{'all':!![]}];}if(_0x108fcb['query'][_0x9b44('0x44')]==='true'){_0x278abb[_0x9b44('0x61')]=[{'model':db[_0x9b44('0x46')],'as':_0x9b44('0x44')}];}_0x278abb=_['merge']({},_0x278abb,_0x108fcb[_0x9b44('0x62')]);if(!_[_0x9b44('0x36')](_0x278abb[_0x9b44('0x47')],'id')){_0x278abb[_0x9b44('0x47')][_0x9b44('0x48')]('id');}return db['User'][_0x9b44('0x37')](_0x278abb)['then'](handleEntityNotFound(_0x4d9521,null))[_0x9b44('0x17')](function(_0x4a2462){var _0x55ac4f=[];values=_0x4a2462;if(_0x108fcb[_0x9b44('0x43')][_0x9b44('0x4b')]===_0x9b44('0x45')){_0x55ac4f[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x4d'),_0x4a2462['dataValues']));_0x55ac4f[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x4f'),_0x4a2462[_0x9b44('0x4e')]));_0x55ac4f['push'](get_open_tabs(_0x9b44('0x52'),_0x4a2462['dataValues']));_0x55ac4f[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x53'),_0x4a2462['dataValues']));_0x55ac4f[_0x9b44('0x48')](get_open_tabs('fax',_0x4a2462[_0x9b44('0x4e')]));_0x55ac4f[_0x9b44('0x48')](get_open_tabs('mail',_0x4a2462[_0x9b44('0x4e')]));return Promise[_0x9b44('0x54')](_0x55ac4f);}else{return values;}})[_0x9b44('0x17')](function(){return values;})[_0x9b44('0x17')](respondWithResult(_0x4d9521,null))[_0x9b44('0x1f')](handleError(_0x4d9521,null));};exports[_0x9b44('0x28')]=function(_0x525750,_0xb7e0e7){if(_0x525750[_0x9b44('0x63')]['id']){delete _0x525750['body']['id'];}delete _0x525750[_0x9b44('0x63')][_0x9b44('0x29')];return db[_0x9b44('0x3d')]['find']({'where':{'id':_0x525750[_0x9b44('0x56')]['id']}})['then'](handleEntityNotFound(_0xb7e0e7,null))[_0x9b44('0x17')](saveUpdates(_0x525750[_0x9b44('0x63')],null))['then'](respondWithResult(_0xb7e0e7,null))[_0x9b44('0x1f')](handleError(_0xb7e0e7,null));};exports[_0x9b44('0x64')]=function(_0x8689f,_0xd9091f){return db[_0x9b44('0x3d')]['describe']()[_0x9b44('0x17')](respondWithResult(_0xd9091f,null))[_0x9b44('0x1f')](handleError(_0xd9091f,null));};exports[_0x9b44('0x65')]=function(_0x31bf22,_0x4402e3){return db['User'][_0x9b44('0x37')]({'where':{'id':_0x31bf22[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x4402e3,null))['then'](function(_0x5b5333){if(_0x5b5333){return _0x5b5333[_0x9b44('0x65')](_0x31bf22[_0x9b44('0x63')][_0x9b44('0x66')],_['omit'](_0x31bf22[_0x9b44('0x63')],['ids','id'])||{});}})['then'](respondWithResult(_0x4402e3,null))[_0x9b44('0x1f')](handleError(_0x4402e3,null));};function validateUser(_0x77b17e){return new Promise(function(_0x1b3756,_0x31c703){if(_0x77b17e[_0x9b44('0x67')])return _0x1b3756(_0x77b17e);return db['Setting'][_0x9b44('0x68')](0x1)['then'](function(_0x34e7c3){if(_0x34e7c3['securePassword'])authService[_0x9b44('0x69')](_0x77b17e[_0x9b44('0x5b')]);db[_0x9b44('0x3d')][_0x9b44('0x6a')](_0x9b44('0x67'))[_0x9b44('0x17')](function(_0x2b4edb){if(_['isNil'](_0x2b4edb)){_0x77b17e['internal']=_0x34e7c3[_0x9b44('0x6b')]||0x1;return;}if(_[_0x9b44('0x6c')](_0x34e7c3['min_internal'])||_0x34e7c3[_0x9b44('0x6b')]===_0x2b4edb){_0x77b17e[_0x9b44('0x67')]=_0x2b4edb+0x1;return;}if(_0x34e7c3['min_internal']>_0x2b4edb){_0x77b17e[_0x9b44('0x67')]=_0x34e7c3[_0x9b44('0x6b')];return;}return db[_0x9b44('0x6d')][_0x9b44('0x43')](_0x9b44('0x6e'),{'type':db[_0x9b44('0x6d')][_0x9b44('0x6f')]['SELECT']})[_0x9b44('0x17')](function(_0x4d676e){if(_0x4d676e&&_0x4d676e[_0x9b44('0x4c')]){for(var _0x42feea=0x0,_0x5c8f7c=_0x4d676e[_0x9b44('0x4c')];_0x42feea<_0x5c8f7c&&_[_0x9b44('0x6c')](_0x77b17e[_0x9b44('0x67')]);_0x42feea++){if(_0x34e7c3['min_internal']<=_0x4d676e[_0x42feea][_0x9b44('0x70')]){_0x77b17e[_0x9b44('0x67')]=_0x4d676e[_0x42feea][_0x9b44('0x70')];}else if(_0x34e7c3[_0x9b44('0x6b')]>_0x4d676e[_0x42feea][_0x9b44('0x70')]&&_0x34e7c3[_0x9b44('0x6b')]<=_0x4d676e[_0x42feea]['to']){_0x77b17e[_0x9b44('0x67')]=_0x34e7c3[_0x9b44('0x6b')];}}}if(_['isNil'](_0x77b17e[_0x9b44('0x67')])){_0x77b17e['internal']=_0x2b4edb+0x1;}return _0x1b3756(_0x77b17e);});});})[_0x9b44('0x1f')](function(_0x1e79fa){_0x31c703(_0x1e79fa);});});}function updateUser(_0x52699c){return new Promise(function(_0x41d002,_0x366c02){try{if(_0x52699c['voicemail']){_0x52699c[_0x9b44('0x71')]=_0x52699c[_0x9b44('0x67')];_0x52699c[_0x9b44('0x72')]={'mailbox':_0x52699c['internal'],'password':_0x52699c[_0x9b44('0x5b')],'fullname':_0x52699c[_0x9b44('0x73')],'email':_0x52699c[_0x9b44('0x74')]};}if(_0x52699c[_0x9b44('0x29')]===_0x9b44('0x2a')){if(!_0x52699c['permissions'])_0x52699c[_0x9b44('0x75')]=[_0x9b44('0x76'),_0x9b44('0x77'),_0x9b44('0x78'),_0x9b44('0x79'),'110',_0x9b44('0x7a'),'105','106',_0x9b44('0x7b'),_0x9b44('0x7c'),'109',_0x9b44('0x7d'),_0x9b44('0x7e'),_0x9b44('0x7f'),_0x9b44('0x80')];}_0x41d002(_0x52699c);}catch(_0x3f8317){_0x366c02(_0x3f8317);}});}exports['create']=function(_0x13f4bd,_0x81ff4c){if(_0x13f4bd[_0x9b44('0x2e')][_0x9b44('0x29')]===_0x9b44('0x2a'))throw new Error(_0x9b44('0x81'));if(_0x13f4bd[_0x9b44('0x63')][_0x9b44('0x29')]===_0x9b44('0x2e')&&_0x13f4bd['user'][_0x9b44('0x29')]!==_0x9b44('0x82')){throw new Error(_0x9b44('0x83'));}if(_0x13f4bd[_0x9b44('0x63')][_0x9b44('0x29')]===_0x9b44('0x82')&&_0x13f4bd[_0x9b44('0x2e')][_0x9b44('0x29')]!==_0x9b44('0x82')){throw new Error(_0x9b44('0x84'));}return licenseUtil[_0x9b44('0x85')]([_0x13f4bd[_0x9b44('0x63')]])[_0x9b44('0x17')](function(){return validateUser(_0x13f4bd[_0x9b44('0x63')]);})[_0x9b44('0x17')](function(_0x420129){return updateUser(_0x420129)[_0x9b44('0x17')](function(_0x11ee8f){if(_0x11ee8f[_0x9b44('0x29')]===_0x9b44('0x82')){_0x11ee8f[_0x9b44('0x86')]=_0x13f4bd[_0x9b44('0x2e')][_0x9b44('0x86')];delete _0x11ee8f[_0x9b44('0x87')];}return _0x11ee8f;});})[_0x9b44('0x17')](function(_0x1dd28b){return db[_0x9b44('0x3d')]['create'](_0x1dd28b,{'include':[{'model':db[_0x9b44('0x72')],'as':_0x9b44('0x72')}]});})[_0x9b44('0x17')](function(_0x5c55ea){if(_0x13f4bd[_0x9b44('0x63')]['role']===_0x9b44('0x2e'))return _0x5c55ea;if(_0x13f4bd['user']['role']!==_0x9b44('0x2e'))return _0x5c55ea;return db[_0x9b44('0x88')][_0x9b44('0x37')]({'where':{'name':_0x5c55ea[_0x9b44('0x29')]==='agent'?_0x9b44('0x2f'):_0x9b44('0x30'),'userProfileId':_0x13f4bd[_0x9b44('0x2e')][_0x9b44('0x87')]},'raw':!![]})[_0x9b44('0x17')](function(_0x55ebde){if(!_0x55ebde||_0x55ebde['autoAssociation']!=0x0)return _0x5c55ea;return db[_0x9b44('0x89')][_0x9b44('0x8a')]({'name':_0x5c55ea[_0x9b44('0x38')],'resourceId':_0x5c55ea['id'],'type':_0x55ebde[_0x9b44('0x38')],'sectionId':_0x55ebde['id']},{})[_0x9b44('0x17')](function(){return _0x5c55ea;});})[_0x9b44('0x1f')](function(_0x1b6946){logger['error'](_0x9b44('0x8b'),_0x1b6946);throw _0x1b6946;});})[_0x9b44('0x17')](respondWithResult(_0x81ff4c,0xc9))[_0x9b44('0x1f')](handleError(_0x81ff4c,null));};exports['bulkCreate']=function(_0x15d436,_0x22dc9c){var _0x4b8a89=_0x15d436[_0x9b44('0x63')];var _0x53744b=[];if(_0x15d436[_0x9b44('0x2e')][_0x9b44('0x29')]===_0x9b44('0x2a'))throw new Error(_0x9b44('0x81'));if(_[_0x9b44('0x8c')](_0x4b8a89,[_0x9b44('0x29'),'user'])&&_0x15d436[_0x9b44('0x2e')][_0x9b44('0x29')]!==_0x9b44('0x82')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_['some'](_0x4b8a89,['role',_0x9b44('0x82')])&&_0x15d436['user']['role']!==_0x9b44('0x82')){throw new Error(_0x9b44('0x8d'));}return licenseUtil[_0x9b44('0x85')](_0x4b8a89)[_0x9b44('0x17')](function(){return validateUser(_0x4b8a89[0x0]);})[_0x9b44('0x17')](function(){for(var _0x10ec7c=0x1;_0x10ec7c<_0x4b8a89[_0x9b44('0x4c')];_0x10ec7c++){var _0x5b406d=_0x4b8a89[_0x10ec7c-0x1][_0x9b44('0x67')];if(!_0x4b8a89[_0x10ec7c]['internal'])_0x4b8a89[_0x10ec7c]['internal']=_0x5b406d+0x1;_0x53744b[_0x9b44('0x48')](validateUser(_0x4b8a89[_0x10ec7c]));}return Promise[_0x9b44('0x54')](_0x53744b);})[_0x9b44('0x17')](function(){_0x53744b=[];for(var _0x5c08b5=0x0;_0x5c08b5<_0x4b8a89[_0x9b44('0x4c')];_0x5c08b5++){_0x53744b[_0x9b44('0x48')](updateUser(_0x4b8a89[_0x5c08b5]));}return Promise[_0x9b44('0x54')](_0x53744b);})[_0x9b44('0x17')](function(){_0x53744b=_0x4b8a89[_0x9b44('0x34')](function(_0x5858c7){return db['User'][_0x9b44('0x8a')](_0x5858c7,{'include':[{'model':db['VoiceMail'],'as':_0x9b44('0x72')}]})[_0x9b44('0x17')](function(_0x513f86){_0x5858c7['id']=_0x513f86['id'];return _0x5858c7;});});return Promise[_0x9b44('0x54')](_0x53744b);})['then'](function(_0x3591c7){if(_0x15d436[_0x9b44('0x63')]['role']==='user')return _0x3591c7;if(_0x15d436['user'][_0x9b44('0x29')]!==_0x9b44('0x2e'))return _0x3591c7;var _0x384f7a=_[_0x9b44('0x8c')](_0x3591c7,function(_0x445f6c){return _0x445f6c[_0x9b44('0x29')]==='agent'||_0x445f6c[_0x9b44('0x29')]===_0x9b44('0x31');});if(!_0x384f7a)return _0x3591c7;return db[_0x9b44('0x88')]['findAll']({'where':{'name':{'$or':['Agents','Telephones']},'userProfileId':_0x15d436[_0x9b44('0x2e')][_0x9b44('0x87')]},'raw':!![]})[_0x9b44('0x17')](function(_0x1a19d2){if(_[_0x9b44('0x8e')](_0x1a19d2)||!_[_0x9b44('0x8c')](_0x1a19d2,[_0x9b44('0x8f'),0x0]))return _0x3591c7;_0x53744b=[];var _0x3d93c5=_(_0x1a19d2)[_0x9b44('0x34')](function(_0x1ddbf3){if(_0x1ddbf3['autoAssociation']===0x1)return;return _0x1ddbf3['name']===_0x9b44('0x2f')?'agent':_0x9b44('0x31');})[_0x9b44('0x90')]()[_0x9b44('0x35')]();for(var _0x42f1c5=0x0;_0x42f1c5<_0x3591c7[_0x9b44('0x4c')];_0x42f1c5++){if(!_[_0x9b44('0x36')](_0x3d93c5,_0x3591c7[_0x42f1c5]['role']))return;var _0x5b976d=_0x3591c7[_0x42f1c5][_0x9b44('0x29')]===_0x9b44('0x2a')?_0x9b44('0x2f'):_0x9b44('0x30');_0x53744b['push'](db['UserProfileResource']['create']({'name':_0x3591c7[_0x42f1c5][_0x9b44('0x38')],'resourceId':_0x3591c7[_0x42f1c5]['id'],'type':_0x5b976d,'sectionId':_[_0x9b44('0x37')](_0x1a19d2,[_0x9b44('0x38'),_0x5b976d])['id']},{}));}return Promise[_0x9b44('0x54')](_0x53744b);});})[_0x9b44('0x17')](respondWithResult(_0x22dc9c,0xc9))[_0x9b44('0x1f')](handleError(_0x22dc9c,null));};exports[_0x9b44('0x91')]=function(_0x250916,_0xe67782){if(_0x250916['body']['id']){delete _0x250916[_0x9b44('0x63')]['id'];}return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0x250916[_0x9b44('0x56')]['id']}})['then'](function(_0x446fd0){if(!_0x446fd0)return null;if(_0x446fd0['id']===_0x250916['user']['id']){if(!_0x250916[_0x9b44('0x63')][_0x9b44('0x92')]||!_0x250916[_0x9b44('0x63')][_0x9b44('0x93')]){throw new db[(_0x9b44('0x94'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x446fd0[_0x9b44('0x95')](_0x250916[_0x9b44('0x63')][_0x9b44('0x92')])){throw new db[(_0x9b44('0x94'))]['ValidationError'](_0x9b44('0x96'));}if(_0x250916[_0x9b44('0x63')][_0x9b44('0x92')]===_0x250916[_0x9b44('0x63')][_0x9b44('0x93')]){throw new db[(_0x9b44('0x94'))][(_0x9b44('0x97'))](_0x9b44('0x98'));}}else if(_0x250916['user'][_0x9b44('0x29')]===_0x9b44('0x82')){if(!_0x250916[_0x9b44('0x63')][_0x9b44('0x93')]){throw new db[(_0x9b44('0x94'))]['ValidationError'](_0x9b44('0x99'));}}else if(_0x250916[_0x9b44('0x2e')]['role']===_0x9b44('0x2e')){if(!_0x250916[_0x9b44('0x63')][_0x9b44('0x93')]){throw new db[(_0x9b44('0x94'))][(_0x9b44('0x97'))](_0x9b44('0x99'));}if(_0x446fd0['role']!=='agent'){throw new db[(_0x9b44('0x94'))]['ValidationError'](_0x9b44('0x81'));}}else{throw new db[(_0x9b44('0x94'))][(_0x9b44('0x97'))](_0x9b44('0x81'));}return _0x446fd0;})[_0x9b44('0x17')](handleEntityNotFound(_0xe67782,null))[_0x9b44('0x17')](function(_0x4c4f0f){return db[_0x9b44('0x9a')]['findOne']({'attributes':['id',_0x9b44('0x9b'),_0x9b44('0x9c'),_0x9b44('0x9d')]})['then'](function(_0x270f18){if(_0x270f18[_0x9b44('0x9b')])authService[_0x9b44('0x69')](_0x250916['body'][_0x9b44('0x93')]);if(!_0x270f18['enforcePasswordHistory']||!_0x4c4f0f[_0x9b44('0x9e')])return _0x4c4f0f;authService['validatePasswordHistory'](_0x250916['body'][_0x9b44('0x93')],_0x4c4f0f[_0x9b44('0x9e')],_0x270f18[_0x9b44('0x9d')]);return _0x4c4f0f;})[_0x9b44('0x17')](saveUpdates({'password':_0x250916[_0x9b44('0x63')][_0x9b44('0x93')],'passwordResetAt':_0x250916[_0x9b44('0x2e')]['id']==_0x250916[_0x9b44('0x56')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x250916[_0x9b44('0x63')][_0x9b44('0x93')],_0x4c4f0f[_0x9b44('0x9e')])},null));})[_0x9b44('0x17')](respondWithResult(_0xe67782,null))[_0x9b44('0x1f')](handleError(_0xe67782,null));};exports[_0x9b44('0x9f')]=function(_0x2b592d,_0x15baca){var _0xd3f04d=_0x2b592d[_0x9b44('0x63')][_0x9b44('0xa0')];return db[_0x9b44('0x3d')]['find']({'where':{'id':_0x2b592d[_0x9b44('0x56')]['id']},'attributes':['id','name',_0x9b44('0x29'),'online',_0x9b44('0xa1'),'voicePause','interface']})[_0x9b44('0x17')](handleEntityNotFound(_0x15baca,null))[_0x9b44('0x17')](function(_0x49124b){if(_0x49124b){if(!utils[_0x9b44('0xa2')](_0xd3f04d)){throw new db['Sequelize'][(_0x9b44('0x97'))](_0x9b44('0xa3'));}return _0x49124b[_0x9b44('0xa4')+_[_0x9b44('0xa5')](_0xd3f04d[_0x9b44('0xa6')]())+'Queues'](_0x2b592d[_0x9b44('0x63')]['ids'],{'penalty':_0x2b592d['body'][_0x9b44('0xa7')]||0x0})['spread'](function(_0x25ac2f){for(var _0x162f12=0x0;_0x162f12<_0x2b592d[_0x9b44('0x63')][_0x9b44('0x66')][_0x9b44('0x4c')];_0x162f12+=0x1){var _0x222dd2={'UserId':Number(_0x2b592d['params']['id'])};_0x222dd2[_[_0x9b44('0xa5')](_0xd3f04d[_0x9b44('0xa6')]())+_0x9b44('0xa8')]=Number(_0x2b592d['body'][_0x9b44('0x66')][_0x162f12]);socket[_0x9b44('0x2b')]('user'+_[_0x9b44('0xa5')](_0xd3f04d[_0x9b44('0xa6')]())+_0x9b44('0xa9'),_0x222dd2);}return _0x25ac2f;})['then'](function(){if(_0xd3f04d===_0x9b44('0xaa')){return db['VoiceQueue']['findAll']({'where':{'id':_0x2b592d[_0x9b44('0x63')][_0x9b44('0x66')]||[]},'raw':!![],'attributes':['id',_0x9b44('0x38')]});}})['then'](function(_0x33623f){var _0x425ced=_0x49124b['get']({'plain':!![]});var _0x5778e6=[];if(_0xd3f04d===_0x9b44('0xaa')&&_0x425ced[_0x9b44('0x29')]==='agent'&&_0x425ced[_0x9b44('0xab')]){for(let _0x346d86=0x0;_0x346d86<_0x33623f['length'];_0x346d86+=0x1){_0x5778e6[_0x9b44('0x48')]({'membername':_0x425ced['name'],'UserId':_0x425ced['id'],'queue_name':_0x33623f[_0x346d86][_0x9b44('0x38')],'VoiceQueueId':_0x33623f[_0x346d86]['id'],'interface':_[_0x9b44('0x6c')](_0x425ced[_0x9b44('0xac')])?util[_0x9b44('0xad')](_0x9b44('0xae'),_0x425ced[_0x9b44('0x38')]):_0x425ced[_0x9b44('0xac')],'paused':_0x425ced[_0x9b44('0xaf')]||![],'penalty':_0x2b592d[_0x9b44('0x63')]['penalty']||0x0});}return Promise[_0x9b44('0x54')](_0x5778e6[_0x9b44('0x34')](function(_0x4fc836){return db[_0x9b44('0xb0')][_0x9b44('0xb1')](_0x4fc836);}));}return _0x49124b;});}})[_0x9b44('0x17')](respondWithStatusCode(_0x15baca,null))[_0x9b44('0x1f')](handleError(_0x15baca,null));};exports['removeQueues']=function(_0xc75f8a,_0x3d2410){var _0x3a190d,_0x1e66ee;return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0xc75f8a['params']['id']},'attributes':['id',_0x9b44('0x38'),_0x9b44('0x29')]})[_0x9b44('0x17')](handleEntityNotFound(_0x3d2410,null))['then'](function(_0x38584b){if(_0x38584b){_0x3a190d=_0x38584b;if(!_0xc75f8a[_0x9b44('0x43')][_0x9b44('0xa0')]||!utils[_0x9b44('0xa2')](_0xc75f8a['query']['channel'])){throw new db[(_0x9b44('0x94'))]['ValidationError'](_0x9b44('0xa3'));}return _0x38584b[_0x9b44('0xb2')+_[_0x9b44('0xa5')](_0xc75f8a['query'][_0x9b44('0xa0')][_0x9b44('0xa6')]())+_0x9b44('0xb3')](_0xc75f8a[_0x9b44('0x43')][_0x9b44('0x66')]);}})[_0x9b44('0x17')](function(_0x46428b){if(_[_0x9b44('0xb4')](_0xc75f8a[_0x9b44('0x43')][_0x9b44('0x66')])){for(var _0x213424=0x0;_0x213424<_0xc75f8a[_0x9b44('0x43')][_0x9b44('0x66')]['length'];_0x213424+=0x1){_0x1e66ee={'UserId':Number(_0xc75f8a[_0x9b44('0x56')]['id'])};_0x1e66ee[_[_0x9b44('0xa5')](_0xc75f8a['query']['channel'][_0x9b44('0xa6')]())+_0x9b44('0xa8')]=Number(_0xc75f8a['query'][_0x9b44('0x66')][_0x213424]);socket[_0x9b44('0x2b')]('user'+_[_0x9b44('0xa5')](_0xc75f8a[_0x9b44('0x43')]['channel']['toLowerCase']())+_0x9b44('0xb5'),_0x1e66ee);}}else{_0x1e66ee={'UserId':Number(_0xc75f8a[_0x9b44('0x56')]['id'])};_0x1e66ee[_['capitalize'](_0xc75f8a['query'][_0x9b44('0xa0')]['toLowerCase']())+_0x9b44('0xa8')]=Number(_0xc75f8a[_0x9b44('0x43')][_0x9b44('0x66')]);socket[_0x9b44('0x2b')]('user'+_[_0x9b44('0xa5')](_0xc75f8a['query'][_0x9b44('0xa0')][_0x9b44('0xa6')]())+_0x9b44('0xb5'),_0x1e66ee);}return _0x46428b;})['then'](function(){if(_0xc75f8a[_0x9b44('0x43')][_0x9b44('0xa0')]===_0x9b44('0xaa')){return db['UserVoiceQueueRt'][_0x9b44('0x39')]({'where':{'UserId':_0xc75f8a[_0x9b44('0x56')]['id'],'VoiceQueueId':_0xc75f8a['query'][_0x9b44('0x66')]},'individualHooks':!![]})[_0x9b44('0x17')](function(){return _0x3a190d;});}return _0x3a190d;})[_0x9b44('0x17')](respondWithStatusCode(_0x3d2410,null))[_0x9b44('0x1f')](handleError(_0x3d2410,null));};exports[_0x9b44('0xb6')]=function(_0x54ec4e,_0x140bf1){_0x54ec4e[_0x9b44('0x63')]['userpic']=_0x54ec4e['file'][_0x9b44('0xb7')];return db['User'][_0x9b44('0x37')]({'where':{'id':_0x54ec4e[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x140bf1,null))[_0x9b44('0x17')](saveUpdates(_0x54ec4e[_0x9b44('0x63')],null))[_0x9b44('0x17')](respondWithResult(_0x140bf1,null))[_0x9b44('0x1f')](handleError(_0x140bf1,null));};exports['getAvatar']=function(_0x31e27a,_0x203f87){var _0x27866d=path[_0x9b44('0xb8')](config[_0x9b44('0xb9')],_0x9b44('0xba'));return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0x31e27a[_0x9b44('0x56')]['id']},'attributes':['id',_0x9b44('0xbb')],'raw':!![]})[_0x9b44('0x17')](handleEntityNotFound(_0x203f87,null))[_0x9b44('0x17')](function(_0x57108e){if(_0x57108e){if(_[_0x9b44('0x6c')](_0x57108e[_0x9b44('0xbb')])){return _0x203f87[_0x9b44('0xbc')](_0x27866d);}else{if(!fs[_0x9b44('0xbd')](path['join'](config[_0x9b44('0xb9')],_0x9b44('0xbe'),_0x57108e[_0x9b44('0xbb')]))){return _0x203f87[_0x9b44('0xbc')](_0x27866d);}return _0x203f87['download'](path[_0x9b44('0xb8')](config[_0x9b44('0xb9')],_0x9b44('0xbe'),_0x57108e[_0x9b44('0xbb')]));}}})[_0x9b44('0x1f')](handleError(_0x203f87,null));};exports[_0x9b44('0xbf')]=function(_0x4a7794,_0x23a591){return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0x4a7794[_0x9b44('0x56')]['id']},'attributes':['id']})[_0x9b44('0x17')](handleEntityNotFound(_0x23a591,null))[_0x9b44('0x17')](function(_0x2c85a9){var _0x37cc2c=[];values=_0x2c85a9['dataValues'];_0x37cc2c[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x4d'),_0x2c85a9[_0x9b44('0x4e')]));_0x37cc2c[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x4f'),_0x2c85a9[_0x9b44('0x4e')]));_0x37cc2c[_0x9b44('0x48')](get_open_tabs('openchannel',_0x2c85a9[_0x9b44('0x4e')]));_0x37cc2c[_0x9b44('0x48')](get_open_tabs(_0x9b44('0x53'),_0x2c85a9[_0x9b44('0x4e')]));_0x37cc2c['push'](get_open_tabs(_0x9b44('0x50'),_0x2c85a9[_0x9b44('0x4e')]));_0x37cc2c['push'](get_open_tabs(_0x9b44('0x51'),_0x2c85a9['dataValues']));return Promise[_0x9b44('0x54')](_0x37cc2c);})['then'](function(_0x297078){if(_0x297078){var _0x5ce485=_[_0x9b44('0x34')](values[_0x9b44('0xc0')],function(_0xee4c8){return{'channel':_0x9b44('0xc1'),'id':_0xee4c8['id'],'createdAt':_0xee4c8[_0x9b44('0xc2')]};});var _0x1eeef8=_[_0x9b44('0x34')](values['FaxOpenTabs'],function(_0x50facd){return{'channel':_0x9b44('0xc3'),'id':_0x50facd['id'],'createdAt':_0x50facd[_0x9b44('0xc2')]};});var _0x1a6257=_[_0x9b44('0x34')](values[_0x9b44('0xc4')],function(_0x50ab68){return{'channel':_0x9b44('0xc5'),'id':_0x50ab68['id'],'createdAt':_0x50ab68['createdAt']};});var _0x347255=_['map'](values[_0x9b44('0xc6')],function(_0x573015){return{'channel':'MAIL','id':_0x573015['id'],'createdAt':_0x573015[_0x9b44('0xc2')]};});var _0x9c06e5=_['map'](values[_0x9b44('0xc7')],function(_0x38a352){return{'channel':'SMS','id':_0x38a352['id'],'createdAt':_0x38a352[_0x9b44('0xc2')]};});var _0x15637e=_[_0x9b44('0x34')](values[_0x9b44('0xc8')],function(_0x24078f){return{'channel':_0x9b44('0xc9'),'id':_0x24078f['id'],'createdAt':_0x24078f['createdAt']};});var _0x58c10d=_['concat'](_0x5ce485,_0x1eeef8,_0x1a6257,_0x347255,_0x9c06e5,_0x15637e);var _0x5721cb={'count':_0x58c10d[_0x9b44('0x4c')],'rows':_0x58c10d};return _0x5721cb;}else return null;})[_0x9b44('0x17')](respondWithResult(_0x23a591,null))[_0x9b44('0x1f')](handleError(_0x23a591,null));};exports[_0x9b44('0xca')]=function(_0x8fc349,_0x3bf98d){var _0x4948e7={};var _0x1f279d={};var _0x260297;var _0x3c2bf8;return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x8fc349['params']['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x3bf98d,null))['then'](function(_0x56b392){if(_0x56b392){_0x260297=_0x56b392;_0x1f279d['model']=_['keys'](db['CmContact'][_0x9b44('0x5a')]);_0x1f279d[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x8fc349[_0x9b44('0x43')]);_0x1f279d['filters']=_[_0x9b44('0x5e')](_0x1f279d[_0x9b44('0x57')],_0x1f279d[_0x9b44('0x43')]);_0x4948e7[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x1f279d[_0x9b44('0x57')],qs[_0x9b44('0x5f')](_0x8fc349[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x4948e7[_0x9b44('0x47')]=_0x4948e7[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x4948e7[_0x9b44('0x47')]:_0x1f279d[_0x9b44('0x57')];_0x4948e7[_0x9b44('0xcc')]=qs[_0x9b44('0xcd')](_0x8fc349[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x4948e7['where']=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x8fc349['query'],_0x1f279d['filters']));if(_0x8fc349[_0x9b44('0x43')]['filter']){_0x4948e7[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x4948e7[_0x9b44('0x42')],{'$or':_['map'](_0x4948e7[_0x9b44('0x47')],function(_0x56eb12){var _0x4eb608={};_0x4eb608[_0x56eb12]={'$like':'%'+_0x8fc349['query'][_0x9b44('0x32')]+'%'};return _0x4eb608;})});}_0x4948e7=_[_0x9b44('0xcf')]({},_0x4948e7,_0x8fc349[_0x9b44('0x62')]);return _0x260297[_0x9b44('0xca')](_0x4948e7);}})[_0x9b44('0x17')](function(_0x1970aa){if(_0x1970aa){_0x3c2bf8=_0x1970aa[_0x9b44('0x4c')];if(_0x8fc349['query'][_0x9b44('0xd0')](_0x9b44('0x60'))){_0x4948e7[_0x9b44('0x61')]=[{'model':db[_0x9b44('0xd1')],'as':_0x9b44('0xd2'),'required':![]},{'model':db[_0x9b44('0xd3')],'as':_0x9b44('0xd4'),'attributes':['id',_0x9b44('0x38'),_0x9b44('0xd5')],'where':_0x8fc349[_0x9b44('0x43')]['tag']?{'id':_0x8fc349[_0x9b44('0x43')][_0x9b44('0xd6')]}:undefined,'required':_0x8fc349[_0x9b44('0x43')]['tag']?!![]:![]}];}if(!_0x8fc349[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x4948e7['limit']=qs[_0x9b44('0x25')](_0x8fc349[_0x9b44('0x43')]['limit']);_0x4948e7['offset']=qs['offset'](_0x8fc349[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x260297[_0x9b44('0xca')](_0x4948e7);}})['then'](function(_0x3e6607){if(_0x3e6607){return _0x3e6607?{'count':_0x3c2bf8,'rows':_0x3e6607}:null;}})[_0x9b44('0x17')](respondWithResult(_0x3bf98d,null))[_0x9b44('0x1f')](handleError(_0x3bf98d,null));};exports[_0x9b44('0xd8')]=function(_0x26cc53,_0x596edb){var _0x5ee4d5;var _0xcb8e47={};var _0x34b3c6;return db[_0x9b44('0x3d')]['findOne']({'where':{'id':_0x26cc53[_0x9b44('0x56')]['id']},'attributes':['id',_0x9b44('0x38'),_0x9b44('0x29')]})[_0x9b44('0x17')](handleEntityNotFound(_0x596edb,null))[_0x9b44('0x17')](function(_0x250aba){if(!utils[_0x9b44('0xa2')](_0x26cc53[_0x9b44('0x43')][_0x9b44('0xa0')])){throw new db[(_0x9b44('0x94'))][(_0x9b44('0x97'))]('Unknown\x20channel');}_0x5ee4d5=_0x250aba;var _0xf92ca1={};_0xf92ca1[_0x9b44('0x57')]=_[_0x9b44('0x59')](db[_[_0x9b44('0xa5')](_0x26cc53[_0x9b44('0x43')][_0x9b44('0xa0')])+'Queue'][_0x9b44('0x5a')]);_0xf92ca1[_0x9b44('0x43')]=_['keys'](_0x26cc53['query']);_0xf92ca1[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0xf92ca1['model'],_0xf92ca1[_0x9b44('0x43')]);_0xcb8e47[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0xf92ca1[_0x9b44('0x57')],qs['fields'](_0x26cc53[_0x9b44('0x43')][_0x9b44('0x5f')]));_0xcb8e47[_0x9b44('0x47')]=_0xcb8e47[_0x9b44('0x47')][_0x9b44('0x4c')]?_0xcb8e47['attributes']:_0xf92ca1[_0x9b44('0x57')];_0xcb8e47['order']=qs[_0x9b44('0xcd')](_0x26cc53[_0x9b44('0x43')]['sort']);_0xcb8e47['where']=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x26cc53[_0x9b44('0x43')],_0xf92ca1[_0x9b44('0x5d')]));if(_0x26cc53[_0x9b44('0x43')]['filter']){_0xcb8e47['where']=_[_0x9b44('0xcf')](_0xcb8e47['where'],{'$or':_[_0x9b44('0x34')](_0xcb8e47[_0x9b44('0x47')],function(_0x34a4ad){var _0x51cb9e={};_0x51cb9e[_0x34a4ad]={'$like':'%'+_0x26cc53[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x51cb9e;})});}_0xcb8e47=_[_0x9b44('0xcf')]({},_0xcb8e47,_0x26cc53[_0x9b44('0x62')]);switch(_0x5ee4d5[_0x9b44('0x29')]){case _0x9b44('0x82'):return db[_['capitalize'](_0x26cc53['query'][_0x9b44('0xa0')])+_0x9b44('0xd9')][_0x9b44('0x49')](_0xcb8e47);case'user':case _0x9b44('0x2a'):return _0x5ee4d5[_0x9b44('0x2d')+_[_0x9b44('0xa5')](_0x26cc53[_0x9b44('0x43')][_0x9b44('0xa0')])+_0x9b44('0xb3')](_0xcb8e47);default:throw new db[(_0x9b44('0x94'))]['ValidationError']('Unknown\x20role');}})[_0x9b44('0x17')](function(_0x55186d){_0x34b3c6=_0x55186d['length'];if(!_0x26cc53['query'][_0x9b44('0xd0')]('nolimit')){_0xcb8e47[_0x9b44('0x25')]=qs[_0x9b44('0x25')](_0x26cc53[_0x9b44('0x43')][_0x9b44('0x25')]);_0xcb8e47[_0x9b44('0x23')]=qs['offset'](_0x26cc53[_0x9b44('0x43')][_0x9b44('0x23')]);}switch(_0x5ee4d5[_0x9b44('0x29')]){case _0x9b44('0x82'):return db[_[_0x9b44('0xa5')](_0x26cc53[_0x9b44('0x43')]['channel'])+_0x9b44('0xd9')][_0x9b44('0x49')](_0xcb8e47);case _0x9b44('0x2e'):case _0x9b44('0x2a'):return _0x5ee4d5[_0x9b44('0x2d')+_[_0x9b44('0xa5')](_0x26cc53[_0x9b44('0x43')][_0x9b44('0xa0')])+'Queues'](_0xcb8e47);}})['then'](function(_0x5366d8){return{'count':_0x34b3c6,'rows':_0x5366d8};})[_0x9b44('0x17')](respondWithResult(_0x596edb,null))[_0x9b44('0x1f')](handleError(_0x596edb,null));};exports[_0x9b44('0xda')]=function(_0x4aa8b7,_0x14ee44){var _0x53824d={};var _0x20426a={};var _0x4c4d3c;var _0x401e32;return db[_0x9b44('0x3d')]['findOne']({'where':{'id':_0x4aa8b7['params']['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x14ee44,null))[_0x9b44('0x17')](function(_0x1f8e2d){if(_0x1f8e2d){_0x4c4d3c=_0x1f8e2d;_0x20426a[_0x9b44('0x57')]=_[_0x9b44('0x59')](db['UserVoiceQueueRt'][_0x9b44('0x5a')]);_0x20426a[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x4aa8b7['query']);_0x20426a[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x20426a['model'],_0x20426a[_0x9b44('0x43')]);_0x53824d[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x20426a[_0x9b44('0x57')],qs[_0x9b44('0x5f')](_0x4aa8b7[_0x9b44('0x43')]['fields']));_0x53824d[_0x9b44('0x47')]=_0x53824d[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x53824d['attributes']:_0x20426a[_0x9b44('0x57')];_0x53824d[_0x9b44('0xcc')]=qs['sort'](_0x4aa8b7['query'][_0x9b44('0xcd')]);_0x53824d[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x4aa8b7[_0x9b44('0x43')],_0x20426a[_0x9b44('0x5d')]));if(_0x4aa8b7['query'][_0x9b44('0x32')]){_0x53824d['where']=_['merge'](_0x53824d[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x53824d[_0x9b44('0x47')],function(_0x1e6948){var _0x5c740c={};_0x5c740c[_0x1e6948]={'$like':'%'+_0x4aa8b7[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x5c740c;})});}_0x53824d=_[_0x9b44('0xcf')]({},_0x53824d,_0x4aa8b7['options']);return _0x4c4d3c[_0x9b44('0xda')](_0x53824d);}})[_0x9b44('0x17')](function(_0x536272){if(_0x536272){_0x401e32=_0x536272[_0x9b44('0x4c')];if(!_0x4aa8b7[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x53824d['limit']=qs[_0x9b44('0x25')](_0x4aa8b7[_0x9b44('0x43')]['limit']);_0x53824d[_0x9b44('0x23')]=qs['offset'](_0x4aa8b7[_0x9b44('0x43')]['offset']);}return _0x4c4d3c[_0x9b44('0xda')](_0x53824d);}})[_0x9b44('0x17')](function(_0x3fadc9){if(_0x3fadc9){return _0x3fadc9?{'count':_0x401e32,'rows':_0x3fadc9}:null;}})[_0x9b44('0x17')](respondWithResult(_0x14ee44,null))[_0x9b44('0x1f')](handleError(_0x14ee44,null));};exports[_0x9b44('0xdb')]=function(_0x462c24,_0x47e748){var _0x3f7edc={};var _0x294daa={};var _0x54d49a;var _0x401248;return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x462c24[_0x9b44('0x56')]['id']}})['then'](handleEntityNotFound(_0x47e748,null))[_0x9b44('0x17')](function(_0x21727){if(_0x21727){_0x54d49a=_0x21727;_0x294daa['model']=_['keys'](db['ChatGroup'][_0x9b44('0x5a')]);_0x294daa['query']=_[_0x9b44('0x59')](_0x462c24[_0x9b44('0x43')]);_0x294daa[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x294daa[_0x9b44('0x57')],_0x294daa[_0x9b44('0x43')]);_0x3f7edc[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x294daa['model'],qs[_0x9b44('0x5f')](_0x462c24[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x3f7edc[_0x9b44('0x47')]=_0x3f7edc[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x3f7edc['attributes']:_0x294daa[_0x9b44('0x57')];_0x3f7edc['order']=qs[_0x9b44('0xcd')](_0x462c24[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x3f7edc[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x462c24[_0x9b44('0x43')],_0x294daa[_0x9b44('0x5d')]));if(_0x462c24['query'][_0x9b44('0x32')]){_0x3f7edc[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x3f7edc['where'],{'$or':_[_0x9b44('0x34')](_0x3f7edc[_0x9b44('0x47')],function(_0x2af8cd){var _0x48a221={};_0x48a221[_0x2af8cd]={'$like':'%'+_0x462c24['query'][_0x9b44('0x32')]+'%'};return _0x48a221;})});}_0x3f7edc=_[_0x9b44('0xcf')]({},_0x3f7edc,_0x462c24['options']);return _0x54d49a[_0x9b44('0xdb')](_0x3f7edc);}})['then'](function(_0x3f0bfd){if(_0x3f0bfd){_0x401248=_0x3f0bfd[_0x9b44('0x4c')];if(!_0x462c24[_0x9b44('0x43')][_0x9b44('0xd0')]('nolimit')){_0x3f7edc['limit']=qs[_0x9b44('0x25')](_0x462c24[_0x9b44('0x43')][_0x9b44('0x25')]);_0x3f7edc[_0x9b44('0x23')]=qs['offset'](_0x462c24[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x54d49a['getGroups'](_0x3f7edc);}})[_0x9b44('0x17')](function(_0x2ca0c8){if(_0x2ca0c8){return _0x2ca0c8?{'count':_0x401248,'rows':_0x2ca0c8}:null;}})[_0x9b44('0x17')](respondWithResult(_0x47e748,null))[_0x9b44('0x1f')](handleError(_0x47e748,null));};exports[_0x9b44('0xdc')]=function(_0x20894f,_0x37b4de){var _0x5d2f75={'raw':!![],'where':{}};var _0x39c6df={};var _0x1cbec7={'count':0x0,'rows':[]};return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x20894f[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x37b4de,null))[_0x9b44('0x17')](function(_0x99305c){if(_0x99305c){_0x39c6df['model']=_[_0x9b44('0x59')](db['VoiceRecording']['rawAttributes']);_0x39c6df[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x20894f[_0x9b44('0x43')]);_0x39c6df[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x39c6df[_0x9b44('0x57')],_0x39c6df['query']);_0x5d2f75[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x39c6df['model'],qs['fields'](_0x20894f['query'][_0x9b44('0x5f')]));_0x5d2f75['attributes']=_0x5d2f75[_0x9b44('0x47')]['length']?_0x5d2f75[_0x9b44('0x47')]:_0x39c6df['model'];if(!_0x20894f[_0x9b44('0x43')]['hasOwnProperty']('nolimit')){_0x5d2f75['limit']=qs[_0x9b44('0x25')](_0x20894f[_0x9b44('0x43')][_0x9b44('0x25')]);_0x5d2f75[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x20894f[_0x9b44('0x43')][_0x9b44('0x23')]);}_0x5d2f75['order']=qs[_0x9b44('0xcd')](_0x20894f['query'][_0x9b44('0xcd')]);_0x5d2f75[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_['pick'](_0x20894f[_0x9b44('0x43')],_0x39c6df[_0x9b44('0x5d')]));_0x5d2f75[_0x9b44('0x42')][_0x9b44('0xdd')]=_0x99305c['id'];if(_0x20894f['query'][_0x9b44('0x32')]){_0x5d2f75[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x5d2f75[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x5d2f75[_0x9b44('0x47')],function(_0x70ef58){var _0x5eddcf={};_0x5eddcf[_0x70ef58]={'$like':'%'+_0x20894f[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x5eddcf;})});}_0x5d2f75=_['merge']({},_0x5d2f75,_0x20894f[_0x9b44('0x62')]);return db['VoiceRecording'][_0x9b44('0x26')]({'where':_0x5d2f75[_0x9b44('0x42')]})[_0x9b44('0x17')](function(_0x521f33){_0x1cbec7['count']=_0x521f33;if(_0x20894f[_0x9b44('0x43')][_0x9b44('0x60')]){_0x5d2f75['include']=[{'all':!![]}];}return db[_0x9b44('0xde')][_0x9b44('0x49')](_0x5d2f75);})[_0x9b44('0x17')](function(_0x19d445){_0x1cbec7[_0x9b44('0x4a')]=_0x19d445;return _0x1cbec7;});}})[_0x9b44('0x17')](respondWithFilteredResult(_0x37b4de,_0x5d2f75))['catch'](handleError(_0x37b4de,null));};exports[_0x9b44('0xdf')]=function(_0x3b715b,_0x109042){var _0x232aa6={'raw':!![],'where':{}};var _0x44c17f={};var _0x4746a8={'count':0x0,'rows':[]};return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x3b715b[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x109042,null))[_0x9b44('0x17')](function(_0x4cedfa){if(_0x4cedfa){_0x44c17f['model']=_[_0x9b44('0x59')](db[_0x9b44('0xe0')][_0x9b44('0x5a')]);_0x44c17f[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x3b715b[_0x9b44('0x43')]);_0x44c17f[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x44c17f[_0x9b44('0x57')],_0x44c17f[_0x9b44('0x43')]);_0x232aa6[_0x9b44('0x47')]=_['intersection'](_0x44c17f[_0x9b44('0x57')],qs['fields'](_0x3b715b['query'][_0x9b44('0x5f')]));_0x232aa6[_0x9b44('0x47')]=_0x232aa6[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x232aa6[_0x9b44('0x47')]:_0x44c17f['model'];if(!_0x3b715b[_0x9b44('0x43')][_0x9b44('0xd0')]('nolimit')){_0x232aa6[_0x9b44('0x25')]=qs['limit'](_0x3b715b[_0x9b44('0x43')]['limit']);_0x232aa6['offset']=qs[_0x9b44('0x23')](_0x3b715b[_0x9b44('0x43')]['offset']);}_0x232aa6[_0x9b44('0xcc')]=qs['sort'](_0x3b715b['query']['sort']);_0x232aa6[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x3b715b[_0x9b44('0x43')],_0x44c17f[_0x9b44('0x5d')]));_0x232aa6['where'][_0x9b44('0xdd')]=_0x4cedfa['id'];if(_0x3b715b[_0x9b44('0x43')][_0x9b44('0x32')]){_0x232aa6['where']=_[_0x9b44('0xcf')](_0x232aa6[_0x9b44('0x42')],{'$or':_['map'](_0x232aa6['attributes'],function(_0x37a7e6){var _0x2ec918={};_0x2ec918[_0x37a7e6]={'$like':'%'+_0x3b715b['query']['filter']+'%'};return _0x2ec918;})});}_0x232aa6=_[_0x9b44('0xcf')]({},_0x232aa6,_0x3b715b[_0x9b44('0x62')]);return db[_0x9b44('0xe0')][_0x9b44('0x26')]({'where':_0x232aa6[_0x9b44('0x42')]})[_0x9b44('0x17')](function(_0x24fdf0){_0x4746a8[_0x9b44('0x26')]=_0x24fdf0;if(_0x3b715b[_0x9b44('0x43')][_0x9b44('0x60')]){_0x232aa6[_0x9b44('0x61')]=[{'all':!![]}];}return db['ScreenRecording'][_0x9b44('0x49')](_0x232aa6);})[_0x9b44('0x17')](function(_0x8a8e2e){_0x4746a8[_0x9b44('0x4a')]=_0x8a8e2e;return _0x4746a8;});}})[_0x9b44('0x17')](respondWithFilteredResult(_0x109042,_0x232aa6))[_0x9b44('0x1f')](handleError(_0x109042,null));};exports[_0x9b44('0xe1')]=function(_0xa02d2,_0x2029c5){var _0x47282e={};var _0x543c47={};var _0x1c6587;var _0xc411c7;return db[_0x9b44('0x3d')]['findOne']({'where':{'id':_0xa02d2['params']['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x2029c5,null))[_0x9b44('0x17')](function(_0x1c4239){if(_0x1c4239){_0x1c6587=_0x1c4239;_0x543c47[_0x9b44('0x57')]=_[_0x9b44('0x59')](db['ChatInteraction'][_0x9b44('0x5a')]);_0x543c47['query']=_[_0x9b44('0x59')](_0xa02d2[_0x9b44('0x43')]);_0x543c47[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x543c47[_0x9b44('0x57')],_0x543c47['query']);_0x47282e[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x543c47[_0x9b44('0x57')],qs[_0x9b44('0x5f')](_0xa02d2[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x47282e[_0x9b44('0x47')]=_0x47282e[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x47282e[_0x9b44('0x47')]:_0x543c47[_0x9b44('0x57')];_0x47282e[_0x9b44('0xcc')]=qs[_0x9b44('0xcd')](_0xa02d2[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x47282e[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0xa02d2[_0x9b44('0x43')],_0x543c47[_0x9b44('0x5d')]));if(_0xa02d2[_0x9b44('0x43')]['filter']){_0x47282e[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x47282e[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x47282e[_0x9b44('0x47')],function(_0x46e5b2){var _0x5612af={};_0x5612af[_0x46e5b2]={'$like':'%'+_0xa02d2[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x5612af;})});}_0x47282e=_['merge']({},_0x47282e,_0xa02d2['options']);return _0x1c6587[_0x9b44('0xe1')](_0x47282e);}})[_0x9b44('0x17')](function(_0x101119){if(_0x101119){_0xc411c7=_0x101119[_0x9b44('0x4c')];if(!_0xa02d2[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x47282e[_0x9b44('0x25')]=qs['limit'](_0xa02d2[_0x9b44('0x43')]['limit']);_0x47282e[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0xa02d2[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x1c6587[_0x9b44('0xe1')](_0x47282e);}})[_0x9b44('0x17')](function(_0x227084){if(_0x227084){return _0x227084?{'count':_0xc411c7,'rows':_0x227084}:null;}})[_0x9b44('0x17')](respondWithResult(_0x2029c5,null))[_0x9b44('0x1f')](handleError(_0x2029c5,null));};exports[_0x9b44('0xe2')]=function(_0x198853,_0x19f616){var _0x1566bb={};var _0x57783d={};var _0x37e870;var _0x43a7b9;return db['User'][_0x9b44('0xcb')]({'where':{'id':_0x198853[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x19f616,null))[_0x9b44('0x17')](function(_0x5d06ea){if(_0x5d06ea){_0x37e870=_0x5d06ea;_0x57783d[_0x9b44('0x57')]=_['keys'](db[_0x9b44('0xe3')][_0x9b44('0x5a')]);_0x57783d[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x198853[_0x9b44('0x43')]);_0x57783d[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x57783d[_0x9b44('0x57')],_0x57783d['query']);_0x1566bb[_0x9b44('0x47')]=_['intersection'](_0x57783d['model'],qs['fields'](_0x198853[_0x9b44('0x43')]['fields']));_0x1566bb['attributes']=_0x1566bb[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x1566bb[_0x9b44('0x47')]:_0x57783d[_0x9b44('0x57')];_0x1566bb[_0x9b44('0xcc')]=qs[_0x9b44('0xcd')](_0x198853[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x1566bb['where']=qs[_0x9b44('0x5d')](_['pick'](_0x198853[_0x9b44('0x43')],_0x57783d[_0x9b44('0x5d')]));if(_0x198853[_0x9b44('0x43')][_0x9b44('0x32')]){_0x1566bb['where']=_[_0x9b44('0xcf')](_0x1566bb['where'],{'$or':_[_0x9b44('0x34')](_0x1566bb['attributes'],function(_0x93fd3d){var _0x45f611={};_0x45f611[_0x93fd3d]={'$like':'%'+_0x198853['query']['filter']+'%'};return _0x45f611;})});}_0x1566bb=_[_0x9b44('0xcf')]({},_0x1566bb,_0x198853['options']);return _0x37e870[_0x9b44('0xe2')](_0x1566bb);}})[_0x9b44('0x17')](function(_0x468761){if(_0x468761){_0x43a7b9=_0x468761[_0x9b44('0x4c')];if(!_0x198853['query'][_0x9b44('0xd0')]('nolimit')){_0x1566bb[_0x9b44('0x25')]=qs[_0x9b44('0x25')](_0x198853[_0x9b44('0x43')][_0x9b44('0x25')]);_0x1566bb[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x198853[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x37e870[_0x9b44('0xe2')](_0x1566bb);}})[_0x9b44('0x17')](function(_0x2c44e0){if(_0x2c44e0){return _0x2c44e0?{'count':_0x43a7b9,'rows':_0x2c44e0}:null;}})[_0x9b44('0x17')](respondWithResult(_0x19f616,null))['catch'](handleError(_0x19f616,null));};exports[_0x9b44('0xe4')]=function(_0x30aa13,_0x2f70b5){var _0x1fe3d1={'raw':!![],'where':{}};var _0x4bd72b={};var _0x1daec0={'count':0x0,'rows':[]};return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x30aa13[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x2f70b5,null))[_0x9b44('0x17')](function(_0x3cc661){if(_0x3cc661){_0x4bd72b[_0x9b44('0x57')]=_[_0x9b44('0x59')](db[_0x9b44('0xe5')]['rawAttributes']);_0x4bd72b[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x30aa13[_0x9b44('0x43')]);_0x4bd72b[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x4bd72b['model'],_0x4bd72b['query']);_0x1fe3d1[_0x9b44('0x47')]=_['intersection'](_0x4bd72b['model'],qs['fields'](_0x30aa13[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x1fe3d1[_0x9b44('0x47')]=_0x1fe3d1[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x1fe3d1['attributes']:_0x4bd72b[_0x9b44('0x57')];if(!_0x30aa13[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x1fe3d1[_0x9b44('0x25')]=qs['limit'](_0x30aa13[_0x9b44('0x43')][_0x9b44('0x25')]);_0x1fe3d1[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x30aa13['query'][_0x9b44('0x23')]);}_0x1fe3d1['order']=qs['sort'](_0x30aa13[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x1fe3d1[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x30aa13['query'],_0x4bd72b[_0x9b44('0x5d')]));_0x1fe3d1[_0x9b44('0x42')][_0x9b44('0xdd')]=_0x3cc661['id'];if(_0x30aa13[_0x9b44('0x43')][_0x9b44('0x32')]){_0x1fe3d1[_0x9b44('0x42')]=_['merge'](_0x1fe3d1['where'],{'$or':_[_0x9b44('0x34')](_0x1fe3d1[_0x9b44('0x47')],function(_0x384ecd){var _0x1c8987={};_0x1c8987[_0x384ecd]={'$like':'%'+_0x30aa13[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x1c8987;})});}_0x1fe3d1=_[_0x9b44('0xcf')]({},_0x1fe3d1,_0x30aa13[_0x9b44('0x62')]);return db[_0x9b44('0xe5')][_0x9b44('0x26')]({'where':_0x1fe3d1[_0x9b44('0x42')]})[_0x9b44('0x17')](function(_0x379c64){_0x1daec0[_0x9b44('0x26')]=_0x379c64;if(_0x30aa13['query'][_0x9b44('0x60')]){_0x1fe3d1['include']=[{'all':!![]}];}return db[_0x9b44('0xe5')][_0x9b44('0x49')](_0x1fe3d1);})[_0x9b44('0x17')](function(_0xe59014){_0x1daec0[_0x9b44('0x4a')]=_0xe59014;return _0x1daec0;});}})[_0x9b44('0x17')](respondWithFilteredResult(_0x2f70b5,_0x1fe3d1))[_0x9b44('0x1f')](handleError(_0x2f70b5,null));};exports['getSmsInteractions']=function(_0x4b877d,_0x156abd){var _0x428219={};var _0x18013c={};var _0x48cb20;var _0x24aeb7;return db['User'][_0x9b44('0xcb')]({'where':{'id':_0x4b877d[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x156abd,null))[_0x9b44('0x17')](function(_0x377abc){if(_0x377abc){_0x48cb20=_0x377abc;_0x18013c[_0x9b44('0x57')]=_[_0x9b44('0x59')](db['SmsInteraction'][_0x9b44('0x5a')]);_0x18013c[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x4b877d[_0x9b44('0x43')]);_0x18013c['filters']=_['intersection'](_0x18013c[_0x9b44('0x57')],_0x18013c[_0x9b44('0x43')]);_0x428219[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x18013c[_0x9b44('0x57')],qs['fields'](_0x4b877d[_0x9b44('0x43')]['fields']));_0x428219[_0x9b44('0x47')]=_0x428219['attributes'][_0x9b44('0x4c')]?_0x428219['attributes']:_0x18013c['model'];_0x428219[_0x9b44('0xcc')]=qs[_0x9b44('0xcd')](_0x4b877d[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x428219[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x4b877d[_0x9b44('0x43')],_0x18013c['filters']));if(_0x4b877d['query']['filter']){_0x428219[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x428219[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x428219['attributes'],function(_0x2a3777){var _0x2a6696={};_0x2a6696[_0x2a3777]={'$like':'%'+_0x4b877d[_0x9b44('0x43')]['filter']+'%'};return _0x2a6696;})});}_0x428219=_[_0x9b44('0xcf')]({},_0x428219,_0x4b877d[_0x9b44('0x62')]);return _0x48cb20[_0x9b44('0xe6')](_0x428219);}})[_0x9b44('0x17')](function(_0x4ecfce){if(_0x4ecfce){_0x24aeb7=_0x4ecfce['length'];if(!_0x4b877d[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x428219['limit']=qs[_0x9b44('0x25')](_0x4b877d[_0x9b44('0x43')]['limit']);_0x428219[_0x9b44('0x23')]=qs['offset'](_0x4b877d[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x48cb20[_0x9b44('0xe6')](_0x428219);}})[_0x9b44('0x17')](function(_0x4d9773){if(_0x4d9773){return _0x4d9773?{'count':_0x24aeb7,'rows':_0x4d9773}:null;}})[_0x9b44('0x17')](respondWithResult(_0x156abd,null))[_0x9b44('0x1f')](handleError(_0x156abd,null));};exports[_0x9b44('0xe7')]=function(_0x17d237,_0x2b2b46){var _0x3ad785={};var _0x1cdf42={};var _0x4cbe59;var _0x448069;return db['User'][_0x9b44('0xcb')]({'where':{'id':_0x17d237[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x2b2b46,null))['then'](function(_0x560a6f){if(_0x560a6f){_0x4cbe59=_0x560a6f;_0x1cdf42['model']=_[_0x9b44('0x59')](db['FaxInteraction']['rawAttributes']);_0x1cdf42[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x17d237['query']);_0x1cdf42['filters']=_['intersection'](_0x1cdf42['model'],_0x1cdf42['query']);_0x3ad785['attributes']=_['intersection'](_0x1cdf42[_0x9b44('0x57')],qs['fields'](_0x17d237['query']['fields']));_0x3ad785[_0x9b44('0x47')]=_0x3ad785[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x3ad785[_0x9b44('0x47')]:_0x1cdf42[_0x9b44('0x57')];_0x3ad785['order']=qs[_0x9b44('0xcd')](_0x17d237['query'][_0x9b44('0xcd')]);_0x3ad785[_0x9b44('0x42')]=qs['filters'](_['pick'](_0x17d237[_0x9b44('0x43')],_0x1cdf42[_0x9b44('0x5d')]));if(_0x17d237['query'][_0x9b44('0x32')]){_0x3ad785['where']=_[_0x9b44('0xcf')](_0x3ad785[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x3ad785[_0x9b44('0x47')],function(_0x5d8239){var _0x58d9be={};_0x58d9be[_0x5d8239]={'$like':'%'+_0x17d237[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x58d9be;})});}_0x3ad785=_[_0x9b44('0xcf')]({},_0x3ad785,_0x17d237['options']);return _0x4cbe59['getFaxInteractions'](_0x3ad785);}})[_0x9b44('0x17')](function(_0x355866){if(_0x355866){_0x448069=_0x355866[_0x9b44('0x4c')];if(!_0x17d237[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x3ad785['limit']=qs['limit'](_0x17d237[_0x9b44('0x43')]['limit']);_0x3ad785[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x17d237[_0x9b44('0x43')]['offset']);}return _0x4cbe59['getFaxInteractions'](_0x3ad785);}})[_0x9b44('0x17')](function(_0x671958){if(_0x671958){return _0x671958?{'count':_0x448069,'rows':_0x671958}:null;}})[_0x9b44('0x17')](respondWithResult(_0x2b2b46,null))[_0x9b44('0x1f')](handleError(_0x2b2b46,null));};exports[_0x9b44('0xe8')]=function(_0x11c473,_0x2bb52c){var _0x4a1e39={};var _0x2e53a9={};var _0x8977df;var _0xe20893;return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x11c473[_0x9b44('0x56')]['id']}})['then'](handleEntityNotFound(_0x2bb52c,null))[_0x9b44('0x17')](function(_0x10df79){if(_0x10df79){_0x8977df=_0x10df79;_0x2e53a9['model']=_[_0x9b44('0x59')](db[_0x9b44('0xe9')][_0x9b44('0x5a')]);_0x2e53a9[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x11c473[_0x9b44('0x43')]);_0x2e53a9[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x2e53a9[_0x9b44('0x57')],_0x2e53a9['query']);_0x4a1e39[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x2e53a9[_0x9b44('0x57')],qs['fields'](_0x11c473[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x4a1e39[_0x9b44('0x47')]=_0x4a1e39[_0x9b44('0x47')][_0x9b44('0x4c')]?_0x4a1e39['attributes']:_0x2e53a9[_0x9b44('0x57')];_0x4a1e39[_0x9b44('0xcc')]=qs['sort'](_0x11c473[_0x9b44('0x43')]['sort']);_0x4a1e39['where']=qs[_0x9b44('0x5d')](_['pick'](_0x11c473[_0x9b44('0x43')],_0x2e53a9[_0x9b44('0x5d')]));if(_0x11c473[_0x9b44('0x43')]['filter']){_0x4a1e39['where']=_[_0x9b44('0xcf')](_0x4a1e39[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x4a1e39[_0x9b44('0x47')],function(_0x5854d4){var _0x56dfcb={};_0x56dfcb[_0x5854d4]={'$like':'%'+_0x11c473[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x56dfcb;})});}_0x4a1e39=_[_0x9b44('0xcf')]({},_0x4a1e39,_0x11c473[_0x9b44('0x62')]);return _0x8977df[_0x9b44('0xe8')](_0x4a1e39);}})[_0x9b44('0x17')](function(_0x37a509){if(_0x37a509){_0xe20893=_0x37a509['length'];if(!_0x11c473[_0x9b44('0x43')]['hasOwnProperty'](_0x9b44('0xd7'))){_0x4a1e39['limit']=qs[_0x9b44('0x25')](_0x11c473[_0x9b44('0x43')][_0x9b44('0x25')]);_0x4a1e39[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x11c473[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x8977df['getWhatsappInteractions'](_0x4a1e39);}})['then'](function(_0x2b0612){if(_0x2b0612){return _0x2b0612?{'count':_0xe20893,'rows':_0x2b0612}:null;}})[_0x9b44('0x17')](respondWithResult(_0x2bb52c,null))[_0x9b44('0x1f')](handleError(_0x2bb52c,null));};exports['login']=function(_0x2b7a18,_0x4db032,_0x4da05a){var _0x3845e5;var _0x3cc011;var _0xbddaf9;var _0x3e8262=!_[_0x9b44('0x6c')](_0x2b7a18[_0x9b44('0x56')]['id'])?_0x2b7a18['params']['id']:!_[_0x9b44('0x6c')](_0x2b7a18[_0x9b44('0x2e')]['id'])?_0x2b7a18[_0x9b44('0x2e')]['id']:null;return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0x3e8262,'role':{'$or':[_0x9b44('0x82'),'user','agent']}},'attributes':['id','name',_0x9b44('0xea'),'mobile',_0x9b44('0x29'),_0x9b44('0x67'),'loginInPause']})[_0x9b44('0x17')](function(_0x2b1cca){if(_0x2b1cca){if(_0x2b1cca[_0x9b44('0x29')]==='agent'){_0x3845e5=_0x2b1cca;if(_0x2b7a18['body'][_0x9b44('0xac')]){_0xbddaf9=util[_0x9b44('0xad')](_0x9b44('0xeb'),_0x3845e5[_0x2b7a18['body']['interface']]);}else if(_0x2b7a18[_0x9b44('0x63')]['intrf']){_0xbddaf9=util['format'](_0x9b44('0xae'),_0x2b7a18[_0x9b44('0x63')][_0x9b44('0xec')]);}else{_0xbddaf9=util[_0x9b44('0xad')](_0x9b44('0xae'),_0x3845e5[_0x9b44('0x38')]);}socket['to'](util[_0x9b44('0xad')]('user:%s',_0x3845e5['name']))[_0x9b44('0x2b')]('user:forcelogout',{'user':{'id':_0x3845e5['id'],'name':_0x3845e5[_0x9b44('0x38')]},'ip':_0x2b7a18[_0x9b44('0xed')][_0x9b44('0xee')]||_0x2b7a18[_0x9b44('0xef')][_0x9b44('0xf0')]||_0x2b7a18[_0x9b44('0xf1')]['remoteAddress']||_0x2b7a18[_0x9b44('0xef')][_0x9b44('0xf1')]['remoteAddress']});return db[_0x9b44('0xb0')][_0x9b44('0x39')]({'where':{'membername':_0x3845e5['name']},'individualHooks':!![]});}}else{throw new db[(_0x9b44('0x94'))][(_0x9b44('0x97'))](_0x9b44('0xf2'));}})[_0x9b44('0x17')](function(){if(_0x3845e5){return _0x3845e5[_0x9b44('0xf3')]({'raw':!![]});}})[_0x9b44('0x17')](function(_0x154a32){if(_0x3845e5){if(_0x154a32){_0x3cc011=_0x154a32;if(_0x3cc011['length']){var _0x75ec0a=_0x3cc011['map'](function(_0x483696){var _0x36938a={'membername':_0x3845e5['name'],'UserId':_0x3845e5['id'],'queue_name':_0x483696[_0x9b44('0x38')],'VoiceQueueId':_0x483696['id'],'interface':_0xbddaf9,'paused':_0x3845e5[_0x9b44('0xa1')]||![],'penalty':_0x483696['UserVoiceQueue.penalty']||0x0};return db[_0x9b44('0xb0')][_0x9b44('0xb1')](_0x36938a);});return Promise[_0x9b44('0x54')](_0x75ec0a);}}}})[_0x9b44('0x17')](function(){if(_0x3845e5){return db[_0x9b44('0xf4')]['findAll']({'where':{'membername':_0x3845e5['name'],'exitAt':null}});}})['then'](function(_0x1d6e73){if(_0x3845e5){var _0x497bfd=[];_0x1d6e73[_0x9b44('0xf5')](function(_0x1076b6){_0x497bfd['push'](_0x1076b6['update']({'exitAt':moment()['format'](_0x9b44('0xf6'))}));});return Promise['all'](_0x497bfd);}})[_0x9b44('0x17')](function(){if(_0x3845e5){var _0x305207=[];var _0x373b95=[];var _0x485cc5=utils[_0x9b44('0xf7')]();var _0x40b8b0={'membername':_0x3845e5[_0x9b44('0x38')],'interface':_0xbddaf9,'enterAt':moment()[_0x9b44('0xad')](_0x9b44('0xf6')),'role':_0x3845e5[_0x9b44('0x29')],'internal':_0x3845e5[_0x9b44('0x67')]};_0x485cc5[_0x9b44('0xf5')](function(_0x9bd5c2){_0x305207[_0x9b44('0x48')](_[_0x9b44('0xcf')]({'channel':_0x9bd5c2,'type':'LOGIN','data1':_0x2b7a18[_0x9b44('0x63')]['device'],'data2':_0xbddaf9},_0x40b8b0));if(_0x3845e5[_0x9b44('0xa1')]){_0x373b95[_0x9b44('0x48')](_[_0x9b44('0xcf')]({'channel':_0x9bd5c2,'type':_0x9b44('0xf8'),'data1':_0x9b44('0xf9')},_0x40b8b0));}});return db[_0x9b44('0xf4')][_0x9b44('0xfa')](_0x305207[_0x9b44('0xfb')](_0x373b95),{'individualHooks':!![]});}})[_0x9b44('0x17')](function(){if(_0x3845e5){return _0x3845e5[_0x9b44('0x28')]({'online':!![],'lastLoginAt':moment()[_0x9b44('0xad')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x3845e5[_0x9b44('0xa1')]||![],'mailPause':_0x3845e5[_0x9b44('0xa1')]||![],'chatPause':_0x3845e5[_0x9b44('0xa1')]||![],'faxPause':_0x3845e5['loginInPause']||![],'smsPause':_0x3845e5['loginInPause']||![],'openchannelPause':_0x3845e5['loginInPause']||![],'whatsappPause':_0x3845e5[_0x9b44('0xa1')]||![],'pauseType':_0x3845e5[_0x9b44('0xa1')]?'LOGININPAUSE':null,'interface':_0xbddaf9,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x9b44('0x17')](function(_0x56639d){if(_0x2b7a18['isMiddleware']){return _0x4da05a();}else{return Promise[_0x9b44('0xfc')](_0x56639d)[_0x9b44('0x17')](respondWithResult(_0x4db032,null));}})[_0x9b44('0x1f')](handleError(_0x4db032,null));};exports[_0x9b44('0xfd')]=function(_0x3e3c1b,_0x5cea85){var _0x56d9b5;return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0x3e3c1b[_0x9b44('0x56')]['id'],'role':_0x9b44('0x2a')},'attributes':['id',_0x9b44('0x38'),'role']})[_0x9b44('0x17')](handleEntityNotFound(_0x5cea85,null))['then'](function(_0x52cb52){if(_0x52cb52){_0x56d9b5=_0x52cb52;return db[_0x9b44('0xb0')]['destroy']({'where':{'membername':_0x56d9b5[_0x9b44('0x38')]},'individualHooks':!![]});}})[_0x9b44('0x17')](function(){return db[_0x9b44('0xf4')][_0x9b44('0x49')]({'where':{'membername':_0x56d9b5[_0x9b44('0x38')],'exitAt':null}});})[_0x9b44('0x17')](function(_0x4fc976){var _0x20c710=[];_0x4fc976[_0x9b44('0xf5')](function(_0x30597f){_0x20c710[_0x9b44('0x48')](_0x30597f[_0x9b44('0x28')]({'exitAt':moment()[_0x9b44('0xad')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x9b44('0x54')](_0x20c710);})['then'](function(){return _0x56d9b5[_0x9b44('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x9b44('0x17')](respondWithResult(_0x5cea85,null))[_0x9b44('0x1f')](handleError(_0x5cea85,null));};exports[_0x9b44('0xfe')]=function(_0x3b6766,_0x44dda6){var _0x32819c;return db[_0x9b44('0xb0')][_0x9b44('0x28')]({'paused':0x1},{'where':{'UserId':_0x3b6766['params']['id']},'individualHooks':!![]})[_0x9b44('0x17')](function(){return db[_0x9b44('0x3d')]['find']({'where':{'id':_0x3b6766[_0x9b44('0x56')]['id'],'role':_0x9b44('0x2a')},'attributes':['id',_0x9b44('0x38'),_0x9b44('0x29'),_0x9b44('0x67'),'interface',_0x9b44('0xab')]});})[_0x9b44('0x17')](handleEntityNotFound(_0x44dda6,null))['then'](function(_0x139078){if(_0x139078){_0x32819c=_0x139078;return respondWithRpcPromise(_0x9b44('0xff'),'pause',{'id':_0x32819c['id'],'name':_0x32819c['name'],'pause':!![]});}})[_0x9b44('0x17')](function(){if(_0x32819c){return db[_0x9b44('0xf4')][_0x9b44('0x49')]({'where':{'membername':_0x32819c[_0x9b44('0x38')],'type':_0x9b44('0xf8'),'exitAt':null}});}})[_0x9b44('0x17')](function(_0x490129){if(_0x490129['length']){var _0x577b02=moment()[_0x9b44('0xad')](_0x9b44('0xf6'));for(var _0x58fcc4=0x0,_0x58df9a=_0x490129[_0x9b44('0x4c')];_0x58fcc4<_0x58df9a;_0x58fcc4++){_0x490129[_0x58fcc4]['updateAttributes']({'exitAt':_0x577b02});}}})[_0x9b44('0x17')](function(){var _0x527ebf=[];var _0xec3bc3=utils[_0x9b44('0xf7')]();_0xec3bc3[_0x9b44('0xf5')](function(_0x22e4b0){_0x527ebf[_0x9b44('0x48')]({'channel':_0x22e4b0,'membername':_0x32819c[_0x9b44('0x38')],'interface':_[_0x9b44('0x6c')](_0x32819c[_0x9b44('0xac')])?util[_0x9b44('0xad')]('SIP/%s',_0x32819c[_0x9b44('0x38')]):_0x32819c[_0x9b44('0xac')],'type':_0x9b44('0xf8'),'enterAt':moment()[_0x9b44('0xad')](_0x9b44('0xf6')),'data1':_0x3b6766[_0x9b44('0x63')][_0x9b44('0x3f')]||'DEFAULT\x20PAUSE','role':_0x32819c[_0x9b44('0x29')],'internal':_0x32819c['internal']});});return db[_0x9b44('0xf4')][_0x9b44('0xfa')](_0x527ebf,{'individualHooks':!![]});})[_0x9b44('0x17')](function(){return _0x32819c[_0x9b44('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x3b6766[_0x9b44('0x63')]['type']||_0x9b44('0x100'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0x9b44('0x17')](respondWithResult(_0x44dda6,null))[_0x9b44('0x1f')](handleError(_0x44dda6,null));};exports[_0x9b44('0x101')]=function(_0x92d0a1,_0x276d96){if(_0x92d0a1[_0x9b44('0x63')][_0x9b44('0xa0')]&&!utils['isValidChannel'](_0x92d0a1['body'][_0x9b44('0xa0')])){throw new APIBadRequestError(util[_0x9b44('0xad')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x92d0a1[_0x9b44('0x63')][_0x9b44('0xa0')]));}return db[_0x9b44('0x3d')][_0x9b44('0x37')]({'where':{'id':_0x92d0a1[_0x9b44('0x56')]['id']},'attributes':['id',_0x9b44('0x38'),'role',_0x9b44('0x67'),_0x9b44('0xac'),'online',_0x9b44('0xaf'),_0x9b44('0x102'),'chatPause',_0x9b44('0x103'),_0x9b44('0x104'),_0x9b44('0x105'),_0x9b44('0x106'),_0x9b44('0x107'),_0x9b44('0x108')]})['then'](function(_0x443188){if(!_0x443188){throw new APINotFoundError(util[_0x9b44('0xad')](_0x9b44('0x109'),_0x92d0a1[_0x9b44('0x56')]['id']));}return _0x443188[_0x9b44('0x101')](_0x92d0a1['body'][_0x9b44('0xa0')]);})[_0x9b44('0x17')](respondWithResult(_0x276d96,null))[_0x9b44('0x1f')](APIHandleError(_0x276d96));};exports[_0x9b44('0x10a')]=function(_0x1acefa,_0x1c05a6){var _0x7d825b={};var _0x41c807={};var _0x29b1f6;var _0x58f81b;return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x1acefa[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x1c05a6,null))[_0x9b44('0x17')](function(_0x560894){if(_0x560894){_0x29b1f6=_0x560894;_0x41c807[_0x9b44('0x57')]=_[_0x9b44('0x59')](db['Team']['rawAttributes']);_0x41c807[_0x9b44('0x43')]=_[_0x9b44('0x59')](_0x1acefa[_0x9b44('0x43')]);_0x41c807['filters']=_['intersection'](_0x41c807[_0x9b44('0x57')],_0x41c807[_0x9b44('0x43')]);_0x7d825b[_0x9b44('0x47')]=_['intersection'](_0x41c807['model'],qs[_0x9b44('0x5f')](_0x1acefa[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x7d825b[_0x9b44('0x47')]=_0x7d825b['attributes'][_0x9b44('0x4c')]?_0x7d825b[_0x9b44('0x47')]:_0x41c807[_0x9b44('0x57')];_0x7d825b[_0x9b44('0xcc')]=qs[_0x9b44('0xcd')](_0x1acefa[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x7d825b[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x1acefa[_0x9b44('0x43')],_0x41c807[_0x9b44('0x5d')]));if(_0x1acefa[_0x9b44('0x43')][_0x9b44('0x32')]){_0x7d825b[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x7d825b[_0x9b44('0x42')],{'$or':_[_0x9b44('0x34')](_0x7d825b[_0x9b44('0x47')],function(_0xbce6c6){var _0x44bf42={};_0x44bf42[_0xbce6c6]={'$like':'%'+_0x1acefa['query'][_0x9b44('0x32')]+'%'};return _0x44bf42;})});}_0x7d825b=_[_0x9b44('0xcf')]({},_0x7d825b,_0x1acefa['options']);return _0x29b1f6[_0x9b44('0x10a')](_0x7d825b);}})[_0x9b44('0x17')](function(_0x3ecfd4){if(_0x3ecfd4){_0x58f81b=_0x3ecfd4[_0x9b44('0x4c')];if(!_0x1acefa[_0x9b44('0x43')][_0x9b44('0xd0')]('nolimit')){_0x7d825b['limit']=qs[_0x9b44('0x25')](_0x1acefa['query'][_0x9b44('0x25')]);_0x7d825b[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x1acefa[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x29b1f6[_0x9b44('0x10a')](_0x7d825b);}})['then'](function(_0x4f29bf){if(_0x4f29bf){return _0x4f29bf?{'count':_0x58f81b,'rows':_0x4f29bf}:null;}})['then'](respondWithResult(_0x1c05a6,null))[_0x9b44('0x1f')](handleError(_0x1c05a6,null));};exports['addTeams']=function(_0x2109d8,_0x3f7fc5){var _0x3b8558=_0x2109d8['params']['id'];var _0x1a2247=_0x2109d8[_0x9b44('0x63')]?_0x2109d8['body'][_0x9b44('0x66')]:null;var _0x1b009a=[];return Promise[_0x9b44('0xfc')]()[_0x9b44('0x17')](function(){if(!_0x1a2247)throw new APIBadRequestError(_0x9b44('0x10b'));})[_0x9b44('0x17')](function(){return db[_0x9b44('0x3d')]['findOne']({'where':{'id':_0x3b8558}});})[_0x9b44('0x17')](function(_0x15c315){if(!_0x15c315)throw new APINotFoundError(util[_0x9b44('0xad')](_0x9b44('0x109'),_0x2109d8[_0x9b44('0x56')]['id']));return db[_0x9b44('0x6d')][_0x9b44('0x10c')](function(_0x1963e2){return _0x15c315[_0x9b44('0x10d')](_0x1a2247,{'transaction':_0x1963e2})[_0x9b44('0x17')](function(){return db[_0x9b44('0x10e')]['findAll']({'where':{'id':{'$in':_0x1a2247}}});})[_0x9b44('0x17')](function(_0x4329ca){var _0x2633cc=_[_0x9b44('0x34')](_0x4329ca,function(_0x3c917a){return _0x3c917a[_0x9b44('0x10f')]();});return Promise[_0x9b44('0x54')](_0x2633cc);})[_0x9b44('0x17')](function(_0x299693){_0x1b009a=_[_0x9b44('0x110')](_0x299693);var _0x172ff0=_[_0x9b44('0x34')](_0x1b009a,function(_0x2cc464){return _0x2cc464['addAgent'](_0x15c315['id'],{'transaction':_0x1963e2});});return Promise[_0x9b44('0x54')](_0x172ff0);})[_0x9b44('0x17')](function(){if(!_0x15c315[_0x9b44('0xab')])return;var _0x29235b=_['filter'](_0x1b009a,function(_0x5a24d1){return _0x5a24d1[_0x9b44('0x111')]('channel')===_0x9b44('0x112');});var _0x4504bb=_[_0x9b44('0x34')](_0x29235b,function(_0x5d3d28){return db['UserVoiceQueueRt'][_0x9b44('0xb1')]({'membername':_0x15c315[_0x9b44('0x38')],'UserId':_0x15c315['id'],'queue_name':_0x5d3d28[_0x9b44('0x38')],'VoiceQueueId':_0x5d3d28['id'],'interface':_[_0x9b44('0x6c')](_0x15c315[_0x9b44('0xac')])?util[_0x9b44('0xad')](_0x9b44('0xae'),_0x15c315[_0x9b44('0x38')]):_0x15c315['interface'],'paused':_0x15c315[_0x9b44('0xaf')]||![],'penalty':_0x15c315[_0x9b44('0xa7')]},{'transaction':_0x1963e2});});return Promise[_0x9b44('0x54')](_0x4504bb);})[_0x9b44('0x17')](function(){return db[_0x9b44('0x113')]['findAll']({'where':{'teamId':{'$in':_0x1a2247}}});})[_0x9b44('0x17')](function(_0x213628){var _0x212bee=_[_0x9b44('0x34')](_0x213628,function(_0x1dbc0){return db[_0x9b44('0x114')]['create']({'UserId':_0x15c315['id'],'VoicePrefixId':_0x1dbc0['VoicePrefixId']},{'transaction':_0x1963e2});});return Promise['all'](_0x212bee);});});})[_0x9b44('0x17')](function(){for(var _0x210c3e=0x0;_0x210c3e<_0x1b009a[_0x9b44('0x4c')];_0x210c3e++){var _0xab1552=_0x1b009a[_0x210c3e][_0x9b44('0x111')]('channel');var _0x13d8db=_0xab1552+_0x9b44('0xa8');socket[_0x9b44('0x2b')](_0x9b44('0x2e')+_0xab1552+_0x9b44('0xa9'),{'UserId':_0x3b8558,['queueField']:_0x1b009a[_0x210c3e]['id']});}})[_0x9b44('0x17')](respondWithStatusCode(_0x3f7fc5,null))['catch'](APIHandleError(_0x3f7fc5));};exports[_0x9b44('0x115')]=function(_0xa7aac6,_0x4f885d){var _0x27aeb3=_0xa7aac6[_0x9b44('0x56')]['id'];var _0x120270=null;if(_0xa7aac6['query']['ids']){_0x120270=_[_0x9b44('0xb4')](_0xa7aac6[_0x9b44('0x43')][_0x9b44('0x66')])?_0xa7aac6[_0x9b44('0x43')][_0x9b44('0x66')]:[_0xa7aac6[_0x9b44('0x43')][_0x9b44('0x66')]];}var _0x866737=[];return Promise[_0x9b44('0xfc')]()[_0x9b44('0x17')](function(){if(!_0x120270)throw new APIBadRequestError(_0x9b44('0x116'));})[_0x9b44('0x17')](function(){return db[_0x9b44('0x3d')][_0x9b44('0xcb')]({'where':{'id':_0x27aeb3}});})['then'](function(_0x1d1b92){if(!_0x1d1b92)throw new APINotFoundError(util[_0x9b44('0xad')]('User\x20with\x20id\x20%s\x20not\x20found',_0xa7aac6['params']['id']));return db['sequelize']['transaction'](function(_0x193c16){return _0x1d1b92[_0x9b44('0x115')](_0x120270,{'transaction':_0x193c16})['then'](function(){return db[_0x9b44('0x10e')]['findAll']({'where':{'id':{'$in':_0x120270}}});})['then'](function(_0x21c332){var _0x1ef137=_['map'](_0x21c332,function(_0xa33c0){return _0xa33c0[_0x9b44('0x10f')]();});return Promise[_0x9b44('0x54')](_0x1ef137);})[_0x9b44('0x17')](function(_0x352080){_0x866737=_[_0x9b44('0x110')](_0x352080);var _0x53249c=_['map'](_0x866737,function(_0x5637c1){return _0x5637c1['removeAgent'](_0x1d1b92['id'],{'transaction':_0x193c16});});return Promise[_0x9b44('0x54')](_0x53249c);})[_0x9b44('0x17')](function(){if(!_0x1d1b92[_0x9b44('0xab')])return;var _0x1e88b5=_[_0x9b44('0x32')](_0x866737,function(_0x4a7525){return _0x4a7525[_0x9b44('0x111')]('channel')===_0x9b44('0x112');});var _0x271dc1=_['map'](_0x1e88b5,function(_0x272f1a){return db[_0x9b44('0xb0')]['destroy']({'where':{'VoiceQueueId':_0x272f1a['id'],'UserId':_0x1d1b92['id']},'transaction':_0x193c16});});return Promise[_0x9b44('0x54')](_0x271dc1);})[_0x9b44('0x17')](function(){return db[_0x9b44('0x113')][_0x9b44('0x49')]({'where':{'teamId':{'$in':_0x120270}}});})[_0x9b44('0x17')](function(_0x32bc9e){var _0x29117b=_[_0x9b44('0x34')](_0x32bc9e,function(_0x4c61dc){return db[_0x9b44('0x114')][_0x9b44('0x39')]({'where':{'UserId':_0x1d1b92['id'],'VoicePrefixId':_0x4c61dc['VoicePrefixId']}},{'transaction':_0x193c16});});return Promise[_0x9b44('0x54')](_0x29117b);});});})[_0x9b44('0x17')](function(){for(var _0x5e096b=0x0;_0x5e096b<_0x866737[_0x9b44('0x4c')];_0x5e096b++){var _0x1a3471=_0x866737[_0x5e096b]['getDataValue']('channel');var _0x5daa29=_0x1a3471+_0x9b44('0xa8');socket[_0x9b44('0x2b')](_0x9b44('0x2e')+_0x1a3471+_0x9b44('0xb5'),{'UserId':_0x27aeb3,['queueField']:_0x866737[_0x5e096b]['id']});}})['then'](respondWithStatusCode(_0x4f885d,null))[_0x9b44('0x1f')](APIHandleError(_0x4f885d));};exports[_0x9b44('0x117')]=function(_0x241f43,_0x3dc834){var _0x588bda={};var _0x34e740={};var _0x1032db;var _0x3e00be;return db['User'][_0x9b44('0xcb')]({'where':{'id':_0x241f43[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x3dc834,null))[_0x9b44('0x17')](function(_0x620c89){if(_0x620c89){_0x1032db=_0x620c89;_0x34e740['model']=_[_0x9b44('0x59')](db[_0x9b44('0xd1')]['rawAttributes']);_0x34e740[_0x9b44('0x43')]=_['keys'](_0x241f43['query']);_0x34e740[_0x9b44('0x5d')]=_[_0x9b44('0x5e')](_0x34e740[_0x9b44('0x57')],_0x34e740[_0x9b44('0x43')]);_0x588bda[_0x9b44('0x47')]=_['intersection'](_0x34e740[_0x9b44('0x57')],qs[_0x9b44('0x5f')](_0x241f43[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x588bda[_0x9b44('0x47')]=_0x588bda['attributes'][_0x9b44('0x4c')]?_0x588bda['attributes']:_0x34e740[_0x9b44('0x57')];_0x588bda[_0x9b44('0xcc')]=qs[_0x9b44('0xcd')](_0x241f43[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x588bda[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_[_0x9b44('0xce')](_0x241f43[_0x9b44('0x43')],_0x34e740[_0x9b44('0x5d')]));if(_0x241f43['query']['filter']){_0x588bda[_0x9b44('0x42')]=_[_0x9b44('0xcf')](_0x588bda[_0x9b44('0x42')],{'$or':_['map'](_0x588bda[_0x9b44('0x47')],function(_0x3ce887){var _0x3aa9fc={};_0x3aa9fc[_0x3ce887]={'$like':'%'+_0x241f43[_0x9b44('0x43')]['filter']+'%'};return _0x3aa9fc;})});}_0x588bda=_[_0x9b44('0xcf')]({},_0x588bda,_0x241f43['options']);return _0x1032db[_0x9b44('0x117')](_0x588bda);}})[_0x9b44('0x17')](function(_0x1b749c){if(_0x1b749c){_0x3e00be=_0x1b749c[_0x9b44('0x4c')];if(!_0x241f43[_0x9b44('0x43')][_0x9b44('0xd0')](_0x9b44('0xd7'))){_0x588bda[_0x9b44('0x25')]=qs[_0x9b44('0x25')](_0x241f43[_0x9b44('0x43')]['limit']);_0x588bda[_0x9b44('0x23')]=qs[_0x9b44('0x23')](_0x241f43[_0x9b44('0x43')][_0x9b44('0x23')]);}return _0x1032db[_0x9b44('0x117')](_0x588bda);}})[_0x9b44('0x17')](function(_0x454d86){if(_0x454d86){return _0x454d86?{'count':_0x3e00be,'rows':_0x454d86}:null;}})[_0x9b44('0x17')](respondWithResult(_0x3dc834,null))[_0x9b44('0x1f')](handleError(_0x3dc834,null));};exports[_0x9b44('0x118')]=function(_0x30e14e,_0x324991){var _0x1e0603={};var _0x502622={};var _0x3c33db;return db['User'][_0x9b44('0xcb')]({'where':{'id':_0x30e14e[_0x9b44('0x56')]['id']}})[_0x9b44('0x17')](handleEntityNotFound(_0x324991,null))['then'](function(_0x228b37){if(_0x228b37){_0x3c33db=_0x228b37;_0x502622[_0x9b44('0x57')]=_['keys'](db[_0x9b44('0x3d')][_0x9b44('0x5a')]);_0x502622['query']=_['keys'](_0x30e14e[_0x9b44('0x43')]);_0x502622['filters']=_[_0x9b44('0x5e')](_0x502622[_0x9b44('0x57')],_0x502622[_0x9b44('0x43')]);_0x1e0603[_0x9b44('0x47')]=_[_0x9b44('0x5e')](_0x502622['model'],qs[_0x9b44('0x5f')](_0x30e14e[_0x9b44('0x43')][_0x9b44('0x5f')]));_0x1e0603[_0x9b44('0x47')]=_0x1e0603['attributes'][_0x9b44('0x4c')]?_0x1e0603['attributes']:_0x502622[_0x9b44('0x57')];_0x1e0603[_0x9b44('0xcc')]=qs['sort'](_0x30e14e[_0x9b44('0x43')][_0x9b44('0xcd')]);_0x1e0603[_0x9b44('0x42')]=qs[_0x9b44('0x5d')](_['pick'](_0x30e14e['query'],_0x502622[_0x9b44('0x5d')]));if(_0x30e14e[_0x9b44('0x43')][_0x9b44('0x32')]){_0x1e0603[_0x9b44('0x42')]=_['merge'](_0x1e0603[_0x9b44('0x42')],{'$or':_['map'](_0x1e0603['attributes'],function(_0x5ce254){var _0x952f78={};_0x952f78[_0x5ce254]={'$like':'%'+_0x30e14e[_0x9b44('0x43')][_0x9b44('0x32')]+'%'};return _0x952f78;})});}_0x1e0603[_0x9b44('0x57')]=db[_0x9b44('0x3d')];_0x1e0603['as']=_0x9b44('0x2f');_0x1e0603=_['merge']({},_0x1e0603,_0x30e14e[_0x9b44('0x62')]);return _0x3c33db[_0x9b44('0xf3')]({'include':[_0x1e0603]});}})['then'](function(_0x4c8412){if(_0x4c8412){var _0x2a04c1={},_0x13c535=[];for(var _0x3ec50b=0x0;_0x3ec50b<_0x4c8412[_0x9b44('0x4c')];_0x3ec50b+=0x1){for(var _0x5674ce=0x0,_0x5e0b05;_0x5674ce<_0x4c8412[_0x3ec50b][_0x9b44('0x2f')]['length'];_0x5674ce+=0x1){_0x5e0b05=_0x4c8412[_0x3ec50b][_0x9b44('0x2f')][_0x5674ce][_0x9b44('0x2d')]({'plain':!![]});_0x2a04c1[_0x5e0b05['id']]=_0x5e0b05;}}_0x2a04c1=_['values'](_0x2a04c1);for(var _0x59bcab=qs['offset'](_0x30e14e[_0x9b44('0x43')]['offset']);_0x59bcab<_0x2a04c1[_0x9b44('0x4c')]&&_0x13c535[_0x9b44('0x4c')]=_0x3e1283['agents']){throw new Error(_0xfe0f('0x4d'));}})['then'](function(){if(_0x1d228d){return db['UserVoiceQueueRt'][_0xfe0f('0x43')]({'where':{'membername':_0x1d228d['name']},'individualHooks':!![]});}})[_0xfe0f('0x14')](function(){if(_0x1d228d){return _0x1d228d[_0xfe0f('0x4e')]({'raw':!![]});}})[_0xfe0f('0x14')](function(_0x392610){if(_0x1d228d){if(_0x392610){var _0x37a8cc=[];_0x56db4b=_0x392610;if(_0x56db4b[_0xfe0f('0x2a')]){for(var _0x4c8bf4=0x0;_0x4c8bf4<_0x56db4b[_0xfe0f('0x2a')];_0x4c8bf4++){_0x37a8cc['push'](db[_0xfe0f('0x26')][_0xfe0f('0x4f')]({'membername':_0x1d228d['name'],'UserId':_0x1d228d['id'],'queue_name':_0x56db4b[_0x4c8bf4][_0xfe0f('0x20')],'VoiceQueueId':_0x56db4b[_0x4c8bf4]['id'],'interface':_0x5eb6c3,'paused':_0x1d228d[_0xfe0f('0x48')]||![],'penalty':_0x56db4b[_0x4c8bf4][_0xfe0f('0x50')]||0x0}));}return BPromise['all'](_0x37a8cc);}}}})[_0xfe0f('0x14')](function(){if(_0x1d228d){return db['MemberReport'][_0xfe0f('0xc')]({'where':{'membername':_0x1d228d[_0xfe0f('0x20')],'exitAt':null}});}})[_0xfe0f('0x14')](function(_0xd44ca4){if(_0x1d228d){if(_0xd44ca4&&_0xd44ca4[_0xfe0f('0x2a')]){var _0x52b669=[];_0xd44ca4[_0xfe0f('0x2e')](function(_0x645dee){_0x52b669[_0xfe0f('0x44')](_0x645dee[_0xfe0f('0x27')]({'exitAt':moment()[_0xfe0f('0x23')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xfe0f('0x45')](_0x52b669);}}})[_0xfe0f('0x14')](function(){if(_0x1d228d){var _0x3408eb=[];var _0x48c95a=[];var _0x14f22a=utils[_0xfe0f('0x2d')]();var _0x46d646={'membername':_0x1d228d['name'],'interface':_0x5eb6c3,'enterAt':moment()[_0xfe0f('0x23')](_0xfe0f('0x2b')),'role':_0x1d228d[_0xfe0f('0x21')],'internal':_0x1d228d[_0xfe0f('0x22')]};_0x14f22a[_0xfe0f('0x2e')](function(_0x4005dd){_0x3408eb['push'](_[_0xfe0f('0x51')]({'channel':_0x4005dd,'type':_0xfe0f('0x52'),'data1':_0xfe0f('0x53'),'data2':_0x5eb6c3},_0x46d646));if(_0x1d228d[_0xfe0f('0x48')]){_0x48c95a['push'](_[_0xfe0f('0x51')]({'channel':_0x4005dd,'type':_0xfe0f('0x29'),'data1':_0xfe0f('0x54')},_0x46d646));}});return db[_0xfe0f('0x28')][_0xfe0f('0x34')](_0x3408eb[_0xfe0f('0x55')](_0x48c95a),{'individualHooks':!![]});}})[_0xfe0f('0x14')](function(){if(_0x1d228d){return _0x1d228d[_0xfe0f('0x27')]({'online':!![],'lastLoginAt':moment()[_0xfe0f('0x23')](_0xfe0f('0x2b')),'voicePause':_0x1d228d[_0xfe0f('0x48')]||![],'mailPause':_0x1d228d[_0xfe0f('0x48')]||![],'chatPause':_0x1d228d[_0xfe0f('0x48')]||![],'faxPause':_0x1d228d['loginInPause']||![],'smsPause':_0x1d228d[_0xfe0f('0x48')]||![],'openchannelPause':_0x1d228d[_0xfe0f('0x48')]||![],'pauseType':_0x1d228d[_0xfe0f('0x48')]?_0xfe0f('0x54'):null,'lastPauseAt':moment()[_0xfe0f('0x23')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x5eb6c3});}})['then'](function(_0x21c85e){_0x1eb2a9(_0x21c85e);})['catch'](function(_0x5a3f42){_0x1e46be(_0x58cdd2[_0xfe0f('0x18')](0x1f4,_0x5a3f42[_0xfe0f('0x19')]));});});}; \ No newline at end of file diff --git a/server/api/user/user.socket.js b/server/api/user/user.socket.js new file mode 100644 index 0000000..eca77f2 --- /dev/null +++ b/server/api/user/user.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x25b6=['update','removeListener','length','user:'];(function(_0x487f07,_0x5256f4){var _0x30f811=function(_0x56bc87){while(--_0x56bc87){_0x487f07['push'](_0x487f07['shift']());}};_0x30f811(++_0x5256f4);}(_0x25b6,0x150));var _0x625b=function(_0x46111d,_0x5d286b){_0x46111d=_0x46111d-0x0;var _0xe82586=_0x25b6[_0x46111d];return _0xe82586;};'use strict';var UserEvents=require('./user.events');var events=['save','remove',_0x625b('0x0')];function createListener(_0x5edd04,_0xfbe237){return function(_0x5bc4d5){_0xfbe237['emit'](_0x5edd04,_0x5bc4d5);};}function removeListener(_0x509e3d,_0x1cc4e5){return function(){UserEvents[_0x625b('0x1')](_0x509e3d,_0x1cc4e5);};}exports['register']=function(_0x107b93){for(var _0x70681f=0x0,_0xb18ac6=events[_0x625b('0x2')];_0x70681f<_0xb18ac6;_0x70681f++){var _0x442979=events[_0x70681f];var _0x353cb7=createListener(_0x625b('0x3')+_0x442979,_0x107b93);UserEvents['on'](_0x442979,_0x353cb7);}}; \ No newline at end of file diff --git a/server/api/userChatQueue/index.js b/server/api/userChatQueue/index.js new file mode 100644 index 0000000..deb4ff7 --- /dev/null +++ b/server/api/userChatQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x17543f,_0x34a3aa){var _0x479c57=function(_0x10207e){while(--_0x10207e){_0x17543f['push'](_0x17543f['shift']());}};_0x479c57(++_0x34a3aa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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 diff --git a/server/api/userChatQueue/userChatQueue.attributes.js b/server/api/userChatQueue/userChatQueue.attributes.js new file mode 100644 index 0000000..e2aaf0d --- /dev/null +++ b/server/api/userChatQueue/userChatQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc7e2=['sequelize','exports'];(function(_0x330d71,_0x23b7f2){var _0x463119=function(_0x5c0510){while(--_0x5c0510){_0x330d71['push'](_0x330d71['shift']());}};_0x463119(++_0x23b7f2);}(_0xc7e2,0x1d4));var _0x2c7e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc7e2[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x2c7e('0x0'));module[_0x2c7e('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/userChatQueue/userChatQueue.model.js b/server/api/userChatQueue/userChatQueue.model.js new file mode 100644 index 0000000..d6afbed --- /dev/null +++ b/server/api/userChatQueue/userChatQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5b51=['api','bluebird','rimraf','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','lodash','util','../../config/logger'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x5b51,0x9d));var _0x15b5=function(_0x5cfb92,_0x5797e6){_0x5cfb92=_0x5cfb92-0x0;var _0x1cd7c2=_0x5b51[_0x5cfb92];return _0x1cd7c2;};'use strict';var _=require(_0x15b5('0x0'));var util=require(_0x15b5('0x1'));var logger=require(_0x15b5('0x2'))(_0x15b5('0x3'));var moment=require('moment');var BPromise=require(_0x15b5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x15b5('0x5'));var config=require(_0x15b5('0x6'));var attributes=require(_0x15b5('0x7'));module[_0x15b5('0x8')]=function(_0xf65df3,_0x28e2c6){return _0xf65df3['define'](_0x15b5('0x9'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userChatQueue/userChatQueue.rpc.js b/server/api/userChatQueue/userChatQueue.rpc.js new file mode 100644 index 0000000..ed3b959 --- /dev/null +++ b/server/api/userChatQueue/userChatQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x37ad=['code','message','result','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0xc45495,_0x4e59bf){var _0x131eb5=function(_0x1b55d4){while(--_0x1b55d4){_0xc45495['push'](_0xc45495['shift']());}};_0x131eb5(++_0x4e59bf);}(_0x37ad,0x1a5));var _0xd37a=function(_0x1c5209,_0x1a557d){_0x1c5209=_0x1c5209-0x0;var _0x2a9911=_0x37ad[_0x1c5209];return _0x2a9911;};'use strict';var _=require(_0xd37a('0x0'));var util=require(_0xd37a('0x1'));var moment=require(_0xd37a('0x2'));var BPromise=require(_0xd37a('0x3'));var rs=require(_0xd37a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd37a('0x5'));var logger=require(_0xd37a('0x6'))('rpc');var config=require(_0xd37a('0x7'));var jayson=require(_0xd37a('0x8'));var client=jayson[_0xd37a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e6891,_0x188228,_0x4afaf5){return new BPromise(function(_0x1d85ca,_0x5ee0dd){return client['request'](_0x2e6891,_0x4afaf5)[_0xd37a('0xa')](function(_0x5f43d1){logger['info'](_0xd37a('0xb'),_0x188228,_0xd37a('0xc'));logger[_0xd37a('0xd')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x188228,'request\x20sent',JSON[_0xd37a('0xe')](_0x5f43d1));if(_0x5f43d1['error']){if(_0x5f43d1[_0xd37a('0xf')][_0xd37a('0x10')]===0x1f4){logger[_0xd37a('0xf')](_0xd37a('0xb'),_0x188228,_0x5f43d1[_0xd37a('0xf')][_0xd37a('0x11')]);return _0x5ee0dd(_0x5f43d1['error'][_0xd37a('0x11')]);}logger[_0xd37a('0xf')](_0xd37a('0xb'),_0x188228,_0x5f43d1[_0xd37a('0xf')][_0xd37a('0x11')]);return _0x1d85ca(_0x5f43d1[_0xd37a('0xf')][_0xd37a('0x11')]);}else{logger['info']('UserChatQueue,\x20%s,\x20%s',_0x188228,_0xd37a('0xc'));_0x1d85ca(_0x5f43d1[_0xd37a('0x12')][_0xd37a('0x11')]);}})['catch'](function(_0x143e75){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x188228,_0x143e75);_0x5ee0dd(_0x143e75);});});} \ No newline at end of file diff --git a/server/api/userFaxQueue/index.js b/server/api/userFaxQueue/index.js new file mode 100644 index 0000000..041c545 --- /dev/null +++ b/server/api/userFaxQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x2c17c7,_0x171f6a){var _0x2c0cda=function(_0xe91723){while(--_0xe91723){_0x2c17c7['push'](_0x2c17c7['shift']());}};_0x2c0cda(++_0x171f6a);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'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 diff --git a/server/api/userFaxQueue/userFaxQueue.attributes.js b/server/api/userFaxQueue/userFaxQueue.attributes.js new file mode 100644 index 0000000..e2aab7f --- /dev/null +++ b/server/api/userFaxQueue/userFaxQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf461=['exports','INTEGER','STRING','sequelize'];(function(_0x2b3b07,_0xa237cb){var _0x553ac5=function(_0x3d9297){while(--_0x3d9297){_0x2b3b07['push'](_0x2b3b07['shift']());}};_0x553ac5(++_0xa237cb);}(_0xf461,0x14f));var _0x1f46=function(_0x246be2,_0x120bca){_0x246be2=_0x246be2-0x0;var _0x3a08c7=_0xf461[_0x246be2];return _0x3a08c7;};'use strict';var Sequelize=require(_0x1f46('0x0'));module[_0x1f46('0x1')]={'penalty':{'type':Sequelize[_0x1f46('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1f46('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x1f46('0x3')]}}; \ No newline at end of file diff --git a/server/api/userFaxQueue/userFaxQueue.model.js b/server/api/userFaxQueue/userFaxQueue.model.js new file mode 100644 index 0000000..1b9f607 --- /dev/null +++ b/server/api/userFaxQueue/userFaxQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x97ca=['./userFaxQueue.attributes','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x97ca,0x19b));var _0xa97c=function(_0x1cccea,_0x27acc2){_0x1cccea=_0x1cccea-0x0;var _0x571972=_0x97ca[_0x1cccea];return _0x571972;};'use strict';var _=require(_0xa97c('0x0'));var util=require(_0xa97c('0x1'));var logger=require(_0xa97c('0x2'))(_0xa97c('0x3'));var moment=require(_0xa97c('0x4'));var BPromise=require('bluebird');var rp=require(_0xa97c('0x5'));var fs=require('fs');var path=require(_0xa97c('0x6'));var rimraf=require(_0xa97c('0x7'));var config=require(_0xa97c('0x8'));var attributes=require(_0xa97c('0x9'));module['exports']=function(_0x2f3cd5,_0x3119cd){return _0x2f3cd5['define'](_0xa97c('0xa'),attributes,{'tableName':_0xa97c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userFaxQueue/userFaxQueue.rpc.js b/server/api/userFaxQueue/userFaxQueue.rpc.js new file mode 100644 index 0000000..dd0902a --- /dev/null +++ b/server/api/userFaxQueue/userFaxQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfc19=['http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0x3bf83e,_0x36169b){var _0xa24fe5=function(_0x4c427f){while(--_0x4c427f){_0x3bf83e['push'](_0x3bf83e['shift']());}};_0xa24fe5(++_0x36169b);}(_0xfc19,0x64));var _0x9fc1=function(_0x4d4ef0,_0x5c6861){_0x4d4ef0=_0x4d4ef0-0x0;var _0x2a7d05=_0xfc19[_0x4d4ef0];return _0x2a7d05;};'use strict';var _=require(_0x9fc1('0x0'));var util=require(_0x9fc1('0x1'));var moment=require(_0x9fc1('0x2'));var BPromise=require(_0x9fc1('0x3'));var rs=require(_0x9fc1('0x4'));var fs=require('fs');var Redis=require(_0x9fc1('0x5'));var db=require(_0x9fc1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9fc1('0x7'));var config=require(_0x9fc1('0x8'));var jayson=require(_0x9fc1('0x9'));var client=jayson['client'][_0x9fc1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x19ad5e,_0x313c8c,_0x141949){return new BPromise(function(_0x1c40d2,_0x51a42e){return client[_0x9fc1('0xb')](_0x19ad5e,_0x141949)[_0x9fc1('0xc')](function(_0x2af6e2){logger[_0x9fc1('0xd')](_0x9fc1('0xe'),_0x313c8c,_0x9fc1('0xf'));logger[_0x9fc1('0x10')](_0x9fc1('0x11'),_0x313c8c,_0x9fc1('0xf'),JSON['stringify'](_0x2af6e2));if(_0x2af6e2[_0x9fc1('0x12')]){if(_0x2af6e2[_0x9fc1('0x12')][_0x9fc1('0x13')]===0x1f4){logger[_0x9fc1('0x12')](_0x9fc1('0xe'),_0x313c8c,_0x2af6e2[_0x9fc1('0x12')][_0x9fc1('0x14')]);return _0x51a42e(_0x2af6e2[_0x9fc1('0x12')][_0x9fc1('0x14')]);}logger[_0x9fc1('0x12')](_0x9fc1('0xe'),_0x313c8c,_0x2af6e2['error'][_0x9fc1('0x14')]);return _0x1c40d2(_0x2af6e2['error'][_0x9fc1('0x14')]);}else{logger[_0x9fc1('0xd')](_0x9fc1('0xe'),_0x313c8c,'request\x20sent');_0x1c40d2(_0x2af6e2['result']['message']);}})[_0x9fc1('0x15')](function(_0x5c5322){logger['error'](_0x9fc1('0xe'),_0x313c8c,_0x5c5322);_0x51a42e(_0x5c5322);});});} \ No newline at end of file diff --git a/server/api/userMailQueue/index.js b/server/api/userMailQueue/index.js new file mode 100644 index 0000000..c06c4e6 --- /dev/null +++ b/server/api/userMailQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x4316d5,_0x17ca8c){var _0x304ce7=function(_0x7b464a){while(--_0x7b464a){_0x4316d5['push'](_0x4316d5['shift']());}};_0x304ce7(++_0x17ca8c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 diff --git a/server/api/userMailQueue/userMailQueue.attributes.js b/server/api/userMailQueue/userMailQueue.attributes.js new file mode 100644 index 0000000..e95e28d --- /dev/null +++ b/server/api/userMailQueue/userMailQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x49be=['exports','sequelize'];(function(_0xf7d967,_0x8bf1cb){var _0x2a4f92=function(_0x59b128){while(--_0x59b128){_0xf7d967['push'](_0xf7d967['shift']());}};_0x2a4f92(++_0x8bf1cb);}(_0x49be,0x12b));var _0xe49b=function(_0x47878f,_0x48d3bf){_0x47878f=_0x47878f-0x0;var _0x4b05b8=_0x49be[_0x47878f];return _0x4b05b8;};'use strict';var Sequelize=require(_0xe49b('0x0'));module[_0xe49b('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/userMailQueue/userMailQueue.model.js b/server/api/userMailQueue/userMailQueue.model.js new file mode 100644 index 0000000..06bbfe7 --- /dev/null +++ b/server/api/userMailQueue/userMailQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9b39=['path','./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','lodash','util','api','moment','bluebird'];(function(_0x169c39,_0x5d9651){var _0x820530=function(_0x498674){while(--_0x498674){_0x169c39['push'](_0x169c39['shift']());}};_0x820530(++_0x5d9651);}(_0x9b39,0x17c));var _0x99b3=function(_0x9731fe,_0x3116cf){_0x9731fe=_0x9731fe-0x0;var _0x45adea=_0x9b39[_0x9731fe];return _0x45adea;};'use strict';var _=require(_0x99b3('0x0'));var util=require(_0x99b3('0x1'));var logger=require('../../config/logger')(_0x99b3('0x2'));var moment=require(_0x99b3('0x3'));var BPromise=require(_0x99b3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99b3('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x99b3('0x6'));module[_0x99b3('0x7')]=function(_0x4537f9,_0x26d0c4){return _0x4537f9[_0x99b3('0x8')](_0x99b3('0x9'),attributes,{'tableName':_0x99b3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userMailQueue/userMailQueue.rpc.js b/server/api/userMailQueue/userMailQueue.rpc.js new file mode 100644 index 0000000..7894b32 --- /dev/null +++ b/server/api/userMailQueue/userMailQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x1a9c91,_0x5ddb25){var _0x2ea348=function(_0x9695a5){while(--_0x9695a5){_0x1a9c91['push'](_0x1a9c91['shift']());}};_0x2ea348(++_0x5ddb25);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x00bb[_0x2d7f0e];return _0x110b07;};'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});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});} \ No newline at end of file diff --git a/server/api/userNotification/index.js b/server/api/userNotification/index.js new file mode 100644 index 0000000..c187fde --- /dev/null +++ b/server/api/userNotification/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9700=['isAuthenticated','sendUserNotification','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./userNotification.controller','post'];(function(_0x32cc68,_0x5d2b21){var _0x472ab1=function(_0x14ff66){while(--_0x14ff66){_0x32cc68['push'](_0x32cc68['shift']());}};_0x472ab1(++_0x5d2b21);}(_0x9700,0x178));var _0x0970=function(_0x2b06ef,_0x413e75){_0x2b06ef=_0x2b06ef-0x0;var _0x35f5d1=_0x9700[_0x2b06ef];return _0x35f5d1;};'use strict';var multer=require(_0x0970('0x0'));var util=require('util');var path=require(_0x0970('0x1'));var timeout=require(_0x0970('0x2'));var express=require('express');var router=express[_0x0970('0x3')]();var fs_extra=require(_0x0970('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0970('0x5'));var config=require(_0x0970('0x6'));var controller=require(_0x0970('0x7'));router[_0x0970('0x8')]('/',auth[_0x0970('0x9')](),controller[_0x0970('0xa')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/userNotification/userNotification.attributes.js b/server/api/userNotification/userNotification.attributes.js new file mode 100644 index 0000000..63a5a95 --- /dev/null +++ b/server/api/userNotification/userNotification.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4ffd=['STRING','sequelize','TEXT'];(function(_0x45ce90,_0x114609){var _0x313c45=function(_0x55102a){while(--_0x55102a){_0x45ce90['push'](_0x45ce90['shift']());}};_0x313c45(++_0x114609);}(_0x4ffd,0xb2));var _0xd4ff=function(_0xf9a6cf,_0x11870e){_0xf9a6cf=_0xf9a6cf-0x0;var _0x59e2bc=_0x4ffd[_0xf9a6cf];return _0x59e2bc;};'use strict';var Sequelize=require(_0xd4ff('0x0'));module['exports']={'body':{'type':Sequelize[_0xd4ff('0x1')]},'senderName':{'type':Sequelize[_0xd4ff('0x2')]},'recipientsId':{'type':Sequelize[_0xd4ff('0x1')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize['BOOLEAN']}}; \ No newline at end of file diff --git a/server/api/userNotification/userNotification.controller.js b/server/api/userNotification/userNotification.controller.js new file mode 100644 index 0000000..cd6c191 --- /dev/null +++ b/server/api/userNotification/userNotification.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xff2d=['sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','voicequeue','team','user','some','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','model','queue','replace','Queue','ids','push','all','union','flatten','map','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./userNotification.socket','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send'];(function(_0xaf404b,_0x35df1d){var _0x356cbd=function(_0x39250c){while(--_0x39250c){_0xaf404b['push'](_0xaf404b['shift']());}};_0x356cbd(++_0x35df1d);}(_0xff2d,0x9a));var _0xdff2=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xff2d[_0x342700];return _0x53406f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdff2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdff2('0x1'));var rp=require(_0xdff2('0x2'));var moment=require(_0xdff2('0x3'));var BPromise=require(_0xdff2('0x4'));var Mustache=require(_0xdff2('0x5'));var util=require('util');var path=require('path');var sox=require(_0xdff2('0x6'));var csv=require('to-csv');var ejs=require(_0xdff2('0x7'));var fs=require('fs');var fs_extra=require(_0xdff2('0x8'));var _=require(_0xdff2('0x9'));var squel=require(_0xdff2('0xa'));var crypto=require(_0xdff2('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdff2('0xc'));var toCsv=require('to-csv');var querystring=require(_0xdff2('0xd'));var Papa=require(_0xdff2('0xe'));var Redis=require('ioredis');var authService=require(_0xdff2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdff2('0x10'));var hardwareService=require(_0xdff2('0x11'));var logger=require('../../config/logger')(_0xdff2('0x12'));var utils=require(_0xdff2('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xdff2('0x14'));var db=require(_0xdff2('0x15'))['db'];config[_0xdff2('0x16')]=_['defaults'](config[_0xdff2('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xdff2('0x17'))(new Redis(config[_0xdff2('0x16')]));require(_0xdff2('0x18'))['register'](socket);function respondWithStatusCode(_0x159af7,_0x4b018d){_0x4b018d=_0x4b018d||0xcc;return function(_0x161c93){if(_0x161c93){return _0x159af7['sendStatus'](_0x4b018d);}return _0x159af7['status'](_0x4b018d)[_0xdff2('0x19')]();};}function respondWithResult(_0x305cbe,_0x9589d6){_0x9589d6=_0x9589d6||0xc8;return function(_0x299a0d){if(_0x299a0d){return _0x305cbe[_0xdff2('0x1a')](_0x9589d6)[_0xdff2('0x1b')](_0x299a0d);}};}function respondWithFilteredResult(_0x584c47,_0x2acc81){return function(_0x5c6ec9){if(_0x5c6ec9){var _0x584bba=typeof _0x2acc81[_0xdff2('0x1c')]===_0xdff2('0x1d')&&typeof _0x2acc81[_0xdff2('0x1e')]===_0xdff2('0x1d');var _0x4e9440=_0x5c6ec9['count'];var _0xf6e49c=_0x584bba?0x0:_0x2acc81[_0xdff2('0x1c')];var _0x36732d=_0x584bba?_0x5c6ec9[_0xdff2('0x1f')]:_0x2acc81[_0xdff2('0x1c')]+_0x2acc81[_0xdff2('0x1e')];var _0x137575;if(_0x36732d>=_0x4e9440){_0x36732d=_0x4e9440;_0x137575=0xc8;}else{_0x137575=0xce;}_0x584c47['status'](_0x137575);return _0x584c47[_0xdff2('0x20')](_0xdff2('0x21'),_0xf6e49c+'-'+_0x36732d+'/'+_0x4e9440)[_0xdff2('0x1b')](_0x5c6ec9);}return null;};}function patchUpdates(_0x405372){return function(_0x30e825){try{jsonpatch[_0xdff2('0x22')](_0x30e825,_0x405372,!![]);}catch(_0x1a18b9){return BPromise[_0xdff2('0x23')](_0x1a18b9);}return _0x30e825['save']();};}function saveUpdates(_0x1f0ad9,_0x26ef12){return function(_0x4acc1a){if(_0x4acc1a){return _0x4acc1a[_0xdff2('0x24')](_0x1f0ad9)[_0xdff2('0x25')](function(_0x3b2a91){return _0x3b2a91;});}return null;};}function removeEntity(_0x40db12,_0x2c4c03){return function(_0x4c5174){if(_0x4c5174){return _0x4c5174[_0xdff2('0x26')]()['then'](function(){_0x40db12[_0xdff2('0x1a')](0xcc)[_0xdff2('0x19')]();});}};}function handleEntityNotFound(_0x3e0eb2,_0x4aaa60){return function(_0x1a982d){if(!_0x1a982d){_0x3e0eb2[_0xdff2('0x27')](0x194);}return _0x1a982d;};}function handleError(_0x4b5321,_0x3f27b6){_0x3f27b6=_0x3f27b6||0x1f4;return function(_0x51f8fd){logger[_0xdff2('0x28')](_0x51f8fd[_0xdff2('0x29')]);if(_0x51f8fd[_0xdff2('0x2a')]){delete _0x51f8fd['name'];}_0x4b5321[_0xdff2('0x1a')](_0x3f27b6)[_0xdff2('0x2b')](_0x51f8fd);};}exports[_0xdff2('0x2c')]=function(_0x5b8db8,_0x54efab,_0x1d480b){if(!_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x2e')](_0xdff2('0x2f'))&&!_0x5b8db8['body'][_0xdff2('0x2e')](_0xdff2('0x30'))){throw new db[(_0xdff2('0x31'))][(_0xdff2('0x32'))](_0xdff2('0x33'));}else{if(_0x5b8db8[_0xdff2('0x2d')]['hasOwnProperty'](_0xdff2('0x30'))&&!_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x2e')](_0xdff2('0x34'))){throw new db[(_0xdff2('0x31'))]['ValidationError'](_0xdff2('0x35'));}if(!_0x5b8db8['body'][_0xdff2('0x2e')](_0xdff2('0x36'))){throw new db[(_0xdff2('0x31'))]['ValidationError'](_0xdff2('0x37'));}else{try{var _0x5c7ca=JSON[_0xdff2('0x38')](_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x36')]);}catch(_0x17796a){logger['error'](_0x17796a);throw new db[(_0xdff2('0x31'))][(_0xdff2('0x32'))](_0xdff2('0x39'));}var _0x13a568=[_0xdff2('0x3a'),_0xdff2('0x3b'),'mailqueue',_0xdff2('0x3c'),'smsqueue',_0xdff2('0x3d'),'whatsappqueue',_0xdff2('0x3e'),_0xdff2('0x3f')];if(_[_0xdff2('0x40')](_0x5c7ca,function(_0x144556){return!_['includes'](_0x13a568,_0x144556['model'][_0xdff2('0x41')]());})){throw new db[(_0xdff2('0x31'))][(_0xdff2('0x32'))](_0xdff2('0x42'));}}}var _0x217c45={};_0x217c45[_0xdff2('0x43')]=_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x2e')](_0xdff2('0x43'))?_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x43')]:_0x5b8db8[_0xdff2('0x3f')][_0xdff2('0x44')];_0x217c45['recipientsDescription']=_['isEmpty'](_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x45')])?null:_0x5b8db8['body'][_0xdff2('0x45')];_0x217c45['beep']=_0x5b8db8[_0xdff2('0x2d')][_0xdff2('0x46')]||![];_0x217c45[_0xdff2('0x47')]=_0x5b8db8['user']['id'];return getContent(_0x5b8db8[_0xdff2('0x2d')])[_0xdff2('0x25')](function(_0x265931){_0x217c45[_0xdff2('0x2d')]=_0x265931;return getRecipients(_0x5c7ca);})[_0xdff2('0x25')](function(_0x5092ab){_0x217c45[_0xdff2('0x48')]=_[_0xdff2('0x49')](_0x5092ab)[_0xdff2('0x4a')](',');return db['sequelize'][_0xdff2('0x4b')](function(_0x978724){return db[_0xdff2('0x4c')][_0xdff2('0x4d')](_0x217c45,{'raw':!![],'transaction':_0x978724})[_0xdff2('0x25')](function(_0x17a10d){var _0x255297={'sender':_0x217c45[_0xdff2('0x43')],'description':_0x217c45['recipientsDescription'],'content':_0x217c45[_0xdff2('0x2d')],'beep':_0x217c45['beep']};_0x5092ab[_0xdff2('0x4e')](function(_0x444be8){_0x255297[_0xdff2('0x4f')]=_0x444be8;socket[_0xdff2('0x50')](_0xdff2('0x51'),_0x255297);});return _0x17a10d;});});})['then'](respondWithResult(_0x54efab,0xc9))[_0xdff2('0x52')](handleError(_0x54efab,null));};function getContent(_0x120ac7){return new BPromise(function(_0x3744f7,_0x34c3f0){if(_0x120ac7[_0xdff2('0x2f')]){_0x3744f7(_0x120ac7[_0xdff2('0x2f')]);return;}return db[_0xdff2('0x53')][_0xdff2('0x54')]({'attributes':[_0xdff2('0x55')],'where':{'id':_0x120ac7[_0xdff2('0x30')]},'raw':!![]})['then'](function(_0x4e2726){if(!_0x4e2726)throw new db[(_0xdff2('0x31'))][(_0xdff2('0x32'))](_0xdff2('0x56'));var _0x4d058e=Mustache[_0xdff2('0x57')](_0x4e2726[_0xdff2('0x55')],_0x120ac7[_0xdff2('0x34')]);_0x3744f7(_0x4d058e);})['catch'](function(_0x4c9ae1){_0x34c3f0(_0x4c9ae1);});});}function getRecipients(_0x37c03e){return new BPromise(function(_0x3b6ba0,_0xc8d74e){var _0x5282b7=[];var _0x4b2a9=[];_0x37c03e[_0xdff2('0x4e')](function(_0x5e64b8){var _0x1c4992=_[_0xdff2('0x58')](_0x5e64b8[_0xdff2('0x59')][_0xdff2('0x41')]());if(_0x1c4992==='User'){_0x5282b7=_['union'](_0x5282b7,_0x5e64b8['ids']);}else{if(_['includes'](_0x1c4992,_0xdff2('0x5a')))_0x1c4992=_0x1c4992[_0xdff2('0x5b')](_0xdff2('0x5a'),_0xdff2('0x5c'));_0x5e64b8[_0xdff2('0x5d')][_0xdff2('0x4e')](function(_0x542cf6){_0x4b2a9[_0xdff2('0x5e')](getAgents(_0x1c4992,_0x542cf6));});}});return BPromise[_0xdff2('0x5f')](_0x4b2a9)[_0xdff2('0x25')](function(_0x2884cf){_0x5282b7=_[_0xdff2('0x60')](_0x5282b7,_[_0xdff2('0x61')](_0x2884cf));_0x3b6ba0(_0x5282b7);})[_0xdff2('0x52')](function(_0xa63476){_0xc8d74e(_0xa63476);});});}function getAgents(_0x238169,_0x22e493){return new BPromise(function(_0x53a27b,_0x2ef94c){return db[_0x238169][_0xdff2('0x54')]({'where':{'id':_0x22e493}})[_0xdff2('0x25')](function(_0x242899){return _0x242899['getAgents']({'attributes':['id'],'raw':!![]})[_0xdff2('0x25')](function(_0x5e9980){var _0x1c1c16=_[_0xdff2('0x62')](_0x5e9980,'id');_0x53a27b(_0x1c1c16);});})['catch'](function(_0x7b5c33){_0x2ef94c(_0x7b5c33);});});} \ No newline at end of file diff --git a/server/api/userNotification/userNotification.events.js b/server/api/userNotification/userNotification.events.js new file mode 100644 index 0000000..02aceea --- /dev/null +++ b/server/api/userNotification/userNotification.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0077=['hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification','setMaxListeners','update','emit'];(function(_0x1df4be,_0x5965c1){var _0x218122=function(_0x1af9ad){while(--_0x1af9ad){_0x1df4be['push'](_0x1df4be['shift']());}};_0x218122(++_0x5965c1);}(_0x0077,0x1e9));var _0x7007=function(_0x6bfd74,_0x558572){_0x6bfd74=_0x6bfd74-0x0;var _0x28acb3=_0x0077[_0x6bfd74];return _0x28acb3;};'use strict';var EventEmitter=require(_0x7007('0x0'));var UserNotification=require(_0x7007('0x1'))['db'][_0x7007('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x7007('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7007('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1c7f3f){return function(_0x16a076,_0x25cf07,_0x46d172){UserNotificationEvents[_0x7007('0x5')](_0x1c7f3f+':'+_0x16a076['id'],_0x16a076);UserNotificationEvents[_0x7007('0x5')](_0x1c7f3f,_0x16a076);_0x46d172(null);};}for(var e in events){if(events[_0x7007('0x6')](e)){var event=events[e];UserNotification[_0x7007('0x7')](e,emitEvent(event));}}module[_0x7007('0x8')]=UserNotificationEvents; \ No newline at end of file diff --git a/server/api/userNotification/userNotification.model.js b/server/api/userNotification/userNotification.model.js new file mode 100644 index 0000000..a07b281 --- /dev/null +++ b/server/api/userNotification/userNotification.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9bd8=['bluebird','request-promise','path','rimraf','./userNotification.attributes','define','UserNotification','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api'];(function(_0x12e7c6,_0x4273e8){var _0x25be4d=function(_0x21e55e){while(--_0x21e55e){_0x12e7c6['push'](_0x12e7c6['shift']());}};_0x25be4d(++_0x4273e8);}(_0x9bd8,0x82));var _0x89bd=function(_0x29de96,_0x42cc38){_0x29de96=_0x29de96-0x0;var _0x1b9352=_0x9bd8[_0x29de96];return _0x1b9352;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x89bd('0x0'))(_0x89bd('0x1'));var moment=require('moment');var BPromise=require(_0x89bd('0x2'));var rp=require(_0x89bd('0x3'));var fs=require('fs');var path=require(_0x89bd('0x4'));var rimraf=require(_0x89bd('0x5'));var config=require('../../config/environment');var attributes=require(_0x89bd('0x6'));module['exports']=function(_0x506768,_0x186885){return _0x506768[_0x89bd('0x7')](_0x89bd('0x8'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x89bd('0x9'),'collate':_0x89bd('0xa')});}; \ No newline at end of file diff --git a/server/api/userNotification/userNotification.rpc.js b/server/api/userNotification/userNotification.rpc.js new file mode 100644 index 0000000..4fd5f94 --- /dev/null +++ b/server/api/userNotification/userNotification.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x527b=['then','info','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','code','error','UserNotification,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','request'];(function(_0x397680,_0x4eb586){var _0x3fd9a9=function(_0x2f3718){while(--_0x2f3718){_0x397680['push'](_0x397680['shift']());}};_0x3fd9a9(++_0x4eb586);}(_0x527b,0xec));var _0xb527=function(_0x3e91a9,_0x53c466){_0x3e91a9=_0x3e91a9-0x0;var _0x25c9ad=_0x527b[_0x3e91a9];return _0x25c9ad;};'use strict';var _=require(_0xb527('0x0'));var util=require(_0xb527('0x1'));var moment=require(_0xb527('0x2'));var BPromise=require(_0xb527('0x3'));var rs=require(_0xb527('0x4'));var fs=require('fs');var Redis=require(_0xb527('0x5'));var db=require(_0xb527('0x6'))['db'];var utils=require(_0xb527('0x7'));var logger=require(_0xb527('0x8'))('rpc');var config=require(_0xb527('0x9'));var jayson=require(_0xb527('0xa'));var client=jayson[_0xb527('0xb')][_0xb527('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0xb527('0xd')],{'host':_0xb527('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb527('0xd')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x92196,_0xe383a3,_0x5ddce4){return new BPromise(function(_0x11adac,_0x114b7f){return client[_0xb527('0xf')](_0x92196,_0x5ddce4)[_0xb527('0x10')](function(_0x19e807){logger[_0xb527('0x11')]('UserNotification,\x20%s,\x20%s',_0xe383a3,'request\x20sent');logger[_0xb527('0x12')](_0xb527('0x13'),_0xe383a3,'request\x20sent',JSON[_0xb527('0x14')](_0x19e807));if(_0x19e807['error']){if(_0x19e807['error'][_0xb527('0x15')]===0x1f4){logger[_0xb527('0x16')](_0xb527('0x17'),_0xe383a3,_0x19e807['error'][_0xb527('0x18')]);return _0x114b7f(_0x19e807[_0xb527('0x16')][_0xb527('0x18')]);}logger[_0xb527('0x16')](_0xb527('0x17'),_0xe383a3,_0x19e807['error']['message']);return _0x11adac(_0x19e807[_0xb527('0x16')][_0xb527('0x18')]);}else{logger['info'](_0xb527('0x17'),_0xe383a3,_0xb527('0x19'));_0x11adac(_0x19e807[_0xb527('0x1a')][_0xb527('0x18')]);}})[_0xb527('0x1b')](function(_0x50d355){logger[_0xb527('0x16')](_0xb527('0x17'),_0xe383a3,_0x50d355);_0x114b7f(_0x50d355);});});} \ No newline at end of file diff --git a/server/api/userNotification/userNotification.socket.js b/server/api/userNotification/userNotification.socket.js new file mode 100644 index 0000000..ad27b6c --- /dev/null +++ b/server/api/userNotification/userNotification.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e1a=['update','emit','removeListener','register','length','./userNotification.events','save','remove'];(function(_0x44fc85,_0x1e97b9){var _0x3b5be3=function(_0x500539){while(--_0x500539){_0x44fc85['push'](_0x44fc85['shift']());}};_0x3b5be3(++_0x1e97b9);}(_0x4e1a,0x11d));var _0xa4e1=function(_0x3fbde2,_0x4296b4){_0x3fbde2=_0x3fbde2-0x0;var _0x5721e6=_0x4e1a[_0x3fbde2];return _0x5721e6;};'use strict';var UserNotificationEvents=require(_0xa4e1('0x0'));var events=[_0xa4e1('0x1'),_0xa4e1('0x2'),_0xa4e1('0x3')];function createListener(_0x3162eb,_0x535d3d){return function(_0x5dbca4){_0x535d3d[_0xa4e1('0x4')](_0x3162eb,_0x5dbca4);};}function removeListener(_0x73540b,_0x26cf7b){return function(){UserNotificationEvents[_0xa4e1('0x5')](_0x73540b,_0x26cf7b);};}exports[_0xa4e1('0x6')]=function(_0x27e819){for(var _0x33e2ef=0x0,_0x55c1e6=events[_0xa4e1('0x7')];_0x33e2ef<_0x55c1e6;_0x33e2ef++){var _0x803dd7=events[_0x33e2ef];var _0x204173=createListener('userNotification:'+_0x803dd7,_0x27e819);UserNotificationEvents['on'](_0x803dd7,_0x204173);}}; \ No newline at end of file diff --git a/server/api/userOpenchannelQueue/index.js b/server/api/userOpenchannelQueue/index.js new file mode 100644 index 0000000..c6cf2a7 --- /dev/null +++ b/server/api/userOpenchannelQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x1a3e23,_0xce45e){var _0x5ee0d8=function(_0x4b932f){while(--_0x4b932f){_0x1a3e23['push'](_0x1a3e23['shift']());}};_0x5ee0d8(++_0xce45e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'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 diff --git a/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js new file mode 100644 index 0000000..081b522 --- /dev/null +++ b/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcc7a=['sequelize'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xcc7a,0x1e0));var _0xacc7=function(_0x2d982d,_0x121028){_0x2d982d=_0x2d982d-0x0;var _0x4f36b0=_0xcc7a[_0x2d982d];return _0x4f36b0;};'use strict';var Sequelize=require(_0xacc7('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js new file mode 100644 index 0000000..e5575ac --- /dev/null +++ b/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdc53=['UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','api','moment','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdc53,0x8e));var _0x3dc5=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0xdc53[_0x288f5e];return _0x476cc9;};'use strict';var _=require(_0x3dc5('0x0'));var util=require(_0x3dc5('0x1'));var logger=require('../../config/logger')(_0x3dc5('0x2'));var moment=require(_0x3dc5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3dc5('0x4'));var config=require(_0x3dc5('0x5'));var attributes=require(_0x3dc5('0x6'));module['exports']=function(_0x3c25a6,_0xa40be8){return _0x3c25a6[_0x3dc5('0x7')](_0x3dc5('0x8'),attributes,{'tableName':_0x3dc5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js new file mode 100644 index 0000000..e822b38 --- /dev/null +++ b/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x66ba=['rpc','../../config/environment','jayson/promise','client','http','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils'];(function(_0x29570a,_0x124a5b){var _0x7be1a2=function(_0x44faaf){while(--_0x44faaf){_0x29570a['push'](_0x29570a['shift']());}};_0x7be1a2(++_0x124a5b);}(_0x66ba,0x1c8));var _0xa66b=function(_0x9641f8,_0x5c2372){_0x9641f8=_0x9641f8-0x0;var _0x3881b4=_0x66ba[_0x9641f8];return _0x3881b4;};'use strict';var _=require(_0xa66b('0x0'));var util=require(_0xa66b('0x1'));var moment=require(_0xa66b('0x2'));var BPromise=require(_0xa66b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa66b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa66b('0x5'));var logger=require('../../config/logger')(_0xa66b('0x6'));var config=require(_0xa66b('0x7'));var jayson=require(_0xa66b('0x8'));var client=jayson[_0xa66b('0x9')][_0xa66b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c40b6,_0x56c39f,_0xe1b781){return new BPromise(function(_0x128c94,_0x48d25b){return client['request'](_0x4c40b6,_0xe1b781)[_0xa66b('0xb')](function(_0x24a72a){logger[_0xa66b('0xc')](_0xa66b('0xd'),_0x56c39f,'request\x20sent');logger[_0xa66b('0xe')](_0xa66b('0xf'),_0x56c39f,_0xa66b('0x10'),JSON['stringify'](_0x24a72a));if(_0x24a72a['error']){if(_0x24a72a['error']['code']===0x1f4){logger[_0xa66b('0x11')](_0xa66b('0xd'),_0x56c39f,_0x24a72a[_0xa66b('0x11')][_0xa66b('0x12')]);return _0x48d25b(_0x24a72a[_0xa66b('0x11')][_0xa66b('0x12')]);}logger[_0xa66b('0x11')](_0xa66b('0xd'),_0x56c39f,_0x24a72a[_0xa66b('0x11')][_0xa66b('0x12')]);return _0x128c94(_0x24a72a['error'][_0xa66b('0x12')]);}else{logger[_0xa66b('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x56c39f,_0xa66b('0x10'));_0x128c94(_0x24a72a[_0xa66b('0x13')]['message']);}})[_0xa66b('0x14')](function(_0x24b968){logger['error'](_0xa66b('0xd'),_0x56c39f,_0x24b968);_0x48d25b(_0x24b968);});});} \ No newline at end of file diff --git a/server/api/userProfile/index.js b/server/api/userProfile/index.js new file mode 100644 index 0000000..f653d2f --- /dev/null +++ b/server/api/userProfile/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4dd8=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/resources','post','create','/:id/clone','clone','/:id/sections','addSections','addResources','put','delete','destroy','removeResources','exports','multer','path','connect-timeout'];(function(_0xb2acdf,_0x42b3fa){var _0x4ba468=function(_0x2bf136){while(--_0x2bf136){_0xb2acdf['push'](_0xb2acdf['shift']());}};_0x4ba468(++_0x42b3fa);}(_0x4dd8,0x71));var _0x84dd=function(_0x2a90d0,_0x48b69c){_0x2a90d0=_0x2a90d0-0x0;var _0x59b931=_0x4dd8[_0x2a90d0];return _0x59b931;};'use strict';var multer=require(_0x84dd('0x0'));var util=require('util');var path=require(_0x84dd('0x1'));var timeout=require(_0x84dd('0x2'));var express=require(_0x84dd('0x3'));var router=express[_0x84dd('0x4')]();var fs_extra=require(_0x84dd('0x5'));var auth=require(_0x84dd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x84dd('0x7'));var controller=require(_0x84dd('0x8'));router[_0x84dd('0x9')]('/',auth[_0x84dd('0xa')](),controller[_0x84dd('0xb')]);router[_0x84dd('0x9')](_0x84dd('0xc'),auth['isAuthenticated'](),controller[_0x84dd('0xd')]);router[_0x84dd('0x9')](_0x84dd('0xe'),auth[_0x84dd('0xa')](),controller[_0x84dd('0xf')]);router[_0x84dd('0x9')]('/:id/sections',auth['isAuthenticated'](),controller['getSections']);router['get'](_0x84dd('0x10'),auth[_0x84dd('0xa')](),controller['getResources']);router[_0x84dd('0x11')]('/',auth[_0x84dd('0xa')](),controller[_0x84dd('0x12')]);router[_0x84dd('0x11')](_0x84dd('0x13'),auth['isAuthenticated'](),controller[_0x84dd('0x14')]);router[_0x84dd('0x11')](_0x84dd('0x15'),auth['isAuthenticated'](),controller[_0x84dd('0x16')]);router[_0x84dd('0x11')]('/:id/resources',auth[_0x84dd('0xa')](),controller[_0x84dd('0x17')]);router[_0x84dd('0x18')]('/:id',auth[_0x84dd('0xa')](),controller['update']);router[_0x84dd('0x19')](_0x84dd('0xe'),auth['isAuthenticated'](),controller[_0x84dd('0x1a')]);router[_0x84dd('0x19')](_0x84dd('0x15'),auth[_0x84dd('0xa')](),controller['removeSections']);router['delete'](_0x84dd('0x10'),auth[_0x84dd('0xa')](),controller[_0x84dd('0x1b')]);module[_0x84dd('0x1c')]=router; \ No newline at end of file diff --git a/server/api/userProfile/userProfile.attributes.js b/server/api/userProfile/userProfile.attributes.js new file mode 100644 index 0000000..dc038f9 --- /dev/null +++ b/server/api/userProfile/userProfile.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa06f=['BOOLEAN','exports','STRING','setDataValue','crudPermissions','join','getDataValue','split'];(function(_0x488069,_0x55c204){var _0x592336=function(_0x127efb){while(--_0x127efb){_0x488069['push'](_0x488069['shift']());}};_0x592336(++_0x55c204);}(_0xa06f,0x79));var _0xfa06=function(_0x28c585,_0x1b2cdc){_0x28c585=_0x28c585-0x0;var _0x1b9a9b=_0xa06f[_0x28c585];return _0x1b9a9b;};'use strict';var Sequelize=require('sequelize');module[_0xfa06('0x0')]={'name':{'type':Sequelize[_0xfa06('0x1')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xfa06('0x1')],'set':function(_0x1b70a2){this[_0xfa06('0x2')](_0xfa06('0x3'),_0x1b70a2?_0x1b70a2[_0xfa06('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0xfa06('0x3'))?this[_0xfa06('0x5')]('crudPermissions')[_0xfa06('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xfa06('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xfa06('0x7')],'defaultValue':!![]}}; \ No newline at end of file diff --git a/server/api/userProfile/userProfile.controller.js b/server/api/userProfile/userProfile.controller.js new file mode 100644 index 0000000..d4a547d --- /dev/null +++ b/server/api/userProfile/userProfile.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7861=['removeResources','getResources','Missing\x20section\x20parameter','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','zip-dir','fast-json-patch','moment','mustache','util','path','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','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','UserProfile','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','sort','where','filters','pick','filter','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','include','merge','body','clone','find','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','autoAssociation','UserProfileResource','sectionId','Resources','create','describe','addSections','userProfileId','each','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','concat','push','findOne','forEach','resourceId','Plugin','bulkCreate'];(function(_0x47a5ba,_0x1b8463){var _0x2a3e43=function(_0x45e858){while(--_0x45e858){_0x47a5ba['push'](_0x47a5ba['shift']());}};_0x2a3e43(++_0x1b8463);}(_0x7861,0xeb));var _0x1786=function(_0x364bc0,_0x90e05b){_0x364bc0=_0x364bc0-0x0;var _0x31f133=_0x7861[_0x364bc0];return _0x31f133;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1786('0x0'));var jsonpatch=require(_0x1786('0x1'));var rp=require('request-promise');var moment=require(_0x1786('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x1786('0x3'));var util=require(_0x1786('0x4'));var path=require(_0x1786('0x5'));var sox=require(_0x1786('0x6'));var csv=require('to-csv');var ejs=require(_0x1786('0x7'));var fs=require('fs');var fs_extra=require(_0x1786('0x8'));var _=require(_0x1786('0x9'));var squel=require(_0x1786('0xa'));var crypto=require(_0x1786('0xb'));var jsforce=require(_0x1786('0xc'));var deskjs=require(_0x1786('0xd'));var toCsv=require(_0x1786('0xe'));var querystring=require(_0x1786('0xf'));var Papa=require(_0x1786('0x10'));var Redis=require('ioredis');var authService=require(_0x1786('0x11'));var qs=require(_0x1786('0x12'));var as=require(_0x1786('0x13'));var hardwareService=require(_0x1786('0x14'));var logger=require('../../config/logger')(_0x1786('0x15'));var utils=require('../../config/utils');var config=require(_0x1786('0x16'));var licenseUtil=require(_0x1786('0x17'));var db=require(_0x1786('0x18'))['db'];config[_0x1786('0x19')]=_[_0x1786('0x1a')](config[_0x1786('0x19')],{'host':_0x1786('0x1b'),'port':0x18eb});var socket=require(_0x1786('0x1c'))(new Redis(config[_0x1786('0x19')]));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0x29645c,_0x421fcd){_0x421fcd=_0x421fcd||0xcc;return function(_0x1a14c1){if(_0x1a14c1){return _0x29645c[_0x1786('0x1d')](_0x421fcd);}return _0x29645c['status'](_0x421fcd)[_0x1786('0x1e')]();};}function respondWithResult(_0x448352,_0x4da861){_0x4da861=_0x4da861||0xc8;return function(_0x178128){if(_0x178128){return _0x448352[_0x1786('0x1f')](_0x4da861)['json'](_0x178128);}};}function respondWithFilteredResult(_0x476b3b,_0x33eca3){return function(_0x10a634){if(_0x10a634){var _0x5a2179=typeof _0x33eca3[_0x1786('0x20')]===_0x1786('0x21')&&typeof _0x33eca3[_0x1786('0x22')]===_0x1786('0x21');var _0x855925=_0x10a634[_0x1786('0x23')];var _0x39ae2a=_0x5a2179?0x0:_0x33eca3[_0x1786('0x20')];var _0x1bd0c1=_0x5a2179?_0x10a634[_0x1786('0x23')]:_0x33eca3[_0x1786('0x20')]+_0x33eca3[_0x1786('0x22')];var _0x5f1640;if(_0x1bd0c1>=_0x855925){_0x1bd0c1=_0x855925;_0x5f1640=0xc8;}else{_0x5f1640=0xce;}_0x476b3b[_0x1786('0x1f')](_0x5f1640);return _0x476b3b[_0x1786('0x24')](_0x1786('0x25'),_0x39ae2a+'-'+_0x1bd0c1+'/'+_0x855925)['json'](_0x10a634);}return null;};}function patchUpdates(_0x5749ee){return function(_0xdb2ae9){try{jsonpatch['apply'](_0xdb2ae9,_0x5749ee,!![]);}catch(_0x2610ba){return BPromise[_0x1786('0x26')](_0x2610ba);}return _0xdb2ae9[_0x1786('0x27')]();};}function saveUpdates(_0x39892b,_0x47a565){return function(_0xf539fe){if(_0xf539fe){return _0xf539fe[_0x1786('0x28')](_0x39892b)[_0x1786('0x29')](function(_0x7278dd){return _0x7278dd;});}return null;};}function removeEntity(_0x2098c7,_0x50688a){return function(_0x1f7850){if(_0x1f7850){return _0x1f7850[_0x1786('0x2a')]()[_0x1786('0x29')](function(){_0x2098c7[_0x1786('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b3b01,_0x5f33dd){return function(_0x430932){if(!_0x430932){_0x4b3b01[_0x1786('0x1d')](0x194);}return _0x430932;};}function handleError(_0x2dbc31,_0x1d0397){_0x1d0397=_0x1d0397||0x1f4;return function(_0x1d5372){logger[_0x1786('0x2b')](_0x1d5372[_0x1786('0x2c')]);if(_0x1d5372['name']){delete _0x1d5372[_0x1786('0x2d')];}_0x2dbc31[_0x1786('0x1f')](_0x1d0397)[_0x1786('0x2e')](_0x1d5372);};}exports[_0x1786('0x2f')]=function(_0x2ad3a4,_0x12308c){var _0x582312={},_0x3416b6={},_0x500470={'count':0x0,'rows':[]};var _0x20bc93=_[_0x1786('0x30')](db[_0x1786('0x31')]['rawAttributes'],function(_0x10dcf9){return{'name':_0x10dcf9['fieldName'],'type':_0x10dcf9['type'][_0x1786('0x32')]};});_0x3416b6['model']=_[_0x1786('0x30')](_0x20bc93,_0x1786('0x2d'));_0x3416b6[_0x1786('0x33')]=_[_0x1786('0x34')](_0x2ad3a4[_0x1786('0x33')]);_0x3416b6['filters']=_[_0x1786('0x35')](_0x3416b6[_0x1786('0x36')],_0x3416b6['query']);_0x582312[_0x1786('0x37')]=_[_0x1786('0x35')](_0x3416b6[_0x1786('0x36')],qs[_0x1786('0x38')](_0x2ad3a4['query']['fields']));_0x582312[_0x1786('0x37')]=_0x582312['attributes']['length']?_0x582312['attributes']:_0x3416b6['model'];if(!_0x2ad3a4[_0x1786('0x33')][_0x1786('0x39')]('nolimit')){_0x582312[_0x1786('0x22')]=qs[_0x1786('0x22')](_0x2ad3a4[_0x1786('0x33')][_0x1786('0x22')]);_0x582312[_0x1786('0x20')]=qs[_0x1786('0x20')](_0x2ad3a4[_0x1786('0x33')]['offset']);}_0x582312['order']=qs[_0x1786('0x3a')](_0x2ad3a4[_0x1786('0x33')]['sort']);_0x582312[_0x1786('0x3b')]=qs[_0x1786('0x3c')](_[_0x1786('0x3d')](_0x2ad3a4['query'],_0x3416b6[_0x1786('0x3c')]),_0x20bc93);if(_0x2ad3a4['query'][_0x1786('0x3e')]){_0x582312[_0x1786('0x3b')]=_['merge'](_0x582312[_0x1786('0x3b')],{'$or':_[_0x1786('0x30')](_0x20bc93,function(_0x202c79){if(_0x202c79[_0x1786('0x3f')]!==_0x1786('0x40')){var _0x27770c={};_0x27770c[_0x202c79[_0x1786('0x2d')]]={'$like':'%'+_0x2ad3a4['query'][_0x1786('0x3e')]+'%'};return _0x27770c;}})});}_0x582312=_['merge']({},_0x582312,_0x2ad3a4[_0x1786('0x41')]);var _0x22a6ec={'where':_0x582312[_0x1786('0x3b')]};return db[_0x1786('0x31')][_0x1786('0x23')](_0x22a6ec)[_0x1786('0x29')](function(_0x3f8e77){_0x500470[_0x1786('0x23')]=_0x3f8e77;if(_0x2ad3a4[_0x1786('0x33')][_0x1786('0x42')]){_0x582312['include']=[{'all':!![]}];}return db[_0x1786('0x31')][_0x1786('0x43')](_0x582312);})[_0x1786('0x29')](function(_0x1c3185){_0x500470[_0x1786('0x44')]=_0x1c3185;return _0x500470;})[_0x1786('0x29')](respondWithFilteredResult(_0x12308c,_0x582312))[_0x1786('0x45')](handleError(_0x12308c,null));};exports[_0x1786('0x46')]=function(_0x2aea47,_0x15d6c2){var _0x3f58a4={'raw':![],'where':{'id':_0x2aea47[_0x1786('0x47')]['id']}},_0x493a48={};_0x493a48['model']=_['keys'](db[_0x1786('0x31')][_0x1786('0x48')]);_0x493a48['query']=_[_0x1786('0x34')](_0x2aea47[_0x1786('0x33')]);_0x493a48['filters']=_[_0x1786('0x35')](_0x493a48[_0x1786('0x36')],_0x493a48[_0x1786('0x33')]);_0x3f58a4[_0x1786('0x37')]=_[_0x1786('0x35')](_0x493a48['model'],qs[_0x1786('0x38')](_0x2aea47[_0x1786('0x33')][_0x1786('0x38')]));_0x3f58a4[_0x1786('0x37')]=_0x3f58a4[_0x1786('0x37')][_0x1786('0x49')]?_0x3f58a4[_0x1786('0x37')]:_0x493a48[_0x1786('0x36')];if(_0x2aea47[_0x1786('0x33')][_0x1786('0x42')]){_0x3f58a4[_0x1786('0x4a')]=[{'all':!![]}];}_0x3f58a4=_[_0x1786('0x4b')]({},_0x3f58a4,_0x2aea47['options']);return db[_0x1786('0x31')]['find'](_0x3f58a4)[_0x1786('0x29')](handleEntityNotFound(_0x15d6c2,null))[_0x1786('0x29')](respondWithResult(_0x15d6c2,null))[_0x1786('0x45')](handleError(_0x15d6c2,null));};exports['create']=function(_0x48fd52,_0x16e881){return db['UserProfile']['create'](_0x48fd52[_0x1786('0x4c')],{})[_0x1786('0x29')](respondWithResult(_0x16e881,0xc9))[_0x1786('0x45')](handleError(_0x16e881,null));};exports[_0x1786('0x4d')]=function(_0x15f1fa,_0x50ff9f){var _0x1f8e35={'where':{'id':_0x15f1fa['params']['id']}},_0x3ff112={};_0x3ff112['model']=_[_0x1786('0x34')](db[_0x1786('0x31')][_0x1786('0x48')]);_0x1f8e35['attributes']=_[_0x1786('0x35')](_0x3ff112[_0x1786('0x36')],qs[_0x1786('0x38')](_0x15f1fa[_0x1786('0x33')][_0x1786('0x38')]));_0x1f8e35[_0x1786('0x37')]=_0x1f8e35[_0x1786('0x37')][_0x1786('0x49')]?_0x1f8e35[_0x1786('0x37')]:_0x3ff112[_0x1786('0x36')];if(_0x15f1fa[_0x1786('0x33')][_0x1786('0x42')]){_0x1f8e35[_0x1786('0x4a')]=[{'all':!![]}];}_0x1f8e35=_[_0x1786('0x4b')]({},_0x1f8e35,_0x15f1fa[_0x1786('0x41')]);return db[_0x1786('0x31')][_0x1786('0x4e')](_0x1f8e35)[_0x1786('0x29')](handleEntityNotFound(_0x50ff9f,null))[_0x1786('0x29')](function(_0x52462f){if(_0x52462f){var _0x4a21a8=_0x52462f[_0x1786('0x4f')]({'plain':!![]});_0x4a21a8=qs[_0x1786('0x50')](_0x4a21a8,['id',_0x1786('0x51'),_0x1786('0x52'),_0x1786('0x53')]);_0x15f1fa[_0x1786('0x4c')]=_[_0x1786('0x50')](_0x15f1fa[_0x1786('0x4c')],['id',_0x1786('0x51'),_0x1786('0x52')]);return db[_0x1786('0x54')][_0x1786('0x55')](function(_0x1813d2){return db[_0x1786('0x31')]['create'](_[_0x1786('0x4b')](_0x4a21a8,_0x15f1fa[_0x1786('0x4c')]),{'include':_0x15f1fa[_0x1786('0x33')][_0x1786('0x42')]?[{'all':!![]}]:undefined,'transaction':_0x1813d2})[_0x1786('0x29')](function(_0x3e3b22){var _0x324492=_0x3e3b22[_0x1786('0x4f')]({'plain':!![]});return db[_0x1786('0x56')]['findAll']({'where':{'userProfileId':_0x15f1fa['params']['id']},'raw':!![]})['then'](function(_0x6f1155){if(_0x6f1155){return BPromise['each'](_0x6f1155,function(_0x46475f){return new BPromise(function(_0x97e8a4,_0x357152){if(_0x46475f[_0x1786('0x57')]===null||_0x46475f[_0x1786('0x57')]===0x1)_0x97e8a4(null);return db[_0x1786('0x58')][_0x1786('0x43')]({'where':{'sectionId':_0x46475f['id']},'raw':!![]})[_0x1786('0x29')](function(_0x2c110c){var _0x301537=_[_0x1786('0x30')](_0x2c110c,function(_0x2d4180){return qs[_0x1786('0x50')](_0x2d4180,['id','createdAt',_0x1786('0x52'),_0x1786('0x59')]);});_0x97e8a4(_0x301537);})[_0x1786('0x45')](function(_0x264906){_0x357152(_0x264906);});})['then'](function(_0x28f8f5){var _0x29864f=qs[_0x1786('0x50')](_0x46475f,['id','createdAt',_0x1786('0x52')]);_0x29864f['userProfileId']=_0x324492['id'];if(_0x28f8f5)_0x29864f[_0x1786('0x5a')]=_0x28f8f5;return _0x29864f;})[_0x1786('0x29')](function(_0xc62704){return db['UserProfileSection'][_0x1786('0x5b')](_0xc62704,{'include':[{'model':db['UserProfileResource'],'as':_0x1786('0x5a')}],'raw':!![],'transaction':_0x1813d2});});})[_0x1786('0x29')](function(){return _0x324492;});}});});});}})[_0x1786('0x29')](respondWithResult(_0x50ff9f,0xc9))['catch'](handleError(_0x50ff9f,null));};exports['update']=function(_0x5e1b57,_0x11756a){if(_0x5e1b57[_0x1786('0x4c')]['id']){delete _0x5e1b57[_0x1786('0x4c')]['id'];}return db[_0x1786('0x31')][_0x1786('0x4e')]({'where':{'id':_0x5e1b57[_0x1786('0x47')]['id']}})[_0x1786('0x29')](handleEntityNotFound(_0x11756a,null))[_0x1786('0x29')](saveUpdates(_0x5e1b57[_0x1786('0x4c')],null))[_0x1786('0x29')](respondWithResult(_0x11756a,null))[_0x1786('0x45')](handleError(_0x11756a,null));};exports[_0x1786('0x2a')]=function(_0x59fd3d,_0xd249e7){return db[_0x1786('0x31')]['find']({'where':{'id':_0x59fd3d[_0x1786('0x47')]['id']}})[_0x1786('0x29')](handleEntityNotFound(_0xd249e7,null))[_0x1786('0x29')](removeEntity(_0xd249e7,null))[_0x1786('0x45')](handleError(_0xd249e7,null));};exports[_0x1786('0x5c')]=function(_0x28ff57,_0x3e725e){return db['UserProfile']['describe']()['then'](respondWithResult(_0x3e725e,null))[_0x1786('0x45')](handleError(_0x3e725e,null));};exports[_0x1786('0x5d')]=function(_0x187f9c,_0x125263){var _0x3a5045=_0x187f9c['body'];return db[_0x1786('0x31')]['find']({'where':{'id':_0x187f9c[_0x1786('0x47')]['id']}})[_0x1786('0x29')](handleEntityNotFound(_0x125263,null))[_0x1786('0x29')](function(_0x2db3e1){if(_0x2db3e1){return db[_0x1786('0x54')]['transaction'](function(_0x280847){return db[_0x1786('0x56')][_0x1786('0x2a')]({'where':{'userProfileId':_0x187f9c[_0x1786('0x47')]['id'],'sectionId':_['map'](_0x3a5045,function(_0x891d78){return _0x891d78[_0x1786('0x59')];})},'transaction':_0x280847})[_0x1786('0x29')](function(){var _0x2b0f4e=_['map'](_0x3a5045,function(_0x138471){_0x138471[_0x1786('0x5e')]=_0x187f9c[_0x1786('0x47')]['id'];return _0x138471;});var _0x458863=[];return BPromise[_0x1786('0x5f')](_0x2b0f4e,function(_0x5f2a8b){return db['UserProfileSection'][_0x1786('0x5b')](_0x5f2a8b,{'include':[{'model':db[_0x1786('0x58')],'as':_0x1786('0x5a')}],'raw':!![],'transaction':_0x280847})['then'](function(_0x1547c0){_0x458863['push'](_0x1547c0['get']({'plain':!![]}));});})['then'](function(){return _0x458863;});});});}})['then'](function(_0x1966b8){return _0x1966b8;})[_0x1786('0x29')](respondWithResult(_0x125263,null))['catch'](handleError(_0x125263,null));};exports[_0x1786('0x60')]=function(_0x18dc17,_0x21a81b){var _0x7615f9;return db[_0x1786('0x31')][_0x1786('0x4e')]({'where':{'id':_0x18dc17['params']['id']},'attributes':['id',_0x1786('0x2d')]})['then'](handleEntityNotFound(_0x21a81b,null))[_0x1786('0x29')](function(_0x4d2a1b){if(_0x4d2a1b){_0x7615f9=_0x4d2a1b;return db[_0x1786('0x56')][_0x1786('0x2a')]({'where':{'userProfileId':_0x18dc17[_0x1786('0x47')]['id'],'sectionId':_0x18dc17['query'][_0x1786('0x61')]}});}})[_0x1786('0x29')](function(){return _0x7615f9;})['then'](respondWithStatusCode(_0x21a81b,null))[_0x1786('0x45')](handleError(_0x21a81b,null));};exports[_0x1786('0x62')]=function(_0x131fe7,_0x5cf131){var _0x588a75=[];var _0x389303=[];return db[_0x1786('0x56')][_0x1786('0x43')]({'where':{'userProfileId':_0x131fe7[_0x1786('0x47')]['id']},'raw':!![]})[_0x1786('0x29')](function(_0x20c035){_0x588a75=_['filter'](_0x20c035,function(_0x40ca39){return _0x40ca39[_0x1786('0x63')]===0x1||_[_0x1786('0x64')]([0x3eb,0x709],_0x40ca39[_0x1786('0x59')]);});if(!_[_0x1786('0x65')](_0x588a75)){return _[_0x1786('0x30')](_0x588a75,function(_0x150c0d){return _0x150c0d[_0x1786('0x59')];});}else{return;}})['then'](function(_0x379fde){if(_0x379fde)_0x389303=_0x379fde;if(_[_0x1786('0x64')](_0x389303,0x64)){var _0x38b2b8=_[_0x1786('0x4e')](_0x588a75,{'sectionId':0x64});return hasDefaultDashboard(_0x38b2b8)[_0x1786('0x29')](function(_0x51e3c0){return _[_0x1786('0x30')](_0x588a75,function(_0x5194c5){if(_0x5194c5[_0x1786('0x59')]===0x64){_0x5194c5[_0x1786('0x66')]=_0x51e3c0;}return _0x5194c5;});});}else{return;}})[_0x1786('0x29')](function(_0x1da714){if(_0x1da714)_0x588a75=_0x1da714;if(_[_0x1786('0x64')](_0x389303,0x3eb)){var _0x58faff=_[_0x1786('0x4e')](_0x588a75,{'sectionId':0x3eb});return getCustomDashboards(_0x58faff)[_0x1786('0x29')](function(_0x3f779b){return _['map'](_0x588a75,function(_0x4c7aff){if(_0x58faff['enabled']){if(_0x4c7aff[_0x1786('0x59')]===0x3eb){_0x4c7aff[_0x1786('0x66')]=_0x3f779b;}}else{if(_0x4c7aff[_0x1786('0x59')]===0x64){if(!_0x4c7aff[_0x1786('0x66')]){_0x4c7aff[_0x1786('0x66')]=[];}_0x4c7aff['subsections']=_0x4c7aff['subsections'][_0x1786('0x67')](_0x3f779b);}}return _0x4c7aff;});});}else{return;}})[_0x1786('0x29')](function(_0x8a5875){if(_0x8a5875)_0x588a75=_0x8a5875;if(_['includes'](_0x389303,0x709)){var _0x400c58=_['find'](_0x588a75,{'sectionId':0x709});return getPlugins(_0x400c58)['then'](function(_0x1b9e7e){if(_0x400c58[_0x1786('0x63')]){return _[_0x1786('0x30')](_0x588a75,function(_0x5333a7){if(_0x5333a7[_0x1786('0x59')]===0x709){_0x5333a7[_0x1786('0x66')]=_0x1b9e7e;}return _0x5333a7;});}else{var _0x325123={'sectionId':0x76c,'enabled':0x1,'subsections':_0x1b9e7e};var _0x23bac0=_[_0x1786('0x30')](_0x588a75);_0x23bac0[_0x1786('0x68')](_0x325123);return _0x23bac0;}});}else{return;}})[_0x1786('0x29')](function(_0x30371c){if(_0x30371c)_0x588a75=_0x30371c;return _[_0x1786('0x3e')](_0x588a75,[_0x1786('0x63'),0x1]);})[_0x1786('0x29')](respondWithResult(_0x5cf131,null))[_0x1786('0x45')](handleError(_0x5cf131,null));};function hasDefaultDashboard(_0x259bb5){var _0x15d6a1=[0x65];return new BPromise(function(_0x5a9ab6,_0x58f02f){try{if(_0x259bb5[_0x1786('0x57')]){_0x5a9ab6(_0x15d6a1);}else{return db[_0x1786('0x58')][_0x1786('0x69')]({'where':{'sectionId':_0x259bb5['id']},'raw':!![]})[_0x1786('0x29')](function(_0x306037){_0x306037?_0x5a9ab6(_0x15d6a1):_0x5a9ab6();});}}catch(_0x47b80b){_0x58f02f(_0x47b80b);}});}function getCustomDashboards(_0x517c43){var _0xf0a8c1=[];return new BPromise(function(_0x1429e1,_0x3c7648){try{if(_0x517c43[_0x1786('0x57')]){return db['Dashboard']['findAll']({'raw':!![]})[_0x1786('0x29')](function(_0x4df0be){_0x4df0be['forEach'](function(_0xd1bd64){_0xf0a8c1[_0x1786('0x68')](_0xd1bd64['id']+0x1869f);});_0x1429e1(_0xf0a8c1);});}else{return db[_0x1786('0x58')][_0x1786('0x43')]({'where':{'sectionId':_0x517c43['id']},'raw':!![]})[_0x1786('0x29')](function(_0x56b0f6){_0x56b0f6[_0x1786('0x6a')](function(_0x45d48e){_0xf0a8c1[_0x1786('0x68')](_0x45d48e[_0x1786('0x6b')]+0x1869f);});_0x1429e1(_0xf0a8c1);});}}catch(_0xdeaecf){_0x3c7648(_0xdeaecf);}});}function getPlugins(_0x2697ed){var _0x402334=[];return new BPromise(function(_0x5215bb,_0x47de57){try{if(_0x2697ed[_0x1786('0x57')]){return db[_0x1786('0x6c')][_0x1786('0x43')]({'raw':!![]})[_0x1786('0x29')](function(_0x1332e5){_0x1332e5[_0x1786('0x6a')](function(_0x2a8f7e){_0x402334['push'](_0x2a8f7e['id']+0x15b38);});_0x5215bb(_0x402334);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x2697ed['id']},'raw':!![]})[_0x1786('0x29')](function(_0x23dd01){_0x23dd01['forEach'](function(_0x39fd37){_0x402334[_0x1786('0x68')](_0x39fd37[_0x1786('0x6b')]+0x15b38);});_0x5215bb(_0x402334);});}}catch(_0x24bf09){_0x47de57(_0x24bf09);}});}exports['addResources']=function(_0x4757e4,_0xdfb599){return db[_0x1786('0x31')][_0x1786('0x4e')]({'where':{'id':_0x4757e4[_0x1786('0x47')]['id']}})[_0x1786('0x29')](handleEntityNotFound(_0xdfb599,null))[_0x1786('0x29')](function(_0x159162){if(_0x159162){return db[_0x1786('0x54')][_0x1786('0x55')](function(_0x1e2ebe){return db[_0x1786('0x56')][_0x1786('0x43')]({'where':{'userProfileId':_0x4757e4[_0x1786('0x47')]['id']},'attributes':['id'],'raw':!![]})[_0x1786('0x29')](function(_0x576446){if(_0x576446){return db[_0x1786('0x56')]['destroy']({'where':{'userProfileId':_0x4757e4[_0x1786('0x47')]['id'],'id':_[_0x1786('0x30')](_0x576446,function(_0x26ab56){return _0x26ab56['id'];})},'transaction':_0x1e2ebe});}})[_0x1786('0x29')](function(_0x41610e){var _0x47c369=_[_0x1786('0x30')](_0x4757e4[_0x1786('0x4c')],function(_0x2b1249){_0x2b1249[_0x1786('0x5e')]=_0x4757e4[_0x1786('0x47')]['id'];return _0x2b1249;});return db[_0x1786('0x56')][_0x1786('0x6d')](_0x47c369,{'raw':!![],'transaction':_0x1e2ebe});})[_0x1786('0x29')](function(_0x8eea44){var _0x4c6ada=_[_0x1786('0x3e')](_[_0x1786('0x30')](_0x8eea44,function(_0xb2b032){return _0xb2b032[_0x1786('0x4f')]({'plain':!![]});}),{'includeAll':![]});if(_0x4c6ada){return db[_0x1786('0x56')][_0x1786('0x43')]({'where':{'userProfileId':_0x4757e4[_0x1786('0x47')]['id'],'sectionId':_[_0x1786('0x30')](_0x4c6ada,function(_0x10d157){return _0x10d157['sectionId'];})},'attributes':['id',_0x1786('0x59')],'raw':!![]})[_0x1786('0x29')](function(_0xd27636){var _0x547a07=_[_0x1786('0x30')](_0x4757e4[_0x1786('0x4c')],function(_0x88b46){_0x88b46[_0x1786('0x5e')]=_0x4757e4[_0x1786('0x47')]['id'];return _0x88b46;});return db[_0x1786('0x58')]['bulkCreate'](_0x547a07,{'raw':!![],'transaction':_0x1e2ebe});});}})[_0x1786('0x45')](handleError(_0xdfb599,null));});}})['then'](function(_0x4bef51){var _0x5e3c91=_[_0x1786('0x30')](_0x4bef51,function(_0x1bb572){return _0x1bb572[_0x1786('0x4f')]({'plain':!![]});});})[_0x1786('0x29')](respondWithResult(_0xdfb599,null))[_0x1786('0x45')](handleError(_0xdfb599,null));};exports[_0x1786('0x6e')]=function(_0x5bad38,_0x54069a,_0x4d9455){return db[_0x1786('0x31')][_0x1786('0x4e')]({'where':{'id':_0x5bad38[_0x1786('0x47')]['id']}})[_0x1786('0x29')](handleEntityNotFound(_0x54069a,null))[_0x1786('0x29')](function(_0x2dd64d){if(_0x2dd64d){return _0x2dd64d[_0x1786('0x6e')](_0x5bad38[_0x1786('0x33')]['ids']);}})['then'](respondWithStatusCode(_0x54069a,null))[_0x1786('0x45')](handleError(_0x54069a,null));};exports[_0x1786('0x6f')]=function(_0x240aaf,_0x206a2b){var _0x230c34={};if(!_0x240aaf[_0x1786('0x33')]['section'])throw new Error(_0x1786('0x70'));if(!_0x240aaf[_0x1786('0x33')][_0x1786('0x39')](_0x1786('0x71'))){_0x230c34[_0x1786('0x22')]=qs[_0x1786('0x22')](_0x240aaf[_0x1786('0x33')][_0x1786('0x22')]);_0x230c34['offset']=qs[_0x1786('0x20')](_0x240aaf[_0x1786('0x33')][_0x1786('0x20')]);}return db[_0x1786('0x31')][_0x1786('0x4e')]({'where':{'id':_0x240aaf[_0x1786('0x47')]['id']}})['then'](function(_0x19e70d){if(!_0x19e70d)throw new Error(_0x1786('0x72')+_0x240aaf[_0x1786('0x47')]['id']);return db['UserProfile'][_0x1786('0x6f')](_0x240aaf);})[_0x1786('0x29')](respondWithFilteredResult(_0x206a2b,_0x230c34))[_0x1786('0x45')](handleError(_0x206a2b,null));}; \ No newline at end of file diff --git a/server/api/userProfile/userProfile.events.js b/server/api/userProfile/userProfile.events.js new file mode 100644 index 0000000..995efbe --- /dev/null +++ b/server/api/userProfile/userProfile.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x01a6=['emit','hasOwnProperty','hook','events','UserProfile','setMaxListeners','save','update','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01a6,0x162));var _0x601a=function(_0x500841,_0x4f5d59){_0x500841=_0x500841-0x0;var _0x3766ba=_0x01a6[_0x500841];return _0x3766ba;};'use strict';var EventEmitter=require(_0x601a('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x601a('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x601a('0x2')](0x0);var events={'afterCreate':_0x601a('0x3'),'afterUpdate':_0x601a('0x4'),'afterDestroy':_0x601a('0x5')};function emitEvent(_0x526c19){return function(_0x2ac499,_0x4c666c,_0x245bd0){UserProfileEvents[_0x601a('0x6')](_0x526c19+':'+_0x2ac499['id'],_0x2ac499);UserProfileEvents[_0x601a('0x6')](_0x526c19,_0x2ac499);_0x245bd0(null);};}for(var e in events){if(events[_0x601a('0x7')](e)){var event=events[e];UserProfile[_0x601a('0x8')](e,emitEvent(event));}}module['exports']=UserProfileEvents; \ No newline at end of file diff --git a/server/api/userProfile/userProfile.model.js b/server/api/userProfile/userProfile.model.js new file mode 100644 index 0000000..50621e0 --- /dev/null +++ b/server/api/userProfile/userProfile.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0735=['WhatsappAccount','teams','voicequeues','queuecampaigns','users','agents','telephones','Users','admin','Telephones','zendeskaccounts','ZendeskAccount','salesforceaccounts','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','CannedAnswer','dispositions','customdashboards','Dashboard','intervals','Interval','scheduler','Schedule','sounds','Sound','tags','Tag','Template','Trigger','variables','extractedreports','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','query','toString','OpenTabs','define','UserProfile','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','find','all','union','ignore','autoAssociation','push','keys','intersection','fields','attributes','model','hasOwnProperty','limit','offset','sort','filters','pick','key','VIRTUAL','foreignKey','forEach','merge','includeAll','reportType','default','DefaultReports','custom','reportId','CustomReports','count','ids','customSorting','include','Tags','color','tag','ThroughTags','Agents','rows','dataValues','sms','mail','lodash','./userProfile.attributes','../../components/parsers/qs','exports','models','filter','field','value','findAll','then','associatedResources','map','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','SquareProjects','name','projects','JscriptyProject','parentSections','Lists','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','FaxAccount','inboundroutes','outboundroutes','VoiceExtension','contexts','voicemails','VoiceMail','voicerecordings','VoiceRecording','User','agent','role','telephone','VoiceQueues','queue','VoiceQueue','type','inbound','QueueCampaigns','outbound','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x0735,0x68));var _0x5073=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x0735[_0x24237f];return _0x48298e;};'use strict';var _=require(_0x5073('0x0'));var attributes=require(_0x5073('0x1'));var qs=require(_0x5073('0x2'));var squel=require('squel');module[_0x5073('0x3')]=function(_0x7ec072){var _0x4ee954=_0x7ec072[_0x5073('0x4')];function _0x2be9c3(_0x1336a5,_0xe818e4){return new Promise(function(_0xd2e42f,_0x4c6fa1){if(!_0xe818e4)return _0xd2e42f(null);var _0x1693c4=_0xe818e4[_0x5073('0x5')]?{[_0xe818e4[_0x5073('0x5')][_0x5073('0x6')]]:_0xe818e4[_0x5073('0x5')][_0x5073('0x7')]}:undefined;return _0x4ee954[_0x1336a5][_0x5073('0x8')]({'where':_0x1693c4,'raw':!![]})[_0x5073('0x9')](function(_0xdca88d){_0xe818e4[_0x5073('0xa')]=_[_0x5073('0xb')](_0xdca88d,'id');_0xd2e42f(_0xe818e4);})[_0x5073('0xc')](function(_0x29600e){_0x4c6fa1(_0x29600e);});});}function _0x4a3ceb(_0x4f00d1,_0x196fca){return new Promise(function(_0x52be01,_0x404e06){var _0x223cca=_0x4f00d1['filter']?{[_0x4f00d1[_0x5073('0x5')][_0x5073('0x6')]]:_0x4f00d1['filter'][_0x5073('0x7')]}:undefined;return _0x4ee954[_0x4f00d1['model']][_0x5073('0x8')]({'where':_0x223cca,'raw':!![]})[_0x5073('0x9')](function(_0xd5005b){_0x196fca[_0x5073('0xa')]=_[_0x5073('0xb')](_0xd5005b,function(_0x17db19){return _0x17db19['name'];});_0x52be01(_0x196fca);})['catch'](function(_0x41fc0e){_0x404e06(_0x41fc0e);});});}function _0x578b97(_0x34867d,_0x495a34,_0x3b2875){if(!_0x495a34)return Promise[_0x5073('0xd')](null);return new Promise(function(_0x54585c,_0x4e78d9){return _0x4ee954[_0x5073('0xe')][_0x5073('0x8')]({'where':{'sectionId':_0x495a34['id']},'raw':!![]})[_0x5073('0x9')](function(_0x15afe7){if(_0x34867d[_0x5073('0x6')]&&_0x34867d[_0x5073('0x6')]!=='id'){_0x495a34[_0x5073('0xa')]=_[_0x5073('0xb')](_0x15afe7,function(_0x167fc5){return _0x167fc5[_0x34867d[_0x5073('0x6')]];});}else{if(_0x3b2875===_0x5073('0xf')){_0x495a34[_0x5073('0xa')]=_[_0x5073('0xb')](_0x15afe7,function(_0x5b4819){return{'id':_0x5b4819[_0x5073('0x10')],'type':_0x5b4819['type']};});}else{_0x495a34[_0x5073('0xa')]=_['map'](_0x15afe7,function(_0x3fd864){return _0x3fd864['resourceId'];});}}_0x54585c(_0x495a34);})[_0x5073('0xc')](function(_0x37a82a){_0x4e78d9(_0x37a82a);});});}function _0x1d361b(_0x431e25,_0x4844e8){var _0x937b7d={'parentSections':[]};switch(_0x431e25['toLowerCase']()){case _0x5073('0x11'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x13');break;case _0x5073('0x14'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x15');break;case'squarerecordings':_0x937b7d[_0x5073('0x12')]=_0x5073('0x16');_0x937b7d['parentSections']=[{'name':_0x5073('0x17'),'field':_0x5073('0x18'),'foreignKey':'projectName'}];break;case _0x5073('0x19'):_0x937b7d['childModel']=_0x5073('0x1a');break;case'contacts':_0x937b7d[_0x5073('0x12')]='CmContact';_0x937b7d[_0x5073('0x1b')]=[{'name':_0x5073('0x1c'),'field':'id','foreignKey':'ListId'}];break;case _0x5073('0x1d'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x1e');break;case _0x5073('0x1f'):_0x937b7d['childModel']='CmCompany';break;case _0x5073('0x20'):_0x937b7d['childModel']=_0x5073('0x21');break;case _0x5073('0x22'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x23');break;case _0x5073('0x24'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x25');break;case _0x5073('0x26'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x27');break;case'faxaccounts':_0x937b7d[_0x5073('0x12')]=_0x5073('0x28');break;case _0x5073('0x29'):case'internalroutes':case _0x5073('0x2a'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x2b');break;case _0x5073('0x2c'):_0x937b7d[_0x5073('0x12')]='VoiceContext';break;case _0x5073('0x2d'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x2e');break;case _0x5073('0x2f'):_0x937b7d['childModel']=_0x5073('0x30');_0x937b7d[_0x5073('0x1b')]=[{'name':'Agents','field':_0x5073('0x18'),'foreignKey':'membername','model':_0x5073('0x31'),'filter':{'field':'role','value':[_0x5073('0x32')]}},{'name':'Telephones','field':_0x5073('0x18'),'foreignKey':'membername','model':_0x5073('0x31'),'filter':{'field':_0x5073('0x33'),'value':[_0x5073('0x34')]}},{'name':_0x5073('0x35'),'field':_0x5073('0x18'),'foreignKey':_0x5073('0x36'),'model':_0x5073('0x37'),'filter':{'field':_0x5073('0x38'),'value':[_0x5073('0x39')]}},{'name':_0x5073('0x3a'),'field':_0x5073('0x18'),'foreignKey':_0x5073('0x36'),'model':_0x5073('0x37'),'filter':{'field':'type','value':[_0x5073('0x3b')]}}];break;case'musiconholds':_0x937b7d[_0x5073('0x12')]='VoiceMusicOnHold';break;case _0x5073('0x3c'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x3d');break;case _0x5073('0x3e'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x3f');break;case _0x5073('0x40'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x41');break;case _0x5073('0x42'):_0x937b7d['childModel']=_0x5073('0x43');break;case _0x5073('0x44'):_0x937b7d['childModel']='MailAccount';break;case _0x5073('0x45'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x46');break;case _0x5073('0x47'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x48');break;case _0x5073('0x49'):_0x937b7d[_0x5073('0x12')]='OpenchannelAccount';break;case _0x5073('0x4a'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x4b');break;case _0x5073('0x4c'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x4d');break;case _0x5073('0x4e'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x4f');break;case _0x5073('0x50'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x51');break;case _0x5073('0x52'):_0x937b7d[_0x5073('0x12')]='Team';break;case _0x5073('0x53'):case _0x5073('0x54'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x37');if(_0x4844e8){_0x937b7d[_0x5073('0x1b')]=[{'name':_0x5073('0x35')},{'name':_0x5073('0x3a')}];}break;case _0x5073('0x55'):case _0x5073('0x56'):case _0x5073('0x57'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x31');if(_0x4844e8){_0x937b7d[_0x5073('0x1b')]=[{'name':_0x5073('0x58'),'filter':{'field':_0x5073('0x33'),'value':[_0x5073('0x59'),'user']},'ignore':!![]},{'name':'Agents'},{'name':_0x5073('0x5a')}];}break;case _0x5073('0x5b'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x5c');break;case _0x5073('0x5d'):_0x937b7d['childModel']='SalesforceAccount';break;case'freshdeskaccounts':_0x937b7d[_0x5073('0x12')]='FreshdeskAccount';break;case _0x5073('0x5e'):_0x937b7d['childModel']='SugarcrmAccount';break;case _0x5073('0x5f'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x60');break;case _0x5073('0x61'):_0x937b7d[_0x5073('0x12')]='ZohoAccount';break;case _0x5073('0x62'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x31');break;case'cannedanswers':_0x937b7d[_0x5073('0x12')]=_0x5073('0x63');break;case _0x5073('0x64'):_0x937b7d[_0x5073('0x12')]='Disposition';break;case _0x5073('0x65'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x66');break;case _0x5073('0x67'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x68');break;case'pauses':_0x937b7d[_0x5073('0x12')]='Pause';break;case _0x5073('0x69'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x6a');break;case _0x5073('0x6b'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x6c');break;case _0x5073('0x6d'):_0x937b7d['childModel']=_0x5073('0x6e');break;case'templates':_0x937b7d[_0x5073('0x12')]=_0x5073('0x6f');break;case'triggers':_0x937b7d[_0x5073('0x12')]=_0x5073('0x70');break;case'trunks':_0x937b7d[_0x5073('0x12')]='Trunk';break;case _0x5073('0x71'):_0x937b7d['childModel']='Variable';break;case'plugins':_0x937b7d[_0x5073('0x12')]='Plugin';break;case _0x5073('0x72'):_0x937b7d[_0x5073('0x12')]=_0x5073('0xf');_0x937b7d['parentSections']=[{'name':'Reports','field':'id','foreignKey':'reportId'}];break;case _0x5073('0x73'):_0x937b7d[_0x5073('0x12')]=_0x5073('0x74');break;}return _0x937b7d;}function _0x5a096e(_0x433d45,_0x4ceb67){var _0x617795=_0x433d45[_0x5073('0x75')](0x0)[_0x5073('0x76')]()+_0x433d45[_0x5073('0x77')](0x1);var _0x1c1836={'type':_0x4ee954[_0x5073('0x78')][_0x5073('0x79')][_0x5073('0x7a')],'raw':!![]};return new Promise(function(_0x15fcdf,_0x3f816b){var _0x2db0c4=squel['select']()[_0x5073('0x6')](_0x5073('0x7b')+_0x617795+_0x5073('0x7c'),'id')['field'](_0x5073('0x7d'))[_0x5073('0x7e')](_0x5073('0x7f')+_0x433d45+_0x5073('0x80'),'ui')[_0x5073('0x81')](_0x5073('0x82'),_0x4ceb67['id']);return _0x4ee954['sequelize'][_0x5073('0x83')](_0x2db0c4[_0x5073('0x84')](),_0x1c1836)[_0x5073('0x9')](function(_0x587fbe){_0x4ceb67[_0x617795+_0x5073('0x85')]=_0x587fbe;_0x15fcdf(_0x587fbe);})['catch'](function(_0x49bb5d){_0x3f816b(_0x49bb5d);});});}return _0x7ec072[_0x5073('0x86')](_0x5073('0x87'),attributes,{'tableName':_0x5073('0x88'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x5b16f9){var _0x41381a={'raw':_0x5b16f9['query'][_0x5073('0x89')],'where':{}};var _0x3e6d9f={};var _0x3a6d09={'count':0x0,'rows':[]};var _0x14d07e=_0x5b16f9['query'][_0x5073('0x8a')];var _0x3a4de1=_0x5b16f9[_0x5073('0x83')][_0x5073('0x8b')]||![];var _0x43a411=_0x1d361b(_0x14d07e,_0x3a4de1);if(!_0x43a411[_0x5073('0x12')])throw new Error(_0x5073('0x8c')+_0x14d07e+'\x27');var _0x52a76a=[{'name':_0x14d07e}];if(!_[_0x5073('0x8d')](_0x43a411[_0x5073('0x1b')]))_0x52a76a=_0x43a411[_0x5073('0x1b')];var _0x12a704=[];for(var _0x21529a=0x0;_0x21529a<_0x52a76a[_0x5073('0x8e')];_0x21529a++){_0x12a704['push'](_0x4ee954['UserProfileSection'][_0x5073('0x8f')]({'where':{'userProfileId':_0x5b16f9['params']['id'],'name':_0x52a76a[_0x21529a][_0x5073('0x18')]},'raw':!![]}));}return Promise[_0x5073('0x90')](_0x12a704)[_0x5073('0x9')](function(_0x578d69){var _0x2c9c24=_[_0x5073('0x5')](_0x578d69,function(_0x1a6c8b){return _0x1a6c8b?_0x1a6c8b:undefined;});var _0x20ff06=_['filter'](_0x52a76a,['ignore',!![]]);var _0x297d9d=_[_0x5073('0x8d')](_0x2c9c24)&&_['isEmpty'](_0x20ff06)?null:_[_0x5073('0x91')](_0x20ff06,_0x2c9c24);if(!_0x297d9d)return null;var _0x4915f8=[];for(var _0x5471cc=0x0;_0x5471cc<_0x297d9d[_0x5073('0x8e')];_0x5471cc++){var _0x2c85b6=_[_0x5073('0x8f')](_0x52a76a,function(_0x2b4140){return _0x297d9d[_0x5471cc]?_0x2b4140['name']===_0x297d9d[_0x5471cc][_0x5073('0x18')]:null;});if(_0x2c85b6){if(_0x297d9d[_0x5471cc][_0x5073('0x92')]){_0x4915f8['push'](_0x2be9c3(_0x43a411[_0x5073('0x12')],_0x297d9d[_0x5471cc]));}else{if(!_0x297d9d[_0x5471cc][_0x5073('0x93')]){_0x4915f8[_0x5073('0x94')](_0x578b97(_0x2c85b6,_0x297d9d[_0x5471cc],_0x43a411[_0x5073('0x12')]));}else{if(_0x2c85b6['model']){_0x4915f8[_0x5073('0x94')](_0x4a3ceb(_0x2c85b6,_0x297d9d[_0x5471cc]));}}}}}return Promise[_0x5073('0x90')](_0x4915f8);})[_0x5073('0x9')](function(_0x17a77e){var _0x59ef15=_0x17a77e;var _0x343bd1=null;if(_0x59ef15){_0x343bd1=_0x59ef15['length']===0x1?_0x59ef15[0x0]:null;}if(!_0x343bd1&&!_0x59ef15)return _0x3a6d09;var _0x4f6194=_0x4ee954[_0x43a411[_0x5073('0x12')]]['rawAttributes'];_0x3e6d9f['model']=_[_0x5073('0x95')](_0x4f6194);_0x3e6d9f[_0x5073('0x83')]=_[_0x5073('0x95')](_0x5b16f9[_0x5073('0x83')]);_0x3e6d9f['filters']=_['intersection'](_0x3e6d9f['model'],_0x3e6d9f[_0x5073('0x83')]);_0x41381a['attributes']=_[_0x5073('0x96')](_0x3e6d9f['model'],qs[_0x5073('0x97')](_0x5b16f9[_0x5073('0x83')][_0x5073('0x97')]));_0x41381a[_0x5073('0x98')]=_0x41381a['attributes'][_0x5073('0x8e')]?_0x41381a[_0x5073('0x98')]:_0x3e6d9f[_0x5073('0x99')];if(!_0x5b16f9[_0x5073('0x83')][_0x5073('0x9a')]('nolimit')){_0x41381a[_0x5073('0x9b')]=qs[_0x5073('0x9b')](_0x5b16f9['query'][_0x5073('0x9b')]);_0x41381a[_0x5073('0x9c')]=qs['offset'](_0x5b16f9[_0x5073('0x83')][_0x5073('0x9c')]);}_0x41381a['order']=qs[_0x5073('0x9d')](_0x5b16f9[_0x5073('0x83')]['sort']);_0x41381a['where']=qs[_0x5073('0x9e')](_[_0x5073('0x9f')](_0x5b16f9[_0x5073('0x83')],_0x3e6d9f['filters']));if(_0x5b16f9['query'][_0x5073('0x5')]){_0x41381a[_0x5073('0x81')]=_['merge'](_0x41381a[_0x5073('0x81')],{'$or':_['map'](_0x4f6194,function(_0x106262){if(_0x106262[_0x5073('0x38')][_0x5073('0xa0')]!==_0x5073('0xa1')){var _0x215f14={};_0x215f14[_0x106262[_0x5073('0x6')]]={'$like':'%'+_0x5b16f9[_0x5073('0x83')]['filter']+'%'};return _0x215f14;}})});}var _0x4451f5=[];var _0x9c5a47=null;var _0x16395d={};if(_0x343bd1){_0x9c5a47=_['find'](_0x52a76a,['name',_0x343bd1[_0x5073('0x18')]]);if(_0x9c5a47[_0x5073('0x6')]){_0x16395d={};if(_0x43a411[_0x5073('0x12')]===_0x5073('0xf')){_0x16395d[_0x9c5a47['foreignKey']]=_[_0x5073('0xb')](_0x343bd1[_0x5073('0xa')],'id');}else{_0x16395d[_0x9c5a47['foreignKey']]=_0x343bd1[_0x5073('0xa')];}_0x4451f5[_0x5073('0x94')](_0x16395d);}else{_0x41381a[_0x5073('0x81')]['id']=_0x343bd1[_0x5073('0xa')];}}else{for(var _0x115134=0x0;_0x115134<_0x59ef15['length'];_0x115134++){_0x9c5a47=_['find'](_0x52a76a,[_0x5073('0x18'),_0x59ef15[_0x115134][_0x5073('0x18')]]);if(_0x9c5a47[_0x5073('0x6')]){_0x16395d={};_0x16395d[_0x9c5a47[_0x5073('0xa2')]]=_0x59ef15[_0x115134][_0x5073('0xa')];_0x4451f5[_0x5073('0x94')](_0x16395d);}else{if(!_0x41381a[_0x5073('0x81')]['id'])_0x41381a[_0x5073('0x81')]['id']=[];_0x59ef15[_0x115134][_0x5073('0xa')][_0x5073('0xa3')](function(_0x3b3b19){_0x41381a[_0x5073('0x81')]['id']['push'](_0x3b3b19);});}}}if(!_[_0x5073('0x8d')](_0x4451f5)){_0x41381a['where']=_['merge'](_0x41381a[_0x5073('0x81')],{'$and':{'$or':_0x4451f5}});}_0x41381a=_[_0x5073('0xa4')]({},_0x41381a,_0x5b16f9['options']);if(_0x343bd1&&!_0x343bd1['autoAssociation']&&_0x43a411[_0x5073('0x12')]==='AnalyticExtractedReport'){if(_0x5b16f9[_0x5073('0x83')][_0x5073('0xa5')]){_0x41381a['include']=[{'all':!![]}];}return _0x4ee954[_0x43a411[_0x5073('0x12')]][_0x5073('0x8')](_0x41381a)[_0x5073('0x9')](function(_0x2322d0){var _0x363389=[];_0x2322d0[_0x5073('0xa3')](function(_0x35a728){var _0x2f0944;switch(_0x35a728[_0x5073('0xa6')]){case _0x5073('0xa7'):_0x2f0944=_['find'](_0x343bd1['associatedResources'],function(_0x326d22){return _0x326d22['id']===_0x35a728['reportId']&&_0x326d22['type']===_0x5073('0xa8');});break;case _0x5073('0xa9'):_0x2f0944=_[_0x5073('0x8f')](_0x343bd1[_0x5073('0xa')],function(_0x53969b){return _0x53969b['id']===_0x35a728[_0x5073('0xaa')]&&_0x53969b[_0x5073('0x38')]===_0x5073('0xab');});break;}if(_0x2f0944)_0x363389[_0x5073('0x94')](_0x35a728);});_0x3a6d09[_0x5073('0xac')]=_0x363389['length'];_0x3a6d09['rows']=_0x363389;return _0x3a6d09;});}else{if(!_['isEmpty'](_0x5b16f9[_0x5073('0x83')][_0x5073('0xad')])){_0x41381a['where']['id']=_0x41381a[_0x5073('0x81')]['id']?_['intersection'](_0x41381a[_0x5073('0x81')]['id'],_0x5b16f9['query'][_0x5073('0xad')]):_0x5b16f9[_0x5073('0x83')][_0x5073('0xad')];if(_0x5b16f9['query'][_0x5073('0xae')]){_0x41381a['order']=_0x5b16f9['query'][_0x5073('0xae')];}}if(_0x5b16f9[_0x5073('0x83')]['extraQueryConditions']){_0x41381a[_0x5073('0x81')]=_[_0x5073('0xa4')](_0x41381a[_0x5073('0x81')],{'$and':_0x5b16f9[_0x5073('0x83')]['extraQueryConditions']});}return _0x4ee954[_0x43a411[_0x5073('0x12')]][_0x5073('0xac')]({'where':_0x41381a[_0x5073('0x81')]})[_0x5073('0x9')](function(_0x3a3b43){_0x3a6d09[_0x5073('0xac')]=_0x3a3b43;if(_0x5b16f9[_0x5073('0x83')][_0x5073('0xa5')]){if(_0x43a411[_0x5073('0x12')]==='CmContact'){_0x41381a[_0x5073('0xaf')]=[{'model':_0x4ee954[_0x5073('0x6e')],'as':_0x5073('0xb0'),'attributes':['id',_0x5073('0x18'),_0x5073('0xb1')],'required':_0x5b16f9[_0x5073('0x83')][_0x5073('0xb2')]?!![]:![]},{'model':_0x4ee954[_0x5073('0x6e')],'as':_0x5073('0xb3'),'attributes':['id',_0x5073('0x18'),'color'],'through':_0x5b16f9[_0x5073('0x83')][_0x5073('0xb2')]?{'attributes':[],'where':{'TagId':_0x5b16f9[_0x5073('0x83')]['tag']||undefined}}:{},'required':_0x5b16f9['query']['tag']?!![]:![]}];}else{_0x41381a[_0x5073('0xaf')]=[{'all':!![]}];}}return _0x4ee954[_0x43a411[_0x5073('0x12')]][_0x5073('0x8')](_0x41381a);})[_0x5073('0x9')](function(_0x29dbb6){_0x3a6d09['rows']=_0x29dbb6;if(_0x14d07e===_0x5073('0xb4')&&_0x5b16f9[_0x5073('0x83')]['openTabs']==='true'){var _0x347046=[];for(var _0x1b07d5=0x0;_0x1b07d5<_0x3a6d09[_0x5073('0xb5')][_0x5073('0x8e')];_0x1b07d5++){_0x347046[_0x5073('0x94')](_0x5a096e('chat',_0x3a6d09[_0x5073('0xb5')][_0x1b07d5][_0x5073('0xb6')]));_0x347046[_0x5073('0x94')](_0x5a096e(_0x5073('0xb7'),_0x3a6d09[_0x5073('0xb5')][_0x1b07d5][_0x5073('0xb6')]));_0x347046['push'](_0x5a096e('fax',_0x3a6d09['rows'][_0x1b07d5][_0x5073('0xb6')]));_0x347046[_0x5073('0x94')](_0x5a096e(_0x5073('0xb8'),_0x3a6d09[_0x5073('0xb5')][_0x1b07d5][_0x5073('0xb6')]));_0x347046[_0x5073('0x94')](_0x5a096e('openchannel',_0x3a6d09[_0x5073('0xb5')][_0x1b07d5]['dataValues']));_0x347046[_0x5073('0x94')](_0x5a096e('whatsapp',_0x3a6d09[_0x5073('0xb5')][_0x1b07d5]['dataValues']));}return Promise[_0x5073('0x90')](_0x347046)[_0x5073('0x9')](function(){return _0x3a6d09;});}return _0x3a6d09;});}});}}});}; \ No newline at end of file diff --git a/server/api/userProfile/userProfile.rpc.js b/server/api/userProfile/userProfile.rpc.js new file mode 100644 index 0000000..758da0a --- /dev/null +++ b/server/api/userProfile/userProfile.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x598a=['result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info'];(function(_0x934754,_0x15bd40){var _0x5cf1fc=function(_0x2c1de6){while(--_0x2c1de6){_0x934754['push'](_0x934754['shift']());}};_0x5cf1fc(++_0x15bd40);}(_0x598a,0xfb));var _0xa598=function(_0x57e9b5,_0x657a46){_0x57e9b5=_0x57e9b5-0x0;var _0x5eee02=_0x598a[_0x57e9b5];return _0x5eee02;};'use strict';var _=require(_0xa598('0x0'));var util=require(_0xa598('0x1'));var moment=require(_0xa598('0x2'));var BPromise=require(_0xa598('0x3'));var rs=require(_0xa598('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa598('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xa598('0x6'));var jayson=require(_0xa598('0x7'));var client=jayson[_0xa598('0x8')][_0xa598('0x9')]({'port':0x232a});config[_0xa598('0xa')]=_['defaults'](config['redis'],{'host':_0xa598('0xb'),'port':0x18eb});var socket=require(_0xa598('0xc'))(new Redis(config[_0xa598('0xa')]));require(_0xa598('0xd'))[_0xa598('0xe')](socket);function respondWithRpcPromise(_0x387afc,_0x5207d5,_0x5871a3){return new BPromise(function(_0x3ea1e4,_0x3cb7b8){return client[_0xa598('0xf')](_0x387afc,_0x5871a3)[_0xa598('0x10')](function(_0xa1c53){logger['info'](_0xa598('0x11'),_0x5207d5,_0xa598('0x12'));logger[_0xa598('0x13')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x5207d5,_0xa598('0x12'),JSON['stringify'](_0xa1c53));if(_0xa1c53[_0xa598('0x14')]){if(_0xa1c53[_0xa598('0x14')][_0xa598('0x15')]===0x1f4){logger[_0xa598('0x14')](_0xa598('0x11'),_0x5207d5,_0xa1c53[_0xa598('0x14')][_0xa598('0x16')]);return _0x3cb7b8(_0xa1c53[_0xa598('0x14')][_0xa598('0x16')]);}logger['error'](_0xa598('0x11'),_0x5207d5,_0xa1c53[_0xa598('0x14')][_0xa598('0x16')]);return _0x3ea1e4(_0xa1c53[_0xa598('0x14')][_0xa598('0x16')]);}else{logger[_0xa598('0x17')](_0xa598('0x11'),_0x5207d5,_0xa598('0x12'));_0x3ea1e4(_0xa1c53[_0xa598('0x18')][_0xa598('0x16')]);}})['catch'](function(_0x1ed03f){logger[_0xa598('0x14')](_0xa598('0x11'),_0x5207d5,_0x1ed03f);_0x3cb7b8(_0x1ed03f);});});} \ No newline at end of file diff --git a/server/api/userProfile/userProfile.socket.js b/server/api/userProfile/userProfile.socket.js new file mode 100644 index 0000000..3ce064e --- /dev/null +++ b/server/api/userProfile/userProfile.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x63f4=['update','emit','removeListener','length','userProfile:','./userProfile.events','save'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x63f4,0x9f));var _0x463f=function(_0x26e031,_0x8dd228){_0x26e031=_0x26e031-0x0;var _0x5c3cc7=_0x63f4[_0x26e031];return _0x5c3cc7;};'use strict';var UserProfileEvents=require(_0x463f('0x0'));var events=[_0x463f('0x1'),'remove',_0x463f('0x2')];function createListener(_0x4e2e71,_0x350a7f){return function(_0x1330d4){_0x350a7f[_0x463f('0x3')](_0x4e2e71,_0x1330d4);};}function removeListener(_0x1c357e,_0x14dc8e){return function(){UserProfileEvents[_0x463f('0x4')](_0x1c357e,_0x14dc8e);};}exports['register']=function(_0x4777fe){for(var _0x30375b=0x0,_0xcdf461=events[_0x463f('0x5')];_0x30375b<_0xcdf461;_0x30375b++){var _0x1b8b2c=events[_0x30375b];var _0x16d9ba=createListener(_0x463f('0x6')+_0x1b8b2c,_0x4777fe);UserProfileEvents['on'](_0x1b8b2c,_0x16d9ba);}}; \ No newline at end of file diff --git a/server/api/userProfileResource/index.js b/server/api/userProfileResource/index.js new file mode 100644 index 0000000..3d3174c --- /dev/null +++ b/server/api/userProfileResource/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd812=['fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','index','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','connect-timeout','express'];(function(_0x12a201,_0x30aaba){var _0x52a4d2=function(_0x5ca28d){while(--_0x5ca28d){_0x12a201['push'](_0x12a201['shift']());}};_0x52a4d2(++_0x30aaba);}(_0xd812,0x18d));var _0x2d81=function(_0x5db313,_0x3c8f0c){_0x5db313=_0x5db313-0x0;var _0x36d503=_0xd812[_0x5db313];return _0x36d503;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2d81('0x0'));var express=require(_0x2d81('0x1'));var router=express['Router']();var fs_extra=require(_0x2d81('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2d81('0x3'));var config=require(_0x2d81('0x4'));var controller=require(_0x2d81('0x5'));router[_0x2d81('0x6')]('/',auth['isAuthenticated'](),controller[_0x2d81('0x7')]);router[_0x2d81('0x6')](_0x2d81('0x8'),auth[_0x2d81('0x9')](),controller['describe']);router[_0x2d81('0x6')](_0x2d81('0xa'),auth[_0x2d81('0x9')](),controller[_0x2d81('0xb')]);router[_0x2d81('0xc')]('/',auth[_0x2d81('0x9')](),controller[_0x2d81('0xd')]);router[_0x2d81('0xe')](_0x2d81('0xa'),auth[_0x2d81('0x9')](),controller[_0x2d81('0xf')]);router[_0x2d81('0x10')](_0x2d81('0xa'),auth[_0x2d81('0x9')](),controller[_0x2d81('0x11')]);module[_0x2d81('0x12')]=router; \ No newline at end of file diff --git a/server/api/userProfileResource/userProfileResource.attributes.js b/server/api/userProfileResource/userProfileResource.attributes.js new file mode 100644 index 0000000..0078c61 --- /dev/null +++ b/server/api/userProfileResource/userProfileResource.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0a84=['sequelize','exports','STRING','INTEGER'];(function(_0x32fcf8,_0x3b1c96){var _0x11fe25=function(_0x1a243d){while(--_0x1a243d){_0x32fcf8['push'](_0x32fcf8['shift']());}};_0x11fe25(++_0x3b1c96);}(_0x0a84,0x1f4));var _0x40a8=function(_0x79a88b,_0x31698c){_0x79a88b=_0x79a88b-0x0;var _0x4cca8d=_0x0a84[_0x79a88b];return _0x4cca8d;};'use strict';var Sequelize=require(_0x40a8('0x0'));module[_0x40a8('0x1')]={'name':{'type':Sequelize[_0x40a8('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x40a8('0x3')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}}; \ No newline at end of file diff --git a/server/api/userProfileResource/userProfileResource.controller.js b/server/api/userProfileResource/userProfileResource.controller.js new file mode 100644 index 0000000..469eba9 --- /dev/null +++ b/server/api/userProfileResource/userProfileResource.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9f0e=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9f0e,0x116));var _0xe9f0=function(_0xb6e19c,_0x4639b8){_0xb6e19c=_0xb6e19c-0x0;var _0x5b6fbb=_0x9f0e[_0xb6e19c];return _0x5b6fbb;};'use strict';var emlformat=require(_0xe9f0('0x0'));var rimraf=require(_0xe9f0('0x1'));var zipdir=require(_0xe9f0('0x2'));var jsonpatch=require(_0xe9f0('0x3'));var rp=require(_0xe9f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9f0('0x5'));var util=require(_0xe9f0('0x6'));var path=require(_0xe9f0('0x7'));var sox=require(_0xe9f0('0x8'));var csv=require(_0xe9f0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9f0('0xa'));var squel=require(_0xe9f0('0xb'));var crypto=require(_0xe9f0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9f0('0xd'));var toCsv=require(_0xe9f0('0x9'));var querystring=require(_0xe9f0('0xe'));var Papa=require(_0xe9f0('0xf'));var Redis=require(_0xe9f0('0x10'));var authService=require(_0xe9f0('0x11'));var qs=require(_0xe9f0('0x12'));var as=require(_0xe9f0('0x13'));var hardwareService=require(_0xe9f0('0x14'));var logger=require('../../config/logger')(_0xe9f0('0x15'));var utils=require(_0xe9f0('0x16'));var config=require(_0xe9f0('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9f0('0x18'))['db'];function respondWithStatusCode(_0x586763,_0x367545){_0x367545=_0x367545||0xcc;return function(_0xd82420){if(_0xd82420){return _0x586763[_0xe9f0('0x19')](_0x367545);}return _0x586763[_0xe9f0('0x1a')](_0x367545)['end']();};}function respondWithResult(_0x2cf75d,_0x5a10c6){_0x5a10c6=_0x5a10c6||0xc8;return function(_0x1e3ba8){if(_0x1e3ba8){return _0x2cf75d[_0xe9f0('0x1a')](_0x5a10c6)[_0xe9f0('0x1b')](_0x1e3ba8);}};}function respondWithFilteredResult(_0x59320d,_0x28bfac){return function(_0x33e9e4){if(_0x33e9e4){var _0x2e68ef=typeof _0x28bfac['offset']===_0xe9f0('0x1c')&&typeof _0x28bfac[_0xe9f0('0x1d')]===_0xe9f0('0x1c');var _0xd71ac8=_0x33e9e4[_0xe9f0('0x1e')];var _0x2ab12b=_0x2e68ef?0x0:_0x28bfac[_0xe9f0('0x1f')];var _0x59bf5a=_0x2e68ef?_0x33e9e4[_0xe9f0('0x1e')]:_0x28bfac[_0xe9f0('0x1f')]+_0x28bfac[_0xe9f0('0x1d')];var _0x5c4182;if(_0x59bf5a>=_0xd71ac8){_0x59bf5a=_0xd71ac8;_0x5c4182=0xc8;}else{_0x5c4182=0xce;}_0x59320d[_0xe9f0('0x1a')](_0x5c4182);return _0x59320d[_0xe9f0('0x20')](_0xe9f0('0x21'),_0x2ab12b+'-'+_0x59bf5a+'/'+_0xd71ac8)[_0xe9f0('0x1b')](_0x33e9e4);}return null;};}function patchUpdates(_0x5ba788){return function(_0x33f143){try{jsonpatch[_0xe9f0('0x22')](_0x33f143,_0x5ba788,!![]);}catch(_0x583687){return BPromise['reject'](_0x583687);}return _0x33f143['save']();};}function saveUpdates(_0x12fe9f,_0xa1ddc){return function(_0x1211ae){if(_0x1211ae){return _0x1211ae[_0xe9f0('0x23')](_0x12fe9f)[_0xe9f0('0x24')](function(_0x4a5c27){return _0x4a5c27;});}return null;};}function removeEntity(_0x229fe0,_0x38b7ee){return function(_0x437d43){if(_0x437d43){return _0x437d43[_0xe9f0('0x25')]()[_0xe9f0('0x24')](function(){_0x229fe0[_0xe9f0('0x1a')](0xcc)[_0xe9f0('0x26')]();});}};}function handleEntityNotFound(_0x1321bb,_0x3c4ba9){return function(_0x3fce54){if(!_0x3fce54){_0x1321bb['sendStatus'](0x194);}return _0x3fce54;};}function handleError(_0x371095,_0x27541f){_0x27541f=_0x27541f||0x1f4;return function(_0x2ddfba){logger[_0xe9f0('0x27')](_0x2ddfba['stack']);if(_0x2ddfba[_0xe9f0('0x28')]){delete _0x2ddfba[_0xe9f0('0x28')];}_0x371095[_0xe9f0('0x1a')](_0x27541f)[_0xe9f0('0x29')](_0x2ddfba);};}exports[_0xe9f0('0x2a')]=function(_0x5457f6,_0x130f96){var _0xdc16bc={},_0x44fb5b={},_0xab3d81={'count':0x0,'rows':[]};var _0xa27c84=_[_0xe9f0('0x2b')](db[_0xe9f0('0x2c')][_0xe9f0('0x2d')],function(_0x2b6503){return{'name':_0x2b6503[_0xe9f0('0x2e')],'type':_0x2b6503[_0xe9f0('0x2f')][_0xe9f0('0x30')]};});_0x44fb5b[_0xe9f0('0x31')]=_[_0xe9f0('0x2b')](_0xa27c84,_0xe9f0('0x28'));_0x44fb5b[_0xe9f0('0x32')]=_[_0xe9f0('0x33')](_0x5457f6[_0xe9f0('0x32')]);_0x44fb5b[_0xe9f0('0x34')]=_[_0xe9f0('0x35')](_0x44fb5b[_0xe9f0('0x31')],_0x44fb5b[_0xe9f0('0x32')]);_0xdc16bc[_0xe9f0('0x36')]=_[_0xe9f0('0x35')](_0x44fb5b['model'],qs['fields'](_0x5457f6['query'][_0xe9f0('0x37')]));_0xdc16bc['attributes']=_0xdc16bc[_0xe9f0('0x36')][_0xe9f0('0x38')]?_0xdc16bc['attributes']:_0x44fb5b[_0xe9f0('0x31')];if(!_0x5457f6['query']['hasOwnProperty']('nolimit')){_0xdc16bc[_0xe9f0('0x1d')]=qs[_0xe9f0('0x1d')](_0x5457f6['query'][_0xe9f0('0x1d')]);_0xdc16bc[_0xe9f0('0x1f')]=qs[_0xe9f0('0x1f')](_0x5457f6['query']['offset']);}_0xdc16bc[_0xe9f0('0x39')]=qs[_0xe9f0('0x3a')](_0x5457f6[_0xe9f0('0x32')]['sort']);_0xdc16bc[_0xe9f0('0x3b')]=qs[_0xe9f0('0x34')](_[_0xe9f0('0x3c')](_0x5457f6[_0xe9f0('0x32')],_0x44fb5b[_0xe9f0('0x34')]),_0xa27c84);if(_0x5457f6['query'][_0xe9f0('0x3d')]){_0xdc16bc[_0xe9f0('0x3b')]=_[_0xe9f0('0x3e')](_0xdc16bc['where'],{'$or':_[_0xe9f0('0x2b')](_0xa27c84,function(_0xbec11f){if(_0xbec11f['type']!==_0xe9f0('0x3f')){var _0x5154c3={};_0x5154c3[_0xbec11f[_0xe9f0('0x28')]]={'$like':'%'+_0x5457f6['query']['filter']+'%'};return _0x5154c3;}})});}_0xdc16bc=_['merge']({},_0xdc16bc,_0x5457f6['options']);var _0x5165f7={'where':_0xdc16bc[_0xe9f0('0x3b')]};return db[_0xe9f0('0x2c')][_0xe9f0('0x1e')](_0x5165f7)[_0xe9f0('0x24')](function(_0x2560c6){_0xab3d81[_0xe9f0('0x1e')]=_0x2560c6;if(_0x5457f6[_0xe9f0('0x32')][_0xe9f0('0x40')]){_0xdc16bc[_0xe9f0('0x41')]=[{'all':!![]}];}return db['UserProfileResource'][_0xe9f0('0x42')](_0xdc16bc);})[_0xe9f0('0x24')](function(_0x36b00a){_0xab3d81['rows']=_0x36b00a;return _0xab3d81;})['then'](respondWithFilteredResult(_0x130f96,_0xdc16bc))[_0xe9f0('0x43')](handleError(_0x130f96,null));};exports['show']=function(_0x297689,_0x52613a){var _0x314f0e={'raw':![],'where':{'id':_0x297689['params']['id']}},_0x42d9d2={};_0x42d9d2[_0xe9f0('0x31')]=_[_0xe9f0('0x33')](db[_0xe9f0('0x2c')][_0xe9f0('0x2d')]);_0x42d9d2[_0xe9f0('0x32')]=_['keys'](_0x297689[_0xe9f0('0x32')]);_0x42d9d2[_0xe9f0('0x34')]=_[_0xe9f0('0x35')](_0x42d9d2[_0xe9f0('0x31')],_0x42d9d2[_0xe9f0('0x32')]);_0x314f0e['attributes']=_[_0xe9f0('0x35')](_0x42d9d2['model'],qs['fields'](_0x297689[_0xe9f0('0x32')][_0xe9f0('0x37')]));_0x314f0e['attributes']=_0x314f0e[_0xe9f0('0x36')][_0xe9f0('0x38')]?_0x314f0e[_0xe9f0('0x36')]:_0x42d9d2[_0xe9f0('0x31')];if(_0x297689[_0xe9f0('0x32')][_0xe9f0('0x40')]){_0x314f0e[_0xe9f0('0x41')]=[{'all':!![]}];}_0x314f0e=_['merge']({},_0x314f0e,_0x297689[_0xe9f0('0x44')]);return db['UserProfileResource'][_0xe9f0('0x45')](_0x314f0e)['then'](handleEntityNotFound(_0x52613a,null))[_0xe9f0('0x24')](respondWithResult(_0x52613a,null))['catch'](handleError(_0x52613a,null));};exports[_0xe9f0('0x46')]=function(_0x2023b4,_0x422324){return db['UserProfileResource'][_0xe9f0('0x46')](_0x2023b4[_0xe9f0('0x47')],{})[_0xe9f0('0x24')](respondWithResult(_0x422324,0xc9))[_0xe9f0('0x43')](handleError(_0x422324,null));};exports[_0xe9f0('0x23')]=function(_0x135175,_0x6ece3f){if(_0x135175[_0xe9f0('0x47')]['id']){delete _0x135175[_0xe9f0('0x47')]['id'];}return db[_0xe9f0('0x2c')][_0xe9f0('0x45')]({'where':{'id':_0x135175[_0xe9f0('0x48')]['id']}})['then'](handleEntityNotFound(_0x6ece3f,null))['then'](saveUpdates(_0x135175[_0xe9f0('0x47')],null))[_0xe9f0('0x24')](respondWithResult(_0x6ece3f,null))[_0xe9f0('0x43')](handleError(_0x6ece3f,null));};exports['destroy']=function(_0x1ac381,_0x4d8b2e){return db[_0xe9f0('0x2c')][_0xe9f0('0x45')]({'where':{'id':_0x1ac381[_0xe9f0('0x48')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4d8b2e,null))['then'](removeEntity(_0x4d8b2e,null))[_0xe9f0('0x43')](handleError(_0x4d8b2e,null));};exports[_0xe9f0('0x49')]=function(_0x5163ea,_0x2bf65c){return db[_0xe9f0('0x2c')][_0xe9f0('0x49')]()[_0xe9f0('0x24')](respondWithResult(_0x2bf65c,null))['catch'](handleError(_0x2bf65c,null));}; \ No newline at end of file diff --git a/server/api/userProfileResource/userProfileResource.model.js b/server/api/userProfileResource/userProfileResource.model.js new file mode 100644 index 0000000..6792e68 --- /dev/null +++ b/server/api/userProfileResource/userProfileResource.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7c39=['../../config/environment','./userProfileResource.attributes','exports','define','user_profile_has_resources','compositeIndex','resourceId','sectionId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x12978f,_0x527378){var _0x1041ad=function(_0x394add){while(--_0x394add){_0x12978f['push'](_0x12978f['shift']());}};_0x1041ad(++_0x527378);}(_0x7c39,0x1c8));var _0x97c3=function(_0x3b1198,_0x41650f){_0x3b1198=_0x3b1198-0x0;var _0x1505a6=_0x7c39[_0x3b1198];return _0x1505a6;};'use strict';var _=require('lodash');var util=require(_0x97c3('0x0'));var logger=require(_0x97c3('0x1'))(_0x97c3('0x2'));var moment=require(_0x97c3('0x3'));var BPromise=require(_0x97c3('0x4'));var rp=require(_0x97c3('0x5'));var fs=require('fs');var path=require(_0x97c3('0x6'));var rimraf=require(_0x97c3('0x7'));var config=require(_0x97c3('0x8'));var attributes=require(_0x97c3('0x9'));module[_0x97c3('0xa')]=function(_0x38a54e,_0x8a292b){return _0x38a54e[_0x97c3('0xb')]('UserProfileResource',attributes,{'tableName':_0x97c3('0xc'),'paranoid':![],'indexes':[{'name':_0x97c3('0xd'),'fields':[_0x97c3('0xe'),_0x97c3('0xf')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userProfileResource/userProfileResource.rpc.js b/server/api/userProfileResource/userProfileResource.rpc.js new file mode 100644 index 0000000..b545e34 --- /dev/null +++ b/server/api/userProfileResource/userProfileResource.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3df6=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','UserProfileResource,\x20%s,\x20%s','message'];(function(_0x25ada9,_0x5f0e07){var _0x59e1ab=function(_0x241d91){while(--_0x241d91){_0x25ada9['push'](_0x25ada9['shift']());}};_0x59e1ab(++_0x5f0e07);}(_0x3df6,0xfe));var _0x63df=function(_0x96a338,_0x57ee18){_0x96a338=_0x96a338-0x0;var _0x1ef407=_0x3df6[_0x96a338];return _0x1ef407;};'use strict';var _=require(_0x63df('0x0'));var util=require(_0x63df('0x1'));var moment=require(_0x63df('0x2'));var BPromise=require(_0x63df('0x3'));var rs=require(_0x63df('0x4'));var fs=require('fs');var Redis=require(_0x63df('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x63df('0x6'));var logger=require(_0x63df('0x7'))('rpc');var config=require(_0x63df('0x8'));var jayson=require(_0x63df('0x9'));var client=jayson[_0x63df('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b2fe9,_0x159ef4,_0x534dde){return new BPromise(function(_0x29d4ae,_0x1875a6){return client[_0x63df('0xb')](_0x1b2fe9,_0x534dde)['then'](function(_0x4fae3b){logger[_0x63df('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x159ef4,_0x63df('0xd'));logger['debug'](_0x63df('0xe'),_0x159ef4,_0x63df('0xd'),JSON[_0x63df('0xf')](_0x4fae3b));if(_0x4fae3b[_0x63df('0x10')]){if(_0x4fae3b['error']['code']===0x1f4){logger[_0x63df('0x10')](_0x63df('0x11'),_0x159ef4,_0x4fae3b[_0x63df('0x10')][_0x63df('0x12')]);return _0x1875a6(_0x4fae3b['error'][_0x63df('0x12')]);}logger[_0x63df('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x159ef4,_0x4fae3b[_0x63df('0x10')][_0x63df('0x12')]);return _0x29d4ae(_0x4fae3b[_0x63df('0x10')][_0x63df('0x12')]);}else{logger[_0x63df('0xc')](_0x63df('0x11'),_0x159ef4,_0x63df('0xd'));_0x29d4ae(_0x4fae3b[_0x63df('0x13')][_0x63df('0x12')]);}})[_0x63df('0x14')](function(_0x3e749e){logger[_0x63df('0x10')](_0x63df('0x11'),_0x159ef4,_0x3e749e);_0x1875a6(_0x3e749e);});});} \ No newline at end of file diff --git a/server/api/userProfileSection/index.js b/server/api/userProfileSection/index.js new file mode 100644 index 0000000..07c6df3 --- /dev/null +++ b/server/api/userProfileSection/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfd67=['delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./userProfileSection.controller','index','describe','/:id','isAuthenticated','show','put','update'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfd67,0x8b));var _0x7fd6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd67[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7fd6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7fd6('0x1'));var express=require(_0x7fd6('0x2'));var router=express[_0x7fd6('0x3')]();var fs_extra=require(_0x7fd6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7fd6('0x5'));var config=require('../../config/environment');var controller=require(_0x7fd6('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7fd6('0x7')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x7fd6('0x8')]);router['get'](_0x7fd6('0x9'),auth[_0x7fd6('0xa')](),controller[_0x7fd6('0xb')]);router['post']('/',auth[_0x7fd6('0xa')](),controller['create']);router[_0x7fd6('0xc')]('/:id',auth[_0x7fd6('0xa')](),controller[_0x7fd6('0xd')]);router[_0x7fd6('0xe')](_0x7fd6('0x9'),auth['isAuthenticated'](),controller[_0x7fd6('0xf')]);module[_0x7fd6('0x10')]=router; \ No newline at end of file diff --git a/server/api/userProfileSection/userProfileSection.attributes.js b/server/api/userProfileSection/userProfileSection.attributes.js new file mode 100644 index 0000000..64f87c9 --- /dev/null +++ b/server/api/userProfileSection/userProfileSection.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c00=['STRING','setDataValue','crudPermissions','join','getDataValue','split','sequelize','exports','INTEGER','BOOLEAN'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x9c00,0x1a0));var _0x09c0=function(_0x39ce5a,_0x260622){_0x39ce5a=_0x39ce5a-0x0;var _0x46cd9a=_0x9c00[_0x39ce5a];return _0x46cd9a;};'use strict';var Sequelize=require(_0x09c0('0x0'));module[_0x09c0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x09c0('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x09c0('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x09c0('0x4')],'set':function(_0x2c702c){this[_0x09c0('0x5')](_0x09c0('0x6'),_0x2c702c?_0x2c702c[_0x09c0('0x7')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x09c0('0x8')](_0x09c0('0x6'))[_0x09c0('0x9')](''):[];}}}; \ No newline at end of file diff --git a/server/api/userProfileSection/userProfileSection.controller.js b/server/api/userProfileSection/userProfileSection.controller.js new file mode 100644 index 0000000..e11b25d --- /dev/null +++ b/server/api/userProfileSection/userProfileSection.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb631=['send','index','map','UserProfileSection','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','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','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name'];(function(_0x3adeb5,_0x3c2c44){var _0x1ccf64=function(_0x1ac079){while(--_0x1ac079){_0x3adeb5['push'](_0x3adeb5['shift']());}};_0x1ccf64(++_0x3c2c44);}(_0xb631,0x105));var _0x1b63=function(_0x5d45e7,_0x227c05){_0x5d45e7=_0x5d45e7-0x0;var _0x26a8d4=_0xb631[_0x5d45e7];return _0x26a8d4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1b63('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1b63('0x1'));var moment=require(_0x1b63('0x2'));var BPromise=require(_0x1b63('0x3'));var Mustache=require('mustache');var util=require(_0x1b63('0x4'));var path=require(_0x1b63('0x5'));var sox=require(_0x1b63('0x6'));var csv=require(_0x1b63('0x7'));var ejs=require(_0x1b63('0x8'));var fs=require('fs');var fs_extra=require(_0x1b63('0x9'));var _=require(_0x1b63('0xa'));var squel=require(_0x1b63('0xb'));var crypto=require(_0x1b63('0xc'));var jsforce=require(_0x1b63('0xd'));var deskjs=require(_0x1b63('0xe'));var toCsv=require(_0x1b63('0x7'));var querystring=require(_0x1b63('0xf'));var Papa=require(_0x1b63('0x10'));var Redis=require(_0x1b63('0x11'));var authService=require(_0x1b63('0x12'));var qs=require(_0x1b63('0x13'));var as=require(_0x1b63('0x14'));var hardwareService=require(_0x1b63('0x15'));var logger=require(_0x1b63('0x16'))(_0x1b63('0x17'));var utils=require('../../config/utils');var config=require(_0x1b63('0x18'));var licenseUtil=require(_0x1b63('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c532e,_0x5b326c){_0x5b326c=_0x5b326c||0xcc;return function(_0x1c2da5){if(_0x1c2da5){return _0x1c532e[_0x1b63('0x1a')](_0x5b326c);}return _0x1c532e[_0x1b63('0x1b')](_0x5b326c)[_0x1b63('0x1c')]();};}function respondWithResult(_0x3d472d,_0x2c4ae8){_0x2c4ae8=_0x2c4ae8||0xc8;return function(_0x526be0){if(_0x526be0){return _0x3d472d[_0x1b63('0x1b')](_0x2c4ae8)['json'](_0x526be0);}};}function respondWithFilteredResult(_0x7a7e44,_0x5abee1){return function(_0x2e471a){if(_0x2e471a){var _0x3f054b=typeof _0x5abee1[_0x1b63('0x1d')]===_0x1b63('0x1e')&&typeof _0x5abee1[_0x1b63('0x1f')]===_0x1b63('0x1e');var _0x539e23=_0x2e471a[_0x1b63('0x20')];var _0x549b1c=_0x3f054b?0x0:_0x5abee1[_0x1b63('0x1d')];var _0x49e255=_0x3f054b?_0x2e471a[_0x1b63('0x20')]:_0x5abee1[_0x1b63('0x1d')]+_0x5abee1['limit'];var _0x598321;if(_0x49e255>=_0x539e23){_0x49e255=_0x539e23;_0x598321=0xc8;}else{_0x598321=0xce;}_0x7a7e44[_0x1b63('0x1b')](_0x598321);return _0x7a7e44['set'](_0x1b63('0x21'),_0x549b1c+'-'+_0x49e255+'/'+_0x539e23)[_0x1b63('0x22')](_0x2e471a);}return null;};}function patchUpdates(_0x3007aa){return function(_0xe10444){try{jsonpatch[_0x1b63('0x23')](_0xe10444,_0x3007aa,!![]);}catch(_0xea7028){return BPromise[_0x1b63('0x24')](_0xea7028);}return _0xe10444[_0x1b63('0x25')]();};}function saveUpdates(_0x39ac68,_0x1e9b14){return function(_0x2b26bf){if(_0x2b26bf){return _0x2b26bf[_0x1b63('0x26')](_0x39ac68)[_0x1b63('0x27')](function(_0x327476){return _0x327476;});}return null;};}function removeEntity(_0x4bfbcd,_0x5a97ef){return function(_0x180d24){if(_0x180d24){return _0x180d24[_0x1b63('0x28')]()['then'](function(){_0x4bfbcd['status'](0xcc)[_0x1b63('0x1c')]();});}};}function handleEntityNotFound(_0x1a4da3,_0x650a68){return function(_0x455fd7){if(!_0x455fd7){_0x1a4da3[_0x1b63('0x1a')](0x194);}return _0x455fd7;};}function handleError(_0x103ae8,_0x16be77){_0x16be77=_0x16be77||0x1f4;return function(_0x2322d4){logger[_0x1b63('0x29')](_0x2322d4['stack']);if(_0x2322d4['name']){delete _0x2322d4[_0x1b63('0x2a')];}_0x103ae8[_0x1b63('0x1b')](_0x16be77)[_0x1b63('0x2b')](_0x2322d4);};}exports[_0x1b63('0x2c')]=function(_0x47a154,_0x1ae903){var _0x40a083={},_0x502027={},_0x244bef={'count':0x0,'rows':[]};var _0x48ab1e=_[_0x1b63('0x2d')](db[_0x1b63('0x2e')][_0x1b63('0x2f')],function(_0xf14a3f){return{'name':_0xf14a3f[_0x1b63('0x30')],'type':_0xf14a3f[_0x1b63('0x31')][_0x1b63('0x32')]};});_0x502027[_0x1b63('0x33')]=_[_0x1b63('0x2d')](_0x48ab1e,_0x1b63('0x2a'));_0x502027[_0x1b63('0x34')]=_[_0x1b63('0x35')](_0x47a154[_0x1b63('0x34')]);_0x502027['filters']=_['intersection'](_0x502027[_0x1b63('0x33')],_0x502027['query']);_0x40a083[_0x1b63('0x36')]=_[_0x1b63('0x37')](_0x502027[_0x1b63('0x33')],qs[_0x1b63('0x38')](_0x47a154[_0x1b63('0x34')]['fields']));_0x40a083[_0x1b63('0x36')]=_0x40a083[_0x1b63('0x36')][_0x1b63('0x39')]?_0x40a083[_0x1b63('0x36')]:_0x502027[_0x1b63('0x33')];if(!_0x47a154['query'][_0x1b63('0x3a')]('nolimit')){_0x40a083[_0x1b63('0x1f')]=qs[_0x1b63('0x1f')](_0x47a154[_0x1b63('0x34')]['limit']);_0x40a083[_0x1b63('0x1d')]=qs[_0x1b63('0x1d')](_0x47a154[_0x1b63('0x34')][_0x1b63('0x1d')]);}_0x40a083['order']=qs['sort'](_0x47a154[_0x1b63('0x34')][_0x1b63('0x3b')]);_0x40a083['where']=qs[_0x1b63('0x3c')](_[_0x1b63('0x3d')](_0x47a154[_0x1b63('0x34')],_0x502027[_0x1b63('0x3c')]),_0x48ab1e);if(_0x47a154[_0x1b63('0x34')][_0x1b63('0x3e')]){_0x40a083[_0x1b63('0x3f')]=_[_0x1b63('0x40')](_0x40a083[_0x1b63('0x3f')],{'$or':_[_0x1b63('0x2d')](_0x48ab1e,function(_0x398419){if(_0x398419[_0x1b63('0x31')]!==_0x1b63('0x41')){var _0x2ac04a={};_0x2ac04a[_0x398419[_0x1b63('0x2a')]]={'$like':'%'+_0x47a154['query'][_0x1b63('0x3e')]+'%'};return _0x2ac04a;}})});}_0x40a083=_[_0x1b63('0x40')]({},_0x40a083,_0x47a154['options']);var _0x30c7d6={'where':_0x40a083['where']};return db[_0x1b63('0x2e')][_0x1b63('0x20')](_0x30c7d6)['then'](function(_0x6ddbe9){_0x244bef[_0x1b63('0x20')]=_0x6ddbe9;if(_0x47a154[_0x1b63('0x34')][_0x1b63('0x42')]){_0x40a083[_0x1b63('0x43')]=[{'all':!![]}];}return db[_0x1b63('0x2e')][_0x1b63('0x44')](_0x40a083);})['then'](function(_0x2539c6){_0x244bef[_0x1b63('0x45')]=_0x2539c6;return _0x244bef;})[_0x1b63('0x27')](respondWithFilteredResult(_0x1ae903,_0x40a083))[_0x1b63('0x46')](handleError(_0x1ae903,null));};exports[_0x1b63('0x47')]=function(_0x56a1ea,_0x10a17c){var _0x56ee9e={'raw':![],'where':{'id':_0x56a1ea[_0x1b63('0x48')]['id']}},_0x5a5864={};_0x5a5864['model']=_[_0x1b63('0x35')](db['UserProfileSection'][_0x1b63('0x2f')]);_0x5a5864[_0x1b63('0x34')]=_[_0x1b63('0x35')](_0x56a1ea['query']);_0x5a5864['filters']=_[_0x1b63('0x37')](_0x5a5864['model'],_0x5a5864['query']);_0x56ee9e[_0x1b63('0x36')]=_[_0x1b63('0x37')](_0x5a5864[_0x1b63('0x33')],qs['fields'](_0x56a1ea[_0x1b63('0x34')][_0x1b63('0x38')]));_0x56ee9e[_0x1b63('0x36')]=_0x56ee9e[_0x1b63('0x36')][_0x1b63('0x39')]?_0x56ee9e['attributes']:_0x5a5864[_0x1b63('0x33')];if(_0x56a1ea[_0x1b63('0x34')][_0x1b63('0x42')]){_0x56ee9e[_0x1b63('0x43')]=[{'all':!![]}];}_0x56ee9e=_['merge']({},_0x56ee9e,_0x56a1ea['options']);return db['UserProfileSection'][_0x1b63('0x49')](_0x56ee9e)[_0x1b63('0x27')](handleEntityNotFound(_0x10a17c,null))[_0x1b63('0x27')](respondWithResult(_0x10a17c,null))[_0x1b63('0x46')](handleError(_0x10a17c,null));};exports[_0x1b63('0x4a')]=function(_0x12137a,_0x30235e){return db['UserProfileSection'][_0x1b63('0x4a')](_0x12137a[_0x1b63('0x4b')],{})[_0x1b63('0x27')](respondWithResult(_0x30235e,0xc9))[_0x1b63('0x46')](handleError(_0x30235e,null));};exports['update']=function(_0x49758e,_0x2f0f01){if(_0x49758e[_0x1b63('0x4b')]['id']){delete _0x49758e[_0x1b63('0x4b')]['id'];}return db[_0x1b63('0x2e')][_0x1b63('0x49')]({'where':{'id':_0x49758e[_0x1b63('0x48')]['id']}})[_0x1b63('0x27')](handleEntityNotFound(_0x2f0f01,null))[_0x1b63('0x27')](saveUpdates(_0x49758e[_0x1b63('0x4b')],null))['then'](respondWithResult(_0x2f0f01,null))[_0x1b63('0x46')](handleError(_0x2f0f01,null));};exports['destroy']=function(_0x4936ee,_0x1052b2){return db['UserProfileSection'][_0x1b63('0x49')]({'where':{'id':_0x4936ee[_0x1b63('0x48')]['id']}})[_0x1b63('0x27')](handleEntityNotFound(_0x1052b2,null))[_0x1b63('0x27')](removeEntity(_0x1052b2,null))[_0x1b63('0x46')](handleError(_0x1052b2,null));};exports['describe']=function(_0x542655,_0x1ec0f5){return db[_0x1b63('0x2e')]['describe']()[_0x1b63('0x27')](respondWithResult(_0x1ec0f5,null))[_0x1b63('0x46')](handleError(_0x1ec0f5,null));}; \ No newline at end of file diff --git a/server/api/userProfileSection/userProfileSection.model.js b/server/api/userProfileSection/userProfileSection.model.js new file mode 100644 index 0000000..43ff600 --- /dev/null +++ b/server/api/userProfileSection/userProfileSection.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0109=['request-promise','path','../../config/environment','exports','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4a46b0,_0x27c455){var _0x2ffdee=function(_0x118bed){while(--_0x118bed){_0x4a46b0['push'](_0x4a46b0['shift']());}};_0x2ffdee(++_0x27c455);}(_0x0109,0xea));var _0x9010=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x0109[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x9010('0x0'));var util=require(_0x9010('0x1'));var logger=require(_0x9010('0x2'))(_0x9010('0x3'));var moment=require(_0x9010('0x4'));var BPromise=require(_0x9010('0x5'));var rp=require(_0x9010('0x6'));var fs=require('fs');var path=require(_0x9010('0x7'));var rimraf=require('rimraf');var config=require(_0x9010('0x8'));var attributes=require('./userProfileSection.attributes');module[_0x9010('0x9')]=function(_0x199ac4,_0x3b2418){return _0x199ac4['define'](_0x9010('0xa'),attributes,{'tableName':_0x9010('0xb'),'paranoid':![],'indexes':[{'name':_0x9010('0xc'),'fields':[_0x9010('0xd'),_0x9010('0xe')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userProfileSection/userProfileSection.rpc.js b/server/api/userProfileSection/userProfileSection.rpc.js new file mode 100644 index 0000000..a7b21e7 --- /dev/null +++ b/server/api/userProfileSection/userProfileSection.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd5f7=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash'];(function(_0x47c9be,_0x2aedd9){var _0x51282a=function(_0x11d341){while(--_0x11d341){_0x47c9be['push'](_0x47c9be['shift']());}};_0x51282a(++_0x2aedd9);}(_0xd5f7,0x16f));var _0x7d5f=function(_0x4f91c5,_0x2ea939){_0x4f91c5=_0x4f91c5-0x0;var _0x1ddbae=_0xd5f7[_0x4f91c5];return _0x1ddbae;};'use strict';var _=require(_0x7d5f('0x0'));var util=require(_0x7d5f('0x1'));var moment=require(_0x7d5f('0x2'));var BPromise=require(_0x7d5f('0x3'));var rs=require(_0x7d5f('0x4'));var fs=require('fs');var Redis=require(_0x7d5f('0x5'));var db=require(_0x7d5f('0x6'))['db'];var utils=require(_0x7d5f('0x7'));var logger=require(_0x7d5f('0x8'))(_0x7d5f('0x9'));var config=require(_0x7d5f('0xa'));var jayson=require(_0x7d5f('0xb'));var client=jayson['client'][_0x7d5f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x92c404,_0x2b191d,_0x3b7e34){return new BPromise(function(_0x470589,_0x1e404a){return client['request'](_0x92c404,_0x3b7e34)[_0x7d5f('0xd')](function(_0x416872){logger[_0x7d5f('0xe')](_0x7d5f('0xf'),_0x2b191d,_0x7d5f('0x10'));logger[_0x7d5f('0x11')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x2b191d,_0x7d5f('0x10'),JSON[_0x7d5f('0x12')](_0x416872));if(_0x416872[_0x7d5f('0x13')]){if(_0x416872['error']['code']===0x1f4){logger[_0x7d5f('0x13')](_0x7d5f('0xf'),_0x2b191d,_0x416872[_0x7d5f('0x13')][_0x7d5f('0x14')]);return _0x1e404a(_0x416872[_0x7d5f('0x13')][_0x7d5f('0x14')]);}logger[_0x7d5f('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x2b191d,_0x416872[_0x7d5f('0x13')]['message']);return _0x470589(_0x416872[_0x7d5f('0x13')][_0x7d5f('0x14')]);}else{logger[_0x7d5f('0xe')](_0x7d5f('0xf'),_0x2b191d,_0x7d5f('0x10'));_0x470589(_0x416872[_0x7d5f('0x15')][_0x7d5f('0x14')]);}})[_0x7d5f('0x16')](function(_0x5965cc){logger[_0x7d5f('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x2b191d,_0x5965cc);_0x1e404a(_0x5965cc);});});} \ No newline at end of file diff --git a/server/api/userSmsQueue/index.js b/server/api/userSmsQueue/index.js new file mode 100644 index 0000000..ff15cbb --- /dev/null +++ b/server/api/userSmsQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2a9536,_0x5a801e){var _0x181aeb=function(_0x3662d5){while(--_0x3662d5){_0x2a9536['push'](_0x2a9536['shift']());}};_0x181aeb(++_0x5a801e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x226ad1,_0x2858e2){_0x226ad1=_0x226ad1-0x0;var _0x16b625=_0xcb91[_0x226ad1];return _0x16b625;};'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 diff --git a/server/api/userSmsQueue/userSmsQueue.attributes.js b/server/api/userSmsQueue/userSmsQueue.attributes.js new file mode 100644 index 0000000..734cd79 --- /dev/null +++ b/server/api/userSmsQueue/userSmsQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc7fb=['exports','INTEGER','sequelize'];(function(_0xb632a3,_0x526b16){var _0x139ec4=function(_0x141d0d){while(--_0x141d0d){_0xb632a3['push'](_0xb632a3['shift']());}};_0x139ec4(++_0x526b16);}(_0xc7fb,0x68));var _0xbc7f=function(_0x177fb3,_0x4b2f47){_0x177fb3=_0x177fb3-0x0;var _0x366c11=_0xc7fb[_0x177fb3];return _0x366c11;};'use strict';var Sequelize=require(_0xbc7f('0x0'));module[_0xbc7f('0x1')]={'penalty':{'type':Sequelize[_0xbc7f('0x2')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/userSmsQueue/userSmsQueue.model.js b/server/api/userSmsQueue/userSmsQueue.model.js new file mode 100644 index 0000000..b2aa38e --- /dev/null +++ b/server/api/userSmsQueue/userSmsQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7096=['exports','define','UserSmsQueue','user_has_sms_queues','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes'];(function(_0x4b2b03,_0xbf34ee){var _0x1bf0ed=function(_0x562785){while(--_0x562785){_0x4b2b03['push'](_0x4b2b03['shift']());}};_0x1bf0ed(++_0xbf34ee);}(_0x7096,0x10c));var _0x6709=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x7096[_0x23e7c1];return _0x1add43;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var logger=require('../../config/logger')(_0x6709('0x1'));var moment=require('moment');var BPromise=require(_0x6709('0x2'));var rp=require(_0x6709('0x3'));var fs=require('fs');var path=require(_0x6709('0x4'));var rimraf=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var attributes=require(_0x6709('0x7'));module[_0x6709('0x8')]=function(_0x9d630f,_0xa35832){return _0x9d630f[_0x6709('0x9')](_0x6709('0xa'),attributes,{'tableName':_0x6709('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userSmsQueue/userSmsQueue.rpc.js b/server/api/userSmsQueue/userSmsQueue.rpc.js new file mode 100644 index 0000000..64f68bb --- /dev/null +++ b/server/api/userSmsQueue/userSmsQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfe7f=['request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s'];(function(_0x2be00b,_0x309873){var _0x2f7b52=function(_0x57759b){while(--_0x57759b){_0x2be00b['push'](_0x2be00b['shift']());}};_0x2f7b52(++_0x309873);}(_0xfe7f,0x1eb));var _0xffe7=function(_0x1d0f10,_0x4de9fb){_0x1d0f10=_0x1d0f10-0x0;var _0xa1dcaf=_0xfe7f[_0x1d0f10];return _0xa1dcaf;};'use strict';var _=require('lodash');var util=require(_0xffe7('0x0'));var moment=require(_0xffe7('0x1'));var BPromise=require(_0xffe7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xffe7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xffe7('0x4'));var logger=require(_0xffe7('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xffe7('0x6'));var client=jayson[_0xffe7('0x7')][_0xffe7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d84b9,_0x13a2cf,_0x189bb8){return new BPromise(function(_0x231656,_0x3f7894){return client[_0xffe7('0x9')](_0x1d84b9,_0x189bb8)[_0xffe7('0xa')](function(_0x5c13a8){logger[_0xffe7('0xb')](_0xffe7('0xc'),_0x13a2cf,_0xffe7('0xd'));logger[_0xffe7('0xe')](_0xffe7('0xf'),_0x13a2cf,_0xffe7('0xd'),JSON['stringify'](_0x5c13a8));if(_0x5c13a8['error']){if(_0x5c13a8[_0xffe7('0x10')][_0xffe7('0x11')]===0x1f4){logger[_0xffe7('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x13a2cf,_0x5c13a8['error']['message']);return _0x3f7894(_0x5c13a8[_0xffe7('0x10')][_0xffe7('0x12')]);}logger[_0xffe7('0x10')](_0xffe7('0xc'),_0x13a2cf,_0x5c13a8[_0xffe7('0x10')][_0xffe7('0x12')]);return _0x231656(_0x5c13a8['error'][_0xffe7('0x12')]);}else{logger[_0xffe7('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x13a2cf,'request\x20sent');_0x231656(_0x5c13a8[_0xffe7('0x13')][_0xffe7('0x12')]);}})[_0xffe7('0x14')](function(_0x1eab8c){logger[_0xffe7('0x10')](_0xffe7('0xc'),_0x13a2cf,_0x1eab8c);_0x3f7894(_0x1eab8c);});});} \ No newline at end of file diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js new file mode 100644 index 0000000..2388f60 --- /dev/null +++ b/server/api/userVoicePrefix/userVoicePrefix.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8240=['sequelize','INTEGER'];(function(_0x4b2873,_0x368dcc){var _0x169a18=function(_0x22f7ab){while(--_0x22f7ab){_0x4b2873['push'](_0x4b2873['shift']());}};_0x169a18(++_0x368dcc);}(_0x8240,0x124));var _0x0824=function(_0x31b5a5,_0x44376a){_0x31b5a5=_0x31b5a5-0x0;var _0x364cc9=_0x8240[_0x31b5a5];return _0x364cc9;};'use strict';var Sequelize=require(_0x0824('0x0'));module['exports']={'UserId':{'type':Sequelize[_0x0824('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x0824('0x1')]}}; \ No newline at end of file diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js new file mode 100644 index 0000000..fd53baf --- /dev/null +++ b/server/api/userVoicePrefix/userVoicePrefix.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x27827e,_0x5c842d){var _0x585ab3=function(_0x467637){while(--_0x467637){_0x27827e['push'](_0x27827e['shift']());}};_0x585ab3(++_0x5c842d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userVoiceQueue/index.js b/server/api/userVoiceQueue/index.js new file mode 100644 index 0000000..a377e10 --- /dev/null +++ b/server/api/userVoiceQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x30c57f,_0x4e26ca){var _0x570756=function(_0xd1ee2e){while(--_0xd1ee2e){_0x30c57f['push'](_0x30c57f['shift']());}};_0x570756(++_0x4e26ca);}(_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');module[_0x49c4('0x6')]=router; \ No newline at end of file diff --git a/server/api/userVoiceQueue/userVoiceQueue.attributes.js b/server/api/userVoiceQueue/userVoiceQueue.attributes.js new file mode 100644 index 0000000..c5872c8 --- /dev/null +++ b/server/api/userVoiceQueue/userVoiceQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x99fc=['INTEGER','sequelize'];(function(_0x2f0723,_0x3ecd67){var _0x34f47b=function(_0x155ad7){while(--_0x155ad7){_0x2f0723['push'](_0x2f0723['shift']());}};_0x34f47b(++_0x3ecd67);}(_0x99fc,0x1df));var _0xc99f=function(_0x7f038a,_0xcbf254){_0x7f038a=_0x7f038a-0x0;var _0x4cb3dd=_0x99fc[_0x7f038a];return _0x4cb3dd;};'use strict';var Sequelize=require(_0xc99f('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xc99f('0x1')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/userVoiceQueue/userVoiceQueue.model.js b/server/api/userVoiceQueue/userVoiceQueue.model.js new file mode 100644 index 0000000..ee704c7 --- /dev/null +++ b/server/api/userVoiceQueue/userVoiceQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdf14=['UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','moment','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xdf14,0x162));var _0x4df1=function(_0x22d862,_0x37e96b){_0x22d862=_0x22d862-0x0;var _0x16def8=_0xdf14[_0x22d862];return _0x16def8;};'use strict';var _=require(_0x4df1('0x0'));var util=require(_0x4df1('0x1'));var logger=require(_0x4df1('0x2'))('api');var moment=require(_0x4df1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4df1('0x4'));var config=require(_0x4df1('0x5'));var attributes=require(_0x4df1('0x6'));module[_0x4df1('0x7')]=function(_0x37c6df,_0x51f1b5){return _0x37c6df[_0x4df1('0x8')](_0x4df1('0x9'),attributes,{'tableName':_0x4df1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userVoiceQueue/userVoiceQueue.rpc.js b/server/api/userVoiceQueue/userVoiceQueue.rpc.js new file mode 100644 index 0000000..82bf0f7 --- /dev/null +++ b/server/api/userVoiceQueue/userVoiceQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9ba9=['util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x5a0d75,_0x4ef5c2){var _0x37b4f9=function(_0x4fdda0){while(--_0x4fdda0){_0x5a0d75['push'](_0x5a0d75['shift']());}};_0x37b4f9(++_0x4ef5c2);}(_0x9ba9,0x190));var _0x99ba=function(_0x11a4d7,_0x55c864){_0x11a4d7=_0x11a4d7-0x0;var _0x64cbcf=_0x9ba9[_0x11a4d7];return _0x64cbcf;};'use strict';var _=require('lodash');var util=require(_0x99ba('0x0'));var moment=require(_0x99ba('0x1'));var BPromise=require(_0x99ba('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x99ba('0x3'));var logger=require(_0x99ba('0x4'))(_0x99ba('0x5'));var config=require(_0x99ba('0x6'));var jayson=require(_0x99ba('0x7'));var client=jayson[_0x99ba('0x8')][_0x99ba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c7c18,_0x25e29a,_0x977814){return new BPromise(function(_0x3e592a,_0x1166e2){return client['request'](_0x1c7c18,_0x977814)[_0x99ba('0xa')](function(_0x2b32f4){logger[_0x99ba('0xb')](_0x99ba('0xc'),_0x25e29a,_0x99ba('0xd'));logger[_0x99ba('0xe')](_0x99ba('0xf'),_0x25e29a,_0x99ba('0xd'),JSON['stringify'](_0x2b32f4));if(_0x2b32f4['error']){if(_0x2b32f4[_0x99ba('0x10')]['code']===0x1f4){logger[_0x99ba('0x10')](_0x99ba('0xc'),_0x25e29a,_0x2b32f4['error'][_0x99ba('0x11')]);return _0x1166e2(_0x2b32f4[_0x99ba('0x10')][_0x99ba('0x11')]);}logger[_0x99ba('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x25e29a,_0x2b32f4[_0x99ba('0x10')]['message']);return _0x3e592a(_0x2b32f4[_0x99ba('0x10')]['message']);}else{logger['info'](_0x99ba('0xc'),_0x25e29a,'request\x20sent');_0x3e592a(_0x2b32f4[_0x99ba('0x12')][_0x99ba('0x11')]);}})[_0x99ba('0x13')](function(_0x5ce9ab){logger[_0x99ba('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x25e29a,_0x5ce9ab);_0x1166e2(_0x5ce9ab);});});} \ No newline at end of file diff --git a/server/api/userVoiceQueueRt/index.js b/server/api/userVoiceQueueRt/index.js new file mode 100644 index 0000000..0f5275e --- /dev/null +++ b/server/api/userVoiceQueueRt/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x523671,_0x4657fc){var _0x5b0bdc=function(_0x301007){while(--_0x301007){_0x523671['push'](_0x523671['shift']());}};_0x5b0bdc(++_0x4657fc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js new file mode 100644 index 0000000..497f4ce --- /dev/null +++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8d6a=['exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface','sequelize'];(function(_0x5d407f,_0xae041c){var _0x3dbf71=function(_0x5f42c0){while(--_0x5f42c0){_0x5d407f['push'](_0x5d407f['shift']());}};_0x3dbf71(++_0xae041c);}(_0x8d6a,0x143));var _0xa8d6=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x8d6a[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require(_0xa8d6('0x0'));module[_0xa8d6('0x1')]={'uniqueid':{'type':Sequelize[_0xa8d6('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xa8d6('0x3')],'allowNull':![],'comment':_0xa8d6('0x4')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0xa8d6('0x3')],'allowNull':![],'unique':_0xa8d6('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xa8d6('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xa8d6('0x3')],'allowNull':![],'unique':_0xa8d6('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xa8d6('0x4')},'paused':{'type':Sequelize[_0xa8d6('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}}; \ No newline at end of file diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js new file mode 100644 index 0000000..e9a21d3 --- /dev/null +++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xed50=['UserVoiceQueueRt','setMaxListeners','update','remove','emit','hook','events','../../mysqldb'];(function(_0x35f191,_0x1ff4ad){var _0x42ade7=function(_0x3c0b1d){while(--_0x3c0b1d){_0x35f191['push'](_0x35f191['shift']());}};_0x42ade7(++_0x1ff4ad);}(_0xed50,0x1a6));var _0x0ed5=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0xed50[_0x1b7368];return _0x25d54c;};'use strict';var EventEmitter=require(_0x0ed5('0x0'));var UserVoiceQueueRt=require(_0x0ed5('0x1'))['db'][_0x0ed5('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x0ed5('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0ed5('0x4'),'afterDestroy':_0x0ed5('0x5')};function emitEvent(_0x31244f){return function(_0x200229,_0x523874,_0x2e2b6f){UserVoiceQueueRtEvents[_0x0ed5('0x6')](_0x31244f+':'+_0x200229['id'],_0x200229);UserVoiceQueueRtEvents['emit'](_0x31244f,_0x200229);_0x2e2b6f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x0ed5('0x7')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents; \ No newline at end of file diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js new file mode 100644 index 0000000..d7bfbd8 --- /dev/null +++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf7df=['bluebird','request-promise','path','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','util','../../config/logger','moment'];(function(_0x20520f,_0x4bf423){var _0xf893fd=function(_0x35f8dc){while(--_0x35f8dc){_0x20520f['push'](_0x20520f['shift']());}};_0xf893fd(++_0x4bf423);}(_0xf7df,0x1d1));var _0xff7d=function(_0x2628fd,_0x1e3921){_0x2628fd=_0x2628fd-0x0;var _0x3763ed=_0xf7df[_0x2628fd];return _0x3763ed;};'use strict';var _=require('lodash');var util=require(_0xff7d('0x0'));var logger=require(_0xff7d('0x1'))('api');var moment=require(_0xff7d('0x2'));var BPromise=require(_0xff7d('0x3'));var rp=require(_0xff7d('0x4'));var fs=require('fs');var path=require(_0xff7d('0x5'));var rimraf=require('rimraf');var config=require(_0xff7d('0x6'));var attributes=require(_0xff7d('0x7'));module[_0xff7d('0x8')]=function(_0x78f2ea,_0x3fb1b0){return _0x78f2ea[_0xff7d('0x9')](_0xff7d('0xa'),attributes,{'tableName':_0xff7d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js new file mode 100644 index 0000000..60218eb --- /dev/null +++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2553=['then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','./userVoiceQueueRt.socket','register','request'];(function(_0xd6ca7,_0xf8aca2){var _0x5f269f=function(_0x1c58b9){while(--_0x1c58b9){_0xd6ca7['push'](_0xd6ca7['shift']());}};_0x5f269f(++_0xf8aca2);}(_0x2553,0xfa));var _0x3255=function(_0x4adfa4,_0x121c5a){_0x4adfa4=_0x4adfa4-0x0;var _0x14cec1=_0x2553[_0x4adfa4];return _0x14cec1;};'use strict';var _=require(_0x3255('0x0'));var util=require('util');var moment=require(_0x3255('0x1'));var BPromise=require(_0x3255('0x2'));var rs=require(_0x3255('0x3'));var fs=require('fs');var Redis=require(_0x3255('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3255('0x5'))('rpc');var config=require(_0x3255('0x6'));var jayson=require(_0x3255('0x7'));var client=jayson[_0x3255('0x8')][_0x3255('0x9')]({'port':0x232a});config['redis']=_[_0x3255('0xa')](config['redis'],{'host':_0x3255('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3255('0xc')]));require(_0x3255('0xd'))[_0x3255('0xe')](socket);function respondWithRpcPromise(_0xc58677,_0x4fb06f,_0x2d8784){return new BPromise(function(_0x4e607e,_0x5a7d20){return client[_0x3255('0xf')](_0xc58677,_0x2d8784)[_0x3255('0x10')](function(_0x456596){logger[_0x3255('0x11')](_0x3255('0x12'),_0x4fb06f,'request\x20sent');logger[_0x3255('0x13')](_0x3255('0x14'),_0x4fb06f,'request\x20sent',JSON[_0x3255('0x15')](_0x456596));if(_0x456596[_0x3255('0x16')]){if(_0x456596['error'][_0x3255('0x17')]===0x1f4){logger['error'](_0x3255('0x12'),_0x4fb06f,_0x456596[_0x3255('0x16')][_0x3255('0x18')]);return _0x5a7d20(_0x456596['error'][_0x3255('0x18')]);}logger[_0x3255('0x16')](_0x3255('0x12'),_0x4fb06f,_0x456596[_0x3255('0x16')]['message']);return _0x4e607e(_0x456596[_0x3255('0x16')][_0x3255('0x18')]);}else{logger['info'](_0x3255('0x12'),_0x4fb06f,_0x3255('0x19'));_0x4e607e(_0x456596['result']['message']);}})[_0x3255('0x1a')](function(_0x5e6791){logger[_0x3255('0x16')](_0x3255('0x12'),_0x4fb06f,_0x5e6791);_0x5a7d20(_0x5e6791);});});}exports[_0x3255('0x1b')]=function(_0x3a45b7){var _0x48a551=this;return new Promise(function(_0x2a868e,_0x259222){return db[_0x3255('0x1c')][_0x3255('0x1d')]({'raw':_0x3a45b7[_0x3255('0x1e')]?_0x3a45b7[_0x3255('0x1e')][_0x3255('0x1f')]===undefined?!![]:![]:!![],'where':_0x3a45b7['options']?_0x3a45b7[_0x3255('0x1e')][_0x3255('0x20')]||null:null,'attributes':[[db[_0x3255('0x21')]['fn'](_0x3255('0x22'),db[_0x3255('0x21')]['fn']('IF',db[_0x3255('0x21')][_0x3255('0x23')](_0x3255('0x24')))),_0x3255('0x25')]]})[_0x3255('0x10')](function(_0x539299){logger[_0x3255('0x11')](_0x3255('0x1b'),_0x3a45b7);logger['debug']('GetVoiceQueueRtPauses',_0x3a45b7,JSON[_0x3255('0x15')](_0x539299));_0x2a868e(_0x539299);})[_0x3255('0x1a')](function(_0x18ea81){logger[_0x3255('0x16')](_0x3255('0x1b'),_0x18ea81[_0x3255('0x18')],_0x3a45b7);_0x259222(_0x48a551['error'](0x1f4,_0x18ea81[_0x3255('0x18')]));});});}; \ No newline at end of file diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js new file mode 100644 index 0000000..19d9cb9 --- /dev/null +++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd307=['./userVoiceQueueRt.events','save','remove','update','emit','removeListener','length','userVoiceQueueRt:'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd307,0x110));var _0x7d30=function(_0x2ba4e9,_0x5cdea4){_0x2ba4e9=_0x2ba4e9-0x0;var _0x36ea64=_0xd307[_0x2ba4e9];return _0x36ea64;};'use strict';var UserVoiceQueueRtEvents=require(_0x7d30('0x0'));var events=[_0x7d30('0x1'),_0x7d30('0x2'),_0x7d30('0x3')];function createListener(_0x2917cd,_0x3c6f99){return function(_0x359ef3){_0x3c6f99[_0x7d30('0x4')](_0x2917cd,_0x359ef3);};}function removeListener(_0x57cf6e,_0x2a0bb8){return function(){UserVoiceQueueRtEvents[_0x7d30('0x5')](_0x57cf6e,_0x2a0bb8);};}exports['register']=function(_0x400916){for(var _0x449938=0x0,_0x9451ed=events[_0x7d30('0x6')];_0x449938<_0x9451ed;_0x449938++){var _0x43b35e=events[_0x449938];var _0x1ef3e7=createListener(_0x7d30('0x7')+_0x43b35e,_0x400916);UserVoiceQueueRtEvents['on'](_0x43b35e,_0x1ef3e7);}}; \ No newline at end of file diff --git a/server/api/userWhatsappQueue/index.js b/server/api/userWhatsappQueue/index.js new file mode 100644 index 0000000..07a4d25 --- /dev/null +++ b/server/api/userWhatsappQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0xc27fe1,_0x1f51ba){var _0xde1ffc=function(_0x1421bb){while(--_0x1421bb){_0xc27fe1['push'](_0xc27fe1['shift']());}};_0xde1ffc(++_0x1f51ba);}(_0xedd9,0xfc));var _0x9edd=function(_0x281ad6,_0x4e02f8){_0x281ad6=_0x281ad6-0x0;var _0x73f177=_0xedd9[_0x281ad6];return _0x73f177;};'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 diff --git a/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js b/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js new file mode 100644 index 0000000..43a80ef --- /dev/null +++ b/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xfc76=['INTEGER','exports'];(function(_0x189963,_0x319152){var _0x4d94e7=function(_0x18b744){while(--_0x18b744){_0x189963['push'](_0x189963['shift']());}};_0x4d94e7(++_0x319152);}(_0xfc76,0xb5));var _0x6fc7=function(_0x264444,_0x3a51d6){_0x264444=_0x264444-0x0;var _0x937f30=_0xfc76[_0x264444];return _0x937f30;};'use strict';var Sequelize=require('sequelize');module[_0x6fc7('0x0')]={'penalty':{'type':Sequelize[_0x6fc7('0x1')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/userWhatsappQueue/userWhatsappQueue.model.js b/server/api/userWhatsappQueue/userWhatsappQueue.model.js new file mode 100644 index 0000000..6f3d69b --- /dev/null +++ b/server/api/userWhatsappQueue/userWhatsappQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0d06=['request-promise','path','rimraf','./userWhatsappQueue.attributes','exports','UserWhatsappQueue','lodash','api','moment'];(function(_0x5a67ed,_0xb5fff7){var _0x4b59e3=function(_0x3bd063){while(--_0x3bd063){_0x5a67ed['push'](_0x5a67ed['shift']());}};_0x4b59e3(++_0xb5fff7);}(_0x0d06,0x1d1));var _0x60d0=function(_0x559aab,_0x4b7dc4){_0x559aab=_0x559aab-0x0;var _0x5e5801=_0x0d06[_0x559aab];return _0x5e5801;};'use strict';var _=require(_0x60d0('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x60d0('0x1'));var moment=require(_0x60d0('0x2'));var BPromise=require('bluebird');var rp=require(_0x60d0('0x3'));var fs=require('fs');var path=require(_0x60d0('0x4'));var rimraf=require(_0x60d0('0x5'));var config=require('../../config/environment');var attributes=require(_0x60d0('0x6'));module[_0x60d0('0x7')]=function(_0x31151f,_0x3cad37){return _0x31151f['define'](_0x60d0('0x8'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js b/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js new file mode 100644 index 0000000..cdc71ac --- /dev/null +++ b/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xae5b=['error','message','UserWhatsappQueue,\x20%s,\x20%s','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','request','then','info','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x4f6ad2,_0x5f36c8){var _0x358b3a=function(_0x5c694a){while(--_0x5c694a){_0x4f6ad2['push'](_0x4f6ad2['shift']());}};_0x358b3a(++_0x5f36c8);}(_0xae5b,0x1d2));var _0xbae5=function(_0x4ecb49,_0x432e82){_0x4ecb49=_0x4ecb49-0x0;var _0x50a24c=_0xae5b[_0x4ecb49];return _0x50a24c;};'use strict';var _=require(_0xbae5('0x0'));var util=require(_0xbae5('0x1'));var moment=require(_0xbae5('0x2'));var BPromise=require(_0xbae5('0x3'));var rs=require(_0xbae5('0x4'));var fs=require('fs');var Redis=require(_0xbae5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xbae5('0x6'));var logger=require(_0xbae5('0x7'))(_0xbae5('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbae5('0x9')][_0xbae5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xcffe25,_0x305819,_0x4b78fd){return new BPromise(function(_0x4a207e,_0x295024){return client[_0xbae5('0xb')](_0xcffe25,_0x4b78fd)[_0xbae5('0xc')](function(_0x199984){logger[_0xbae5('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x305819,'request\x20sent');logger[_0xbae5('0xe')](_0xbae5('0xf'),_0x305819,_0xbae5('0x10'),JSON[_0xbae5('0x11')](_0x199984));if(_0x199984[_0xbae5('0x12')]){if(_0x199984['error']['code']===0x1f4){logger[_0xbae5('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x305819,_0x199984[_0xbae5('0x12')][_0xbae5('0x13')]);return _0x295024(_0x199984[_0xbae5('0x12')][_0xbae5('0x13')]);}logger[_0xbae5('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x305819,_0x199984[_0xbae5('0x12')][_0xbae5('0x13')]);return _0x4a207e(_0x199984[_0xbae5('0x12')][_0xbae5('0x13')]);}else{logger[_0xbae5('0xd')](_0xbae5('0x14'),_0x305819,_0xbae5('0x10'));_0x4a207e(_0x199984['result'][_0xbae5('0x13')]);}})[_0xbae5('0x15')](function(_0x203885){logger[_0xbae5('0x12')](_0xbae5('0x14'),_0x305819,_0x203885);_0x295024(_0x203885);});});} \ No newline at end of file diff --git a/server/api/variable/index.js b/server/api/variable/index.js new file mode 100644 index 0000000..7592ba3 --- /dev/null +++ b/server/api/variable/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcf1c=['destroy','multer','util','connect-timeout','express','Router','fs-extra','./variable.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete'];(function(_0x245095,_0x512248){var _0x411cce=function(_0x5820ea){while(--_0x5820ea){_0x245095['push'](_0x245095['shift']());}};_0x411cce(++_0x512248);}(_0xcf1c,0x18d));var _0xccf1=function(_0x161341,_0x1c054d){_0x161341=_0x161341-0x0;var _0x5e06c3=_0xcf1c[_0x161341];return _0x5e06c3;};'use strict';var multer=require(_0xccf1('0x0'));var util=require(_0xccf1('0x1'));var path=require('path');var timeout=require(_0xccf1('0x2'));var express=require(_0xccf1('0x3'));var router=express[_0xccf1('0x4')]();var fs_extra=require(_0xccf1('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xccf1('0x6'));router['get']('/',auth[_0xccf1('0x7')](),controller[_0xccf1('0x8')]);router[_0xccf1('0x9')](_0xccf1('0xa'),auth[_0xccf1('0x7')](),controller[_0xccf1('0xb')]);router[_0xccf1('0xc')]('/',auth[_0xccf1('0x7')](),controller[_0xccf1('0xd')]);router[_0xccf1('0xe')](_0xccf1('0xa'),auth[_0xccf1('0x7')](),controller[_0xccf1('0xf')]);router[_0xccf1('0x10')](_0xccf1('0xa'),auth[_0xccf1('0x7')](),controller[_0xccf1('0x11')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/variable/variable.attributes.js b/server/api/variable/variable.attributes.js new file mode 100644 index 0000000..54f7501 --- /dev/null +++ b/server/api/variable/variable.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2881=['name','sequelize','exports','STRING'];(function(_0x28407a,_0x2a7269){var _0x8bd6ef=function(_0x3c886f){while(--_0x3c886f){_0x28407a['push'](_0x28407a['shift']());}};_0x8bd6ef(++_0x2a7269);}(_0x2881,0x1f1));var _0x1288=function(_0x4201a4,_0x347560){_0x4201a4=_0x4201a4-0x0;var _0x2ffadd=_0x2881[_0x4201a4];return _0x2ffadd;};'use strict';var Sequelize=require(_0x1288('0x0'));module[_0x1288('0x1')]={'name':{'type':Sequelize[_0x1288('0x2')],'unique':_0x1288('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1288('0x2')]}}; \ No newline at end of file diff --git a/server/api/variable/variable.controller.js b/server/api/variable/variable.controller.js new file mode 100644 index 0000000..2e64d89 --- /dev/null +++ b/server/api/variable/variable.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe134=['then','destroy','get','Variables','UserProfileResource','sendStatus','error','stack','name','send','index','map','Variable','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','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','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update'];(function(_0x3a7bb2,_0x4d9a9b){var _0x138ef1=function(_0x19bdd6){while(--_0x19bdd6){_0x3a7bb2['push'](_0x3a7bb2['shift']());}};_0x138ef1(++_0x4d9a9b);}(_0xe134,0x122));var _0x4e13=function(_0x595c8e,_0x394e77){_0x595c8e=_0x595c8e-0x0;var _0x3087b1=_0xe134[_0x595c8e];return _0x3087b1;};'use strict';var emlformat=require(_0x4e13('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4e13('0x1'));var jsonpatch=require(_0x4e13('0x2'));var rp=require(_0x4e13('0x3'));var moment=require(_0x4e13('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4e13('0x5'));var path=require(_0x4e13('0x6'));var sox=require('sox');var csv=require(_0x4e13('0x7'));var ejs=require(_0x4e13('0x8'));var fs=require('fs');var fs_extra=require(_0x4e13('0x9'));var _=require(_0x4e13('0xa'));var squel=require(_0x4e13('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4e13('0xc'));var toCsv=require(_0x4e13('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4e13('0xd'));var authService=require(_0x4e13('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4e13('0xf'));var logger=require(_0x4e13('0x10'))(_0x4e13('0x11'));var utils=require(_0x4e13('0x12'));var config=require(_0x4e13('0x13'));var licenseUtil=require(_0x4e13('0x14'));var db=require(_0x4e13('0x15'))['db'];function respondWithStatusCode(_0x295dfb,_0x3cb5a7){_0x3cb5a7=_0x3cb5a7||0xcc;return function(_0x72ceab){if(_0x72ceab){return _0x295dfb['sendStatus'](_0x3cb5a7);}return _0x295dfb['status'](_0x3cb5a7)[_0x4e13('0x16')]();};}function respondWithResult(_0x1ebfac,_0x4f73e4){_0x4f73e4=_0x4f73e4||0xc8;return function(_0x5b8a4d){if(_0x5b8a4d){return _0x1ebfac[_0x4e13('0x17')](_0x4f73e4)['json'](_0x5b8a4d);}};}function respondWithFilteredResult(_0x4423c1,_0x2ae2f4){return function(_0xc8e21c){if(_0xc8e21c){var _0x177d22=typeof _0x2ae2f4[_0x4e13('0x18')]===_0x4e13('0x19')&&typeof _0x2ae2f4[_0x4e13('0x1a')]==='undefined';var _0x56b769=_0xc8e21c['count'];var _0x3e0c7e=_0x177d22?0x0:_0x2ae2f4['offset'];var _0x3ef929=_0x177d22?_0xc8e21c[_0x4e13('0x1b')]:_0x2ae2f4['offset']+_0x2ae2f4[_0x4e13('0x1a')];var _0x54c9a8;if(_0x3ef929>=_0x56b769){_0x3ef929=_0x56b769;_0x54c9a8=0xc8;}else{_0x54c9a8=0xce;}_0x4423c1[_0x4e13('0x17')](_0x54c9a8);return _0x4423c1[_0x4e13('0x1c')](_0x4e13('0x1d'),_0x3e0c7e+'-'+_0x3ef929+'/'+_0x56b769)['json'](_0xc8e21c);}return null;};}function patchUpdates(_0x5d206e){return function(_0x48b48d){try{jsonpatch[_0x4e13('0x1e')](_0x48b48d,_0x5d206e,!![]);}catch(_0x460753){return BPromise[_0x4e13('0x1f')](_0x460753);}return _0x48b48d[_0x4e13('0x20')]();};}function saveUpdates(_0x26bfd,_0x2271af){return function(_0x43b1e9){if(_0x43b1e9){return _0x43b1e9[_0x4e13('0x21')](_0x26bfd)[_0x4e13('0x22')](function(_0x52bf73){return _0x52bf73;});}return null;};}function removeEntity(_0xf05bc0,_0x4279ec){return function(_0x68aad5){if(_0x68aad5){return _0x68aad5[_0x4e13('0x23')]()[_0x4e13('0x22')](function(){var _0x51aa82=_0x68aad5[_0x4e13('0x24')]({'plain':!![]});var _0x4b5734=_0x4e13('0x25');return db[_0x4e13('0x26')][_0x4e13('0x23')]({'where':{'type':_0x4b5734,'resourceId':_0x51aa82['id']}})[_0x4e13('0x22')](function(){return _0x68aad5;});})[_0x4e13('0x22')](function(){_0xf05bc0[_0x4e13('0x17')](0xcc)[_0x4e13('0x16')]();});}};}function handleEntityNotFound(_0x2cdd4b,_0x38aa27){return function(_0xcfb98c){if(!_0xcfb98c){_0x2cdd4b[_0x4e13('0x27')](0x194);}return _0xcfb98c;};}function handleError(_0x42d50c,_0x4927bb){_0x4927bb=_0x4927bb||0x1f4;return function(_0x1c3fdb){logger[_0x4e13('0x28')](_0x1c3fdb[_0x4e13('0x29')]);if(_0x1c3fdb[_0x4e13('0x2a')]){delete _0x1c3fdb['name'];}_0x42d50c[_0x4e13('0x17')](_0x4927bb)[_0x4e13('0x2b')](_0x1c3fdb);};}exports[_0x4e13('0x2c')]=function(_0x1ec73a,_0x33e7d4){var _0x584e1c={},_0x3b04eb={},_0x2dfab3={'count':0x0,'rows':[]};var _0x189ae0=_[_0x4e13('0x2d')](db[_0x4e13('0x2e')]['rawAttributes'],function(_0x1d00bb){return{'name':_0x1d00bb['fieldName'],'type':_0x1d00bb[_0x4e13('0x2f')]['key']};});_0x3b04eb[_0x4e13('0x30')]=_['map'](_0x189ae0,_0x4e13('0x2a'));_0x3b04eb['query']=_[_0x4e13('0x31')](_0x1ec73a['query']);_0x3b04eb[_0x4e13('0x32')]=_[_0x4e13('0x33')](_0x3b04eb[_0x4e13('0x30')],_0x3b04eb[_0x4e13('0x34')]);_0x584e1c[_0x4e13('0x35')]=_[_0x4e13('0x33')](_0x3b04eb[_0x4e13('0x30')],qs[_0x4e13('0x36')](_0x1ec73a[_0x4e13('0x34')][_0x4e13('0x36')]));_0x584e1c[_0x4e13('0x35')]=_0x584e1c[_0x4e13('0x35')][_0x4e13('0x37')]?_0x584e1c[_0x4e13('0x35')]:_0x3b04eb[_0x4e13('0x30')];if(!_0x1ec73a[_0x4e13('0x34')][_0x4e13('0x38')]('nolimit')){_0x584e1c[_0x4e13('0x1a')]=qs[_0x4e13('0x1a')](_0x1ec73a['query'][_0x4e13('0x1a')]);_0x584e1c[_0x4e13('0x18')]=qs[_0x4e13('0x18')](_0x1ec73a[_0x4e13('0x34')][_0x4e13('0x18')]);}_0x584e1c[_0x4e13('0x39')]=qs['sort'](_0x1ec73a['query'][_0x4e13('0x3a')]);_0x584e1c[_0x4e13('0x3b')]=qs[_0x4e13('0x32')](_[_0x4e13('0x3c')](_0x1ec73a[_0x4e13('0x34')],_0x3b04eb[_0x4e13('0x32')]),_0x189ae0);if(_0x1ec73a[_0x4e13('0x34')][_0x4e13('0x3d')]){_0x584e1c[_0x4e13('0x3b')]=_['merge'](_0x584e1c['where'],{'$or':_['map'](_0x189ae0,function(_0xa768bb){if(_0xa768bb['type']!=='VIRTUAL'){var _0x114653={};_0x114653[_0xa768bb[_0x4e13('0x2a')]]={'$like':'%'+_0x1ec73a[_0x4e13('0x34')][_0x4e13('0x3d')]+'%'};return _0x114653;}})});}_0x584e1c=_[_0x4e13('0x3e')]({},_0x584e1c,_0x1ec73a[_0x4e13('0x3f')]);var _0x15210a={'where':_0x584e1c[_0x4e13('0x3b')]};return db['Variable'][_0x4e13('0x1b')](_0x15210a)[_0x4e13('0x22')](function(_0x4e6eca){_0x2dfab3['count']=_0x4e6eca;if(_0x1ec73a['query'][_0x4e13('0x40')]){_0x584e1c[_0x4e13('0x41')]=[{'all':!![]}];}return db[_0x4e13('0x2e')][_0x4e13('0x42')](_0x584e1c);})[_0x4e13('0x22')](function(_0x3d2800){_0x2dfab3[_0x4e13('0x43')]=_0x3d2800;return _0x2dfab3;})[_0x4e13('0x22')](respondWithFilteredResult(_0x33e7d4,_0x584e1c))['catch'](handleError(_0x33e7d4,null));};exports[_0x4e13('0x44')]=function(_0x2becb5,_0x3592fa){var _0x4f50dd={'raw':!![],'where':{'id':_0x2becb5[_0x4e13('0x45')]['id']}},_0x204924={};_0x204924[_0x4e13('0x30')]=_[_0x4e13('0x31')](db['Variable'][_0x4e13('0x46')]);_0x204924[_0x4e13('0x34')]=_[_0x4e13('0x31')](_0x2becb5[_0x4e13('0x34')]);_0x204924[_0x4e13('0x32')]=_[_0x4e13('0x33')](_0x204924['model'],_0x204924[_0x4e13('0x34')]);_0x4f50dd[_0x4e13('0x35')]=_[_0x4e13('0x33')](_0x204924['model'],qs[_0x4e13('0x36')](_0x2becb5[_0x4e13('0x34')][_0x4e13('0x36')]));_0x4f50dd[_0x4e13('0x35')]=_0x4f50dd['attributes'][_0x4e13('0x37')]?_0x4f50dd[_0x4e13('0x35')]:_0x204924[_0x4e13('0x30')];if(_0x2becb5[_0x4e13('0x34')][_0x4e13('0x40')]){_0x4f50dd[_0x4e13('0x41')]=[{'all':!![]}];}_0x4f50dd=_['merge']({},_0x4f50dd,_0x2becb5['options']);return db[_0x4e13('0x2e')][_0x4e13('0x47')](_0x4f50dd)[_0x4e13('0x22')](handleEntityNotFound(_0x3592fa,null))[_0x4e13('0x22')](respondWithResult(_0x3592fa,null))[_0x4e13('0x48')](handleError(_0x3592fa,null));};exports['create']=function(_0x2d7983,_0x16eb4d){return db['Variable'][_0x4e13('0x49')](_0x2d7983[_0x4e13('0x4a')],{})[_0x4e13('0x22')](function(_0x1507bc){var _0x177c74=_0x2d7983[_0x4e13('0x4b')][_0x4e13('0x24')]({'plain':!![]});if(!_0x177c74)throw new Error(_0x4e13('0x4c'));if(_0x177c74['role']==='user'){var _0x2bf97d=_0x1507bc[_0x4e13('0x24')]({'plain':!![]});var _0x2355ce=_0x4e13('0x25');return db[_0x4e13('0x4d')][_0x4e13('0x47')]({'where':{'name':_0x2355ce,'userProfileId':_0x177c74[_0x4e13('0x4e')]},'raw':!![]})[_0x4e13('0x22')](function(_0x4d19a2){if(_0x4d19a2&&_0x4d19a2[_0x4e13('0x4f')]===0x0){return db[_0x4e13('0x26')][_0x4e13('0x49')]({'name':_0x2bf97d[_0x4e13('0x2a')],'resourceId':_0x2bf97d['id'],'type':_0x4d19a2['name'],'sectionId':_0x4d19a2['id']},{})[_0x4e13('0x22')](function(){return _0x1507bc;});}else{return _0x1507bc;}})[_0x4e13('0x48')](function(_0x19d009){logger[_0x4e13('0x28')](_0x4e13('0x50'),_0x19d009);throw _0x19d009;});}return _0x1507bc;})[_0x4e13('0x22')](respondWithResult(_0x16eb4d,0xc9))['catch'](handleError(_0x16eb4d,null));};exports[_0x4e13('0x21')]=function(_0x1ceb29,_0x4198a8){if(_0x1ceb29[_0x4e13('0x4a')]['id']){delete _0x1ceb29[_0x4e13('0x4a')]['id'];}return db[_0x4e13('0x2e')][_0x4e13('0x47')]({'where':{'id':_0x1ceb29[_0x4e13('0x45')]['id']}})[_0x4e13('0x22')](handleEntityNotFound(_0x4198a8,null))[_0x4e13('0x22')](saveUpdates(_0x1ceb29[_0x4e13('0x4a')],null))[_0x4e13('0x22')](respondWithResult(_0x4198a8,null))['catch'](handleError(_0x4198a8,null));};exports[_0x4e13('0x23')]=function(_0x2c82ff,_0x3aab7e){return db[_0x4e13('0x2e')][_0x4e13('0x47')]({'where':{'id':_0x2c82ff['params']['id']}})[_0x4e13('0x22')](handleEntityNotFound(_0x3aab7e,null))[_0x4e13('0x22')](removeEntity(_0x3aab7e,null))[_0x4e13('0x48')](handleError(_0x3aab7e,null));}; \ No newline at end of file diff --git a/server/api/variable/variable.model.js b/server/api/variable/variable.model.js new file mode 100644 index 0000000..9eee38d --- /dev/null +++ b/server/api/variable/variable.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb0d5=['../../config/logger','api','moment','bluebird','request-promise','path','tools_variables','lodash','util'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0xb0d5,0x18a));var _0x5b0d=function(_0x2e612a,_0x106dd7){_0x2e612a=_0x2e612a-0x0;var _0x3cb97c=_0xb0d5[_0x2e612a];return _0x3cb97c;};'use strict';var _=require(_0x5b0d('0x0'));var util=require(_0x5b0d('0x1'));var logger=require(_0x5b0d('0x2'))(_0x5b0d('0x3'));var moment=require(_0x5b0d('0x4'));var BPromise=require(_0x5b0d('0x5'));var rp=require(_0x5b0d('0x6'));var fs=require('fs');var path=require(_0x5b0d('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./variable.attributes');module['exports']=function(_0x42f98d,_0x1be8a8){return _0x42f98d['define']('Variable',attributes,{'tableName':_0x5b0d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/variable/variable.rpc.js b/server/api/variable/variable.rpc.js new file mode 100644 index 0000000..0541d8c --- /dev/null +++ b/server/api/variable/variable.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x2d2949,_0x24c559){var _0x4bb11f=function(_0x2a75d7){while(--_0x2a75d7){_0x2d2949['push'](_0x2d2949['shift']());}};_0x4bb11f(++_0x24c559);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x5fc3[_0x1992f1];return _0x413dfe;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Variable,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});}; \ No newline at end of file diff --git a/server/api/version/index.js b/server/api/version/index.js new file mode 100644 index 0000000..67cfb15 --- /dev/null +++ b/server/api/version/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe5a7=['index','/fetch','isAuthenticated','fetch','/reset','canUpdate','reset','/pull','pull','/migrations','migrations','exports','./version.controller','get'];(function(_0x3c3e72,_0x3e1858){var _0x48a7e5=function(_0x3d1c72){while(--_0x3d1c72){_0x3c3e72['push'](_0x3c3e72['shift']());}};_0x48a7e5(++_0x3e1858);}(_0xe5a7,0xa6));var _0x7e5a=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xe5a7[_0x311c35];return _0x5cc50c;};'use strict';var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x7e5a('0x0'));router[_0x7e5a('0x1')]('/',controller[_0x7e5a('0x2')]);router['get'](_0x7e5a('0x3'),auth[_0x7e5a('0x4')](),auth['canUpdate'](),controller[_0x7e5a('0x5')]);router[_0x7e5a('0x1')](_0x7e5a('0x6'),auth[_0x7e5a('0x4')](),auth[_0x7e5a('0x7')](),controller[_0x7e5a('0x8')]);router[_0x7e5a('0x1')](_0x7e5a('0x9'),auth['isAuthenticated'](),auth[_0x7e5a('0x7')](),controller[_0x7e5a('0xa')]);router['get']('/restart',auth['isAuthenticated'](),controller['restart']);router['get'](_0x7e5a('0xb'),controller[_0x7e5a('0xc')]);module[_0x7e5a('0xd')]=router; \ No newline at end of file diff --git a/server/api/version/version.controller.js b/server/api/version/version.controller.js new file mode 100644 index 0000000..aca98f5 --- /dev/null +++ b/server/api/version/version.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2c5f=['length','.js','push','Migration','sequelize','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','then','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','pkginfo','compare-versions','exec','../../mysqldb','../../config/logger','simple-git','root','index','exports','version','query','latest','fetch','status','json','origin','master','error','info','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','restart','motion2','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','join','server'];(function(_0x1e243a,_0x412fd0){var _0x561939=function(_0x25b5f8){while(--_0x25b5f8){_0x1e243a['push'](_0x1e243a['shift']());}};_0x561939(++_0x412fd0);}(_0x2c5f,0x9e));var _0xf2c5=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0x2c5f[_0x5627e1];return _0x2f013f;};'use strict';var Umzug=require('umzug');var path=require(_0xf2c5('0x0'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0xf2c5('0x1'))(module,'version');var compareVersions=require(_0xf2c5('0x2'));var exec=require('child_process')[_0xf2c5('0x3')];var db=require(_0xf2c5('0x4'))['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require(_0xf2c5('0x5'))('update');var git=require(_0xf2c5('0x6'))(config[_0xf2c5('0x7')]);exports[_0xf2c5('0x8')]=function(_0x26baa0,_0x21d3d7){var _0x2e2369={'current':module[_0xf2c5('0x9')][_0xf2c5('0xa')],'phonebar':0x2};if(_0x26baa0[_0xf2c5('0xb')]&&_0x26baa0['query'][_0xf2c5('0xc')]){return git[_0xf2c5('0xd')]()['tags'](function(_0x452eae,_0x126510){_0x2e2369[_0xf2c5('0xc')]=(_0x452eae?module[_0xf2c5('0x9')][_0xf2c5('0xa')]:_0x126510[_0xf2c5('0xc')])||'2.0.0';return _0x21d3d7[_0xf2c5('0xe')](0xc8)[_0xf2c5('0xf')](_0x2e2369);});}else{return _0x21d3d7[_0xf2c5('0xe')](0xc8)['json'](_0x2e2369);}};exports[_0xf2c5('0xd')]=function(_0x2b967a,_0xff535){return git[_0xf2c5('0xd')]([_0xf2c5('0x10'),_0xf2c5('0x11')],function(_0x4b9fc0){if(_0x4b9fc0){logger[_0xf2c5('0x12')](_0x4b9fc0);return _0xff535[_0xf2c5('0xe')](0x1f4)[_0xf2c5('0xf')](_0x4b9fc0);}logger[_0xf2c5('0x13')]('git\x20fetch');return _0xff535[_0xf2c5('0xe')](0xc8)['json']({'output':_0xf2c5('0x14')});});};exports[_0xf2c5('0x15')]=function(_0x41d47f,_0xbe22c){return git[_0xf2c5('0x15')]([_0xf2c5('0x16'),_0xf2c5('0x17')],function(_0xb2defc){if(_0xb2defc){logger[_0xf2c5('0x12')](_0xb2defc);return _0xbe22c['status'](0x1f4)[_0xf2c5('0xf')](_0xb2defc);}logger[_0xf2c5('0x13')](_0xf2c5('0x18'));return _0xbe22c[_0xf2c5('0xe')](0xc8)[_0xf2c5('0xf')]({'output':_0xf2c5('0x19')});});};exports[_0xf2c5('0x1a')]=function(_0x4cbb56,_0x3a9b12){exec('npm\x20install\x20--production',function(_0x5143cc,_0x3a01c0,_0x4aeeb6){logger[_0xf2c5('0x13')](_0x3a01c0);logger[_0xf2c5('0x13')](_0x4aeeb6);if(_0x5143cc){logger[_0xf2c5('0x12')](_0x5143cc);return _0x3a9b12[_0xf2c5('0xe')](0x1f4)['json'](_0x5143cc);}return _0x3a9b12[_0xf2c5('0xe')](0xc8)[_0xf2c5('0xf')]({'output':_0x3a01c0});});};exports[_0xf2c5('0x1b')]=function(_0x5d5449,_0x22df07){return pm2[_0xf2c5('0x1b')](_0xf2c5('0x1c'))['then'](function(_0x277680){logger[_0xf2c5('0x13')]('pm2\x20restart\x20motion\x20%s',_0x277680);return _0x22df07[_0xf2c5('0xe')](0xc8)['json']({'output':_0xf2c5('0x1d')});})[_0xf2c5('0x1e')](function(_0x14341b){logger[_0xf2c5('0x12')](_0x14341b);return _0x22df07[_0xf2c5('0xe')](0x1f4)['json'](_0x14341b);});};exports[_0xf2c5('0x1f')]=function(_0x34e9f1,_0x19482b){var _0x345462=fs['readdirSync'](path[_0xf2c5('0x20')](config[_0xf2c5('0x7')],_0xf2c5('0x21'),'migrations'));var _0x52188e=[];for(var _0x157488=0x0;_0x157488<_0x345462[_0xf2c5('0x22')];_0x157488++){var _0x38fb36=_0x345462[_0x157488]['replace'](_0xf2c5('0x23'),'');if(compareVersions(module[_0xf2c5('0x9')][_0xf2c5('0xa')],_0x38fb36)===-0x1){_0x52188e[_0xf2c5('0x24')](_0x38fb36);}}if(_0x52188e[_0xf2c5('0x22')]){var _0xb9e661=_0x52188e['sort'](compareVersions);var _0x2f2028=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0xf2c5('0x25')],'modelName':_0xf2c5('0x25'),'columnName':_0xf2c5('0xa')},'migrations':{'params':[db[_0xf2c5('0x26')]['getQueryInterface'](),db[_0xf2c5('0x26')][_0xf2c5('0x27')],function(){throw new Error(_0xf2c5('0x28'));}],'path':path['join'](config[_0xf2c5('0x7')],'server',_0xf2c5('0x1f')),'pattern':/\.js$/}});_0x2f2028['up']({'migrations':_[_0xf2c5('0x29')](_0xb9e661,function(_0x3888a7){return _0x3888a7+_0xf2c5('0x23');})})[_0xf2c5('0x2a')](function(){return _0x19482b[_0xf2c5('0xe')](0xc8)['json']({'output':_0xf2c5('0x2b')+module[_0xf2c5('0x9')][_0xf2c5('0xa')]+_0xf2c5('0x2c')+_[_0xf2c5('0x2d')](_0xb9e661),'migrations':_[_0xf2c5('0x20')](_0xb9e661)});})[_0xf2c5('0x1e')](function(_0x29a35a){if(_0x29a35a instanceof db[_0xf2c5('0x26')][_0xf2c5('0x2e')]){return _0x19482b[_0xf2c5('0xe')](0xc8)[_0xf2c5('0xf')]({'output':_0xf2c5('0x2f')});}else{return _0x19482b['status'](0x1f4)[_0xf2c5('0xf')](_0x29a35a);}});}else{return _0x19482b[_0xf2c5('0xe')](0xc8)[_0xf2c5('0xf')]({'output':_0xf2c5('0x2f')});}}; \ No newline at end of file diff --git a/server/api/voiceAgentReport/index.js b/server/api/voiceAgentReport/index.js new file mode 100644 index 0000000..afcf71b --- /dev/null +++ b/server/api/voiceAgentReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x496a=['./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x357444,_0x5bb343){var _0x41a0e2=function(_0x2e0244){while(--_0x2e0244){_0x357444['push'](_0x357444['shift']());}};_0x41a0e2(++_0x5bb343);}(_0x496a,0x17d));var _0xa496=function(_0x36844a,_0x3bcf46){_0x36844a=_0x36844a-0x0;var _0xbab229=_0x496a[_0x36844a];return _0xbab229;};'use strict';var multer=require(_0xa496('0x0'));var util=require(_0xa496('0x1'));var path=require(_0xa496('0x2'));var timeout=require(_0xa496('0x3'));var express=require(_0xa496('0x4'));var router=express[_0xa496('0x5')]();var fs_extra=require(_0xa496('0x6'));var auth=require(_0xa496('0x7'));var interaction=require(_0xa496('0x8'));var config=require(_0xa496('0x9'));var controller=require(_0xa496('0xa'));router[_0xa496('0xb')]('/',auth[_0xa496('0xc')](),controller[_0xa496('0xd')]);router[_0xa496('0xb')](_0xa496('0xe'),auth['isAuthenticated'](),controller[_0xa496('0xf')]);router['get'](_0xa496('0x10'),auth[_0xa496('0xc')](),controller['show']);router[_0xa496('0x11')]('/',auth[_0xa496('0xc')](),controller[_0xa496('0x12')]);router[_0xa496('0x13')](_0xa496('0x10'),auth[_0xa496('0xc')](),controller[_0xa496('0x14')]);router[_0xa496('0x15')](_0xa496('0x10'),auth[_0xa496('0xc')](),controller[_0xa496('0x16')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/voiceAgentReport/voiceAgentReport.attributes.js b/server/api/voiceAgentReport/voiceAgentReport.attributes.js new file mode 100644 index 0000000..56584ed --- /dev/null +++ b/server/api/voiceAgentReport/voiceAgentReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x282b=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x282b,0xec));var _0xb282=function(_0x48b9d5,_0x191b27){_0x48b9d5=_0x48b9d5-0x0;var _0x4739c3=_0x282b[_0x48b9d5];return _0x4739c3;};'use strict';var Sequelize=require(_0xb282('0x0'));module[_0xb282('0x1')]={'type':{'type':Sequelize[_0xb282('0x2')]},'uniqueid':{'type':Sequelize[_0xb282('0x2')]},'calleridnum':{'type':Sequelize[_0xb282('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xb282('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xb282('0x3')]},'agentconnectAt':{'type':Sequelize[_0xb282('0x3')]},'agentcompleteAt':{'type':Sequelize[_0xb282('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xb282('0x3')]},'agentdumpAt':{'type':Sequelize[_0xb282('0x3')]},'holdtime':{'type':Sequelize[_0xb282('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xb282('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xb282('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xb282('0x4')]},'reason':{'type':Sequelize[_0xb282('0x2')]},'lastevent':{'type':Sequelize[_0xb282('0x2')]},'channel':{'type':Sequelize[_0xb282('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xb282('0x2')]},'connectedlinename':{'type':Sequelize[_0xb282('0x2')]},'language':{'type':Sequelize[_0xb282('0x2')]},'accountcode':{'type':Sequelize[_0xb282('0x2')]},'context':{'type':Sequelize[_0xb282('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xb282('0x2')]},'destchannelstate':{'type':Sequelize[_0xb282('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xb282('0x2')]},'destcalleridnum':{'type':Sequelize[_0xb282('0x2')]},'destcalleridname':{'type':Sequelize[_0xb282('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xb282('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xb282('0x2')]},'destcontext':{'type':Sequelize[_0xb282('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xb282('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xb282('0x2')]},'transfer':{'type':Sequelize[_0xb282('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb282('0x2')],'comment':_0xb282('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xb282('0x2')]},'agententerreason':{'type':Sequelize[_0xb282('0x4')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/voiceAgentReport/voiceAgentReport.controller.js b/server/api/voiceAgentReport/voiceAgentReport.controller.js new file mode 100644 index 0000000..6b203c2 --- /dev/null +++ b/server/api/voiceAgentReport/voiceAgentReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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 diff --git a/server/api/voiceAgentReport/voiceAgentReport.model.js b/server/api/voiceAgentReport/voiceAgentReport.model.js new file mode 100644 index 0000000..5b35b3d --- /dev/null +++ b/server/api/voiceAgentReport/voiceAgentReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1501=['path','rimraf','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','util','../../config/logger','api','bluebird','request-promise'];(function(_0x49f913,_0x12ccd8){var _0xf48ea5=function(_0xfd48b0){while(--_0xfd48b0){_0x49f913['push'](_0x49f913['shift']());}};_0xf48ea5(++_0x12ccd8);}(_0x1501,0x126));var _0x1150=function(_0x3ed0e4,_0x473e73){_0x3ed0e4=_0x3ed0e4-0x0;var _0x13d9ee=_0x1501[_0x3ed0e4];return _0x13d9ee;};'use strict';var _=require('lodash');var util=require(_0x1150('0x0'));var logger=require(_0x1150('0x1'))(_0x1150('0x2'));var moment=require('moment');var BPromise=require(_0x1150('0x3'));var rp=require(_0x1150('0x4'));var fs=require('fs');var path=require(_0x1150('0x5'));var rimraf=require(_0x1150('0x6'));var config=require('../../config/environment');var attributes=require(_0x1150('0x7'));module['exports']=function(_0x63c724,_0x316a7d){return _0x63c724[_0x1150('0x8')](_0x1150('0x9'),attributes,{'tableName':_0x1150('0xa'),'paranoid':![],'indexes':[{'fields':[_0x1150('0xb'),_0x1150('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceAgentReport/voiceAgentReport.rpc.js b/server/api/voiceAgentReport/voiceAgentReport.rpc.js new file mode 100644 index 0000000..6ccb997 --- /dev/null +++ b/server/api/voiceAgentReport/voiceAgentReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x99bb=['then','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','catch','VoiceAgentReport','create','options','raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','update','body','attributes','lodash','util','moment','bluebird','../../mysqldb','../../config/environment','client','request'];(function(_0x1c7586,_0x1d46bd){var _0x3bd9a1=function(_0x2f2d4d){while(--_0x2f2d4d){_0x1c7586['push'](_0x1c7586['shift']());}};_0x3bd9a1(++_0x1d46bd);}(_0x99bb,0x14a));var _0xb99b=function(_0x1bcf55,_0x3eefa4){_0x1bcf55=_0x1bcf55-0x0;var _0x30bf4c=_0x99bb[_0x1bcf55];return _0x30bf4c;};'use strict';var _=require(_0xb99b('0x0'));var util=require(_0xb99b('0x1'));var moment=require(_0xb99b('0x2'));var BPromise=require(_0xb99b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb99b('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb99b('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xb99b('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a21a7,_0x5d150b,_0x5c87c2){return new BPromise(function(_0x56ea5f,_0x5ab2b7){return client[_0xb99b('0x7')](_0x4a21a7,_0x5c87c2)[_0xb99b('0x8')](function(_0x8b1cdb){logger['info'](_0xb99b('0x9'),_0x5d150b,'request\x20sent');logger[_0xb99b('0xa')](_0xb99b('0xb'),_0x5d150b,_0xb99b('0xc'),JSON['stringify'](_0x8b1cdb));if(_0x8b1cdb[_0xb99b('0xd')]){if(_0x8b1cdb['error']['code']===0x1f4){logger[_0xb99b('0xd')](_0xb99b('0x9'),_0x5d150b,_0x8b1cdb[_0xb99b('0xd')][_0xb99b('0xe')]);return _0x5ab2b7(_0x8b1cdb[_0xb99b('0xd')]['message']);}logger[_0xb99b('0xd')](_0xb99b('0x9'),_0x5d150b,_0x8b1cdb['error']['message']);return _0x56ea5f(_0x8b1cdb[_0xb99b('0xd')][_0xb99b('0xe')]);}else{logger[_0xb99b('0xf')](_0xb99b('0x9'),_0x5d150b,_0xb99b('0xc'));_0x56ea5f(_0x8b1cdb['result'][_0xb99b('0xe')]);}})[_0xb99b('0x10')](function(_0x4b7e3b){logger[_0xb99b('0xd')](_0xb99b('0x9'),_0x5d150b,_0x4b7e3b);_0x5ab2b7(_0x4b7e3b);});});}exports['CreateVoiceAgentReport']=function(_0x27391d){var _0x35e859=this;return new Promise(function(_0xb94620,_0x1e17ce){return db[_0xb99b('0x11')][_0xb99b('0x12')](_0x27391d['body'],{'raw':_0x27391d[_0xb99b('0x13')]?_0x27391d[_0xb99b('0x13')][_0xb99b('0x14')]===undefined?!![]:![]:!![]})[_0xb99b('0x8')](function(_0x14d08c){logger[_0xb99b('0xf')]('CreateVoiceAgentReport',_0x27391d);logger[_0xb99b('0xa')]('CreateVoiceAgentReport',_0x27391d,JSON['stringify'](_0x14d08c));_0xb94620(_0x14d08c);})[_0xb99b('0x10')](function(_0x5d90ed){logger[_0xb99b('0xd')](_0xb99b('0x15'),_0x5d90ed[_0xb99b('0xe')],_0x27391d);_0x1e17ce(_0x35e859[_0xb99b('0xd')](0x1f4,_0x5d90ed['message']));});});};exports[_0xb99b('0x16')]=function(_0x911442){var _0x156e95=this;return new Promise(function(_0x505f7e,_0x543ba0){return db[_0xb99b('0x11')][_0xb99b('0x17')](_0x911442[_0xb99b('0x18')],{'raw':_0x911442['options']?_0x911442[_0xb99b('0x13')][_0xb99b('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x911442[_0xb99b('0x13')]?_0x911442[_0xb99b('0x13')]['where']||null:null,'attributes':_0x911442[_0xb99b('0x13')]?_0x911442[_0xb99b('0x13')][_0xb99b('0x19')]||null:null,'limit':_0x911442[_0xb99b('0x13')]?_0x911442[_0xb99b('0x13')]['limit']||null:null})[_0xb99b('0x8')](function(_0x8a5bf0){logger['info']('UpdateVoiceAgentReport',_0x911442);logger[_0xb99b('0xa')](_0xb99b('0x16'),_0x911442,JSON['stringify'](_0x8a5bf0));_0x505f7e(_0x8a5bf0);})['catch'](function(_0x11c816){logger['error'](_0xb99b('0x16'),_0x11c816[_0xb99b('0xe')],_0x911442);_0x543ba0(_0x156e95[_0xb99b('0xd')](0x1f4,_0x11c816[_0xb99b('0xe')]));});});}; \ No newline at end of file diff --git a/server/api/voiceCallReport/index.js b/server/api/voiceCallReport/index.js new file mode 100644 index 0000000..ad21f30 --- /dev/null +++ b/server/api/voiceCallReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x46ed=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','destroy','multer'];(function(_0x11e2b0,_0x386c82){var _0x1b9672=function(_0x51096d){while(--_0x51096d){_0x11e2b0['push'](_0x11e2b0['shift']());}};_0x1b9672(++_0x386c82);}(_0x46ed,0x168));var _0xd46e=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x46ed[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')]('/',auth[_0xd46e('0x9')](),controller[_0xd46e('0xa')]);router[_0xd46e('0x8')](_0xd46e('0xb'),auth[_0xd46e('0x9')](),controller[_0xd46e('0xc')]);router[_0xd46e('0x8')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller['show']);router[_0xd46e('0xe')]('/',auth[_0xd46e('0x9')](),controller['create']);router[_0xd46e('0xf')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller[_0xd46e('0x10')]);router[_0xd46e('0x11')](_0xd46e('0xd'),auth['isAuthenticated'](),controller[_0xd46e('0x12')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/voiceCallReport/voiceCallReport.attributes.js b/server/api/voiceCallReport/voiceCallReport.attributes.js new file mode 100644 index 0000000..56ac657 --- /dev/null +++ b/server/api/voiceCallReport/voiceCallReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xed0b=['STRING','ENUM','inbound','outbound-fax','TEXT','DATE','INTEGER','sequelize'];(function(_0x135705,_0x1e4438){var _0x3cdb42=function(_0x4fe1bd){while(--_0x4fe1bd){_0x135705['push'](_0x135705['shift']());}};_0x3cdb42(++_0x1e4438);}(_0xed0b,0x15f));var _0xbed0=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0xed0b[_0x20589d];return _0x422de9;};'use strict';var Sequelize=require(_0xbed0('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xbed0('0x1')]},'type':{'type':Sequelize[_0xbed0('0x2')](_0xbed0('0x3'),'internal','outbound','inbound-fax',_0xbed0('0x4'),'dialer')},'tag':{'type':Sequelize[_0xbed0('0x1')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xbed0('0x1')]},'destinationcontext':{'type':Sequelize[_0xbed0('0x1')]},'callerid':{'type':Sequelize[_0xbed0('0x1')]},'channel':{'type':Sequelize[_0xbed0('0x1')]},'destinationchannel':{'type':Sequelize[_0xbed0('0x1')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xbed0('0x5')]},'starttime':{'type':Sequelize[_0xbed0('0x6')]},'systemanswertime':{'type':Sequelize[_0xbed0('0x6')]},'answertime':{'type':Sequelize[_0xbed0('0x6')]},'endtime':{'type':Sequelize[_0xbed0('0x6')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xbed0('0x7')]},'mohtime':{'type':Sequelize[_0xbed0('0x7')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xbed0('0x1')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xbed0('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xbed0('0x1')]},'userThirdDisposition':{'type':Sequelize[_0xbed0('0x1')]},'note':{'type':Sequelize[_0xbed0('0x1')]},'prefix':{'type':Sequelize[_0xbed0('0x1')]},'routeid':{'type':Sequelize[_0xbed0('0x7')]},'sipcallid':{'type':Sequelize[_0xbed0('0x1')]}}; \ No newline at end of file diff --git a/server/api/voiceCallReport/voiceCallReport.controller.js b/server/api/voiceCallReport/voiceCallReport.controller.js new file mode 100644 index 0000000..ad389a3 --- /dev/null +++ b/server/api/voiceCallReport/voiceCallReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x20765e,_0x4ef104){var _0x4a6213=function(_0x18cf51){while(--_0x18cf51){_0x20765e['push'](_0x20765e['shift']());}};_0x4a6213(++_0x4ef104);}(_0xb10b,0x12a));var _0xbb10=function(_0x213295,_0x465d81){_0x213295=_0x213295-0x0;var _0x43a797=_0xb10b[_0x213295];return _0x43a797;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));}; \ No newline at end of file diff --git a/server/api/voiceCallReport/voiceCallReport.model.js b/server/api/voiceCallReport/voiceCallReport.model.js new file mode 100644 index 0000000..be5051e --- /dev/null +++ b/server/api/voiceCallReport/voiceCallReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1d5c=['rimraf','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x552b21,_0x4e6e66){var _0x535611=function(_0x518b19){while(--_0x518b19){_0x552b21['push'](_0x552b21['shift']());}};_0x535611(++_0x4e6e66);}(_0x1d5c,0xeb));var _0xc1d5=function(_0x1d2f15,_0x1107c6){_0x1d2f15=_0x1d2f15-0x0;var _0x19efd2=_0x1d5c[_0x1d2f15];return _0x19efd2;};'use strict';var _=require(_0xc1d5('0x0'));var util=require(_0xc1d5('0x1'));var logger=require(_0xc1d5('0x2'))(_0xc1d5('0x3'));var moment=require(_0xc1d5('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc1d5('0x5'));var config=require('../../config/environment');var attributes=require(_0xc1d5('0x6'));module[_0xc1d5('0x7')]=function(_0x4a80ad,_0x2accf0){return _0x4a80ad[_0xc1d5('0x8')](_0xc1d5('0x9'),attributes,{'tableName':_0xc1d5('0xa'),'paranoid':![],'indexes':[{'fields':[_0xc1d5('0xb')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceCallReport/voiceCallReport.rpc.js b/server/api/voiceCallReport/voiceCallReport.rpc.js new file mode 100644 index 0000000..61fa13a --- /dev/null +++ b/server/api/voiceCallReport/voiceCallReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe081=['create','body','update','where','UpdateVoiceCallReport','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','limit','include','map','model','CreateVoiceCallReport'];(function(_0x27a057,_0x255f9c){var _0xff90bc=function(_0x403f71){while(--_0x403f71){_0x27a057['push'](_0x27a057['shift']());}};_0xff90bc(++_0x255f9c);}(_0xe081,0x1bd));var _0x1e08=function(_0x1c7115,_0x47b37a){_0x1c7115=_0x1c7115-0x0;var _0xca4fac=_0xe081[_0x1c7115];return _0xca4fac;};'use strict';var _=require('lodash');var util=require(_0x1e08('0x0'));var moment=require(_0x1e08('0x1'));var BPromise=require(_0x1e08('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1e08('0x3'));var db=require(_0x1e08('0x4'))['db'];var utils=require(_0x1e08('0x5'));var logger=require(_0x1e08('0x6'))(_0x1e08('0x7'));var config=require(_0x1e08('0x8'));var jayson=require(_0x1e08('0x9'));var client=jayson[_0x1e08('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24d6bc,_0x4a9345,_0x258a41){return new BPromise(function(_0xc2f6d9,_0x418ff9){return client[_0x1e08('0xb')](_0x24d6bc,_0x258a41)[_0x1e08('0xc')](function(_0x127097){logger[_0x1e08('0xd')](_0x1e08('0xe'),_0x4a9345,_0x1e08('0xf'));logger[_0x1e08('0x10')](_0x1e08('0x11'),_0x4a9345,_0x1e08('0xf'),JSON[_0x1e08('0x12')](_0x127097));if(_0x127097[_0x1e08('0x13')]){if(_0x127097[_0x1e08('0x13')][_0x1e08('0x14')]===0x1f4){logger[_0x1e08('0x13')](_0x1e08('0xe'),_0x4a9345,_0x127097[_0x1e08('0x13')][_0x1e08('0x15')]);return _0x418ff9(_0x127097[_0x1e08('0x13')][_0x1e08('0x15')]);}logger[_0x1e08('0x13')](_0x1e08('0xe'),_0x4a9345,_0x127097['error'][_0x1e08('0x15')]);return _0xc2f6d9(_0x127097[_0x1e08('0x13')][_0x1e08('0x15')]);}else{logger[_0x1e08('0xd')](_0x1e08('0xe'),_0x4a9345,_0x1e08('0xf'));_0xc2f6d9(_0x127097[_0x1e08('0x16')]['message']);}})[_0x1e08('0x17')](function(_0x3afaeb){logger[_0x1e08('0x13')](_0x1e08('0xe'),_0x4a9345,_0x3afaeb);_0x418ff9(_0x3afaeb);});});}exports[_0x1e08('0x18')]=function(_0x384714){var _0x5c70eb=this;return new Promise(function(_0x19914d,_0x226b3c){return db[_0x1e08('0x19')][_0x1e08('0x1a')]({'raw':_0x384714[_0x1e08('0x1b')]?_0x384714['options'][_0x1e08('0x1c')]===undefined?!![]:![]:!![],'where':_0x384714[_0x1e08('0x1b')]?_0x384714[_0x1e08('0x1b')]['where']||null:null,'attributes':_0x384714[_0x1e08('0x1b')]?_0x384714['options'][_0x1e08('0x1d')]||null:null,'limit':_0x384714[_0x1e08('0x1b')]?_0x384714[_0x1e08('0x1b')][_0x1e08('0x1e')]||null:null,'include':_0x384714[_0x1e08('0x1b')]?_0x384714[_0x1e08('0x1b')][_0x1e08('0x1f')]?_[_0x1e08('0x20')](_0x384714[_0x1e08('0x1b')][_0x1e08('0x1f')],function(_0x40b187){return{'model':db[_0x40b187[_0x1e08('0x21')]],'as':_0x40b187['as'],'attributes':_0x40b187['attributes'],'include':_0x40b187[_0x1e08('0x1f')]?_[_0x1e08('0x20')](_0x40b187['include'],function(_0x49c8da){return{'model':db[_0x49c8da[_0x1e08('0x21')]],'as':_0x49c8da['as'],'attributes':_0x49c8da['attributes'],'include':_0x49c8da[_0x1e08('0x1f')]?_['map'](_0x49c8da[_0x1e08('0x1f')],function(_0x5eb9a2){return{'model':db[_0x5eb9a2[_0x1e08('0x21')]],'as':_0x5eb9a2['as'],'attributes':_0x5eb9a2[_0x1e08('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1e08('0xc')](function(_0xaf73b5){logger[_0x1e08('0xd')](_0x1e08('0x18'),_0x384714);logger[_0x1e08('0x10')](_0x1e08('0x18'),_0x384714,JSON[_0x1e08('0x12')](_0xaf73b5));_0x19914d(_0xaf73b5);})[_0x1e08('0x17')](function(_0x4411a8){logger[_0x1e08('0x13')](_0x1e08('0x18'),_0x4411a8['message'],_0x384714);_0x226b3c(_0x5c70eb[_0x1e08('0x13')](0x1f4,_0x4411a8[_0x1e08('0x15')]));});});};exports[_0x1e08('0x22')]=function(_0x230f2a){var _0x15441d=this;return new Promise(function(_0x13e62,_0x2b6baf){return db[_0x1e08('0x19')][_0x1e08('0x23')](_0x230f2a[_0x1e08('0x24')],{'raw':_0x230f2a['options']?_0x230f2a[_0x1e08('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x1e08('0xc')](function(_0x325d6e){logger[_0x1e08('0xd')](_0x1e08('0x22'),_0x230f2a);logger[_0x1e08('0x10')]('CreateVoiceCallReport',_0x230f2a,JSON[_0x1e08('0x12')](_0x325d6e));_0x13e62(_0x325d6e);})[_0x1e08('0x17')](function(_0x20d263){logger[_0x1e08('0x13')](_0x1e08('0x22'),_0x20d263[_0x1e08('0x15')],_0x230f2a);_0x2b6baf(_0x15441d[_0x1e08('0x13')](0x1f4,_0x20d263['message']));});});};exports['UpdateVoiceCallReport']=function(_0x341ef8){var _0x3094c8=this;return new Promise(function(_0x302686,_0x53f8ed){return db[_0x1e08('0x19')][_0x1e08('0x25')](_0x341ef8['body'],{'raw':_0x341ef8[_0x1e08('0x1b')]?_0x341ef8[_0x1e08('0x1b')][_0x1e08('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x341ef8['options']?_0x341ef8['options'][_0x1e08('0x26')]||null:null,'attributes':_0x341ef8[_0x1e08('0x1b')]?_0x341ef8[_0x1e08('0x1b')]['attributes']||null:null,'limit':_0x341ef8[_0x1e08('0x1b')]?_0x341ef8[_0x1e08('0x1b')]['limit']||null:null})[_0x1e08('0xc')](function(_0x591b8d){logger['info'](_0x1e08('0x27'),_0x341ef8);logger[_0x1e08('0x10')](_0x1e08('0x27'),_0x341ef8,JSON['stringify'](_0x591b8d));_0x302686(_0x591b8d);})[_0x1e08('0x17')](function(_0x2c2281){logger[_0x1e08('0x13')](_0x1e08('0x27'),_0x2c2281['message'],_0x341ef8);_0x53f8ed(_0x3094c8[_0x1e08('0x13')](0x1f4,_0x2c2281[_0x1e08('0x15')]));});});}; \ No newline at end of file diff --git a/server/api/voiceChanSpy/index.js b/server/api/voiceChanSpy/index.js new file mode 100644 index 0000000..015c93b --- /dev/null +++ b/server/api/voiceChanSpy/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc134=['util','path','connect-timeout','express','Router','../../components/auth/service','get','isAuthenticated','index','show','post','create','put','/:id','update','exports'];(function(_0x430524,_0x23b611){var _0x3a726d=function(_0x5cc39d){while(--_0x5cc39d){_0x430524['push'](_0x430524['shift']());}};_0x3a726d(++_0x23b611);}(_0xc134,0x1a0));var _0x4c13=function(_0x57fc1e,_0x1dfca2){_0x57fc1e=_0x57fc1e-0x0;var _0x54616e=_0xc134[_0x57fc1e];return _0x54616e;};'use strict';var multer=require('multer');var util=require(_0x4c13('0x0'));var path=require(_0x4c13('0x1'));var timeout=require(_0x4c13('0x2'));var express=require(_0x4c13('0x3'));var router=express[_0x4c13('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4c13('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceChanSpy.controller');router[_0x4c13('0x6')]('/',auth[_0x4c13('0x7')](),controller[_0x4c13('0x8')]);router[_0x4c13('0x6')]('/:id',auth[_0x4c13('0x7')](),controller[_0x4c13('0x9')]);router[_0x4c13('0xa')]('/',auth[_0x4c13('0x7')](),controller[_0x4c13('0xb')]);router[_0x4c13('0xc')](_0x4c13('0xd'),auth[_0x4c13('0x7')](),controller[_0x4c13('0xe')]);router['delete'](_0x4c13('0xd'),auth[_0x4c13('0x7')](),controller['destroy']);module[_0x4c13('0xf')]=router; \ No newline at end of file diff --git a/server/api/voiceChanSpy/voiceChanSpy.attributes.js b/server/api/voiceChanSpy/voiceChanSpy.attributes.js new file mode 100644 index 0000000..97ca58c --- /dev/null +++ b/server/api/voiceChanSpy/voiceChanSpy.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3027=['options','BOOLEAN','sequelize','exports','STRING','getDataValue'];(function(_0x396be2,_0x16d201){var _0x3197ef=function(_0x2c97bb){while(--_0x2c97bb){_0x396be2['push'](_0x396be2['shift']());}};_0x3197ef(++_0x16d201);}(_0x3027,0x128));var _0x7302=function(_0x232be6,_0x58c722){_0x232be6=_0x232be6-0x0;var _0x5c4524=_0x3027[_0x232be6];return _0x5c4524;};'use strict';var Sequelize=require(_0x7302('0x0'));module[_0x7302('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x7302('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x7302('0x2')],'set':function(_0x565732){this['setDataValue']('options',_0x565732?_0x565732['join'](''):[]);},'get':function(){return this[_0x7302('0x3')](_0x7302('0x4'))?this[_0x7302('0x3')](_0x7302('0x4'))['split'](''):[];}},'auth':{'type':Sequelize[_0x7302('0x5')],'defaultValue':![]},'password':{'type':Sequelize[_0x7302('0x2')]},'record':{'type':Sequelize[_0x7302('0x5')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x7302('0x2')]},'description':{'type':Sequelize[_0x7302('0x2')]}}; \ No newline at end of file diff --git a/server/api/voiceChanSpy/voiceChanSpy.controller.js b/server/api/voiceChanSpy/voiceChanSpy.controller.js new file mode 100644 index 0000000..9cedb2a --- /dev/null +++ b/server/api/voiceChanSpy/voiceChanSpy.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1ddc=['merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','get','ChanSpies','UserProfileResource','error','stack','name','send','index','VoiceChanSpy','fieldName','type','model','map','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick'];(function(_0x299c54,_0x5ba02a){var _0x17a1d8=function(_0x25d3fe){while(--_0x25d3fe){_0x299c54['push'](_0x299c54['shift']());}};_0x17a1d8(++_0x5ba02a);}(_0x1ddc,0x6e));var _0xc1dd=function(_0x3ea99a,_0x4f3f9d){_0x3ea99a=_0x3ea99a-0x0;var _0x579c5b=_0x1ddc[_0x3ea99a];return _0x579c5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc1dd('0x0'));var zipdir=require(_0xc1dd('0x1'));var jsonpatch=require(_0xc1dd('0x2'));var rp=require('request-promise');var moment=require(_0xc1dd('0x3'));var BPromise=require(_0xc1dd('0x4'));var Mustache=require('mustache');var util=require(_0xc1dd('0x5'));var path=require(_0xc1dd('0x6'));var sox=require('sox');var csv=require(_0xc1dd('0x7'));var ejs=require(_0xc1dd('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc1dd('0x9'));var squel=require(_0xc1dd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc1dd('0xb'));var toCsv=require(_0xc1dd('0x7'));var querystring=require(_0xc1dd('0xc'));var Papa=require(_0xc1dd('0xd'));var Redis=require('ioredis');var authService=require(_0xc1dd('0xe'));var qs=require(_0xc1dd('0xf'));var as=require(_0xc1dd('0x10'));var hardwareService=require(_0xc1dd('0x11'));var logger=require('../../config/logger')(_0xc1dd('0x12'));var utils=require(_0xc1dd('0x13'));var config=require(_0xc1dd('0x14'));var licenseUtil=require(_0xc1dd('0x15'));var db=require(_0xc1dd('0x16'))['db'];function respondWithStatusCode(_0x2613c9,_0x1d9815){_0x1d9815=_0x1d9815||0xcc;return function(_0x83a291){if(_0x83a291){return _0x2613c9[_0xc1dd('0x17')](_0x1d9815);}return _0x2613c9[_0xc1dd('0x18')](_0x1d9815)[_0xc1dd('0x19')]();};}function respondWithResult(_0x576fc1,_0x3d4c7f){_0x3d4c7f=_0x3d4c7f||0xc8;return function(_0x30f49a){if(_0x30f49a){return _0x576fc1[_0xc1dd('0x18')](_0x3d4c7f)[_0xc1dd('0x1a')](_0x30f49a);}};}function respondWithFilteredResult(_0x104177,_0x52a9b8){return function(_0xe5a17a){if(_0xe5a17a){var _0x76994c=typeof _0x52a9b8[_0xc1dd('0x1b')]===_0xc1dd('0x1c')&&typeof _0x52a9b8['limit']==='undefined';var _0x3e7e6f=_0xe5a17a['count'];var _0x35139a=_0x76994c?0x0:_0x52a9b8['offset'];var _0x6198a7=_0x76994c?_0xe5a17a[_0xc1dd('0x1d')]:_0x52a9b8[_0xc1dd('0x1b')]+_0x52a9b8[_0xc1dd('0x1e')];var _0x312054;if(_0x6198a7>=_0x3e7e6f){_0x6198a7=_0x3e7e6f;_0x312054=0xc8;}else{_0x312054=0xce;}_0x104177[_0xc1dd('0x18')](_0x312054);return _0x104177['set'](_0xc1dd('0x1f'),_0x35139a+'-'+_0x6198a7+'/'+_0x3e7e6f)[_0xc1dd('0x1a')](_0xe5a17a);}return null;};}function patchUpdates(_0x5e99a6){return function(_0x3d22bb){try{jsonpatch[_0xc1dd('0x20')](_0x3d22bb,_0x5e99a6,!![]);}catch(_0x3650fd){return BPromise[_0xc1dd('0x21')](_0x3650fd);}return _0x3d22bb[_0xc1dd('0x22')]();};}function saveUpdates(_0x266147,_0x228626){return function(_0x60ef4a){if(_0x60ef4a){return _0x60ef4a['update'](_0x266147)[_0xc1dd('0x23')](function(_0x16a2b0){return _0x16a2b0;});}return null;};}function removeEntity(_0x22f9be,_0x3363ff){return function(_0x5f4c9e){if(_0x5f4c9e){return _0x5f4c9e[_0xc1dd('0x24')]()[_0xc1dd('0x23')](function(){var _0x30b4b8=_0x5f4c9e[_0xc1dd('0x25')]({'plain':!![]});var _0x16fb8b=_0xc1dd('0x26');return db[_0xc1dd('0x27')][_0xc1dd('0x24')]({'where':{'type':_0x16fb8b,'resourceId':_0x30b4b8['id']}})[_0xc1dd('0x23')](function(){return _0x5f4c9e;});})[_0xc1dd('0x23')](function(){_0x22f9be[_0xc1dd('0x18')](0xcc)[_0xc1dd('0x19')]();});}};}function handleEntityNotFound(_0x1d3b04,_0xc6607f){return function(_0x5b8edc){if(!_0x5b8edc){_0x1d3b04['sendStatus'](0x194);}return _0x5b8edc;};}function handleError(_0x388f35,_0x19d818){_0x19d818=_0x19d818||0x1f4;return function(_0x25a651){logger[_0xc1dd('0x28')](_0x25a651[_0xc1dd('0x29')]);if(_0x25a651[_0xc1dd('0x2a')]){delete _0x25a651[_0xc1dd('0x2a')];}_0x388f35['status'](_0x19d818)[_0xc1dd('0x2b')](_0x25a651);};}exports[_0xc1dd('0x2c')]=function(_0x34abb7,_0xed3d4c){var _0x5ce3eb={},_0x14b1d4={},_0x2fe0ba={'count':0x0,'rows':[]};var _0x2938e2=_['map'](db[_0xc1dd('0x2d')]['rawAttributes'],function(_0x26f119){return{'name':_0x26f119[_0xc1dd('0x2e')],'type':_0x26f119[_0xc1dd('0x2f')]['key']};});_0x14b1d4[_0xc1dd('0x30')]=_[_0xc1dd('0x31')](_0x2938e2,_0xc1dd('0x2a'));_0x14b1d4[_0xc1dd('0x32')]=_['keys'](_0x34abb7[_0xc1dd('0x32')]);_0x14b1d4[_0xc1dd('0x33')]=_[_0xc1dd('0x34')](_0x14b1d4['model'],_0x14b1d4['query']);_0x5ce3eb[_0xc1dd('0x35')]=_[_0xc1dd('0x34')](_0x14b1d4[_0xc1dd('0x30')],qs[_0xc1dd('0x36')](_0x34abb7[_0xc1dd('0x32')]['fields']));_0x5ce3eb[_0xc1dd('0x35')]=_0x5ce3eb[_0xc1dd('0x35')]['length']?_0x5ce3eb[_0xc1dd('0x35')]:_0x14b1d4[_0xc1dd('0x30')];if(!_0x34abb7[_0xc1dd('0x32')]['hasOwnProperty'](_0xc1dd('0x37'))){_0x5ce3eb['limit']=qs[_0xc1dd('0x1e')](_0x34abb7[_0xc1dd('0x32')]['limit']);_0x5ce3eb[_0xc1dd('0x1b')]=qs[_0xc1dd('0x1b')](_0x34abb7[_0xc1dd('0x32')][_0xc1dd('0x1b')]);}_0x5ce3eb[_0xc1dd('0x38')]=qs[_0xc1dd('0x39')](_0x34abb7[_0xc1dd('0x32')][_0xc1dd('0x39')]);_0x5ce3eb[_0xc1dd('0x3a')]=qs[_0xc1dd('0x33')](_[_0xc1dd('0x3b')](_0x34abb7[_0xc1dd('0x32')],_0x14b1d4['filters']),_0x2938e2);if(_0x34abb7[_0xc1dd('0x32')]['filter']){_0x5ce3eb[_0xc1dd('0x3a')]=_[_0xc1dd('0x3c')](_0x5ce3eb[_0xc1dd('0x3a')],{'$or':_[_0xc1dd('0x31')](_0x2938e2,function(_0x4764d2){if(_0x4764d2[_0xc1dd('0x2f')]!==_0xc1dd('0x3d')){var _0x583688={};_0x583688[_0x4764d2[_0xc1dd('0x2a')]]={'$like':'%'+_0x34abb7['query'][_0xc1dd('0x3e')]+'%'};return _0x583688;}})});}_0x5ce3eb=_[_0xc1dd('0x3c')]({},_0x5ce3eb,_0x34abb7[_0xc1dd('0x3f')]);var _0x27bea1={'where':_0x5ce3eb[_0xc1dd('0x3a')]};return db[_0xc1dd('0x2d')][_0xc1dd('0x1d')](_0x27bea1)['then'](function(_0x2d903f){_0x2fe0ba[_0xc1dd('0x1d')]=_0x2d903f;if(_0x34abb7[_0xc1dd('0x32')][_0xc1dd('0x40')]){_0x5ce3eb[_0xc1dd('0x41')]=[{'all':!![]}];}return db[_0xc1dd('0x2d')][_0xc1dd('0x42')](_0x5ce3eb);})[_0xc1dd('0x23')](function(_0x445586){_0x2fe0ba[_0xc1dd('0x43')]=_0x445586;return _0x2fe0ba;})[_0xc1dd('0x23')](respondWithFilteredResult(_0xed3d4c,_0x5ce3eb))[_0xc1dd('0x44')](handleError(_0xed3d4c,null));};exports[_0xc1dd('0x45')]=function(_0x5d5bdb,_0x285b38){var _0x2f50f5={'raw':![],'where':{'id':_0x5d5bdb[_0xc1dd('0x46')]['id']}},_0x3f3aae={};_0x3f3aae[_0xc1dd('0x30')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x2d')][_0xc1dd('0x48')]);_0x3f3aae['query']=_['keys'](_0x5d5bdb[_0xc1dd('0x32')]);_0x3f3aae[_0xc1dd('0x33')]=_[_0xc1dd('0x34')](_0x3f3aae[_0xc1dd('0x30')],_0x3f3aae[_0xc1dd('0x32')]);_0x2f50f5[_0xc1dd('0x35')]=_['intersection'](_0x3f3aae[_0xc1dd('0x30')],qs[_0xc1dd('0x36')](_0x5d5bdb[_0xc1dd('0x32')][_0xc1dd('0x36')]));_0x2f50f5[_0xc1dd('0x35')]=_0x2f50f5['attributes'][_0xc1dd('0x49')]?_0x2f50f5[_0xc1dd('0x35')]:_0x3f3aae['model'];if(_0x5d5bdb[_0xc1dd('0x32')][_0xc1dd('0x40')]){_0x2f50f5[_0xc1dd('0x41')]=[{'all':!![]}];}_0x2f50f5=_['merge']({},_0x2f50f5,_0x5d5bdb[_0xc1dd('0x3f')]);return db[_0xc1dd('0x2d')]['find'](_0x2f50f5)[_0xc1dd('0x23')](handleEntityNotFound(_0x285b38,null))[_0xc1dd('0x23')](respondWithResult(_0x285b38,null))[_0xc1dd('0x44')](handleError(_0x285b38,null));};exports[_0xc1dd('0x4a')]=function(_0x55fbc9,_0x53763d){return db[_0xc1dd('0x2d')]['create'](_0x55fbc9['body'],{})['then'](function(_0x16991d){var _0x1e2319=_0x55fbc9[_0xc1dd('0x4b')]['get']({'plain':!![]});if(!_0x1e2319)throw new Error(_0xc1dd('0x4c'));if(_0x1e2319[_0xc1dd('0x4d')]===_0xc1dd('0x4b')){var _0x9e7cb7=_0x16991d[_0xc1dd('0x25')]({'plain':!![]});var _0x745e54=_0xc1dd('0x26');return db[_0xc1dd('0x4e')][_0xc1dd('0x4f')]({'where':{'name':_0x745e54,'userProfileId':_0x1e2319[_0xc1dd('0x50')]},'raw':!![]})[_0xc1dd('0x23')](function(_0x50ce4c){if(_0x50ce4c&&_0x50ce4c[_0xc1dd('0x51')]===0x0){return db[_0xc1dd('0x27')]['create']({'name':_0x9e7cb7[_0xc1dd('0x2a')],'resourceId':_0x9e7cb7['id'],'type':_0x50ce4c[_0xc1dd('0x2a')],'sectionId':_0x50ce4c['id']},{})[_0xc1dd('0x23')](function(){return _0x16991d;});}else{return _0x16991d;}})['catch'](function(_0xe1bf9a){logger['error'](_0xc1dd('0x52'),_0xe1bf9a);throw _0xe1bf9a;});}return _0x16991d;})[_0xc1dd('0x23')](respondWithResult(_0x53763d,0xc9))[_0xc1dd('0x44')](handleError(_0x53763d,null));};exports[_0xc1dd('0x53')]=function(_0x343fc2,_0x5980c8){if(_0x343fc2['body']['id']){delete _0x343fc2[_0xc1dd('0x54')]['id'];}return db[_0xc1dd('0x2d')][_0xc1dd('0x4f')]({'where':{'id':_0x343fc2[_0xc1dd('0x46')]['id']}})[_0xc1dd('0x23')](handleEntityNotFound(_0x5980c8,null))[_0xc1dd('0x23')](saveUpdates(_0x343fc2[_0xc1dd('0x54')],null))[_0xc1dd('0x23')](respondWithResult(_0x5980c8,null))[_0xc1dd('0x44')](handleError(_0x5980c8,null));};exports[_0xc1dd('0x24')]=function(_0x261028,_0x2cd794){return db[_0xc1dd('0x2d')][_0xc1dd('0x4f')]({'where':{'id':_0x261028[_0xc1dd('0x46')]['id']}})[_0xc1dd('0x23')](handleEntityNotFound(_0x2cd794,null))[_0xc1dd('0x23')](removeEntity(_0x2cd794,null))[_0xc1dd('0x44')](handleError(_0x2cd794,null));}; \ No newline at end of file diff --git a/server/api/voiceChanSpy/voiceChanSpy.model.js b/server/api/voiceChanSpy/voiceChanSpy.model.js new file mode 100644 index 0000000..6d7b8d9 --- /dev/null +++ b/server/api/voiceChanSpy/voiceChanSpy.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x52b2=['concat','internal','User','findAll','then','exports','define','voice_chanspy','VoiceExtension','catch','bulkCreate','lodash','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor','length'];(function(_0x51db0c,_0x346f5a){var _0xfa1c1e=function(_0x2f9478){while(--_0x2f9478){_0x51db0c['push'](_0x51db0c['shift']());}};_0xfa1c1e(++_0x346f5a);}(_0x52b2,0x158));var _0x252b=function(_0x37ffad,_0x443124){_0x37ffad=_0x37ffad-0x0;var _0x290d04=_0x52b2[_0x37ffad];return _0x290d04;};'use strict';var _=require(_0x252b('0x0'));var util=require('util');var BPromise=require(_0x252b('0x1'));var attributes=require(_0x252b('0x2'));var getUserApplications=function(_0x38ab10,_0xe3a3a4,_0x4dd102){var _0x20eadc=0x1;var _0x3bcef2=[];var _0x352179={'context':_0xe3a3a4[_0x252b('0x3')]||_0x252b('0x4'),'exten':util[_0x252b('0x5')](_0x252b('0x6'),_0x38ab10[_0x252b('0x7')],_0x4dd102),'type':_0x252b('0x8'),'isApp':![],'ChanSpyId':_0x38ab10['id'],'UserId':_0xe3a3a4['id']};_0x3bcef2[_0x252b('0x9')](_[_0x252b('0xa')]({'app':_0x252b('0xb'),'appdata':util[_0x252b('0x5')](_0x252b('0xc'),_0x252b('0xd')),'priority':_0x20eadc++},_0x352179));if(_0x38ab10[_0x252b('0xe')]){_0x3bcef2[_0x252b('0x9')](_[_0x252b('0xa')]({'app':_0x252b('0xf'),'appdata':util[_0x252b('0x5')]('${UNIQUEID}.%s,a',_0x38ab10[_0x252b('0x10')]),'priority':_0x20eadc++},_0x352179));}if(_0x38ab10[_0x252b('0x11')]){_0x3bcef2['push'](_[_0x252b('0xa')]({'app':_0x252b('0x12'),'appdata':_0x38ab10[_0x252b('0x13')],'priority':_0x20eadc++},_0x352179));}_0x3bcef2[_0x252b('0x9')](_[_0x252b('0xa')]({'app':'ChanSpy','appdata':util[_0x252b('0x5')](_0x252b('0x14'),_0xe3a3a4[_0x252b('0x15')],_0x38ab10[_0x252b('0x16')]?_0x38ab10[_0x252b('0x16')][_0x252b('0x17')](''):''),'priority':_0x20eadc++},_0x352179));if(_0x38ab10['record']){_0x3bcef2[_0x252b('0x9')](_[_0x252b('0xa')]({'app':_0x252b('0x18'),'priority':_0x20eadc++},_0x352179));}return _0x3bcef2;};var getChanSpyApplications=function(_0x2c49fe,_0x5cc762){var _0x2eab33=[];for(var _0x141490=0x0,_0x38f4fe=0x1;_0x141490<_0x5cc762[_0x252b('0x19')];_0x141490++,_0x38f4fe=0x1){_0x2eab33=_0x2eab33[_0x252b('0x1a')](getUserApplications(_0x2c49fe,_0x5cc762[_0x141490],_0x5cc762[_0x141490][_0x252b('0x1b')]));if(_0x5cc762[_0x141490][_0x252b('0x1b')]!=_0x5cc762[_0x141490][_0x252b('0x15')]){_0x2eab33=_0x2eab33[_0x252b('0x1a')](getUserApplications(_0x2c49fe,_0x5cc762[_0x141490],_0x5cc762[_0x141490]['name']));}}return _0x2eab33;};var getChanSpyPromise=function(_0x116b62,_0x5d6019){return new BPromise(function(_0x1a607e,_0x2d05e5){return _0x116b62[_0x252b('0x1c')][_0x252b('0x1d')]({'attributes':['id',_0x252b('0x15'),'internal'],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0x252b('0x1e')](function(_0x4045f9){if(_0x4045f9){return _0x1a607e(getChanSpyApplications(_0x5d6019,_0x4045f9));}return _0x1a607e([]);})['catch'](function(_0x4129ac){_0x2d05e5(_0x4129ac);});});};module[_0x252b('0x1f')]=function(_0x229fcd,_0x99852c){var _0x24767c=_0x229fcd['models'];return _0x229fcd[_0x252b('0x20')]('VoiceChanSpy',attributes,{'tableName':_0x252b('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1645bb,_0x49920a,_0x1c1c33){return getChanSpyPromise(_0x24767c,_0x1645bb)['then'](function(_0x3aba2f){if(_0x3aba2f&&_0x3aba2f[_0x252b('0x19')]){return _0x24767c[_0x252b('0x22')]['bulkCreate'](_0x3aba2f);}})['then'](function(){_0x1c1c33();})[_0x252b('0x23')](function(_0x308872){_0x1c1c33(_0x308872);});},'afterUpdate':function(_0x4e7e0f,_0x5ab10,_0x3965e3){return _0x24767c[_0x252b('0x22')]['destroy']({'where':{'ChanSpyId':_0x4e7e0f['id']}})['then'](function(){return getChanSpyPromise(_0x24767c,_0x4e7e0f);})['then'](function(_0x2eaf31){if(_0x2eaf31&&_0x2eaf31['length']){return _0x24767c[_0x252b('0x22')][_0x252b('0x24')](_0x2eaf31);}})[_0x252b('0x1e')](function(){_0x3965e3();})[_0x252b('0x23')](function(_0x5300a2){_0x3965e3(_0x5300a2);});},'afterDestroy':function(_0x2b24a3,_0x57876d,_0x34e55c){return _0x24767c[_0x252b('0x22')]['destroy']({'where':{'ChanSpyId':_0x2b24a3['id']}})['then'](function(){_0x34e55c();})[_0x252b('0x23')](function(_0x13cf2d){_0x34e55c(_0x13cf2d);});}}});}; \ No newline at end of file diff --git a/server/api/voiceChanSpy/voiceChanSpy.rpc.js b/server/api/voiceChanSpy/voiceChanSpy.rpc.js new file mode 100644 index 0000000..fb86462 --- /dev/null +++ b/server/api/voiceChanSpy/voiceChanSpy.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x41bb=['VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x9df2ab,_0xbf33b7){var _0x4273a4=function(_0x4444eb){while(--_0x4444eb){_0x9df2ab['push'](_0x9df2ab['shift']());}};_0x4273a4(++_0xbf33b7);}(_0x41bb,0xc5));var _0xb41b=function(_0x690c93,_0x3941e8){_0x690c93=_0x690c93-0x0;var _0x4b5bd5=_0x41bb[_0x690c93];return _0x4b5bd5;};'use strict';var _=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var moment=require('moment');var BPromise=require(_0xb41b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb41b('0x3'));var db=require(_0xb41b('0x4'))['db'];var utils=require(_0xb41b('0x5'));var logger=require(_0xb41b('0x6'))('rpc');var config=require(_0xb41b('0x7'));var jayson=require(_0xb41b('0x8'));var client=jayson[_0xb41b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5455ce,_0x497242,_0x2704f0){return new BPromise(function(_0x29c30d,_0x53722a){return client[_0xb41b('0xa')](_0x5455ce,_0x2704f0)[_0xb41b('0xb')](function(_0x11b8b2){logger[_0xb41b('0xc')](_0xb41b('0xd'),_0x497242,_0xb41b('0xe'));logger[_0xb41b('0xf')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x497242,_0xb41b('0xe'),JSON['stringify'](_0x11b8b2));if(_0x11b8b2[_0xb41b('0x10')]){if(_0x11b8b2[_0xb41b('0x10')][_0xb41b('0x11')]===0x1f4){logger[_0xb41b('0x10')](_0xb41b('0xd'),_0x497242,_0x11b8b2['error'][_0xb41b('0x12')]);return _0x53722a(_0x11b8b2[_0xb41b('0x10')][_0xb41b('0x12')]);}logger[_0xb41b('0x10')](_0xb41b('0xd'),_0x497242,_0x11b8b2['error']['message']);return _0x29c30d(_0x11b8b2['error'][_0xb41b('0x12')]);}else{logger[_0xb41b('0xc')](_0xb41b('0xd'),_0x497242,_0xb41b('0xe'));_0x29c30d(_0x11b8b2[_0xb41b('0x13')]['message']);}})[_0xb41b('0x14')](function(_0xd0b6b5){logger[_0xb41b('0x10')](_0xb41b('0xd'),_0x497242,_0xd0b6b5);_0x53722a(_0xd0b6b5);});});} \ No newline at end of file diff --git a/server/api/voiceContext/index.js b/server/api/voiceContext/index.js new file mode 100644 index 0000000..7b9b5d9 --- /dev/null +++ b/server/api/voiceContext/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xef85=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x14e06c,_0x219a79){var _0x1a0533=function(_0x54dd04){while(--_0x54dd04){_0x14e06c['push'](_0x14e06c['shift']());}};_0x1a0533(++_0x219a79);}(_0xef85,0x1ba));var _0x5ef8=function(_0x11f0a2,_0x1a1c6f){_0x11f0a2=_0x11f0a2-0x0;var _0x1da82b=_0xef85[_0x11f0a2];return _0x1da82b;};'use strict';var multer=require(_0x5ef8('0x0'));var util=require(_0x5ef8('0x1'));var path=require(_0x5ef8('0x2'));var timeout=require(_0x5ef8('0x3'));var express=require('express');var router=express[_0x5ef8('0x4')]();var fs_extra=require(_0x5ef8('0x5'));var auth=require(_0x5ef8('0x6'));var interaction=require(_0x5ef8('0x7'));var config=require(_0x5ef8('0x8'));var controller=require(_0x5ef8('0x9'));router[_0x5ef8('0xa')]('/',auth[_0x5ef8('0xb')](),controller[_0x5ef8('0xc')]);router['get'](_0x5ef8('0xd'),auth[_0x5ef8('0xb')](),controller[_0x5ef8('0xe')]);router[_0x5ef8('0xf')]('/',auth[_0x5ef8('0xb')](),controller[_0x5ef8('0x10')]);router[_0x5ef8('0x11')](_0x5ef8('0xd'),auth[_0x5ef8('0xb')](),controller[_0x5ef8('0x12')]);router[_0x5ef8('0x13')](_0x5ef8('0xd'),auth[_0x5ef8('0xb')](),controller[_0x5ef8('0x14')]);module[_0x5ef8('0x15')]=router; \ No newline at end of file diff --git a/server/api/voiceContext/voiceContext.attributes.js b/server/api/voiceContext/voiceContext.attributes.js new file mode 100644 index 0000000..5821814 --- /dev/null +++ b/server/api/voiceContext/voiceContext.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6dbc=['exports','name','STRING','BOOLEAN','sequelize'];(function(_0x84ae3,_0x5a3052){var _0x59401b=function(_0x58b3d5){while(--_0x58b3d5){_0x84ae3['push'](_0x84ae3['shift']());}};_0x59401b(++_0x5a3052);}(_0x6dbc,0x1e4));var _0xc6db=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x6dbc[_0x565c49];return _0x20ca34;};'use strict';var Sequelize=require(_0xc6db('0x0'));module[_0xc6db('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc6db('0x2')},'description':{'type':Sequelize[_0xc6db('0x3')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xc6db('0x4')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/voiceContext/voiceContext.controller.js b/server/api/voiceContext/voiceContext.controller.js new file mode 100644 index 0000000..fbb68ee --- /dev/null +++ b/server/api/voiceContext/voiceContext.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf415=['offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','Contexts','sendStatus','stack','name','send','map','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','order','sort','pick','filter','where','type','VIRTUAL','options','VoiceContext','include','findAll','rows','params','includeAll','find','catch','create','body','join','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','root','chan_sip.so','Reload','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message','result','status','end','json'];(function(_0x363e6f,_0x342898){var _0x14cf12=function(_0x140849){while(--_0x140849){_0x363e6f['push'](_0x363e6f['shift']());}};_0x14cf12(++_0x342898);}(_0xf415,0x1dd));var _0x5f41=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0xf415[_0x13b02f];return _0x12e9a6;};'use strict';var emlformat=require(_0x5f41('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5f41('0x1'));var jsonpatch=require(_0x5f41('0x2'));var rp=require('request-promise');var moment=require(_0x5f41('0x3'));var BPromise=require(_0x5f41('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5f41('0x5'));var sox=require(_0x5f41('0x6'));var csv=require('to-csv');var ejs=require(_0x5f41('0x7'));var fs=require('fs');var fs_extra=require(_0x5f41('0x8'));var _=require(_0x5f41('0x9'));var squel=require(_0x5f41('0xa'));var crypto=require('crypto');var jsforce=require(_0x5f41('0xb'));var deskjs=require(_0x5f41('0xc'));var toCsv=require(_0x5f41('0xd'));var querystring=require(_0x5f41('0xe'));var Papa=require(_0x5f41('0xf'));var Redis=require(_0x5f41('0x10'));var authService=require(_0x5f41('0x11'));var qs=require(_0x5f41('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5f41('0x13'));var logger=require(_0x5f41('0x14'))(_0x5f41('0x15'));var utils=require(_0x5f41('0x16'));var config=require(_0x5f41('0x17'));var licenseUtil=require(_0x5f41('0x18'));var db=require(_0x5f41('0x19'))['db'];var jayson=require(_0x5f41('0x1a'));var client=jayson[_0x5f41('0x1b')][_0x5f41('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x20e02d,_0x2a1727,_0x3613aa,_0x159cce){return new BPromise(function(_0x47bef5,_0x3f48e1){var _0x5cd230=_0x159cce||client;return _0x5cd230[_0x5f41('0x1d')](_0x20e02d,_0x3613aa)[_0x5f41('0x1e')](function(_0x5da658){logger[_0x5f41('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x2a1727,_0x5f41('0x20'));logger[_0x5f41('0x21')](_0x5f41('0x22'),_0x2a1727,'request\x20sent',JSON[_0x5f41('0x23')](_0x5da658));if(_0x5da658[_0x5f41('0x24')]){if(_0x5da658[_0x5f41('0x24')]['code']===0x1f4){logger[_0x5f41('0x24')](_0x5f41('0x25'),_0x2a1727,_0x5da658[_0x5f41('0x24')][_0x5f41('0x26')]);return _0x3f48e1(_0x5da658[_0x5f41('0x24')][_0x5f41('0x26')]);}logger[_0x5f41('0x24')](_0x5f41('0x25'),_0x2a1727,_0x5da658[_0x5f41('0x24')][_0x5f41('0x26')]);return _0x47bef5(_0x5da658[_0x5f41('0x24')][_0x5f41('0x26')]);}else{logger[_0x5f41('0x1f')](_0x5f41('0x25'),_0x2a1727,_0x5f41('0x20'));_0x47bef5(_0x5da658[_0x5f41('0x27')][_0x5f41('0x26')]);}})['catch'](function(_0x1020d0){logger[_0x5f41('0x24')](_0x5f41('0x25'),_0x2a1727,_0x1020d0);_0x3f48e1(_0x1020d0);});});}function respondWithStatusCode(_0x4d6720,_0x549131){_0x549131=_0x549131||0xcc;return function(_0x3443fb){if(_0x3443fb){return _0x4d6720['sendStatus'](_0x549131);}return _0x4d6720[_0x5f41('0x28')](_0x549131)[_0x5f41('0x29')]();};}function respondWithResult(_0x20c7b5,_0x5ef051){_0x5ef051=_0x5ef051||0xc8;return function(_0x11f84b){if(_0x11f84b){return _0x20c7b5['status'](_0x5ef051)[_0x5f41('0x2a')](_0x11f84b);}};}function respondWithFilteredResult(_0x15e70c,_0x471aed){return function(_0x2da2f1){if(_0x2da2f1){var _0x19119d=typeof _0x471aed[_0x5f41('0x2b')]===_0x5f41('0x2c')&&typeof _0x471aed[_0x5f41('0x2d')]==='undefined';var _0x1305f0=_0x2da2f1[_0x5f41('0x2e')];var _0x2865ff=_0x19119d?0x0:_0x471aed[_0x5f41('0x2b')];var _0xcd345a=_0x19119d?_0x2da2f1['count']:_0x471aed[_0x5f41('0x2b')]+_0x471aed[_0x5f41('0x2d')];var _0x54969a;if(_0xcd345a>=_0x1305f0){_0xcd345a=_0x1305f0;_0x54969a=0xc8;}else{_0x54969a=0xce;}_0x15e70c[_0x5f41('0x28')](_0x54969a);return _0x15e70c[_0x5f41('0x2f')](_0x5f41('0x30'),_0x2865ff+'-'+_0xcd345a+'/'+_0x1305f0)[_0x5f41('0x2a')](_0x2da2f1);}return null;};}function patchUpdates(_0x391e6e){return function(_0x38830d){try{jsonpatch[_0x5f41('0x31')](_0x38830d,_0x391e6e,!![]);}catch(_0x3378e0){return BPromise['reject'](_0x3378e0);}return _0x38830d[_0x5f41('0x32')]();};}function saveUpdates(_0x104a37,_0x8cf4ef){return function(_0xc223a5){if(_0xc223a5){return _0xc223a5[_0x5f41('0x33')](_0x104a37)[_0x5f41('0x1e')](function(_0x4ce13b){return _0x4ce13b;});}return null;};}function removeEntity(_0x1e9576,_0x5cc45a){return function(_0x504df4){if(_0x504df4){return _0x504df4[_0x5f41('0x34')]()[_0x5f41('0x1e')](function(){var _0x4c44fb=_0x504df4[_0x5f41('0x35')]({'plain':!![]});var _0x1ce9d2=_0x5f41('0x36');return db['UserProfileResource'][_0x5f41('0x34')]({'where':{'type':_0x1ce9d2,'resourceId':_0x4c44fb['id']}})[_0x5f41('0x1e')](function(){return _0x504df4;});})[_0x5f41('0x1e')](function(){_0x1e9576['status'](0xcc)[_0x5f41('0x29')]();});}};}function handleEntityNotFound(_0x11ac5c,_0x39a72b){return function(_0x19b5ea){if(!_0x19b5ea){_0x11ac5c[_0x5f41('0x37')](0x194);}return _0x19b5ea;};}function handleError(_0xa90d72,_0x3c0301){_0x3c0301=_0x3c0301||0x1f4;return function(_0x3593e8){logger['error'](_0x3593e8[_0x5f41('0x38')]);if(_0x3593e8['name']){delete _0x3593e8[_0x5f41('0x39')];}_0xa90d72[_0x5f41('0x28')](_0x3c0301)[_0x5f41('0x3a')](_0x3593e8);};}exports['index']=function(_0x583fb9,_0x54f301){var _0x2f72b2={},_0x59b453={},_0x507c22={'count':0x0,'rows':[]};var _0x39a521=_[_0x5f41('0x3b')](db['VoiceContext'][_0x5f41('0x3c')],function(_0x3c76cc){return{'name':_0x3c76cc['fieldName'],'type':_0x3c76cc['type']['key']};});_0x59b453[_0x5f41('0x3d')]=_[_0x5f41('0x3b')](_0x39a521,_0x5f41('0x39'));_0x59b453[_0x5f41('0x3e')]=_[_0x5f41('0x3f')](_0x583fb9[_0x5f41('0x3e')]);_0x59b453[_0x5f41('0x40')]=_[_0x5f41('0x41')](_0x59b453['model'],_0x59b453[_0x5f41('0x3e')]);_0x2f72b2[_0x5f41('0x42')]=_['intersection'](_0x59b453[_0x5f41('0x3d')],qs[_0x5f41('0x43')](_0x583fb9[_0x5f41('0x3e')][_0x5f41('0x43')]));_0x2f72b2[_0x5f41('0x42')]=_0x2f72b2['attributes'][_0x5f41('0x44')]?_0x2f72b2[_0x5f41('0x42')]:_0x59b453[_0x5f41('0x3d')];if(!_0x583fb9['query']['hasOwnProperty']('nolimit')){_0x2f72b2[_0x5f41('0x2d')]=qs[_0x5f41('0x2d')](_0x583fb9['query'][_0x5f41('0x2d')]);_0x2f72b2[_0x5f41('0x2b')]=qs[_0x5f41('0x2b')](_0x583fb9[_0x5f41('0x3e')]['offset']);}_0x2f72b2[_0x5f41('0x45')]=qs[_0x5f41('0x46')](_0x583fb9[_0x5f41('0x3e')][_0x5f41('0x46')]);_0x2f72b2['where']=qs[_0x5f41('0x40')](_[_0x5f41('0x47')](_0x583fb9[_0x5f41('0x3e')],_0x59b453[_0x5f41('0x40')]),_0x39a521);if(_0x583fb9['query'][_0x5f41('0x48')]){_0x2f72b2[_0x5f41('0x49')]=_['merge'](_0x2f72b2[_0x5f41('0x49')],{'$or':_[_0x5f41('0x3b')](_0x39a521,function(_0x529c21){if(_0x529c21[_0x5f41('0x4a')]!==_0x5f41('0x4b')){var _0x3c56ee={};_0x3c56ee[_0x529c21[_0x5f41('0x39')]]={'$like':'%'+_0x583fb9[_0x5f41('0x3e')][_0x5f41('0x48')]+'%'};return _0x3c56ee;}})});}_0x2f72b2=_['merge']({},_0x2f72b2,_0x583fb9[_0x5f41('0x4c')]);var _0x50e780={'where':_0x2f72b2['where']};return db[_0x5f41('0x4d')][_0x5f41('0x2e')](_0x50e780)[_0x5f41('0x1e')](function(_0x10398d){_0x507c22[_0x5f41('0x2e')]=_0x10398d;if(_0x583fb9[_0x5f41('0x3e')]['includeAll']){_0x2f72b2[_0x5f41('0x4e')]=[{'all':!![]}];}return db['VoiceContext'][_0x5f41('0x4f')](_0x2f72b2);})[_0x5f41('0x1e')](function(_0x43ed86){_0x507c22[_0x5f41('0x50')]=_0x43ed86;return _0x507c22;})[_0x5f41('0x1e')](respondWithFilteredResult(_0x54f301,_0x2f72b2))['catch'](handleError(_0x54f301,null));};exports['show']=function(_0x5917b3,_0xcbbff9){var _0x1898a2={'raw':![],'where':{'id':_0x5917b3[_0x5f41('0x51')]['id']}},_0xdfe9e2={};_0xdfe9e2[_0x5f41('0x3d')]=_['keys'](db[_0x5f41('0x4d')][_0x5f41('0x3c')]);_0xdfe9e2[_0x5f41('0x3e')]=_[_0x5f41('0x3f')](_0x5917b3[_0x5f41('0x3e')]);_0xdfe9e2[_0x5f41('0x40')]=_['intersection'](_0xdfe9e2[_0x5f41('0x3d')],_0xdfe9e2[_0x5f41('0x3e')]);_0x1898a2[_0x5f41('0x42')]=_['intersection'](_0xdfe9e2[_0x5f41('0x3d')],qs['fields'](_0x5917b3['query'][_0x5f41('0x43')]));_0x1898a2['attributes']=_0x1898a2['attributes']['length']?_0x1898a2['attributes']:_0xdfe9e2[_0x5f41('0x3d')];if(_0x5917b3[_0x5f41('0x3e')][_0x5f41('0x52')]){_0x1898a2[_0x5f41('0x4e')]=[{'all':!![]}];}_0x1898a2=_['merge']({},_0x1898a2,_0x5917b3[_0x5f41('0x4c')]);return db['VoiceContext'][_0x5f41('0x53')](_0x1898a2)['then'](handleEntityNotFound(_0xcbbff9,null))[_0x5f41('0x1e')](respondWithResult(_0xcbbff9,null))[_0x5f41('0x54')](handleError(_0xcbbff9,null));};exports[_0x5f41('0x55')]=function(_0x3a2f54,_0x170c2c,_0x36cebb){var _0x734bc9;return db[_0x5f41('0x4d')][_0x5f41('0x55')](_0x3a2f54[_0x5f41('0x56')],{'raw':!![]})[_0x5f41('0x1e')](function(_0x2f9db3){_0x734bc9=_0x2f9db3;return db['VoiceContext'][_0x5f41('0x4f')]({'raw':!![]});})[_0x5f41('0x1e')](function(_0x2344c2){var _0x156b40=fs['readFileSync'](path[_0x5f41('0x57')](config['root'],_0x5f41('0x58')),_0x5f41('0x59'));var _0x327f72=ejs[_0x5f41('0x5a')](_0x156b40,{'contexts':_0x2344c2||[]});fs[_0x5f41('0x5b')](_0x5f41('0x5c'),_0x327f72);})[_0x5f41('0x1e')](function(){return respondWithRpcPromise('Reload',_0x5f41('0x55'),{'module':'chan_sip.so'});})['then'](function(){var _0x42ae35=_0x3a2f54[_0x5f41('0x5d')]['get']({'plain':!![]});if(!_0x42ae35)throw new Error(_0x5f41('0x5e'));if(_0x42ae35[_0x5f41('0x5f')]===_0x5f41('0x5d')){var _0x35c272=_0x734bc9['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x5f41('0x36'),'userProfileId':_0x42ae35[_0x5f41('0x60')]},'raw':!![]})[_0x5f41('0x1e')](function(_0x42b729){if(_0x42b729&&_0x42b729[_0x5f41('0x61')]===0x0){return db[_0x5f41('0x62')]['create']({'name':_0x35c272[_0x5f41('0x39')],'resourceId':_0x35c272['id'],'type':_0x42b729['name'],'sectionId':_0x42b729['id']},{})[_0x5f41('0x1e')](function(){return _0x734bc9;});}else{return _0x734bc9;}})[_0x5f41('0x54')](function(_0x2914a6){logger[_0x5f41('0x24')](_0x5f41('0x63'),_0x2914a6);throw _0x2914a6;});}return _0x734bc9;})[_0x5f41('0x1e')](respondWithResult(_0x170c2c,0xc9))[_0x5f41('0x54')](handleError(_0x170c2c,null));};exports[_0x5f41('0x33')]=function(_0x782c1,_0x5978b6,_0x400a03){var _0x64766e;return db[_0x5f41('0x4d')][_0x5f41('0x53')]({'where':{'id':_0x782c1[_0x5f41('0x51')]['id']}})['then'](handleEntityNotFound(_0x5978b6,null))[_0x5f41('0x1e')](saveUpdates(_0x782c1[_0x5f41('0x56')],null))[_0x5f41('0x1e')](function(_0x233a81){if(_0x233a81){_0x64766e=_0x233a81;return db['VoiceContext']['findAll']({'raw':!![]});}})[_0x5f41('0x1e')](function(_0x3ebde7){var _0x1da7f3=fs[_0x5f41('0x64')](path[_0x5f41('0x57')](config[_0x5f41('0x65')],_0x5f41('0x58')),_0x5f41('0x59'));var _0x2cb00b=ejs[_0x5f41('0x5a')](_0x1da7f3,{'contexts':_0x3ebde7||[]});fs[_0x5f41('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x2cb00b);})[_0x5f41('0x1e')](function(){return respondWithRpcPromise('Reload',_0x5f41('0x33'),{'module':_0x5f41('0x66')});})['then'](function(){return _0x64766e;})[_0x5f41('0x1e')](respondWithResult(_0x5978b6,null))[_0x5f41('0x54')](handleError(_0x5978b6,null));};exports[_0x5f41('0x34')]=function(_0x5809bc,_0x1ae494,_0x5adc0e){var _0x13baac;return db[_0x5f41('0x4d')]['find']({'where':{'id':_0x5809bc['params']['id']}})['then'](handleEntityNotFound(_0x1ae494,null))[_0x5f41('0x1e')](removeEntity(_0x1ae494,null))['then'](function(){return db[_0x5f41('0x4d')][_0x5f41('0x4f')]({'raw':!![]});})['then'](function(_0x1f5fb5){var _0x11718e=fs[_0x5f41('0x64')](path['join'](config[_0x5f41('0x65')],_0x5f41('0x58')),_0x5f41('0x59'));var _0x4cd315=ejs[_0x5f41('0x5a')](_0x11718e,{'contexts':_0x1f5fb5});fs[_0x5f41('0x5b')](_0x5f41('0x5c'),_0x4cd315);return respondWithRpcPromise(_0x5f41('0x67'),_0x5f41('0x34'),{'module':'chan_sip.so'});})[_0x5f41('0x54')](handleError(_0x1ae494,null));}; \ No newline at end of file diff --git a/server/api/voiceContext/voiceContext.model.js b/server/api/voiceContext/voiceContext.model.js new file mode 100644 index 0000000..d06f0aa --- /dev/null +++ b/server/api/voiceContext/voiceContext.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe886=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','lodash','util','../../config/logger'];(function(_0x5180c3,_0x4b35f7){var _0x55c975=function(_0x4746cb){while(--_0x4746cb){_0x5180c3['push'](_0x5180c3['shift']());}};_0x55c975(++_0x4b35f7);}(_0xe886,0x183));var _0x6e88=function(_0x5e2cd6,_0x193f61){_0x5e2cd6=_0x5e2cd6-0x0;var _0x5e9163=_0xe886[_0x5e2cd6];return _0x5e9163;};'use strict';var _=require(_0x6e88('0x0'));var util=require(_0x6e88('0x1'));var logger=require(_0x6e88('0x2'))(_0x6e88('0x3'));var moment=require(_0x6e88('0x4'));var BPromise=require(_0x6e88('0x5'));var rp=require(_0x6e88('0x6'));var fs=require('fs');var path=require(_0x6e88('0x7'));var rimraf=require(_0x6e88('0x8'));var config=require(_0x6e88('0x9'));var attributes=require(_0x6e88('0xa'));module[_0x6e88('0xb')]=function(_0x38609f,_0x53345f){return _0x38609f[_0x6e88('0xc')](_0x6e88('0xd'),attributes,{'tableName':_0x6e88('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceContext/voiceContext.rpc.js b/server/api/voiceContext/voiceContext.rpc.js new file mode 100644 index 0000000..9e213ec --- /dev/null +++ b/server/api/voiceContext/voiceContext.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x605a=['message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x625e10,_0xe85ecc){var _0x5f12da=function(_0x3dc311){while(--_0x3dc311){_0x625e10['push'](_0x625e10['shift']());}};_0x5f12da(++_0xe85ecc);}(_0x605a,0x1d7));var _0xa605=function(_0x74ce70,_0x2b02cf){_0x74ce70=_0x74ce70-0x0;var _0x4da6a8=_0x605a[_0x74ce70];return _0x4da6a8;};'use strict';var _=require(_0xa605('0x0'));var util=require('util');var moment=require(_0xa605('0x1'));var BPromise=require(_0xa605('0x2'));var rs=require(_0xa605('0x3'));var fs=require('fs');var Redis=require(_0xa605('0x4'));var db=require(_0xa605('0x5'))['db'];var utils=require(_0xa605('0x6'));var logger=require(_0xa605('0x7'))(_0xa605('0x8'));var config=require(_0xa605('0x9'));var jayson=require(_0xa605('0xa'));var client=jayson[_0xa605('0xb')][_0xa605('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5bf362,_0x4c300e,_0x3573f5){return new BPromise(function(_0xe23170,_0x243d8d){return client[_0xa605('0xd')](_0x5bf362,_0x3573f5)[_0xa605('0xe')](function(_0x15f775){logger[_0xa605('0xf')](_0xa605('0x10'),_0x4c300e,_0xa605('0x11'));logger[_0xa605('0x12')](_0xa605('0x13'),_0x4c300e,_0xa605('0x11'),JSON[_0xa605('0x14')](_0x15f775));if(_0x15f775[_0xa605('0x15')]){if(_0x15f775[_0xa605('0x15')][_0xa605('0x16')]===0x1f4){logger[_0xa605('0x15')](_0xa605('0x10'),_0x4c300e,_0x15f775[_0xa605('0x15')]['message']);return _0x243d8d(_0x15f775[_0xa605('0x15')][_0xa605('0x17')]);}logger['error'](_0xa605('0x10'),_0x4c300e,_0x15f775[_0xa605('0x15')][_0xa605('0x17')]);return _0xe23170(_0x15f775[_0xa605('0x15')][_0xa605('0x17')]);}else{logger[_0xa605('0xf')](_0xa605('0x10'),_0x4c300e,_0xa605('0x11'));_0xe23170(_0x15f775[_0xa605('0x18')]['message']);}})[_0xa605('0x19')](function(_0x32c75e){logger[_0xa605('0x15')](_0xa605('0x10'),_0x4c300e,_0x32c75e);_0x243d8d(_0x32c75e);});});} \ No newline at end of file diff --git a/server/api/voiceDialReport/index.js b/server/api/voiceDialReport/index.js new file mode 100644 index 0000000..656fec4 --- /dev/null +++ b/server/api/voiceDialReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb0fc=['show','post','create','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get','/:id'];(function(_0x5736df,_0x377e0b){var _0x4de591=function(_0x30dd4f){while(--_0x30dd4f){_0x5736df['push'](_0x5736df['shift']());}};_0x4de591(++_0x377e0b);}(_0xb0fc,0xf6));var _0xcb0f=function(_0x598b78,_0xf4ee7e){_0x598b78=_0x598b78-0x0;var _0x6392fa=_0xb0fc[_0x598b78];return _0x6392fa;};'use strict';var multer=require(_0xcb0f('0x0'));var util=require(_0xcb0f('0x1'));var path=require('path');var timeout=require(_0xcb0f('0x2'));var express=require(_0xcb0f('0x3'));var router=express[_0xcb0f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xcb0f('0x5'));var interaction=require(_0xcb0f('0x6'));var config=require(_0xcb0f('0x7'));var controller=require('./voiceDialReport.controller');router['get']('/',auth[_0xcb0f('0x8')](),controller[_0xcb0f('0x9')]);router['get'](_0xcb0f('0xa'),auth[_0xcb0f('0x8')](),controller[_0xcb0f('0xb')]);router[_0xcb0f('0xc')](_0xcb0f('0xd'),auth[_0xcb0f('0x8')](),controller[_0xcb0f('0xe')]);router[_0xcb0f('0xf')]('/',auth['isAuthenticated'](),controller[_0xcb0f('0x10')]);router['put'](_0xcb0f('0xd'),auth[_0xcb0f('0x8')](),controller[_0xcb0f('0x11')]);router[_0xcb0f('0x12')](_0xcb0f('0xd'),auth[_0xcb0f('0x8')](),controller['destroy']);module[_0xcb0f('0x13')]=router; \ No newline at end of file diff --git a/server/api/voiceDialReport/voiceDialReport.attributes.js b/server/api/voiceDialReport/voiceDialReport.attributes.js new file mode 100644 index 0000000..4a09b2c --- /dev/null +++ b/server/api/voiceDialReport/voiceDialReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9a19=['sequelize','exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x3194b6,_0x4d04af){var _0x7534f6=function(_0x561885){while(--_0x561885){_0x3194b6['push'](_0x3194b6['shift']());}};_0x7534f6(++_0x4d04af);}(_0x9a19,0x114));var _0x99a1=function(_0x2bcb75,_0x5789a7){_0x2bcb75=_0x2bcb75-0x0;var _0x175345=_0x9a19[_0x2bcb75];return _0x175345;};'use strict';var Sequelize=require(_0x99a1('0x0'));module[_0x99a1('0x1')]={'privilege':{'type':Sequelize[_0x99a1('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x99a1('0x3')]},'channelstatedesc':{'type':Sequelize[_0x99a1('0x2')]},'calleridnum':{'type':Sequelize[_0x99a1('0x2')]},'calleridname':{'type':Sequelize[_0x99a1('0x2')]},'connectedlinenum':{'type':Sequelize[_0x99a1('0x2')]},'connectedlinename':{'type':Sequelize[_0x99a1('0x2')]},'language':{'type':Sequelize[_0x99a1('0x2')]},'accountcode':{'type':Sequelize[_0x99a1('0x2')]},'context':{'type':Sequelize[_0x99a1('0x2')]},'exten':{'type':Sequelize[_0x99a1('0x2')]},'priority':{'type':Sequelize[_0x99a1('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x99a1('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x99a1('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x99a1('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x99a1('0x2')]},'destlanguage':{'type':Sequelize[_0x99a1('0x2')]},'destaccountcode':{'type':Sequelize[_0x99a1('0x2')]},'destcontext':{'type':Sequelize[_0x99a1('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x99a1('0x3')]},'destuniqueid':{'type':Sequelize[_0x99a1('0x2')]},'destlinkedid':{'type':Sequelize[_0x99a1('0x2')]},'dialstring':{'type':Sequelize[_0x99a1('0x2')]},'dialstatus':{'type':Sequelize[_0x99a1('0x2')]},'starttime':{'type':Sequelize[_0x99a1('0x4')]},'answertime':{'type':Sequelize[_0x99a1('0x4')]},'endtime':{'type':Sequelize[_0x99a1('0x4')]},'lastevent':{'type':Sequelize[_0x99a1('0x2')],'comment':_0x99a1('0x5')},'routeId':{'type':Sequelize[_0x99a1('0x3')]},'duration':{'type':Sequelize[_0x99a1('0x3')]},'holdtime':{'type':Sequelize[_0x99a1('0x3')]},'billableseconds':{'type':Sequelize[_0x99a1('0x3')]}}; \ No newline at end of file diff --git a/server/api/voiceDialReport/voiceDialReport.controller.js b/server/api/voiceDialReport/voiceDialReport.controller.js new file mode 100644 index 0000000..6f5ee24 --- /dev/null +++ b/server/api/voiceDialReport/voiceDialReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x645c=['catch','show','params','keys','intersection','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceDialReport','includeAll','findAll','rows'];(function(_0x14a2da,_0x6c5759){var _0x5d5122=function(_0x2dd379){while(--_0x2dd379){_0x14a2da['push'](_0x14a2da['shift']());}};_0x5d5122(++_0x6c5759);}(_0x645c,0xe5));var _0xc645=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x645c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc645('0x0'));var rimraf=require(_0xc645('0x1'));var zipdir=require(_0xc645('0x2'));var jsonpatch=require(_0xc645('0x3'));var rp=require(_0xc645('0x4'));var moment=require(_0xc645('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc645('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc645('0x7'));var csv=require(_0xc645('0x8'));var ejs=require(_0xc645('0x9'));var fs=require('fs');var fs_extra=require(_0xc645('0xa'));var _=require(_0xc645('0xb'));var squel=require(_0xc645('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc645('0x8'));var querystring=require(_0xc645('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc645('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc645('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xc645('0x10'));var config=require(_0xc645('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xc645('0x12'))['db'];function respondWithStatusCode(_0x481f1e,_0x2a9e89){_0x2a9e89=_0x2a9e89||0xcc;return function(_0x851e25){if(_0x851e25){return _0x481f1e['sendStatus'](_0x2a9e89);}return _0x481f1e[_0xc645('0x13')](_0x2a9e89)[_0xc645('0x14')]();};}function respondWithResult(_0x293d92,_0x269489){_0x269489=_0x269489||0xc8;return function(_0xc55729){if(_0xc55729){return _0x293d92[_0xc645('0x13')](_0x269489)['json'](_0xc55729);}};}function respondWithFilteredResult(_0x489caa,_0x45eb8a){return function(_0x270722){if(_0x270722){var _0x1dc313=typeof _0x45eb8a[_0xc645('0x15')]===_0xc645('0x16')&&typeof _0x45eb8a[_0xc645('0x17')]===_0xc645('0x16');var _0x33a8f5=_0x270722[_0xc645('0x18')];var _0x55133c=_0x1dc313?0x0:_0x45eb8a[_0xc645('0x15')];var _0x5c5e04=_0x1dc313?_0x270722[_0xc645('0x18')]:_0x45eb8a['offset']+_0x45eb8a[_0xc645('0x17')];var _0x1ea196;if(_0x5c5e04>=_0x33a8f5){_0x5c5e04=_0x33a8f5;_0x1ea196=0xc8;}else{_0x1ea196=0xce;}_0x489caa[_0xc645('0x13')](_0x1ea196);return _0x489caa['set'](_0xc645('0x19'),_0x55133c+'-'+_0x5c5e04+'/'+_0x33a8f5)['json'](_0x270722);}return null;};}function patchUpdates(_0x29b592){return function(_0x1059f3){try{jsonpatch[_0xc645('0x1a')](_0x1059f3,_0x29b592,!![]);}catch(_0x1f36f0){return BPromise[_0xc645('0x1b')](_0x1f36f0);}return _0x1059f3[_0xc645('0x1c')]();};}function saveUpdates(_0x40641b,_0x484b9c){return function(_0xedd89b){if(_0xedd89b){return _0xedd89b[_0xc645('0x1d')](_0x40641b)[_0xc645('0x1e')](function(_0x524945){return _0x524945;});}return null;};}function removeEntity(_0xfcbe58,_0x273e62){return function(_0x1a17a0){if(_0x1a17a0){return _0x1a17a0[_0xc645('0x1f')]()[_0xc645('0x1e')](function(){_0xfcbe58[_0xc645('0x13')](0xcc)[_0xc645('0x14')]();});}};}function handleEntityNotFound(_0x1f188a,_0x10c957){return function(_0x3ada34){if(!_0x3ada34){_0x1f188a[_0xc645('0x20')](0x194);}return _0x3ada34;};}function handleError(_0x17ebe9,_0x3a8769){_0x3a8769=_0x3a8769||0x1f4;return function(_0xefd8b2){logger[_0xc645('0x21')](_0xefd8b2[_0xc645('0x22')]);if(_0xefd8b2['name']){delete _0xefd8b2[_0xc645('0x23')];}_0x17ebe9[_0xc645('0x13')](_0x3a8769)[_0xc645('0x24')](_0xefd8b2);};}exports[_0xc645('0x25')]=function(_0x7c3c5c,_0x3d3117){var _0x539927={},_0x5e217a={},_0x52d9e0={'count':0x0,'rows':[]};var _0x42abbd=_[_0xc645('0x26')](db['VoiceDialReport'][_0xc645('0x27')],function(_0x1781a9){return{'name':_0x1781a9[_0xc645('0x28')],'type':_0x1781a9[_0xc645('0x29')][_0xc645('0x2a')]};});_0x5e217a[_0xc645('0x2b')]=_['map'](_0x42abbd,_0xc645('0x23'));_0x5e217a[_0xc645('0x2c')]=_['keys'](_0x7c3c5c['query']);_0x5e217a[_0xc645('0x2d')]=_['intersection'](_0x5e217a[_0xc645('0x2b')],_0x5e217a[_0xc645('0x2c')]);_0x539927[_0xc645('0x2e')]=_['intersection'](_0x5e217a[_0xc645('0x2b')],qs[_0xc645('0x2f')](_0x7c3c5c[_0xc645('0x2c')][_0xc645('0x2f')]));_0x539927['attributes']=_0x539927['attributes'][_0xc645('0x30')]?_0x539927[_0xc645('0x2e')]:_0x5e217a[_0xc645('0x2b')];if(!_0x7c3c5c[_0xc645('0x2c')][_0xc645('0x31')](_0xc645('0x32'))){_0x539927[_0xc645('0x17')]=qs[_0xc645('0x17')](_0x7c3c5c[_0xc645('0x2c')][_0xc645('0x17')]);_0x539927[_0xc645('0x15')]=qs[_0xc645('0x15')](_0x7c3c5c[_0xc645('0x2c')][_0xc645('0x15')]);}_0x539927[_0xc645('0x33')]=qs[_0xc645('0x34')](_0x7c3c5c[_0xc645('0x2c')][_0xc645('0x34')]);_0x539927[_0xc645('0x35')]=qs[_0xc645('0x2d')](_[_0xc645('0x36')](_0x7c3c5c[_0xc645('0x2c')],_0x5e217a[_0xc645('0x2d')]),_0x42abbd);if(_0x7c3c5c[_0xc645('0x2c')][_0xc645('0x37')]){_0x539927[_0xc645('0x35')]=_[_0xc645('0x38')](_0x539927[_0xc645('0x35')],{'$or':_[_0xc645('0x26')](_0x42abbd,function(_0x2d7c21){if(_0x2d7c21[_0xc645('0x29')]!==_0xc645('0x39')){var _0x2bf603={};_0x2bf603[_0x2d7c21[_0xc645('0x23')]]={'$like':'%'+_0x7c3c5c[_0xc645('0x2c')]['filter']+'%'};return _0x2bf603;}})});}_0x539927=_['merge']({},_0x539927,_0x7c3c5c[_0xc645('0x3a')]);var _0x2d221c={'where':_0x539927[_0xc645('0x35')]};return db[_0xc645('0x3b')]['count'](_0x2d221c)[_0xc645('0x1e')](function(_0x468160){_0x52d9e0[_0xc645('0x18')]=_0x468160;if(_0x7c3c5c['query'][_0xc645('0x3c')]){_0x539927['include']=[{'all':!![]}];}return db[_0xc645('0x3b')][_0xc645('0x3d')](_0x539927);})[_0xc645('0x1e')](function(_0x48e117){_0x52d9e0[_0xc645('0x3e')]=_0x48e117;return _0x52d9e0;})[_0xc645('0x1e')](respondWithFilteredResult(_0x3d3117,_0x539927))[_0xc645('0x3f')](handleError(_0x3d3117,null));};exports[_0xc645('0x40')]=function(_0x2dc907,_0x5ea738){var _0x4b03d6={'raw':!![],'where':{'id':_0x2dc907[_0xc645('0x41')]['id']}},_0x5918cb={};_0x5918cb[_0xc645('0x2b')]=_['keys'](db['VoiceDialReport'][_0xc645('0x27')]);_0x5918cb[_0xc645('0x2c')]=_[_0xc645('0x42')](_0x2dc907[_0xc645('0x2c')]);_0x5918cb[_0xc645('0x2d')]=_['intersection'](_0x5918cb[_0xc645('0x2b')],_0x5918cb[_0xc645('0x2c')]);_0x4b03d6[_0xc645('0x2e')]=_[_0xc645('0x43')](_0x5918cb[_0xc645('0x2b')],qs[_0xc645('0x2f')](_0x2dc907['query'][_0xc645('0x2f')]));_0x4b03d6['attributes']=_0x4b03d6[_0xc645('0x2e')][_0xc645('0x30')]?_0x4b03d6[_0xc645('0x2e')]:_0x5918cb[_0xc645('0x2b')];if(_0x2dc907[_0xc645('0x2c')]['includeAll']){_0x4b03d6[_0xc645('0x44')]=[{'all':!![]}];}_0x4b03d6=_[_0xc645('0x38')]({},_0x4b03d6,_0x2dc907[_0xc645('0x3a')]);return db[_0xc645('0x3b')][_0xc645('0x45')](_0x4b03d6)[_0xc645('0x1e')](handleEntityNotFound(_0x5ea738,null))[_0xc645('0x1e')](respondWithResult(_0x5ea738,null))['catch'](handleError(_0x5ea738,null));};exports['create']=function(_0xe37212,_0x1a7a03){return db[_0xc645('0x3b')][_0xc645('0x46')](_0xe37212[_0xc645('0x47')],{})['then'](respondWithResult(_0x1a7a03,0xc9))[_0xc645('0x3f')](handleError(_0x1a7a03,null));};exports[_0xc645('0x1d')]=function(_0x26d697,_0x3cdac0){if(_0x26d697[_0xc645('0x47')]['id']){delete _0x26d697['body']['id'];}return db['VoiceDialReport'][_0xc645('0x45')]({'where':{'id':_0x26d697[_0xc645('0x41')]['id']}})[_0xc645('0x1e')](handleEntityNotFound(_0x3cdac0,null))['then'](saveUpdates(_0x26d697[_0xc645('0x47')],null))[_0xc645('0x1e')](respondWithResult(_0x3cdac0,null))[_0xc645('0x3f')](handleError(_0x3cdac0,null));};exports[_0xc645('0x1f')]=function(_0x3e3344,_0x384c24){return db[_0xc645('0x3b')][_0xc645('0x45')]({'where':{'id':_0x3e3344[_0xc645('0x41')]['id']}})['then'](handleEntityNotFound(_0x384c24,null))[_0xc645('0x1e')](removeEntity(_0x384c24,null))[_0xc645('0x3f')](handleError(_0x384c24,null));};exports['describe']=function(_0x26d8e1,_0x30efe5){return db[_0xc645('0x3b')][_0xc645('0x48')]()[_0xc645('0x1e')](respondWithResult(_0x30efe5,null))[_0xc645('0x3f')](handleError(_0x30efe5,null));}; \ No newline at end of file diff --git a/server/api/voiceDialReport/voiceDialReport.model.js b/server/api/voiceDialReport/voiceDialReport.model.js new file mode 100644 index 0000000..8129624 --- /dev/null +++ b/server/api/voiceDialReport/voiceDialReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2411=['bluebird','request-promise','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','report_dial','uniqueid','util','../../config/logger','api','moment'];(function(_0x3f0800,_0x6eb84){var _0x19267e=function(_0x4fe065){while(--_0x4fe065){_0x3f0800['push'](_0x3f0800['shift']());}};_0x19267e(++_0x6eb84);}(_0x2411,0x175));var _0x1241=function(_0x5ac1e5,_0x4b5012){_0x5ac1e5=_0x5ac1e5-0x0;var _0x1bccc6=_0x2411[_0x5ac1e5];return _0x1bccc6;};'use strict';var _=require('lodash');var util=require(_0x1241('0x0'));var logger=require(_0x1241('0x1'))(_0x1241('0x2'));var moment=require(_0x1241('0x3'));var BPromise=require(_0x1241('0x4'));var rp=require(_0x1241('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1241('0x6'));var config=require(_0x1241('0x7'));var attributes=require(_0x1241('0x8'));module[_0x1241('0x9')]=function(_0x3b2074,_0x1f9d02){return _0x3b2074[_0x1241('0xa')]('VoiceDialReport',attributes,{'tableName':_0x1241('0xb'),'paranoid':![],'indexes':[{'fields':[_0x1241('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceDialReport/voiceDialReport.rpc.js b/server/api/voiceDialReport/voiceDialReport.rpc.js new file mode 100644 index 0000000..42c42c2 --- /dev/null +++ b/server/api/voiceDialReport/voiceDialReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x45e1=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','request\x20sent','debug','stringify','error','code','VoiceDialReport,\x20%s,\x20%s','message','info','catch','CreateVoiceDialReport','VoiceDialReport','body','options','then','UpdateVoiceDialReport','update','where','attributes','lodash','moment','randomstring','ioredis'];(function(_0x13843f,_0x50422d){var _0x1063ae=function(_0x12fd6b){while(--_0x12fd6b){_0x13843f['push'](_0x13843f['shift']());}};_0x1063ae(++_0x50422d);}(_0x45e1,0x10a));var _0x145e=function(_0x515283,_0x813dea){_0x515283=_0x515283-0x0;var _0x38f836=_0x45e1[_0x515283];return _0x38f836;};'use strict';var _=require(_0x145e('0x0'));var util=require('util');var moment=require(_0x145e('0x1'));var BPromise=require('bluebird');var rs=require(_0x145e('0x2'));var fs=require('fs');var Redis=require(_0x145e('0x3'));var db=require(_0x145e('0x4'))['db'];var utils=require(_0x145e('0x5'));var logger=require(_0x145e('0x6'))(_0x145e('0x7'));var config=require(_0x145e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x145e('0x9')][_0x145e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54850b,_0xe50be0,_0x37c3e2){return new BPromise(function(_0x26f840,_0x470ba0){return client[_0x145e('0xb')](_0x54850b,_0x37c3e2)['then'](function(_0x4035b4){logger['info']('VoiceDialReport,\x20%s,\x20%s',_0xe50be0,_0x145e('0xc'));logger[_0x145e('0xd')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0xe50be0,_0x145e('0xc'),JSON[_0x145e('0xe')](_0x4035b4));if(_0x4035b4[_0x145e('0xf')]){if(_0x4035b4['error'][_0x145e('0x10')]===0x1f4){logger[_0x145e('0xf')](_0x145e('0x11'),_0xe50be0,_0x4035b4[_0x145e('0xf')][_0x145e('0x12')]);return _0x470ba0(_0x4035b4[_0x145e('0xf')][_0x145e('0x12')]);}logger[_0x145e('0xf')](_0x145e('0x11'),_0xe50be0,_0x4035b4[_0x145e('0xf')]['message']);return _0x26f840(_0x4035b4[_0x145e('0xf')][_0x145e('0x12')]);}else{logger[_0x145e('0x13')](_0x145e('0x11'),_0xe50be0,_0x145e('0xc'));_0x26f840(_0x4035b4['result'][_0x145e('0x12')]);}})[_0x145e('0x14')](function(_0xc3e47c){logger['error'](_0x145e('0x11'),_0xe50be0,_0xc3e47c);_0x470ba0(_0xc3e47c);});});}exports[_0x145e('0x15')]=function(_0x12a905){var _0x5ae142=this;return new Promise(function(_0x38fc99,_0x52ea60){return db[_0x145e('0x16')]['create'](_0x12a905[_0x145e('0x17')],{'raw':_0x12a905[_0x145e('0x18')]?_0x12a905[_0x145e('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x145e('0x19')](function(_0x5b137c){logger['info'](_0x145e('0x15'),_0x12a905);logger['debug'](_0x145e('0x15'),_0x12a905,JSON[_0x145e('0xe')](_0x5b137c));_0x38fc99(_0x5b137c);})[_0x145e('0x14')](function(_0x271788){logger[_0x145e('0xf')](_0x145e('0x15'),_0x271788['message'],_0x12a905);_0x52ea60(_0x5ae142['error'](0x1f4,_0x271788['message']));});});};exports[_0x145e('0x1a')]=function(_0x2a81e0){var _0x2d1bee=this;return new Promise(function(_0x57a37d,_0x38657a){return db['VoiceDialReport'][_0x145e('0x1b')](_0x2a81e0[_0x145e('0x17')],{'raw':_0x2a81e0[_0x145e('0x18')]?_0x2a81e0[_0x145e('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a81e0[_0x145e('0x18')]?_0x2a81e0[_0x145e('0x18')][_0x145e('0x1c')]||null:null,'attributes':_0x2a81e0[_0x145e('0x18')]?_0x2a81e0['options'][_0x145e('0x1d')]||null:null,'limit':_0x2a81e0[_0x145e('0x18')]?_0x2a81e0[_0x145e('0x18')]['limit']||null:null})[_0x145e('0x19')](function(_0x4add22){logger[_0x145e('0x13')]('UpdateVoiceDialReport',_0x2a81e0);logger[_0x145e('0xd')](_0x145e('0x1a'),_0x2a81e0,JSON['stringify'](_0x4add22));_0x57a37d(_0x4add22);})[_0x145e('0x14')](function(_0x2d3441){logger[_0x145e('0xf')](_0x145e('0x1a'),_0x2d3441[_0x145e('0x12')],_0x2a81e0);_0x38657a(_0x2d1bee['error'](0x1f4,_0x2d3441['message']));});});}; \ No newline at end of file diff --git a/server/api/voiceExtension/index.js b/server/api/voiceExtension/index.js new file mode 100644 index 0000000..d200a99 --- /dev/null +++ b/server/api/voiceExtension/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc6af=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','index','/:id','show','post','isAuthenticated','/:id/applications','update','delete'];(function(_0x32c819,_0x1f75c3){var _0x2a5145=function(_0x519b06){while(--_0x519b06){_0x32c819['push'](_0x32c819['shift']());}};_0x2a5145(++_0x1f75c3);}(_0xc6af,0x1e1));var _0xfc6a=function(_0x28bc39,_0x384426){_0x28bc39=_0x28bc39-0x0;var _0x2d40be=_0xc6af[_0x28bc39];return _0x2d40be;};'use strict';var multer=require(_0xfc6a('0x0'));var util=require('util');var path=require(_0xfc6a('0x1'));var timeout=require(_0xfc6a('0x2'));var express=require(_0xfc6a('0x3'));var router=express[_0xfc6a('0x4')]();var fs_extra=require(_0xfc6a('0x5'));var auth=require(_0xfc6a('0x6'));var interaction=require(_0xfc6a('0x7'));var config=require(_0xfc6a('0x8'));var controller=require(_0xfc6a('0x9'));router[_0xfc6a('0xa')]('/',auth['isAuthenticated'](),controller[_0xfc6a('0xb')]);router[_0xfc6a('0xa')](_0xfc6a('0xc'),auth['isAuthenticated'](),controller[_0xfc6a('0xd')]);router[_0xfc6a('0xe')]('/',auth[_0xfc6a('0xf')](),controller['create']);router[_0xfc6a('0xe')](_0xfc6a('0x10'),auth[_0xfc6a('0xf')](),controller['addApplications']);router['put'](_0xfc6a('0xc'),auth[_0xfc6a('0xf')](),controller[_0xfc6a('0x11')]);router[_0xfc6a('0x12')](_0xfc6a('0xc'),auth[_0xfc6a('0xf')](),controller['destroy']);module[_0xfc6a('0x13')]=router; \ No newline at end of file diff --git a/server/api/voiceExtension/voiceExtension.attributes.js b/server/api/voiceExtension/voiceExtension.attributes.js new file mode 100644 index 0000000..6138ee3 --- /dev/null +++ b/server/api/voiceExtension/voiceExtension.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xce7f=['internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','getDataValue','exten','exports','STRING','NoOp','ENUM','inbound','outbound'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xce7f,0x170));var _0xfce7=function(_0x23af31,_0x8a1add){_0x23af31=_0x23af31-0x0;var _0x49b82f=_0xce7f[_0x23af31];return _0x49b82f;};'use strict';var Sequelize=require('sequelize');module[_0xfce7('0x0')]={'context':{'type':Sequelize[_0xfce7('0x1')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xfce7('0x1')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0xfce7('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfce7('0x2')},'appdata':{'type':Sequelize[_0xfce7('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xfce7('0x3')](_0xfce7('0x4'),_0xfce7('0x5'),_0xfce7('0x6'),_0xfce7('0x7'),_0xfce7('0x8'),_0xfce7('0x9'),_0xfce7('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xfce7('0x1')],'allowNull':![],'defaultValue':_0xfce7('0xb')},'IntervalId':{'type':Sequelize[_0xfce7('0xc')]},'isApp':{'type':Sequelize[_0xfce7('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xfce7('0x1')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xfce7('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0xfce7('0x1')],'defaultValue':_0xfce7('0xe')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x20f820){return this[_0xfce7('0xf')](_0xfce7('0x10'));}},'alias':{'type':Sequelize[_0xfce7('0x1')],'allowNull':!![]}}; \ No newline at end of file diff --git a/server/api/voiceExtension/voiceExtension.controller.js b/server/api/voiceExtension/voiceExtension.controller.js new file mode 100644 index 0000000..9cc461b --- /dev/null +++ b/server/api/voiceExtension/voiceExtension.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9faf=['error','stack','name','send','VoiceExtension','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','outbound','body','exten','concat','user','value','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','createRouting','bulkCreate','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','map','includes','type','UserProfileResource'];(function(_0x4a5c7a,_0x6e37d4){var _0x1650ac=function(_0x484bf7){while(--_0x484bf7){_0x4a5c7a['push'](_0x4a5c7a['shift']());}};_0x1650ac(++_0x6e37d4);}(_0x9faf,0xf4));var _0xf9fa=function(_0x226c3f,_0x18fbd7){_0x226c3f=_0x226c3f-0x0;var _0x2f9232=_0x9faf[_0x226c3f];return _0x2f9232;};'use strict';var _=require(_0xf9fa('0x0'));var Redis=require(_0xf9fa('0x1'));var qs=require(_0xf9fa('0x2'));var logger=require('../../config/logger')(_0xf9fa('0x3'));var config=require('../../config/environment');var db=require(_0xf9fa('0x4'))['db'];config[_0xf9fa('0x5')]=_[_0xf9fa('0x6')](config[_0xf9fa('0x5')],{'host':_0xf9fa('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf9fa('0x5')]));require(_0xf9fa('0x8'))[_0xf9fa('0x9')](socket);function respondWithStatusCode(_0x615f21,_0x13ac56){_0x13ac56=_0x13ac56||0xcc;return function(_0x50898b){if(_0x50898b){return _0x615f21[_0xf9fa('0xa')](_0x13ac56);}return _0x615f21[_0xf9fa('0xb')](_0x13ac56)[_0xf9fa('0xc')]();};}function respondWithResult(_0x180af1,_0x172046){_0x172046=_0x172046||0xc8;return function(_0x4603f6){if(_0x4603f6){return _0x180af1[_0xf9fa('0xb')](_0x172046)[_0xf9fa('0xd')](_0x4603f6);}};}function respondWithFilteredResult(_0xad49f0,_0x270b01){return function(_0x4896e9){if(_0x4896e9){var _0x2803f2=typeof _0x270b01[_0xf9fa('0xe')]===_0xf9fa('0xf')&&typeof _0x270b01[_0xf9fa('0x10')]==='undefined';var _0x334f5a=_0x4896e9[_0xf9fa('0x11')];var _0x598695=_0x2803f2?0x0:_0x270b01['offset'];var _0x1d5fb7=_0x2803f2?_0x4896e9['count']:_0x270b01[_0xf9fa('0xe')]+_0x270b01['limit'];var _0x468933;if(_0x1d5fb7>=_0x334f5a){_0x1d5fb7=_0x334f5a;_0x468933=0xc8;}else{_0x468933=0xce;}_0xad49f0[_0xf9fa('0xb')](_0x468933);return _0xad49f0[_0xf9fa('0x12')](_0xf9fa('0x13'),_0x598695+'-'+_0x1d5fb7+'/'+_0x334f5a)[_0xf9fa('0xd')](_0x4896e9);}return null;};}function removeEntity(_0x2014ac){return function(_0x34cd3c){if(_0x34cd3c){return _0x34cd3c[_0xf9fa('0x14')]()[_0xf9fa('0x15')](function(){var _0x1fd132=_0x34cd3c[_0xf9fa('0x16')]({'plain':!![]});var _0x455005=[{'name':_0xf9fa('0x17'),'value':_0xf9fa('0x18'),'ignore':![]},{'name':_0xf9fa('0x19'),'value':'outbound','ignore':![]},{'name':_0xf9fa('0x1a'),'value':_0xf9fa('0x1b'),'ignore':![]}];var _0xadb6d4=_(_0x455005)['filter']('ignore')[_0xf9fa('0x1c')]('value')['value']();if(_[_0xf9fa('0x1d')](_0xadb6d4,_0x1fd132[_0xf9fa('0x1e')])){return;}var _0x5b7a77=_['find'](_0x455005,['value',_0x1fd132['type']])['name'];return db[_0xf9fa('0x1f')][_0xf9fa('0x14')]({'where':{'type':_0x5b7a77,'resourceId':_0x1fd132['id']}})['then'](function(){return _0x34cd3c;});})['then'](function(){_0x2014ac[_0xf9fa('0xb')](0xcc)[_0xf9fa('0xc')]();});}};}function handleEntityNotFound(_0x2eb1a5){return function(_0x4a39d3){if(!_0x4a39d3){_0x2eb1a5['sendStatus'](0x194);}return _0x4a39d3;};}function handleError(_0x2de098,_0x442697){_0x442697=_0x442697||0x1f4;return function(_0x2b5b30){logger[_0xf9fa('0x20')](_0x2b5b30[_0xf9fa('0x21')]);if(_0x2b5b30[_0xf9fa('0x22')]){delete _0x2b5b30[_0xf9fa('0x22')];}_0x2de098[_0xf9fa('0xb')](_0x442697)[_0xf9fa('0x23')](_0x2b5b30);};}exports['index']=function(_0x2ac541,_0x1c0ff4){var _0x504114={},_0x3df9a1={},_0x2661a2={'count':0x0,'rows':[]};var _0x2b1036=_[_0xf9fa('0x1c')](db[_0xf9fa('0x24')]['rawAttributes'],function(_0x4b1085){return{'name':_0x4b1085[_0xf9fa('0x25')],'type':_0x4b1085['type'][_0xf9fa('0x26')]};});_0x3df9a1[_0xf9fa('0x27')]=_['map'](_0x2b1036,_0xf9fa('0x22'));_0x3df9a1[_0xf9fa('0x28')]=_[_0xf9fa('0x29')](_0x2ac541['query']);_0x3df9a1[_0xf9fa('0x2a')]=_[_0xf9fa('0x2b')](_0x3df9a1['model'],_0x3df9a1[_0xf9fa('0x28')]);_0x504114['attributes']=_[_0xf9fa('0x2b')](_0x3df9a1[_0xf9fa('0x27')],qs[_0xf9fa('0x2c')](_0x2ac541['query']['fields']));_0x504114[_0xf9fa('0x2d')]=_0x504114[_0xf9fa('0x2d')][_0xf9fa('0x2e')]?_0x504114[_0xf9fa('0x2d')]:_0x3df9a1[_0xf9fa('0x27')];if(!_0x2ac541[_0xf9fa('0x28')][_0xf9fa('0x2f')](_0xf9fa('0x30'))){_0x504114[_0xf9fa('0x10')]=qs[_0xf9fa('0x10')](_0x2ac541[_0xf9fa('0x28')][_0xf9fa('0x10')]);_0x504114['offset']=qs[_0xf9fa('0xe')](_0x2ac541[_0xf9fa('0x28')][_0xf9fa('0xe')]);}_0x504114[_0xf9fa('0x31')]=qs[_0xf9fa('0x32')](_0x2ac541[_0xf9fa('0x28')]['sort']);_0x504114[_0xf9fa('0x33')]=qs[_0xf9fa('0x2a')](_[_0xf9fa('0x34')](_0x2ac541['query'],_0x3df9a1[_0xf9fa('0x2a')]),_0x2b1036);if(_0x2ac541[_0xf9fa('0x28')][_0xf9fa('0x35')]){_0x504114['where']=_[_0xf9fa('0x36')](_0x504114['where'],{'$or':_['map'](_0x2b1036,function(_0x36f32a){if(_0x36f32a['type']!==_0xf9fa('0x37')){var _0x30feef={};_0x30feef[_0x36f32a['name']]={'$like':'%'+_0x2ac541[_0xf9fa('0x28')]['filter']+'%'};return _0x30feef;}})});}_0x504114=_[_0xf9fa('0x36')]({},_0x504114,_0x2ac541['options']);var _0x5e1eb7={'where':_0x504114[_0xf9fa('0x33')]};return db['VoiceExtension'][_0xf9fa('0x11')](_0x5e1eb7)['then'](function(_0x55d5fc){_0x2661a2['count']=_0x55d5fc;if(_0x2ac541[_0xf9fa('0x28')][_0xf9fa('0x38')]){_0x504114[_0xf9fa('0x39')]=[{'all':!![]}];}return db[_0xf9fa('0x24')][_0xf9fa('0x3a')](_0x504114);})[_0xf9fa('0x15')](function(_0x574189){_0x2661a2[_0xf9fa('0x3b')]=_0x574189;return _0x2661a2;})[_0xf9fa('0x15')](respondWithFilteredResult(_0x1c0ff4,_0x504114))[_0xf9fa('0x3c')](handleError(_0x1c0ff4,null));};exports[_0xf9fa('0x3d')]=function(_0x53db8a,_0x3cfc2b){var _0x433835={'raw':![],'where':{'id':_0x53db8a[_0xf9fa('0x3e')]['id']}},_0x63f1fc={};_0x63f1fc[_0xf9fa('0x27')]=_[_0xf9fa('0x29')](db['VoiceExtension']['rawAttributes']);_0x63f1fc[_0xf9fa('0x28')]=_[_0xf9fa('0x29')](_0x53db8a[_0xf9fa('0x28')]);_0x63f1fc[_0xf9fa('0x2a')]=_['intersection'](_0x63f1fc[_0xf9fa('0x27')],_0x63f1fc[_0xf9fa('0x28')]);_0x433835[_0xf9fa('0x2d')]=_[_0xf9fa('0x2b')](_0x63f1fc[_0xf9fa('0x27')],qs[_0xf9fa('0x2c')](_0x53db8a['query'][_0xf9fa('0x2c')]));_0x433835['attributes']=_0x433835[_0xf9fa('0x2d')][_0xf9fa('0x2e')]?_0x433835[_0xf9fa('0x2d')]:_0x63f1fc[_0xf9fa('0x27')];if(_0x53db8a['query'][_0xf9fa('0x38')]){_0x433835[_0xf9fa('0x39')]=[{'all':!![]}];}_0x433835=_[_0xf9fa('0x36')]({},_0x433835,_0x53db8a[_0xf9fa('0x3f')]);return db[_0xf9fa('0x24')][_0xf9fa('0x40')](_0x433835)['then'](handleEntityNotFound(_0x3cfc2b,null))[_0xf9fa('0x15')](respondWithResult(_0x3cfc2b,null))[_0xf9fa('0x3c')](handleError(_0x3cfc2b,null));};exports[_0xf9fa('0x14')]=function(_0xaf4bc9,_0x968bff){return db[_0xf9fa('0x24')][_0xf9fa('0x40')]({'where':{'id':_0xaf4bc9[_0xf9fa('0x3e')]['id']}})[_0xf9fa('0x15')](handleEntityNotFound(_0x968bff,null))[_0xf9fa('0x15')](removeEntity(_0x968bff,null))['catch'](handleError(_0x968bff,null));};exports[_0xf9fa('0x41')]=function(_0x244bce,_0x10bd7f){if(_0x244bce['body'][_0xf9fa('0x1e')]===_0xf9fa('0x42')&&!_['startsWith'](_0x244bce[_0xf9fa('0x43')][_0xf9fa('0x44')],'_')){_0x244bce[_0xf9fa('0x43')][_0xf9fa('0x44')]='_'[_0xf9fa('0x45')](_0x244bce[_0xf9fa('0x43')][_0xf9fa('0x44')]);}return db[_0xf9fa('0x24')]['create'](_0x244bce[_0xf9fa('0x43')],{'raw':![]})[_0xf9fa('0x15')](function(_0x513a2){var _0x23f25d=_0x244bce[_0xf9fa('0x46')]['get']({'plain':!![]});if(!_0x23f25d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23f25d['role']===_0xf9fa('0x46')){var _0x58d3a2=_0x513a2[_0xf9fa('0x16')]({'plain':!![]});var _0x259550=[{'name':'InboundRoutes','value':_0xf9fa('0x18')},{'name':_0xf9fa('0x19'),'value':_0xf9fa('0x42')},{'name':'InternalRoutes','value':_0xf9fa('0x1b')}];var _0x5b6120=_[_0xf9fa('0x40')](_0x259550,[_0xf9fa('0x47'),_0x58d3a2['type']])['name'];return db[_0xf9fa('0x48')][_0xf9fa('0x40')]({'where':{'name':_0x5b6120,'userProfileId':_0x23f25d[_0xf9fa('0x49')]},'raw':!![]})[_0xf9fa('0x15')](function(_0x5af1e7){if(_0x5af1e7&&_0x5af1e7[_0xf9fa('0x4a')]===0x0){return db[_0xf9fa('0x1f')][_0xf9fa('0x41')]({'name':_0x58d3a2[_0xf9fa('0x22')],'resourceId':_0x58d3a2['id'],'type':_0x5af1e7['name'],'sectionId':_0x5af1e7['id']},{})[_0xf9fa('0x15')](function(){return _0x513a2;});}else{return _0x513a2;}})[_0xf9fa('0x3c')](function(_0x1dbed7){logger[_0xf9fa('0x20')](_0xf9fa('0x4b'),_0x1dbed7);throw _0x1dbed7;});}return _0x513a2;})[_0xf9fa('0x15')](respondWithResult(_0x10bd7f,0xc9))[_0xf9fa('0x3c')](handleError(_0x10bd7f,null));};exports[_0xf9fa('0x4c')]=function(_0x5ef0b8,_0x1e3619){if(_0x5ef0b8[_0xf9fa('0x43')]['id']){delete _0x5ef0b8[_0xf9fa('0x43')]['id'];}return db[_0xf9fa('0x24')][_0xf9fa('0x40')]({'where':{'id':_0x5ef0b8[_0xf9fa('0x3e')]['id']}})[_0xf9fa('0x15')](handleEntityNotFound(_0x1e3619,null))[_0xf9fa('0x15')](function(_0x566e56){if(_0x566e56){return db['VoiceExtension']['update'](_['pick'](_0x5ef0b8[_0xf9fa('0x43')],['exten',_0xf9fa('0x4d'),_0xf9fa('0x4e'),_0xf9fa('0x4f'),_0xf9fa('0x50'),_0xf9fa('0x51'),_0xf9fa('0x52')]),{'where':{'context':_0x566e56[_0xf9fa('0x4d')],'exten':_0x566e56[_0xf9fa('0x44')]},'individualHooks':!![]})[_0xf9fa('0x15')](function(_0x41d6a5){return _0x41d6a5;});}return null;})['then'](respondWithStatusCode(_0x1e3619,null))[_0xf9fa('0x3c')](handleError(_0x1e3619,null));};exports[_0xf9fa('0x53')]=function(_0x2f22db,_0x5e74f2){var _0x3e9045=_0x2f22db[_0xf9fa('0x3e')]['id'];var _0x587be4=_0x2f22db[_0xf9fa('0x43')];var _0x39b215=0xc8;var _0x39d51d=null;return db[_0xf9fa('0x54')][_0xf9fa('0x55')]({'isolationLevel':db[_0xf9fa('0x54')]['Transaction'][_0xf9fa('0x56')][_0xf9fa('0x57')]},function(_0x99f98){return db[_0xf9fa('0x24')]['findOne']({'where':{'id':_0x3e9045},'transaction':_0x99f98})[_0xf9fa('0x15')](function(_0xebaa84){if(_0xebaa84){return db['VoiceExtension'][_0xf9fa('0x14')]({'where':{'VoiceExtensionId':_0x3e9045},'transaction':_0x99f98})[_0xf9fa('0x15')](function(){var _0x5e9792=_[_0xf9fa('0x1c')](_0x587be4,function(_0x26b938){_0x26b938['VoiceExtensionId']=_0x3e9045;_0x26b938['isApp']=!![];return _0x26b938;});return _0xebaa84[_0xf9fa('0x58')](_0x5e9792);})['then'](function(_0x53f3bb){return db[_0xf9fa('0x24')][_0xf9fa('0x59')](_0x53f3bb,{'transaction':_0x99f98});});}else{_0x39b215=0x194;_0x39d51d=[];}});})[_0xf9fa('0x15')](function(){if(_0x39b215!==0x194){return db[_0xf9fa('0x24')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x3e9045},'order':_0xf9fa('0x5a')})[_0xf9fa('0x15')](function(_0x1471e7){_0x39d51d=_0x1471e7;});}})['catch'](function(_0x392d4b){_0x39b215=0x1f4;logger[_0xf9fa('0x20')](_0x392d4b[_0xf9fa('0x21')]);if(_0x392d4b[_0xf9fa('0x22')]){delete _0x392d4b[_0xf9fa('0x22')];}_0x39d51d=_0x392d4b;})[_0xf9fa('0x5b')](function(){if(_0x39d51d===null){_0x5e74f2['sendStatus'](_0x39b215);}else{if(_0x39b215===0x1f4){_0x5e74f2['status'](_0x39b215)[_0xf9fa('0x23')](_0x39d51d);}else{_0x5e74f2[_0xf9fa('0xb')](_0x39b215)[_0xf9fa('0xd')](_0x39d51d);}}});}; \ No newline at end of file diff --git a/server/api/voiceExtension/voiceExtension.events.js b/server/api/voiceExtension/voiceExtension.events.js new file mode 100644 index 0000000..f256ff6 --- /dev/null +++ b/server/api/voiceExtension/voiceExtension.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0c49=['events','../../mysqldb','setMaxListeners','save','update','emit','hook','exports'];(function(_0x439e8b,_0x456333){var _0x1389ef=function(_0x186832){while(--_0x186832){_0x439e8b['push'](_0x439e8b['shift']());}};_0x1389ef(++_0x456333);}(_0x0c49,0x198));var _0x90c4=function(_0x3adc1c,_0x277bc8){_0x3adc1c=_0x3adc1c-0x0;var _0xa592bc=_0x0c49[_0x3adc1c];return _0xa592bc;};'use strict';var EventEmitter=require(_0x90c4('0x0'));var VoiceExtension=require(_0x90c4('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x90c4('0x2')](0x0);var events={'afterCreate':_0x90c4('0x3'),'afterUpdate':_0x90c4('0x4'),'afterDestroy':'remove'};function emitEvent(_0x33159b){return function(_0x59b197,_0x13b37d,_0x154242){VoiceExtensionEvents[_0x90c4('0x5')](_0x33159b+':'+_0x59b197['id'],_0x59b197);VoiceExtensionEvents['emit'](_0x33159b,_0x59b197);_0x154242(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x90c4('0x6')](e,emitEvent(event));}}module[_0x90c4('0x7')]=VoiceExtensionEvents; \ No newline at end of file diff --git a/server/api/voiceExtension/voiceExtension.model.js b/server/api/voiceExtension/voiceExtension.model.js new file mode 100644 index 0000000..cfebc58 --- /dev/null +++ b/server/api/voiceExtension/voiceExtension.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbeea=['$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','last','priority','concat','catch','VoiceExtension','voice_extensions','get','then','Hangup','lodash','exports','type','Set','CDR(type)=','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','context','inbound','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','cutdigits','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','timeout','options','url','split','param','prefix','phone','${EXTEN:','${EXTEN}','SIP','none','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','Interval','findAll','interval','IntervalId','intervals','map','filter','toLowerCase','hasOwnProperty','tag','length','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1'];(function(_0x36504d,_0x2918e7){var _0x1200a6=function(_0x326c8c){while(--_0x326c8c){_0x36504d['push'](_0x36504d['shift']());}};_0x1200a6(++_0x2918e7);}(_0xbeea,0xb1));var _0xabee=function(_0x46226f,_0x1abd11){_0x46226f=_0x46226f-0x0;var _0x15fc73=_0xbeea[_0x46226f];return _0x15fc73;};'use strict';var _=require(_0xabee('0x0'));var attributes=require('./voiceExtension.attributes');module[_0xabee('0x1')]=function(_0x3b377b){var _0x35ca8b=_0x3b377b['models'];function _0x972e88(_0x59e264){var _0x58afa7=0x2;var _0x33571e=[{'type':_0x59e264[_0xabee('0x2')],'app':_0xabee('0x3'),'appdata':_0xabee('0x4')+_0x59e264['type'],'context':_0x59e264['context'],'exten':_0x59e264[_0xabee('0x5')],'priority':_0x58afa7++,'VoiceExtensionId':_0x59e264['id']},{'type':_0x59e264[_0xabee('0x2')],'app':_0x59e264['alias']?_0xabee('0x3'):'NoOp','appdata':_0x59e264[_0xabee('0x6')]?_0xabee('0x7')+_0x59e264[_0xabee('0x6')]:_0xabee('0x8'),'context':_0x59e264[_0xabee('0x9')],'exten':_0x59e264[_0xabee('0x5')],'priority':_0x58afa7++,'VoiceExtensionId':_0x59e264['id']}];if(_0x59e264['type']===_0xabee('0xa')){_0x33571e[_0xabee('0xb')]({'type':_0xabee('0xa'),'app':'Set','appdata':_0xabee('0xc')+_0x59e264['id'],'context':_0x59e264[_0xabee('0x9')],'exten':_0x59e264[_0xabee('0x5')],'priority':_0x58afa7++,'VoiceExtensionId':_0x59e264['id']});}_0x33571e['push']({'type':_0x59e264['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x59e264['context'],'exten':_0x59e264[_0xabee('0x5')],'priority':_0x58afa7++,'VoiceExtensionId':_0x59e264['id']},{'type':_0x59e264[_0xabee('0x2')],'app':_0xabee('0x3'),'appdata':_0xabee('0xd'),'context':_0x59e264[_0xabee('0x9')],'exten':_0x59e264['exten'],'priority':_0x58afa7++,'VoiceExtensionId':_0x59e264['id']},{'type':_0x59e264[_0xabee('0x2')],'app':_0xabee('0x3'),'appdata':_0xabee('0xe'),'context':_0x59e264[_0xabee('0x9')],'exten':_0x59e264[_0xabee('0x5')],'priority':_0x58afa7++,'VoiceExtensionId':_0x59e264['id']});return _0x33571e;}function _0x2d6e69(_0x440413){var _0x5a9562=0x2;var _0x33e3c0=[{'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':_0xabee('0x10'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':'outbound','app':_0x440413['alias']?_0xabee('0x3'):'NoOp','appdata':_0x440413['alias']?_0xabee('0x7')+_0x440413[_0xabee('0x6')]:_0xabee('0x8'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':'outbound','app':_0xabee('0x3'),'appdata':'CDR(destination)='+(_0x440413['cutdigits']?'${EXTEN:'+_0x440413[_0xabee('0x11')]+'}':'${EXTEN}'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':_0xabee('0xc')+_0x440413['id'],'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':'outbound','app':_0xabee('0x12'),'appdata':_0xabee('0x13')+(_0x5a9562+0x2)+_0xabee('0x14')+(_0x5a9562+0x1)+')','context':_0x440413[_0xabee('0x9')],'exten':_0x440413['exten'],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':_0x440413['cutdigits']?_0xabee('0x15')+_0x440413[_0xabee('0x11')]+'}':_0xabee('0x16'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413['exten'],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':_0xabee('0x17'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':_0xabee('0xd'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413['exten'],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':'Set','appdata':_0xabee('0xe'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':'Set','appdata':_0xabee('0x18')+_0x440413['id'],'context':_0x440413['context'],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']}];if(_0x440413['hasOwnProperty'](_0xabee('0x19'))&&_0x440413['recordingFormat']!=='none'){_0x33e3c0[_0xabee('0xb')]({'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':_0xabee('0x1a'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']},{'type':_0xabee('0xf'),'app':_0xabee('0x3'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x440413[_0xabee('0x19')]||_0xabee('0x1b'),'context':_0x440413[_0xabee('0x9')],'exten':_0x440413[_0xabee('0x5')],'priority':_0x5a9562++,'VoiceExtensionId':_0x440413['id']});}return _0x33e3c0;}function _0x146ae9(_0x77c942,_0x9703eb){var _0x2d0953=[{'name':_0xabee('0x1c'),'param':0x0},{'name':_0xabee('0x1d'),'param':0x1},{'name':_0xabee('0x1e'),'param':0x2},{'name':_0xabee('0x1f'),'param':0x3}];var _0xb1ef34={};var _0x2ca217=_0x9703eb[_0xabee('0x20')](',');var _0x2e2769=[];for(var _0x3db173=0x0;_0x3db173<_0x2d0953['length'];_0x3db173++){switch(_0x2d0953[_0x3db173]['name']){case _0xabee('0x1c'):_0xb1ef34[_0xabee('0x1c')]=_0x2ca217[_0x2d0953[_0x3db173][_0xabee('0x21')]][_0xabee('0x20')]('/')[0x1];_0xb1ef34['phone']=_0x2ca217[_0x2d0953[_0x3db173][_0xabee('0x21')]][_0xabee('0x20')]('/')[0x2];_0xb1ef34[_0xabee('0x22')]=_0xb1ef34['phone']?_0xb1ef34[_0xabee('0x23')]['split']('$')[0x0]:undefined;_0xb1ef34[_0xabee('0x23')]=_0x77c942[_0xabee('0x11')]?(_0xb1ef34[_0xabee('0x22')]||'')+_0xabee('0x24')+_0x77c942['cutdigits']+'}':(_0xb1ef34['prefix']||'')+_0xabee('0x25');_0x2e2769[_0x2d0953[_0x3db173][_0xabee('0x21')]]=[_0xabee('0x26'),_0xb1ef34[_0xabee('0x1c')],_0xb1ef34[_0xabee('0x23')]]['join']('/');break;case _0xabee('0x1e'):_0xb1ef34[_0xabee('0x1e')]=_0x2ca217[_0x2d0953[_0x3db173]['param']];if(_0x77c942[_0xabee('0x19')]!==_0xabee('0x27')){if(_0xb1ef34['options'][_0xabee('0x28')](_0xabee('0x29'))<0x0){_0xb1ef34[_0xabee('0x1e')]+=_0xabee('0x29');}}else{_0xb1ef34[_0xabee('0x1e')]=_0xb1ef34[_0xabee('0x1e')][_0xabee('0x2a')]('U(xcally-mixmonitor-context)','');}_0x2e2769[_0x2d0953[_0x3db173][_0xabee('0x21')]]=_0xb1ef34[_0xabee('0x1e')];break;default:_0x2e2769[_0x2d0953[_0x3db173][_0xabee('0x21')]]=_0x2ca217[_0x2d0953[_0x3db173]['param']];}}return _0x2e2769[_0xabee('0x2b')](',');}function _0x2701b7(_0x5a918e,_0x29ffe9,_0x1475f3){return new Promise(function(_0x50b996,_0x1ce8ae){var _0x2e3675=[];if(_[_0xabee('0x2c')](_0x29ffe9))return _0x50b996(_0x2e3675);_0x35ca8b[_0xabee('0x2d')][_0xabee('0x2e')]({'attributes':['id',_0xabee('0x2f'),_0xabee('0x30')],'raw':!![]})['then'](function(_0x2aa2f0){for(var _0x23735d=0x0,_0x441af1=0x0;_0x23735d<_0x29ffe9['length'];_0x23735d++,_0x441af1=0x0){var _0x444a92=_0x29ffe9[_0x23735d];var _0x2e83e0=[];var _0x5ae15a=[];delete _0x444a92['id'];if(_0x444a92['interval']!=='*,*,*,*'){_0x444a92[_0xabee('0x31')]=[_0x444a92[_0xabee('0x2f')]];}else{_0x444a92['intervals']=_0x444a92['IntervalId']?_[_0xabee('0x32')](_[_0xabee('0x33')](_0x2aa2f0,{'IntervalId':_0x444a92[_0xabee('0x30')]}),_0xabee('0x2f')):[];}_0x444a92[_0xabee('0x9')]=_0x5a918e[_0xabee('0x9')];_0x444a92[_0xabee('0x5')]=_0x5a918e[_0xabee('0x5')];if(_0x444a92[_0xabee('0x2')])_0x444a92[_0xabee('0x2')]=_0x444a92[_0xabee('0x2')][_0xabee('0x34')]();if(_0x5a918e[_0xabee('0x2')]===_0xabee('0xf')){if(_0x444a92[_0xabee('0x35')](_0xabee('0x36'))&&_0x444a92[_0xabee('0x36')]&&_0x444a92[_0xabee('0x36')]!=='--'){_0x2e83e0['push']({'type':_0x444a92[_0xabee('0x2')][_0xabee('0x34')](),'app':'Set','appdata':'CDR(tag)='+_0x444a92[_0xabee('0x36')],'context':_0x5a918e[_0xabee('0x9')],'exten':_0x5a918e[_0xabee('0x5')],'priority':_0x444a92[_0xabee('0x31')][_0xabee('0x37')]+_0x1475f3+_0x441af1++,'VoiceExtensionId':_0x5a918e['id']});}_0x2e83e0[_0xabee('0xb')]({'type':_0x444a92[_0xabee('0x2')]['toLowerCase'](),'app':_0xabee('0x12'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x444a92[_0xabee('0x38')]?_0xabee('0x39')+_0x444a92['callerID']+')':_0xabee('0x3a')),'context':_0x5a918e[_0xabee('0x9')],'exten':_0x5a918e[_0xabee('0x5')],'priority':_0x444a92['intervals'][_0xabee('0x37')]+_0x1475f3+_0x441af1++,'VoiceExtensionId':_0x5a918e['id']});}else{if(_0x444a92['hasOwnProperty'](_0xabee('0x3b'))){if([_0xabee('0x3c'),_0xabee('0x3d')]['includes'](_0x444a92[_0xabee('0x3e')][_0xabee('0x34')]())&&_0x444a92[_0xabee('0x3f')]!=='custom'){if(_0x444a92[_0xabee('0x3b')]){_0x2e83e0[_0xabee('0xb')]({'type':_0x444a92[_0xabee('0x2')][_0xabee('0x34')](),'app':'ExecIf','appdata':_0xabee('0x40'),'context':_0x5a918e[_0xabee('0x9')],'exten':_0x5a918e[_0xabee('0x5')],'priority':_0x444a92['intervals'][_0xabee('0x37')]+_0x1475f3+_0x441af1++,'VoiceExtensionId':_0x5a918e['id']});_0x2e83e0[_0xabee('0xb')]({'type':_0x444a92[_0xabee('0x2')][_0xabee('0x34')](),'app':_0xabee('0x3'),'appdata':_0xabee('0x41'),'context':_0x5a918e[_0xabee('0x9')],'exten':_0x5a918e[_0xabee('0x5')],'priority':_0x444a92[_0xabee('0x31')]['length']+_0x1475f3+_0x441af1++,'VoiceExtensionId':_0x5a918e['id']});}else{_0x2e83e0['push']({'type':_0x444a92[_0xabee('0x2')][_0xabee('0x34')](),'app':_0xabee('0x12'),'appdata':_0xabee('0x42'),'context':_0x5a918e[_0xabee('0x9')],'exten':_0x5a918e[_0xabee('0x5')],'priority':_0x444a92['intervals'][_0xabee('0x37')]+_0x1475f3+_0x441af1++,'VoiceExtensionId':_0x5a918e['id']});_0x2e83e0[_0xabee('0xb')]({'type':_0x444a92[_0xabee('0x2')]['toLowerCase'](),'app':'Set','appdata':_0xabee('0x43'),'context':_0x5a918e['context'],'exten':_0x5a918e['exten'],'priority':_0x444a92['intervals'][_0xabee('0x37')]+_0x1475f3+_0x441af1++,'VoiceExtensionId':_0x5a918e['id']});}}}}for(var _0x5b975b=0x0;_0x5b975b<_0x444a92[_0xabee('0x31')]['length'];_0x5b975b++){var _0x12240a=_0x1475f3+_0x444a92['intervals'][_0xabee('0x37')];var _0x2c88fc=_0x5b975b===_0x444a92[_0xabee('0x31')][_0xabee('0x37')]-0x1?_0x1475f3+_0x2e83e0['length']+_0x5ae15a[_0xabee('0x37')]+0x2:_0x1475f3+_0x5b975b+0x1;_0x2e83e0['splice'](_0x5b975b,0x0,{'type':_0x5a918e[_0xabee('0x2')],'app':_0xabee('0x44'),'appdata':_0x444a92[_0xabee('0x31')][_0x5b975b]+'?'+_0x5a918e[_0xabee('0x9')]+_0xabee('0x45')+_0x12240a+':'+_0x5a918e[_0xabee('0x9')]+_0xabee('0x45')+_0x2c88fc,'exten':_0x5a918e[_0xabee('0x5')],'context':_0x5a918e['context'],'priority':_0x1475f3+_0x5b975b,'VoiceExtensionId':_0x5a918e['id']});}if(_0x444a92[_0xabee('0x3f')]===_0xabee('0x46'))_0x444a92['appdata']=_0x146ae9(_0x5a918e,_0x444a92[_0xabee('0x47')]);_0x444a92['priority']=_0x2e83e0[_0xabee('0x37')]?_[_0xabee('0x48')](_0x2e83e0)[_0xabee('0x49')]+0x1:_0x1475f3;_0x2e3675=_[_0xabee('0x4a')](_0x2e3675,_0x2e83e0,[_0x444a92],_0x5ae15a);_0x1475f3=_['last'](_0x2e3675)[_0xabee('0x49')]+0x1;}return _0x50b996(_0x2e3675);})[_0xabee('0x4b')](function(_0x2bfdb5){_0x1ce8ae(_0x2bfdb5);});});}return _0x3b377b['define'](_0xabee('0x4c'),attributes,{'tableName':_0xabee('0x4d'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x4861e5){var _0x47a561=this[_0xabee('0x4e')]({'plain':!![]});var _0x1e0082=_0x47a561['type']===_0xabee('0xf')?_0x2d6e69(_0x47a561):_0x972e88(_0x47a561);return _0x2701b7(_0x47a561,_0x4861e5,_['last'](_0x1e0082)[_0xabee('0x49')]+0x1)[_0xabee('0x4f')](function(_0x5e0133){var _0x1f87da=_[_0xabee('0x4a')](_0x1e0082,_0x5e0133);_0x1f87da[_0xabee('0xb')]({'type':_0x47a561[_0xabee('0x2')],'app':_0xabee('0x50'),'exten':_0x47a561[_0xabee('0x5')],'context':_0x47a561['context'],'priority':_[_0xabee('0x48')](_0x1f87da)[_0xabee('0x49')]+0x1,'VoiceExtensionId':_0x47a561['id']});return _0x1f87da;});}}});}; \ No newline at end of file diff --git a/server/api/voiceExtension/voiceExtension.rpc.js b/server/api/voiceExtension/voiceExtension.rpc.js new file mode 100644 index 0000000..0990a60 --- /dev/null +++ b/server/api/voiceExtension/voiceExtension.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6eed=['VoiceExtension','options','raw','limit','include','map','model','attributes','then','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','register','request','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetVoiceExtension'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x6eed,0xff));var _0xd6ee=function(_0x2717eb,_0x39ea39){_0x2717eb=_0x2717eb-0x0;var _0xc7342c=_0x6eed[_0x2717eb];return _0xc7342c;};'use strict';var _=require(_0xd6ee('0x0'));var util=require(_0xd6ee('0x1'));var moment=require(_0xd6ee('0x2'));var BPromise=require(_0xd6ee('0x3'));var rs=require(_0xd6ee('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd6ee('0x5'))['db'];var utils=require(_0xd6ee('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xd6ee('0x7'));var jayson=require(_0xd6ee('0x8'));var client=jayson[_0xd6ee('0x9')][_0xd6ee('0xa')]({'port':0x232a});config[_0xd6ee('0xb')]=_['defaults'](config['redis'],{'host':_0xd6ee('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceExtension.socket')[_0xd6ee('0xd')](socket);function respondWithRpcPromise(_0x213396,_0x5c3c61,_0x24385c){return new BPromise(function(_0xc3f404,_0x2e55a2){return client[_0xd6ee('0xe')](_0x213396,_0x24385c)['then'](function(_0x15baf3){logger[_0xd6ee('0xf')](_0xd6ee('0x10'),_0x5c3c61,_0xd6ee('0x11'));logger[_0xd6ee('0x12')](_0xd6ee('0x13'),_0x5c3c61,'request\x20sent',JSON[_0xd6ee('0x14')](_0x15baf3));if(_0x15baf3[_0xd6ee('0x15')]){if(_0x15baf3['error'][_0xd6ee('0x16')]===0x1f4){logger[_0xd6ee('0x15')](_0xd6ee('0x10'),_0x5c3c61,_0x15baf3[_0xd6ee('0x15')][_0xd6ee('0x17')]);return _0x2e55a2(_0x15baf3[_0xd6ee('0x15')]['message']);}logger[_0xd6ee('0x15')](_0xd6ee('0x10'),_0x5c3c61,_0x15baf3[_0xd6ee('0x15')]['message']);return _0xc3f404(_0x15baf3[_0xd6ee('0x15')]['message']);}else{logger[_0xd6ee('0xf')](_0xd6ee('0x10'),_0x5c3c61,_0xd6ee('0x11'));_0xc3f404(_0x15baf3['result'][_0xd6ee('0x17')]);}})['catch'](function(_0x391488){logger['error'](_0xd6ee('0x10'),_0x5c3c61,_0x391488);_0x2e55a2(_0x391488);});});}exports[_0xd6ee('0x18')]=function(_0x23ff1f){var _0x2888ef=this;return new Promise(function(_0x134c65,_0x4b33f1){return db[_0xd6ee('0x19')]['findAll']({'raw':_0x23ff1f[_0xd6ee('0x1a')]?_0x23ff1f[_0xd6ee('0x1a')][_0xd6ee('0x1b')]===undefined?!![]:![]:!![],'where':_0x23ff1f[_0xd6ee('0x1a')]?_0x23ff1f[_0xd6ee('0x1a')]['where']||null:null,'attributes':_0x23ff1f['options']?_0x23ff1f[_0xd6ee('0x1a')]['attributes']||null:null,'limit':_0x23ff1f[_0xd6ee('0x1a')]?_0x23ff1f['options'][_0xd6ee('0x1c')]||null:null,'include':_0x23ff1f[_0xd6ee('0x1a')]?_0x23ff1f[_0xd6ee('0x1a')][_0xd6ee('0x1d')]?_[_0xd6ee('0x1e')](_0x23ff1f['options']['include'],function(_0x2f438c){return{'model':db[_0x2f438c[_0xd6ee('0x1f')]],'as':_0x2f438c['as'],'attributes':_0x2f438c['attributes'],'include':_0x2f438c[_0xd6ee('0x1d')]?_[_0xd6ee('0x1e')](_0x2f438c[_0xd6ee('0x1d')],function(_0x373308){return{'model':db[_0x373308[_0xd6ee('0x1f')]],'as':_0x373308['as'],'attributes':_0x373308[_0xd6ee('0x20')],'include':_0x373308[_0xd6ee('0x1d')]?_['map'](_0x373308[_0xd6ee('0x1d')],function(_0x124ab7){return{'model':db[_0x124ab7['model']],'as':_0x124ab7['as'],'attributes':_0x124ab7['attributes']};}):[]};}):[]};}):[]:[]})[_0xd6ee('0x21')](function(_0x4580a7){logger[_0xd6ee('0xf')](_0xd6ee('0x18'),_0x23ff1f);logger[_0xd6ee('0x12')]('GetVoiceExtension',_0x23ff1f,JSON[_0xd6ee('0x14')](_0x4580a7));_0x134c65(_0x4580a7);})[_0xd6ee('0x22')](function(_0x21ce09){logger['error'](_0xd6ee('0x18'),_0x21ce09[_0xd6ee('0x17')],_0x23ff1f);_0x4b33f1(_0x2888ef[_0xd6ee('0x15')](0x1f4,_0x21ce09['message']));});});}; \ No newline at end of file diff --git a/server/api/voiceExtension/voiceExtension.socket.js b/server/api/voiceExtension/voiceExtension.socket.js new file mode 100644 index 0000000..b20bce2 --- /dev/null +++ b/server/api/voiceExtension/voiceExtension.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x51f58d,_0x210643){var _0x4ee1c7=function(_0xfa4ece){while(--_0xfa4ece){_0x51f58d['push'](_0x51f58d['shift']());}};_0x4ee1c7(++_0x210643);}(_0x1261,0x144));var _0x1126=function(_0xf26d40,_0x2f4f46){_0xf26d40=_0xf26d40-0x0;var _0x50b68c=_0x1261[_0xf26d40];return _0x50b68c;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2')];function createListener(_0x331a2c,_0x39b786){return function(_0x350f3a){_0x39b786[_0x1126('0x3')](_0x331a2c,_0x350f3a);};}function removeListener(_0x4245ca,_0x21a480){return function(){VoiceExtensionEvents[_0x1126('0x4')](_0x4245ca,_0x21a480);};}exports['register']=function(_0x5c68c8){for(var _0x40ba58=0x0,_0x907180=events['length'];_0x40ba58<_0x907180;_0x40ba58++){var _0x17e5f0=events[_0x40ba58];var _0x28772d=createListener(_0x1126('0x5')+_0x17e5f0,_0x5c68c8);VoiceExtensionEvents['on'](_0x17e5f0,_0x28772d);}}; \ No newline at end of file diff --git a/server/api/voiceMail/index.js b/server/api/voiceMail/index.js new file mode 100644 index 0000000..645f371 --- /dev/null +++ b/server/api/voiceMail/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x32f4=['multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','/:id','getMessages','post','create','update','exports'];(function(_0x2dfbb4,_0x532b0e){var _0x16ad9c=function(_0x1bff62){while(--_0x1bff62){_0x2dfbb4['push'](_0x2dfbb4['shift']());}};_0x16ad9c(++_0x532b0e);}(_0x32f4,0x154));var _0x432f=function(_0x393cdc,_0x5bb732){_0x393cdc=_0x393cdc-0x0;var _0x1333a3=_0x32f4[_0x393cdc];return _0x1333a3;};'use strict';var multer=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var path=require(_0x432f('0x2'));var timeout=require(_0x432f('0x3'));var express=require('express');var router=express[_0x432f('0x4')]();var fs_extra=require(_0x432f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var controller=require(_0x432f('0x8'));router[_0x432f('0x9')]('/',auth[_0x432f('0xa')](),controller['index']);router['get'](_0x432f('0xb'),auth[_0x432f('0xa')](),controller['show']);router[_0x432f('0x9')]('/:id/messages',auth[_0x432f('0xa')](),controller[_0x432f('0xc')]);router[_0x432f('0xd')]('/',auth[_0x432f('0xa')](),controller[_0x432f('0xe')]);router['put'](_0x432f('0xb'),auth['isAuthenticated'](),controller[_0x432f('0xf')]);router['delete'](_0x432f('0xb'),auth[_0x432f('0xa')](),controller['destroy']);module[_0x432f('0x10')]=router; \ No newline at end of file diff --git a/server/api/voiceMail/voiceMail.attributes.js b/server/api/voiceMail/voiceMail.attributes.js new file mode 100644 index 0000000..73cb2b1 --- /dev/null +++ b/server/api/voiceMail/voiceMail.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4885=['from-voicemail','contest_mailbox','setDataValue','email','string','trim','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','exports','STRING'];(function(_0x527824,_0xc824a9){var _0xc8b8ed=function(_0x1b0e19){while(--_0x1b0e19){_0x527824['push'](_0x527824['shift']());}};_0xc8b8ed(++_0xc824a9);}(_0x4885,0x7c));var _0x5488=function(_0x4dfc72,_0x20e817){_0x4dfc72=_0x4dfc72-0x0;var _0x2413f1=_0x4885[_0x4dfc72];return _0x2413f1;};'use strict';var Sequelize=require('sequelize');module[_0x5488('0x0')]={'customer_id':{'type':Sequelize[_0x5488('0x1')]},'context':{'type':Sequelize[_0x5488('0x1')],'defaultValue':_0x5488('0x2'),'unique':_0x5488('0x3')},'mailbox':{'type':Sequelize[_0x5488('0x1')],'defaultValue':'','allowNull':![],'unique':_0x5488('0x3')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x5488('0x1')]},'email':{'type':Sequelize[_0x5488('0x1')],'validate':{'isEmail':!![]},'set':function(_0xabe059){this[_0x5488('0x4')](_0x5488('0x5'),typeof _0xabe059===_0x5488('0x6')&&_0xabe059[_0x5488('0x7')]()?_0xabe059['trim']():null);}},'pager':{'type':Sequelize[_0x5488('0x1')]},'tz':{'type':Sequelize[_0x5488('0x1')],'defaultValue':'central'},'attach':{'type':Sequelize[_0x5488('0x8')](_0x5488('0x9'),'no'),'defaultValue':_0x5488('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x5488('0x8')](_0x5488('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize[_0x5488('0x1')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x5488('0x8')](_0x5488('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x5488('0x8')](_0x5488('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x5488('0x8')](_0x5488('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x5488('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x5488('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x5488('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x5488('0x8')]('yes','no'),'defaultValue':_0x5488('0x9'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0x5488('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x5488('0x8')](_0x5488('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x5488('0x8')]('yes','no'),'defaultValue':_0x5488('0x9'),'allowNull':![]},'stamp':{'type':_0x5488('0xb')},'emailsubject':{'type':Sequelize[_0x5488('0x1')]},'emailbody':{'type':Sequelize[_0x5488('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x5488('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x5488('0xd')],'get':function(){return this[_0x5488('0xe')](_0x5488('0xf'))+_0x5488('0x10')+this[_0x5488('0xe')](_0x5488('0x11'));}}}; \ No newline at end of file diff --git a/server/api/voiceMail/voiceMail.controller.js b/server/api/voiceMail/voiceMail.controller.js new file mode 100644 index 0000000..12b387f --- /dev/null +++ b/server/api/voiceMail/voiceMail.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa478=['UserProfileResource','destroy','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','catch','error','getMessages','findOne','VoiceMailMessage','pick','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','Voicemails'];(function(_0x524e28,_0x1992af){var _0x10ccdc=function(_0x31cd97){while(--_0x31cd97){_0x524e28['push'](_0x524e28['shift']());}};_0x10ccdc(++_0x1992af);}(_0xa478,0x136));var _0x8a47=function(_0x5c4e16,_0x113035){_0x5c4e16=_0x5c4e16-0x0;var _0x36044a=_0xa478[_0x5c4e16];return _0x36044a;};'use strict';var emlformat=require(_0x8a47('0x0'));var rimraf=require(_0x8a47('0x1'));var zipdir=require(_0x8a47('0x2'));var jsonpatch=require(_0x8a47('0x3'));var rp=require(_0x8a47('0x4'));var moment=require(_0x8a47('0x5'));var BPromise=require(_0x8a47('0x6'));var Mustache=require(_0x8a47('0x7'));var util=require(_0x8a47('0x8'));var path=require(_0x8a47('0x9'));var sox=require(_0x8a47('0xa'));var csv=require(_0x8a47('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8a47('0xc'));var _=require(_0x8a47('0xd'));var squel=require(_0x8a47('0xe'));var crypto=require(_0x8a47('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x8a47('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8a47('0x11'));var Papa=require(_0x8a47('0x12'));var Redis=require(_0x8a47('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8a47('0x14'));var as=require(_0x8a47('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8a47('0x16'))('api');var utils=require(_0x8a47('0x17'));var config=require(_0x8a47('0x18'));var licenseUtil=require(_0x8a47('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e3166,_0x59efc7){_0x59efc7=_0x59efc7||0xcc;return function(_0x36941a){if(_0x36941a){return _0x5e3166[_0x8a47('0x1a')](_0x59efc7);}return _0x5e3166['status'](_0x59efc7)[_0x8a47('0x1b')]();};}function respondWithResult(_0x28bbc5,_0x1a9a6f){_0x1a9a6f=_0x1a9a6f||0xc8;return function(_0x55985c){if(_0x55985c){return _0x28bbc5[_0x8a47('0x1c')](_0x1a9a6f)[_0x8a47('0x1d')](_0x55985c);}};}function respondWithFilteredResult(_0x2f682e,_0x1c8488){return function(_0x41bdaf){if(_0x41bdaf){var _0x18f2be=typeof _0x1c8488[_0x8a47('0x1e')]===_0x8a47('0x1f')&&typeof _0x1c8488[_0x8a47('0x20')]==='undefined';var _0x20fbf7=_0x41bdaf[_0x8a47('0x21')];var _0x3f9093=_0x18f2be?0x0:_0x1c8488['offset'];var _0x341089=_0x18f2be?_0x41bdaf['count']:_0x1c8488['offset']+_0x1c8488[_0x8a47('0x20')];var _0x2174b1;if(_0x341089>=_0x20fbf7){_0x341089=_0x20fbf7;_0x2174b1=0xc8;}else{_0x2174b1=0xce;}_0x2f682e[_0x8a47('0x1c')](_0x2174b1);return _0x2f682e[_0x8a47('0x22')](_0x8a47('0x23'),_0x3f9093+'-'+_0x341089+'/'+_0x20fbf7)[_0x8a47('0x1d')](_0x41bdaf);}return null;};}function patchUpdates(_0x44e119){return function(_0x1bbed6){try{jsonpatch[_0x8a47('0x24')](_0x1bbed6,_0x44e119,!![]);}catch(_0xc2065a){return BPromise['reject'](_0xc2065a);}return _0x1bbed6[_0x8a47('0x25')]();};}function saveUpdates(_0x5923ec,_0x289f28){return function(_0x3d7993){if(_0x3d7993){return _0x3d7993[_0x8a47('0x26')](_0x5923ec)[_0x8a47('0x27')](function(_0x5d4b6c){return _0x5d4b6c;});}return null;};}function removeEntity(_0x116b5e,_0x5ae186){return function(_0x50f6ba){if(_0x50f6ba){return _0x50f6ba['destroy']()['then'](function(){var _0xf46d2c=_0x50f6ba[_0x8a47('0x28')]({'plain':!![]});var _0x5bed3e=_0x8a47('0x29');return db[_0x8a47('0x2a')][_0x8a47('0x2b')]({'where':{'type':_0x5bed3e,'resourceId':_0xf46d2c['id']}})[_0x8a47('0x27')](function(){return _0x50f6ba;});})[_0x8a47('0x27')](function(){_0x116b5e[_0x8a47('0x1c')](0xcc)[_0x8a47('0x1b')]();});}};}function handleEntityNotFound(_0x576fb3,_0x22a52f){return function(_0x4a10c3){if(!_0x4a10c3){_0x576fb3[_0x8a47('0x1a')](0x194);}return _0x4a10c3;};}function handleError(_0x3a8685,_0x54d4b2){_0x54d4b2=_0x54d4b2||0x1f4;return function(_0x1e89b1){logger['error'](_0x1e89b1['stack']);if(_0x1e89b1[_0x8a47('0x2c')]){delete _0x1e89b1[_0x8a47('0x2c')];}_0x3a8685[_0x8a47('0x1c')](_0x54d4b2)[_0x8a47('0x2d')](_0x1e89b1);};}exports[_0x8a47('0x2e')]=function(_0x18bfd3,_0x58aa06){var _0x353576={},_0x4d78b5={},_0x549913={'count':0x0,'rows':[]};var _0x448459=_[_0x8a47('0x2f')](db[_0x8a47('0x30')][_0x8a47('0x31')],function(_0x16e024){return{'name':_0x16e024[_0x8a47('0x32')],'type':_0x16e024[_0x8a47('0x33')][_0x8a47('0x34')]};});_0x4d78b5[_0x8a47('0x35')]=_[_0x8a47('0x2f')](_0x448459,'name');_0x4d78b5[_0x8a47('0x36')]=_[_0x8a47('0x37')](_0x18bfd3[_0x8a47('0x36')]);_0x4d78b5['filters']=_[_0x8a47('0x38')](_0x4d78b5[_0x8a47('0x35')],_0x4d78b5['query']);_0x353576[_0x8a47('0x39')]=_[_0x8a47('0x38')](_0x4d78b5[_0x8a47('0x35')],qs[_0x8a47('0x3a')](_0x18bfd3['query']['fields']));_0x353576[_0x8a47('0x39')]=_0x353576[_0x8a47('0x39')][_0x8a47('0x3b')]?_0x353576[_0x8a47('0x39')]:_0x4d78b5[_0x8a47('0x35')];if(!_0x18bfd3[_0x8a47('0x36')][_0x8a47('0x3c')]('nolimit')){_0x353576['limit']=qs[_0x8a47('0x20')](_0x18bfd3[_0x8a47('0x36')][_0x8a47('0x20')]);_0x353576[_0x8a47('0x1e')]=qs[_0x8a47('0x1e')](_0x18bfd3[_0x8a47('0x36')][_0x8a47('0x1e')]);}_0x353576[_0x8a47('0x3d')]=qs[_0x8a47('0x3e')](_0x18bfd3[_0x8a47('0x36')][_0x8a47('0x3e')]);_0x353576['where']=qs[_0x8a47('0x3f')](_['pick'](_0x18bfd3['query'],_0x4d78b5['filters']),_0x448459);if(_0x18bfd3['query']['filter']){_0x353576[_0x8a47('0x40')]=_[_0x8a47('0x41')](_0x353576[_0x8a47('0x40')],{'$or':_[_0x8a47('0x2f')](_0x448459,function(_0x10c483){if(_0x10c483[_0x8a47('0x33')]!==_0x8a47('0x42')){var _0x29beee={};_0x29beee[_0x10c483['name']]={'$like':'%'+_0x18bfd3['query'][_0x8a47('0x43')]+'%'};return _0x29beee;}})});}_0x353576=_[_0x8a47('0x41')]({},_0x353576,_0x18bfd3[_0x8a47('0x44')]);var _0x19298d={'where':_0x353576['where']};return db[_0x8a47('0x30')][_0x8a47('0x21')](_0x19298d)[_0x8a47('0x27')](function(_0x369dd5){_0x549913[_0x8a47('0x21')]=_0x369dd5;if(_0x18bfd3['query'][_0x8a47('0x45')]){_0x353576[_0x8a47('0x46')]=[{'all':!![]}];}return db[_0x8a47('0x30')]['findAll'](_0x353576);})[_0x8a47('0x27')](function(_0x2c70ea){_0x549913[_0x8a47('0x47')]=_0x2c70ea;return _0x549913;})[_0x8a47('0x27')](respondWithFilteredResult(_0x58aa06,_0x353576))['catch'](handleError(_0x58aa06,null));};exports[_0x8a47('0x48')]=function(_0x2f523f,_0x2fa701){var _0x2e2520={'raw':!![],'where':{'id':_0x2f523f[_0x8a47('0x49')]['id']}},_0x22b0d6={};_0x22b0d6['model']=_['keys'](db[_0x8a47('0x30')][_0x8a47('0x31')]);_0x22b0d6[_0x8a47('0x36')]=_['keys'](_0x2f523f[_0x8a47('0x36')]);_0x22b0d6[_0x8a47('0x3f')]=_['intersection'](_0x22b0d6['model'],_0x22b0d6[_0x8a47('0x36')]);_0x2e2520['attributes']=_[_0x8a47('0x38')](_0x22b0d6[_0x8a47('0x35')],qs[_0x8a47('0x3a')](_0x2f523f[_0x8a47('0x36')][_0x8a47('0x3a')]));_0x2e2520[_0x8a47('0x39')]=_0x2e2520['attributes']['length']?_0x2e2520[_0x8a47('0x39')]:_0x22b0d6[_0x8a47('0x35')];if(_0x2f523f[_0x8a47('0x36')][_0x8a47('0x45')]){_0x2e2520[_0x8a47('0x46')]=[{'all':!![]}];}_0x2e2520=_['merge']({},_0x2e2520,_0x2f523f['options']);return db[_0x8a47('0x30')]['find'](_0x2e2520)[_0x8a47('0x27')](handleEntityNotFound(_0x2fa701,null))[_0x8a47('0x27')](respondWithResult(_0x2fa701,null))['catch'](handleError(_0x2fa701,null));};exports[_0x8a47('0x4a')]=function(_0x237ed1,_0x14e22c){return db[_0x8a47('0x30')][_0x8a47('0x4a')](_0x237ed1[_0x8a47('0x4b')],{})[_0x8a47('0x27')](function(_0x2d2455){var _0x512938=_0x237ed1[_0x8a47('0x4c')][_0x8a47('0x28')]({'plain':!![]});if(!_0x512938)throw new Error(_0x8a47('0x4d'));if(_0x512938[_0x8a47('0x4e')]==='user'){var _0x11db4e=_0x2d2455[_0x8a47('0x28')]({'plain':!![]});var _0x24e123=_0x8a47('0x29');return db[_0x8a47('0x4f')][_0x8a47('0x50')]({'where':{'name':_0x24e123,'userProfileId':_0x512938['userProfileId']},'raw':!![]})['then'](function(_0x456cfb){if(_0x456cfb&&_0x456cfb['autoAssociation']===0x0){return db[_0x8a47('0x2a')][_0x8a47('0x4a')]({'name':_0x11db4e['name'],'resourceId':_0x11db4e['id'],'type':_0x456cfb[_0x8a47('0x2c')],'sectionId':_0x456cfb['id']},{})['then'](function(){return _0x2d2455;});}else{return _0x2d2455;}})[_0x8a47('0x51')](function(_0x5c5577){logger[_0x8a47('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5c5577);throw _0x5c5577;});}return _0x2d2455;})[_0x8a47('0x27')](respondWithResult(_0x14e22c,0xc9))[_0x8a47('0x51')](handleError(_0x14e22c,null));};exports[_0x8a47('0x26')]=function(_0x144ce6,_0x4590ae){if(_0x144ce6[_0x8a47('0x4b')]['id']){delete _0x144ce6[_0x8a47('0x4b')]['id'];}return db[_0x8a47('0x30')][_0x8a47('0x50')]({'where':{'id':_0x144ce6[_0x8a47('0x49')]['id']}})[_0x8a47('0x27')](handleEntityNotFound(_0x4590ae,null))['then'](saveUpdates(_0x144ce6[_0x8a47('0x4b')],null))[_0x8a47('0x27')](respondWithResult(_0x4590ae,null))['catch'](handleError(_0x4590ae,null));};exports[_0x8a47('0x2b')]=function(_0x408ce2,_0x436c27){return db[_0x8a47('0x30')][_0x8a47('0x50')]({'where':{'id':_0x408ce2[_0x8a47('0x49')]['id']}})[_0x8a47('0x27')](handleEntityNotFound(_0x436c27,null))[_0x8a47('0x27')](removeEntity(_0x436c27,null))[_0x8a47('0x51')](handleError(_0x436c27,null));};exports[_0x8a47('0x53')]=function(_0x2100cb,_0x385087,_0x5f448e){return db[_0x8a47('0x30')][_0x8a47('0x54')]({'where':{'id':_0x2100cb[_0x8a47('0x49')]['id']}})[_0x8a47('0x27')](handleEntityNotFound(_0x385087,null))[_0x8a47('0x27')](function(_0x6c2f83){var _0x134fc5;var _0x3242b7={},_0x41cc36={};_0x41cc36[_0x8a47('0x35')]=_[_0x8a47('0x37')](db[_0x8a47('0x55')][_0x8a47('0x31')]);_0x41cc36[_0x8a47('0x36')]=_[_0x8a47('0x37')](_0x2100cb[_0x8a47('0x36')]);_0x41cc36['filters']=_[_0x8a47('0x38')](_0x41cc36['model'],_0x41cc36[_0x8a47('0x36')]);_0x3242b7[_0x8a47('0x39')]=_[_0x8a47('0x38')](_0x41cc36[_0x8a47('0x35')],qs[_0x8a47('0x3a')](_0x2100cb[_0x8a47('0x36')]['fields']));_0x3242b7[_0x8a47('0x39')]=_0x3242b7[_0x8a47('0x39')][_0x8a47('0x3b')]?_0x3242b7['attributes']:_0x41cc36['model'];if(!_0x2100cb[_0x8a47('0x36')][_0x8a47('0x3c')]('nolimit')){_0x3242b7[_0x8a47('0x20')]=qs[_0x8a47('0x20')](_0x2100cb[_0x8a47('0x36')][_0x8a47('0x20')]);_0x3242b7[_0x8a47('0x1e')]=qs[_0x8a47('0x1e')](_0x2100cb[_0x8a47('0x36')][_0x8a47('0x1e')]);}_0x3242b7[_0x8a47('0x3d')]=qs[_0x8a47('0x3e')](_0x2100cb[_0x8a47('0x36')][_0x8a47('0x3e')]);_0x3242b7[_0x8a47('0x40')]=qs['filters'](_[_0x8a47('0x56')](_0x2100cb[_0x8a47('0x36')],_0x41cc36[_0x8a47('0x3f')]));if(_0x2100cb[_0x8a47('0x36')][_0x8a47('0x43')]){_0x3242b7[_0x8a47('0x40')]=_['merge'](_0x3242b7[_0x8a47('0x40')],{'$or':_['map'](_0x3242b7['attributes'],function(_0x400c4e){var _0x439172={};_0x439172[_0x400c4e]={'$like':'%'+_0x2100cb[_0x8a47('0x36')][_0x8a47('0x43')]+'%'};return _0x439172;})});}_0x3242b7[_0x8a47('0x40')]=_[_0x8a47('0x41')](_0x3242b7['where'],{'mailboxuser':_0x6c2f83['mailbox']});_0x3242b7=_[_0x8a47('0x41')]({},_0x3242b7,_0x2100cb['options']);return db[_0x8a47('0x55')][_0x8a47('0x57')](_0x3242b7)[_0x8a47('0x27')](respondWithFilteredResult(_0x385087,_0x3242b7));})[_0x8a47('0x51')](handleError(_0x385087,null));}; \ No newline at end of file diff --git a/server/api/voiceMail/voiceMail.model.js b/server/api/voiceMail/voiceMail.model.js new file mode 100644 index 0000000..110862a --- /dev/null +++ b/server/api/voiceMail/voiceMail.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x34cf=['bluebird','request-promise','path','rimraf','./voiceMail.attributes','exports','define','VoiceMail','mailbox_context','mailbox','util','../../config/logger'];(function(_0x3abdcf,_0x15b602){var _0x2ed52b=function(_0x3ee7f0){while(--_0x3ee7f0){_0x3abdcf['push'](_0x3abdcf['shift']());}};_0x2ed52b(++_0x15b602);}(_0x34cf,0x9a));var _0xf34c=function(_0x40e1f5,_0x4d480f){_0x40e1f5=_0x40e1f5-0x0;var _0x473b7e=_0x34cf[_0x40e1f5];return _0x473b7e;};'use strict';var _=require('lodash');var util=require(_0xf34c('0x0'));var logger=require(_0xf34c('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf34c('0x2'));var rp=require(_0xf34c('0x3'));var fs=require('fs');var path=require(_0xf34c('0x4'));var rimraf=require(_0xf34c('0x5'));var config=require('../../config/environment');var attributes=require(_0xf34c('0x6'));module[_0xf34c('0x7')]=function(_0x225513,_0xdf85da){return _0x225513[_0xf34c('0x8')](_0xf34c('0x9'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xf34c('0xa'),'fields':[_0xf34c('0xb'),'context']}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceMail/voiceMail.rpc.js b/server/api/voiceMail/voiceMail.rpc.js new file mode 100644 index 0000000..75991f1 --- /dev/null +++ b/server/api/voiceMail/voiceMail.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x955b=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','VoiceMail,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird'];(function(_0x5e2953,_0x79755){var _0x44608c=function(_0x1a20d6){while(--_0x1a20d6){_0x5e2953['push'](_0x5e2953['shift']());}};_0x44608c(++_0x79755);}(_0x955b,0x1dc));var _0xb955=function(_0x258238,_0x219494){_0x258238=_0x258238-0x0;var _0x126c77=_0x955b[_0x258238];return _0x126c77;};'use strict';var _=require(_0xb955('0x0'));var util=require(_0xb955('0x1'));var moment=require(_0xb955('0x2'));var BPromise=require(_0xb955('0x3'));var rs=require(_0xb955('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb955('0x5'))['db'];var utils=require(_0xb955('0x6'));var logger=require('../../config/logger')(_0xb955('0x7'));var config=require(_0xb955('0x8'));var jayson=require(_0xb955('0x9'));var client=jayson['client'][_0xb955('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d589d,_0x247033,_0x5b73f7){return new BPromise(function(_0x5ae251,_0x888f76){return client[_0xb955('0xb')](_0x2d589d,_0x5b73f7)['then'](function(_0x59c5ce){logger[_0xb955('0xc')](_0xb955('0xd'),_0x247033,_0xb955('0xe'));logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x247033,_0xb955('0xe'),JSON[_0xb955('0xf')](_0x59c5ce));if(_0x59c5ce['error']){if(_0x59c5ce[_0xb955('0x10')]['code']===0x1f4){logger[_0xb955('0x10')](_0xb955('0xd'),_0x247033,_0x59c5ce[_0xb955('0x10')][_0xb955('0x11')]);return _0x888f76(_0x59c5ce[_0xb955('0x10')][_0xb955('0x11')]);}logger[_0xb955('0x10')]('VoiceMail,\x20%s,\x20%s',_0x247033,_0x59c5ce[_0xb955('0x10')][_0xb955('0x11')]);return _0x5ae251(_0x59c5ce['error'][_0xb955('0x11')]);}else{logger[_0xb955('0xc')]('VoiceMail,\x20%s,\x20%s',_0x247033,_0xb955('0xe'));_0x5ae251(_0x59c5ce[_0xb955('0x12')][_0xb955('0x11')]);}})[_0xb955('0x13')](function(_0x18b750){logger['error'](_0xb955('0xd'),_0x247033,_0x18b750);_0x888f76(_0x18b750);});});} \ No newline at end of file diff --git a/server/api/voiceMailMessage/index.js b/server/api/voiceMailMessage/index.js new file mode 100644 index 0000000..55bf9d1 --- /dev/null +++ b/server/api/voiceMailMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x110c=['../../config/environment','get','index','/:id','isAuthenticated','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x110c,0x1cb));var _0xc110=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x110c[_0x1cc8fe];return _0x230054;};'use strict';var multer=require(_0xc110('0x0'));var util=require(_0xc110('0x1'));var path=require(_0xc110('0x2'));var timeout=require(_0xc110('0x3'));var express=require(_0xc110('0x4'));var router=express[_0xc110('0x5')]();var fs_extra=require(_0xc110('0x6'));var auth=require(_0xc110('0x7'));var interaction=require(_0xc110('0x8'));var config=require(_0xc110('0x9'));var controller=require('./voiceMailMessage.controller');router[_0xc110('0xa')]('/',auth['isAuthenticated'](),controller[_0xc110('0xb')]);router['get'](_0xc110('0xc'),auth[_0xc110('0xd')](),controller['show']);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0xc110('0xd')](),controller[_0xc110('0xe')]);router['put'](_0xc110('0xc'),auth[_0xc110('0xd')](),controller[_0xc110('0xf')]);router['delete'](_0xc110('0xc'),auth['isAuthenticated'](),controller[_0xc110('0x10')]);module[_0xc110('0x11')]=router; \ No newline at end of file diff --git a/server/api/voiceMailMessage/voiceMailMessage.attributes.js b/server/api/voiceMailMessage/voiceMailMessage.attributes.js new file mode 100644 index 0000000..ecd697f --- /dev/null +++ b/server/api/voiceMailMessage/voiceMailMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xf809=['sequelize','exports','getDataValue','INTEGER','STRING','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x11fd0f,_0x2398dc){var _0x58deaf=function(_0x34b034){while(--_0x34b034){_0x11fd0f['push'](_0x11fd0f['shift']());}};_0x58deaf(++_0x2398dc);}(_0xf809,0x183));var _0x9f80=function(_0x115eda,_0x30c8f6){_0x115eda=_0x115eda-0x0;var _0x55d6a7=_0xf809[_0x115eda];return _0x55d6a7;};'use strict';var Sequelize=require(_0x9f80('0x0'));module[_0x9f80('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x795d48){return this[_0x9f80('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x9f80('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0x9f80('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x9f80('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x9f80('0x6'),'defaultValue':Sequelize[_0x9f80('0x7')](_0x9f80('0x8'))}}; \ No newline at end of file diff --git a/server/api/voiceMailMessage/voiceMailMessage.controller.js b/server/api/voiceMailMessage/voiceMailMessage.controller.js new file mode 100644 index 0000000..6a78983 --- /dev/null +++ b/server/api/voiceMailMessage/voiceMailMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1f8a=['download','recording','msg_id','ValidationError','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','send','eml-format','rimraf','fast-json-patch','request-promise','mustache','sox','ejs','lodash','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','VoiceMailMessage','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','create','body','find','params'];(function(_0x15ff47,_0x3d08c5){var _0x239fb9=function(_0x395f25){while(--_0x395f25){_0x15ff47['push'](_0x15ff47['shift']());}};_0x239fb9(++_0x3d08c5);}(_0x1f8a,0x18b));var _0xa1f8=function(_0x4818a0,_0x130415){_0x4818a0=_0x4818a0-0x0;var _0x465228=_0x1f8a[_0x4818a0];return _0x465228;};'use strict';var emlformat=require(_0xa1f8('0x0'));var rimraf=require(_0xa1f8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa1f8('0x2'));var rp=require(_0xa1f8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa1f8('0x4'));var util=require('util');var path=require('path');var sox=require(_0xa1f8('0x5'));var csv=require('to-csv');var ejs=require(_0xa1f8('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa1f8('0x7'));var squel=require('squel');var crypto=require(_0xa1f8('0x8'));var jsforce=require(_0xa1f8('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xa1f8('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa1f8('0xb'));var authService=require(_0xa1f8('0xc'));var qs=require(_0xa1f8('0xd'));var as=require(_0xa1f8('0xe'));var hardwareService=require(_0xa1f8('0xf'));var logger=require(_0xa1f8('0x10'))('api');var utils=require(_0xa1f8('0x11'));var config=require(_0xa1f8('0x12'));var licenseUtil=require(_0xa1f8('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x50d50b,_0x408e48){_0x408e48=_0x408e48||0xcc;return function(_0x424012){if(_0x424012){return _0x50d50b[_0xa1f8('0x14')](_0x408e48);}return _0x50d50b[_0xa1f8('0x15')](_0x408e48)[_0xa1f8('0x16')]();};}function respondWithResult(_0x122b64,_0x37ac22){_0x37ac22=_0x37ac22||0xc8;return function(_0x2ddfad){if(_0x2ddfad){return _0x122b64[_0xa1f8('0x15')](_0x37ac22)['json'](_0x2ddfad);}};}function respondWithFilteredResult(_0x13cf65,_0x31835c){return function(_0xd13fc0){if(_0xd13fc0){var _0x2645ab=typeof _0x31835c['offset']===_0xa1f8('0x17')&&typeof _0x31835c[_0xa1f8('0x18')]==='undefined';var _0x906427=_0xd13fc0['count'];var _0x164585=_0x2645ab?0x0:_0x31835c[_0xa1f8('0x19')];var _0x4393f4=_0x2645ab?_0xd13fc0[_0xa1f8('0x1a')]:_0x31835c['offset']+_0x31835c['limit'];var _0xa1edf0;if(_0x4393f4>=_0x906427){_0x4393f4=_0x906427;_0xa1edf0=0xc8;}else{_0xa1edf0=0xce;}_0x13cf65[_0xa1f8('0x15')](_0xa1edf0);return _0x13cf65[_0xa1f8('0x1b')](_0xa1f8('0x1c'),_0x164585+'-'+_0x4393f4+'/'+_0x906427)['json'](_0xd13fc0);}return null;};}function patchUpdates(_0x2c9087){return function(_0x2534d7){try{jsonpatch[_0xa1f8('0x1d')](_0x2534d7,_0x2c9087,!![]);}catch(_0x342167){return BPromise[_0xa1f8('0x1e')](_0x342167);}return _0x2534d7['save']();};}function saveUpdates(_0x161aee,_0xa8f73a){return function(_0x527722){if(_0x527722){return _0x527722[_0xa1f8('0x1f')](_0x161aee)[_0xa1f8('0x20')](function(_0x29b883){return _0x29b883;});}return null;};}function removeEntity(_0x2a6de6,_0x316ac5){return function(_0x4322fa){if(_0x4322fa){return _0x4322fa[_0xa1f8('0x21')]()['then'](function(){_0x2a6de6[_0xa1f8('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b48a8,_0x12b7ee){return function(_0x4a32fa){if(!_0x4a32fa){_0x4b48a8['sendStatus'](0x194);}return _0x4a32fa;};}function handleError(_0x12d848,_0x3b36a8){_0x3b36a8=_0x3b36a8||0x1f4;return function(_0x5f470b){logger[_0xa1f8('0x22')](_0x5f470b[_0xa1f8('0x23')]);if(_0x5f470b[_0xa1f8('0x24')]){delete _0x5f470b[_0xa1f8('0x24')];}_0x12d848[_0xa1f8('0x15')](_0x3b36a8)['send'](_0x5f470b);};}exports['index']=function(_0x5be46e,_0x59e157){var _0x5c3a50={},_0x25222e={},_0x253152={'count':0x0,'rows':[]};var _0x5a99db=_['map'](db[_0xa1f8('0x25')]['rawAttributes'],function(_0x869359){return{'name':_0x869359['fieldName'],'type':_0x869359['type'][_0xa1f8('0x26')]};});_0x25222e[_0xa1f8('0x27')]=_['differenceBy'](_['map'](_0x5a99db,_0xa1f8('0x24')),[_0xa1f8('0x24')]);_0x25222e[_0xa1f8('0x28')]=_[_0xa1f8('0x29')](_0x5be46e['query']);_0x25222e[_0xa1f8('0x2a')]=_[_0xa1f8('0x2b')](_0x25222e[_0xa1f8('0x27')],_0x25222e['query']);_0x5c3a50[_0xa1f8('0x2c')]=_[_0xa1f8('0x2b')](_0x25222e['model'],qs['fields'](_0x5be46e[_0xa1f8('0x28')][_0xa1f8('0x2d')]));_0x5c3a50[_0xa1f8('0x2c')]=_0x5c3a50[_0xa1f8('0x2c')]['length']?_0x5c3a50[_0xa1f8('0x2c')]:_0x25222e[_0xa1f8('0x27')];if(!_0x5be46e['query'][_0xa1f8('0x2e')]('nolimit')){_0x5c3a50['limit']=qs[_0xa1f8('0x18')](_0x5be46e[_0xa1f8('0x28')]['limit']);_0x5c3a50[_0xa1f8('0x19')]=qs['offset'](_0x5be46e[_0xa1f8('0x28')][_0xa1f8('0x19')]);}_0x5c3a50[_0xa1f8('0x2f')]=qs[_0xa1f8('0x30')](_0x5be46e['query'][_0xa1f8('0x30')]);_0x5c3a50[_0xa1f8('0x31')]=qs[_0xa1f8('0x2a')](_[_0xa1f8('0x32')](_0x5be46e[_0xa1f8('0x28')],_0x25222e[_0xa1f8('0x2a')]),_0x5a99db);if(_0x5be46e[_0xa1f8('0x28')][_0xa1f8('0x33')]){_0x5c3a50['where']=_[_0xa1f8('0x34')](_0x5c3a50[_0xa1f8('0x31')],{'$or':_[_0xa1f8('0x35')](_0x5a99db,function(_0x20b1ce){if(_0x20b1ce[_0xa1f8('0x36')]!==_0xa1f8('0x37')){var _0x273079={};_0x273079[_0x20b1ce['name']]={'$like':'%'+_0x5be46e[_0xa1f8('0x28')][_0xa1f8('0x33')]+'%'};return _0x273079;}})});}_0x5c3a50=_[_0xa1f8('0x34')]({},_0x5c3a50,_0x5be46e[_0xa1f8('0x38')]);var _0x2e7c1a={'where':_0x5c3a50[_0xa1f8('0x31')]};return db[_0xa1f8('0x25')][_0xa1f8('0x1a')](_0x2e7c1a)[_0xa1f8('0x20')](function(_0x24b4de){_0x253152[_0xa1f8('0x1a')]=_0x24b4de;if(_0x5be46e[_0xa1f8('0x28')][_0xa1f8('0x39')]){_0x5c3a50[_0xa1f8('0x3a')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0xa1f8('0x3b')](_0x5c3a50);})[_0xa1f8('0x20')](function(_0x269780){_0x253152[_0xa1f8('0x3c')]=_0x269780;return _0x253152;})['then'](respondWithFilteredResult(_0x59e157,_0x5c3a50))[_0xa1f8('0x3d')](handleError(_0x59e157,null));};exports[_0xa1f8('0x3e')]=function(_0x716b65,_0x1c3b5a){var _0x19966c={'raw':!![],'where':{'id':_0x716b65['params']['id']}},_0xab5ff2={};_0xab5ff2['model']=_[_0xa1f8('0x29')](db[_0xa1f8('0x25')]['rawAttributes']);_0xab5ff2[_0xa1f8('0x28')]=_['keys'](_0x716b65['query']);_0xab5ff2[_0xa1f8('0x2a')]=_[_0xa1f8('0x2b')](_0xab5ff2[_0xa1f8('0x27')],_0xab5ff2[_0xa1f8('0x28')]);_0x19966c[_0xa1f8('0x2c')]=_[_0xa1f8('0x2b')](_0xab5ff2[_0xa1f8('0x27')],qs['fields'](_0x716b65['query'][_0xa1f8('0x2d')]));_0x19966c[_0xa1f8('0x2c')]=_0x19966c[_0xa1f8('0x2c')]['length']?_0x19966c[_0xa1f8('0x2c')]:_0xab5ff2[_0xa1f8('0x27')];if(_0x716b65['query']['includeAll']){_0x19966c[_0xa1f8('0x3a')]=[{'all':!![]}];}_0x19966c=_['merge']({},_0x19966c,_0x716b65[_0xa1f8('0x38')]);return db['VoiceMailMessage']['find'](_0x19966c)[_0xa1f8('0x20')](handleEntityNotFound(_0x1c3b5a,null))[_0xa1f8('0x20')](respondWithResult(_0x1c3b5a,null))[_0xa1f8('0x3d')](handleError(_0x1c3b5a,null));};exports[_0xa1f8('0x3f')]=function(_0x35cb7f,_0x6ca13e){return db[_0xa1f8('0x25')][_0xa1f8('0x3f')](_0x35cb7f[_0xa1f8('0x40')],{})[_0xa1f8('0x20')](respondWithResult(_0x6ca13e,0xc9))[_0xa1f8('0x3d')](handleError(_0x6ca13e,null));};exports['update']=function(_0x9e24ee,_0x319471){if(_0x9e24ee['body']['id']){delete _0x9e24ee['body']['id'];}return db[_0xa1f8('0x25')][_0xa1f8('0x41')]({'where':{'id':_0x9e24ee[_0xa1f8('0x42')]['id']}})[_0xa1f8('0x20')](handleEntityNotFound(_0x319471,null))['then'](saveUpdates(_0x9e24ee['body'],null))[_0xa1f8('0x20')](respondWithResult(_0x319471,null))['catch'](handleError(_0x319471,null));};exports[_0xa1f8('0x21')]=function(_0x24cd6d,_0x252a7c){return db[_0xa1f8('0x25')][_0xa1f8('0x41')]({'where':{'id':_0x24cd6d[_0xa1f8('0x42')]['id']}})[_0xa1f8('0x20')](handleEntityNotFound(_0x252a7c,null))[_0xa1f8('0x20')](removeEntity(_0x252a7c,null))[_0xa1f8('0x3d')](handleError(_0x252a7c,null));};exports[_0xa1f8('0x43')]=function(_0x3b0cbf,_0x5d07e3,_0x4bf82f){return db['VoiceMailMessage'][_0xa1f8('0x41')]({'where':{'id':_0x3b0cbf['params']['id']},'attributes':['id',_0xa1f8('0x44'),_0xa1f8('0x45')]})[_0xa1f8('0x20')](handleEntityNotFound(_0x5d07e3,null))[_0xa1f8('0x20')](function(_0x21b3b6){if(_0x21b3b6){if(!_0x21b3b6['recording']){throw new db['Sequelize'][(_0xa1f8('0x46'))]('VoiceMailMessage\x20not\x20found');}var _0x28508a={'Content-Type':_0xa1f8('0x47'),'Content-Disposition':_0xa1f8('0x48')};if(_0x21b3b6['msg_id']){_0x28508a[_0xa1f8('0x49')]=_0xa1f8('0x4a')+_0x21b3b6[_0xa1f8('0x45')]+_0xa1f8('0x4b');}_0x5d07e3[_0xa1f8('0x1b')](_0x28508a);return _0x5d07e3[_0xa1f8('0x4c')](new Buffer(_0x21b3b6['recording']));}})[_0xa1f8('0x3d')](handleError(_0x5d07e3,null));}; \ No newline at end of file diff --git a/server/api/voiceMailMessage/voiceMailMessage.model.js b/server/api/voiceMailMessage/voiceMailMessage.model.js new file mode 100644 index 0000000..5a3f88a --- /dev/null +++ b/server/api/voiceMailMessage/voiceMailMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5c35=['exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0x5c35,0x1a9));var _0x55c3=function(_0x78a014,_0x5eb19b){_0x78a014=_0x78a014-0x0;var _0x1e5802=_0x5c35[_0x78a014];return _0x1e5802;};'use strict';var _=require(_0x55c3('0x0'));var util=require('util');var logger=require(_0x55c3('0x1'))(_0x55c3('0x2'));var moment=require(_0x55c3('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x55c3('0x4'));var rimraf=require(_0x55c3('0x5'));var config=require(_0x55c3('0x6'));var attributes=require('./voiceMailMessage.attributes');module[_0x55c3('0x7')]=function(_0x5575a1,_0x48e606){return _0x5575a1[_0x55c3('0x8')](_0x55c3('0x9'),attributes,{'tableName':_0x55c3('0xa'),'paranoid':![],'indexes':[{'name':_0x55c3('0xb'),'fields':[_0x55c3('0xb')]}],'timestamps':![]});}; \ No newline at end of file diff --git a/server/api/voiceMailMessage/voiceMailMessage.rpc.js b/server/api/voiceMailMessage/voiceMailMessage.rpc.js new file mode 100644 index 0000000..5bf9096 --- /dev/null +++ b/server/api/voiceMailMessage/voiceMailMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6314=['VoiceMailMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x317d31,_0x353b8a){var _0xf92210=function(_0x1b3fe8){while(--_0x1b3fe8){_0x317d31['push'](_0x317d31['shift']());}};_0xf92210(++_0x353b8a);}(_0x6314,0xad));var _0x4631=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x6314[_0x1cfa0d];return _0xe33279;};'use strict';var _=require('lodash');var util=require(_0x4631('0x0'));var moment=require(_0x4631('0x1'));var BPromise=require(_0x4631('0x2'));var rs=require(_0x4631('0x3'));var fs=require('fs');var Redis=require(_0x4631('0x4'));var db=require(_0x4631('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4631('0x6'));var config=require(_0x4631('0x7'));var jayson=require(_0x4631('0x8'));var client=jayson['client'][_0x4631('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1a9cbb,_0x3d2bc0,_0x4984f0){return new BPromise(function(_0x2bb9a9,_0x499e50){return client[_0x4631('0xa')](_0x1a9cbb,_0x4984f0)[_0x4631('0xb')](function(_0x13c06c){logger[_0x4631('0xc')](_0x4631('0xd'),_0x3d2bc0,_0x4631('0xe'));logger[_0x4631('0xf')](_0x4631('0x10'),_0x3d2bc0,'request\x20sent',JSON['stringify'](_0x13c06c));if(_0x13c06c[_0x4631('0x11')]){if(_0x13c06c[_0x4631('0x11')][_0x4631('0x12')]===0x1f4){logger[_0x4631('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x3d2bc0,_0x13c06c[_0x4631('0x11')]['message']);return _0x499e50(_0x13c06c[_0x4631('0x11')][_0x4631('0x13')]);}logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x3d2bc0,_0x13c06c[_0x4631('0x11')][_0x4631('0x13')]);return _0x2bb9a9(_0x13c06c[_0x4631('0x11')][_0x4631('0x13')]);}else{logger[_0x4631('0xc')]('VoiceMailMessage,\x20%s,\x20%s',_0x3d2bc0,_0x4631('0xe'));_0x2bb9a9(_0x13c06c['result'][_0x4631('0x13')]);}})[_0x4631('0x14')](function(_0x5af0bc){logger[_0x4631('0x11')](_0x4631('0xd'),_0x3d2bc0,_0x5af0bc);_0x499e50(_0x5af0bc);});});} \ No newline at end of file diff --git a/server/api/voiceMusicOnHold/index.js b/server/api/voiceMusicOnHold/index.js new file mode 100644 index 0000000..2a91590 --- /dev/null +++ b/server/api/voiceMusicOnHold/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5737=['isAuthenticated','/:id','/:id/sounds','addSound','put','delete','destroy','removeSound','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get'];(function(_0x405dc0,_0x5f2898){var _0x1ed46d=function(_0x5efad7){while(--_0x5efad7){_0x405dc0['push'](_0x405dc0['shift']());}};_0x1ed46d(++_0x5f2898);}(_0x5737,0xb4));var _0x7573=function(_0x3416d9,_0x6a56f9){_0x3416d9=_0x3416d9-0x0;var _0x589ad9=_0x5737[_0x3416d9];return _0x589ad9;};'use strict';var multer=require('multer');var util=require(_0x7573('0x0'));var path=require(_0x7573('0x1'));var timeout=require(_0x7573('0x2'));var express=require('express');var router=express[_0x7573('0x3')]();var fs_extra=require(_0x7573('0x4'));var auth=require(_0x7573('0x5'));var interaction=require(_0x7573('0x6'));var config=require(_0x7573('0x7'));var controller=require(_0x7573('0x8'));router[_0x7573('0x9')]('/',auth[_0x7573('0xa')](),controller['index']);router['get'](_0x7573('0xb'),auth[_0x7573('0xa')](),controller['show']);router[_0x7573('0x9')]('/:id/sounds',auth[_0x7573('0xa')](),controller['getSounds']);router['post']('/',auth[_0x7573('0xa')](),controller['create']);router['post'](_0x7573('0xc'),auth[_0x7573('0xa')](),controller[_0x7573('0xd')]);router[_0x7573('0xe')](_0x7573('0xb'),auth[_0x7573('0xa')](),controller['update']);router[_0x7573('0xf')](_0x7573('0xb'),auth[_0x7573('0xa')](),controller[_0x7573('0x10')]);router[_0x7573('0xf')]('/:id/sounds/:id2',auth[_0x7573('0xa')](),controller[_0x7573('0x11')]);module[_0x7573('0x12')]=router; \ No newline at end of file diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js new file mode 100644 index 0000000..5823f75 --- /dev/null +++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8afd=['alpha','BOOLEAN','sequelize','exports','STRING','name','mp3nb','quietmp3nb','quietmp3','mp3','files'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8afd,0x178));var _0xd8af=function(_0x43bce3,_0x5c12b4){_0x43bce3=_0x43bce3-0x0;var _0x4f0bd0=_0x8afd[_0x43bce3];return _0x4f0bd0;};'use strict';var Sequelize=require(_0xd8af('0x0'));module[_0xd8af('0x1')]={'name':{'type':Sequelize[_0xd8af('0x2')],'allowNull':![],'unique':_0xd8af('0x3')},'mode':{'type':Sequelize['ENUM']('custom','files',_0xd8af('0x4'),_0xd8af('0x5'),_0xd8af('0x6'),_0xd8af('0x7')),'allowNull':!![],'defaultValue':_0xd8af('0x8')},'directory':{'type':Sequelize[_0xd8af('0x2')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xd8af('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0xd8af('0x2')],'allowNull':!![],'defaultValue':_0xd8af('0x9')},'format':{'type':Sequelize[_0xd8af('0x2')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xd8af('0xa')],'defaultValue':0x0}}; \ No newline at end of file diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js new file mode 100644 index 0000000..14329fc --- /dev/null +++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd8d3=['apply','reject','save','then','get','MusicOnHolds','error','name','send','index','VoiceMusicOnHold','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','includeAll','include','findAll','catch','params','body','find','transaction','mode','files','directory','join','root','server/files/moh','create','mkdirSync','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','destroy','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','sequelize','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','rawAttributes','getSounds','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','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','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x4a5bf4,_0x1e45d5){var _0x350cb9=function(_0x18a1fe){while(--_0x18a1fe){_0x4a5bf4['push'](_0x4a5bf4['shift']());}};_0x350cb9(++_0x1e45d5);}(_0xd8d3,0xbd));var _0x3d8d=function(_0x4eba91,_0x55b74c){_0x4eba91=_0x4eba91-0x0;var _0x185e37=_0xd8d3[_0x4eba91];return _0x185e37;};'use strict';var emlformat=require(_0x3d8d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3d8d('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3d8d('0x2'));var Mustache=require(_0x3d8d('0x3'));var util=require(_0x3d8d('0x4'));var path=require(_0x3d8d('0x5'));var sox=require(_0x3d8d('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d8d('0x7'));var _=require(_0x3d8d('0x8'));var squel=require(_0x3d8d('0x9'));var crypto=require(_0x3d8d('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x3d8d('0xb'));var toCsv=require(_0x3d8d('0xc'));var querystring=require(_0x3d8d('0xd'));var Papa=require('papaparse');var Redis=require(_0x3d8d('0xe'));var authService=require(_0x3d8d('0xf'));var qs=require(_0x3d8d('0x10'));var as=require(_0x3d8d('0x11'));var hardwareService=require(_0x3d8d('0x12'));var logger=require(_0x3d8d('0x13'))('api');var utils=require(_0x3d8d('0x14'));var config=require(_0x3d8d('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30f791,_0x458d70){_0x458d70=_0x458d70||0xcc;return function(_0x1e977e){if(_0x1e977e){return _0x30f791[_0x3d8d('0x16')](_0x458d70);}return _0x30f791[_0x3d8d('0x17')](_0x458d70)[_0x3d8d('0x18')]();};}function respondWithResult(_0x90aa43,_0x2c934b){_0x2c934b=_0x2c934b||0xc8;return function(_0x50b5bc){if(_0x50b5bc){return _0x90aa43[_0x3d8d('0x17')](_0x2c934b)[_0x3d8d('0x19')](_0x50b5bc);}};}function respondWithFilteredResult(_0x49600d,_0x3538de){return function(_0x1343ea){if(_0x1343ea){var _0x59b81b=typeof _0x3538de[_0x3d8d('0x1a')]===_0x3d8d('0x1b')&&typeof _0x3538de[_0x3d8d('0x1c')]===_0x3d8d('0x1b');var _0x1fb45d=_0x1343ea[_0x3d8d('0x1d')];var _0x5c3008=_0x59b81b?0x0:_0x3538de[_0x3d8d('0x1a')];var _0x43c8e8=_0x59b81b?_0x1343ea['count']:_0x3538de[_0x3d8d('0x1a')]+_0x3538de[_0x3d8d('0x1c')];var _0x5ace44;if(_0x43c8e8>=_0x1fb45d){_0x43c8e8=_0x1fb45d;_0x5ace44=0xc8;}else{_0x5ace44=0xce;}_0x49600d[_0x3d8d('0x17')](_0x5ace44);return _0x49600d[_0x3d8d('0x1e')]('Content-Range',_0x5c3008+'-'+_0x43c8e8+'/'+_0x1fb45d)[_0x3d8d('0x19')](_0x1343ea);}return null;};}function patchUpdates(_0x45c9d3){return function(_0x5e0e3a){try{jsonpatch[_0x3d8d('0x1f')](_0x5e0e3a,_0x45c9d3,!![]);}catch(_0x16f1a9){return BPromise[_0x3d8d('0x20')](_0x16f1a9);}return _0x5e0e3a[_0x3d8d('0x21')]();};}function saveUpdates(_0xf6dc2b,_0x5339d0){return function(_0x5c513a){if(_0x5c513a){return _0x5c513a['update'](_0xf6dc2b)[_0x3d8d('0x22')](function(_0x414e03){return _0x414e03;});}return null;};}function removeEntity(_0x16d0ce,_0x42208a){return function(_0x4cbbb1){if(_0x4cbbb1){return _0x4cbbb1['destroy']()[_0x3d8d('0x22')](function(){var _0x2121b3=_0x4cbbb1[_0x3d8d('0x23')]({'plain':!![]});var _0x1ff2aa=_0x3d8d('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x1ff2aa,'resourceId':_0x2121b3['id']}})[_0x3d8d('0x22')](function(){return _0x4cbbb1;});})[_0x3d8d('0x22')](function(){_0x16d0ce['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x480709,_0xd562b9){return function(_0x5c99dc){if(!_0x5c99dc){_0x480709[_0x3d8d('0x16')](0x194);}return _0x5c99dc;};}function handleError(_0xdb72b1,_0x37a682){_0x37a682=_0x37a682||0x1f4;return function(_0x1e8e64){logger[_0x3d8d('0x25')](_0x1e8e64['stack']);if(_0x1e8e64['name']){delete _0x1e8e64[_0x3d8d('0x26')];}_0xdb72b1[_0x3d8d('0x17')](_0x37a682)[_0x3d8d('0x27')](_0x1e8e64);};}exports[_0x3d8d('0x28')]=function(_0x17ec4e,_0xc3f95a){var _0x3b4a18={},_0x2c5040={},_0x2001bf={'count':0x0,'rows':[]};var _0x45c0a0=_['map'](db[_0x3d8d('0x29')]['rawAttributes'],function(_0x30a8ee){return{'name':_0x30a8ee[_0x3d8d('0x2a')],'type':_0x30a8ee[_0x3d8d('0x2b')][_0x3d8d('0x2c')]};});_0x2c5040[_0x3d8d('0x2d')]=_[_0x3d8d('0x2e')](_0x45c0a0,_0x3d8d('0x26'));_0x2c5040[_0x3d8d('0x2f')]=_[_0x3d8d('0x30')](_0x17ec4e[_0x3d8d('0x2f')]);_0x2c5040[_0x3d8d('0x31')]=_['intersection'](_0x2c5040[_0x3d8d('0x2d')],_0x2c5040['query']);_0x3b4a18['attributes']=_[_0x3d8d('0x32')](_0x2c5040[_0x3d8d('0x2d')],qs[_0x3d8d('0x33')](_0x17ec4e[_0x3d8d('0x2f')]['fields']));_0x3b4a18['attributes']=_0x3b4a18[_0x3d8d('0x34')][_0x3d8d('0x35')]?_0x3b4a18[_0x3d8d('0x34')]:_0x2c5040[_0x3d8d('0x2d')];if(!_0x17ec4e[_0x3d8d('0x2f')][_0x3d8d('0x36')](_0x3d8d('0x37'))){_0x3b4a18[_0x3d8d('0x1c')]=qs[_0x3d8d('0x1c')](_0x17ec4e[_0x3d8d('0x2f')][_0x3d8d('0x1c')]);_0x3b4a18[_0x3d8d('0x1a')]=qs['offset'](_0x17ec4e[_0x3d8d('0x2f')][_0x3d8d('0x1a')]);}_0x3b4a18[_0x3d8d('0x38')]=qs[_0x3d8d('0x39')](_0x17ec4e[_0x3d8d('0x2f')][_0x3d8d('0x39')]);delete _0x17ec4e[_0x3d8d('0x2f')][_0x3d8d('0x39')];_0x3b4a18['where']=qs[_0x3d8d('0x31')](_[_0x3d8d('0x3a')](_0x17ec4e[_0x3d8d('0x2f')],_0x2c5040[_0x3d8d('0x31')]),_0x45c0a0);if(_0x17ec4e[_0x3d8d('0x2f')]['filter']){_0x3b4a18[_0x3d8d('0x3b')]=_[_0x3d8d('0x3c')](_0x3b4a18[_0x3d8d('0x3b')],{'$or':_[_0x3d8d('0x2e')](_0x45c0a0,function(_0x24009e){if(_0x24009e[_0x3d8d('0x2b')]!=='VIRTUAL'){var _0x5241f6={};_0x5241f6[_0x24009e[_0x3d8d('0x26')]]={'$like':'%'+_0x17ec4e[_0x3d8d('0x2f')][_0x3d8d('0x3d')]+'%'};return _0x5241f6;}})});}_0x3b4a18=_[_0x3d8d('0x3c')]({},_0x3b4a18,_0x17ec4e[_0x3d8d('0x3e')]);var _0x43c74c={'where':_0x3b4a18[_0x3d8d('0x3b')]};return db[_0x3d8d('0x29')][_0x3d8d('0x1d')](_0x43c74c)[_0x3d8d('0x22')](function(_0x84200c){_0x2001bf[_0x3d8d('0x1d')]=_0x84200c;if(_0x17ec4e['query'][_0x3d8d('0x3f')]){_0x3b4a18[_0x3d8d('0x40')]=[{'all':!![]}];}return db[_0x3d8d('0x29')][_0x3d8d('0x41')](_0x3b4a18);})['then'](function(_0x4ae34a){_0x2001bf['rows']=_0x4ae34a;return _0x2001bf;})['then'](respondWithFilteredResult(_0xc3f95a,_0x3b4a18))[_0x3d8d('0x42')](handleError(_0xc3f95a,null));};exports['show']=function(_0x2a6026,_0x2c6a61){var _0x4118d6={'raw':![],'where':{'id':_0x2a6026[_0x3d8d('0x43')]['id']}},_0x50c743={};_0x50c743[_0x3d8d('0x2d')]=_[_0x3d8d('0x30')](db[_0x3d8d('0x29')]['rawAttributes']);_0x50c743['query']=_['keys'](_0x2a6026['query']);_0x50c743[_0x3d8d('0x31')]=_['intersection'](_0x50c743[_0x3d8d('0x2d')],_0x50c743[_0x3d8d('0x2f')]);_0x4118d6[_0x3d8d('0x34')]=_[_0x3d8d('0x32')](_0x50c743[_0x3d8d('0x2d')],qs[_0x3d8d('0x33')](_0x2a6026[_0x3d8d('0x2f')][_0x3d8d('0x33')]));_0x4118d6['attributes']=_0x4118d6[_0x3d8d('0x34')]['length']?_0x4118d6[_0x3d8d('0x34')]:_0x50c743['model'];if(_0x2a6026['query'][_0x3d8d('0x3f')]){_0x4118d6['include']=[{'all':!![]}];}_0x4118d6=_[_0x3d8d('0x3c')]({},_0x4118d6,_0x2a6026[_0x3d8d('0x3e')]);return db[_0x3d8d('0x29')]['find'](_0x4118d6)[_0x3d8d('0x22')](handleEntityNotFound(_0x2c6a61,null))['then'](respondWithResult(_0x2c6a61,null))[_0x3d8d('0x42')](handleError(_0x2c6a61,null));};exports['update']=function(_0x2c6d0f,_0x430d39){if(_0x2c6d0f['body']['id']){delete _0x2c6d0f[_0x3d8d('0x44')]['id'];}return db[_0x3d8d('0x29')][_0x3d8d('0x45')]({'where':{'id':_0x2c6d0f[_0x3d8d('0x43')]['id']}})['then'](handleEntityNotFound(_0x430d39,null))[_0x3d8d('0x22')](saveUpdates(_0x2c6d0f[_0x3d8d('0x44')],null))['then'](respondWithResult(_0x430d39,null))[_0x3d8d('0x42')](handleError(_0x430d39,null));};exports['create']=function(_0x5ed283,_0x3f71f1,_0x8af153){return db['sequelize'][_0x3d8d('0x46')](function(_0x19553e){if(_0x5ed283[_0x3d8d('0x44')][_0x3d8d('0x47')]===_0x3d8d('0x48')){_0x5ed283[_0x3d8d('0x44')][_0x3d8d('0x49')]=path[_0x3d8d('0x4a')](config[_0x3d8d('0x4b')],_0x3d8d('0x4c'),_0x5ed283['body'][_0x3d8d('0x26')]);}return db[_0x3d8d('0x29')][_0x3d8d('0x4d')](_0x5ed283[_0x3d8d('0x44')],{'transaction':_0x19553e})['then'](function(_0x32227b){if(_0x5ed283['body'][_0x3d8d('0x47')]==='files'){fs[_0x3d8d('0x4e')](_0x32227b[_0x3d8d('0x49')],parseInt(_0x3d8d('0x4f'),0x8));}var _0x1fe3b5=_0x5ed283['user']['get']({'plain':!![]});if(!_0x1fe3b5)throw new Error(_0x3d8d('0x50'));if(_0x1fe3b5[_0x3d8d('0x51')]===_0x3d8d('0x52')){var _0x16651f=_0x32227b[_0x3d8d('0x23')]({'plain':!![]});return db['UserProfileSection'][_0x3d8d('0x45')]({'where':{'name':_0x3d8d('0x24'),'userProfileId':_0x1fe3b5[_0x3d8d('0x53')]},'raw':!![]})[_0x3d8d('0x22')](function(_0x15616f){if(_0x15616f&&_0x15616f[_0x3d8d('0x54')]===0x0){return db['UserProfileResource'][_0x3d8d('0x4d')]({'name':_0x16651f[_0x3d8d('0x26')],'resourceId':_0x16651f['id'],'type':_0x15616f[_0x3d8d('0x26')],'sectionId':_0x15616f['id']},{})['then'](function(){return _0x32227b;});}else{return _0x32227b;}})['catch'](function(_0x5796eb){logger[_0x3d8d('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5796eb);});}return _0x32227b;});})[_0x3d8d('0x22')](respondWithResult(_0x3f71f1,0xc9))[_0x3d8d('0x42')](handleError(_0x3f71f1,null));};exports[_0x3d8d('0x55')]=function(_0x56dee8,_0x1df669,_0x3b328c){var _0x3648b3;return db[_0x3d8d('0x29')][_0x3d8d('0x45')]({'where':{'id':_0x56dee8['params']['id']}})[_0x3d8d('0x22')](function(_0x4ac6cb){if(_0x4ac6cb){return db['sequelize'][_0x3d8d('0x46')](function(_0x389d3b){return _0x4ac6cb[_0x3d8d('0x55')]({'transaction':_0x389d3b,'raw':!![]})[_0x3d8d('0x22')](function(_0x44a664){if(_0x44a664[_0x3d8d('0x49')]){fs[_0x3d8d('0x56')](_0x44a664['directory'])[_0x3d8d('0x57')](function(_0x2502e0){fs[_0x3d8d('0x58')](path[_0x3d8d('0x4a')](_0x44a664[_0x3d8d('0x49')],_0x2502e0));});fs[_0x3d8d('0x59')](_0x44a664[_0x3d8d('0x49')]);}return _0x44a664;});})[_0x3d8d('0x42')](function(_0x16e871){throw new db[(_0x3d8d('0x5a'))][(_0x3d8d('0x5b'))](_0x16e871[_0x3d8d('0x5c')]);});}})[_0x3d8d('0x22')](handleEntityNotFound(_0x1df669,null))[_0x3d8d('0x22')](removeEntity(_0x1df669,null))[_0x3d8d('0x42')](handleError(_0x1df669,null));};exports['addSound']=function(_0xbca50f,_0x5b0911,_0x18604b){return db[_0x3d8d('0x5d')][_0x3d8d('0x46')](function(_0x5d6a3f){var _0x1bdc6e;return db['VoiceMusicOnHold'][_0x3d8d('0x45')]({'where':{'id':_0xbca50f[_0x3d8d('0x43')]['id']}})[_0x3d8d('0x22')](function(_0x117dde){if(_0x117dde){_0x1bdc6e=_0x117dde;return _0x117dde[_0x3d8d('0x5e')](_0xbca50f[_0x3d8d('0x44')]['id'],{'transaction':_0x5d6a3f});}})[_0x3d8d('0x22')](function(_0xd3f262){if(_0xd3f262){return db[_0x3d8d('0x5f')][_0x3d8d('0x60')]({'where':{'id':_0xbca50f[_0x3d8d('0x44')]['id']},'attributes':['id','name',_0x3d8d('0x61'),_0x3d8d('0x62'),_0x3d8d('0x63')],'raw':!![]});}})[_0x3d8d('0x22')](function(_0x52ea50){if(_0x52ea50){var _0x143ffa=path[_0x3d8d('0x4a')](config[_0x3d8d('0x4b')],_0x3d8d('0x64'),util[_0x3d8d('0x65')](_0x3d8d('0x66'),path[_0x3d8d('0x67')](_0x52ea50[_0x3d8d('0x61')],path[_0x3d8d('0x68')](_0x52ea50['save_name'])),_0x52ea50[_0x3d8d('0x62')]));var _0x112f8f=path['join'](config[_0x3d8d('0x4b')],_0x3d8d('0x4c'),_0x1bdc6e[_0x3d8d('0x26')],util[_0x3d8d('0x65')](_0x3d8d('0x66'),_0x52ea50[_0x3d8d('0x26')],_0x52ea50[_0x3d8d('0x62')]));fs[_0x3d8d('0x69')](_0x143ffa,_0x112f8f);return _0x52ea50;}})[_0x3d8d('0x42')](function(_0xe7637d){throw new db[(_0x3d8d('0x5a'))]['ValidationError'](_0xe7637d[_0x3d8d('0x5c')]);});})['then'](handleEntityNotFound(_0x5b0911,null))[_0x3d8d('0x22')](respondWithResult(_0x5b0911,0xc9))[_0x3d8d('0x42')](handleError(_0x5b0911,null));};exports[_0x3d8d('0x6a')]=function(_0x3491a1,_0x106566,_0x3dc648){return db[_0x3d8d('0x5d')][_0x3d8d('0x46')](function(_0x16a504){var _0xae368;return db['VoiceMusicOnHold'][_0x3d8d('0x60')]({'where':{'id':_0x3491a1[_0x3d8d('0x43')]['id']}})[_0x3d8d('0x22')](handleEntityNotFound(_0x106566,null))[_0x3d8d('0x22')](function(_0x50249d){if(_0x50249d){_0xae368=_0x50249d;return _0x50249d[_0x3d8d('0x6a')](_0x3491a1['params'][_0x3d8d('0x6b')]);}})[_0x3d8d('0x22')](function(_0x1e8df3){if(_0x1e8df3){return db[_0x3d8d('0x5f')][_0x3d8d('0x60')]({'where':{'id':_0x3491a1[_0x3d8d('0x43')][_0x3d8d('0x6b')]},'attributes':['id',_0x3d8d('0x26'),'save_name','converted_format','createdAt'],'raw':!![]});}})[_0x3d8d('0x22')](function(_0x5bff97){if(_0x5bff97){fs[_0x3d8d('0x58')](path[_0x3d8d('0x4a')](_0xae368['directory'],util['format'](_0x3d8d('0x66'),_0x5bff97[_0x3d8d('0x26')],_0x5bff97['converted_format'])));return _0x5bff97;}})[_0x3d8d('0x42')](function(_0x27789a){throw new db['Sequelize']['ValidationError'](_0x27789a['message']);});})[_0x3d8d('0x22')](handleEntityNotFound(_0x106566,null))[_0x3d8d('0x22')](respondWithStatusCode(_0x106566,0xcc))[_0x3d8d('0x42')](handleError(_0x106566,null));};exports['getSounds']=function(_0x587d10,_0x16cac8,_0x50844e){var _0x17af8e={};var _0x30b9={};var _0x5b84eb;var _0x4ae936;return db[_0x3d8d('0x29')][_0x3d8d('0x60')]({'where':{'id':_0x587d10[_0x3d8d('0x43')]['id']}})[_0x3d8d('0x22')](handleEntityNotFound(_0x16cac8,null))[_0x3d8d('0x22')](function(_0x512d06){if(_0x512d06){_0x5b84eb=_0x512d06;_0x30b9[_0x3d8d('0x2d')]=_[_0x3d8d('0x30')](db['Sound'][_0x3d8d('0x6c')]);_0x30b9[_0x3d8d('0x2f')]=_[_0x3d8d('0x30')](_0x587d10[_0x3d8d('0x2f')]);_0x30b9[_0x3d8d('0x31')]=_['intersection'](_0x30b9[_0x3d8d('0x2d')],_0x30b9[_0x3d8d('0x2f')]);_0x17af8e[_0x3d8d('0x34')]=_[_0x3d8d('0x32')](_0x30b9[_0x3d8d('0x2d')],qs[_0x3d8d('0x33')](_0x587d10[_0x3d8d('0x2f')][_0x3d8d('0x33')]));_0x17af8e[_0x3d8d('0x34')]=_0x17af8e[_0x3d8d('0x34')][_0x3d8d('0x35')]?_0x17af8e[_0x3d8d('0x34')]:_0x30b9[_0x3d8d('0x2d')];_0x17af8e['order']=qs[_0x3d8d('0x39')](_0x587d10['query']['sort']);_0x17af8e[_0x3d8d('0x3b')]=qs['filters'](_[_0x3d8d('0x3a')](_0x587d10[_0x3d8d('0x2f')],_0x30b9[_0x3d8d('0x31')]));if(_0x587d10[_0x3d8d('0x2f')][_0x3d8d('0x3d')]){_0x17af8e[_0x3d8d('0x3b')]=_[_0x3d8d('0x3c')](_0x17af8e[_0x3d8d('0x3b')],{'$or':_['map'](_0x17af8e[_0x3d8d('0x34')],function(_0x2a5ebc){var _0x39093a={};_0x39093a[_0x2a5ebc]={'$like':'%'+_0x587d10[_0x3d8d('0x2f')][_0x3d8d('0x3d')]+'%'};return _0x39093a;})});}_0x17af8e=_['merge']({},_0x17af8e,_0x587d10[_0x3d8d('0x3e')]);return _0x5b84eb[_0x3d8d('0x6d')](_0x17af8e);}})[_0x3d8d('0x22')](function(_0x5325cf){if(_0x5325cf){_0x4ae936=_0x5325cf[_0x3d8d('0x35')];if(!_0x587d10[_0x3d8d('0x2f')]['hasOwnProperty'](_0x3d8d('0x37'))){_0x17af8e[_0x3d8d('0x1c')]=qs[_0x3d8d('0x1c')](_0x587d10[_0x3d8d('0x2f')][_0x3d8d('0x1c')]);_0x17af8e[_0x3d8d('0x1a')]=qs['offset'](_0x587d10[_0x3d8d('0x2f')]['offset']);}return _0x5b84eb['getSounds'](_0x17af8e);}})[_0x3d8d('0x22')](function(_0x3fb665){if(_0x3fb665){return _0x3fb665?{'count':_0x4ae936,'rows':_0x3fb665}:null;}})['then'](respondWithResult(_0x16cac8,null))['catch'](handleError(_0x16cac8,null));}; \ No newline at end of file diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js new file mode 100644 index 0000000..c216201 --- /dev/null +++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd0da=['request-promise','path','rimraf','voice_musiconhold','lodash','util','../../config/logger','moment'];(function(_0x53dd63,_0x5e1852){var _0x460c0a=function(_0x599511){while(--_0x599511){_0x53dd63['push'](_0x53dd63['shift']());}};_0x460c0a(++_0x5e1852);}(_0xd0da,0x7c));var _0xad0d=function(_0x3a6194,_0x4574e2){_0x3a6194=_0x3a6194-0x0;var _0x298116=_0xd0da[_0x3a6194];return _0x298116;};'use strict';var _=require(_0xad0d('0x0'));var util=require(_0xad0d('0x1'));var logger=require(_0xad0d('0x2'))('api');var moment=require(_0xad0d('0x3'));var BPromise=require('bluebird');var rp=require(_0xad0d('0x4'));var fs=require('fs');var path=require(_0xad0d('0x5'));var rimraf=require(_0xad0d('0x6'));var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module['exports']=function(_0x46e793,_0x54245e){return _0x46e793['define']('VoiceMusicOnHold',attributes,{'tableName':_0xad0d('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js new file mode 100644 index 0000000..60763c5 --- /dev/null +++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x395cea,_0x137431){var _0x104804=function(_0x5c43ba){while(--_0x5c43ba){_0x395cea['push'](_0x395cea['shift']());}};_0x104804(++_0x137431);}(_0x70e0,0x17b));var _0x070e=function(_0x289906,_0x40f55d){_0x289906=_0x289906-0x0;var _0xb4a82b=_0x70e0[_0x289906];return _0xb4a82b;};'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 diff --git a/server/api/voicePrefix/index.js b/server/api/voicePrefix/index.js new file mode 100644 index 0000000..acf25f1 --- /dev/null +++ b/server/api/voicePrefix/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe444=['show','/:id/users','getTeams','post','create','addAgents','/:id/teams','addTeams','put','/:id','update','destroy','delete','removeAgents','removeTeams','exports','multer','util','express','Router','fs-extra','../../components/auth/service','./voicePrefix.controller','get','isAuthenticated','/describe'];(function(_0x233d84,_0x3f63c9){var _0x33f28f=function(_0x27646b){while(--_0x27646b){_0x233d84['push'](_0x233d84['shift']());}};_0x33f28f(++_0x3f63c9);}(_0xe444,0xe0));var _0x4e44=function(_0x2c0464,_0x5316c4){_0x2c0464=_0x2c0464-0x0;var _0x5818d7=_0xe444[_0x2c0464];return _0x5818d7;};'use strict';var multer=require(_0x4e44('0x0'));var util=require(_0x4e44('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4e44('0x2'));var router=express[_0x4e44('0x3')]();var fs_extra=require(_0x4e44('0x4'));var auth=require(_0x4e44('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4e44('0x6'));router[_0x4e44('0x7')]('/',auth[_0x4e44('0x8')](),controller['index']);router[_0x4e44('0x7')](_0x4e44('0x9'),auth[_0x4e44('0x8')](),controller['describe']);router[_0x4e44('0x7')]('/:id',auth[_0x4e44('0x8')](),controller[_0x4e44('0xa')]);router[_0x4e44('0x7')](_0x4e44('0xb'),auth[_0x4e44('0x8')](),controller['getAgents']);router[_0x4e44('0x7')]('/:id/teams',auth[_0x4e44('0x8')](),controller[_0x4e44('0xc')]);router[_0x4e44('0xd')]('/',auth[_0x4e44('0x8')](),controller[_0x4e44('0xe')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x4e44('0xf')]);router['post'](_0x4e44('0x10'),auth[_0x4e44('0x8')](),controller[_0x4e44('0x11')]);router[_0x4e44('0x12')](_0x4e44('0x13'),auth[_0x4e44('0x8')](),controller[_0x4e44('0x14')]);router['delete'](_0x4e44('0x13'),auth[_0x4e44('0x8')](),controller[_0x4e44('0x15')]);router[_0x4e44('0x16')](_0x4e44('0xb'),auth[_0x4e44('0x8')](),controller[_0x4e44('0x17')]);router['delete'](_0x4e44('0x10'),auth[_0x4e44('0x8')](),controller[_0x4e44('0x18')]);module[_0x4e44('0x19')]=router; \ No newline at end of file diff --git a/server/api/voicePrefix/voicePrefix.attributes.js b/server/api/voicePrefix/voicePrefix.attributes.js new file mode 100644 index 0000000..114c46c --- /dev/null +++ b/server/api/voicePrefix/voicePrefix.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8f7e=['getDataValue','INTEGER','exports','STRING','name','VIRTUAL','system-'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x8f7e,0x13d));var _0xe8f7=function(_0x45a150,_0x6ace92){_0x45a150=_0x45a150-0x0;var _0x1e0cb1=_0x8f7e[_0x45a150];return _0x1e0cb1;};'use strict';var Sequelize=require('sequelize');module[_0xe8f7('0x0')]={'name':{'type':Sequelize[_0xe8f7('0x1')],'allowNull':![],'unique':_0xe8f7('0x2')},'prefix':{'type':Sequelize[_0xe8f7('0x3')],'get':function(_0x157ad7){return _0xe8f7('0x4')+this[_0xe8f7('0x5')]('name')+'-';}},'description':{'type':Sequelize[_0xe8f7('0x1')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0xe8f7('0x6')]}}; \ No newline at end of file diff --git a/server/api/voicePrefix/voicePrefix.controller.js b/server/api/voicePrefix/voicePrefix.controller.js new file mode 100644 index 0000000..4ddf74e --- /dev/null +++ b/server/api/voicePrefix/voicePrefix.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x02ce=['apply','reject','save','update','destroy','then','get','VoicePrefixes','UserProfileResource','sendStatus','error','name','send','index','map','VoicePrefix','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','includeAll','include','findAll','rows','show','params','length','find','catch','sequelize','body','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','create','context','from-sip','exten','app','type','description','Voice\x20Prefix\x20Extension','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','callerIdAll','Set','PREFIX-CALLERIDALL=','${EXTEN:','charAt','system-','transaction','VoiceExtension','findById','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','getAgents','User','pick','findOne','Team','getTeams','addTeams','online','voicePause','flatMap','Agents','each','TeamVoicePrefix','upsert','forEach','removeTeams','select','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','union','compact','value','eml-format','rimraf','zip-dir','request-promise','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/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voicePrefix.socket','status','end','json','undefined','limit','count','offset','set'];(function(_0x5afaf2,_0xe98979){var _0x4cb867=function(_0x472969){while(--_0x472969){_0x5afaf2['push'](_0x5afaf2['shift']());}};_0x4cb867(++_0xe98979);}(_0x02ce,0x1ac));var _0xe02c=function(_0x1d4a8,_0x496c80){_0x1d4a8=_0x1d4a8-0x0;var _0x382be7=_0x02ce[_0x1d4a8];return _0x382be7;};'use strict';var emlformat=require(_0xe02c('0x0'));var rimraf=require(_0xe02c('0x1'));var zipdir=require(_0xe02c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe02c('0x3'));var moment=require('moment');var BPromise=require(_0xe02c('0x4'));var Mustache=require(_0xe02c('0x5'));var util=require(_0xe02c('0x6'));var path=require(_0xe02c('0x7'));var sox=require(_0xe02c('0x8'));var csv=require(_0xe02c('0x9'));var ejs=require(_0xe02c('0xa'));var fs=require('fs');var fs_extra=require(_0xe02c('0xb'));var _=require(_0xe02c('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe02c('0xd'));var deskjs=require(_0xe02c('0xe'));var toCsv=require(_0xe02c('0x9'));var querystring=require(_0xe02c('0xf'));var Papa=require(_0xe02c('0x10'));var Redis=require(_0xe02c('0x11'));var authService=require(_0xe02c('0x12'));var qs=require(_0xe02c('0x13'));var as=require(_0xe02c('0x14'));var hardwareService=require(_0xe02c('0x15'));var logger=require(_0xe02c('0x16'))(_0xe02c('0x17'));var utils=require(_0xe02c('0x18'));var config=require(_0xe02c('0x19'));var licenseUtil=require(_0xe02c('0x1a'));var db=require(_0xe02c('0x1b'))['db'];config[_0xe02c('0x1c')]=_[_0xe02c('0x1d')](config['redis'],{'host':_0xe02c('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe02c('0x1f'))['register'](socket);function respondWithStatusCode(_0x221910,_0x59614c){_0x59614c=_0x59614c||0xcc;return function(_0x3a5a2c){if(_0x3a5a2c){return _0x221910['sendStatus'](_0x59614c);}return _0x221910[_0xe02c('0x20')](_0x59614c)[_0xe02c('0x21')]();};}function respondWithResult(_0x59f2f6,_0x10a2a6){_0x10a2a6=_0x10a2a6||0xc8;return function(_0x226a80){if(_0x226a80){return _0x59f2f6['status'](_0x10a2a6)[_0xe02c('0x22')](_0x226a80);}};}function respondWithFilteredResult(_0x20f492,_0x5a4583){return function(_0x52917f){if(_0x52917f){var _0x3e37bf=typeof _0x5a4583['offset']===_0xe02c('0x23')&&typeof _0x5a4583[_0xe02c('0x24')]===_0xe02c('0x23');var _0x36fed0=_0x52917f[_0xe02c('0x25')];var _0x54c5b0=_0x3e37bf?0x0:_0x5a4583[_0xe02c('0x26')];var _0x59026f=_0x3e37bf?_0x52917f['count']:_0x5a4583[_0xe02c('0x26')]+_0x5a4583[_0xe02c('0x24')];var _0x480b9a;if(_0x59026f>=_0x36fed0){_0x59026f=_0x36fed0;_0x480b9a=0xc8;}else{_0x480b9a=0xce;}_0x20f492[_0xe02c('0x20')](_0x480b9a);return _0x20f492[_0xe02c('0x27')]('Content-Range',_0x54c5b0+'-'+_0x59026f+'/'+_0x36fed0)[_0xe02c('0x22')](_0x52917f);}return null;};}function patchUpdates(_0x45fd82){return function(_0x39b00c){try{jsonpatch[_0xe02c('0x28')](_0x39b00c,_0x45fd82,!![]);}catch(_0x2d44c8){return BPromise[_0xe02c('0x29')](_0x2d44c8);}return _0x39b00c[_0xe02c('0x2a')]();};}function saveUpdates(_0xf41d4c,_0xeae877){return function(_0x18b538){if(_0x18b538){return _0x18b538[_0xe02c('0x2b')](_0xf41d4c)['then'](function(_0xefd882){return _0xefd882;});}return null;};}function removeEntity(_0x4411d8,_0x3592ca){return function(_0x14ffba){if(_0x14ffba){return _0x14ffba[_0xe02c('0x2c')]()[_0xe02c('0x2d')](function(){var _0x43dc78=_0x14ffba[_0xe02c('0x2e')]({'plain':!![]});var _0x55ef2a=_0xe02c('0x2f');return db[_0xe02c('0x30')][_0xe02c('0x2c')]({'where':{'type':_0x55ef2a,'resourceId':_0x43dc78['id']}})['then'](function(){return _0x14ffba;});})[_0xe02c('0x2d')](function(){_0x4411d8[_0xe02c('0x20')](0xcc)[_0xe02c('0x21')]();});}};}function handleEntityNotFound(_0x287f7e,_0x1e7eab){return function(_0x35a309){if(!_0x35a309){_0x287f7e[_0xe02c('0x31')](0x194);}return _0x35a309;};}function handleError(_0x1b8f21,_0x9ee479){_0x9ee479=_0x9ee479||0x1f4;return function(_0x288004){logger[_0xe02c('0x32')](_0x288004['stack']);if(_0x288004[_0xe02c('0x33')]){delete _0x288004[_0xe02c('0x33')];}_0x1b8f21[_0xe02c('0x20')](_0x9ee479)[_0xe02c('0x34')](_0x288004);};}exports[_0xe02c('0x35')]=function(_0x14d27a,_0x58bf16){var _0x436bcc={},_0x1e605c={},_0x4fc4fd={'count':0x0,'rows':[]};var _0x1ce34c=_[_0xe02c('0x36')](db[_0xe02c('0x37')][_0xe02c('0x38')],function(_0x2b5ebe){return{'name':_0x2b5ebe['fieldName'],'type':_0x2b5ebe['type'][_0xe02c('0x39')]};});_0x1e605c[_0xe02c('0x3a')]=_['map'](_0x1ce34c,_0xe02c('0x33'));_0x1e605c['query']=_[_0xe02c('0x3b')](_0x14d27a[_0xe02c('0x3c')]);_0x1e605c[_0xe02c('0x3d')]=_[_0xe02c('0x3e')](_0x1e605c[_0xe02c('0x3a')],_0x1e605c['query']);_0x436bcc[_0xe02c('0x3f')]=_['intersection'](_0x1e605c[_0xe02c('0x3a')],qs[_0xe02c('0x40')](_0x14d27a[_0xe02c('0x3c')][_0xe02c('0x40')]));_0x436bcc[_0xe02c('0x3f')]=_0x436bcc[_0xe02c('0x3f')]['length']?_0x436bcc[_0xe02c('0x3f')]:_0x1e605c[_0xe02c('0x3a')];if(!_0x14d27a['query'][_0xe02c('0x41')](_0xe02c('0x42'))){_0x436bcc['limit']=qs[_0xe02c('0x24')](_0x14d27a['query'][_0xe02c('0x24')]);_0x436bcc[_0xe02c('0x26')]=qs['offset'](_0x14d27a[_0xe02c('0x3c')][_0xe02c('0x26')]);}_0x436bcc[_0xe02c('0x43')]=qs[_0xe02c('0x44')](_0x14d27a[_0xe02c('0x3c')][_0xe02c('0x44')]);_0x436bcc['where']=qs[_0xe02c('0x3d')](_['pick'](_0x14d27a['query'],_0x1e605c[_0xe02c('0x3d')]),_0x1ce34c);if(_0x14d27a[_0xe02c('0x3c')][_0xe02c('0x45')]){_0x436bcc[_0xe02c('0x46')]=_['merge'](_0x436bcc[_0xe02c('0x46')],{'$or':_[_0xe02c('0x36')](_0x1ce34c,function(_0x163573){if(_0x163573['type']!=='VIRTUAL'){var _0x33c6da={};_0x33c6da[_0x163573[_0xe02c('0x33')]]={'$like':'%'+_0x14d27a[_0xe02c('0x3c')][_0xe02c('0x45')]+'%'};return _0x33c6da;}})});}_0x436bcc=_[_0xe02c('0x47')]({},_0x436bcc,_0x14d27a[_0xe02c('0x48')]);var _0x25f8ae={'where':_0x436bcc[_0xe02c('0x46')]};return db[_0xe02c('0x37')]['count'](_0x25f8ae)[_0xe02c('0x2d')](function(_0x5ef4a1){_0x4fc4fd['count']=_0x5ef4a1;if(_0x14d27a[_0xe02c('0x3c')][_0xe02c('0x49')]){_0x436bcc[_0xe02c('0x4a')]=[{'all':!![]}];}return db[_0xe02c('0x37')][_0xe02c('0x4b')](_0x436bcc);})[_0xe02c('0x2d')](function(_0x165f4a){_0x4fc4fd[_0xe02c('0x4c')]=_0x165f4a;return _0x4fc4fd;})['then'](respondWithFilteredResult(_0x58bf16,_0x436bcc))['catch'](handleError(_0x58bf16,null));};exports[_0xe02c('0x4d')]=function(_0xf89a57,_0x304ece){var _0x52f239={'raw':![],'where':{'id':_0xf89a57[_0xe02c('0x4e')]['id']}},_0x1cf443={};_0x1cf443[_0xe02c('0x3a')]=_[_0xe02c('0x3b')](db[_0xe02c('0x37')][_0xe02c('0x38')]);_0x1cf443[_0xe02c('0x3c')]=_[_0xe02c('0x3b')](_0xf89a57[_0xe02c('0x3c')]);_0x1cf443[_0xe02c('0x3d')]=_['intersection'](_0x1cf443[_0xe02c('0x3a')],_0x1cf443[_0xe02c('0x3c')]);_0x52f239[_0xe02c('0x3f')]=_[_0xe02c('0x3e')](_0x1cf443[_0xe02c('0x3a')],qs[_0xe02c('0x40')](_0xf89a57[_0xe02c('0x3c')][_0xe02c('0x40')]));_0x52f239[_0xe02c('0x3f')]=_0x52f239[_0xe02c('0x3f')][_0xe02c('0x4f')]?_0x52f239[_0xe02c('0x3f')]:_0x1cf443[_0xe02c('0x3a')];if(_0xf89a57['query'][_0xe02c('0x49')]){_0x52f239['include']=[{'all':!![]}];}_0x52f239=_[_0xe02c('0x47')]({},_0x52f239,_0xf89a57[_0xe02c('0x48')]);return db[_0xe02c('0x37')][_0xe02c('0x50')](_0x52f239)[_0xe02c('0x2d')](handleEntityNotFound(_0x304ece,null))[_0xe02c('0x2d')](respondWithResult(_0x304ece,null))[_0xe02c('0x51')](handleError(_0x304ece,null));};exports[_0xe02c('0x2c')]=function(_0xc6ea7b,_0x385497){return db['VoicePrefix'][_0xe02c('0x50')]({'where':{'id':_0xc6ea7b[_0xe02c('0x4e')]['id']}})[_0xe02c('0x2d')](handleEntityNotFound(_0x385497,null))['then'](removeEntity(_0x385497,null))[_0xe02c('0x51')](handleError(_0x385497,null));};exports['describe']=function(_0x21a126,_0x56b9e2){return db['VoicePrefix']['describe']()['then'](respondWithResult(_0x56b9e2,null))['catch'](handleError(_0x56b9e2,null));};exports['create']=function(_0x107f3f,_0x3ac0a5){var _0x1510aa;return db[_0xe02c('0x52')]['transaction'](function(_0x274beb){return db[_0xe02c('0x37')]['create'](_0x107f3f[_0xe02c('0x53')],{'transaction':_0x274beb})[_0xe02c('0x2d')](function(_0x221e5e){_0x1510aa=_0x221e5e['get']({'plain':!![]});return db['VoiceExtension'][_0xe02c('0x50')]({'where':{'id':_0x1510aa[_0xe02c('0x54')]},'raw':!![]})[_0xe02c('0x2d')](function(_0x5b2d2b){return createVoicePrefixExtensions(_0x1510aa,_0x5b2d2b,_0x274beb);});});})[_0xe02c('0x2d')](function(){var _0x53765c=_0x107f3f['user'][_0xe02c('0x2e')]({'plain':!![]});if(!_0x53765c)throw new Error(_0xe02c('0x55'));if(_0x53765c['role']===_0xe02c('0x56')){var _0x849eea=_0x1510aa;return db[_0xe02c('0x57')]['find']({'where':{'name':_0xe02c('0x2f'),'userProfileId':_0x53765c[_0xe02c('0x58')]},'raw':!![]})['then'](function(_0x3788e8){if(_0x3788e8&&_0x3788e8[_0xe02c('0x59')]===0x0){return db[_0xe02c('0x30')][_0xe02c('0x5a')]({'name':_0x849eea[_0xe02c('0x33')],'resourceId':_0x849eea['id'],'type':_0x3788e8[_0xe02c('0x33')],'sectionId':_0x3788e8['id']},{})[_0xe02c('0x2d')](function(){return _0x1510aa;});}else{return _0x1510aa;}})[_0xe02c('0x51')](function(_0xf7e836){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf7e836);throw _0xf7e836;});}return _0x1510aa;})['then'](respondWithResult(_0x3ac0a5,null))[_0xe02c('0x51')](handleError(_0x3ac0a5,null));};function Extension(_0x299770,_0x42f2fd,_0x496eb1,_0x4eb35d){this[_0xe02c('0x5b')]=_0xe02c('0x5c');this[_0xe02c('0x5d')]=_0x299770;this[_0xe02c('0x5e')]=_0x496eb1;this[_0xe02c('0x5f')]='system';this[_0xe02c('0x60')]=_0xe02c('0x61');this['priority']=_0x42f2fd;this['appdata']=_0x4eb35d;}function createVoicePrefixExtensions(_0x879d99,_0x566204,_0x4da197){return new BPromise(function(_0x480d49,_0x3b19c9){var _0x28d7a2=new Extension(formatPrefixName(_0x879d99[_0xe02c('0x62')]),0x1,_0xe02c('0x63'),_0xe02c('0x64'));_0x28d7a2[_0xe02c('0x65')]=_0x879d99['id'];return db['VoiceExtension'][_0xe02c('0x5a')](_0x28d7a2,{'transaction':_0x4da197})['then'](function(_0x4f3c9a){var _0x185dc2=_0x4f3c9a[_0xe02c('0x2e')]({'plain':!![]});var _0x44ba68=_[_0xe02c('0x36')](addVoicePrefixExtensions(_0x879d99,_0x566204),function(_0x5b6979){_0x5b6979[_0xe02c('0x54')]=_0x185dc2['id'];_0x5b6979[_0xe02c('0x65')]=_0x879d99['id'];return _0x5b6979;});return db['VoiceExtension'][_0xe02c('0x66')](_0x44ba68,{'transaction':_0x4da197})[_0xe02c('0x2d')](function(_0x4cc74d){if(!_0x4cc74d){return _0x3b19c9(_0xe02c('0x67'));}else{return _0x480d49(_0x4cc74d);}})[_0xe02c('0x51')](function(_0x44f28f){return _0x3b19c9(_0x44f28f);});});;});};function addVoicePrefixExtensions(_0x4053e6,_0x323f3b){var _0x3a62a2=[];var _0x31b281=formatPrefixName(_0x4053e6['prefix']);_0x3a62a2[_0xe02c('0x68')](new Extension(_0x31b281,0x2,'Set','CDR(prefix)='+_0x4053e6['name']));if(_0x4053e6[_0xe02c('0x69')]){_0x3a62a2[_0xe02c('0x68')](new Extension(_0x31b281,0x3,_0xe02c('0x6a'),_0xe02c('0x6b')+_0x4053e6['callerIdAll']));}else{_0x3a62a2[_0xe02c('0x68')](new Extension(_0x31b281,0x3,_0xe02c('0x63'),'No\x20callerid\x20available'));}_0x3a62a2['push'](new Extension(_0x31b281,0x4,'goto',_0x323f3b[_0xe02c('0x5b')]+','+_0xe02c('0x6c')+(0x8+_0x4053e6['name']['length'])+'}'+','+0x1));return _0x3a62a2;}function formatPrefixName(_0x38789c){var _0x30ad9f='_';for(var _0x120ef1=0x0;_0x120ef1<_0x38789c[_0xe02c('0x4f')];_0x120ef1++){if(_0x38789c[_0xe02c('0x6d')](_0x120ef1)=='-'){_0x30ad9f+=_0x38789c['charAt'](_0x120ef1);}else{_0x30ad9f+='['+_0x38789c[_0xe02c('0x6d')](_0x120ef1)+']';}}_0x30ad9f+='.';return _0x30ad9f;}exports[_0xe02c('0x2b')]=function(_0x3f277b,_0x2776c0,_0x11c506){var _0x119119=_0x3f277b['body'];_0x119119[_0xe02c('0x62')]=_0xe02c('0x6e')+_0x119119['name']+'-';return db[_0xe02c('0x52')][_0xe02c('0x6f')](function(_0x123ca9){return db[_0xe02c('0x37')]['update'](_0x119119,{'where':{'id':_0x119119['id']},'transaction':_0x123ca9})[_0xe02c('0x2d')](function(){return db[_0xe02c('0x70')]['destroy']({'where':{'VoicePrefixId':_0x119119['id']},'transaction':_0x123ca9})['then'](function(){return db['VoiceExtension'][_0xe02c('0x50')]({'where':{'id':_0x119119[_0xe02c('0x54')]},'raw':!![]})[_0xe02c('0x2d')](function(_0x34e692){return createVoicePrefixExtensions(_0x119119,_0x34e692,_0x123ca9);});});});})[_0xe02c('0x2d')](function(){return db['VoicePrefix'][_0xe02c('0x71')](_0x119119['id']);})[_0xe02c('0x2d')](respondWithResult(_0x2776c0,null))[_0xe02c('0x51')](handleError(_0x2776c0,null));};exports['addAgents']=function(_0x4a7783,_0x4c3c91,_0x3cd802){return db[_0xe02c('0x37')][_0xe02c('0x50')]({'where':{'id':_0x4a7783[_0xe02c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4c3c91,null))[_0xe02c('0x2d')](function(_0x48f524){if(_0x48f524){return _0x48f524['addAgents'](_0x4a7783[_0xe02c('0x53')][_0xe02c('0x72')],_[_0xe02c('0x73')](_0x4a7783[_0xe02c('0x53')],[_0xe02c('0x72'),'id'])||{})[_0xe02c('0x74')](function(_0x748217){for(var _0x12aaea=0x0;_0x12aaea<_0x4a7783['body'][_0xe02c('0x72')][_0xe02c('0x4f')];_0x12aaea+=0x1){socket[_0xe02c('0x75')](_0xe02c('0x76'),{'UserId':Number(_0x4a7783[_0xe02c('0x53')][_0xe02c('0x72')][_0x12aaea]),'VoicePrefixId':Number(_0x4a7783[_0xe02c('0x4e')]['id'])});}return _0x748217;});}})[_0xe02c('0x2d')](respondWithResult(_0x4c3c91,null))[_0xe02c('0x51')](handleError(_0x4c3c91,null));};exports[_0xe02c('0x77')]=function(_0x5e6df5,_0x58acfd,_0x120dd7){return db[_0xe02c('0x37')][_0xe02c('0x50')]({'where':{'id':_0x5e6df5[_0xe02c('0x4e')]['id']}})[_0xe02c('0x2d')](handleEntityNotFound(_0x58acfd,null))['then'](function(_0x405b16){if(_0x405b16){return _0x405b16[_0xe02c('0x77')](_0x5e6df5[_0xe02c('0x3c')][_0xe02c('0x72')])[_0xe02c('0x2d')](function(){if(_[_0xe02c('0x78')](_0x5e6df5[_0xe02c('0x3c')][_0xe02c('0x72')])){for(var _0x1d594c=0x0;_0x1d594c<_0x5e6df5[_0xe02c('0x3c')][_0xe02c('0x72')][_0xe02c('0x4f')];_0x1d594c+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x5e6df5[_0xe02c('0x3c')][_0xe02c('0x72')][_0x1d594c]),'VoicePrefixId':Number(_0x5e6df5['params']['id'])});}}else{socket[_0xe02c('0x75')]('userVoicePrefix:remove',{'UserId':Number(_0x5e6df5[_0xe02c('0x3c')]['ids']),'VoicePrefixId':Number(_0x5e6df5[_0xe02c('0x4e')]['id'])});}});}})[_0xe02c('0x2d')](respondWithStatusCode(_0x58acfd,null))[_0xe02c('0x51')](handleError(_0x58acfd,null));};exports[_0xe02c('0x79')]=function(_0x28755a,_0x3c44d3,_0x119439){var _0x10d067={};var _0x3d3954={};var _0xd0d895;var _0x567478;return db['VoicePrefix']['findOne']({'where':{'id':_0x28755a[_0xe02c('0x4e')]['id']}})[_0xe02c('0x2d')](handleEntityNotFound(_0x3c44d3,null))[_0xe02c('0x2d')](function(_0x1133ce){if(_0x1133ce){_0xd0d895=_0x1133ce;_0x3d3954[_0xe02c('0x3a')]=_[_0xe02c('0x3b')](db[_0xe02c('0x7a')][_0xe02c('0x38')]);_0x3d3954[_0xe02c('0x3c')]=_[_0xe02c('0x3b')](_0x28755a[_0xe02c('0x3c')]);_0x3d3954[_0xe02c('0x3d')]=_[_0xe02c('0x3e')](_0x3d3954['model'],_0x3d3954['query']);_0x10d067[_0xe02c('0x3f')]=_[_0xe02c('0x3e')](_0x3d3954[_0xe02c('0x3a')],qs['fields'](_0x28755a[_0xe02c('0x3c')][_0xe02c('0x40')]));_0x10d067[_0xe02c('0x3f')]=_0x10d067[_0xe02c('0x3f')][_0xe02c('0x4f')]?_0x10d067['attributes']:_0x3d3954[_0xe02c('0x3a')];_0x10d067[_0xe02c('0x43')]=qs[_0xe02c('0x44')](_0x28755a['query'][_0xe02c('0x44')]);_0x10d067[_0xe02c('0x46')]=qs[_0xe02c('0x3d')](_[_0xe02c('0x7b')](_0x28755a[_0xe02c('0x3c')],_0x3d3954['filters']));if(_0x28755a[_0xe02c('0x3c')][_0xe02c('0x45')]){_0x10d067[_0xe02c('0x46')]=_['merge'](_0x10d067[_0xe02c('0x46')],{'$or':_[_0xe02c('0x36')](_0x10d067[_0xe02c('0x3f')],function(_0x3a5ec8){var _0x45e463={};_0x45e463[_0x3a5ec8]={'$like':'%'+_0x28755a['query'][_0xe02c('0x45')]+'%'};return _0x45e463;})});}_0x10d067=_[_0xe02c('0x47')]({},_0x10d067,_0x28755a['options']);return _0xd0d895[_0xe02c('0x79')](_0x10d067);}})['then'](function(_0x52fcd6){if(_0x52fcd6){_0x567478=_0x52fcd6['length'];if(!_0x28755a[_0xe02c('0x3c')][_0xe02c('0x41')](_0xe02c('0x42'))){_0x10d067[_0xe02c('0x24')]=qs[_0xe02c('0x24')](_0x28755a[_0xe02c('0x3c')][_0xe02c('0x24')]);_0x10d067[_0xe02c('0x26')]=qs[_0xe02c('0x26')](_0x28755a[_0xe02c('0x3c')][_0xe02c('0x26')]);}return _0xd0d895[_0xe02c('0x79')](_0x10d067);}})[_0xe02c('0x2d')](function(_0xfe0b1c){if(_0xfe0b1c){return _0xfe0b1c?{'count':_0x567478,'rows':_0xfe0b1c}:null;}})[_0xe02c('0x2d')](respondWithResult(_0x3c44d3,null))[_0xe02c('0x51')](handleError(_0x3c44d3,null));};exports['getTeams']=function(_0x283de9,_0x4cfbc0,_0x3650cb){var _0xdc8df0={};var _0x4564f1={};var _0x2c6d29;var _0x5b75ed;return db[_0xe02c('0x37')][_0xe02c('0x7c')]({'where':{'id':_0x283de9[_0xe02c('0x4e')]['id']}})[_0xe02c('0x2d')](handleEntityNotFound(_0x4cfbc0,null))[_0xe02c('0x2d')](function(_0xced62f){if(_0xced62f){_0x2c6d29=_0xced62f;_0x4564f1[_0xe02c('0x3a')]=_['keys'](db[_0xe02c('0x7d')][_0xe02c('0x38')]);_0x4564f1['query']=_[_0xe02c('0x3b')](_0x283de9['query']);_0x4564f1['filters']=_[_0xe02c('0x3e')](_0x4564f1[_0xe02c('0x3a')],_0x4564f1[_0xe02c('0x3c')]);_0xdc8df0[_0xe02c('0x3f')]=_['intersection'](_0x4564f1['model'],qs[_0xe02c('0x40')](_0x283de9[_0xe02c('0x3c')]['fields']));_0xdc8df0[_0xe02c('0x3f')]=_0xdc8df0[_0xe02c('0x3f')][_0xe02c('0x4f')]?_0xdc8df0[_0xe02c('0x3f')]:_0x4564f1[_0xe02c('0x3a')];_0xdc8df0[_0xe02c('0x43')]=qs['sort'](_0x283de9[_0xe02c('0x3c')][_0xe02c('0x44')]);_0xdc8df0[_0xe02c('0x46')]=qs[_0xe02c('0x3d')](_[_0xe02c('0x7b')](_0x283de9[_0xe02c('0x3c')],_0x4564f1[_0xe02c('0x3d')]));if(_0x283de9[_0xe02c('0x3c')][_0xe02c('0x45')]){_0xdc8df0[_0xe02c('0x46')]=_[_0xe02c('0x47')](_0xdc8df0[_0xe02c('0x46')],{'$or':_[_0xe02c('0x36')](_0xdc8df0[_0xe02c('0x3f')],function(_0x5c4ed7){var _0x1abb2d={};_0x1abb2d[_0x5c4ed7]={'$like':'%'+_0x283de9[_0xe02c('0x3c')][_0xe02c('0x45')]+'%'};return _0x1abb2d;})});}_0xdc8df0=_['merge']({},_0xdc8df0,_0x283de9[_0xe02c('0x48')]);return _0x2c6d29[_0xe02c('0x7e')](_0xdc8df0);}})[_0xe02c('0x2d')](function(_0x2127e7){if(_0x2127e7){_0x5b75ed=_0x2127e7[_0xe02c('0x4f')];if(!_0x283de9[_0xe02c('0x3c')][_0xe02c('0x41')]('nolimit')){_0xdc8df0[_0xe02c('0x24')]=qs[_0xe02c('0x24')](_0x283de9[_0xe02c('0x3c')][_0xe02c('0x24')]);_0xdc8df0[_0xe02c('0x26')]=qs[_0xe02c('0x26')](_0x283de9[_0xe02c('0x3c')][_0xe02c('0x26')]);}return _0x2c6d29[_0xe02c('0x7e')](_0xdc8df0);}})['then'](function(_0x4297b2){if(_0x4297b2){return _0x4297b2?{'count':_0x5b75ed,'rows':_0x4297b2}:null;}})[_0xe02c('0x2d')](respondWithResult(_0x4cfbc0,null))['catch'](handleError(_0x4cfbc0,null));};exports[_0xe02c('0x7f')]=function(_0x4081f5,_0x1d23ed,_0x46fd38){var _0x7cd9df=_0x4081f5[_0xe02c('0x53')]['ids'];var _0xc21958;return db[_0xe02c('0x7d')][_0xe02c('0x4b')]({'where':{'id':_0x7cd9df},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xe02c('0x33'),_0xe02c('0x80'),_0xe02c('0x81'),'interface'],'raw':!![]}]})[_0xe02c('0x2d')](function(_0x35b30c){if(_0x35b30c){_0xc21958=_0x35b30c;var _0x469eac=_[_0xe02c('0x82')](_0x35b30c,function(_0x7441e6){var _0x56e35d=_0x7441e6[_0xe02c('0x2e')]({'plain':!![]});return _0x56e35d[_0xe02c('0x83')];});return db[_0xe02c('0x37')][_0xe02c('0x50')]({'where':{'id':_0x4081f5[_0xe02c('0x4e')]['id']}})[_0xe02c('0x2d')](function(_0x327507){return db[_0xe02c('0x52')][_0xe02c('0x6f')](function(_0x2ee007){return _0x327507[_0xe02c('0x7f')](_0x7cd9df,{'transaction':_0x2ee007})[_0xe02c('0x2d')](function(){return BPromise[_0xe02c('0x84')](_0xc21958,function(_0x1de725){return db[_0xe02c('0x85')][_0xe02c('0x86')]({'TeamId':_0x1de725['id'],'VoicePrefixId':_0x4081f5[_0xe02c('0x4e')]['id']},{'transaction':_0x2ee007});});})['then'](function(){return BPromise['each'](_0x469eac,function(_0x4400b2){return db['UserVoicePrefix']['findOrCreate']({'where':{'UserId':_0x4400b2['id'],'VoicePrefixId':_0x4081f5['params']['id']},'transaction':_0x2ee007});});})[_0xe02c('0x2d')](function(){_0x469eac[_0xe02c('0x87')](function(_0x889cef){socket['emit'](_0xe02c('0x76'),{'UserId':_0x889cef['id'],'VoicePrefixId':_0x327507['id']});});});});});}})['then'](respondWithStatusCode(_0x1d23ed,null))['catch'](handleError(_0x1d23ed,null));};exports[_0xe02c('0x88')]=function(_0x3ca665,_0x4eb163,_0x1433bd){return db['Team']['findAll']({'where':{'id':_0x3ca665[_0xe02c('0x3c')][_0xe02c('0x72')]},'attributes':['id'],'include':[{'model':db[_0xe02c('0x7a')],'as':_0xe02c('0x83'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4eb163,null))[_0xe02c('0x2d')](function(_0x25933f){var _0x323d81=_[_0xe02c('0x36')](_0x25933f,'id');var _0x3b6e15=[];var _0x1c96cc=[];var _0x322b4a=squel[_0xe02c('0x89')]();_0x322b4a[_0xe02c('0x8a')](_0xe02c('0x8b'))[_0xe02c('0x8c')](_0xe02c('0x8d'),'tq')[_0xe02c('0x8e')](_0xe02c('0x8f'),'ut',_0xe02c('0x90'))[_0xe02c('0x46')](_0xe02c('0x91'),_0x3ca665['params']['id']);for(var _0x252f5f=0x0;_0x252f5f<_0x25933f[_0xe02c('0x4f')];_0x252f5f+=0x1){let _0x4d112d=_0x25933f[_0x252f5f];for(var _0x3e0961=0x0;_0x3e0961<_0x4d112d[_0xe02c('0x83')][_0xe02c('0x4f')];_0x3e0961+=0x1){let _0x4b7886=_0x4d112d[_0xe02c('0x83')][_0x3e0961];var _0x505074=_0x322b4a[_0xe02c('0x92')]();_0x505074['where'](_0xe02c('0x93'),_0x4b7886['id']);_0x1c96cc[_0xe02c('0x68')](db[_0xe02c('0x52')][_0xe02c('0x3c')](_0x505074[_0xe02c('0x94')](),{'type':db['sequelize'][_0xe02c('0x95')]['SELECT']})[_0xe02c('0x2d')](function(_0x47d3fa){if(_0x47d3fa[_0xe02c('0x4f')]===0x1){return _0x4b7886['id'];}else{var _0x534002=_[_0xe02c('0x96')](_[_0xe02c('0x36')](_0x47d3fa,_0xe02c('0x97')),function(_0x45c425){return _[_0xe02c('0x98')](_0x323d81,_0x45c425);});if(_0x534002){return _0x4b7886['id'];}}}));}}return BPromise['all'](_0x1c96cc)['then'](function(_0x27ea6e){_0x3b6e15=_(_0x3b6e15)[_0xe02c('0x99')](_0x27ea6e)[_0xe02c('0x9a')]()[_0xe02c('0x9b')]();return db[_0xe02c('0x37')]['find']({'where':{'id':_0x3ca665[_0xe02c('0x4e')]['id']}})[_0xe02c('0x2d')](function(_0x34b426){return db['sequelize'][_0xe02c('0x6f')](function(_0x2a8e1d){return _0x34b426[_0xe02c('0x88')](_0x3ca665[_0xe02c('0x3c')][_0xe02c('0x72')],{'transaction':_0x2a8e1d})[_0xe02c('0x2d')](function(){if(!_['isEmpty'](_0x3b6e15)){return _0x34b426['removeAgents'](_0x3b6e15,{'transaction':_0x2a8e1d});}})[_0xe02c('0x2d')](function(){_0x3b6e15[_0xe02c('0x87')](function(_0x4b9fb7){socket['emit']('userVoicePrefix:remove',{'UserId':_0x4b9fb7,'VoicePrefixId':_0x34b426['id']});});});});});});})['then'](respondWithStatusCode(_0x4eb163,null))[_0xe02c('0x51')](handleError(_0x4eb163,null));}; \ No newline at end of file diff --git a/server/api/voicePrefix/voicePrefix.events.js b/server/api/voicePrefix/voicePrefix.events.js new file mode 100644 index 0000000..83abc3e --- /dev/null +++ b/server/api/voicePrefix/voicePrefix.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8007=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners'];(function(_0x3fd695,_0x2c0419){var _0x1b9f21=function(_0x476f99){while(--_0x476f99){_0x3fd695['push'](_0x3fd695['shift']());}};_0x1b9f21(++_0x2c0419);}(_0x8007,0x1aa));var _0x7800=function(_0x4ab5da,_0x514fb7){_0x4ab5da=_0x4ab5da-0x0;var _0x21c927=_0x8007[_0x4ab5da];return _0x21c927;};'use strict';var EventEmitter=require(_0x7800('0x0'));var VoicePrefix=require(_0x7800('0x1'))['db'][_0x7800('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x7800('0x3')](0x0);var events={'afterCreate':_0x7800('0x4'),'afterUpdate':'update','afterDestroy':_0x7800('0x5')};function emitEvent(_0x47d5d1){return function(_0xe4b12,_0xecf907,_0x51c22e){VoicePrefixEvents[_0x7800('0x6')](_0x47d5d1+':'+_0xe4b12['id'],_0xe4b12);VoicePrefixEvents[_0x7800('0x6')](_0x47d5d1,_0xe4b12);_0x51c22e(null);};}for(var e in events){if(events[_0x7800('0x7')](e)){var event=events[e];VoicePrefix[_0x7800('0x8')](e,emitEvent(event));}}module[_0x7800('0x9')]=VoicePrefixEvents; \ No newline at end of file diff --git a/server/api/voicePrefix/voicePrefix.model.js b/server/api/voicePrefix/voicePrefix.model.js new file mode 100644 index 0000000..ff8d346 --- /dev/null +++ b/server/api/voicePrefix/voicePrefix.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcf2f=['bluebird','request-promise','path','rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','api','moment'];(function(_0x1f23b1,_0x57c83f){var _0x3c9197=function(_0x2f6e4a){while(--_0x2f6e4a){_0x1f23b1['push'](_0x1f23b1['shift']());}};_0x3c9197(++_0x57c83f);}(_0xcf2f,0xbf));var _0xfcf2=function(_0x10df71,_0x4dbaf4){_0x10df71=_0x10df71-0x0;var _0x1fd8c3=_0xcf2f[_0x10df71];return _0x1fd8c3;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var logger=require(_0xfcf2('0x2'))(_0xfcf2('0x3'));var moment=require(_0xfcf2('0x4'));var BPromise=require(_0xfcf2('0x5'));var rp=require(_0xfcf2('0x6'));var fs=require('fs');var path=require(_0xfcf2('0x7'));var rimraf=require(_0xfcf2('0x8'));var config=require('../../config/environment');var attributes=require(_0xfcf2('0x9'));module[_0xfcf2('0xa')]=function(_0x293344,_0x55b46a){return _0x293344[_0xfcf2('0xb')](_0xfcf2('0xc'),attributes,{'tableName':_0xfcf2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voicePrefix/voicePrefix.rpc.js b/server/api/voicePrefix/voicePrefix.rpc.js new file mode 100644 index 0000000..0369950 --- /dev/null +++ b/server/api/voicePrefix/voicePrefix.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9134=['error','code','message','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','request','then','VoicePrefix,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0xca4cee,_0x44a631){var _0x5d2fdd=function(_0x3d4215){while(--_0x3d4215){_0xca4cee['push'](_0xca4cee['shift']());}};_0x5d2fdd(++_0x44a631);}(_0x9134,0x87));var _0x4913=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9134[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x4913('0x0'));var moment=require(_0x4913('0x1'));var BPromise=require(_0x4913('0x2'));var rs=require(_0x4913('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4913('0x4'));var logger=require(_0x4913('0x5'))(_0x4913('0x6'));var config=require(_0x4913('0x7'));var jayson=require(_0x4913('0x8'));var client=jayson[_0x4913('0x9')]['http']({'port':0x232a});config[_0x4913('0xa')]=_[_0x4913('0xb')](config[_0x4913('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x4913('0xc'))(new Redis(config[_0x4913('0xa')]));require('./voicePrefix.socket')['register'](socket);function respondWithRpcPromise(_0x4d9eb2,_0xae5842,_0x57260f){return new BPromise(function(_0x28f919,_0x1c08ac){return client[_0x4913('0xd')](_0x4d9eb2,_0x57260f)[_0x4913('0xe')](function(_0x3c3272){logger['info'](_0x4913('0xf'),_0xae5842,'request\x20sent');logger[_0x4913('0x10')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0xae5842,_0x4913('0x11'),JSON[_0x4913('0x12')](_0x3c3272));if(_0x3c3272[_0x4913('0x13')]){if(_0x3c3272['error'][_0x4913('0x14')]===0x1f4){logger[_0x4913('0x13')]('VoicePrefix,\x20%s,\x20%s',_0xae5842,_0x3c3272['error'][_0x4913('0x15')]);return _0x1c08ac(_0x3c3272[_0x4913('0x13')][_0x4913('0x15')]);}logger[_0x4913('0x13')]('VoicePrefix,\x20%s,\x20%s',_0xae5842,_0x3c3272[_0x4913('0x13')][_0x4913('0x15')]);return _0x28f919(_0x3c3272['error'][_0x4913('0x15')]);}else{logger['info'](_0x4913('0xf'),_0xae5842,_0x4913('0x11'));_0x28f919(_0x3c3272['result'][_0x4913('0x15')]);}})['catch'](function(_0x50584a){logger[_0x4913('0x13')](_0x4913('0xf'),_0xae5842,_0x50584a);_0x1c08ac(_0x50584a);});});} \ No newline at end of file diff --git a/server/api/voicePrefix/voicePrefix.socket.js b/server/api/voicePrefix/voicePrefix.socket.js new file mode 100644 index 0000000..f5cfff2 --- /dev/null +++ b/server/api/voicePrefix/voicePrefix.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0db9=['emit','removeListener','length','./voicePrefix.events'];(function(_0x513c68,_0x3d15e2){var _0x361e7d=function(_0x131ed6){while(--_0x131ed6){_0x513c68['push'](_0x513c68['shift']());}};_0x361e7d(++_0x3d15e2);}(_0x0db9,0xa3));var _0x90db=function(_0x59145a,_0x1f60f1){_0x59145a=_0x59145a-0x0;var _0xf04d7=_0x0db9[_0x59145a];return _0xf04d7;};'use strict';var VoicePrefixEvents=require(_0x90db('0x0'));var events=['save','remove','update'];function createListener(_0x2c73bc,_0x405229){return function(_0x553431){_0x405229[_0x90db('0x1')](_0x2c73bc,_0x553431);};}function removeListener(_0x500dcf,_0x1e0f41){return function(){VoicePrefixEvents[_0x90db('0x2')](_0x500dcf,_0x1e0f41);};}exports['register']=function(_0x2d02a1){for(var _0x242774=0x0,_0x476491=events[_0x90db('0x3')];_0x242774<_0x476491;_0x242774++){var _0x915ca=events[_0x242774];var _0x9b6d0d=createListener('voicePrefix:'+_0x915ca,_0x2d02a1);VoicePrefixEvents['on'](_0x915ca,_0x9b6d0d);}}; \ No newline at end of file diff --git a/server/api/voiceQueue/index.js b/server/api/voiceQueue/index.js new file mode 100644 index 0000000..40b0d41 --- /dev/null +++ b/server/api/voiceQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x24cc72,_0x4dc73a){var _0xd49f1e=function(_0x39f581){while(--_0x39f581){_0x24cc72['push'](_0x24cc72['shift']());}};_0xd49f1e(++_0x4dc73a);}(_0xb10b,0x12a));var _0xbb10=function(_0x953a55,_0x736d43){_0x953a55=_0x953a55-0x0;var _0x43fa9a=_0xb10b[_0x953a55];return _0x43fa9a;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router; \ No newline at end of file diff --git a/server/api/voiceQueue/voiceQueue.attributes.js b/server/api/voiceQueue/voiceQueue.attributes.js new file mode 100644 index 0000000..e2d3e05 --- /dev/null +++ b/server/api/voiceQueue/voiceQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xbb7b=['onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','inbound','default','ringall','leastrecent','rrmemory','linear','wrandom','rrordered','setDataValue','strategy','type','dialMethod','getDataValue','preview','booked','roundrobin','includes','INTEGER','yes','all','once','TEXT','join','periodic_announce','joinempty','split','leavewhenempty','BOOLEAN','acw','wrapuptime','power','predictive','progressive','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,)','#Congestion\x20Retry\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)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','never'];(function(_0xff2f6d,_0x3fde1c){var _0x5e7681=function(_0x53f971){while(--_0x53f971){_0xff2f6d['push'](_0xff2f6d['shift']());}};_0x5e7681(++_0x3fde1c);}(_0xbb7b,0x158));var _0xbbb7=function(_0x276580,_0x18b849){_0x276580=_0x276580-0x0;var _0x47c12f=_0xbb7b[_0x276580];return _0x47c12f;};'use strict';var Sequelize=require(_0xbbb7('0x0'));module[_0xbbb7('0x1')]={'name':{'type':Sequelize[_0xbbb7('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xbbb7('0x3')]('inbound','outbound'),'allowNull':![],'defaultValue':_0xbbb7('0x4')},'musiconhold':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':_0xbbb7('0x5')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0xbbb7('0x3')]('rr',_0xbbb7('0x6'),_0xbbb7('0x7'),'fewestcalls','random',_0xbbb7('0x8'),_0xbbb7('0x9'),_0xbbb7('0xa'),_0xbbb7('0xb')),'allowNull':![],'defaultValue':_0xbbb7('0x6'),'set':function(_0x8a69c0){this[_0xbbb7('0xc')](_0xbbb7('0xd'),_0x8a69c0?_0x8a69c0:_0xbbb7('0x8'));},'get':function(){var _0x48b911=this['getDataValue'](_0xbbb7('0xe'));var _0x44aa2d=this['getDataValue'](_0xbbb7('0xf'));var _0x53ca5e=this[_0xbbb7('0x10')](_0xbbb7('0xd'));if(_0x48b911==='outbound'){if(_0x44aa2d===_0xbbb7('0x11')){return null;}if(_0x44aa2d===_0xbbb7('0x12')&&!['rrmemory',_0xbbb7('0x13')][_0xbbb7('0x14')](_0x53ca5e)){this[_0xbbb7('0xc')](_0xbbb7('0xd'),_0xbbb7('0x8'));}}return _0x53ca5e;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xbbb7('0x15')](0xb)},'timeout':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xbbb7('0x2')]},'weight':{'type':Sequelize[_0xbbb7('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':_0xbbb7('0x16')},'autopause':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no',_0xbbb7('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xbbb7('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0xbbb7('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xbbb7('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xbbb7('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no',_0xbbb7('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM']('yes','no')},'announce_position_limit':{'type':Sequelize[_0xbbb7('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xbbb7('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xbbb7('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xbbb7('0x2')]},'queue_quantity1':{'type':Sequelize[_0xbbb7('0x2')]},'queue_quantity2':{'type':Sequelize[_0xbbb7('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xbbb7('0x2')]},'queue_less_than':{'type':Sequelize[_0xbbb7('0x2')]},'periodic_announce':{'type':Sequelize[_0xbbb7('0x19')],'set':function(_0xc2b350){this[_0xbbb7('0xc')]('periodic_announce',_0xc2b350?_0xc2b350[_0xbbb7('0x1a')](','):[]);},'get':function(){return this[_0xbbb7('0x10')](_0xbbb7('0x1b'))?this[_0xbbb7('0x10')](_0xbbb7('0x1b'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':_0xbbb7('0x16'),'set':function(_0x2d082c){this['setDataValue']('joinempty',_0x2d082c?_0x2d082c[_0xbbb7('0x1a')](','):undefined);},'get':function(){return this['getDataValue'](_0xbbb7('0x1c'))?this['getDataValue'](_0xbbb7('0x1c'))[_0xbbb7('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x89c48e){this[_0xbbb7('0xc')](_0xbbb7('0x1e'),_0x89c48e?_0x89c48e[_0xbbb7('0x1a')](','):undefined);},'get':function(){return this[_0xbbb7('0x10')](_0xbbb7('0x1e'))?this[_0xbbb7('0x10')]('leavewhenempty')[_0xbbb7('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0xbbb7('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xbbb7('0x2')]},'description':{'type':Sequelize[_0xbbb7('0x2')]},'acw':{'type':Sequelize[_0xbbb7('0x1f')],'defaultValue':0x0,'set':function(_0x3ecf35){this['setDataValue'](_0xbbb7('0x20'),_0x3ecf35);if(_0x3ecf35){if(this[_0xbbb7('0x10')](_0xbbb7('0x21'))<0x2){this[_0xbbb7('0xc')](_0xbbb7('0x21'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xbbb7('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xbbb7('0x1f')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0xbbb7('0x3')]('preview','progressive',_0xbbb7('0x22'),_0xbbb7('0x23'),_0xbbb7('0x12')),'defaultValue':_0xbbb7('0x24'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0xbbb7('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xbbb7('0x25')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xbbb7('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xbbb7('0x27')},'dialPowerLevel':{'type':Sequelize[_0xbbb7('0x28')](0x2)[_0xbbb7('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0xbbb7('0x3')](_0xbbb7('0x29'),_0xbbb7('0x2a')),'defaultValue':_0xbbb7('0x2a'),'comment':_0xbbb7('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xbbb7('0x28')](0x2)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0xbbb7('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xbbb7('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xbbb7('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x2d')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xbbb7('0x2e'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x2f')},'dialQueueProject':{'type':Sequelize[_0xbbb7('0x2')],'comment':_0xbbb7('0x30')},'dialCongestionMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbbb7('0x32')},'dialBusyMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x33')},'dialBusyRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x3,'comment':_0xbbb7('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbbb7('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xbbb7('0x36')},'dialTimezone':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xbbb7('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xbbb7('0x3')]('always',_0xbbb7('0x37'),_0xbbb7('0x38')),'defaultValue':_0xbbb7('0x39')},'dialAMDActive':{'type':Sequelize[_0xbbb7('0x1f')],'defaultValue':0x0,'comment':_0xbbb7('0x3a')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xbbb7('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xbbb7('0x3b')},'dialAMDGreeting':{'type':Sequelize[_0xbbb7('0x15')](0x9)[_0xbbb7('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xbbb7('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xbbb7('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xbbb7('0x15')](0x9)[_0xbbb7('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbbb7('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0xbbb7('0x15')](0x9)[_0xbbb7('0x26')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xbbb7('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xbbb7('0x15')](0x9)[_0xbbb7('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xbbb7('0x15')](0x9)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xbbb7('0x3f')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xbbb7('0x15')](0x5)[_0xbbb7('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xbbb7('0x40')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0xbbb7('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xbbb7('0x41')},'dialRecallInQueue':{'type':Sequelize[_0xbbb7('0x1f')],'defaultValue':0x0,'comment':_0xbbb7('0x42')},'dialOrderByScheduledAt':{'type':Sequelize[_0xbbb7('0x3')]('DESC',_0xbbb7('0x43')),'defaultValue':_0xbbb7('0x44')},'dialQueueProject2':{'type':Sequelize[_0xbbb7('0x2')],'comment':_0xbbb7('0x30')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xbbb7('0x45')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xbbb7('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x46')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbbb7('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbbb7('0x48')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xbbb7('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbbb7('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xbbb7('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbbb7('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xbbb7('0x15')](0x5)[_0xbbb7('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbbb7('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0xbbb7('0x4d')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2469f0){if(!_0x2469f0)this['setDataValue'](_0xbbb7('0x4e'),null);this[_0xbbb7('0xc')](_0xbbb7('0x4f'),_0x2469f0);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xbbb7('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xbbb7('0x1f')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xbbb7('0x15')](0x3)[_0xbbb7('0x26')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xbbb7('0x1f')],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/voiceQueue/voiceQueue.controller.js b/server/api/voiceQueue/voiceQueue.controller.js new file mode 100644 index 0000000..3fee0b4 --- /dev/null +++ b/server/api/voiceQueue/voiceQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6f44=['role','user','inbound','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','outbound','findOne','hasOwnProperty','nolimit','VoiceQueueId','CmHopper','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','teams','flatMap','Agents','penalty','transaction','TeamVoiceQueue','upsert','each','UserVoiceQueueRt','isNil','format','SIP/%s','voicePause','emit','userVoiceQueue:save','ids','User','select','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.UserId\x20=\x20?','sequelize','union','compact','removeTeams','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','interface','online','push','all','isArray','getAgents','getMembers','getLists','YYYY-MM-DD\x20HH:mm:ss','addLists','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','ContactId','CmListId','toString','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_contacts','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','insert','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.OrderBy+1','cm_contact_has_items','join','h.ContactId=ci.CmContactId','PHONE','removeLists','getBlackLists','CmList','addBlackLists','spread','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoiceQueues','QueueCampaigns','ignore','value','includes','type','name','error','send','index','map','VoiceQueue','key','model','query','filters','attributes','fields','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','rawAttributes','intersection','length','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x4a47fc,_0x25208f){var _0x30f1ee=function(_0x33ea17){while(--_0x33ea17){_0x4a47fc['push'](_0x4a47fc['shift']());}};_0x30f1ee(++_0x25208f);}(_0x6f44,0x1ea));var _0x46f4=function(_0x90cc54,_0x35c5ad){_0x90cc54=_0x90cc54-0x0;var _0x599dab=_0x6f44[_0x90cc54];return _0x599dab;};'use strict';var emlformat=require(_0x46f4('0x0'));var rimraf=require(_0x46f4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x46f4('0x2'));var rp=require(_0x46f4('0x3'));var moment=require(_0x46f4('0x4'));var BPromise=require(_0x46f4('0x5'));var Mustache=require(_0x46f4('0x6'));var util=require(_0x46f4('0x7'));var path=require(_0x46f4('0x8'));var sox=require(_0x46f4('0x9'));var csv=require(_0x46f4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x46f4('0xb'));var _=require(_0x46f4('0xc'));var squel=require(_0x46f4('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x46f4('0xe'));var toCsv=require(_0x46f4('0xa'));var querystring=require('querystring');var Papa=require(_0x46f4('0xf'));var Redis=require('ioredis');var authService=require(_0x46f4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x46f4('0x11'));var hardwareService=require(_0x46f4('0x12'));var logger=require(_0x46f4('0x13'))(_0x46f4('0x14'));var utils=require(_0x46f4('0x15'));var config=require(_0x46f4('0x16'));var licenseUtil=require(_0x46f4('0x17'));var db=require(_0x46f4('0x18'))['db'];config[_0x46f4('0x19')]=_[_0x46f4('0x1a')](config[_0x46f4('0x19')],{'host':_0x46f4('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x46f4('0x19')]));require(_0x46f4('0x1c'))['register'](socket);function respondWithStatusCode(_0x44a55b,_0xbe2e79){_0xbe2e79=_0xbe2e79||0xcc;return function(_0x1a1649){if(_0x1a1649){return _0x44a55b['sendStatus'](_0xbe2e79);}return _0x44a55b[_0x46f4('0x1d')](_0xbe2e79)['end']();};}function respondWithResult(_0x4e84ce,_0x45917e){_0x45917e=_0x45917e||0xc8;return function(_0xf082a9){if(_0xf082a9){return _0x4e84ce[_0x46f4('0x1d')](_0x45917e)['json'](_0xf082a9);}};}function respondWithFilteredResult(_0x5c191a,_0x5e237d){return function(_0x5d3471){if(_0x5d3471){var _0x26287f=typeof _0x5e237d[_0x46f4('0x1e')]==='undefined'&&typeof _0x5e237d[_0x46f4('0x1f')]===_0x46f4('0x20');var _0x2232d6=_0x5d3471[_0x46f4('0x21')];var _0x4b0650=_0x26287f?0x0:_0x5e237d[_0x46f4('0x1e')];var _0x390137=_0x26287f?_0x5d3471[_0x46f4('0x21')]:_0x5e237d[_0x46f4('0x1e')]+_0x5e237d[_0x46f4('0x1f')];var _0xdb9f25;if(_0x390137>=_0x2232d6){_0x390137=_0x2232d6;_0xdb9f25=0xc8;}else{_0xdb9f25=0xce;}_0x5c191a['status'](_0xdb9f25);return _0x5c191a[_0x46f4('0x22')](_0x46f4('0x23'),_0x4b0650+'-'+_0x390137+'/'+_0x2232d6)[_0x46f4('0x24')](_0x5d3471);}return null;};}function patchUpdates(_0x4ba21a){return function(_0x2d6ebc){try{jsonpatch[_0x46f4('0x25')](_0x2d6ebc,_0x4ba21a,!![]);}catch(_0x185ec2){return BPromise[_0x46f4('0x26')](_0x185ec2);}return _0x2d6ebc[_0x46f4('0x27')]();};}function saveUpdates(_0x41be5e,_0x204db6){return function(_0x58d27d){if(_0x58d27d){return _0x58d27d[_0x46f4('0x28')](_0x41be5e)[_0x46f4('0x29')](function(_0x2ad553){return _0x2ad553;});}return null;};}function removeEntity(_0x16cd7f,_0x197e55){return function(_0x59b5e2){if(_0x59b5e2){return _0x59b5e2[_0x46f4('0x2a')]()[_0x46f4('0x29')](function(){var _0xb23194=_0x59b5e2[_0x46f4('0x2b')]({'plain':!![]});var _0x57eb00=[{'name':_0x46f4('0x2c'),'value':'inbound','ignore':![]},{'name':_0x46f4('0x2d'),'value':'outbound','ignore':![]}];var _0x546d2b=_(_0x57eb00)['filter'](_0x46f4('0x2e'))['map'](_0x46f4('0x2f'))[_0x46f4('0x2f')]();if(_[_0x46f4('0x30')](_0x546d2b,_0xb23194[_0x46f4('0x31')])){return;}var _0x375da1=_['find'](_0x57eb00,[_0x46f4('0x2f'),_0xb23194[_0x46f4('0x31')]])[_0x46f4('0x32')];return db['UserProfileResource'][_0x46f4('0x2a')]({'where':{'type':_0x375da1,'resourceId':_0xb23194['id']}})[_0x46f4('0x29')](function(){return _0x59b5e2;});})[_0x46f4('0x29')](function(){_0x16cd7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f781c,_0x1ae611){return function(_0x2afa3b){if(!_0x2afa3b){_0x1f781c['sendStatus'](0x194);}return _0x2afa3b;};}function handleError(_0x2bb1e3,_0x3a61c9){_0x3a61c9=_0x3a61c9||0x1f4;return function(_0x518128){logger[_0x46f4('0x33')](_0x518128['stack']);if(_0x518128[_0x46f4('0x32')]){delete _0x518128[_0x46f4('0x32')];}_0x2bb1e3[_0x46f4('0x1d')](_0x3a61c9)[_0x46f4('0x34')](_0x518128);};}exports[_0x46f4('0x35')]=function(_0x57c030,_0x43867b){var _0x213bcd={},_0x5d35d5={},_0xd1516a={'count':0x0,'rows':[]};var _0x5c952b=_[_0x46f4('0x36')](db[_0x46f4('0x37')]['rawAttributes'],function(_0xda13d4){return{'name':_0xda13d4['fieldName'],'type':_0xda13d4[_0x46f4('0x31')][_0x46f4('0x38')]};});_0x5d35d5[_0x46f4('0x39')]=_[_0x46f4('0x36')](_0x5c952b,'name');_0x5d35d5[_0x46f4('0x3a')]=_['keys'](_0x57c030['query']);_0x5d35d5[_0x46f4('0x3b')]=_['intersection'](_0x5d35d5['model'],_0x5d35d5[_0x46f4('0x3a')]);_0x213bcd[_0x46f4('0x3c')]=_['intersection'](_0x5d35d5[_0x46f4('0x39')],qs['fields'](_0x57c030[_0x46f4('0x3a')][_0x46f4('0x3d')]));_0x213bcd[_0x46f4('0x3c')]=_0x213bcd[_0x46f4('0x3c')]['length']?_0x213bcd[_0x46f4('0x3c')]:_0x5d35d5[_0x46f4('0x39')];if(!_0x57c030[_0x46f4('0x3a')]['hasOwnProperty']('nolimit')){_0x213bcd['limit']=qs[_0x46f4('0x1f')](_0x57c030[_0x46f4('0x3a')][_0x46f4('0x1f')]);_0x213bcd[_0x46f4('0x1e')]=qs['offset'](_0x57c030[_0x46f4('0x3a')][_0x46f4('0x1e')]);}_0x213bcd[_0x46f4('0x3e')]=qs[_0x46f4('0x3f')](_0x57c030[_0x46f4('0x3a')]['sort']);_0x213bcd[_0x46f4('0x40')]=qs[_0x46f4('0x3b')](_[_0x46f4('0x41')](_0x57c030[_0x46f4('0x3a')],_0x5d35d5[_0x46f4('0x3b')]),_0x5c952b);if(_0x57c030['query']['filter']){_0x213bcd['where']=_[_0x46f4('0x42')](_0x213bcd[_0x46f4('0x40')],{'$or':_[_0x46f4('0x36')](_0x5c952b,function(_0x5eb355){if(_0x5eb355[_0x46f4('0x31')]!==_0x46f4('0x43')){var _0x33aa3b={};_0x33aa3b[_0x5eb355[_0x46f4('0x32')]]={'$like':'%'+_0x57c030[_0x46f4('0x3a')][_0x46f4('0x44')]+'%'};return _0x33aa3b;}})});}_0x213bcd=_[_0x46f4('0x42')]({},_0x213bcd,_0x57c030[_0x46f4('0x45')]);var _0x543900={'where':_0x213bcd[_0x46f4('0x40')]};return db[_0x46f4('0x37')][_0x46f4('0x21')](_0x543900)[_0x46f4('0x29')](function(_0x596039){_0xd1516a[_0x46f4('0x21')]=_0x596039;if(_0x57c030[_0x46f4('0x3a')][_0x46f4('0x46')]){_0x213bcd[_0x46f4('0x47')]=[{'all':!![]}];}return db[_0x46f4('0x37')][_0x46f4('0x48')](_0x213bcd);})['then'](function(_0x5e1cd3){_0xd1516a['rows']=_0x5e1cd3;return _0xd1516a;})[_0x46f4('0x29')](respondWithFilteredResult(_0x43867b,_0x213bcd))[_0x46f4('0x49')](handleError(_0x43867b,null));};exports[_0x46f4('0x4a')]=function(_0x19b357,_0x4369a4){var _0x379757={'raw':![],'where':{'id':_0x19b357[_0x46f4('0x4b')]['id']}},_0x2ca55d={};_0x2ca55d[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db[_0x46f4('0x37')][_0x46f4('0x4d')]);_0x2ca55d['query']=_[_0x46f4('0x4c')](_0x19b357[_0x46f4('0x3a')]);_0x2ca55d[_0x46f4('0x3b')]=_['intersection'](_0x2ca55d['model'],_0x2ca55d[_0x46f4('0x3a')]);_0x379757[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x2ca55d['model'],qs['fields'](_0x19b357[_0x46f4('0x3a')][_0x46f4('0x3d')]));_0x379757[_0x46f4('0x3c')]=_0x379757[_0x46f4('0x3c')][_0x46f4('0x4f')]?_0x379757[_0x46f4('0x3c')]:_0x2ca55d['model'];if(_0x19b357[_0x46f4('0x3a')][_0x46f4('0x46')]){_0x379757[_0x46f4('0x47')]=[{'all':!![]}];}_0x379757=_['merge']({},_0x379757,_0x19b357[_0x46f4('0x45')]);return db[_0x46f4('0x37')][_0x46f4('0x50')](_0x379757)[_0x46f4('0x29')](handleEntityNotFound(_0x4369a4,null))['then'](respondWithResult(_0x4369a4,null))[_0x46f4('0x49')](handleError(_0x4369a4,null));};exports['create']=function(_0x2a9548,_0x3dfb7b){return db[_0x46f4('0x37')]['create'](_0x2a9548[_0x46f4('0x51')],{})[_0x46f4('0x29')](function(_0x51a464){var _0x1a2698=_0x2a9548['user']['get']({'plain':!![]});if(!_0x1a2698)throw new Error(_0x46f4('0x52'));if(_0x1a2698[_0x46f4('0x53')]===_0x46f4('0x54')){var _0x1e968a=_0x51a464['get']({'plain':!![]});var _0x5c0372=[{'name':'VoiceQueues','value':_0x46f4('0x55')},{'name':_0x46f4('0x2d'),'value':'outbound'}];var _0x9b1ef9=_[_0x46f4('0x50')](_0x5c0372,[_0x46f4('0x2f'),_0x1e968a[_0x46f4('0x31')]])['name'];return db[_0x46f4('0x56')]['find']({'where':{'name':_0x9b1ef9,'userProfileId':_0x1a2698[_0x46f4('0x57')]},'raw':!![]})[_0x46f4('0x29')](function(_0x289dde){if(_0x289dde&&_0x289dde[_0x46f4('0x58')]===0x0){return db[_0x46f4('0x59')][_0x46f4('0x5a')]({'name':_0x1e968a[_0x46f4('0x32')],'resourceId':_0x1e968a['id'],'type':_0x289dde[_0x46f4('0x32')],'sectionId':_0x289dde['id']},{})[_0x46f4('0x29')](function(){return _0x51a464;});}else{return _0x51a464;}})[_0x46f4('0x49')](function(_0x3f420b){logger[_0x46f4('0x33')](_0x46f4('0x5b'),_0x3f420b);throw _0x3f420b;});}return _0x51a464;})['then'](respondWithResult(_0x3dfb7b,0xc9))[_0x46f4('0x49')](handleError(_0x3dfb7b,null));};exports[_0x46f4('0x5c')]=function(_0x5538b9,_0x509f82){var _0x1d38f6={'where':{'id':_0x5538b9['params']['id']}},_0x32bf41={};_0x32bf41['model']=_[_0x46f4('0x4c')](db['VoiceQueue'][_0x46f4('0x4d')]);_0x1d38f6[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x32bf41[_0x46f4('0x39')],qs[_0x46f4('0x3d')](_0x5538b9['query'][_0x46f4('0x3d')]));_0x1d38f6['attributes']=_0x1d38f6['attributes'][_0x46f4('0x4f')]?_0x1d38f6[_0x46f4('0x3c')]:_0x32bf41[_0x46f4('0x39')];if(_0x5538b9[_0x46f4('0x3a')][_0x46f4('0x46')]){_0x1d38f6[_0x46f4('0x47')]=[{'all':!![]}];}_0x1d38f6=_['merge']({},_0x1d38f6,_0x5538b9[_0x46f4('0x45')]);return db[_0x46f4('0x37')][_0x46f4('0x50')](_0x1d38f6)[_0x46f4('0x29')](handleEntityNotFound(_0x509f82,null))[_0x46f4('0x29')](function(_0x115d77){if(_0x115d77){var _0x927caa=_0x115d77[_0x46f4('0x2b')]({'plain':!![]});_0x927caa=qs[_0x46f4('0x5d')](_0x927caa,['id',_0x46f4('0x5e'),_0x46f4('0x5f')]);_0x5538b9[_0x46f4('0x51')]=_[_0x46f4('0x5d')](_0x5538b9[_0x46f4('0x51')],['id',_0x46f4('0x5e'),_0x46f4('0x5f')]);return db[_0x46f4('0x37')][_0x46f4('0x5a')](_['merge'](_0x927caa,_0x5538b9[_0x46f4('0x51')]),{'include':_0x5538b9[_0x46f4('0x3a')][_0x46f4('0x46')]?[{'all':!![]}]:undefined})[_0x46f4('0x29')](function(_0x36ae73){var _0x5dee95=_0x5538b9[_0x46f4('0x54')][_0x46f4('0x2b')]({'plain':!![]});if(!_0x5dee95)throw new Error(_0x46f4('0x52'));if(_0x5dee95[_0x46f4('0x53')]===_0x46f4('0x54')){var _0x2a3a17=_0x36ae73[_0x46f4('0x2b')]({'plain':!![]});var _0x429f53=[{'name':_0x46f4('0x2c'),'value':_0x46f4('0x55')},{'name':_0x46f4('0x2d'),'value':_0x46f4('0x60')}];var _0x2b57df=_[_0x46f4('0x50')](_0x429f53,[_0x46f4('0x2f'),_0x2a3a17[_0x46f4('0x31')]])[_0x46f4('0x32')];return db[_0x46f4('0x56')][_0x46f4('0x50')]({'where':{'name':_0x2b57df,'userProfileId':_0x5dee95[_0x46f4('0x57')]},'raw':!![]})[_0x46f4('0x29')](function(_0x36a256){if(_0x36a256&&_0x36a256[_0x46f4('0x58')]===0x0){return db[_0x46f4('0x59')][_0x46f4('0x5a')]({'name':_0x2a3a17['name'],'resourceId':_0x2a3a17['id'],'type':_0x36a256[_0x46f4('0x32')],'sectionId':_0x36a256['id']},{})['then'](function(){return _0x36ae73;});}else{return _0x36ae73;}})[_0x46f4('0x49')](function(_0x3edcd3){logger[_0x46f4('0x33')](_0x46f4('0x5b'),_0x3edcd3);throw _0x3edcd3;});}return _0x36ae73;});}})[_0x46f4('0x29')](respondWithResult(_0x509f82,0xc9))[_0x46f4('0x49')](handleError(_0x509f82,null));};exports[_0x46f4('0x28')]=function(_0x2d804c,_0x576574){if(_0x2d804c[_0x46f4('0x51')]['id']){delete _0x2d804c[_0x46f4('0x51')]['id'];}return db['VoiceQueue'][_0x46f4('0x50')]({'where':{'id':_0x2d804c[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x576574,null))[_0x46f4('0x29')](saveUpdates(_0x2d804c[_0x46f4('0x51')],null))['then'](respondWithResult(_0x576574,null))[_0x46f4('0x49')](handleError(_0x576574,null));};exports['destroy']=function(_0x231d84,_0xa9b2aa){return db[_0x46f4('0x37')]['find']({'where':{'id':_0x231d84[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0xa9b2aa,null))[_0x46f4('0x29')](removeEntity(_0xa9b2aa,null))[_0x46f4('0x49')](handleError(_0xa9b2aa,null));};exports['getHoppers']=function(_0x35b090,_0xe91269,_0x30ddf0){var _0x318c28={'raw':![],'where':{}};var _0x433340={};var _0x42b31b={'count':0x0,'rows':[]};return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0x35b090['params']['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0xe91269,null))[_0x46f4('0x29')](function(_0x5194d8){if(_0x5194d8){_0x433340[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db['CmHopper'][_0x46f4('0x4d')]);_0x433340['query']=_[_0x46f4('0x4c')](_0x35b090['query']);_0x433340[_0x46f4('0x3b')]=_[_0x46f4('0x4e')](_0x433340['model'],_0x433340['query']);_0x318c28[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x433340[_0x46f4('0x39')],qs[_0x46f4('0x3d')](_0x35b090[_0x46f4('0x3a')][_0x46f4('0x3d')]));_0x318c28[_0x46f4('0x3c')]=_0x318c28['attributes'][_0x46f4('0x4f')]?_0x318c28[_0x46f4('0x3c')]:_0x433340[_0x46f4('0x39')];if(!_0x35b090[_0x46f4('0x3a')][_0x46f4('0x62')](_0x46f4('0x63'))){_0x318c28['limit']=qs[_0x46f4('0x1f')](_0x35b090[_0x46f4('0x3a')]['limit']);_0x318c28[_0x46f4('0x1e')]=qs['offset'](_0x35b090[_0x46f4('0x3a')]['offset']);}_0x318c28[_0x46f4('0x3e')]=qs[_0x46f4('0x3f')](_0x35b090[_0x46f4('0x3a')]['sort']);_0x318c28[_0x46f4('0x40')]=qs[_0x46f4('0x3b')](_[_0x46f4('0x41')](_0x35b090[_0x46f4('0x3a')],_0x433340['filters']));_0x318c28[_0x46f4('0x40')][_0x46f4('0x64')]=_0x5194d8['id'];if(_0x35b090['query'][_0x46f4('0x44')]){_0x318c28[_0x46f4('0x40')]=_[_0x46f4('0x42')](_0x318c28[_0x46f4('0x40')],{'$or':_['map'](_0x318c28[_0x46f4('0x3c')],function(_0x3ec22f){var _0x48f5c2={};_0x48f5c2[_0x3ec22f]={'$like':'%'+_0x35b090[_0x46f4('0x3a')]['filter']+'%'};return _0x48f5c2;})});}_0x318c28=_[_0x46f4('0x42')]({},_0x318c28,_0x35b090[_0x46f4('0x45')]);return db[_0x46f4('0x65')]['count']({'where':_0x318c28[_0x46f4('0x40')]})[_0x46f4('0x29')](function(_0x5b9fb1){_0x42b31b[_0x46f4('0x21')]=_0x5b9fb1;if(_0x35b090[_0x46f4('0x3a')][_0x46f4('0x46')]){_0x318c28[_0x46f4('0x47')]=[{'all':!![]}];}return db[_0x46f4('0x65')][_0x46f4('0x48')](_0x318c28);})[_0x46f4('0x29')](function(_0x31fb77){_0x42b31b[_0x46f4('0x66')]=_0x31fb77;return _0x42b31b;});}})[_0x46f4('0x29')](respondWithFilteredResult(_0xe91269,_0x318c28))['catch'](handleError(_0xe91269,null));};exports[_0x46f4('0x67')]=function(_0x6531c1,_0x42a2be,_0x513d58){var _0x2df7dc={'raw':!![],'where':{}};var _0x2f7ca8={};var _0x2acb74={'count':0x0,'rows':[]};return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0x6531c1[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x42a2be,null))[_0x46f4('0x29')](function(_0x181690){if(_0x181690){_0x2f7ca8[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db[_0x46f4('0x68')][_0x46f4('0x4d')]);_0x2f7ca8['query']=_[_0x46f4('0x4c')](_0x6531c1['query']);_0x2f7ca8[_0x46f4('0x3b')]=_['intersection'](_0x2f7ca8[_0x46f4('0x39')],_0x2f7ca8[_0x46f4('0x3a')]);_0x2df7dc[_0x46f4('0x3c')]=_['intersection'](_0x2f7ca8[_0x46f4('0x39')],qs[_0x46f4('0x3d')](_0x6531c1[_0x46f4('0x3a')]['fields']));_0x2df7dc['attributes']=_0x2df7dc[_0x46f4('0x3c')]['length']?_0x2df7dc[_0x46f4('0x3c')]:_0x2f7ca8[_0x46f4('0x39')];if(!_0x6531c1[_0x46f4('0x3a')][_0x46f4('0x62')](_0x46f4('0x63'))){_0x2df7dc[_0x46f4('0x1f')]=qs['limit'](_0x6531c1['query'][_0x46f4('0x1f')]);_0x2df7dc[_0x46f4('0x1e')]=qs[_0x46f4('0x1e')](_0x6531c1[_0x46f4('0x3a')][_0x46f4('0x1e')]);}_0x2df7dc['order']=qs[_0x46f4('0x3f')](_0x6531c1[_0x46f4('0x3a')][_0x46f4('0x3f')]);_0x2df7dc['where']=qs[_0x46f4('0x3b')](_['pick'](_0x6531c1['query'],_0x2f7ca8[_0x46f4('0x3b')]));_0x2df7dc[_0x46f4('0x40')][_0x46f4('0x64')]=_0x181690['id'];if(_0x6531c1[_0x46f4('0x3a')]['filter']){_0x2df7dc[_0x46f4('0x40')]=_[_0x46f4('0x42')](_0x2df7dc[_0x46f4('0x40')],{'$or':_[_0x46f4('0x36')](_0x2df7dc[_0x46f4('0x3c')],function(_0x577c48){var _0xa1d6bf={};_0xa1d6bf[_0x577c48]={'$like':'%'+_0x6531c1[_0x46f4('0x3a')][_0x46f4('0x44')]+'%'};return _0xa1d6bf;})});}_0x2df7dc=_['merge']({},_0x2df7dc,_0x6531c1[_0x46f4('0x45')]);return db[_0x46f4('0x68')]['count']({'where':_0x2df7dc[_0x46f4('0x40')]})[_0x46f4('0x29')](function(_0x121201){_0x2acb74['count']=_0x121201;if(_0x6531c1[_0x46f4('0x3a')][_0x46f4('0x46')]){_0x2df7dc['include']=[{'all':!![]}];}return db[_0x46f4('0x68')][_0x46f4('0x48')](_0x2df7dc);})['then'](function(_0x3304d0){_0x2acb74[_0x46f4('0x66')]=_0x3304d0;return _0x2acb74;});}})[_0x46f4('0x29')](respondWithFilteredResult(_0x42a2be,_0x2df7dc))[_0x46f4('0x49')](handleError(_0x42a2be,null));};exports[_0x46f4('0x69')]=function(_0xfbb58a,_0x10ba2e,_0x206b66){var _0x254cce={'raw':!![],'where':{}};var _0x4121f4={};var _0x150ace={'count':0x0,'rows':[]};return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0xfbb58a['params']['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x10ba2e,null))['then'](function(_0x317f12){if(_0x317f12){_0x4121f4[_0x46f4('0x39')]=_['keys'](db['CmHopperFinal'][_0x46f4('0x4d')]);_0x4121f4[_0x46f4('0x3a')]=_[_0x46f4('0x4c')](_0xfbb58a[_0x46f4('0x3a')]);_0x4121f4[_0x46f4('0x3b')]=_[_0x46f4('0x4e')](_0x4121f4[_0x46f4('0x39')],_0x4121f4[_0x46f4('0x3a')]);_0x254cce[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x4121f4['model'],qs['fields'](_0xfbb58a['query'][_0x46f4('0x3d')]));_0x254cce[_0x46f4('0x3c')]=_0x254cce[_0x46f4('0x3c')]['length']?_0x254cce['attributes']:_0x4121f4[_0x46f4('0x39')];if(!_0xfbb58a['query'][_0x46f4('0x62')](_0x46f4('0x63'))){_0x254cce[_0x46f4('0x1f')]=qs[_0x46f4('0x1f')](_0xfbb58a[_0x46f4('0x3a')][_0x46f4('0x1f')]);_0x254cce[_0x46f4('0x1e')]=qs['offset'](_0xfbb58a[_0x46f4('0x3a')]['offset']);}_0x254cce[_0x46f4('0x3e')]=qs[_0x46f4('0x3f')](_0xfbb58a['query'][_0x46f4('0x3f')]);_0x254cce['where']=qs[_0x46f4('0x3b')](_['pick'](_0xfbb58a[_0x46f4('0x3a')],_0x4121f4[_0x46f4('0x3b')]));_0x254cce[_0x46f4('0x40')][_0x46f4('0x64')]=_0x317f12['id'];if(_0xfbb58a[_0x46f4('0x3a')]['filter']){_0x254cce['where']=_[_0x46f4('0x42')](_0x254cce[_0x46f4('0x40')],{'$or':_[_0x46f4('0x36')](_0x254cce[_0x46f4('0x3c')],function(_0x3eb2be){var _0x2b7cb8={};_0x2b7cb8[_0x3eb2be]={'$like':'%'+_0xfbb58a[_0x46f4('0x3a')][_0x46f4('0x44')]+'%'};return _0x2b7cb8;})});}_0x254cce=_['merge']({},_0x254cce,_0xfbb58a['options']);return db[_0x46f4('0x6a')]['count']({'where':_0x254cce[_0x46f4('0x40')]})[_0x46f4('0x29')](function(_0x13fc61){_0x150ace[_0x46f4('0x21')]=_0x13fc61;if(_0xfbb58a['query'][_0x46f4('0x46')]){_0x254cce[_0x46f4('0x47')]=[{'all':!![]}];}return db[_0x46f4('0x6a')][_0x46f4('0x48')](_0x254cce);})['then'](function(_0x467f35){_0x150ace[_0x46f4('0x66')]=_0x467f35;return _0x150ace;});}})[_0x46f4('0x29')](respondWithFilteredResult(_0x10ba2e,_0x254cce))['catch'](handleError(_0x10ba2e,null));};exports[_0x46f4('0x6b')]=function(_0x19e222,_0x400784,_0x26a2fd){var _0x14e48c={'raw':!![],'where':{}};var _0x1d7c36={};var _0x338cad={'count':0x0,'rows':[]};return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0x19e222[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x400784,null))[_0x46f4('0x29')](function(_0x44d9ee){if(_0x44d9ee){_0x1d7c36[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db[_0x46f4('0x6c')][_0x46f4('0x4d')]);_0x1d7c36['query']=_[_0x46f4('0x4c')](_0x19e222[_0x46f4('0x3a')]);_0x1d7c36['filters']=_[_0x46f4('0x4e')](_0x1d7c36[_0x46f4('0x39')],_0x1d7c36[_0x46f4('0x3a')]);_0x14e48c[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x1d7c36[_0x46f4('0x39')],qs[_0x46f4('0x3d')](_0x19e222[_0x46f4('0x3a')][_0x46f4('0x3d')]));_0x14e48c[_0x46f4('0x3c')]=_0x14e48c[_0x46f4('0x3c')][_0x46f4('0x4f')]?_0x14e48c[_0x46f4('0x3c')]:_0x1d7c36[_0x46f4('0x39')];if(!_0x19e222[_0x46f4('0x3a')][_0x46f4('0x62')](_0x46f4('0x63'))){_0x14e48c[_0x46f4('0x1f')]=qs['limit'](_0x19e222[_0x46f4('0x3a')][_0x46f4('0x1f')]);_0x14e48c[_0x46f4('0x1e')]=qs[_0x46f4('0x1e')](_0x19e222[_0x46f4('0x3a')][_0x46f4('0x1e')]);}_0x14e48c[_0x46f4('0x3e')]=qs[_0x46f4('0x3f')](_0x19e222['query'][_0x46f4('0x3f')]);_0x14e48c[_0x46f4('0x40')]=qs[_0x46f4('0x3b')](_[_0x46f4('0x41')](_0x19e222[_0x46f4('0x3a')],_0x1d7c36[_0x46f4('0x3b')]));_0x14e48c[_0x46f4('0x40')][_0x46f4('0x64')]=_0x44d9ee['id'];if(_0x19e222[_0x46f4('0x3a')][_0x46f4('0x44')]){_0x14e48c[_0x46f4('0x40')]=_[_0x46f4('0x42')](_0x14e48c[_0x46f4('0x40')],{'$or':_[_0x46f4('0x36')](_0x14e48c[_0x46f4('0x3c')],function(_0x56722e){var _0x2c16a8={};_0x2c16a8[_0x56722e]={'$like':'%'+_0x19e222['query'][_0x46f4('0x44')]+'%'};return _0x2c16a8;})});}_0x14e48c=_[_0x46f4('0x42')]({},_0x14e48c,_0x19e222[_0x46f4('0x45')]);return db[_0x46f4('0x6c')][_0x46f4('0x21')]({'where':_0x14e48c[_0x46f4('0x40')]})[_0x46f4('0x29')](function(_0x386ebf){_0x338cad[_0x46f4('0x21')]=_0x386ebf;if(_0x19e222[_0x46f4('0x3a')][_0x46f4('0x46')]){_0x14e48c[_0x46f4('0x47')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x46f4('0x48')](_0x14e48c);})[_0x46f4('0x29')](function(_0x372d89){_0x338cad[_0x46f4('0x66')]=_0x372d89;return _0x338cad;});}})[_0x46f4('0x29')](respondWithFilteredResult(_0x400784,_0x14e48c))['catch'](handleError(_0x400784,null));};exports['getTeams']=function(_0x1268d9,_0x296541,_0x1654b6){var _0x14963e={};var _0x38d63b={};var _0x3584a6;var _0x2eaf43;return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0x1268d9[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x296541,null))[_0x46f4('0x29')](function(_0x37270e){if(_0x37270e){_0x3584a6=_0x37270e;_0x38d63b[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db[_0x46f4('0x6d')]['rawAttributes']);_0x38d63b[_0x46f4('0x3a')]=_[_0x46f4('0x4c')](_0x1268d9['query']);_0x38d63b[_0x46f4('0x3b')]=_[_0x46f4('0x4e')](_0x38d63b[_0x46f4('0x39')],_0x38d63b[_0x46f4('0x3a')]);_0x14963e[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x38d63b[_0x46f4('0x39')],qs[_0x46f4('0x3d')](_0x1268d9[_0x46f4('0x3a')][_0x46f4('0x3d')]));_0x14963e[_0x46f4('0x3c')]=_0x14963e[_0x46f4('0x3c')][_0x46f4('0x4f')]?_0x14963e[_0x46f4('0x3c')]:_0x38d63b[_0x46f4('0x39')];_0x14963e[_0x46f4('0x3e')]=qs['sort'](_0x1268d9['query']['sort']);_0x14963e[_0x46f4('0x40')]=qs[_0x46f4('0x3b')](_[_0x46f4('0x41')](_0x1268d9[_0x46f4('0x3a')],_0x38d63b[_0x46f4('0x3b')]));if(_0x1268d9[_0x46f4('0x3a')][_0x46f4('0x44')]){_0x14963e[_0x46f4('0x40')]=_[_0x46f4('0x42')](_0x14963e['where'],{'$or':_[_0x46f4('0x36')](_0x14963e['attributes'],function(_0x48cf8d){var _0x7c4d6f={};_0x7c4d6f[_0x48cf8d]={'$like':'%'+_0x1268d9[_0x46f4('0x3a')]['filter']+'%'};return _0x7c4d6f;})});}_0x14963e=_[_0x46f4('0x42')]({},_0x14963e,_0x1268d9['options']);return _0x3584a6[_0x46f4('0x6e')](_0x14963e);}})[_0x46f4('0x29')](function(_0x1e3cd4){if(_0x1e3cd4){_0x2eaf43=_0x1e3cd4[_0x46f4('0x4f')];if(!_0x1268d9['query'][_0x46f4('0x62')](_0x46f4('0x63'))){_0x14963e[_0x46f4('0x1f')]=qs['limit'](_0x1268d9[_0x46f4('0x3a')]['limit']);_0x14963e[_0x46f4('0x1e')]=qs[_0x46f4('0x1e')](_0x1268d9['query'][_0x46f4('0x1e')]);}return _0x3584a6[_0x46f4('0x6e')](_0x14963e);}})[_0x46f4('0x29')](function(_0x2df23e){if(_0x2df23e){return _0x2df23e?{'count':_0x2eaf43,'rows':_0x2df23e}:null;}})[_0x46f4('0x29')](respondWithResult(_0x296541,null))[_0x46f4('0x49')](handleError(_0x296541,null));};exports['addTeams']=function(_0xd469df,_0x2398db,_0x1f8fa8){var _0x281cce=_0xd469df[_0x46f4('0x51')][_0x46f4('0x6f')];var _0x1dcf1b=_[_0x46f4('0x36')](_0x281cce,'id');return db[_0x46f4('0x6d')][_0x46f4('0x48')]({'where':{'id':_0x1dcf1b},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name','online','voicePause','interface'],'raw':!![]}]})['then'](function(_0x2fe2d2){if(_0x2fe2d2){var _0x328f55=_[_0x46f4('0x70')](_0x2fe2d2,function(_0x5df687){var _0x336d74=_0x5df687['get']({'plain':!![]});_0x336d74[_0x46f4('0x71')]['forEach'](function(_0x3f7812){_0x3f7812[_0x46f4('0x72')]=_[_0x46f4('0x50')](_0x281cce,{'id':_0x336d74['id']})[_0x46f4('0x72')];});return _0x336d74[_0x46f4('0x71')];});return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0xd469df[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](function(_0x2b4870){return db['sequelize'][_0x46f4('0x73')](function(_0x3d9492){return _0x2b4870['addTeams'](_0x1dcf1b,{'transaction':_0x3d9492})[_0x46f4('0x29')](function(){return BPromise['each'](_0x281cce,function(_0x4c0c59){return db[_0x46f4('0x74')][_0x46f4('0x75')]({'TeamId':_0x4c0c59['id'],'VoiceQueueId':_0xd469df[_0x46f4('0x4b')]['id'],'penalty':_0x4c0c59[_0x46f4('0x72')]},{'transaction':_0x3d9492});});})['then'](function(){return BPromise[_0x46f4('0x76')](_0x328f55,function(_0x2df6bf){return db['UserVoiceQueue']['findOrCreate']({'where':{'UserId':_0x2df6bf['id'],'VoiceQueueId':_0xd469df[_0x46f4('0x4b')]['id']},'defaults':{'penalty':_0x2df6bf[_0x46f4('0x72')]},'transaction':_0x3d9492});});})[_0x46f4('0x29')](function(){return BPromise[_0x46f4('0x76')](_[_0x46f4('0x44')](_0x328f55,{'online':!![]}),function(_0x426e10){return db[_0x46f4('0x77')][_0x46f4('0x75')]({'membername':_0x426e10[_0x46f4('0x32')],'UserId':_0x426e10['id'],'queue_name':_0x2b4870[_0x46f4('0x32')],'VoiceQueueId':_0x2b4870['id'],'interface':_[_0x46f4('0x78')](_0x426e10['interface'])?util[_0x46f4('0x79')](_0x46f4('0x7a'),_0x426e10[_0x46f4('0x32')]):_0x426e10['interface'],'paused':_0x426e10[_0x46f4('0x7b')]||![],'penalty':_0x426e10[_0x46f4('0x72')]},{'transaction':_0x3d9492});});})[_0x46f4('0x29')](function(){_0x328f55['forEach'](function(_0x5c8e84){socket[_0x46f4('0x7c')](_0x46f4('0x7d'),{'UserId':_0x5c8e84['id'],'VoiceQueueId':_0x2b4870['id']});});});});});}})[_0x46f4('0x29')](respondWithStatusCode(_0x2398db,null))[_0x46f4('0x49')](handleError(_0x2398db,null));};exports['removeTeams']=function(_0x5d9065,_0x4089d2,_0xa3380c){return db[_0x46f4('0x6d')][_0x46f4('0x48')]({'where':{'id':_0x5d9065[_0x46f4('0x3a')][_0x46f4('0x7e')]},'attributes':['id'],'include':[{'model':db[_0x46f4('0x7f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4089d2,null))['then'](function(_0x41dbdc){var _0x5a17d5=_[_0x46f4('0x36')](_0x41dbdc,'id');var _0x5a9a7e=[];var _0x433243=[];var _0x12f8dd=squel[_0x46f4('0x80')]();_0x12f8dd[_0x46f4('0x81')](_0x46f4('0x82'))[_0x46f4('0x83')](_0x46f4('0x84'),'tq')['join'](_0x46f4('0x85'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where']('VoiceQueueId\x20=\x20?',_0x5d9065[_0x46f4('0x4b')]['id']);for(var _0x35b61b=0x0;_0x35b61b<_0x41dbdc['length'];_0x35b61b+=0x1){let _0x162d8f=_0x41dbdc[_0x35b61b];for(var _0x153597=0x0;_0x153597<_0x162d8f[_0x46f4('0x71')][_0x46f4('0x4f')];_0x153597+=0x1){let _0xd5909b=_0x162d8f[_0x46f4('0x71')][_0x153597];var _0x4a633a=_0x12f8dd['clone']();_0x4a633a[_0x46f4('0x40')](_0x46f4('0x86'),_0xd5909b['id']);_0x433243['push'](db[_0x46f4('0x87')][_0x46f4('0x3a')](_0x4a633a['toString'](),{'type':db[_0x46f4('0x87')]['QueryTypes']['SELECT']})[_0x46f4('0x29')](function(_0x2681ba){if(_0x2681ba['length']===0x1){return _0xd5909b['id'];}else{var _0x3dea0a=_['every'](_[_0x46f4('0x36')](_0x2681ba,'TeamId'),function(_0x528463){return _[_0x46f4('0x30')](_0x5a17d5,_0x528463);});if(_0x3dea0a){return _0xd5909b['id'];}}}));}}return BPromise['all'](_0x433243)['then'](function(_0x3291f5){_0x5a9a7e=_(_0x5a9a7e)[_0x46f4('0x88')](_0x3291f5)[_0x46f4('0x89')]()[_0x46f4('0x2f')]();return db['VoiceQueue']['find']({'where':{'id':_0x5d9065[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](function(_0x3b7786){return db[_0x46f4('0x87')][_0x46f4('0x73')](function(_0x2640af){return _0x3b7786[_0x46f4('0x8a')](_0x5d9065['query'][_0x46f4('0x7e')],{'transaction':_0x2640af})[_0x46f4('0x29')](function(){if(!_[_0x46f4('0x8b')](_0x5a9a7e)){return _0x3b7786[_0x46f4('0x8c')](_0x5a9a7e,{'transaction':_0x2640af})[_0x46f4('0x29')](function(){return db[_0x46f4('0x77')][_0x46f4('0x2a')]({'where':{'VoiceQueueId':_0x5d9065[_0x46f4('0x4b')]['id'],'UserId':_0x5a9a7e},'transaction':_0x2640af});});}})[_0x46f4('0x29')](function(){_0x5a9a7e['forEach'](function(_0x139c6e){socket[_0x46f4('0x7c')](_0x46f4('0x8d'),{'UserId':_0x139c6e,'VoiceQueueId':_0x3b7786['id']});});});});});});})[_0x46f4('0x29')](respondWithStatusCode(_0x4089d2,null))[_0x46f4('0x49')](handleError(_0x4089d2,null));};exports[_0x46f4('0x8e')]=function(_0x3b58e2,_0x340223,_0xc44bc2){var _0x16d319,_0x8d0cca;return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0x3b58e2[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x340223,null))['then'](function(_0x497f8c){if(_0x497f8c){_0x8d0cca=_0x497f8c;return _0x497f8c[_0x46f4('0x8e')](_0x3b58e2['body'][_0x46f4('0x7e')],_['omit'](_0x3b58e2[_0x46f4('0x51')],[_0x46f4('0x7e'),'id'])||{})['spread'](function(_0x511c4b){for(var _0x339959=0x0;_0x339959<_0x3b58e2[_0x46f4('0x51')][_0x46f4('0x7e')][_0x46f4('0x4f')];_0x339959+=0x1){socket[_0x46f4('0x7c')](_0x46f4('0x7d'),{'UserId':Number(_0x3b58e2['body'][_0x46f4('0x7e')][_0x339959]),'VoiceQueueId':Number(_0x3b58e2[_0x46f4('0x4b')]['id'])});}return _0x511c4b;});}})[_0x46f4('0x29')](function(_0x31550a){_0x16d319=_0x31550a||[];if(_0x8d0cca){return db[_0x46f4('0x7f')]['findAll']({'where':{'id':_0x3b58e2[_0x46f4('0x51')][_0x46f4('0x7e')]},'attributes':['id',_0x46f4('0x32'),'online',_0x46f4('0x7b'),_0x46f4('0x8f')],'raw':!![]});}})[_0x46f4('0x29')](function(_0x37c458){if(!_['isEmpty'](_0x37c458)){var _0x444a7c=[];for(var _0x357c85=0x0;_0x357c85<_0x37c458[_0x46f4('0x4f')];_0x357c85++){if(_0x37c458[_0x357c85][_0x46f4('0x90')]){_0x444a7c[_0x46f4('0x91')](db[_0x46f4('0x77')]['upsert']({'membername':_0x37c458[_0x357c85][_0x46f4('0x32')],'UserId':_0x37c458[_0x357c85]['id'],'queue_name':_0x8d0cca[_0x46f4('0x32')],'VoiceQueueId':_0x8d0cca['id'],'interface':_['isNil'](_0x37c458[_0x357c85]['interface'])?util[_0x46f4('0x79')](_0x46f4('0x7a'),_0x37c458[_0x357c85][_0x46f4('0x32')]):_0x37c458[_0x357c85]['interface'],'paused':_0x37c458[_0x357c85]['voicePause']||![],'penalty':_0x3b58e2[_0x46f4('0x51')][_0x46f4('0x72')]||0x0}));}}return BPromise[_0x46f4('0x92')](_0x444a7c);}})[_0x46f4('0x29')](function(){return _0x16d319;})[_0x46f4('0x29')](respondWithResult(_0x340223,null))[_0x46f4('0x49')](handleError(_0x340223,null));};exports[_0x46f4('0x8c')]=function(_0x45a7d1,_0x3a8e48,_0x1340e0){return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0x45a7d1[_0x46f4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3a8e48,null))['then'](function(_0x4328f9){if(_0x4328f9){return _0x4328f9[_0x46f4('0x8c')](_0x45a7d1[_0x46f4('0x3a')][_0x46f4('0x7e')])[_0x46f4('0x29')](function(){if(_[_0x46f4('0x93')](_0x45a7d1[_0x46f4('0x3a')][_0x46f4('0x7e')])){for(var _0xfd104d=0x0;_0xfd104d<_0x45a7d1[_0x46f4('0x3a')][_0x46f4('0x7e')][_0x46f4('0x4f')];_0xfd104d+=0x1){socket[_0x46f4('0x7c')](_0x46f4('0x8d'),{'UserId':Number(_0x45a7d1[_0x46f4('0x3a')][_0x46f4('0x7e')][_0xfd104d]),'VoiceQueueId':Number(_0x45a7d1['params']['id'])});}}else{socket[_0x46f4('0x7c')](_0x46f4('0x8d'),{'UserId':Number(_0x45a7d1[_0x46f4('0x3a')][_0x46f4('0x7e')]),'VoiceQueueId':Number(_0x45a7d1[_0x46f4('0x4b')]['id'])});}});}})[_0x46f4('0x29')](function(_0x122d95){return db[_0x46f4('0x77')][_0x46f4('0x2a')]({'where':{'VoiceQueueId':_0x45a7d1[_0x46f4('0x4b')]['id'],'UserId':_0x45a7d1['query'][_0x46f4('0x7e')]}})[_0x46f4('0x29')](function(){return _0x122d95;});})[_0x46f4('0x29')](respondWithStatusCode(_0x3a8e48,null))[_0x46f4('0x49')](handleError(_0x3a8e48,null));};exports[_0x46f4('0x94')]=function(_0x5e6b3e,_0x4d9644,_0x92aab6){var _0x247eca={};var _0x232b9c={};var _0x412342;var _0x22dfab;return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0x5e6b3e[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x4d9644,null))['then'](function(_0x87514c){if(_0x87514c){_0x412342=_0x87514c;_0x232b9c[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db['User'][_0x46f4('0x4d')]);_0x232b9c['query']=_['keys'](_0x5e6b3e['query']);_0x232b9c[_0x46f4('0x3b')]=_[_0x46f4('0x4e')](_0x232b9c[_0x46f4('0x39')],_0x232b9c['query']);_0x247eca[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x232b9c[_0x46f4('0x39')],qs[_0x46f4('0x3d')](_0x5e6b3e['query'][_0x46f4('0x3d')]));_0x247eca['attributes']=_0x247eca[_0x46f4('0x3c')][_0x46f4('0x4f')]?_0x247eca['attributes']:_0x232b9c['model'];_0x247eca[_0x46f4('0x3e')]=qs[_0x46f4('0x3f')](_0x5e6b3e[_0x46f4('0x3a')]['sort']);_0x247eca['where']=qs[_0x46f4('0x3b')](_[_0x46f4('0x41')](_0x5e6b3e['query'],_0x232b9c['filters']));if(_0x5e6b3e['query'][_0x46f4('0x44')]){_0x247eca[_0x46f4('0x40')]=_[_0x46f4('0x42')](_0x247eca[_0x46f4('0x40')],{'$or':_[_0x46f4('0x36')](_0x247eca['attributes'],function(_0x51cadf){var _0x5b5074={};_0x5b5074[_0x51cadf]={'$like':'%'+_0x5e6b3e['query'][_0x46f4('0x44')]+'%'};return _0x5b5074;})});}_0x247eca=_[_0x46f4('0x42')]({},_0x247eca,_0x5e6b3e[_0x46f4('0x45')]);return _0x412342[_0x46f4('0x94')](_0x247eca);}})[_0x46f4('0x29')](function(_0x271ae6){if(_0x271ae6){_0x22dfab=_0x271ae6['length'];if(!_0x5e6b3e[_0x46f4('0x3a')][_0x46f4('0x62')](_0x46f4('0x63'))){_0x247eca[_0x46f4('0x1f')]=qs[_0x46f4('0x1f')](_0x5e6b3e[_0x46f4('0x3a')]['limit']);_0x247eca[_0x46f4('0x1e')]=qs[_0x46f4('0x1e')](_0x5e6b3e[_0x46f4('0x3a')][_0x46f4('0x1e')]);}return _0x412342[_0x46f4('0x94')](_0x247eca);}})['then'](function(_0x2a6c74){if(_0x2a6c74){return _0x2a6c74?{'count':_0x22dfab,'rows':_0x2a6c74}:null;}})[_0x46f4('0x29')](respondWithResult(_0x4d9644,null))[_0x46f4('0x49')](handleError(_0x4d9644,null));};exports['getMembers']=function(_0x953370,_0x3c9d0e,_0x266c00){var _0x500634={};var _0x1bb92c={};var _0x41817b;var _0x1238c5;return db[_0x46f4('0x37')]['findOne']({'where':{'id':_0x953370[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x3c9d0e,null))[_0x46f4('0x29')](function(_0x27951c){if(_0x27951c){_0x41817b=_0x27951c;_0x1bb92c['model']=_['keys'](db[_0x46f4('0x77')]['rawAttributes']);_0x1bb92c[_0x46f4('0x3a')]=_[_0x46f4('0x4c')](_0x953370[_0x46f4('0x3a')]);_0x1bb92c[_0x46f4('0x3b')]=_[_0x46f4('0x4e')](_0x1bb92c['model'],_0x1bb92c[_0x46f4('0x3a')]);_0x500634[_0x46f4('0x3c')]=_['intersection'](_0x1bb92c[_0x46f4('0x39')],qs['fields'](_0x953370[_0x46f4('0x3a')]['fields']));_0x500634['attributes']=_0x500634[_0x46f4('0x3c')][_0x46f4('0x4f')]?_0x500634[_0x46f4('0x3c')]:_0x1bb92c[_0x46f4('0x39')];_0x500634['order']=qs[_0x46f4('0x3f')](_0x953370['query']['sort']);_0x500634['where']=qs['filters'](_[_0x46f4('0x41')](_0x953370[_0x46f4('0x3a')],_0x1bb92c['filters']));if(_0x953370[_0x46f4('0x3a')][_0x46f4('0x44')]){_0x500634['where']=_[_0x46f4('0x42')](_0x500634['where'],{'$or':_[_0x46f4('0x36')](_0x500634[_0x46f4('0x3c')],function(_0x3cf592){var _0x548fdb={};_0x548fdb[_0x3cf592]={'$like':'%'+_0x953370['query'][_0x46f4('0x44')]+'%'};return _0x548fdb;})});}_0x500634=_[_0x46f4('0x42')]({},_0x500634,_0x953370[_0x46f4('0x45')]);return _0x41817b[_0x46f4('0x95')](_0x500634);}})[_0x46f4('0x29')](function(_0x2481ed){if(_0x2481ed){_0x1238c5=_0x2481ed[_0x46f4('0x4f')];if(!_0x953370[_0x46f4('0x3a')][_0x46f4('0x62')](_0x46f4('0x63'))){_0x500634[_0x46f4('0x1f')]=qs['limit'](_0x953370['query'][_0x46f4('0x1f')]);_0x500634[_0x46f4('0x1e')]=qs[_0x46f4('0x1e')](_0x953370['query'][_0x46f4('0x1e')]);}return _0x41817b[_0x46f4('0x95')](_0x500634);}})['then'](function(_0x3cafa6){return _0x3cafa6?{'count':_0x1238c5,'rows':_0x3cafa6}:null;})['then'](respondWithResult(_0x3c9d0e,null))['catch'](handleError(_0x3c9d0e,null));};exports['getLists']=function(_0x321026,_0x2c273a,_0x242f56){var _0x7ba995={};var _0x1dbfdf={};var _0x5dd4bc;var _0xae878e;return db[_0x46f4('0x37')][_0x46f4('0x61')]({'where':{'id':_0x321026[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x2c273a,null))['then'](function(_0x527f57){if(_0x527f57){_0x5dd4bc=_0x527f57;_0x1dbfdf[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db['CmList']['rawAttributes']);_0x1dbfdf[_0x46f4('0x3a')]=_['keys'](_0x321026[_0x46f4('0x3a')]);_0x1dbfdf['filters']=_[_0x46f4('0x4e')](_0x1dbfdf[_0x46f4('0x39')],_0x1dbfdf[_0x46f4('0x3a')]);_0x7ba995[_0x46f4('0x3c')]=_[_0x46f4('0x4e')](_0x1dbfdf[_0x46f4('0x39')],qs['fields'](_0x321026[_0x46f4('0x3a')]['fields']));_0x7ba995[_0x46f4('0x3c')]=_0x7ba995[_0x46f4('0x3c')][_0x46f4('0x4f')]?_0x7ba995[_0x46f4('0x3c')]:_0x1dbfdf['model'];_0x7ba995[_0x46f4('0x3e')]=qs[_0x46f4('0x3f')](_0x321026[_0x46f4('0x3a')][_0x46f4('0x3f')]);_0x7ba995[_0x46f4('0x40')]=qs[_0x46f4('0x3b')](_['pick'](_0x321026[_0x46f4('0x3a')],_0x1dbfdf['filters']));if(_0x321026[_0x46f4('0x3a')][_0x46f4('0x44')]){_0x7ba995[_0x46f4('0x40')]=_[_0x46f4('0x42')](_0x7ba995[_0x46f4('0x40')],{'$or':_[_0x46f4('0x36')](_0x7ba995['attributes'],function(_0x339ed6){var _0x481f74={};_0x481f74[_0x339ed6]={'$like':'%'+_0x321026['query'][_0x46f4('0x44')]+'%'};return _0x481f74;})});}_0x7ba995=_[_0x46f4('0x42')]({},_0x7ba995,_0x321026[_0x46f4('0x45')]);return _0x5dd4bc[_0x46f4('0x96')](_0x7ba995);}})['then'](function(_0x498419){if(_0x498419){_0xae878e=_0x498419[_0x46f4('0x4f')];if(!_0x321026[_0x46f4('0x3a')][_0x46f4('0x62')]('nolimit')){_0x7ba995[_0x46f4('0x1f')]=qs[_0x46f4('0x1f')](_0x321026[_0x46f4('0x3a')]['limit']);_0x7ba995[_0x46f4('0x1e')]=qs[_0x46f4('0x1e')](_0x321026[_0x46f4('0x3a')][_0x46f4('0x1e')]);}return _0x5dd4bc[_0x46f4('0x96')](_0x7ba995);}})[_0x46f4('0x29')](function(_0x2b7c2e){if(_0x2b7c2e){return _0x2b7c2e?{'count':_0xae878e,'rows':_0x2b7c2e}:null;}})[_0x46f4('0x29')](respondWithResult(_0x2c273a,null))['catch'](handleError(_0x2c273a,null));};exports['addLists']=function(_0x8799e8,_0x3fadcb,_0x5eb13f){var _0x411936=moment()[_0x46f4('0x79')](_0x46f4('0x97'));var _0x4ca171,_0x5b2d1f;return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0x8799e8[_0x46f4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3fadcb,null))[_0x46f4('0x29')](function(_0x1b9a2f){if(_0x1b9a2f){_0x5b2d1f=_0x1b9a2f;return _0x1b9a2f[_0x46f4('0x98')](_0x8799e8['body'][_0x46f4('0x7e')],_[_0x46f4('0x5d')](_0x8799e8[_0x46f4('0x51')],[_0x46f4('0x7e'),'id'])||{});}return null;})['spread'](function(_0x217b1e){var _0x141d0b;_0x4ca171=_0x217b1e||[];var _0x15f13c=[];if(_0x217b1e){for(var _0x2f6599=0x0;_0x2f6599<_0x217b1e[_0x46f4('0x4f')];_0x2f6599+=0x1){var _0x3673ca=_0x217b1e[_0x2f6599][_0x46f4('0x2b')]({'plain':!![]});_0x5b2d1f[_0x46f4('0x99')]=_0x8799e8[_0x46f4('0x51')][_0x46f4('0x99')]?_0x8799e8[_0x46f4('0x51')][_0x46f4('0x99')]:_0x5b2d1f[_0x46f4('0x99')];switch(_0x5b2d1f[_0x46f4('0x99')]){case _0x46f4('0x9a'):_0x141d0b=squel['insert']()[_0x46f4('0x9b')](_0x46f4('0x9c'))[_0x46f4('0x9d')]([_0x46f4('0x9e'),_0x46f4('0x9f'),'ContactId',_0x46f4('0xa0'),_0x46f4('0x64'),'createdAt','updatedAt'],squel[_0x46f4('0x80')]()['field']('phone',_0x46f4('0x9e'))[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x9f'))[_0x46f4('0x81')]('id',_0x46f4('0xa1'))[_0x46f4('0x81')](_0x3673ca[_0x46f4('0xa2')][_0x46f4('0xa3')](),_0x46f4('0xa0'))[_0x46f4('0x81')](_0x8799e8[_0x46f4('0x4b')]['id']['toString'](),_0x46f4('0x64'))[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x5e'))[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x5f'))['from']('cm_contacts')[_0x46f4('0x40')]('deletedAt\x20IS\x20NULL')[_0x46f4('0x40')]('ListId\x20=\x20?',_0x3673ca['CmListId'][_0x46f4('0xa3')]())[_0x46f4('0x40')](_0x46f4('0xa4'))[_0x46f4('0x40')](_0x46f4('0xa5'),squel[_0x46f4('0x80')]()[_0x46f4('0x81')](_0x46f4('0xa6'))['from'](_0x46f4('0xa7'))['where'](_0x46f4('0xa8'),_0x8799e8['params']['id'][_0x46f4('0xa3')]()))['where'](_0x46f4('0xa5'),squel['select']()[_0x46f4('0x81')](_0x46f4('0xa9'))[_0x46f4('0x83')](_0x46f4('0x9c'))['where'](_0x46f4('0xa8'),_0x8799e8[_0x46f4('0x4b')]['id']['toString']())))[_0x46f4('0xa3')]();break;case'onlyIfOpen':_0x141d0b=squel['insert']()[_0x46f4('0x9b')](_0x46f4('0x9c'))[_0x46f4('0x9d')]([_0x46f4('0x9e'),'scheduledAt','ContactId',_0x46f4('0xa0'),_0x46f4('0x64'),'createdAt',_0x46f4('0x5f')],squel[_0x46f4('0x80')]()[_0x46f4('0x81')](_0x46f4('0x9e'),_0x46f4('0x9e'))['field']('\x27'+_0x411936+'\x27',_0x46f4('0x9f'))[_0x46f4('0x81')]('id',_0x46f4('0xa1'))[_0x46f4('0x81')](_0x3673ca[_0x46f4('0xa2')][_0x46f4('0xa3')](),_0x46f4('0xa0'))[_0x46f4('0x81')](_0x8799e8[_0x46f4('0x4b')]['id']['toString'](),'VoiceQueueId')[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x5e'))[_0x46f4('0x81')]('\x27'+_0x411936+'\x27','updatedAt')[_0x46f4('0x83')](_0x46f4('0xaa'))[_0x46f4('0x40')]('deletedAt\x20IS\x20NULL')[_0x46f4('0x40')](_0x46f4('0xab'),_0x3673ca[_0x46f4('0xa2')][_0x46f4('0xa3')]())[_0x46f4('0x40')](_0x46f4('0xa4'))[_0x46f4('0x40')](_0x46f4('0xa5'),squel[_0x46f4('0x80')]()['field'](_0x46f4('0xa9'))[_0x46f4('0x83')](_0x46f4('0x9c'))[_0x46f4('0x40')](_0x46f4('0xa8'),_0x8799e8[_0x46f4('0x4b')]['id'][_0x46f4('0xa3')]())))['toString']();break;default:_0x141d0b=squel['insert']()[_0x46f4('0x9b')](_0x46f4('0x9c'))[_0x46f4('0x9d')]([_0x46f4('0x9e'),_0x46f4('0x9f'),_0x46f4('0xa1'),_0x46f4('0xa0'),'VoiceQueueId',_0x46f4('0x5e'),_0x46f4('0x5f')],squel[_0x46f4('0x80')]()[_0x46f4('0x81')](_0x46f4('0x9e'),'phone')[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x9f'))['field']('id','ContactId')[_0x46f4('0x81')](_0x3673ca[_0x46f4('0xa2')][_0x46f4('0xa3')](),'ListId')[_0x46f4('0x81')](_0x8799e8[_0x46f4('0x4b')]['id']['toString'](),_0x46f4('0x64'))[_0x46f4('0x81')]('\x27'+_0x411936+'\x27','createdAt')[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x5f'))[_0x46f4('0x83')](_0x46f4('0xaa'))[_0x46f4('0x40')](_0x46f4('0xac'))['where']('ListId\x20=\x20?',_0x3673ca[_0x46f4('0xa2')][_0x46f4('0xa3')]())[_0x46f4('0x40')](_0x46f4('0xa4')))[_0x46f4('0xa3')]();}_0x15f13c[_0x46f4('0x91')](db[_0x46f4('0x87')][_0x46f4('0x3a')](_0x141d0b));}return BPromise[_0x46f4('0x92')](_0x15f13c);}})[_0x46f4('0x29')](function(){var _0x35df03=[];var _0x470b31=squel[_0x46f4('0xad')]()[_0x46f4('0x9b')](_0x46f4('0xae'))[_0x46f4('0x9d')]([_0x46f4('0xaf'),_0x46f4('0x9e'),_0x46f4('0xb0'),_0x46f4('0x5e'),'updatedAt'],squel[_0x46f4('0x80')]()[_0x46f4('0x81')](_0x46f4('0xb1'))[_0x46f4('0x81')]('ci.item')[_0x46f4('0x81')](_0x46f4('0xb2'))['field']('\x27'+_0x411936+'\x27',_0x46f4('0x5e'))[_0x46f4('0x81')]('\x27'+_0x411936+'\x27',_0x46f4('0x5f'))['from'](_0x46f4('0xb3'),'ci')[_0x46f4('0xb4')](_0x46f4('0x9c'),'h',_0x46f4('0xb5'))[_0x46f4('0x40')]('h.scheduledat=?',_0x411936)[_0x46f4('0x40')]('ci.ItemClass=?',_0x46f4('0xb6')))[_0x46f4('0xa3')]();_0x35df03['push'](db[_0x46f4('0x87')][_0x46f4('0x3a')](_0x470b31));return BPromise[_0x46f4('0x92')](_0x35df03);})[_0x46f4('0x29')](function(){return _0x4ca171;})[_0x46f4('0x29')](respondWithResult(_0x3fadcb,null))['catch'](handleError(_0x3fadcb,null));};exports[_0x46f4('0xb7')]=function(_0x4c95d,_0x5a6f70,_0x4f77e4){return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0x4c95d[_0x46f4('0x4b')]['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x5a6f70,null))['then'](function(_0x329e85){if(_0x329e85){return _0x329e85[_0x46f4('0xb7')](_0x4c95d[_0x46f4('0x3a')][_0x46f4('0x7e')]);}})['then'](function(_0x253c9f){if(_0x253c9f){return db['CmHopper']['destroy']({'where':{'ListId':_0x4c95d[_0x46f4('0x3a')][_0x46f4('0x7e')],'VoiceQueueId':_0x4c95d[_0x46f4('0x4b')]['id']}})['then'](function(){return _0x253c9f;});}})[_0x46f4('0x29')](respondWithStatusCode(_0x5a6f70,null))[_0x46f4('0x49')](handleError(_0x5a6f70,null));};exports[_0x46f4('0xb8')]=function(_0xe50797,_0x3fb0d6,_0x561ea6){var _0x3135d5={};var _0x40bd8c={};var _0x4c2054;var _0x3f13f9;return db[_0x46f4('0x37')]['findOne']({'where':{'id':_0xe50797['params']['id']}})['then'](handleEntityNotFound(_0x3fb0d6,null))[_0x46f4('0x29')](function(_0x14dfa1){if(_0x14dfa1){_0x4c2054=_0x14dfa1;_0x40bd8c[_0x46f4('0x39')]=_[_0x46f4('0x4c')](db[_0x46f4('0xb9')][_0x46f4('0x4d')]);_0x40bd8c['query']=_[_0x46f4('0x4c')](_0xe50797['query']);_0x40bd8c[_0x46f4('0x3b')]=_[_0x46f4('0x4e')](_0x40bd8c['model'],_0x40bd8c[_0x46f4('0x3a')]);_0x3135d5['attributes']=_[_0x46f4('0x4e')](_0x40bd8c[_0x46f4('0x39')],qs['fields'](_0xe50797['query'][_0x46f4('0x3d')]));_0x3135d5[_0x46f4('0x3c')]=_0x3135d5[_0x46f4('0x3c')]['length']?_0x3135d5[_0x46f4('0x3c')]:_0x40bd8c[_0x46f4('0x39')];_0x3135d5['order']=qs['sort'](_0xe50797['query'][_0x46f4('0x3f')]);_0x3135d5[_0x46f4('0x40')]=qs['filters'](_[_0x46f4('0x41')](_0xe50797[_0x46f4('0x3a')],_0x40bd8c[_0x46f4('0x3b')]));if(_0xe50797[_0x46f4('0x3a')]['filter']){_0x3135d5['where']=_[_0x46f4('0x42')](_0x3135d5[_0x46f4('0x40')],{'$or':_['map'](_0x3135d5[_0x46f4('0x3c')],function(_0x4f5250){var _0x4ff46f={};_0x4ff46f[_0x4f5250]={'$like':'%'+_0xe50797[_0x46f4('0x3a')][_0x46f4('0x44')]+'%'};return _0x4ff46f;})});}_0x3135d5=_['merge']({},_0x3135d5,_0xe50797['options']);return _0x4c2054[_0x46f4('0xb8')](_0x3135d5);}})[_0x46f4('0x29')](function(_0x551ca7){if(_0x551ca7){_0x3f13f9=_0x551ca7['length'];if(!_0xe50797[_0x46f4('0x3a')][_0x46f4('0x62')](_0x46f4('0x63'))){_0x3135d5[_0x46f4('0x1f')]=qs['limit'](_0xe50797['query']['limit']);_0x3135d5[_0x46f4('0x1e')]=qs['offset'](_0xe50797[_0x46f4('0x3a')][_0x46f4('0x1e')]);}return _0x4c2054[_0x46f4('0xb8')](_0x3135d5);}})['then'](function(_0x127a97){if(_0x127a97){return _0x127a97?{'count':_0x3f13f9,'rows':_0x127a97}:null;}})[_0x46f4('0x29')](respondWithResult(_0x3fb0d6,null))[_0x46f4('0x49')](handleError(_0x3fb0d6,null));};exports['addBlackLists']=function(_0x232cf6,_0x462f25,_0x22ebb4){var _0x57a6ed,_0x6bb502;return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0x232cf6['params']['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x462f25,null))[_0x46f4('0x29')](function(_0xf8d8d){if(_0xf8d8d){_0x6bb502=_0xf8d8d;return _0xf8d8d[_0x46f4('0xba')](_0x232cf6[_0x46f4('0x51')][_0x46f4('0x7e')],_[_0x46f4('0x5d')](_0x232cf6[_0x46f4('0x51')],[_0x46f4('0x7e'),'id'])||{});}return null;})[_0x46f4('0xbb')](function(_0x2a0096){var _0x2608a4;_0x57a6ed=_0x2a0096||[];var _0x406269=[];if(_0x2a0096){for(var _0x3d63ad=0x0;_0x3d63ad<_0x2a0096['length'];_0x3d63ad+=0x1){var _0x2525a2=_0x2a0096[_0x3d63ad][_0x46f4('0x2b')]({'plain':!![]});_0x2608a4=squel[_0x46f4('0xad')]()[_0x46f4('0x9b')](_0x46f4('0xbc'))[_0x46f4('0x9d')](['phone','ContactId',_0x46f4('0xa0'),_0x46f4('0x64'),_0x46f4('0x5e'),_0x46f4('0x5f')],squel['select']()[_0x46f4('0x81')](_0x46f4('0x9e'),_0x46f4('0x9e'))['field']('id','ContactId')[_0x46f4('0x81')](_0x2525a2[_0x46f4('0xa2')][_0x46f4('0xa3')](),_0x46f4('0xa0'))[_0x46f4('0x81')](_0x232cf6[_0x46f4('0x4b')]['id']['toString'](),_0x46f4('0x64'))['field']('NOW()',_0x46f4('0x5e'))[_0x46f4('0x81')](_0x46f4('0xbd'),_0x46f4('0x5f'))['from'](_0x46f4('0xaa'))[_0x46f4('0x40')](_0x46f4('0xac'))[_0x46f4('0x40')](_0x46f4('0xab'),_0x2525a2[_0x46f4('0xa2')][_0x46f4('0xa3')]())[_0x46f4('0x40')](_0x46f4('0xa4')))[_0x46f4('0xa3')]();_0x406269['push'](db[_0x46f4('0x87')][_0x46f4('0x3a')](_0x2608a4));}return BPromise['all'](_0x406269);}})[_0x46f4('0x29')](function(){return _0x57a6ed;})[_0x46f4('0x29')](respondWithResult(_0x462f25,null))['catch'](handleError(_0x462f25,null));};exports[_0x46f4('0xbe')]=function(_0x176f88,_0x232fad,_0x4f5871){return db[_0x46f4('0x37')][_0x46f4('0x50')]({'where':{'id':_0x176f88['params']['id']}})[_0x46f4('0x29')](handleEntityNotFound(_0x232fad,null))[_0x46f4('0x29')](function(_0x15bce9){if(_0x15bce9){return _0x15bce9['removeBlackLists'](_0x176f88[_0x46f4('0x3a')][_0x46f4('0x7e')]);}})[_0x46f4('0x29')](function(_0x49359c){if(_0x49359c){return db[_0x46f4('0x6c')]['destroy']({'where':{'ListId':_0x176f88[_0x46f4('0x3a')][_0x46f4('0x7e')],'VoiceQueueId':_0x176f88[_0x46f4('0x4b')]['id']}})['then'](function(){return _0x49359c;});}})['then'](respondWithStatusCode(_0x232fad,null))[_0x46f4('0x49')](handleError(_0x232fad,null));}; \ No newline at end of file diff --git a/server/api/voiceQueue/voiceQueue.events.js b/server/api/voiceQueue/voiceQueue.events.js new file mode 100644 index 0000000..5719fad --- /dev/null +++ b/server/api/voiceQueue/voiceQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0360=['exports','events','../../mysqldb','VoiceQueue','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0x47ea2b,_0x23ec13){var _0x214d98=function(_0x1b4caa){while(--_0x1b4caa){_0x47ea2b['push'](_0x47ea2b['shift']());}};_0x214d98(++_0x23ec13);}(_0x0360,0x139));var _0x0036=function(_0x21bea9,_0x40d301){_0x21bea9=_0x21bea9-0x0;var _0x487aa3=_0x0360[_0x21bea9];return _0x487aa3;};'use strict';var EventEmitter=require(_0x0036('0x0'));var VoiceQueue=require(_0x0036('0x1'))['db'][_0x0036('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x0036('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x0036('0x4')};function emitEvent(_0x49a18d){return function(_0x5caa9b,_0x4a612f,_0x3c476c){VoiceQueueEvents[_0x0036('0x5')](_0x49a18d+':'+_0x5caa9b['id'],_0x5caa9b);VoiceQueueEvents[_0x0036('0x5')](_0x49a18d,_0x5caa9b);_0x3c476c(null);};}for(var e in events){if(events[_0x0036('0x6')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x0036('0x7')]=VoiceQueueEvents; \ No newline at end of file diff --git a/server/api/voiceQueue/voiceQueue.model.js b/server/api/voiceQueue/voiceQueue.model.js new file mode 100644 index 0000000..e48cf74 --- /dev/null +++ b/server/api/voiceQueue/voiceQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x5d0207,_0xee695a){var _0x440b63=function(_0x1eb40e){while(--_0x1eb40e){_0x5d0207['push'](_0x5d0207['shift']());}};_0x440b63(++_0xee695a);}(_0x70e0,0x17b));var _0x070e=function(_0x488b95,_0x40db71){_0x488b95=_0x488b95-0x0;var _0x41e742=_0x70e0[_0x488b95];return _0x41e742;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceQueue/voiceQueue.rpc.js b/server/api/voiceQueue/voiceQueue.rpc.js new file mode 100644 index 0000000..9332e07 --- /dev/null +++ b/server/api/voiceQueue/voiceQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4e5a=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','limit','include','model','attributes','map','find','ShowVoiceQueue','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x43a5ee,_0x12ef80){var _0x4dcb0b=function(_0x1dc776){while(--_0x1dc776){_0x43a5ee['push'](_0x43a5ee['shift']());}};_0x4dcb0b(++_0x12ef80);}(_0x4e5a,0x1e7));var _0xa4e5=function(_0x160814,_0x57b5c6){_0x160814=_0x160814-0x0;var _0x427a69=_0x4e5a[_0x160814];return _0x427a69;};'use strict';var _=require(_0xa4e5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa4e5('0x1'));var rs=require(_0xa4e5('0x2'));var fs=require('fs');var Redis=require(_0xa4e5('0x3'));var db=require(_0xa4e5('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa4e5('0x5'))(_0xa4e5('0x6'));var config=require(_0xa4e5('0x7'));var jayson=require(_0xa4e5('0x8'));var client=jayson['client'][_0xa4e5('0x9')]({'port':0x232a});config[_0xa4e5('0xa')]=_[_0xa4e5('0xb')](config[_0xa4e5('0xa')],{'host':_0xa4e5('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa4e5('0xa')]));require(_0xa4e5('0xd'))[_0xa4e5('0xe')](socket);function respondWithRpcPromise(_0x311e0a,_0x2bc7f2,_0x42ca60){return new BPromise(function(_0x3a2397,_0x13a10c){return client[_0xa4e5('0xf')](_0x311e0a,_0x42ca60)[_0xa4e5('0x10')](function(_0x48cd92){logger[_0xa4e5('0x11')](_0xa4e5('0x12'),_0x2bc7f2,_0xa4e5('0x13'));logger['debug'](_0xa4e5('0x14'),_0x2bc7f2,_0xa4e5('0x13'),JSON[_0xa4e5('0x15')](_0x48cd92));if(_0x48cd92['error']){if(_0x48cd92[_0xa4e5('0x16')][_0xa4e5('0x17')]===0x1f4){logger[_0xa4e5('0x16')](_0xa4e5('0x12'),_0x2bc7f2,_0x48cd92[_0xa4e5('0x16')][_0xa4e5('0x18')]);return _0x13a10c(_0x48cd92[_0xa4e5('0x16')]['message']);}logger[_0xa4e5('0x16')](_0xa4e5('0x12'),_0x2bc7f2,_0x48cd92[_0xa4e5('0x16')][_0xa4e5('0x18')]);return _0x3a2397(_0x48cd92[_0xa4e5('0x16')][_0xa4e5('0x18')]);}else{logger[_0xa4e5('0x11')](_0xa4e5('0x12'),_0x2bc7f2,'request\x20sent');_0x3a2397(_0x48cd92[_0xa4e5('0x19')][_0xa4e5('0x18')]);}})[_0xa4e5('0x1a')](function(_0x576138){logger[_0xa4e5('0x16')](_0xa4e5('0x12'),_0x2bc7f2,_0x576138);_0x13a10c(_0x576138);});});}exports[_0xa4e5('0x1b')]=function(_0x2041af){var _0x707c7=this;return new Promise(function(_0x4c30b2,_0x502478){return db[_0xa4e5('0x1c')][_0xa4e5('0x1d')]({'raw':_0x2041af[_0xa4e5('0x1e')]?_0x2041af['options'][_0xa4e5('0x1f')]===undefined?!![]:![]:!![],'where':_0x2041af['options']?_0x2041af[_0xa4e5('0x1e')][_0xa4e5('0x20')]||null:null,'attributes':_0x2041af[_0xa4e5('0x1e')]?_0x2041af[_0xa4e5('0x1e')]['attributes']||null:null,'limit':_0x2041af[_0xa4e5('0x1e')]?_0x2041af[_0xa4e5('0x1e')][_0xa4e5('0x21')]||null:null,'include':_0x2041af[_0xa4e5('0x1e')]?_0x2041af[_0xa4e5('0x1e')][_0xa4e5('0x22')]?_['map'](_0x2041af[_0xa4e5('0x1e')][_0xa4e5('0x22')],function(_0x9b1e69){return{'model':db[_0x9b1e69[_0xa4e5('0x23')]],'as':_0x9b1e69['as'],'attributes':_0x9b1e69[_0xa4e5('0x24')],'include':_0x9b1e69[_0xa4e5('0x22')]?_[_0xa4e5('0x25')](_0x9b1e69[_0xa4e5('0x22')],function(_0x4d4719){return{'model':db[_0x4d4719[_0xa4e5('0x23')]],'as':_0x4d4719['as'],'attributes':_0x4d4719[_0xa4e5('0x24')],'include':_0x4d4719[_0xa4e5('0x22')]?_[_0xa4e5('0x25')](_0x4d4719[_0xa4e5('0x22')],function(_0x4ce3e7){return{'model':db[_0x4ce3e7[_0xa4e5('0x23')]],'as':_0x4ce3e7['as'],'attributes':_0x4ce3e7[_0xa4e5('0x24')]};}):[]};}):[]};}):[]:[]})[_0xa4e5('0x10')](function(_0x213308){logger[_0xa4e5('0x11')](_0xa4e5('0x1b'),_0x2041af);logger['debug'](_0xa4e5('0x1b'),_0x2041af,JSON[_0xa4e5('0x15')](_0x213308));_0x4c30b2(_0x213308);})[_0xa4e5('0x1a')](function(_0x28859a){logger[_0xa4e5('0x16')](_0xa4e5('0x1b'),_0x28859a[_0xa4e5('0x18')],_0x2041af);_0x502478(_0x707c7['error'](0x1f4,_0x28859a[_0xa4e5('0x18')]));});});};exports['ShowVoiceQueue']=function(_0x166074){var _0x30ab57=this;return new Promise(function(_0xe596d4,_0x51ab72){return db[_0xa4e5('0x1c')][_0xa4e5('0x26')]({'raw':_0x166074[_0xa4e5('0x1e')]?_0x166074[_0xa4e5('0x1e')][_0xa4e5('0x1f')]===undefined?!![]:![]:!![],'where':_0x166074[_0xa4e5('0x1e')]?_0x166074[_0xa4e5('0x1e')][_0xa4e5('0x20')]||null:null,'attributes':_0x166074[_0xa4e5('0x1e')]?_0x166074[_0xa4e5('0x1e')][_0xa4e5('0x24')]||null:null,'include':_0x166074['options']?_0x166074['options']['include']?_[_0xa4e5('0x25')](_0x166074[_0xa4e5('0x1e')]['include'],function(_0x2c823a){return{'model':db[_0x2c823a['model']],'as':_0x2c823a['as'],'attributes':_0x2c823a[_0xa4e5('0x24')],'include':_0x2c823a[_0xa4e5('0x22')]?_[_0xa4e5('0x25')](_0x2c823a['include'],function(_0x313156){return{'model':db[_0x313156[_0xa4e5('0x23')]],'as':_0x313156['as'],'attributes':_0x313156['attributes'],'include':_0x313156['include']?_[_0xa4e5('0x25')](_0x313156[_0xa4e5('0x22')],function(_0x56aadc){return{'model':db[_0x56aadc[_0xa4e5('0x23')]],'as':_0x56aadc['as'],'attributes':_0x56aadc[_0xa4e5('0x24')]};}):[]};}):[]};}):[]:[]})[_0xa4e5('0x10')](function(_0x220b25){logger[_0xa4e5('0x11')](_0xa4e5('0x27'),_0x166074);logger[_0xa4e5('0x28')]('ShowVoiceQueue',_0x166074,JSON[_0xa4e5('0x15')](_0x220b25));_0xe596d4(_0x220b25);})[_0xa4e5('0x1a')](function(_0x10cca8){logger[_0xa4e5('0x16')](_0xa4e5('0x27'),_0x10cca8[_0xa4e5('0x18')],_0x166074);_0x51ab72(_0x30ab57[_0xa4e5('0x16')](0x1f4,_0x10cca8[_0xa4e5('0x18')]));});});}; \ No newline at end of file diff --git a/server/api/voiceQueue/voiceQueue.socket.js b/server/api/voiceQueue/voiceQueue.socket.js new file mode 100644 index 0000000..2da78e9 --- /dev/null +++ b/server/api/voiceQueue/voiceQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4c4d=['save','remove','emit','removeListener','register','length','voiceQueue:'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x4c4d,0x1e3));var _0xd4c4=function(_0x162404,_0x3903c7){_0x162404=_0x162404-0x0;var _0x1d7869=_0x4c4d[_0x162404];return _0x1d7869;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0xd4c4('0x0'),_0xd4c4('0x1'),'update'];function createListener(_0x29cba5,_0x3b3462){return function(_0x362f17){_0x3b3462[_0xd4c4('0x2')](_0x29cba5,_0x362f17);};}function removeListener(_0x248992,_0x1fc186){return function(){VoiceQueueEvents[_0xd4c4('0x3')](_0x248992,_0x1fc186);};}exports[_0xd4c4('0x4')]=function(_0xd9811e){for(var _0x202ff1=0x0,_0x5d3325=events[_0xd4c4('0x5')];_0x202ff1<_0x5d3325;_0x202ff1++){var _0x25c82b=events[_0x202ff1];var _0x2ce6fd=createListener(_0xd4c4('0x6')+_0x25c82b,_0xd9811e);VoiceQueueEvents['on'](_0x25c82b,_0x2ce6fd);}}; \ No newline at end of file diff --git a/server/api/voiceQueueReport/index.js b/server/api/voiceQueueReport/index.js new file mode 100644 index 0000000..aab729e --- /dev/null +++ b/server/api/voiceQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2529=['/describe','describe','/index','get','/:id','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','isAuthenticated','index'];(function(_0x4d5e1a,_0x267064){var _0x4b1085=function(_0x1dea8c){while(--_0x1dea8c){_0x4d5e1a['push'](_0x4d5e1a['shift']());}};_0x4b1085(++_0x267064);}(_0x2529,0x98));var _0x9252=function(_0x1bfc52,_0x3ad80a){_0x1bfc52=_0x1bfc52-0x0;var _0xf287d8=_0x2529[_0x1bfc52];return _0xf287d8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9252('0x0'));var timeout=require(_0x9252('0x1'));var express=require(_0x9252('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9252('0x3'));var interaction=require(_0x9252('0x4'));var config=require('../../config/environment');var controller=require(_0x9252('0x5'));router['get']('/',auth[_0x9252('0x6')](),controller[_0x9252('0x7')]);router['get'](_0x9252('0x8'),auth[_0x9252('0x6')](),controller[_0x9252('0x9')]);router['get'](_0x9252('0xa'),auth[_0x9252('0x6')](),controller['getVoiceQueuesReport']);router[_0x9252('0xb')](_0x9252('0xc'),auth[_0x9252('0x6')](),controller['show']);router[_0x9252('0xd')]('/',auth[_0x9252('0x6')](),controller[_0x9252('0xe')]);router[_0x9252('0xf')]('/:id',auth[_0x9252('0x6')](),controller[_0x9252('0x10')]);router[_0x9252('0x11')]('/:id',auth[_0x9252('0x6')](),controller[_0x9252('0x12')]);module[_0x9252('0x13')]=router; \ No newline at end of file diff --git a/server/api/voiceQueueReport/voiceQueueReport.attributes.js b/server/api/voiceQueueReport/voiceQueueReport.attributes.js new file mode 100644 index 0000000..a61de86 --- /dev/null +++ b/server/api/voiceQueueReport/voiceQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8543=['exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','queuecallerleaveAt','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','moment'];(function(_0x3d5a58,_0x51c353){var _0x3b6ce4=function(_0x24c449){while(--_0x24c449){_0x3d5a58['push'](_0x3d5a58['shift']());}};_0x3b6ce4(++_0x51c353);}(_0x8543,0x10f));var _0x3854=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x8543[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3854('0x0'));module[_0x3854('0x1')]={'type':{'type':Sequelize[_0x3854('0x2')]},'uniqueid':{'type':Sequelize[_0x3854('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x3854('0x2')]},'queue':{'type':Sequelize[_0x3854('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x3854('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x3854('0x3')],'set':function(_0x5b85e5){var _0x3f9d0e=moment(_0x5b85e5);var _0x1a24c3=moment(this[_0x3854('0x4')](_0x3854('0x5')))[_0x3854('0x6')](_0x3854('0x7'));var _0x21b431=_0x3f9d0e[_0x3854('0x8')](_0x1a24c3,_0x3854('0x9'));this['setDataValue'](_0x3854('0xa'),_0x5b85e5);this[_0x3854('0xb')](_0x3854('0xc'),_0x21b431||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x3854('0xd')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x3854('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x3854('0xe')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x3854('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x3854('0x2')],'comment':_0x3854('0xf')},'originalposition':{'type':Sequelize[_0x3854('0xd')]},'channel':{'type':Sequelize[_0x3854('0x2')]},'connectedlinenum':{'type':Sequelize[_0x3854('0x2')]},'connectedlinename':{'type':Sequelize[_0x3854('0x2')]},'accountcode':{'type':Sequelize[_0x3854('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3854('0x2')]},'priority':{'type':Sequelize[_0x3854('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x3854('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x3854('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x3854('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x3854('0x2')],'comment':_0x3854('0x10')},'transferexten':{'type':Sequelize[_0x3854('0x2')]},'transferuniqueid':{'type':Sequelize[_0x3854('0x2')]},'disposition':{'type':Sequelize[_0x3854('0x2')]},'secondDisposition':{'type':Sequelize[_0x3854('0x2')]},'thirdDisposition':{'type':Sequelize[_0x3854('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x3854('0xd')],'defaultValue':0x0},'note':{'type':Sequelize[_0x3854('0x2')]}}; \ No newline at end of file diff --git a/server/api/voiceQueueReport/voiceQueueReport.controller.js b/server/api/voiceQueueReport/voiceQueueReport.controller.js new file mode 100644 index 0000000..fc22f73 --- /dev/null +++ b/server/api/voiceQueueReport/voiceQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x01fa=['redis','defaults','./voiceQueueReport.socket','register','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','update','then','destroy','error','name','index','VoiceQueueReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','show','params','length','find','create','body','catch','describe','getVoiceQueuesReport','include','rows','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','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x3d2949,_0x509812){var _0x49953f=function(_0x394418){while(--_0x394418){_0x3d2949['push'](_0x3d2949['shift']());}};_0x49953f(++_0x509812);}(_0x01fa,0x132));var _0xa01f=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0x01fa[_0x2cfb58];return _0xd99951;};'use strict';var emlformat=require(_0xa01f('0x0'));var rimraf=require(_0xa01f('0x1'));var zipdir=require(_0xa01f('0x2'));var jsonpatch=require(_0xa01f('0x3'));var rp=require(_0xa01f('0x4'));var moment=require(_0xa01f('0x5'));var BPromise=require(_0xa01f('0x6'));var Mustache=require('mustache');var util=require(_0xa01f('0x7'));var path=require(_0xa01f('0x8'));var sox=require('sox');var csv=require(_0xa01f('0x9'));var ejs=require(_0xa01f('0xa'));var fs=require('fs');var fs_extra=require(_0xa01f('0xb'));var _=require(_0xa01f('0xc'));var squel=require(_0xa01f('0xd'));var crypto=require(_0xa01f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa01f('0xf'));var toCsv=require(_0xa01f('0x9'));var querystring=require(_0xa01f('0x10'));var Papa=require(_0xa01f('0x11'));var Redis=require('ioredis');var authService=require(_0xa01f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa01f('0x13'));var logger=require(_0xa01f('0x14'))(_0xa01f('0x15'));var utils=require(_0xa01f('0x16'));var config=require(_0xa01f('0x17'));var licenseUtil=require(_0xa01f('0x18'));var db=require(_0xa01f('0x19'))['db'];config[_0xa01f('0x1a')]=_[_0xa01f('0x1b')](config[_0xa01f('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa01f('0x1a')]));require(_0xa01f('0x1c'))[_0xa01f('0x1d')](socket);function respondWithStatusCode(_0x54fae1,_0x3384d8){_0x3384d8=_0x3384d8||0xcc;return function(_0x4e47e9){if(_0x4e47e9){return _0x54fae1[_0xa01f('0x1e')](_0x3384d8);}return _0x54fae1['status'](_0x3384d8)[_0xa01f('0x1f')]();};}function respondWithResult(_0x32bf5e,_0xfc5bd4){_0xfc5bd4=_0xfc5bd4||0xc8;return function(_0x135f3b){if(_0x135f3b){return _0x32bf5e['status'](_0xfc5bd4)[_0xa01f('0x20')](_0x135f3b);}};}function respondWithFilteredResult(_0xaa0fa0,_0x5ddcc2){return function(_0x5c4fe1){if(_0x5c4fe1){var _0xa5339c=typeof _0x5ddcc2[_0xa01f('0x21')]===_0xa01f('0x22')&&typeof _0x5ddcc2[_0xa01f('0x23')]==='undefined';var _0x163793=_0x5c4fe1['count'];var _0x4006fc=_0xa5339c?0x0:_0x5ddcc2['offset'];var _0x507bd7=_0xa5339c?_0x5c4fe1[_0xa01f('0x24')]:_0x5ddcc2[_0xa01f('0x21')]+_0x5ddcc2['limit'];var _0x3eb7ba;if(_0x507bd7>=_0x163793){_0x507bd7=_0x163793;_0x3eb7ba=0xc8;}else{_0x3eb7ba=0xce;}_0xaa0fa0[_0xa01f('0x25')](_0x3eb7ba);return _0xaa0fa0[_0xa01f('0x26')](_0xa01f('0x27'),_0x4006fc+'-'+_0x507bd7+'/'+_0x163793)['json'](_0x5c4fe1);}return null;};}function patchUpdates(_0x5b9ce8){return function(_0x408687){try{jsonpatch[_0xa01f('0x28')](_0x408687,_0x5b9ce8,!![]);}catch(_0x2fc91d){return BPromise[_0xa01f('0x29')](_0x2fc91d);}return _0x408687['save']();};}function saveUpdates(_0x4898ea,_0x5acb9a){return function(_0x10a454){if(_0x10a454){return _0x10a454[_0xa01f('0x2a')](_0x4898ea)[_0xa01f('0x2b')](function(_0x414b17){return _0x414b17;});}return null;};}function removeEntity(_0xb6b17e,_0x30ee11){return function(_0x543d61){if(_0x543d61){return _0x543d61[_0xa01f('0x2c')]()['then'](function(){_0xb6b17e[_0xa01f('0x25')](0xcc)[_0xa01f('0x1f')]();});}};}function handleEntityNotFound(_0x39048c,_0x4d87ad){return function(_0x217842){if(!_0x217842){_0x39048c[_0xa01f('0x1e')](0x194);}return _0x217842;};}function handleError(_0x71f9f5,_0x4b2616){_0x4b2616=_0x4b2616||0x1f4;return function(_0x3e7ccd){logger[_0xa01f('0x2d')](_0x3e7ccd['stack']);if(_0x3e7ccd[_0xa01f('0x2e')]){delete _0x3e7ccd[_0xa01f('0x2e')];}_0x71f9f5[_0xa01f('0x25')](_0x4b2616)['send'](_0x3e7ccd);};}exports[_0xa01f('0x2f')]=function(_0x117585,_0x444dc3){var _0x2f2bb4={},_0x412a4e={},_0x5d3146={'count':0x0,'rows':[]};var _0x433e7f=_['map'](db[_0xa01f('0x30')][_0xa01f('0x31')],function(_0xc32904){return{'name':_0xc32904['fieldName'],'type':_0xc32904[_0xa01f('0x32')][_0xa01f('0x33')]};});_0x412a4e[_0xa01f('0x34')]=_[_0xa01f('0x35')](_0x433e7f,'name');_0x412a4e[_0xa01f('0x36')]=_[_0xa01f('0x37')](_0x117585[_0xa01f('0x36')]);_0x412a4e[_0xa01f('0x38')]=_[_0xa01f('0x39')](_0x412a4e[_0xa01f('0x34')],_0x412a4e[_0xa01f('0x36')]);_0x2f2bb4[_0xa01f('0x3a')]=_[_0xa01f('0x39')](_0x412a4e['model'],qs[_0xa01f('0x3b')](_0x117585[_0xa01f('0x36')][_0xa01f('0x3b')]));_0x2f2bb4['attributes']=_0x2f2bb4[_0xa01f('0x3a')]['length']?_0x2f2bb4[_0xa01f('0x3a')]:_0x412a4e[_0xa01f('0x34')];if(!_0x117585['query'][_0xa01f('0x3c')](_0xa01f('0x3d'))){_0x2f2bb4['limit']=qs['limit'](_0x117585[_0xa01f('0x36')][_0xa01f('0x23')]);_0x2f2bb4[_0xa01f('0x21')]=qs[_0xa01f('0x21')](_0x117585[_0xa01f('0x36')][_0xa01f('0x21')]);}_0x2f2bb4[_0xa01f('0x3e')]=qs[_0xa01f('0x3f')](_0x117585[_0xa01f('0x36')][_0xa01f('0x3f')]);_0x2f2bb4['where']=qs[_0xa01f('0x38')](_[_0xa01f('0x40')](_0x117585[_0xa01f('0x36')],_0x412a4e['filters']),_0x433e7f);if(_0x117585[_0xa01f('0x36')][_0xa01f('0x41')]){_0x2f2bb4[_0xa01f('0x42')]=_[_0xa01f('0x43')](_0x2f2bb4[_0xa01f('0x42')],{'$or':_[_0xa01f('0x35')](_0x433e7f,function(_0x20ae8f){if(_0x20ae8f[_0xa01f('0x32')]!==_0xa01f('0x44')){var _0x1c03e4={};_0x1c03e4[_0x20ae8f[_0xa01f('0x2e')]]={'$like':'%'+_0x117585[_0xa01f('0x36')][_0xa01f('0x41')]+'%'};return _0x1c03e4;}})});}_0x2f2bb4=_[_0xa01f('0x43')]({},_0x2f2bb4,_0x117585[_0xa01f('0x45')]);var _0x1b43de={'where':_0x2f2bb4[_0xa01f('0x42')]};return db[_0xa01f('0x30')][_0xa01f('0x24')](_0x1b43de)[_0xa01f('0x2b')](function(_0x248e6f){_0x5d3146[_0xa01f('0x24')]=_0x248e6f;if(_0x117585[_0xa01f('0x36')][_0xa01f('0x46')]){_0x2f2bb4['include']=[{'all':!![]}];}return db['VoiceQueueReport'][_0xa01f('0x47')](_0x2f2bb4);})['then'](function(_0x10dc35){_0x5d3146['rows']=_0x10dc35;return _0x5d3146;})[_0xa01f('0x2b')](respondWithFilteredResult(_0x444dc3,_0x2f2bb4))['catch'](handleError(_0x444dc3,null));};exports[_0xa01f('0x48')]=function(_0x3d490c,_0x4a5e29){var _0x4dfc36={'raw':![],'where':{'id':_0x3d490c[_0xa01f('0x49')]['id']}},_0x1bd6b8={};_0x1bd6b8[_0xa01f('0x34')]=_[_0xa01f('0x37')](db[_0xa01f('0x30')][_0xa01f('0x31')]);_0x1bd6b8[_0xa01f('0x36')]=_[_0xa01f('0x37')](_0x3d490c[_0xa01f('0x36')]);_0x1bd6b8[_0xa01f('0x38')]=_[_0xa01f('0x39')](_0x1bd6b8[_0xa01f('0x34')],_0x1bd6b8[_0xa01f('0x36')]);_0x4dfc36[_0xa01f('0x3a')]=_[_0xa01f('0x39')](_0x1bd6b8[_0xa01f('0x34')],qs[_0xa01f('0x3b')](_0x3d490c[_0xa01f('0x36')]['fields']));_0x4dfc36[_0xa01f('0x3a')]=_0x4dfc36['attributes'][_0xa01f('0x4a')]?_0x4dfc36['attributes']:_0x1bd6b8[_0xa01f('0x34')];if(_0x3d490c[_0xa01f('0x36')][_0xa01f('0x46')]){_0x4dfc36['include']=[{'all':!![]}];}_0x4dfc36=_[_0xa01f('0x43')]({},_0x4dfc36,_0x3d490c[_0xa01f('0x45')]);return db[_0xa01f('0x30')][_0xa01f('0x4b')](_0x4dfc36)[_0xa01f('0x2b')](handleEntityNotFound(_0x4a5e29,null))[_0xa01f('0x2b')](respondWithResult(_0x4a5e29,null))['catch'](handleError(_0x4a5e29,null));};exports[_0xa01f('0x4c')]=function(_0x19b9b3,_0xbd5441){return db[_0xa01f('0x30')][_0xa01f('0x4c')](_0x19b9b3[_0xa01f('0x4d')],{})[_0xa01f('0x2b')](respondWithResult(_0xbd5441,0xc9))[_0xa01f('0x4e')](handleError(_0xbd5441,null));};exports['update']=function(_0x5d1a46,_0x473774){if(_0x5d1a46[_0xa01f('0x4d')]['id']){delete _0x5d1a46['body']['id'];}return db[_0xa01f('0x30')][_0xa01f('0x4b')]({'where':{'id':_0x5d1a46[_0xa01f('0x49')]['id']}})[_0xa01f('0x2b')](handleEntityNotFound(_0x473774,null))[_0xa01f('0x2b')](saveUpdates(_0x5d1a46[_0xa01f('0x4d')],null))['then'](respondWithResult(_0x473774,null))[_0xa01f('0x4e')](handleError(_0x473774,null));};exports['destroy']=function(_0x4a6c9d,_0x4f09a3){return db[_0xa01f('0x30')]['find']({'where':{'id':_0x4a6c9d[_0xa01f('0x49')]['id']}})[_0xa01f('0x2b')](handleEntityNotFound(_0x4f09a3,null))[_0xa01f('0x2b')](removeEntity(_0x4f09a3,null))['catch'](handleError(_0x4f09a3,null));};exports[_0xa01f('0x4f')]=function(_0x386a77,_0x490463){return db['VoiceQueueReport'][_0xa01f('0x4f')]()[_0xa01f('0x2b')](respondWithResult(_0x490463,null))['catch'](handleError(_0x490463,null));};exports[_0xa01f('0x50')]=function(_0x148c30,_0x5abd9c){var _0x195016={},_0xac1fee={},_0x14e093={'count':0x0,'rows':[]};_0xac1fee[_0xa01f('0x34')]=_[_0xa01f('0x37')](db[_0xa01f('0x30')][_0xa01f('0x31')]);_0xac1fee['query']=_['keys'](_0x148c30[_0xa01f('0x36')]);_0xac1fee['filters']=_[_0xa01f('0x39')](_0xac1fee[_0xa01f('0x34')],_0xac1fee['query']);_0x195016[_0xa01f('0x3a')]=_[_0xa01f('0x39')](_0xac1fee[_0xa01f('0x34')],qs[_0xa01f('0x3b')](_0x148c30[_0xa01f('0x36')]['fields']));_0x195016[_0xa01f('0x3a')]=_0x195016[_0xa01f('0x3a')][_0xa01f('0x4a')]?_0x195016[_0xa01f('0x3a')]:_0xac1fee[_0xa01f('0x34')];if(!_0x148c30[_0xa01f('0x36')][_0xa01f('0x3c')](_0xa01f('0x3d'))){_0x195016[_0xa01f('0x23')]=qs[_0xa01f('0x23')](_0x148c30[_0xa01f('0x36')][_0xa01f('0x23')]);_0x195016[_0xa01f('0x21')]=qs[_0xa01f('0x21')](_0x148c30['query'][_0xa01f('0x21')]);}_0x195016['order']=qs[_0xa01f('0x3f')](_0x148c30[_0xa01f('0x36')][_0xa01f('0x3f')]);_0x195016[_0xa01f('0x42')]=qs['filters'](_[_0xa01f('0x40')](_0x148c30[_0xa01f('0x36')],_0xac1fee['filters']));if(_0x148c30[_0xa01f('0x36')][_0xa01f('0x41')]){_0x195016[_0xa01f('0x42')]=_['merge'](_0x195016[_0xa01f('0x42')],{'$or':_[_0xa01f('0x35')](_0x195016[_0xa01f('0x3a')],function(_0x9cff4f){var _0x4caaf1={};_0x4caaf1[_0x9cff4f]={'$like':'%'+_0x148c30[_0xa01f('0x36')][_0xa01f('0x41')]+'%'};return _0x4caaf1;})});}_0x195016=_[_0xa01f('0x43')]({},_0x195016,_0x148c30[_0xa01f('0x45')]);var _0x4fe89a={'where':_0x195016[_0xa01f('0x42')]};return db['VoiceQueueReport'][_0xa01f('0x24')](_0x4fe89a)[_0xa01f('0x2b')](function(_0x5cedf4){_0x14e093['count']=_0x5cedf4;if(_0x148c30[_0xa01f('0x36')]['includeAll']){_0x195016[_0xa01f('0x51')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x195016);})[_0xa01f('0x2b')](function(_0x1635cf){_0x14e093[_0xa01f('0x52')]=_0x1635cf;return _0x14e093;})['then'](respondWithFilteredResult(_0x5abd9c,_0x195016,_0xa01f('0x50')))[_0xa01f('0x4e')](handleError(_0x5abd9c,null,_0xa01f('0x50')));}; \ No newline at end of file diff --git a/server/api/voiceQueueReport/voiceQueueReport.events.js b/server/api/voiceQueueReport/voiceQueueReport.events.js new file mode 100644 index 0000000..5dc0093 --- /dev/null +++ b/server/api/voiceQueueReport/voiceQueueReport.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5cff=['hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','emit'];(function(_0x181678,_0x5553ec){var _0xa17ff4=function(_0x5a44e1){while(--_0x5a44e1){_0x181678['push'](_0x181678['shift']());}};_0xa17ff4(++_0x5553ec);}(_0x5cff,0x87));var _0xf5cf=function(_0x337377,_0x241b24){_0x337377=_0x337377-0x0;var _0x1c1c32=_0x5cff[_0x337377];return _0x1c1c32;};'use strict';var EventEmitter=require(_0xf5cf('0x0'));var VoiceQueueReport=require(_0xf5cf('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xf5cf('0x2')](0x0);var events={'afterCreate':_0xf5cf('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x13c528){return function(_0x3a6058,_0x1875d1,_0x4f63b5){VoiceQueueReportEvents[_0xf5cf('0x4')](_0x13c528+':'+_0x3a6058['id'],_0x3a6058);VoiceQueueReportEvents[_0xf5cf('0x4')](_0x13c528,_0x3a6058);_0x4f63b5(null);};}for(var e in events){if(events[_0xf5cf('0x5')](e)){var event=events[e];VoiceQueueReport[_0xf5cf('0x6')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents; \ No newline at end of file diff --git a/server/api/voiceQueueReport/voiceQueueReport.model.js b/server/api/voiceQueueReport/voiceQueueReport.model.js new file mode 100644 index 0000000..c998c62 --- /dev/null +++ b/server/api/voiceQueueReport/voiceQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4983=['exports','VoiceQueueReport','report_queue','calleridnum','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x41db9c,_0x1d3bb4){var _0x3de4bf=function(_0x4f4776){while(--_0x4f4776){_0x41db9c['push'](_0x41db9c['shift']());}};_0x3de4bf(++_0x1d3bb4);}(_0x4983,0xb8));var _0x3498=function(_0x289b3d,_0x45d444){_0x289b3d=_0x289b3d-0x0;var _0x599c7a=_0x4983[_0x289b3d];return _0x599c7a;};'use strict';var _=require(_0x3498('0x0'));var util=require(_0x3498('0x1'));var logger=require(_0x3498('0x2'))(_0x3498('0x3'));var moment=require(_0x3498('0x4'));var BPromise=require('bluebird');var rp=require(_0x3498('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3498('0x6'));var config=require(_0x3498('0x7'));var attributes=require('./voiceQueueReport.attributes');module[_0x3498('0x8')]=function(_0x162b54,_0x16d504){return _0x162b54['define'](_0x3498('0x9'),attributes,{'tableName':_0x3498('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x3498('0xb')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceQueueReport/voiceQueueReport.rpc.js b/server/api/voiceQueueReport/voiceQueueReport.rpc.js new file mode 100644 index 0000000..14ade4b --- /dev/null +++ b/server/api/voiceQueueReport/voiceQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd963=['client','http','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','request\x20sent','debug','stringify','error','VoiceQueueReport,\x20%s,\x20%s','message','GetVoiceQueueReport','VoiceQueueReport','options','raw','where','attributes','map','include','model','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','limit','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x134b6e,_0x21b5ca){var _0x2229a9=function(_0x3fd3f5){while(--_0x3fd3f5){_0x134b6e['push'](_0x134b6e['shift']());}};_0x2229a9(++_0x21b5ca);}(_0xd963,0x93));var _0x3d96=function(_0x592cea,_0x4e72f1){_0x592cea=_0x592cea-0x0;var _0x1e9cc6=_0xd963[_0x592cea];return _0x1e9cc6;};'use strict';var _=require(_0x3d96('0x0'));var util=require(_0x3d96('0x1'));var moment=require(_0x3d96('0x2'));var BPromise=require(_0x3d96('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d96('0x4'))['db'];var utils=require(_0x3d96('0x5'));var logger=require('../../config/logger')(_0x3d96('0x6'));var config=require(_0x3d96('0x7'));var jayson=require(_0x3d96('0x8'));var client=jayson[_0x3d96('0x9')][_0x3d96('0xa')]({'port':0x232a});config[_0x3d96('0xb')]=_[_0x3d96('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3d96('0xd'))(new Redis(config[_0x3d96('0xb')]));require(_0x3d96('0xe'))[_0x3d96('0xf')](socket);function respondWithRpcPromise(_0x50c813,_0x433cb3,_0x4a3341){return new BPromise(function(_0x9945ce,_0x29b4ff){return client[_0x3d96('0x10')](_0x50c813,_0x4a3341)[_0x3d96('0x11')](function(_0x620b40){logger[_0x3d96('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x433cb3,_0x3d96('0x13'));logger[_0x3d96('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x433cb3,_0x3d96('0x13'),JSON[_0x3d96('0x15')](_0x620b40));if(_0x620b40[_0x3d96('0x16')]){if(_0x620b40[_0x3d96('0x16')]['code']===0x1f4){logger['error'](_0x3d96('0x17'),_0x433cb3,_0x620b40[_0x3d96('0x16')][_0x3d96('0x18')]);return _0x29b4ff(_0x620b40[_0x3d96('0x16')]['message']);}logger[_0x3d96('0x16')](_0x3d96('0x17'),_0x433cb3,_0x620b40[_0x3d96('0x16')]['message']);return _0x9945ce(_0x620b40[_0x3d96('0x16')]['message']);}else{logger[_0x3d96('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x433cb3,_0x3d96('0x13'));_0x9945ce(_0x620b40['result'][_0x3d96('0x18')]);}})['catch'](function(_0x50815b){logger['error'](_0x3d96('0x17'),_0x433cb3,_0x50815b);_0x29b4ff(_0x50815b);});});}exports[_0x3d96('0x19')]=function(_0x56e0e1){var _0x367768=this;return new Promise(function(_0x2cbba3,_0x376848){return db[_0x3d96('0x1a')]['findAll']({'raw':_0x56e0e1[_0x3d96('0x1b')]?_0x56e0e1[_0x3d96('0x1b')][_0x3d96('0x1c')]===undefined?!![]:![]:!![],'where':_0x56e0e1[_0x3d96('0x1b')]?_0x56e0e1[_0x3d96('0x1b')][_0x3d96('0x1d')]||null:null,'attributes':_0x56e0e1['options']?_0x56e0e1[_0x3d96('0x1b')][_0x3d96('0x1e')]||null:null,'limit':_0x56e0e1[_0x3d96('0x1b')]?_0x56e0e1[_0x3d96('0x1b')]['limit']||null:null,'include':_0x56e0e1[_0x3d96('0x1b')]?_0x56e0e1[_0x3d96('0x1b')]['include']?_[_0x3d96('0x1f')](_0x56e0e1[_0x3d96('0x1b')][_0x3d96('0x20')],function(_0x2ab2b0){return{'model':db[_0x2ab2b0['model']],'as':_0x2ab2b0['as'],'attributes':_0x2ab2b0['attributes'],'include':_0x2ab2b0['include']?_[_0x3d96('0x1f')](_0x2ab2b0['include'],function(_0x368eec){return{'model':db[_0x368eec[_0x3d96('0x21')]],'as':_0x368eec['as'],'attributes':_0x368eec['attributes'],'include':_0x368eec[_0x3d96('0x20')]?_[_0x3d96('0x1f')](_0x368eec[_0x3d96('0x20')],function(_0x2ff725){return{'model':db[_0x2ff725[_0x3d96('0x21')]],'as':_0x2ff725['as'],'attributes':_0x2ff725[_0x3d96('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x3d96('0x11')](function(_0x110d8f){logger[_0x3d96('0x12')](_0x3d96('0x19'),_0x56e0e1);logger[_0x3d96('0x14')](_0x3d96('0x19'),_0x56e0e1,JSON[_0x3d96('0x15')](_0x110d8f));_0x2cbba3(_0x110d8f);})['catch'](function(_0x133cb6){logger[_0x3d96('0x16')](_0x3d96('0x19'),_0x133cb6[_0x3d96('0x18')],_0x56e0e1);_0x376848(_0x367768[_0x3d96('0x16')](0x1f4,_0x133cb6[_0x3d96('0x18')]));});});};exports['CreateVoiceQueueReport']=function(_0x4a82c8){var _0x400829=this;return new Promise(function(_0xbf5b0b,_0xff22c8){return db[_0x3d96('0x1a')]['create'](_0x4a82c8[_0x3d96('0x22')],{'raw':_0x4a82c8[_0x3d96('0x1b')]?_0x4a82c8['options']['raw']===undefined?!![]:![]:!![]})[_0x3d96('0x11')](function(_0x5c9cf4){logger[_0x3d96('0x12')](_0x3d96('0x23'),_0x4a82c8);logger[_0x3d96('0x14')](_0x3d96('0x23'),_0x4a82c8,JSON[_0x3d96('0x15')](_0x5c9cf4));_0xbf5b0b(_0x5c9cf4);})['catch'](function(_0x15d7c5){logger[_0x3d96('0x16')]('CreateVoiceQueueReport',_0x15d7c5['message'],_0x4a82c8);_0xff22c8(_0x400829[_0x3d96('0x16')](0x1f4,_0x15d7c5[_0x3d96('0x18')]));});});};exports[_0x3d96('0x24')]=function(_0x5a925c){var _0x4c30e4=this;return new Promise(function(_0x4e041b,_0xf08fec){return db[_0x3d96('0x1a')]['update'](_0x5a925c['body'],{'raw':_0x5a925c[_0x3d96('0x1b')]?_0x5a925c[_0x3d96('0x1b')][_0x3d96('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a925c[_0x3d96('0x1b')]?_0x5a925c[_0x3d96('0x1b')]['where']||null:null,'attributes':_0x5a925c['options']?_0x5a925c['options'][_0x3d96('0x1e')]||null:null,'limit':_0x5a925c['options']?_0x5a925c['options'][_0x3d96('0x25')]||null:null})[_0x3d96('0x11')](function(_0xfac65c){logger['info'](_0x3d96('0x24'),_0x5a925c);logger[_0x3d96('0x14')](_0x3d96('0x24'),_0x5a925c,JSON[_0x3d96('0x15')](_0xfac65c));_0x4e041b(_0xfac65c);})[_0x3d96('0x26')](function(_0x1eecc4){logger[_0x3d96('0x16')](_0x3d96('0x24'),_0x1eecc4[_0x3d96('0x18')],_0x5a925c);_0xf08fec(_0x4c30e4[_0x3d96('0x16')](0x1f4,_0x1eecc4['message']));});});}; \ No newline at end of file diff --git a/server/api/voiceQueueReport/voiceQueueReport.socket.js b/server/api/voiceQueueReport/voiceQueueReport.socket.js new file mode 100644 index 0000000..87cb518 --- /dev/null +++ b/server/api/voiceQueueReport/voiceQueueReport.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7bb8=['update','emit','removeListener','voiceQueueReport:','save','remove'];(function(_0x140c01,_0x1063b1){var _0x3ebcc0=function(_0x2dfd07){while(--_0x2dfd07){_0x140c01['push'](_0x140c01['shift']());}};_0x3ebcc0(++_0x1063b1);}(_0x7bb8,0xe8));var _0x87bb=function(_0x18030d,_0x31f551){_0x18030d=_0x18030d-0x0;var _0x261e56=_0x7bb8[_0x18030d];return _0x261e56;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x87bb('0x0'),_0x87bb('0x1'),_0x87bb('0x2')];function createListener(_0x2a8157,_0x57cf25){return function(_0x26d1f5){_0x57cf25[_0x87bb('0x3')](_0x2a8157,_0x26d1f5);};}function removeListener(_0x5c03d3,_0xd7ed75){return function(){VoiceQueueReportEvents[_0x87bb('0x4')](_0x5c03d3,_0xd7ed75);};}exports['register']=function(_0x38b56d){for(var _0x46622e=0x0,_0x5e6e14=events['length'];_0x46622e<_0x5e6e14;_0x46622e++){var _0x317bba=events[_0x46622e];var _0x11d858=createListener(_0x87bb('0x5')+_0x317bba,_0x38b56d);VoiceQueueReportEvents['on'](_0x317bba,_0x11d858);}}; \ No newline at end of file diff --git a/server/api/voiceQueuesLog/index.js b/server/api/voiceQueuesLog/index.js new file mode 100644 index 0000000..6ab6264 --- /dev/null +++ b/server/api/voiceQueuesLog/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd200=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x1d1ed7,_0x461116){var _0x52a28e=function(_0x463754){while(--_0x463754){_0x1d1ed7['push'](_0x1d1ed7['shift']());}};_0x52a28e(++_0x461116);}(_0xd200,0x7d));var _0x0d20=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xd200[_0x3b0731];return _0x4204d7;};'use strict';var multer=require(_0x0d20('0x0'));var util=require(_0x0d20('0x1'));var path=require(_0x0d20('0x2'));var timeout=require(_0x0d20('0x3'));var express=require('express');var router=express[_0x0d20('0x4')]();var fs_extra=require(_0x0d20('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0d20('0x6'));var config=require('../../config/environment');var controller=require(_0x0d20('0x7'));router[_0x0d20('0x8')]('/',auth[_0x0d20('0x9')](),controller[_0x0d20('0xa')]);router[_0x0d20('0x8')](_0x0d20('0xb'),auth['isAuthenticated'](),controller[_0x0d20('0xc')]);router[_0x0d20('0xd')]('/',auth[_0x0d20('0x9')](),controller[_0x0d20('0xe')]);router[_0x0d20('0xf')](_0x0d20('0xb'),auth[_0x0d20('0x9')](),controller[_0x0d20('0x10')]);router[_0x0d20('0x11')](_0x0d20('0xb'),auth[_0x0d20('0x9')](),controller[_0x0d20('0x12')]);module[_0x0d20('0x13')]=router; \ No newline at end of file diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js b/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js new file mode 100644 index 0000000..c6a26b9 --- /dev/null +++ b/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xec1a=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','STRING','DATE','literal'];(function(_0x40fb97,_0x56d0f1){var _0x3aaecc=function(_0x10c28a){while(--_0x10c28a){_0x40fb97['push'](_0x40fb97['shift']());}};_0x3aaecc(++_0x56d0f1);}(_0xec1a,0x18d));var _0xaec1=function(_0x1cac97,_0x14901b){_0x1cac97=_0x1cac97-0x0;var _0xc47a1=_0xec1a[_0x1cac97];return _0xc47a1;};'use strict';var Sequelize=require(_0xaec1('0x0'));var moment=require('moment');module[_0xaec1('0x1')]={'time':{'type':Sequelize[_0xaec1('0x2')]},'callid':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xaec1('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xaec1('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xaec1('0x4')](_0xaec1('0x5'))}}; \ No newline at end of file diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.controller.js b/server/api/voiceQueuesLog/voiceQueuesLog.controller.js new file mode 100644 index 0000000..221c19f --- /dev/null +++ b/server/api/voiceQueuesLog/voiceQueuesLog.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0472=['show','rawAttributes','include','create','body','update','params','destroy','find','eml-format','zip-dir','fast-json-patch','moment','mustache','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','error','stack','name','send','index','map','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueuesLog','then','includeAll','findAll','catch'];(function(_0x48be61,_0x204c04){var _0x55fcd9=function(_0x5a9c6b){while(--_0x5a9c6b){_0x48be61['push'](_0x48be61['shift']());}};_0x55fcd9(++_0x204c04);}(_0x0472,0x1a1));var _0x2047=function(_0x517f19,_0x164202){_0x517f19=_0x517f19-0x0;var _0x5acce3=_0x0472[_0x517f19];return _0x5acce3;};'use strict';var emlformat=require(_0x2047('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2047('0x1'));var jsonpatch=require(_0x2047('0x2'));var rp=require('request-promise');var moment=require(_0x2047('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2047('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x2047('0x5'));var ejs=require(_0x2047('0x6'));var fs=require('fs');var fs_extra=require(_0x2047('0x7'));var _=require('lodash');var squel=require(_0x2047('0x8'));var crypto=require(_0x2047('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x2047('0xa'));var toCsv=require(_0x2047('0x5'));var querystring=require('querystring');var Papa=require(_0x2047('0xb'));var Redis=require('ioredis');var authService=require(_0x2047('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x2047('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2047('0xe'))('api');var utils=require(_0x2047('0xf'));var config=require(_0x2047('0x10'));var licenseUtil=require(_0x2047('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x302032,_0x21f0d7){_0x21f0d7=_0x21f0d7||0xcc;return function(_0x2bced7){if(_0x2bced7){return _0x302032[_0x2047('0x12')](_0x21f0d7);}return _0x302032[_0x2047('0x13')](_0x21f0d7)[_0x2047('0x14')]();};}function respondWithResult(_0x91aa02,_0x9d1f4d){_0x9d1f4d=_0x9d1f4d||0xc8;return function(_0x5be194){if(_0x5be194){return _0x91aa02[_0x2047('0x13')](_0x9d1f4d)[_0x2047('0x15')](_0x5be194);}};}function respondWithFilteredResult(_0x40929e,_0x46d0aa){return function(_0x20a2e7){if(_0x20a2e7){var _0xe0848d=typeof _0x46d0aa['offset']===_0x2047('0x16')&&typeof _0x46d0aa[_0x2047('0x17')]==='undefined';var _0x4b8535=_0x20a2e7[_0x2047('0x18')];var _0x155292=_0xe0848d?0x0:_0x46d0aa[_0x2047('0x19')];var _0x2ca61a=_0xe0848d?_0x20a2e7[_0x2047('0x18')]:_0x46d0aa[_0x2047('0x19')]+_0x46d0aa[_0x2047('0x17')];var _0x4810f9;if(_0x2ca61a>=_0x4b8535){_0x2ca61a=_0x4b8535;_0x4810f9=0xc8;}else{_0x4810f9=0xce;}_0x40929e['status'](_0x4810f9);return _0x40929e[_0x2047('0x1a')]('Content-Range',_0x155292+'-'+_0x2ca61a+'/'+_0x4b8535)[_0x2047('0x15')](_0x20a2e7);}return null;};}function patchUpdates(_0x16d90e){return function(_0x22dc0d){try{jsonpatch[_0x2047('0x1b')](_0x22dc0d,_0x16d90e,!![]);}catch(_0x41def3){return BPromise['reject'](_0x41def3);}return _0x22dc0d[_0x2047('0x1c')]();};}function saveUpdates(_0x49f023,_0x33cee4){return function(_0x301105){if(_0x301105){return _0x301105['update'](_0x49f023)['then'](function(_0x318391){return _0x318391;});}return null;};}function removeEntity(_0x20bf28,_0x194a9b){return function(_0x400272){if(_0x400272){return _0x400272['destroy']()['then'](function(){_0x20bf28[_0x2047('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bef7a,_0x45f59a){return function(_0x22b780){if(!_0x22b780){_0x3bef7a['sendStatus'](0x194);}return _0x22b780;};}function handleError(_0x46b32b,_0x2df27e){_0x2df27e=_0x2df27e||0x1f4;return function(_0x3e1244){logger[_0x2047('0x1d')](_0x3e1244[_0x2047('0x1e')]);if(_0x3e1244[_0x2047('0x1f')]){delete _0x3e1244[_0x2047('0x1f')];}_0x46b32b[_0x2047('0x13')](_0x2df27e)[_0x2047('0x20')](_0x3e1244);};}exports[_0x2047('0x21')]=function(_0x5e3e38,_0x3b06be){var _0x42113e={},_0x4d1f0b={},_0x53653c={'count':0x0,'rows':[]};var _0x20dc5a=_[_0x2047('0x22')](db['VoiceQueuesLog']['rawAttributes'],function(_0x10317f){return{'name':_0x10317f[_0x2047('0x23')],'type':_0x10317f[_0x2047('0x24')]['key']};});_0x4d1f0b['model']=_[_0x2047('0x22')](_0x20dc5a,_0x2047('0x1f'));_0x4d1f0b[_0x2047('0x25')]=_[_0x2047('0x26')](_0x5e3e38['query']);_0x4d1f0b[_0x2047('0x27')]=_['intersection'](_0x4d1f0b[_0x2047('0x28')],_0x4d1f0b['query']);_0x42113e[_0x2047('0x29')]=_[_0x2047('0x2a')](_0x4d1f0b[_0x2047('0x28')],qs[_0x2047('0x2b')](_0x5e3e38['query'][_0x2047('0x2b')]));_0x42113e[_0x2047('0x29')]=_0x42113e['attributes'][_0x2047('0x2c')]?_0x42113e[_0x2047('0x29')]:_0x4d1f0b['model'];if(!_0x5e3e38[_0x2047('0x25')]['hasOwnProperty'](_0x2047('0x2d'))){_0x42113e[_0x2047('0x17')]=qs[_0x2047('0x17')](_0x5e3e38['query'][_0x2047('0x17')]);_0x42113e[_0x2047('0x19')]=qs['offset'](_0x5e3e38[_0x2047('0x25')][_0x2047('0x19')]);}_0x42113e[_0x2047('0x2e')]=qs[_0x2047('0x2f')](_0x5e3e38['query'][_0x2047('0x2f')]);_0x42113e[_0x2047('0x30')]=qs[_0x2047('0x27')](_[_0x2047('0x31')](_0x5e3e38[_0x2047('0x25')],_0x4d1f0b[_0x2047('0x27')]),_0x20dc5a);if(_0x5e3e38[_0x2047('0x25')][_0x2047('0x32')]){_0x42113e[_0x2047('0x30')]=_[_0x2047('0x33')](_0x42113e[_0x2047('0x30')],{'$or':_[_0x2047('0x22')](_0x20dc5a,function(_0x2b870b){if(_0x2b870b[_0x2047('0x24')]!==_0x2047('0x34')){var _0x2422e2={};_0x2422e2[_0x2b870b[_0x2047('0x1f')]]={'$like':'%'+_0x5e3e38['query'][_0x2047('0x32')]+'%'};return _0x2422e2;}})});}_0x42113e=_[_0x2047('0x33')]({},_0x42113e,_0x5e3e38[_0x2047('0x35')]);var _0x387b97={'where':_0x42113e['where']};return db[_0x2047('0x36')][_0x2047('0x18')](_0x387b97)[_0x2047('0x37')](function(_0x2d77ba){_0x53653c[_0x2047('0x18')]=_0x2d77ba;if(_0x5e3e38[_0x2047('0x25')][_0x2047('0x38')]){_0x42113e['include']=[{'all':!![]}];}return db[_0x2047('0x36')][_0x2047('0x39')](_0x42113e);})['then'](function(_0x1c2639){_0x53653c['rows']=_0x1c2639;return _0x53653c;})[_0x2047('0x37')](respondWithFilteredResult(_0x3b06be,_0x42113e))[_0x2047('0x3a')](handleError(_0x3b06be,null));};exports[_0x2047('0x3b')]=function(_0x555c65,_0x21a1f7){var _0x2cbbaf={'raw':!![],'where':{'id':_0x555c65['params']['id']}},_0x110205={};_0x110205[_0x2047('0x28')]=_[_0x2047('0x26')](db['VoiceQueuesLog'][_0x2047('0x3c')]);_0x110205[_0x2047('0x25')]=_['keys'](_0x555c65[_0x2047('0x25')]);_0x110205[_0x2047('0x27')]=_[_0x2047('0x2a')](_0x110205[_0x2047('0x28')],_0x110205['query']);_0x2cbbaf[_0x2047('0x29')]=_['intersection'](_0x110205[_0x2047('0x28')],qs[_0x2047('0x2b')](_0x555c65['query'][_0x2047('0x2b')]));_0x2cbbaf['attributes']=_0x2cbbaf[_0x2047('0x29')][_0x2047('0x2c')]?_0x2cbbaf[_0x2047('0x29')]:_0x110205[_0x2047('0x28')];if(_0x555c65[_0x2047('0x25')][_0x2047('0x38')]){_0x2cbbaf[_0x2047('0x3d')]=[{'all':!![]}];}_0x2cbbaf=_[_0x2047('0x33')]({},_0x2cbbaf,_0x555c65[_0x2047('0x35')]);return db[_0x2047('0x36')]['find'](_0x2cbbaf)['then'](handleEntityNotFound(_0x21a1f7,null))[_0x2047('0x37')](respondWithResult(_0x21a1f7,null))['catch'](handleError(_0x21a1f7,null));};exports[_0x2047('0x3e')]=function(_0x3d9099,_0x325b00){return db[_0x2047('0x36')][_0x2047('0x3e')](_0x3d9099[_0x2047('0x3f')],{})['then'](respondWithResult(_0x325b00,0xc9))['catch'](handleError(_0x325b00,null));};exports[_0x2047('0x40')]=function(_0x2891f5,_0x2bdf3c){if(_0x2891f5[_0x2047('0x3f')]['id']){delete _0x2891f5[_0x2047('0x3f')]['id'];}return db[_0x2047('0x36')]['find']({'where':{'id':_0x2891f5[_0x2047('0x41')]['id']}})[_0x2047('0x37')](handleEntityNotFound(_0x2bdf3c,null))[_0x2047('0x37')](saveUpdates(_0x2891f5[_0x2047('0x3f')],null))[_0x2047('0x37')](respondWithResult(_0x2bdf3c,null))[_0x2047('0x3a')](handleError(_0x2bdf3c,null));};exports[_0x2047('0x42')]=function(_0x14030d,_0x4d0927){return db[_0x2047('0x36')][_0x2047('0x43')]({'where':{'id':_0x14030d['params']['id']}})[_0x2047('0x37')](handleEntityNotFound(_0x4d0927,null))[_0x2047('0x37')](removeEntity(_0x4d0927,null))[_0x2047('0x3a')](handleError(_0x4d0927,null));}; \ No newline at end of file diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.model.js b/server/api/voiceQueuesLog/voiceQueuesLog.model.js new file mode 100644 index 0000000..a51a669 --- /dev/null +++ b/server/api/voiceQueuesLog/voiceQueuesLog.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xcaa7=['dtm','lodash','util','api','moment','bluebird','request-promise','rimraf','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','event_dtm','event'];(function(_0x1574a1,_0x22b83){var _0x53dd85=function(_0x451cd9){while(--_0x451cd9){_0x1574a1['push'](_0x1574a1['shift']());}};_0x53dd85(++_0x22b83);}(_0xcaa7,0x1a5));var _0x7caa=function(_0x1f2b9e,_0xa7c8de){_0x1f2b9e=_0x1f2b9e-0x0;var _0x1b4bca=_0xcaa7[_0x1f2b9e];return _0x1b4bca;};'use strict';var _=require(_0x7caa('0x0'));var util=require(_0x7caa('0x1'));var logger=require('../../config/logger')(_0x7caa('0x2'));var moment=require(_0x7caa('0x3'));var BPromise=require(_0x7caa('0x4'));var rp=require(_0x7caa('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7caa('0x6'));var config=require('../../config/environment');var attributes=require(_0x7caa('0x7'));module[_0x7caa('0x8')]=function(_0x3900ae,_0x6ab9f3){return _0x3900ae[_0x7caa('0x9')](_0x7caa('0xa'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x7caa('0xb'),'fields':[_0x7caa('0xc'),_0x7caa('0xd')]}],'timestamps':![]});}; \ No newline at end of file diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js b/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js new file mode 100644 index 0000000..1b2460a --- /dev/null +++ b/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0ade=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','result','message','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x41ce34,_0x22932a){var _0x580c63=function(_0x46a806){while(--_0x46a806){_0x41ce34['push'](_0x41ce34['shift']());}};_0x580c63(++_0x22932a);}(_0x0ade,0xab));var _0xe0ad=function(_0x2b4d00,_0x57acd5){_0x2b4d00=_0x2b4d00-0x0;var _0x52a923=_0x0ade[_0x2b4d00];return _0x52a923;};'use strict';var _=require(_0xe0ad('0x0'));var util=require(_0xe0ad('0x1'));var moment=require('moment');var BPromise=require(_0xe0ad('0x2'));var rs=require(_0xe0ad('0x3'));var fs=require('fs');var Redis=require(_0xe0ad('0x4'));var db=require(_0xe0ad('0x5'))['db'];var utils=require(_0xe0ad('0x6'));var logger=require(_0xe0ad('0x7'))('rpc');var config=require(_0xe0ad('0x8'));var jayson=require(_0xe0ad('0x9'));var client=jayson[_0xe0ad('0xa')][_0xe0ad('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4426eb,_0x18828e,_0x5b21f7){return new BPromise(function(_0x448d,_0x1add4e){return client['request'](_0x4426eb,_0x5b21f7)[_0xe0ad('0xc')](function(_0x1bbe93){logger[_0xe0ad('0xd')](_0xe0ad('0xe'),_0x18828e,_0xe0ad('0xf'));logger['debug'](_0xe0ad('0x10'),_0x18828e,_0xe0ad('0xf'),JSON[_0xe0ad('0x11')](_0x1bbe93));if(_0x1bbe93['error']){if(_0x1bbe93['error']['code']===0x1f4){logger[_0xe0ad('0x12')]('VoiceQueuesLog,\x20%s,\x20%s',_0x18828e,_0x1bbe93[_0xe0ad('0x12')]['message']);return _0x1add4e(_0x1bbe93[_0xe0ad('0x12')]['message']);}logger[_0xe0ad('0x12')](_0xe0ad('0xe'),_0x18828e,_0x1bbe93[_0xe0ad('0x12')]['message']);return _0x448d(_0x1bbe93['error']['message']);}else{logger['info'](_0xe0ad('0xe'),_0x18828e,_0xe0ad('0xf'));_0x448d(_0x1bbe93[_0xe0ad('0x13')][_0xe0ad('0x14')]);}})[_0xe0ad('0x15')](function(_0x2f71a3){logger[_0xe0ad('0x12')](_0xe0ad('0xe'),_0x18828e,_0x2f71a3);_0x1add4e(_0x2f71a3);});});} \ No newline at end of file diff --git a/server/api/voiceRecording/index.js b/server/api/voiceRecording/index.js new file mode 100644 index 0000000..22272a0 --- /dev/null +++ b/server/api/voiceRecording/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc673=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show','/:id/download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','/:id','update','delete','destroy','exports'];(function(_0x2e0aa6,_0x4217cd){var _0x3efbe7=function(_0x3aa245){while(--_0x3aa245){_0x2e0aa6['push'](_0x2e0aa6['shift']());}};_0x3efbe7(++_0x4217cd);}(_0xc673,0x1b3));var _0x3c67=function(_0x26c7a1,_0x56544f){_0x26c7a1=_0x26c7a1-0x0;var _0x5e42db=_0xc673[_0x26c7a1];return _0x5e42db;};'use strict';var multer=require(_0x3c67('0x0'));var util=require(_0x3c67('0x1'));var path=require(_0x3c67('0x2'));var timeout=require(_0x3c67('0x3'));var express=require(_0x3c67('0x4'));var router=express[_0x3c67('0x5')]();var fs_extra=require(_0x3c67('0x6'));var auth=require(_0x3c67('0x7'));var interaction=require(_0x3c67('0x8'));var config=require(_0x3c67('0x9'));var controller=require('./voiceRecording.controller');router[_0x3c67('0xa')]('/',auth['isAuthenticated'](),controller[_0x3c67('0xb')]);router['get'](_0x3c67('0xc'),auth[_0x3c67('0xd')](),controller[_0x3c67('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x3c67('0xf')]);router['get'](_0x3c67('0x10'),auth[_0x3c67('0xd')](),controller['download']);router['get'](_0x3c67('0x11'),controller['downloads']);router[_0x3c67('0xa')](_0x3c67('0x12'),auth[_0x3c67('0xd')](),controller[_0x3c67('0x13')]);router[_0x3c67('0x14')]('/',auth[_0x3c67('0xd')](),controller[_0x3c67('0x15')]);router['post'](_0x3c67('0x12'),auth[_0x3c67('0xd')](),controller[_0x3c67('0x16')]);router[_0x3c67('0x17')](_0x3c67('0x18'),auth[_0x3c67('0xd')](),controller[_0x3c67('0x19')]);router[_0x3c67('0x1a')](_0x3c67('0x18'),auth['isAuthenticated'](),controller[_0x3c67('0x1b')]);module[_0x3c67('0x1c')]=router; \ No newline at end of file diff --git a/server/api/voiceRecording/voiceRecording.attributes.js b/server/api/voiceRecording/voiceRecording.attributes.js new file mode 100644 index 0000000..f94c04b --- /dev/null +++ b/server/api/voiceRecording/voiceRecording.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * 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(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 diff --git a/server/api/voiceRecording/voiceRecording.controller.js b/server/api/voiceRecording/voiceRecording.controller.js new file mode 100644 index 0000000..c0faeec --- /dev/null +++ b/server/api/voiceRecording/voiceRecording.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7439=['findOne','Voice\x20Recording\x20not\x20found','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','data1','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','then','destroy','stack','name','send','index','map','VoiceRecording','rawAttributes','fieldName','type','key','model','format','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','include','findAll','catch','show','params','options','find','create','body','update','describe','download','../../components/encryptor','uniqueid','value','existsSync','decryptFile','secrets','Sequelize','ValidationError','filename','unlink','message','VoiceRecording\x20not\x20found','Not\x20found','sequelize','col','$and','push','%s.cypher','recording','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','createBucket','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus'];(function(_0x555879,_0x7e85fc){var _0xafff09=function(_0x3f65c0){while(--_0x3f65c0){_0x555879['push'](_0x555879['shift']());}};_0xafff09(++_0x7e85fc);}(_0x7439,0x1df));var _0x9743=function(_0x9aee93,_0x5d49be){_0x9aee93=_0x9aee93-0x0;var _0x8bcbbb=_0x7439[_0x9aee93];return _0x8bcbbb;};'use strict';var emlformat=require(_0x9743('0x0'));var rimraf=require(_0x9743('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9743('0x2'));var rp=require(_0x9743('0x3'));var moment=require(_0x9743('0x4'));var BPromise=require(_0x9743('0x5'));var Mustache=require(_0x9743('0x6'));var util=require('util');var path=require(_0x9743('0x7'));var sox=require(_0x9743('0x8'));var csv=require('to-csv');var ejs=require(_0x9743('0x9'));var fs=require('fs');var fs_extra=require(_0x9743('0xa'));var _=require(_0x9743('0xb'));var squel=require(_0x9743('0xc'));var crypto=require('crypto');var jsforce=require(_0x9743('0xd'));var deskjs=require(_0x9743('0xe'));var toCsv=require(_0x9743('0xf'));var querystring=require(_0x9743('0x10'));var Papa=require(_0x9743('0x11'));var AWS=require(_0x9743('0x12'));var uuidv4=require('uuid/v4');var Redis=require(_0x9743('0x13'));var authService=require(_0x9743('0x14'));var qs=require(_0x9743('0x15'));var as=require(_0x9743('0x16'));var hardwareService=require(_0x9743('0x17'));var logger=require('../../config/logger')(_0x9743('0x18'));var utils=require(_0x9743('0x19'));var config=require(_0x9743('0x1a'));var licenseUtil=require(_0x9743('0x1b'));var db=require(_0x9743('0x1c'))['db'];function respondWithStatusCode(_0x5d7e3f,_0x10e791){_0x10e791=_0x10e791||0xcc;return function(_0x189f3e){if(_0x189f3e){return _0x5d7e3f[_0x9743('0x1d')](_0x10e791);}return _0x5d7e3f[_0x9743('0x1e')](_0x10e791)[_0x9743('0x1f')]();};}function respondWithResult(_0x4fc875,_0x26ae24){_0x26ae24=_0x26ae24||0xc8;return function(_0x3a5623){if(_0x3a5623){return _0x4fc875['status'](_0x26ae24)[_0x9743('0x20')](_0x3a5623);}};}function respondWithFilteredResult(_0x45024d,_0x5eda07){return function(_0x5e2977){if(_0x5e2977){var _0x27234c=typeof _0x5eda07[_0x9743('0x21')]==='undefined'&&typeof _0x5eda07[_0x9743('0x22')]===_0x9743('0x23');var _0x371c40=_0x5e2977[_0x9743('0x24')];var _0x5d1b00=_0x27234c?0x0:_0x5eda07[_0x9743('0x21')];var _0x42d1e6=_0x27234c?_0x5e2977['count']:_0x5eda07['offset']+_0x5eda07[_0x9743('0x22')];var _0x9ade60;if(_0x42d1e6>=_0x371c40){_0x42d1e6=_0x371c40;_0x9ade60=0xc8;}else{_0x9ade60=0xce;}_0x45024d[_0x9743('0x1e')](_0x9ade60);return _0x45024d[_0x9743('0x25')]('Content-Range',_0x5d1b00+'-'+_0x42d1e6+'/'+_0x371c40)[_0x9743('0x20')](_0x5e2977);}return null;};}function patchUpdates(_0x583cc6){return function(_0x425523){try{jsonpatch[_0x9743('0x26')](_0x425523,_0x583cc6,!![]);}catch(_0x5844d6){return BPromise[_0x9743('0x27')](_0x5844d6);}return _0x425523[_0x9743('0x28')]();};}function saveUpdates(_0x2cd681,_0x228d1a){return function(_0x10c143){if(_0x10c143){return _0x10c143['update'](_0x2cd681)[_0x9743('0x29')](function(_0x369c3d){return _0x369c3d;});}return null;};}function removeEntity(_0x5b3575,_0x546d42){return function(_0x2c6088){if(_0x2c6088){return _0x2c6088[_0x9743('0x2a')]()[_0x9743('0x29')](function(){_0x5b3575[_0x9743('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9918af,_0x4c7ce4){return function(_0x36be9c){if(!_0x36be9c){_0x9918af[_0x9743('0x1d')](0x194);}return _0x36be9c;};}function handleError(_0x5fd04b,_0x3aa6e5){_0x3aa6e5=_0x3aa6e5||0x1f4;return function(_0x66468c){logger['error'](_0x66468c[_0x9743('0x2b')]);if(_0x66468c[_0x9743('0x2c')]){delete _0x66468c[_0x9743('0x2c')];}_0x5fd04b[_0x9743('0x1e')](_0x3aa6e5)[_0x9743('0x2d')](_0x66468c);};}exports[_0x9743('0x2e')]=function(_0x2b2ecc,_0x51c1e5){var _0x39b5f3={},_0x209d8d={},_0x55dfef={'count':0x0,'rows':[]};var _0x2f9ae1=_[_0x9743('0x2f')](db[_0x9743('0x30')][_0x9743('0x31')],function(_0x266c0c){return{'name':_0x266c0c[_0x9743('0x32')],'type':_0x266c0c[_0x9743('0x33')][_0x9743('0x34')]};});_0x209d8d[_0x9743('0x35')]=_['differenceBy'](_[_0x9743('0x2f')](_0x2f9ae1,_0x9743('0x2c')),[_0x9743('0x36')]);_0x209d8d[_0x9743('0x37')]=_[_0x9743('0x38')](_0x2b2ecc[_0x9743('0x37')]);_0x209d8d['filters']=_[_0x9743('0x39')](_0x209d8d[_0x9743('0x35')],_0x209d8d['query']);_0x39b5f3[_0x9743('0x3a')]=_['intersection'](_0x209d8d[_0x9743('0x35')],qs[_0x9743('0x3b')](_0x2b2ecc[_0x9743('0x37')][_0x9743('0x3b')]));_0x39b5f3[_0x9743('0x3a')]=_0x39b5f3['attributes'][_0x9743('0x3c')]?_0x39b5f3[_0x9743('0x3a')]:_0x209d8d[_0x9743('0x35')];if(!_0x2b2ecc['query'][_0x9743('0x3d')](_0x9743('0x3e'))){_0x39b5f3[_0x9743('0x22')]=qs[_0x9743('0x22')](_0x2b2ecc[_0x9743('0x37')][_0x9743('0x22')]);_0x39b5f3[_0x9743('0x21')]=qs[_0x9743('0x21')](_0x2b2ecc[_0x9743('0x37')]['offset']);}_0x39b5f3[_0x9743('0x3f')]=qs[_0x9743('0x40')](_0x2b2ecc[_0x9743('0x37')][_0x9743('0x40')]);_0x39b5f3[_0x9743('0x41')]=qs[_0x9743('0x42')](_[_0x9743('0x43')](_0x2b2ecc[_0x9743('0x37')],_0x209d8d[_0x9743('0x42')]),_0x2f9ae1);if(_0x2b2ecc[_0x9743('0x37')][_0x9743('0x44')]){_0x39b5f3[_0x9743('0x41')]=_[_0x9743('0x45')](_0x39b5f3[_0x9743('0x41')],{'$or':_[_0x9743('0x2f')](_0x2f9ae1,function(_0x374f8f){if(_0x374f8f[_0x9743('0x33')]!==_0x9743('0x46')){var _0x2feaf0={};_0x2feaf0[_0x374f8f[_0x9743('0x2c')]]={'$like':'%'+_0x2b2ecc['query'][_0x9743('0x44')]+'%'};return _0x2feaf0;}})});}_0x39b5f3=_[_0x9743('0x45')]({},_0x39b5f3,_0x2b2ecc['options']);var _0x568f6f={'where':_0x39b5f3[_0x9743('0x41')]};return db[_0x9743('0x30')][_0x9743('0x24')](_0x568f6f)['then'](function(_0x799b34){_0x55dfef[_0x9743('0x24')]=_0x799b34;if(_0x2b2ecc[_0x9743('0x37')]['includeAll']){_0x39b5f3[_0x9743('0x47')]=[{'all':!![]}];}return db[_0x9743('0x30')][_0x9743('0x48')](_0x39b5f3);})[_0x9743('0x29')](function(_0x137782){_0x55dfef['rows']=_0x137782;return _0x55dfef;})[_0x9743('0x29')](respondWithFilteredResult(_0x51c1e5,_0x39b5f3))[_0x9743('0x49')](handleError(_0x51c1e5,null));};exports[_0x9743('0x4a')]=function(_0x7ca18a,_0x28231b){var _0x804d84={'raw':![],'where':{'id':_0x7ca18a[_0x9743('0x4b')]['id']}},_0x523ac0={};_0x523ac0['model']=_[_0x9743('0x38')](db[_0x9743('0x30')][_0x9743('0x31')]);_0x523ac0[_0x9743('0x37')]=_['keys'](_0x7ca18a[_0x9743('0x37')]);_0x523ac0[_0x9743('0x42')]=_[_0x9743('0x39')](_0x523ac0['model'],_0x523ac0[_0x9743('0x37')]);_0x804d84[_0x9743('0x3a')]=_[_0x9743('0x39')](_0x523ac0[_0x9743('0x35')],qs[_0x9743('0x3b')](_0x7ca18a[_0x9743('0x37')]['fields']));_0x804d84[_0x9743('0x3a')]=_0x804d84['attributes'][_0x9743('0x3c')]?_0x804d84[_0x9743('0x3a')]:_0x523ac0['model'];if(_0x7ca18a[_0x9743('0x37')]['includeAll']){_0x804d84[_0x9743('0x47')]=[{'all':!![]}];}_0x804d84=_[_0x9743('0x45')]({},_0x804d84,_0x7ca18a[_0x9743('0x4c')]);return db['VoiceRecording'][_0x9743('0x4d')](_0x804d84)[_0x9743('0x29')](handleEntityNotFound(_0x28231b,null))[_0x9743('0x29')](respondWithResult(_0x28231b,null))['catch'](handleError(_0x28231b,null));};exports[_0x9743('0x4e')]=function(_0x156da1,_0x2dfa7b){return db[_0x9743('0x30')][_0x9743('0x4e')](_0x156da1[_0x9743('0x4f')],{})[_0x9743('0x29')](respondWithResult(_0x2dfa7b,0xc9))[_0x9743('0x49')](handleError(_0x2dfa7b,null));};exports[_0x9743('0x50')]=function(_0x48efcc,_0x1b8639){if(_0x48efcc[_0x9743('0x4f')]['id']){delete _0x48efcc['body']['id'];}return db[_0x9743('0x30')][_0x9743('0x4d')]({'where':{'id':_0x48efcc[_0x9743('0x4b')]['id']}})[_0x9743('0x29')](handleEntityNotFound(_0x1b8639,null))[_0x9743('0x29')](saveUpdates(_0x48efcc[_0x9743('0x4f')],null))[_0x9743('0x29')](respondWithResult(_0x1b8639,null))[_0x9743('0x49')](handleError(_0x1b8639,null));};exports[_0x9743('0x51')]=function(_0x392754,_0x10722b){return db[_0x9743('0x30')][_0x9743('0x51')]()[_0x9743('0x29')](respondWithResult(_0x10722b,null))[_0x9743('0x49')](handleError(_0x10722b,null));};exports[_0x9743('0x52')]=function(_0x5b26e2,_0x1d98b9,_0xff884b){var _0x28036d=require(_0x9743('0x53'));var _0x2b342d=![];var _0x184436={};if(_0x5b26e2[_0x9743('0x37')][_0x9743('0x33')]&&_0x5b26e2[_0x9743('0x37')][_0x9743('0x33')]==='uniqueid'){_0x184436[_0x9743('0x54')]=_0x5b26e2[_0x9743('0x4b')]['id'];}else{_0x184436['id']=_0x5b26e2[_0x9743('0x4b')]['id'];}return db['VoiceRecording'][_0x9743('0x4d')]({'where':_0x184436,'attributes':['id',_0x9743('0x55')],'raw':!![]})[_0x9743('0x29')](handleEntityNotFound(_0x1d98b9,null))[_0x9743('0x29')](function(_0x3208a1){if(_0x3208a1){var _0x597c75=_0x3208a1['value'];var _0x235a7b=util[_0x9743('0x36')]('%s.cypher',_0x597c75);if(fs[_0x9743('0x56')](_0x235a7b)){_0x2b342d=!![];return _0x28036d[_0x9743('0x57')](_0x235a7b,_0x597c75,config[_0x9743('0x58')]['recording'])[_0x9743('0x29')](function(){return _0x3208a1;});}return _0x3208a1;}})['then'](function(_0x459542){if(_0x459542){var _0x51acce=_0x459542[_0x9743('0x55')];if(!fs[_0x9743('0x56')](_0x51acce)){throw new db[(_0x9743('0x59'))][(_0x9743('0x5a'))]('VoiceRecording\x20not\x20found');}if(_0x459542[_0x9743('0x5b')]){return _0x1d98b9[_0x9743('0x52')](_0x51acce,_0x459542[_0x9743('0x5b')]+path['extname'](_0x51acce),function(){if(_0x2b342d){fs[_0x9743('0x5c')](_0x51acce);}});}else{return _0x1d98b9['download'](_0x51acce,function(_0x4a3e1f){if(_0x2b342d){fs[_0x9743('0x5c')](_0x51acce);}});}}})[_0x9743('0x49')](function(_0x439c81){if(_0x439c81[_0x9743('0x5d')]===_0x9743('0x5e')){_0x1d98b9[_0x9743('0x1e')](0x194)[_0x9743('0x2d')](_0x9743('0x5f'));}else{return handleError(_0x1d98b9,null);}});};exports['downloads']=function(_0x207a2a,_0x2aa360,_0x3afa76){var _0x3b967a=require('../../components/encryptor');var _0x51c300=![];var _0x4fe42e={'$and':[db['sequelize'][_0x9743('0x41')](db['sequelize']['fn']('MD5',db[_0x9743('0x60')][_0x9743('0x61')](_0x9743('0x54'))),_0x207a2a[_0x9743('0x37')]['token'])]};if(_0x207a2a[_0x9743('0x37')][_0x9743('0x33')]&&_0x207a2a[_0x9743('0x37')]['type']===_0x9743('0x54')){_0x4fe42e[_0x9743('0x62')][_0x9743('0x63')]({'uniqueid':_0x207a2a[_0x9743('0x4b')]['id']});}else{_0x4fe42e[_0x9743('0x62')][_0x9743('0x63')]({'id':_0x207a2a['params']['id']});}return db['VoiceRecording']['find']({'where':_0x4fe42e,'attributes':['id',_0x9743('0x55')],'raw':!![]})['then'](handleEntityNotFound(_0x2aa360,null))['then'](function(_0xbfddaa){if(_0xbfddaa){var _0x4336a0=util[_0x9743('0x36')](_0x9743('0x64'),_0xbfddaa[_0x9743('0x55')]);if(fs[_0x9743('0x56')](_0x4336a0)){_0x51c300=!![];return _0x3b967a[_0x9743('0x57')](_0x4336a0,_0xbfddaa[_0x9743('0x55')],config[_0x9743('0x58')][_0x9743('0x65')])[_0x9743('0x29')](function(){return _0xbfddaa;});}return _0xbfddaa;}})[_0x9743('0x29')](function(_0x4b10cc){if(_0x4b10cc){if(!fs['existsSync'](_0x4b10cc['value'])){throw new db[(_0x9743('0x59'))]['ValidationError'](_0x9743('0x5e'));}if(_0x4b10cc[_0x9743('0x5b')]){return _0x2aa360[_0x9743('0x52')](_0x4b10cc[_0x9743('0x55')],_0x4b10cc[_0x9743('0x5b')]+path['extname'](_0x4b10cc[_0x9743('0x55')]),function(){if(_0x51c300){fs[_0x9743('0x5c')](_0x4b10cc[_0x9743('0x55')]);}});}else{return _0x2aa360[_0x9743('0x52')](_0x4b10cc['value'],function(_0x733269){if(_0x51c300){fs[_0x9743('0x5c')](_0x4b10cc[_0x9743('0x55')]);}});}}})[_0x9743('0x49')](handleError(_0x2aa360,null));};exports['destroy']=function(_0x3c2942,_0x598758){return db[_0x9743('0x30')][_0x9743('0x4d')]({'where':{'id':_0x3c2942['params']['id']}})[_0x9743('0x29')](function(_0x5dec25){if(_[_0x9743('0x66')](_0x5dec25)){throw new ReferenceError(_0x9743('0x67'));}return _0x5dec25;})[_0x9743('0x29')](function(_0x4c7ea6){var _0x3a412a=_0x4c7ea6['value'];logger['info'](_0x9743('0x68'),_0x3a412a);if(!_[_0x9743('0x66')](_0x4c7ea6[_0x9743('0x55')])&&fs[_0x9743('0x56')](_0x3a412a)){logger[_0x9743('0x69')](_0x9743('0x6a')+_0x3a412a+_0x9743('0x6b'));fs['unlinkSync'](_0x3a412a);}_0x3a412a=_0x3a412a+_0x9743('0x6c');if(!_[_0x9743('0x66')](_0x4c7ea6[_0x9743('0x55')])&&fs[_0x9743('0x56')](_0x3a412a)){logger[_0x9743('0x69')]('File:\x20\x22'+_0x3a412a+_0x9743('0x6b'));fs['unlinkSync'](_0x3a412a);}return _0x4c7ea6;})[_0x9743('0x29')](function(_0x1f773b){if(!_0x1f773b)throw new InternalError();return _0x1f773b[_0x9743('0x2a')]();})[_0x9743('0x29')](function(){_0x598758['status'](0xcc)['end']();})[_0x9743('0x49')](handleError(_0x598758,null));};function getBucketslist(_0x35e465,_0x34e18d,_0x4ef33e){return new Promise(function(_0x41e2f6,_0x213c5c){var _0x44f930=new AWS['S3']({'accessKeyId':_0x34e18d,'secretAccessKey':_0x35e465,'region':_0x4ef33e});_0x44f930['listBuckets']({},function(_0xf13a76,_0x45ce67){if(_0xf13a76){return _0x213c5c(_0xf13a76);}else{return _0x41e2f6(_0x45ce67);}});});}function createBucket(_0x1a2020,_0x1ebc9e,_0x3401f8,_0x32d86b){return new Promise(function(_0x409c6e,_0x4bcbd4){var _0x53928a=new AWS['S3']({'accessKeyId':_0x1ebc9e,'secretAccessKey':_0x1a2020,'region':_0x3401f8});_0x53928a[_0x9743('0x6d')]({'Bucket':_0x32d86b},function(_0x184b42,_0x1d4c8e){if(_0x184b42){return _0x4bcbd4(_0x184b42);}else{return _0x409c6e(_0x1d4c8e);}});});}function uploadFile(_0x422261,_0xa7fbac,_0x314b3d,_0x11d019,_0x5ab17c,_0xfaf403){return new Promise(function(_0x42e8f2,_0x251849){var _0x29af68=new AWS['S3']({'accessKeyId':_0xa7fbac,'secretAccessKey':_0x422261,'region':_0x314b3d});_0x29af68['upload']({'Bucket':_0x11d019,'Key':_0x5ab17c,'Body':_0xfaf403},function(_0x376e73,_0x31b2ad){if(_0x376e73){return _0x251849(_0x376e73);}else{return _0x42e8f2(_0x31b2ad);}});});}function startTranscribe(_0x39193d,_0xa1160e,_0x45e803,_0x54aa0e,_0x16cc45,_0x42958e){return new Promise(function(_0x43b1b0,_0x175053){var _0x1ee3ee=new AWS[(_0x9743('0x6e'))]({'accessKeyId':_0xa1160e,'secretAccessKey':_0x39193d,'region':_0x45e803});_0x1ee3ee[_0x9743('0x6f')]({'TranscriptionJobName':_0x54aa0e,'LanguageCode':_0x16cc45,'Media':{'MediaFileUri':_0x42958e}},function(_0x52aefa,_0x46c78e){if(_0x52aefa){return _0x175053(_0x52aefa);}else{return _0x43b1b0(_0x46c78e);}});});}function transcribe(_0x3f66e9,_0x36c394,_0x25df40,_0x8c7690,_0x2b39a0,_0x21c646,_0x4f9d88){return new Promise(function(_0x15608c,_0x4d9a7d){var _0x359208={};logger['info'](util[_0x9743('0x36')](_0x9743('0x70'),_0x3f66e9,_0x2b39a0));return uploadFile(_0x36c394,_0x25df40,_0x8c7690,_0x2b39a0,path[_0x9743('0x71')](_0x21c646),fs['readFileSync'](_0x21c646))[_0x9743('0x29')](function(_0x184d53){logger['info'](util[_0x9743('0x36')](_0x9743('0x72'),_0x3f66e9,_0x2b39a0,_0x184d53['Location']));_0x359208[_0x9743('0x73')]=_0x184d53[_0x9743('0x74')];_0x359208[_0x9743('0x75')]=_0x184d53['Location'];logger[_0x9743('0x69')](util[_0x9743('0x36')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x3f66e9));return startTranscribe(_0x36c394,_0x25df40,_0x8c7690,uuidv4(),_0x4f9d88,_0x184d53[_0x9743('0x76')]);})[_0x9743('0x29')](function(_0x59ae1d){logger['info'](util['format'](_0x9743('0x77'),_0x3f66e9,_0x59ae1d[_0x9743('0x78')][_0x9743('0x79')]));_0x359208[_0x9743('0x7a')]=_0x59ae1d['TranscriptionJob'][_0x9743('0x79')];_0x359208[_0x9743('0x7b')]=_0x59ae1d[_0x9743('0x78')][_0x9743('0x7c')];return _0x15608c(_0x359208);})[_0x9743('0x49')](function(_0x21a0dd){return _0x4d9a7d(_0x21a0dd);});});}exports['runTranscribe']=function(_0x3ca281,_0x5ed9ba,_0x1f2801){var _0x1eecee;var _0x2a32f0;var _0x17735e;var _0x30c63d=require(_0x9743('0x53'));return db[_0x9743('0x30')][_0x9743('0x7d')]({'where':{'id':_0x3ca281['params']['id']}})[_0x9743('0x29')](function(_0x1ec60f){if(_0x1ec60f){var _0x227e44=util[_0x9743('0x36')]('%s.cypher',_0x1ec60f[_0x9743('0x55')]);if(fs[_0x9743('0x56')](_0x227e44)){cypher=!![];return _0x30c63d['decryptFile'](_0x227e44,_0x1ec60f[_0x9743('0x55')],config[_0x9743('0x58')]['recording'])[_0x9743('0x29')](function(){return _0x1ec60f;});}return _0x1ec60f;}})['then'](function(_0x4db8f3){if(!_0x4db8f3){throw new db[(_0x9743('0x59'))]['ValidationError'](_0x9743('0x7e'));}_0x2a32f0=_0x4db8f3;return db['Setting'][_0x9743('0x7d')]({'where':{'id':0x1}});})[_0x9743('0x29')](handleEntityNotFound(_0x5ed9ba,null))[_0x9743('0x29')](function(_0xf0d235){if(_0xf0d235){_0x1eecee=_0xf0d235;if(!_0x1eecee[_0x9743('0x7f')]||!_0x1eecee[_0x9743('0x80')]||!_0x1eecee[_0x9743('0x81')]||!_0x1eecee['language']||!_0x1eecee['bucket']){throw new db[(_0x9743('0x59'))][(_0x9743('0x5a'))](_0x9743('0x82'));}if(_0x3ca281[_0x9743('0x4f')]['runSentiment']&&(!_0x1eecee['sentiment']||!_0x1eecee['sentimentAccountId']||!_0x1eecee[_0x9743('0x83')]||!_0x1eecee[_0x9743('0x84')]||!_0x1eecee[_0x9743('0x73')])){throw new db[(_0x9743('0x59'))]['ValidationError'](_0x9743('0x85'));}return db[_0x9743('0x86')][_0x9743('0x7d')]({'where':{'id':_0x1eecee[_0x9743('0x80')]}});}})['then'](function(_0x387daa){if(!_0x387daa){throw new db[(_0x9743('0x59'))]['ValidationError'](_0x9743('0x87'));}if(!_0x387daa['data1']||!_0x387daa[_0x9743('0x88')]){throw new db[(_0x9743('0x59'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x17735e=_0x387daa;return getBucketslist(_0x17735e['data1'],_0x17735e['data2'],_0x1eecee['transcribeRegion']);})[_0x9743('0x29')](function(_0x39c936){if(_0x39c936&&_0x39c936['Buckets']){var _0x494bf9=_[_0x9743('0x4d')](_0x39c936['Buckets'],function(_0xe4819d){return _0xe4819d[_0x9743('0x89')]===_0x1eecee[_0x9743('0x73')];});if(!_0x494bf9){logger[_0x9743('0x69')](util[_0x9743('0x36')](_0x9743('0x8a'),_0x3ca281['params']['id'],_0x1eecee[_0x9743('0x73')]));return createBucket(_0x17735e['data1'],_0x17735e[_0x9743('0x88')],_0x1eecee['transcribeRegion'],_0x1eecee[_0x9743('0x73')]);}logger[_0x9743('0x69')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x3ca281['params']['id'],_0x1eecee[_0x9743('0x73')]));return;}})[_0x9743('0x29')](function(_0x2db7b4){if(_0x2a32f0[_0x9743('0x7b')]===_0x9743('0x8b')){return transcribe(_0x3ca281[_0x9743('0x4b')]['id'],_0x17735e[_0x9743('0x8c')],_0x17735e[_0x9743('0x88')],_0x1eecee[_0x9743('0x81')],_0x1eecee[_0x9743('0x73')],_0x2a32f0[_0x9743('0x55')],_0x1eecee[_0x9743('0x84')]);}else{logger[_0x9743('0x69')](util['format'](_0x9743('0x8d'),_0x3ca281[_0x9743('0x4b')]['id']));return{'transcribeStatus':_0x9743('0x8e')};}})['then'](function(_0x1d0e18){if(_0x1d0e18){_0x1d0e18[_0x9743('0x8f')]=_0x3ca281[_0x9743('0x4f')][_0x9743('0x90')];return _0x2a32f0['updateAttributes'](_0x1d0e18);}})['then'](respondWithResult(_0x5ed9ba,null))[_0x9743('0x49')](handleError(_0x5ed9ba,null));};function writeFile(_0x37796d,_0x1bcc0b){return new Promise(function(_0x12a5f8,_0x19e17d){fs[_0x9743('0x91')](_0x1bcc0b,_0x37796d,function(_0x893f9a,_0x5747f0){if(_0x893f9a){return _0x19e17d(_0x893f9a);}else{return _0x12a5f8(_0x5747f0);}});});}exports[_0x9743('0x92')]=function(_0xbece87,_0x8a516c,_0x56382b){return db[_0x9743('0x30')]['findOne']({'where':{'id':_0xbece87['params']['id']}})[_0x9743('0x29')](handleEntityNotFound(_0x8a516c))['then'](function(_0xd9b822){if(_0xd9b822&&_0xd9b822[_0x9743('0x93')]){var _0x10bcba=_0xd9b822['fileText'];var _0x3747d3=config[_0x9743('0x94')]+_0x9743('0x95')+_0xd9b822['id']+_0x9743('0x96');if(fs[_0x9743('0x56')](_0x3747d3)){return _0x3747d3;}return writeFile(_0x10bcba,_0x3747d3)[_0x9743('0x29')](function(){return _0x3747d3;});}else{throw new db[(_0x9743('0x59'))][(_0x9743('0x5a'))]('Transcript\x20not\x20available');}})[_0x9743('0x29')](function(_0x5cf221){return _0x8a516c[_0x9743('0x52')](_0x5cf221);})[_0x9743('0x49')](handleError(_0x8a516c));}; \ No newline at end of file diff --git a/server/api/voiceRecording/voiceRecording.model.js b/server/api/voiceRecording/voiceRecording.model.js new file mode 100644 index 0000000..bdfc3eb --- /dev/null +++ b/server/api/voiceRecording/voiceRecording.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6d4a=['voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes','define','VoiceRecording'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6d4a,0x117));var _0xa6d4=function(_0x52d11a,_0x5025e4){_0x52d11a=_0x52d11a-0x0;var _0xc7d962=_0x6d4a[_0x52d11a];return _0xc7d962;};'use strict';var attributes=require(_0xa6d4('0x0'));module['exports']=function(_0x1495eb,_0x9d594f){return _0x1495eb[_0xa6d4('0x1')](_0xa6d4('0x2'),attributes,{'tableName':_0xa6d4('0x3'),'paranoid':![],'indexes':[{'name':_0xa6d4('0x4'),'fields':[_0xa6d4('0x4')]},{'name':_0xa6d4('0x5'),'fields':[_0xa6d4('0x5')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceRecording/voiceRecording.rpc.js b/server/api/voiceRecording/voiceRecording.rpc.js new file mode 100644 index 0000000..4fcb7d8 --- /dev/null +++ b/server/api/voiceRecording/voiceRecording.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8aad=['VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','attributes','then','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','ioredis','../../mysqldb','rpc','client','http','request','info'];(function(_0x20213,_0x1809ac){var _0xc797ea=function(_0x2a1943){while(--_0x2a1943){_0x20213['push'](_0x20213['shift']());}};_0xc797ea(++_0x1809ac);}(_0x8aad,0x146));var _0xd8aa=function(_0x308991,_0x4e4983){_0x308991=_0x308991-0x0;var _0x43c74b=_0x8aad[_0x308991];return _0x43c74b;};'use strict';var _=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var moment=require('moment');var BPromise=require(_0xd8aa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd8aa('0x3'));var db=require(_0xd8aa('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd8aa('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd8aa('0x6')][_0xd8aa('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16ea12,_0x4a4b10,_0x2a559d){return new BPromise(function(_0x1da411,_0x2a23b5){return client[_0xd8aa('0x8')](_0x16ea12,_0x2a559d)['then'](function(_0x5de228){logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));logger[_0xd8aa('0xc')](_0xd8aa('0xd'),_0x4a4b10,'request\x20sent',JSON[_0xd8aa('0xe')](_0x5de228));if(_0x5de228[_0xd8aa('0xf')]){if(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x10')]===0x1f4){logger[_0xd8aa('0xf')](_0xd8aa('0xa'),_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x2a23b5(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x1da411(_0x5de228[_0xd8aa('0xf')]['message']);}else{logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));_0x1da411(_0x5de228[_0xd8aa('0x12')]['message']);}})[_0xd8aa('0x13')](function(_0xa9ba1b){logger['error'](_0xd8aa('0xa'),_0x4a4b10,_0xa9ba1b);_0x2a23b5(_0xa9ba1b);});});}exports[_0xd8aa('0x14')]=function(_0x32e2cd){var _0x3a29ca=this;return new Promise(function(_0x2d34ac,_0x4953be){return db[_0xd8aa('0x15')][_0xd8aa('0x16')](_0x32e2cd[_0xd8aa('0x17')],{'raw':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd['options'][_0xd8aa('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd[_0xd8aa('0x18')][_0xd8aa('0x1a')]||null:null,'attributes':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd['options'][_0xd8aa('0x1b')]||null:null,'limit':_0x32e2cd[_0xd8aa('0x18')]?_0x32e2cd[_0xd8aa('0x18')]['limit']||null:null})[_0xd8aa('0x1c')](function(_0x7a4ce7){logger[_0xd8aa('0x9')](_0xd8aa('0x14'),_0x32e2cd);logger[_0xd8aa('0xc')](_0xd8aa('0x14'),_0x32e2cd,JSON[_0xd8aa('0xe')](_0x7a4ce7));_0x2d34ac(_0x7a4ce7);})[_0xd8aa('0x13')](function(_0x375f64){logger[_0xd8aa('0xf')](_0xd8aa('0x14'),_0x375f64[_0xd8aa('0x11')],_0x32e2cd);_0x4953be(_0x3a29ca[_0xd8aa('0xf')](0x1f4,_0x375f64['message']));});});};exports[_0xd8aa('0x1d')]=function(_0x59eb3f){var _0xd4d204=this;return new Promise(function(_0x1f6ab2,_0x26cff3){var _0x3696fd=require(_0xd8aa('0x1e'));var _0x19edee;return db[_0xd8aa('0x1f')][_0xd8aa('0x20')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0xd8aa('0x1c')](function(_0x34b792){_0x19edee=_0x34b792;return db[_0xd8aa('0x15')]['create'](_0x59eb3f[_0xd8aa('0x17')]);})['then'](function(_0x3052c6){if(_0x19edee[_0xd8aa('0x21')]&&fs[_0xd8aa('0x22')](_0x3052c6[_0xd8aa('0x23')])){var _0x44f783=util[_0xd8aa('0x24')](_0xd8aa('0x25'),_0x3052c6[_0xd8aa('0x23')]);return _0x3696fd['encryptFile'](_0x3052c6[_0xd8aa('0x23')],_0x44f783,config[_0xd8aa('0x26')][_0xd8aa('0x27')])[_0xd8aa('0x1c')](function(){fs[_0xd8aa('0x28')](_0x3052c6[_0xd8aa('0x23')]);logger[_0xd8aa('0x9')](_0xd8aa('0x29'));return _0x3052c6;});}return _0x3052c6;})['then'](function(_0x265217){logger[_0xd8aa('0x9')](_0xd8aa('0x1d'),_0x59eb3f);logger['debug'](_0xd8aa('0x1d'),_0x59eb3f,JSON[_0xd8aa('0xe')](_0x265217));_0x1f6ab2(_0x265217);})[_0xd8aa('0x13')](function(_0x45c216){logger[_0xd8aa('0xf')](_0xd8aa('0x1d'),_0x45c216[_0xd8aa('0x11')],_0x59eb3f);_0x26cff3(_0xd4d204[_0xd8aa('0xf')](0x1f4,_0x45c216[_0xd8aa('0x11')]));});});}; \ No newline at end of file diff --git a/server/api/voiceTransferReport/index.js b/server/api/voiceTransferReport/index.js new file mode 100644 index 0000000..b99a45f --- /dev/null +++ b/server/api/voiceTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x37c0=['index','isAuthenticated','describe','/:id','put','update','delete','destroy','exports','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x37c0,0x1c9));var _0x037c=function(_0x4021de,_0x21c195){_0x4021de=_0x4021de-0x0;var _0x2bc644=_0x37c0[_0x4021de];return _0x2bc644;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x037c('0x0'));var router=express[_0x037c('0x1')]();var fs_extra=require(_0x037c('0x2'));var auth=require(_0x037c('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x037c('0x4'));var controller=require(_0x037c('0x5'));router[_0x037c('0x6')]('/',auth['isAuthenticated'](),controller[_0x037c('0x7')]);router['get']('/describe',auth[_0x037c('0x8')](),controller[_0x037c('0x9')]);router[_0x037c('0x6')](_0x037c('0xa'),auth[_0x037c('0x8')](),controller['show']);router['post']('/',auth[_0x037c('0x8')](),controller['create']);router[_0x037c('0xb')](_0x037c('0xa'),auth['isAuthenticated'](),controller[_0x037c('0xc')]);router[_0x037c('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x037c('0xe')]);module[_0x037c('0xf')]=router; \ No newline at end of file diff --git a/server/api/voiceTransferReport/voiceTransferReport.attributes.js b/server/api/voiceTransferReport/voiceTransferReport.attributes.js new file mode 100644 index 0000000..0391d85 --- /dev/null +++ b/server/api/voiceTransferReport/voiceTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa7b4=['attended','STRING','Yes','moment','exports','blind'];(function(_0x455293,_0x26be07){var _0x2739a3=function(_0x508823){while(--_0x508823){_0x455293['push'](_0x455293['shift']());}};_0x2739a3(++_0x26be07);}(_0xa7b4,0x8d));var _0x4a7b=function(_0x46f6c6,_0x5f337d){_0x46f6c6=_0x46f6c6-0x0;var _0x462bb8=_0xa7b4[_0x46f6c6];return _0x462bb8;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x4a7b('0x0'));module[_0x4a7b('0x1')]={'type':{'type':Sequelize['ENUM'](_0x4a7b('0x2'),_0x4a7b('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0x4a7b('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x4a7b('0x4')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0x4a7b('0x4')]},'transferercontext':{'type':Sequelize[_0x4a7b('0x4')]},'transfererexten':{'type':Sequelize[_0x4a7b('0x4')]},'transfererlinkedid':{'type':Sequelize[_0x4a7b('0x4')]},'transfereechannel':{'type':Sequelize[_0x4a7b('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0x4a7b('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x4a7b('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x4a7b('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x4a7b('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x4a7b('0x4')]},'transfereecontext':{'type':Sequelize[_0x4a7b('0x4')]},'transfereeexten':{'type':Sequelize[_0x4a7b('0x4')]},'transfereelinkedid':{'type':Sequelize[_0x4a7b('0x4')]},'isexternal':{'type':Sequelize['ENUM'](_0x4a7b('0x5'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x4a7b('0x4')]}}; \ No newline at end of file diff --git a/server/api/voiceTransferReport/voiceTransferReport.controller.js b/server/api/voiceTransferReport/voiceTransferReport.controller.js new file mode 100644 index 0000000..8f6b438 --- /dev/null +++ b/server/api/voiceTransferReport/voiceTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1c31=['status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','name','map','VoiceTransferReport','fieldName','type','key','query','keys','filters','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','rows','catch','show','params','fields','include','options','find','create','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','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/environment','../../config/license/util','sendStatus'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x1c31,0x153));var _0x11c3=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x1c31[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x11c3('0x0'));var rimraf=require(_0x11c3('0x1'));var zipdir=require(_0x11c3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x11c3('0x3'));var BPromise=require(_0x11c3('0x4'));var Mustache=require(_0x11c3('0x5'));var util=require('util');var path=require(_0x11c3('0x6'));var sox=require(_0x11c3('0x7'));var csv=require(_0x11c3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x11c3('0x9'));var _=require(_0x11c3('0xa'));var squel=require(_0x11c3('0xb'));var crypto=require(_0x11c3('0xc'));var jsforce=require(_0x11c3('0xd'));var deskjs=require(_0x11c3('0xe'));var toCsv=require(_0x11c3('0x8'));var querystring=require(_0x11c3('0xf'));var Papa=require('papaparse');var Redis=require(_0x11c3('0x10'));var authService=require(_0x11c3('0x11'));var qs=require(_0x11c3('0x12'));var as=require(_0x11c3('0x13'));var hardwareService=require(_0x11c3('0x14'));var logger=require(_0x11c3('0x15'))(_0x11c3('0x16'));var utils=require('../../config/utils');var config=require(_0x11c3('0x17'));var licenseUtil=require(_0x11c3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46470d,_0x583885){_0x583885=_0x583885||0xcc;return function(_0x7b157f){if(_0x7b157f){return _0x46470d[_0x11c3('0x19')](_0x583885);}return _0x46470d[_0x11c3('0x1a')](_0x583885)[_0x11c3('0x1b')]();};}function respondWithResult(_0x5ec73f,_0x4c5371){_0x4c5371=_0x4c5371||0xc8;return function(_0x2e5c45){if(_0x2e5c45){return _0x5ec73f[_0x11c3('0x1a')](_0x4c5371)['json'](_0x2e5c45);}};}function respondWithFilteredResult(_0x14d4dc,_0x1f7de7){return function(_0x1ada43){if(_0x1ada43){var _0x121538=typeof _0x1f7de7[_0x11c3('0x1c')]==='undefined'&&typeof _0x1f7de7[_0x11c3('0x1d')]===_0x11c3('0x1e');var _0x4b9068=_0x1ada43[_0x11c3('0x1f')];var _0x4453e6=_0x121538?0x0:_0x1f7de7[_0x11c3('0x1c')];var _0x374f77=_0x121538?_0x1ada43[_0x11c3('0x1f')]:_0x1f7de7[_0x11c3('0x1c')]+_0x1f7de7['limit'];var _0x56549c;if(_0x374f77>=_0x4b9068){_0x374f77=_0x4b9068;_0x56549c=0xc8;}else{_0x56549c=0xce;}_0x14d4dc[_0x11c3('0x1a')](_0x56549c);return _0x14d4dc[_0x11c3('0x20')](_0x11c3('0x21'),_0x4453e6+'-'+_0x374f77+'/'+_0x4b9068)[_0x11c3('0x22')](_0x1ada43);}return null;};}function patchUpdates(_0x3f6022){return function(_0x3bee5a){try{jsonpatch[_0x11c3('0x23')](_0x3bee5a,_0x3f6022,!![]);}catch(_0xbb3d72){return BPromise[_0x11c3('0x24')](_0xbb3d72);}return _0x3bee5a[_0x11c3('0x25')]();};}function saveUpdates(_0x561842,_0x5e29ca){return function(_0x4b92ab){if(_0x4b92ab){return _0x4b92ab[_0x11c3('0x26')](_0x561842)[_0x11c3('0x27')](function(_0x3c2e7a){return _0x3c2e7a;});}return null;};}function removeEntity(_0xdc53b9,_0x4c035f){return function(_0x40b21b){if(_0x40b21b){return _0x40b21b[_0x11c3('0x28')]()[_0x11c3('0x27')](function(){_0xdc53b9[_0x11c3('0x1a')](0xcc)[_0x11c3('0x1b')]();});}};}function handleEntityNotFound(_0x5c6641,_0x1043e9){return function(_0x19b93d){if(!_0x19b93d){_0x5c6641[_0x11c3('0x19')](0x194);}return _0x19b93d;};}function handleError(_0x6e02f,_0x29bf00){_0x29bf00=_0x29bf00||0x1f4;return function(_0x316a81){logger['error'](_0x316a81['stack']);if(_0x316a81[_0x11c3('0x29')]){delete _0x316a81['name'];}_0x6e02f[_0x11c3('0x1a')](_0x29bf00)['send'](_0x316a81);};}exports['index']=function(_0xe96cc8,_0x2bf215){var _0x44be24={},_0x2e7dea={},_0x43c2a9={'count':0x0,'rows':[]};var _0x9a403d=_[_0x11c3('0x2a')](db[_0x11c3('0x2b')]['rawAttributes'],function(_0x23462b){return{'name':_0x23462b[_0x11c3('0x2c')],'type':_0x23462b[_0x11c3('0x2d')][_0x11c3('0x2e')]};});_0x2e7dea['model']=_['map'](_0x9a403d,_0x11c3('0x29'));_0x2e7dea[_0x11c3('0x2f')]=_[_0x11c3('0x30')](_0xe96cc8[_0x11c3('0x2f')]);_0x2e7dea[_0x11c3('0x31')]=_[_0x11c3('0x32')](_0x2e7dea['model'],_0x2e7dea[_0x11c3('0x2f')]);_0x44be24[_0x11c3('0x33')]=_[_0x11c3('0x32')](_0x2e7dea[_0x11c3('0x34')],qs['fields'](_0xe96cc8['query']['fields']));_0x44be24[_0x11c3('0x33')]=_0x44be24[_0x11c3('0x33')][_0x11c3('0x35')]?_0x44be24[_0x11c3('0x33')]:_0x2e7dea[_0x11c3('0x34')];if(!_0xe96cc8['query'][_0x11c3('0x36')](_0x11c3('0x37'))){_0x44be24[_0x11c3('0x1d')]=qs['limit'](_0xe96cc8[_0x11c3('0x2f')][_0x11c3('0x1d')]);_0x44be24[_0x11c3('0x1c')]=qs[_0x11c3('0x1c')](_0xe96cc8[_0x11c3('0x2f')][_0x11c3('0x1c')]);}_0x44be24[_0x11c3('0x38')]=qs[_0x11c3('0x39')](_0xe96cc8['query']['sort']);_0x44be24[_0x11c3('0x3a')]=qs[_0x11c3('0x31')](_[_0x11c3('0x3b')](_0xe96cc8[_0x11c3('0x2f')],_0x2e7dea[_0x11c3('0x31')]),_0x9a403d);if(_0xe96cc8[_0x11c3('0x2f')][_0x11c3('0x3c')]){_0x44be24[_0x11c3('0x3a')]=_[_0x11c3('0x3d')](_0x44be24[_0x11c3('0x3a')],{'$or':_['map'](_0x9a403d,function(_0x402353){if(_0x402353[_0x11c3('0x2d')]!=='VIRTUAL'){var _0x158d19={};_0x158d19[_0x402353[_0x11c3('0x29')]]={'$like':'%'+_0xe96cc8[_0x11c3('0x2f')][_0x11c3('0x3c')]+'%'};return _0x158d19;}})});}_0x44be24=_[_0x11c3('0x3d')]({},_0x44be24,_0xe96cc8['options']);var _0x5ad6ba={'where':_0x44be24[_0x11c3('0x3a')]};return db['VoiceTransferReport'][_0x11c3('0x1f')](_0x5ad6ba)[_0x11c3('0x27')](function(_0x4e54c3){_0x43c2a9[_0x11c3('0x1f')]=_0x4e54c3;if(_0xe96cc8[_0x11c3('0x2f')][_0x11c3('0x3e')]){_0x44be24['include']=[{'all':!![]}];}return db[_0x11c3('0x2b')]['findAll'](_0x44be24);})[_0x11c3('0x27')](function(_0x3aedc6){_0x43c2a9[_0x11c3('0x3f')]=_0x3aedc6;return _0x43c2a9;})['then'](respondWithFilteredResult(_0x2bf215,_0x44be24))[_0x11c3('0x40')](handleError(_0x2bf215,null));};exports[_0x11c3('0x41')]=function(_0x1bb4df,_0x5c2a90){var _0x173819={'raw':!![],'where':{'id':_0x1bb4df[_0x11c3('0x42')]['id']}},_0x278fca={};_0x278fca[_0x11c3('0x34')]=_[_0x11c3('0x30')](db[_0x11c3('0x2b')]['rawAttributes']);_0x278fca['query']=_[_0x11c3('0x30')](_0x1bb4df[_0x11c3('0x2f')]);_0x278fca[_0x11c3('0x31')]=_[_0x11c3('0x32')](_0x278fca[_0x11c3('0x34')],_0x278fca[_0x11c3('0x2f')]);_0x173819[_0x11c3('0x33')]=_['intersection'](_0x278fca['model'],qs[_0x11c3('0x43')](_0x1bb4df['query'][_0x11c3('0x43')]));_0x173819['attributes']=_0x173819[_0x11c3('0x33')][_0x11c3('0x35')]?_0x173819[_0x11c3('0x33')]:_0x278fca[_0x11c3('0x34')];if(_0x1bb4df[_0x11c3('0x2f')]['includeAll']){_0x173819[_0x11c3('0x44')]=[{'all':!![]}];}_0x173819=_[_0x11c3('0x3d')]({},_0x173819,_0x1bb4df[_0x11c3('0x45')]);return db['VoiceTransferReport'][_0x11c3('0x46')](_0x173819)[_0x11c3('0x27')](handleEntityNotFound(_0x5c2a90,null))['then'](respondWithResult(_0x5c2a90,null))[_0x11c3('0x40')](handleError(_0x5c2a90,null));};exports[_0x11c3('0x47')]=function(_0x33827e,_0x8c8aa0){return db[_0x11c3('0x2b')][_0x11c3('0x47')](_0x33827e['body'],{})[_0x11c3('0x27')](respondWithResult(_0x8c8aa0,0xc9))[_0x11c3('0x40')](handleError(_0x8c8aa0,null));};exports[_0x11c3('0x26')]=function(_0x1dd223,_0x35e0f0){if(_0x1dd223['body']['id']){delete _0x1dd223['body']['id'];}return db['VoiceTransferReport'][_0x11c3('0x46')]({'where':{'id':_0x1dd223[_0x11c3('0x42')]['id']}})[_0x11c3('0x27')](handleEntityNotFound(_0x35e0f0,null))[_0x11c3('0x27')](saveUpdates(_0x1dd223['body'],null))[_0x11c3('0x27')](respondWithResult(_0x35e0f0,null))[_0x11c3('0x40')](handleError(_0x35e0f0,null));};exports[_0x11c3('0x28')]=function(_0x134beb,_0x237064){return db[_0x11c3('0x2b')][_0x11c3('0x46')]({'where':{'id':_0x134beb[_0x11c3('0x42')]['id']}})[_0x11c3('0x27')](handleEntityNotFound(_0x237064,null))[_0x11c3('0x27')](removeEntity(_0x237064,null))[_0x11c3('0x40')](handleError(_0x237064,null));};exports[_0x11c3('0x48')]=function(_0xceeb92,_0x3437f2){return db['VoiceTransferReport']['describe']()[_0x11c3('0x27')](respondWithResult(_0x3437f2,null))[_0x11c3('0x40')](handleError(_0x3437f2,null));}; \ No newline at end of file diff --git a/server/api/voiceTransferReport/voiceTransferReport.model.js b/server/api/voiceTransferReport/voiceTransferReport.model.js new file mode 100644 index 0000000..b61834f --- /dev/null +++ b/server/api/voiceTransferReport/voiceTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x18ad=['moment','bluebird','request-promise','path','../../config/environment','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api'];(function(_0xdf22cc,_0x3fceff){var _0x1094a7=function(_0x12a4d4){while(--_0x12a4d4){_0xdf22cc['push'](_0xdf22cc['shift']());}};_0x1094a7(++_0x3fceff);}(_0x18ad,0x1c3));var _0xd18a=function(_0x5534fe,_0x43c22e){_0x5534fe=_0x5534fe-0x0;var _0x3d1dc2=_0x18ad[_0x5534fe];return _0x3d1dc2;};'use strict';var _=require(_0xd18a('0x0'));var util=require(_0xd18a('0x1'));var logger=require(_0xd18a('0x2'))(_0xd18a('0x3'));var moment=require(_0xd18a('0x4'));var BPromise=require(_0xd18a('0x5'));var rp=require(_0xd18a('0x6'));var fs=require('fs');var path=require(_0xd18a('0x7'));var rimraf=require('rimraf');var config=require(_0xd18a('0x8'));var attributes=require('./voiceTransferReport.attributes');module[_0xd18a('0x9')]=function(_0x4ee8f0,_0x5757dc){return _0x4ee8f0[_0xd18a('0xa')](_0xd18a('0xb'),attributes,{'tableName':_0xd18a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/voiceTransferReport/voiceTransferReport.rpc.js b/server/api/voiceTransferReport/voiceTransferReport.rpc.js new file mode 100644 index 0000000..9274bf7 --- /dev/null +++ b/server/api/voiceTransferReport/voiceTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xdae2=['bluebird','randomstring','../../config/utils','../../config/environment','client','http','request','then','info','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceTransferReport,\x20%s,\x20%s','result','message','catch','body','options','raw','CreateVoiceTransferReport','lodash','util','moment'];(function(_0x253fc8,_0x2882fa){var _0x4b3bbd=function(_0x4075ab){while(--_0x4075ab){_0x253fc8['push'](_0x253fc8['shift']());}};_0x4b3bbd(++_0x2882fa);}(_0xdae2,0x1b7));var _0x2dae=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xdae2[_0x47aa64];return _0x549c7a;};'use strict';var _=require(_0x2dae('0x0'));var util=require(_0x2dae('0x1'));var moment=require(_0x2dae('0x2'));var BPromise=require(_0x2dae('0x3'));var rs=require(_0x2dae('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2dae('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x2dae('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2dae('0x7')][_0x2dae('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x19c1e8,_0x2bc1db,_0x338769){return new BPromise(function(_0x538262,_0x5f5541){return client[_0x2dae('0x9')](_0x19c1e8,_0x338769)[_0x2dae('0xa')](function(_0x41e9ec){logger[_0x2dae('0xb')]('VoiceTransferReport,\x20%s,\x20%s',_0x2bc1db,_0x2dae('0xc'));logger[_0x2dae('0xd')](_0x2dae('0xe'),_0x2bc1db,_0x2dae('0xc'),JSON[_0x2dae('0xf')](_0x41e9ec));if(_0x41e9ec['error']){if(_0x41e9ec[_0x2dae('0x10')][_0x2dae('0x11')]===0x1f4){logger['error'](_0x2dae('0x12'),_0x2bc1db,_0x41e9ec['error']['message']);return _0x5f5541(_0x41e9ec['error']['message']);}logger[_0x2dae('0x10')](_0x2dae('0x12'),_0x2bc1db,_0x41e9ec[_0x2dae('0x10')]['message']);return _0x538262(_0x41e9ec[_0x2dae('0x10')]['message']);}else{logger['info']('VoiceTransferReport,\x20%s,\x20%s',_0x2bc1db,'request\x20sent');_0x538262(_0x41e9ec[_0x2dae('0x13')][_0x2dae('0x14')]);}})[_0x2dae('0x15')](function(_0x5ad083){logger[_0x2dae('0x10')](_0x2dae('0x12'),_0x2bc1db,_0x5ad083);_0x5f5541(_0x5ad083);});});}exports['CreateVoiceTransferReport']=function(_0x1ecb79){var _0x54fbb5=this;return new Promise(function(_0xaf81d1,_0x1dfc96){return db['VoiceTransferReport']['create'](_0x1ecb79[_0x2dae('0x16')],{'raw':_0x1ecb79[_0x2dae('0x17')]?_0x1ecb79[_0x2dae('0x17')][_0x2dae('0x18')]===undefined?!![]:![]:!![]})[_0x2dae('0xa')](function(_0x41c654){logger[_0x2dae('0xb')](_0x2dae('0x19'),_0x1ecb79);logger[_0x2dae('0xd')](_0x2dae('0x19'),_0x1ecb79,JSON['stringify'](_0x41c654));_0xaf81d1(_0x41c654);})[_0x2dae('0x15')](function(_0x54a251){logger[_0x2dae('0x10')](_0x2dae('0x19'),_0x54a251[_0x2dae('0x14')],_0x1ecb79);_0x1dfc96(_0x54fbb5['error'](0x1f4,_0x54a251['message']));});});}; \ No newline at end of file diff --git a/server/api/webbar/index.js b/server/api/webbar/index.js new file mode 100644 index 0000000..3a863d7 --- /dev/null +++ b/server/api/webbar/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xe5b3=['transfer','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','hangup','answer','hold','/unhold','unhold','/calls','calls','/transfer'];(function(_0x2552e9,_0x4715e7){var _0x2428eb=function(_0x21d38b){while(--_0x21d38b){_0x2552e9['push'](_0x2552e9['shift']());}};_0x2428eb(++_0x4715e7);}(_0xe5b3,0x133));var _0x3e5b=function(_0x18f46a,_0x157938){_0x18f46a=_0x18f46a-0x0;var _0x3e786e=_0xe5b3[_0x18f46a];return _0x3e786e;};'use strict';var express=require('express');var router=express[_0x3e5b('0x0')]();var auth=require(_0x3e5b('0x1'));var controller=require(_0x3e5b('0x2'));router[_0x3e5b('0x3')](_0x3e5b('0x4'),auth[_0x3e5b('0x5')](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0x7')]);router[_0x3e5b('0x3')](_0x3e5b('0x8'),auth[_0x3e5b('0x5')](),auth['isWebrtcLicence'](),controller[_0x3e5b('0x9')]);router[_0x3e5b('0x3')]('/answer',auth[_0x3e5b('0x5')](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0xa')]);router[_0x3e5b('0x3')]('/hold',auth['isAuthenticated'](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0xb')]);router[_0x3e5b('0x3')](_0x3e5b('0xc'),auth[_0x3e5b('0x5')](),auth['isWebrtcLicence'](),controller[_0x3e5b('0xd')]);router['post'](_0x3e5b('0xe'),auth[_0x3e5b('0x5')](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0xf')]);router[_0x3e5b('0x3')](_0x3e5b('0x10'),auth[_0x3e5b('0x5')](),auth['isWebrtcLicence'](),controller[_0x3e5b('0x11')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/webbar/webbar.controller.js b/server/api/webbar/webbar.controller.js new file mode 100644 index 0000000..3f19ff8 --- /dev/null +++ b/server/api/webbar/webbar.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4bc3=['transfer\x20executed!','path','lodash','../../config/environment','util','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','log','handleError:','stack','name','status','send','NotFound','error','code','message','result','catch','findOne','all','then','filter','rows','UserId','sessionId','length','\x20not\x20found!','originate\x20fired:','body','userId','callerId','info','entityFound:','user:%s','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','format','webbar:hangup','hangup\x20executed!','answer\x20fired:','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','webbar:transfer'];(function(_0x3e00b7,_0x4a7b42){var _0x53fa95=function(_0xe2a798){while(--_0xe2a798){_0x3e00b7['push'](_0x3e00b7['shift']());}};_0x53fa95(++_0x4a7b42);}(_0x4bc3,0x16e));var _0x34bc=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0x4bc3[_0xc0a3d3];return _0x3386e8;};'use strict';var path=require(_0x34bc('0x0'));var fs=require('fs');var _=require(_0x34bc('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x34bc('0x2'));var util=require(_0x34bc('0x3'));var BPromise=require('bluebird');var jayson=require(_0x34bc('0x4'));var amiClient=jayson[_0x34bc('0x5')][_0x34bc('0x6')]({'port':0x232a});var logger=require(_0x34bc('0x7'))(_0x34bc('0x8'));var Redis=require(_0x34bc('0x9'));config[_0x34bc('0xa')]=_['defaults'](config[_0x34bc('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x34bc('0xa')]));var Schema=require(_0x34bc('0xb'));var originateValidation=new Schema({'userId':{'type':_0x34bc('0xc'),'required':[!![],_0x34bc('0xd')]},'callNumber':{'type':_0x34bc('0xe'),'required':[!![],_0x34bc('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x34bc('0xc'),'required':[!![],_0x34bc('0xd')]},'sessionId':{'type':_0x34bc('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x34bc('0xd')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x34bc('0xc'),'required':[!![],_0x34bc('0xd')]},'sessionId':{'type':_0x34bc('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x34bc('0xe'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x34bc('0xc'),'required':[!![],_0x34bc('0xd')]},'sessionId':{'type':_0x34bc('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x34bc('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x34bc('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x34bc('0xc'),'required':[!![],_0x34bc('0xd')]}});function emit(_0x25da29,_0x2db2dd,_0x69542f){logger['info'](_0x25da29,_0x2db2dd,JSON['stringify'](_0x69542f));io['to'](_0x25da29)['emit'](_0x2db2dd,_0x69542f);}function handleError(_0x4205eb){return function(_0x3eaedf){console[_0x34bc('0x10')](_0x34bc('0x11'),_0x3eaedf,_0x3eaedf instanceof RangeError);logger['error'](_0x3eaedf[_0x34bc('0x12')]);if(_0x3eaedf instanceof RangeError){if(_0x3eaedf[_0x34bc('0x13')]){delete _0x3eaedf['name'];}_0x4205eb[_0x34bc('0x14')](0x194)[_0x34bc('0x15')](_0x3eaedf);}else{if(_0x3eaedf['name']){delete _0x3eaedf[_0x34bc('0x13')];}_0x4205eb[_0x34bc('0x14')](0x1f4)[_0x34bc('0x15')](_0x3eaedf);}};}function checkError(){return function(_0x120bd3){if(!_0x120bd3){throw new RangeError(_0x34bc('0x16'));}return _0x120bd3;};}function respondWithRpcPromise(_0x42c814,_0x48087e){return new BPromise(function(_0x40e128,_0x3c9939){var _0x38882c=amiClient;return _0x38882c['request'](_0x42c814,_0x48087e)['then'](function(_0x358d51){if(_0x358d51[_0x34bc('0x17')]){if(_0x358d51[_0x34bc('0x17')][_0x34bc('0x18')]===0x1f4){return _0x3c9939(_0x358d51[_0x34bc('0x17')][_0x34bc('0x19')]);}return _0x40e128(_0x358d51[_0x34bc('0x17')][_0x34bc('0x19')]);}else{_0x40e128(_0x358d51[_0x34bc('0x1a')]);}})[_0x34bc('0x1b')](function(_0x2de017){_0x3c9939(_0x2de017);});});}function getAgent(_0x1edcb0){return db['User'][_0x34bc('0x1c')]({'where':{'id':_0x1edcb0,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x3da96b,_0x5332c8){return new BPromise(function(_0x4082c3,_0x446b58){var _0x46fd76=respondWithRpcPromise('VoiceChannels');var _0x2e6d96=getAgent(_0x3da96b);Promise[_0x34bc('0x1d')]([_0x46fd76,_0x2e6d96])[_0x34bc('0x1e')](function(_0x1a83f7){var _0x2bb874=_0x1a83f7[0x0];var _0x33bf46=_0x1a83f7[0x1];var _0x520fd4=_[_0x34bc('0x1f')](_0x2bb874[_0x34bc('0x20')],function(_0x22aacc){return _0x22aacc[_0x34bc('0x21')]==_0x33bf46['id']&&_0x22aacc[_0x34bc('0x22')]==_0x5332c8;});if(_0x520fd4[_0x34bc('0x23')]==0x1){_0x4082c3(_0x33bf46);}else{_0x446b58(new RangeError('sessionId\x20'+_0x5332c8+_0x34bc('0x24')));}});});}exports['originate']=function(_0x530748,_0x42fd40){logger['info'](_0x34bc('0x25'),_0x530748[_0x34bc('0x26')]);var _0xb446f4=originateValidation[_0x34bc('0xb')](_0x530748[_0x34bc('0x26')]);if(_0xb446f4[_0x34bc('0x23')]>0x0){return _0x42fd40[_0x34bc('0x14')](0x190)['json'](_0xb446f4);}var _0xbd59f9=_0x530748[_0x34bc('0x26')][_0x34bc('0x27')];var _0x3224c7=_0x530748[_0x34bc('0x26')]['callNumber'];var _0x3bc739=_0x530748[_0x34bc('0x26')][_0x34bc('0x28')];var _0x493835=_0x530748[_0x34bc('0x26')]['callbackUrl'];return getAgent(_0xbd59f9)['then'](function(_0x39e630){logger[_0x34bc('0x29')](_0x34bc('0x2a'),_0x39e630[_0x34bc('0x13')]);emit(util['format'](_0x34bc('0x2b'),_0x39e630[_0x34bc('0x13')]),_0x34bc('0x2c'),{'callNumber':_0x3224c7,'callerId':_0x3bc739,'callbackUrl':_0x493835});return _0x42fd40['status'](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x2e')});})[_0x34bc('0x1b')](handleError(_0x42fd40));};exports[_0x34bc('0x2f')]=function(_0x53a43a,_0x2ac72b){logger[_0x34bc('0x29')](_0x34bc('0x30'),_0x53a43a['body']);var _0x246a86=hangupValidation[_0x34bc('0xb')](_0x53a43a[_0x34bc('0x26')]);if(_0x246a86[_0x34bc('0x23')]>0x0){return _0x2ac72b[_0x34bc('0x14')](0x190)['json'](_0x246a86);}var _0xca2aaf=_0x53a43a[_0x34bc('0x26')][_0x34bc('0x27')];var _0x174cfe=_0x53a43a[_0x34bc('0x26')]['sessionId'];return getAgent(_0xca2aaf)[_0x34bc('0x1e')](function(_0x50f1ee){logger[_0x34bc('0x29')](_0x34bc('0x2a'),_0x50f1ee[_0x34bc('0x13')]);emit(util[_0x34bc('0x31')]('user:%s',_0x50f1ee[_0x34bc('0x13')]),_0x34bc('0x32'),{'sessionId':_0x174cfe});return _0x2ac72b['status'](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x33')});})[_0x34bc('0x1b')](handleError(_0x2ac72b));};exports['answer']=function(_0x31afd3,_0xbf2127){logger[_0x34bc('0x29')](_0x34bc('0x34'),_0x31afd3[_0x34bc('0x26')]);var _0x20debf=answerValidation[_0x34bc('0xb')](_0x31afd3[_0x34bc('0x26')]);if(_0x20debf[_0x34bc('0x23')]>0x0){return _0xbf2127[_0x34bc('0x14')](0x190)[_0x34bc('0x2d')](_0x20debf);}var _0x570824=_0x31afd3['body'][_0x34bc('0x27')];var _0x1e1bf3=_0x31afd3[_0x34bc('0x26')][_0x34bc('0x22')];return getAgent(_0x570824)[_0x34bc('0x1e')](function(_0x2db155){logger['info'](_0x34bc('0x2a'),_0x2db155['name']);emit(util[_0x34bc('0x31')](_0x34bc('0x2b'),_0x2db155[_0x34bc('0x13')]),'webbar:answer',{'sessionId':_0x1e1bf3});return _0xbf2127[_0x34bc('0x14')](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x35')});})[_0x34bc('0x1b')](handleError(_0xbf2127));};exports[_0x34bc('0x36')]=function(_0x26924c,_0xba179d){logger[_0x34bc('0x29')](_0x34bc('0x37'),_0x26924c[_0x34bc('0x26')]);var _0x100c70=holdValidation[_0x34bc('0xb')](_0x26924c['body']);if(_0x100c70['length']>0x0){return _0xba179d[_0x34bc('0x14')](0x190)[_0x34bc('0x2d')](_0x100c70);}var _0x180a51=_0x26924c['body']['userId'];var _0x898cf8=_0x26924c[_0x34bc('0x26')][_0x34bc('0x22')];return getAgent(_0x180a51)['then'](function(_0x43bfb7){logger[_0x34bc('0x29')]('entityFound:',_0x43bfb7[_0x34bc('0x13')]);emit(util['format'](_0x34bc('0x2b'),_0x43bfb7['name']),_0x34bc('0x38'),{'sessionId':_0x898cf8});return _0xba179d[_0x34bc('0x14')](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x39')});})['catch'](handleError(_0xba179d));};exports[_0x34bc('0x3a')]=function(_0x2bbd0b,_0x103bd1){logger[_0x34bc('0x29')](_0x34bc('0x3b'),_0x2bbd0b[_0x34bc('0x26')]);var _0x18eadd=unholdValidation[_0x34bc('0xb')](_0x2bbd0b['body']);if(_0x18eadd['length']>0x0){return _0x103bd1['status'](0x190)[_0x34bc('0x2d')](_0x18eadd);}var _0x1ed088=_0x2bbd0b['body'][_0x34bc('0x27')];var _0xe7b515=_0x2bbd0b[_0x34bc('0x26')][_0x34bc('0x22')];return getAgent(_0x1ed088)[_0x34bc('0x1e')](function(_0x5c82c2){logger['info']('entityFound:',_0x5c82c2[_0x34bc('0x13')]);emit(util[_0x34bc('0x31')](_0x34bc('0x2b'),_0x5c82c2[_0x34bc('0x13')]),_0x34bc('0x3c'),{'sessionId':_0xe7b515});return _0x103bd1['status'](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x3d')});})[_0x34bc('0x1b')](handleError(_0x103bd1));};exports[_0x34bc('0x3e')]=function(_0x58e4c3,_0x1a2cf2){logger[_0x34bc('0x29')](_0x34bc('0x3f'),_0x1a2cf2[_0x34bc('0x26')]);var _0x279a83=callsValidation[_0x34bc('0xb')](_0x58e4c3[_0x34bc('0x26')]);if(_0x279a83[_0x34bc('0x23')]>0x0){return _0x1a2cf2[_0x34bc('0x14')](0x190)[_0x34bc('0x2d')](_0x279a83);}var _0x39c580=_0x58e4c3[_0x34bc('0x26')][_0x34bc('0x27')];var _0x592e81=respondWithRpcPromise(_0x34bc('0x40'));var _0x2cc1f5=getAgent(_0x39c580);return Promise[_0x34bc('0x1d')]([_0x592e81,_0x2cc1f5])[_0x34bc('0x1e')](function(_0x426df1){var _0x1b3704=_0x426df1[0x0];var _0x31cf3a=_0x426df1[0x1];var _0x43337d=_[_0x34bc('0x1f')](_0x1b3704[_0x34bc('0x20')],function(_0x11cd4c){return _0x11cd4c[_0x34bc('0x21')]==_0x31cf3a['id'];});return _0x1a2cf2[_0x34bc('0x14')](0xc8)[_0x34bc('0x2d')]({'count':_0x43337d['length'],'rows':_0x43337d});})[_0x34bc('0x1b')](handleError(_0x1a2cf2));};exports[_0x34bc('0x41')]=function(_0x36143f,_0x320d86){logger[_0x34bc('0x29')](_0x34bc('0x42'),_0x36143f[_0x34bc('0x26')]);var _0x36d2fb=conferenceValidation[_0x34bc('0xb')](_0x36143f[_0x34bc('0x26')]);if(_0x36d2fb['length']>0x0){return _0x320d86[_0x34bc('0x14')](0x190)[_0x34bc('0x2d')](_0x36d2fb);}var _0x51bbbd=_0x36143f['body'][_0x34bc('0x27')];return getAgent(_0x51bbbd)[_0x34bc('0x1e')](function(_0x9dd563){logger[_0x34bc('0x29')]('entityFound:',_0x9dd563[_0x34bc('0x13')]);emit(util[_0x34bc('0x31')](_0x34bc('0x2b'),_0x9dd563[_0x34bc('0x13')]),_0x34bc('0x43'));return _0x320d86[_0x34bc('0x14')](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x44')});})['catch'](handleError(_0x320d86));};exports['transfer']=function(_0x405abb,_0x1dd036){logger[_0x34bc('0x29')](_0x34bc('0x45'),_0x405abb[_0x34bc('0x26')]);var _0x3066d9=transferValidation[_0x34bc('0xb')](_0x405abb[_0x34bc('0x26')]);if(_0x3066d9[_0x34bc('0x23')]>0x0){return _0x1dd036[_0x34bc('0x14')](0x190)[_0x34bc('0x2d')](_0x3066d9);}var _0x2d0d2c=_0x405abb[_0x34bc('0x26')][_0x34bc('0x27')];var _0x4d7c67=_0x405abb[_0x34bc('0x26')][_0x34bc('0x22')];var _0xa4e120=_0x405abb['body'][_0x34bc('0x46')];return getAgent(_0x2d0d2c)[_0x34bc('0x1e')](function(_0x124945){logger[_0x34bc('0x29')]('entityFound:',_0x124945[_0x34bc('0x13')]);emit(util[_0x34bc('0x31')](_0x34bc('0x2b'),_0x124945[_0x34bc('0x13')]),_0x34bc('0x47'),{'sessionId':_0x4d7c67,'transferNumber':_0xa4e120});return _0x1dd036['status'](0xc8)[_0x34bc('0x2d')]({'error':![],'message':_0x34bc('0x48')});})[_0x34bc('0x1b')](handleError(_0x1dd036));}; \ No newline at end of file diff --git a/server/api/whatsappAccount/index.js b/server/api/whatsappAccount/index.js new file mode 100644 index 0000000..d96cb5f --- /dev/null +++ b/server/api/whatsappAccount/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x33af=['getAnswers','/:id/users','/:id/applications','post','create','addDisposition','addAgents','addApplications','/:id/notify','/:id/send','send','put','/:id','update','delete','destroy','removeDispositions','/:id/canned_answers','removeAnswers','removeAgents','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','show','/:id/dispositions','getDispositions'];(function(_0x494c4f,_0x5c97f5){var _0x117f33=function(_0x277a46){while(--_0x277a46){_0x494c4f['push'](_0x494c4f['shift']());}};_0x117f33(++_0x5c97f5);}(_0x33af,0xec));var _0xf33a=function(_0x590b61,_0x4c4335){_0x590b61=_0x590b61-0x0;var _0x1a14dc=_0x33af[_0x590b61];return _0x1a14dc;};'use strict';var multer=require('multer');var util=require(_0xf33a('0x0'));var path=require('path');var timeout=require(_0xf33a('0x1'));var express=require(_0xf33a('0x2'));var router=express[_0xf33a('0x3')]();var fs_extra=require(_0xf33a('0x4'));var auth=require(_0xf33a('0x5'));var interaction=require(_0xf33a('0x6'));var config=require('../../config/environment');var controller=require(_0xf33a('0x7'));router[_0xf33a('0x8')]('/',auth['isAuthenticated'](),controller[_0xf33a('0x9')]);router[_0xf33a('0x8')](_0xf33a('0xa'),auth[_0xf33a('0xb')](),controller[_0xf33a('0xc')]);router[_0xf33a('0x8')]('/:id',auth[_0xf33a('0xb')](),controller[_0xf33a('0xd')]);router[_0xf33a('0x8')](_0xf33a('0xe'),auth[_0xf33a('0xb')](),controller[_0xf33a('0xf')]);router['get']('/:id/canned_answers',auth[_0xf33a('0xb')](),controller[_0xf33a('0x10')]);router[_0xf33a('0x8')](_0xf33a('0x11'),auth[_0xf33a('0xb')](),controller['getAgents']);router[_0xf33a('0x8')](_0xf33a('0x12'),auth['isAuthenticated'](),controller['getApplications']);router[_0xf33a('0x13')]('/',auth[_0xf33a('0xb')](),controller[_0xf33a('0x14')]);router[_0xf33a('0x13')](_0xf33a('0xe'),auth[_0xf33a('0xb')](),controller[_0xf33a('0x15')]);router[_0xf33a('0x13')]('/:id/canned_answers',auth[_0xf33a('0xb')](),controller['addAnswer']);router[_0xf33a('0x13')](_0xf33a('0x11'),auth['isAuthenticated'](),controller[_0xf33a('0x16')]);router[_0xf33a('0x13')]('/:id/applications',auth[_0xf33a('0xb')](),controller[_0xf33a('0x17')]);router[_0xf33a('0x13')](_0xf33a('0x18'),controller['notify']);router[_0xf33a('0x13')](_0xf33a('0x19'),auth[_0xf33a('0xb')](),controller[_0xf33a('0x1a')]);router[_0xf33a('0x1b')](_0xf33a('0x1c'),auth[_0xf33a('0xb')](),controller[_0xf33a('0x1d')]);router[_0xf33a('0x1e')](_0xf33a('0x1c'),auth['isAuthenticated'](),controller[_0xf33a('0x1f')]);router[_0xf33a('0x1e')](_0xf33a('0xe'),auth[_0xf33a('0xb')](),controller[_0xf33a('0x20')]);router['delete'](_0xf33a('0x21'),auth['isAuthenticated'](),controller[_0xf33a('0x22')]);router[_0xf33a('0x1e')](_0xf33a('0x11'),auth[_0xf33a('0xb')](),controller[_0xf33a('0x23')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/whatsappAccount/whatsappAccount.attributes.js b/server/api/whatsappAccount/whatsappAccount.attributes.js new file mode 100644 index 0000000..670fc8e --- /dev/null +++ b/server/api/whatsappAccount/whatsappAccount.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x046b=['generate','ENUM','twilio','sinch','TEXT','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x4382bc,_0x231a2d){var _0x13c82a=function(_0x3723b0){while(--_0x3723b0){_0x4382bc['push'](_0x4382bc['shift']());}};_0x13c82a(++_0x231a2d);}(_0x046b,0x11b));var _0xb046=function(_0x51c699,_0x38d5f4){_0x51c699=_0x51c699-0x0;var _0x418e9f=_0x046b[_0x51c699];return _0x418e9f;};'use strict';var Sequelize=require(_0xb046('0x0'));var rs=require(_0xb046('0x1'));module[_0xb046('0x2')]={'name':{'type':Sequelize[_0xb046('0x3')],'unique':_0xb046('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xb046('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xb046('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xb046('0x5')]();}},'phone':{'type':Sequelize[_0xb046('0x3')]},'type':{'type':Sequelize[_0xb046('0x6')](_0xb046('0x7'),_0xb046('0x8'))},'accountSid':{'type':Sequelize[_0xb046('0x3')]},'baseUrl':{'type':Sequelize[_0xb046('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xb046('0x9')],'defaultValue':function(){return'Account:\x20{{account.name}}
{{#queue}}Queue:\x20{{queue.name}}
{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xb046('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xb046('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb046('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb046('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb046('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb046('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb046('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xb046('0xa')],'defaultValue':![],'comment':_0xb046('0xc'),'set':function(_0x3fe806){if(!_0x3fe806){this[_0xb046('0xd')](_0xb046('0xe'),null);}this[_0xb046('0xd')](_0xb046('0xf'),_0x3fe806);}},'description':{'type':Sequelize[_0xb046('0x3')]}}; \ No newline at end of file diff --git a/server/api/whatsappAccount/whatsappAccount.controller.js b/server/api/whatsappAccount/whatsappAccount.controller.js new file mode 100644 index 0000000..0e561e8 --- /dev/null +++ b/server/api/whatsappAccount/whatsappAccount.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xca97=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','request','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','WhatsappAccounts','UserProfileResource','destroy','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','filters','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','WhatsappAccountId','getDispositions','findOne','length','filter','Disposition','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','bulkCreate','priority','finally','getApplications','WhatsappApplication','notify','whatsapp','Applications','account','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','twilio','from','whatsapp:','Body','messageId','notifications','isNil','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','DESC','list','Contacts','WhatsappInteraction','spread','interaction','push','unmanaged','*,*,*,*','created','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','\x0a','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','jsforce','to-csv'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0xca97,0xb6));var _0x7ca9=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xca97[_0x31e29a];return _0x32d892;};'use strict';var emlformat=require(_0x7ca9('0x0'));var rimraf=require(_0x7ca9('0x1'));var zipdir=require(_0x7ca9('0x2'));var jsonpatch=require(_0x7ca9('0x3'));var rp=require('request-promise');var moment=require(_0x7ca9('0x4'));var BPromise=require(_0x7ca9('0x5'));var Mustache=require(_0x7ca9('0x6'));var util=require(_0x7ca9('0x7'));var path=require('path');var sox=require(_0x7ca9('0x8'));var csv=require('to-csv');var ejs=require(_0x7ca9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7ca9('0xa'));var squel=require(_0x7ca9('0xb'));var crypto=require('crypto');var jsforce=require(_0x7ca9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7ca9('0xd'));var querystring=require(_0x7ca9('0xe'));var Papa=require(_0x7ca9('0xf'));var Redis=require(_0x7ca9('0x10'));var authService=require(_0x7ca9('0x11'));var qs=require(_0x7ca9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7ca9('0x13'));var logger=require(_0x7ca9('0x14'))(_0x7ca9('0x15'));var utils=require(_0x7ca9('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x7ca9('0x17')]=_[_0x7ca9('0x18')](config[_0x7ca9('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x7ca9('0x19'))(new Redis(config[_0x7ca9('0x17')]));require('./whatsappAccount.socket')[_0x7ca9('0x1a')](socket);var jayson=require(_0x7ca9('0x1b'));var client=jayson[_0x7ca9('0x1c')][_0x7ca9('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x15776d,_0x2a50e7,_0x1ff6b1,_0x47aa4c){return new BPromise(function(_0x2a94b0,_0x2116e9){var _0x109b6b=_0x47aa4c||client;return _0x109b6b[_0x7ca9('0x1e')](_0x15776d,_0x1ff6b1)[_0x7ca9('0x1f')](function(_0x46065f){logger[_0x7ca9('0x20')]('WhatsappAccount,\x20%s,\x20%s',_0x2a50e7,'request\x20sent');logger[_0x7ca9('0x21')](_0x7ca9('0x22'),_0x2a50e7,_0x7ca9('0x23'),JSON[_0x7ca9('0x24')](_0x46065f));if(_0x46065f[_0x7ca9('0x25')]){if(_0x46065f[_0x7ca9('0x25')][_0x7ca9('0x26')]===0x1f4){logger['error'](_0x7ca9('0x27'),_0x2a50e7,_0x46065f[_0x7ca9('0x25')]['message']);return _0x2116e9(_0x46065f[_0x7ca9('0x25')][_0x7ca9('0x28')]);}logger['error'](_0x7ca9('0x27'),_0x2a50e7,_0x46065f[_0x7ca9('0x25')][_0x7ca9('0x28')]);return _0x2a94b0(_0x46065f[_0x7ca9('0x25')][_0x7ca9('0x28')]);}else{logger[_0x7ca9('0x20')]('WhatsappAccount,\x20%s,\x20%s',_0x2a50e7,'request\x20sent');_0x2a94b0(_0x46065f[_0x7ca9('0x29')][_0x7ca9('0x28')]);}})[_0x7ca9('0x2a')](function(_0x1cc852){logger[_0x7ca9('0x25')]('WhatsappAccount,\x20%s,\x20%s',_0x2a50e7,_0x1cc852);_0x2116e9(_0x1cc852);});});}function respondWithStatusCode(_0x4bdbcb,_0x2204fa){_0x2204fa=_0x2204fa||0xcc;return function(_0x36c9a9){if(_0x36c9a9){return _0x4bdbcb[_0x7ca9('0x2b')](_0x2204fa);}return _0x4bdbcb['status'](_0x2204fa)[_0x7ca9('0x2c')]();};}function respondWithResult(_0x268691,_0x35ddff){_0x35ddff=_0x35ddff||0xc8;return function(_0x4ef040){if(_0x4ef040){return _0x268691[_0x7ca9('0x2d')](_0x35ddff)[_0x7ca9('0x2e')](_0x4ef040);}};}function respondWithFilteredResult(_0x46107f,_0xaa395c){return function(_0x175a55){if(_0x175a55){var _0x1ff4ac=typeof _0xaa395c[_0x7ca9('0x2f')]==='undefined'&&typeof _0xaa395c[_0x7ca9('0x30')]===_0x7ca9('0x31');var _0xfb1fb0=_0x175a55[_0x7ca9('0x32')];var _0x2ad130=_0x1ff4ac?0x0:_0xaa395c['offset'];var _0x5e6912=_0x1ff4ac?_0x175a55['count']:_0xaa395c['offset']+_0xaa395c[_0x7ca9('0x30')];var _0x394e7f;if(_0x5e6912>=_0xfb1fb0){_0x5e6912=_0xfb1fb0;_0x394e7f=0xc8;}else{_0x394e7f=0xce;}_0x46107f[_0x7ca9('0x2d')](_0x394e7f);return _0x46107f[_0x7ca9('0x33')]('Content-Range',_0x2ad130+'-'+_0x5e6912+'/'+_0xfb1fb0)[_0x7ca9('0x2e')](_0x175a55);}return null;};}function patchUpdates(_0x17361e){return function(_0x5b6a4a){try{jsonpatch[_0x7ca9('0x34')](_0x5b6a4a,_0x17361e,!![]);}catch(_0x5cb73f){return BPromise[_0x7ca9('0x35')](_0x5cb73f);}return _0x5b6a4a[_0x7ca9('0x36')]();};}function saveUpdates(_0x5080dc,_0x57d954){return function(_0x33c617){if(_0x33c617){return _0x33c617[_0x7ca9('0x37')](_0x5080dc)[_0x7ca9('0x1f')](function(_0x5cc1b1){return _0x5cc1b1;});}return null;};}function removeEntity(_0xd2b101,_0x396419){return function(_0x446785){if(_0x446785){return _0x446785['destroy']()['then'](function(){var _0x152279=_0x446785['get']({'plain':!![]});var _0x5b9b54=_0x7ca9('0x38');return db[_0x7ca9('0x39')][_0x7ca9('0x3a')]({'where':{'type':_0x5b9b54,'resourceId':_0x152279['id']}})[_0x7ca9('0x1f')](function(){return _0x446785;});})[_0x7ca9('0x1f')](function(){_0xd2b101[_0x7ca9('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44cd60,_0x3f55cd){return function(_0x5077c9){if(!_0x5077c9){_0x44cd60[_0x7ca9('0x2b')](0x194);}return _0x5077c9;};}function handleError(_0x323208,_0x214974){_0x214974=_0x214974||0x1f4;return function(_0x31a162){logger['error'](_0x31a162[_0x7ca9('0x3b')]);if(_0x31a162[_0x7ca9('0x3c')]){delete _0x31a162[_0x7ca9('0x3c')];}_0x323208[_0x7ca9('0x2d')](_0x214974)[_0x7ca9('0x3d')](_0x31a162);};}exports[_0x7ca9('0x3e')]=function(_0x49b365,_0x148b88){var _0x45d151={'include':[{'model':db[_0x7ca9('0x3f')],'as':_0x7ca9('0x40')}]},_0x5c358a={},_0x32a13a={'count':0x0,'rows':[]};var _0x2cc1ff=_[_0x7ca9('0x41')](db[_0x7ca9('0x42')][_0x7ca9('0x43')],function(_0x1f77b3){return{'name':_0x1f77b3[_0x7ca9('0x44')],'type':_0x1f77b3[_0x7ca9('0x45')]['key']};});_0x5c358a[_0x7ca9('0x46')]=_[_0x7ca9('0x41')](_0x2cc1ff,_0x7ca9('0x3c'));_0x5c358a[_0x7ca9('0x47')]=_[_0x7ca9('0x48')](_0x49b365[_0x7ca9('0x47')]);_0x5c358a['filters']=_['intersection'](_0x5c358a[_0x7ca9('0x46')],_0x5c358a[_0x7ca9('0x47')]);_0x45d151[_0x7ca9('0x49')]=_[_0x7ca9('0x4a')](_0x5c358a[_0x7ca9('0x46')],qs[_0x7ca9('0x4b')](_0x49b365[_0x7ca9('0x47')][_0x7ca9('0x4b')]));_0x45d151['attributes']=_0x45d151[_0x7ca9('0x49')]['length']?_0x45d151[_0x7ca9('0x49')]:_0x5c358a[_0x7ca9('0x46')];if(!_0x49b365[_0x7ca9('0x47')][_0x7ca9('0x4c')](_0x7ca9('0x4d'))){_0x45d151[_0x7ca9('0x30')]=qs[_0x7ca9('0x30')](_0x49b365[_0x7ca9('0x47')][_0x7ca9('0x30')]);_0x45d151['offset']=qs[_0x7ca9('0x2f')](_0x49b365[_0x7ca9('0x47')][_0x7ca9('0x2f')]);}_0x45d151[_0x7ca9('0x4e')]=qs[_0x7ca9('0x4f')](_0x49b365[_0x7ca9('0x47')][_0x7ca9('0x4f')]);_0x45d151[_0x7ca9('0x50')]=qs['filters'](_[_0x7ca9('0x51')](_0x49b365[_0x7ca9('0x47')],_0x5c358a['filters']),_0x2cc1ff);if(_0x49b365[_0x7ca9('0x47')]['filter']){_0x45d151[_0x7ca9('0x50')]=_[_0x7ca9('0x52')](_0x45d151['where'],{'$or':_[_0x7ca9('0x41')](_0x2cc1ff,function(_0x1b4f19){if(_0x1b4f19['type']!==_0x7ca9('0x53')){var _0x1e9e21={};_0x1e9e21[_0x1b4f19[_0x7ca9('0x3c')]]={'$like':'%'+_0x49b365[_0x7ca9('0x47')]['filter']+'%'};return _0x1e9e21;}})});}_0x45d151=_[_0x7ca9('0x52')]({},_0x45d151,_0x49b365[_0x7ca9('0x54')]);var _0x423dfb={'where':_0x45d151['where']};return db['WhatsappAccount'][_0x7ca9('0x32')](_0x423dfb)['then'](function(_0x2c76b4){_0x32a13a[_0x7ca9('0x32')]=_0x2c76b4;if(_0x49b365[_0x7ca9('0x47')][_0x7ca9('0x55')]){_0x45d151[_0x7ca9('0x56')]=[{'all':!![]}];}return db[_0x7ca9('0x42')][_0x7ca9('0x57')](_0x45d151);})[_0x7ca9('0x1f')](function(_0x59c03a){_0x32a13a[_0x7ca9('0x58')]=_0x59c03a;return _0x32a13a;})[_0x7ca9('0x1f')](respondWithFilteredResult(_0x148b88,_0x45d151))[_0x7ca9('0x2a')](handleError(_0x148b88,null));};exports['show']=function(_0x556d20,_0x2d7bd1){var _0x26b106={'raw':![],'where':{'id':_0x556d20['params']['id']},'include':[{'model':db[_0x7ca9('0x3f')],'as':'mandatoryDispositionPause'}]},_0x33ec40={};_0x33ec40[_0x7ca9('0x46')]=_[_0x7ca9('0x48')](db[_0x7ca9('0x42')][_0x7ca9('0x43')]);_0x33ec40[_0x7ca9('0x47')]=_[_0x7ca9('0x48')](_0x556d20[_0x7ca9('0x47')]);_0x33ec40[_0x7ca9('0x59')]=_[_0x7ca9('0x4a')](_0x33ec40['model'],_0x33ec40[_0x7ca9('0x47')]);_0x26b106[_0x7ca9('0x49')]=_[_0x7ca9('0x4a')](_0x33ec40[_0x7ca9('0x46')],qs[_0x7ca9('0x4b')](_0x556d20['query'][_0x7ca9('0x4b')]));_0x26b106[_0x7ca9('0x49')]=_0x26b106[_0x7ca9('0x49')]['length']?_0x26b106['attributes']:_0x33ec40[_0x7ca9('0x46')];if(_0x556d20[_0x7ca9('0x47')]['includeAll']){_0x26b106[_0x7ca9('0x56')]=[{'all':!![]}];}_0x26b106=_[_0x7ca9('0x52')]({},_0x26b106,_0x556d20[_0x7ca9('0x54')]);return db[_0x7ca9('0x42')][_0x7ca9('0x5a')](_0x26b106)[_0x7ca9('0x1f')](handleEntityNotFound(_0x2d7bd1,null))[_0x7ca9('0x1f')](respondWithResult(_0x2d7bd1,null))[_0x7ca9('0x2a')](handleError(_0x2d7bd1,null));};exports[_0x7ca9('0x5b')]=function(_0xdf7bc1,_0x1db66d){return db['WhatsappAccount'][_0x7ca9('0x5b')](_0xdf7bc1['body'],{})[_0x7ca9('0x1f')](function(_0x3f24d8){var _0x41f9a2=_0xdf7bc1['user'][_0x7ca9('0x5c')]({'plain':!![]});if(!_0x41f9a2)throw new Error(_0x7ca9('0x5d'));if(_0x41f9a2[_0x7ca9('0x5e')]===_0x7ca9('0x5f')){var _0x50ca53=_0x3f24d8[_0x7ca9('0x5c')]({'plain':!![]});var _0x381a6b=_0x7ca9('0x38');return db[_0x7ca9('0x60')][_0x7ca9('0x5a')]({'where':{'name':_0x381a6b,'userProfileId':_0x41f9a2['userProfileId']},'raw':!![]})[_0x7ca9('0x1f')](function(_0x5efc6b){if(_0x5efc6b&&_0x5efc6b[_0x7ca9('0x61')]===0x0){return db[_0x7ca9('0x39')]['create']({'name':_0x50ca53[_0x7ca9('0x3c')],'resourceId':_0x50ca53['id'],'type':_0x5efc6b['name'],'sectionId':_0x5efc6b['id']},{})['then'](function(){return _0x3f24d8;});}else{return _0x3f24d8;}})[_0x7ca9('0x2a')](function(_0x5b5491){logger[_0x7ca9('0x25')](_0x7ca9('0x62'),_0x5b5491);throw _0x5b5491;});}return _0x3f24d8;})[_0x7ca9('0x1f')](respondWithResult(_0x1db66d,0xc9))[_0x7ca9('0x2a')](handleError(_0x1db66d,null));};exports['update']=function(_0x5ef30e,_0x586f65){if(_0x5ef30e[_0x7ca9('0x63')]['id']){delete _0x5ef30e[_0x7ca9('0x63')]['id'];}return db[_0x7ca9('0x42')][_0x7ca9('0x5a')]({'where':{'id':_0x5ef30e[_0x7ca9('0x64')]['id']},'include':[{'model':db[_0x7ca9('0x3f')],'as':_0x7ca9('0x40')}]})[_0x7ca9('0x1f')](handleEntityNotFound(_0x586f65,null))[_0x7ca9('0x1f')](saveUpdates(_0x5ef30e[_0x7ca9('0x63')],null))[_0x7ca9('0x1f')](respondWithResult(_0x586f65,null))['catch'](handleError(_0x586f65,null));};exports[_0x7ca9('0x3a')]=function(_0x57466e,_0x1897e1){return db[_0x7ca9('0x42')][_0x7ca9('0x5a')]({'where':{'id':_0x57466e[_0x7ca9('0x64')]['id']}})['then'](handleEntityNotFound(_0x1897e1,null))[_0x7ca9('0x1f')](removeEntity(_0x1897e1,null))['catch'](handleError(_0x1897e1,null));};exports[_0x7ca9('0x65')]=function(_0x7d3e66,_0x247e87){return db['WhatsappAccount'][_0x7ca9('0x65')]()[_0x7ca9('0x1f')](respondWithResult(_0x247e87,null))[_0x7ca9('0x2a')](handleError(_0x247e87,null));};exports[_0x7ca9('0x66')]=function(_0x1192af,_0x21683a,_0x43b0a4){if(_0x1192af[_0x7ca9('0x63')]['id']){delete _0x1192af[_0x7ca9('0x63')]['id'];}return db[_0x7ca9('0x42')][_0x7ca9('0x5a')]({'where':{'id':_0x1192af[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x21683a,null))[_0x7ca9('0x1f')](function(_0x474453){if(_0x474453){_0x1192af[_0x7ca9('0x63')][_0x7ca9('0x67')]=_0x474453['id'];return db['Disposition'][_0x7ca9('0x5b')](_0x1192af['body']);}})[_0x7ca9('0x1f')](respondWithResult(_0x21683a,null))[_0x7ca9('0x2a')](handleError(_0x21683a,null));};exports[_0x7ca9('0x68')]=function(_0x181447,_0x5e0477,_0x149a76){var _0x584481={'raw':![],'where':{}};var _0xcab269={};var _0x1a89ca={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x7ca9('0x69')]({'where':{'id':_0x181447[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x5e0477,null))[_0x7ca9('0x1f')](function(_0x577215){if(_0x577215){_0xcab269[_0x7ca9('0x46')]=_[_0x7ca9('0x48')](db['Disposition'][_0x7ca9('0x43')]);_0xcab269['query']=_[_0x7ca9('0x48')](_0x181447['query']);_0xcab269[_0x7ca9('0x59')]=_[_0x7ca9('0x4a')](_0xcab269['model'],_0xcab269[_0x7ca9('0x47')]);_0x584481[_0x7ca9('0x49')]=_[_0x7ca9('0x4a')](_0xcab269[_0x7ca9('0x46')],qs['fields'](_0x181447[_0x7ca9('0x47')][_0x7ca9('0x4b')]));_0x584481[_0x7ca9('0x49')]=_0x584481[_0x7ca9('0x49')][_0x7ca9('0x6a')]?_0x584481[_0x7ca9('0x49')]:_0xcab269[_0x7ca9('0x46')];if(!_0x181447[_0x7ca9('0x47')][_0x7ca9('0x4c')](_0x7ca9('0x4d'))){_0x584481[_0x7ca9('0x30')]=qs['limit'](_0x181447[_0x7ca9('0x47')][_0x7ca9('0x30')]);_0x584481[_0x7ca9('0x2f')]=qs['offset'](_0x181447[_0x7ca9('0x47')][_0x7ca9('0x2f')]);}_0x584481[_0x7ca9('0x4e')]=qs[_0x7ca9('0x4f')](_0x181447[_0x7ca9('0x47')][_0x7ca9('0x4f')]);_0x584481['where']=qs[_0x7ca9('0x59')](_['pick'](_0x181447['query'],_0xcab269[_0x7ca9('0x59')]));_0x584481['where']['WhatsappAccountId']=_0x577215['id'];if(_0x181447[_0x7ca9('0x47')][_0x7ca9('0x6b')]){_0x584481[_0x7ca9('0x50')]=_[_0x7ca9('0x52')](_0x584481[_0x7ca9('0x50')],{'$or':_[_0x7ca9('0x41')](_0x584481[_0x7ca9('0x49')],function(_0x417640){var _0xfddd13={};_0xfddd13[_0x417640]={'$like':'%'+_0x181447[_0x7ca9('0x47')][_0x7ca9('0x6b')]+'%'};return _0xfddd13;})});}_0x584481=_[_0x7ca9('0x52')]({},_0x584481,_0x181447['options']);return db[_0x7ca9('0x6c')][_0x7ca9('0x32')]({'where':_0x584481[_0x7ca9('0x50')]})[_0x7ca9('0x1f')](function(_0x3d1ab4){_0x1a89ca[_0x7ca9('0x32')]=_0x3d1ab4;if(_0x181447[_0x7ca9('0x47')][_0x7ca9('0x55')]){_0x584481['include']=[{'all':!![]}];}return db[_0x7ca9('0x6c')][_0x7ca9('0x57')](_0x584481);})[_0x7ca9('0x1f')](function(_0x41f20b){_0x1a89ca[_0x7ca9('0x58')]=_0x41f20b;return _0x1a89ca;});}})[_0x7ca9('0x1f')](respondWithFilteredResult(_0x5e0477,_0x584481))[_0x7ca9('0x2a')](handleError(_0x5e0477,null));};exports[_0x7ca9('0x6d')]=function(_0x3fca75,_0x5260b1,_0x23b91c){return db[_0x7ca9('0x42')]['find']({'where':{'id':_0x3fca75['params']['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x5260b1,null))['then'](function(_0x3101f3){if(_0x3101f3){return _0x3101f3[_0x7ca9('0x6d')](_0x3fca75[_0x7ca9('0x47')]['ids']);}})[_0x7ca9('0x1f')](respondWithStatusCode(_0x5260b1,null))[_0x7ca9('0x2a')](handleError(_0x5260b1,null));};exports[_0x7ca9('0x6e')]=function(_0x599538,_0x51ac4d,_0x1e3aeb){if(_0x599538[_0x7ca9('0x63')]['id']){delete _0x599538[_0x7ca9('0x63')]['id'];}return db['WhatsappAccount'][_0x7ca9('0x5a')]({'where':{'id':_0x599538[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x51ac4d,null))[_0x7ca9('0x1f')](function(_0x59b90f){if(_0x59b90f){_0x599538[_0x7ca9('0x63')]['WhatsappAccountId']=_0x59b90f['id'];return db[_0x7ca9('0x6f')]['create'](_0x599538[_0x7ca9('0x63')]);}})[_0x7ca9('0x1f')](respondWithResult(_0x51ac4d,null))[_0x7ca9('0x2a')](handleError(_0x51ac4d,null));};exports[_0x7ca9('0x70')]=function(_0x333745,_0x360e01,_0x416b2a){var _0x3724c6={'raw':![],'where':{}};var _0x4bbb2c={};var _0x4b06f1={'count':0x0,'rows':[]};return db[_0x7ca9('0x42')][_0x7ca9('0x69')]({'where':{'id':_0x333745[_0x7ca9('0x64')]['id']}})['then'](handleEntityNotFound(_0x360e01,null))[_0x7ca9('0x1f')](function(_0x3726ab){if(_0x3726ab){_0x4bbb2c[_0x7ca9('0x46')]=_[_0x7ca9('0x48')](db[_0x7ca9('0x6f')]['rawAttributes']);_0x4bbb2c[_0x7ca9('0x47')]=_[_0x7ca9('0x48')](_0x333745[_0x7ca9('0x47')]);_0x4bbb2c[_0x7ca9('0x59')]=_['intersection'](_0x4bbb2c[_0x7ca9('0x46')],_0x4bbb2c[_0x7ca9('0x47')]);_0x3724c6[_0x7ca9('0x49')]=_[_0x7ca9('0x4a')](_0x4bbb2c['model'],qs[_0x7ca9('0x4b')](_0x333745[_0x7ca9('0x47')][_0x7ca9('0x4b')]));_0x3724c6[_0x7ca9('0x49')]=_0x3724c6['attributes'][_0x7ca9('0x6a')]?_0x3724c6[_0x7ca9('0x49')]:_0x4bbb2c[_0x7ca9('0x46')];if(!_0x333745[_0x7ca9('0x47')]['hasOwnProperty'](_0x7ca9('0x4d'))){_0x3724c6[_0x7ca9('0x30')]=qs[_0x7ca9('0x30')](_0x333745[_0x7ca9('0x47')][_0x7ca9('0x30')]);_0x3724c6[_0x7ca9('0x2f')]=qs[_0x7ca9('0x2f')](_0x333745['query'][_0x7ca9('0x2f')]);}_0x3724c6['order']=qs['sort'](_0x333745[_0x7ca9('0x47')][_0x7ca9('0x4f')]);_0x3724c6[_0x7ca9('0x50')]=qs['filters'](_['pick'](_0x333745[_0x7ca9('0x47')],_0x4bbb2c[_0x7ca9('0x59')]));_0x3724c6[_0x7ca9('0x50')][_0x7ca9('0x67')]=_0x3726ab['id'];if(_0x333745[_0x7ca9('0x47')][_0x7ca9('0x6b')]){_0x3724c6[_0x7ca9('0x50')]=_[_0x7ca9('0x52')](_0x3724c6[_0x7ca9('0x50')],{'$or':_[_0x7ca9('0x41')](_0x3724c6[_0x7ca9('0x49')],function(_0x5dc313){var _0x277bed={};_0x277bed[_0x5dc313]={'$like':'%'+_0x333745['query'][_0x7ca9('0x6b')]+'%'};return _0x277bed;})});}_0x3724c6=_['merge']({},_0x3724c6,_0x333745[_0x7ca9('0x54')]);return db['CannedAnswer'][_0x7ca9('0x32')]({'where':_0x3724c6['where']})[_0x7ca9('0x1f')](function(_0x144082){_0x4b06f1[_0x7ca9('0x32')]=_0x144082;if(_0x333745['query']['includeAll']){_0x3724c6[_0x7ca9('0x56')]=[{'all':!![]}];}return db[_0x7ca9('0x6f')]['findAll'](_0x3724c6);})[_0x7ca9('0x1f')](function(_0x285660){_0x4b06f1[_0x7ca9('0x58')]=_0x285660;return _0x4b06f1;});}})[_0x7ca9('0x1f')](respondWithFilteredResult(_0x360e01,_0x3724c6))[_0x7ca9('0x2a')](handleError(_0x360e01,null));};exports[_0x7ca9('0x71')]=function(_0x49df1d,_0x3f256c,_0x459328){return db['WhatsappAccount'][_0x7ca9('0x5a')]({'where':{'id':_0x49df1d[_0x7ca9('0x64')]['id']}})['then'](handleEntityNotFound(_0x3f256c,null))[_0x7ca9('0x1f')](function(_0x949007){if(_0x949007){return _0x949007['removeAnswers'](_0x49df1d[_0x7ca9('0x47')][_0x7ca9('0x72')]);}})[_0x7ca9('0x1f')](respondWithStatusCode(_0x3f256c,null))[_0x7ca9('0x2a')](handleError(_0x3f256c,null));};exports['addAgents']=function(_0x1275a4,_0x2ee2cd,_0x1a9646){return db[_0x7ca9('0x42')][_0x7ca9('0x5a')]({'where':{'id':_0x1275a4[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x2ee2cd,null))[_0x7ca9('0x1f')](function(_0x394e59){if(_0x394e59){return _0x394e59[_0x7ca9('0x73')](_0x1275a4['body'][_0x7ca9('0x72')],_[_0x7ca9('0x74')](_0x1275a4[_0x7ca9('0x63')],[_0x7ca9('0x72'),'id'])||{})['spread'](function(_0x21dbac){for(var _0x2c7a6f=0x0;_0x2c7a6f<_0x1275a4[_0x7ca9('0x63')][_0x7ca9('0x72')][_0x7ca9('0x6a')];_0x2c7a6f+=0x1){socket[_0x7ca9('0x75')](_0x7ca9('0x76'),{'UserId':Number(_0x1275a4['body'][_0x7ca9('0x72')][_0x2c7a6f]),'WhatsappAccountId':Number(_0x1275a4['params']['id'])});}return _0x21dbac;});}})[_0x7ca9('0x1f')](respondWithResult(_0x2ee2cd,null))[_0x7ca9('0x2a')](handleError(_0x2ee2cd,null));};exports[_0x7ca9('0x77')]=function(_0x19fd63,_0x26b3c7,_0x45dae3){return db[_0x7ca9('0x42')][_0x7ca9('0x5a')]({'where':{'id':_0x19fd63[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x26b3c7,null))[_0x7ca9('0x1f')](function(_0x4a14a0){if(_0x4a14a0){return _0x4a14a0[_0x7ca9('0x77')](_0x19fd63[_0x7ca9('0x47')][_0x7ca9('0x72')])['then'](function(){if(_[_0x7ca9('0x78')](_0x19fd63[_0x7ca9('0x47')][_0x7ca9('0x72')])){for(var _0x24ff1a=0x0;_0x24ff1a<_0x19fd63[_0x7ca9('0x47')][_0x7ca9('0x72')][_0x7ca9('0x6a')];_0x24ff1a+=0x1){socket[_0x7ca9('0x75')]('userWhatsappAccount:remove',{'UserId':Number(_0x19fd63['query']['ids'][_0x24ff1a]),'WhatsappAccountId':Number(_0x19fd63[_0x7ca9('0x64')]['id'])});}}else{socket[_0x7ca9('0x75')](_0x7ca9('0x79'),{'UserId':Number(_0x19fd63[_0x7ca9('0x47')][_0x7ca9('0x72')]),'WhatsappAccountId':Number(_0x19fd63[_0x7ca9('0x64')]['id'])});}});}})[_0x7ca9('0x1f')](respondWithStatusCode(_0x26b3c7,null))[_0x7ca9('0x2a')](handleError(_0x26b3c7,null));};exports['getAgents']=function(_0x132e07,_0x2e8af1,_0x36ac17){var _0x6fda05={};var _0x219ffe={};var _0x2f6375;var _0x444893;return db[_0x7ca9('0x42')]['findOne']({'where':{'id':_0x132e07[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x2e8af1,null))['then'](function(_0x590330){if(_0x590330){_0x2f6375=_0x590330;_0x219ffe[_0x7ca9('0x46')]=_[_0x7ca9('0x48')](db[_0x7ca9('0x7a')][_0x7ca9('0x43')]);_0x219ffe[_0x7ca9('0x47')]=_['keys'](_0x132e07[_0x7ca9('0x47')]);_0x219ffe['filters']=_[_0x7ca9('0x4a')](_0x219ffe[_0x7ca9('0x46')],_0x219ffe[_0x7ca9('0x47')]);_0x6fda05['attributes']=_['intersection'](_0x219ffe['model'],qs['fields'](_0x132e07['query'][_0x7ca9('0x4b')]));_0x6fda05['attributes']=_0x6fda05[_0x7ca9('0x49')]['length']?_0x6fda05[_0x7ca9('0x49')]:_0x219ffe[_0x7ca9('0x46')];_0x6fda05['order']=qs[_0x7ca9('0x4f')](_0x132e07[_0x7ca9('0x47')][_0x7ca9('0x4f')]);_0x6fda05[_0x7ca9('0x50')]=qs[_0x7ca9('0x59')](_[_0x7ca9('0x51')](_0x132e07[_0x7ca9('0x47')],_0x219ffe['filters']));if(_0x132e07[_0x7ca9('0x47')]['filter']){_0x6fda05[_0x7ca9('0x50')]=_['merge'](_0x6fda05[_0x7ca9('0x50')],{'$or':_[_0x7ca9('0x41')](_0x6fda05[_0x7ca9('0x49')],function(_0x566eb7){var _0x4b3db3={};_0x4b3db3[_0x566eb7]={'$like':'%'+_0x132e07[_0x7ca9('0x47')][_0x7ca9('0x6b')]+'%'};return _0x4b3db3;})});}_0x6fda05=_[_0x7ca9('0x52')]({},_0x6fda05,_0x132e07[_0x7ca9('0x54')]);return _0x2f6375[_0x7ca9('0x7b')](_0x6fda05);}})[_0x7ca9('0x1f')](function(_0x534ccd){if(_0x534ccd){_0x444893=_0x534ccd['length'];if(!_0x132e07[_0x7ca9('0x47')]['hasOwnProperty']('nolimit')){_0x6fda05[_0x7ca9('0x30')]=qs[_0x7ca9('0x30')](_0x132e07[_0x7ca9('0x47')][_0x7ca9('0x30')]);_0x6fda05[_0x7ca9('0x2f')]=qs[_0x7ca9('0x2f')](_0x132e07[_0x7ca9('0x47')]['offset']);}return _0x2f6375[_0x7ca9('0x7b')](_0x6fda05);}})[_0x7ca9('0x1f')](function(_0x2c9f86){if(_0x2c9f86){return _0x2c9f86?{'count':_0x444893,'rows':_0x2c9f86}:null;}})[_0x7ca9('0x1f')](respondWithResult(_0x2e8af1,null))[_0x7ca9('0x2a')](handleError(_0x2e8af1,null));};exports[_0x7ca9('0x7c')]=function(_0x49ac9a,_0x29df39){var _0xcec97c=_0x49ac9a[_0x7ca9('0x64')]['id'];var _0x155abb=_0x49ac9a[_0x7ca9('0x63')];var _0x56ffef=0xc8;var _0x3978ef=null;return db[_0x7ca9('0x7d')][_0x7ca9('0x7e')]({'isolationLevel':db[_0x7ca9('0x7d')][_0x7ca9('0x7f')]['ISOLATION_LEVELS'][_0x7ca9('0x80')]},function(_0x68a19b){return db[_0x7ca9('0x42')][_0x7ca9('0x69')]({'where':{'id':_0xcec97c},'transaction':_0x68a19b})[_0x7ca9('0x1f')](function(_0x543648){if(_0x543648){return db['WhatsappApplication'][_0x7ca9('0x3a')]({'where':{'WhatsappAccountId':_0xcec97c},'transaction':_0x68a19b})[_0x7ca9('0x1f')](function(){var _0x55b3ea=_['map'](_0x155abb,function(_0x550f9c){_0x550f9c['WhatsappAccountId']=_0xcec97c;return _0x550f9c;});return db['WhatsappApplication'][_0x7ca9('0x81')](_0x55b3ea,{'transaction':_0x68a19b});});}else{_0x56ffef=0x194;_0x3978ef=[];}});})[_0x7ca9('0x1f')](function(){if(_0x56ffef!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0xcec97c},'order':_0x7ca9('0x82')})['then'](function(_0xf1afc3){_0x3978ef=_0xf1afc3;});}})[_0x7ca9('0x2a')](function(_0x33f7f9){_0x56ffef=0x1f4;logger['error'](_0x33f7f9['stack']);if(_0x33f7f9[_0x7ca9('0x3c')]){delete _0x33f7f9['name'];}_0x3978ef=_0x33f7f9;})[_0x7ca9('0x83')](function(){if(_0x3978ef===null){_0x29df39['sendStatus'](_0x56ffef);}else{if(_0x56ffef===0x1f4){_0x29df39[_0x7ca9('0x2d')](_0x56ffef)['send'](_0x3978ef);}else{_0x29df39['status'](_0x56ffef)[_0x7ca9('0x2e')](_0x3978ef);}}});};exports[_0x7ca9('0x84')]=function(_0x13fa6a,_0x1a6a0a,_0x170660){var _0x4e4f6c={};var _0x3d6ff2={};var _0x305dc5;var _0x2cba1d;return db[_0x7ca9('0x42')]['findOne']({'where':{'id':_0x13fa6a[_0x7ca9('0x64')]['id']}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x1a6a0a,null))[_0x7ca9('0x1f')](function(_0x31de28){if(_0x31de28){_0x305dc5=_0x31de28;_0x3d6ff2[_0x7ca9('0x46')]=_[_0x7ca9('0x48')](db[_0x7ca9('0x85')][_0x7ca9('0x43')]);_0x3d6ff2[_0x7ca9('0x47')]=_['keys'](_0x13fa6a[_0x7ca9('0x47')]);_0x3d6ff2[_0x7ca9('0x59')]=_['intersection'](_0x3d6ff2[_0x7ca9('0x46')],_0x3d6ff2[_0x7ca9('0x47')]);_0x4e4f6c[_0x7ca9('0x49')]=_[_0x7ca9('0x4a')](_0x3d6ff2[_0x7ca9('0x46')],qs['fields'](_0x13fa6a[_0x7ca9('0x47')][_0x7ca9('0x4b')]));_0x4e4f6c[_0x7ca9('0x49')]=_0x4e4f6c[_0x7ca9('0x49')][_0x7ca9('0x6a')]?_0x4e4f6c[_0x7ca9('0x49')]:_0x3d6ff2['model'];_0x4e4f6c[_0x7ca9('0x4e')]=qs[_0x7ca9('0x4f')](_0x13fa6a['query'][_0x7ca9('0x4f')]);_0x4e4f6c[_0x7ca9('0x50')]=qs[_0x7ca9('0x59')](_[_0x7ca9('0x51')](_0x13fa6a[_0x7ca9('0x47')],_0x3d6ff2[_0x7ca9('0x59')]));if(_0x13fa6a[_0x7ca9('0x47')]['filter']){_0x4e4f6c[_0x7ca9('0x50')]=_[_0x7ca9('0x52')](_0x4e4f6c[_0x7ca9('0x50')],{'$or':_[_0x7ca9('0x41')](_0x4e4f6c[_0x7ca9('0x49')],function(_0xa85469){var _0x1bc87f={};_0x1bc87f[_0xa85469]={'$like':'%'+_0x13fa6a['query'][_0x7ca9('0x6b')]+'%'};return _0x1bc87f;})});}_0x4e4f6c=_[_0x7ca9('0x52')]({},_0x4e4f6c,_0x13fa6a[_0x7ca9('0x54')]);return _0x305dc5[_0x7ca9('0x84')](_0x4e4f6c);}})[_0x7ca9('0x1f')](function(_0x41dcbd){if(_0x41dcbd){_0x2cba1d=_0x41dcbd['length'];if(!_0x13fa6a[_0x7ca9('0x47')][_0x7ca9('0x4c')](_0x7ca9('0x4d'))){_0x4e4f6c[_0x7ca9('0x30')]=qs['limit'](_0x13fa6a['query'][_0x7ca9('0x30')]);_0x4e4f6c[_0x7ca9('0x2f')]=qs[_0x7ca9('0x2f')](_0x13fa6a[_0x7ca9('0x47')][_0x7ca9('0x2f')]);}return _0x305dc5[_0x7ca9('0x84')](_0x4e4f6c);}})['then'](function(_0x25efe7){if(_0x25efe7){return _0x25efe7?{'count':_0x2cba1d,'rows':_0x25efe7}:null;}})[_0x7ca9('0x1f')](respondWithResult(_0x1a6a0a,null))[_0x7ca9('0x2a')](handleError(_0x1a6a0a,null));};exports[_0x7ca9('0x86')]=function(_0x48c5bf,_0x299bb9,_0xa7920a){var _0x27f64f={'channel':_0x7ca9('0x87')};var _0x4ca522=[];var _0x321747=[];var _0x2d9948={};return db['WhatsappAccount'][_0x7ca9('0x5a')]({'where':{'id':_0x48c5bf[_0x7ca9('0x64')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x7ca9('0x88')}]})[_0x7ca9('0x1f')](handleEntityNotFound(_0x299bb9,null))['then'](function(_0x49bf5c){_0x27f64f[_0x7ca9('0x89')]=_0x49bf5c;if(_0x27f64f['account']&&_0x27f64f['account'][_0x7ca9('0x45')]===_0x7ca9('0x8a')&&_0x48c5bf[_0x7ca9('0x63')]['statuses']){if(_0x48c5bf[_0x7ca9('0x63')]['statuses'][_0x7ca9('0x6a')]===0x0)return;if(_0x48c5bf[_0x7ca9('0x63')][_0x7ca9('0x8b')][0x0][_0x7ca9('0x8c')]!==_0x7ca9('0x8d'))return;return db[_0x7ca9('0x8e')][_0x7ca9('0x37')]({'read':!![],'readAt':_0x48c5bf['body'][_0x7ca9('0x8b')][0x0][_0x7ca9('0x8f')]},{'where':{'messageId':_0x48c5bf[_0x7ca9('0x63')][_0x7ca9('0x8b')][0x0][_0x7ca9('0x90')]},'individualHooks':!![]})[_0x7ca9('0x1f')](function(_0xc0fcdc){return _0x299bb9[_0x7ca9('0x2d')](0xc8)[_0x7ca9('0x2e')](_0xc0fcdc);});}_0x27f64f[_0x7ca9('0x91')]=_[_0x7ca9('0x92')](_0x49bf5c[_0x7ca9('0x88')],['priority'],[_0x7ca9('0x93')]);if(_0x27f64f[_0x7ca9('0x89')][_0x7ca9('0x88')]){delete _0x27f64f[_0x7ca9('0x89')][_0x7ca9('0x88')];}return db[_0x7ca9('0x94')][_0x7ca9('0x65')]()[_0x7ca9('0x1f')](function(_0x520982){if(!_0x520982){throw new db[(_0x7ca9('0x95'))][(_0x7ca9('0x96'))](_0x7ca9('0x97'));}_0x4ca522=_['difference'](_['keys'](_0x520982),[_0x7ca9('0x98'),_0x7ca9('0x99')]);_0x321747=_[_0x7ca9('0x9a')](_['keys'](_0x520982),[_0x7ca9('0x98'),'updatedAt','CompanyId',_0x7ca9('0x9b')]);_0x27f64f['body']={'mapKey':'mobile'};if(_0x27f64f[_0x7ca9('0x89')]&&_0x27f64f[_0x7ca9('0x89')][_0x7ca9('0x45')]===_0x7ca9('0x9c')){_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0x9d')]=_0x48c5bf[_0x7ca9('0x63')]['From']['replace'](_0x7ca9('0x9e'),'');_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0x63')]=_0x48c5bf['body'][_0x7ca9('0x9f')];_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0xa0')]=_0x48c5bf[_0x7ca9('0x63')]['MessageSid'];}if(_0x27f64f[_0x7ca9('0x89')]&&_0x27f64f[_0x7ca9('0x89')][_0x7ca9('0x45')]==='sinch'){_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0x9d')]=_0x48c5bf[_0x7ca9('0x63')][_0x7ca9('0xa1')][0x0]['from'];_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0x63')]=_0x48c5bf[_0x7ca9('0x63')][_0x7ca9('0xa1')][0x0]['message'][_0x7ca9('0x63')];_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0xa0')]=_0x48c5bf['body'][_0x7ca9('0xa1')][0x0][_0x7ca9('0x90')];}if(_0x27f64f[_0x7ca9('0x63')]['id']){delete _0x27f64f[_0x7ca9('0x63')]['id'];}if(_[_0x7ca9('0xa2')](_0x27f64f['body'][_0x7ca9('0x9d')])){throw new db['Sequelize'][(_0x7ca9('0x96'))]('from\x20is\x20mandatory');}if(_[_0x7ca9('0xa2')](_0x27f64f[_0x7ca9('0x63')]['body'])||_0x27f64f[_0x7ca9('0x63')]['body']===''){throw new db[(_0x7ca9('0x95'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x27f64f[_0x7ca9('0x63')]['mapKey'])){throw new db[(_0x7ca9('0x95'))][(_0x7ca9('0x96'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x321747);}if(!_[_0x7ca9('0xa3')](_0x321747,_0x27f64f[_0x7ca9('0x63')]['mapKey'])){throw new db[(_0x7ca9('0x95'))][(_0x7ca9('0x96'))](_0x7ca9('0xa4')+_0x321747);}_0x2d9948[_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0xa5')]]=_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0x9d')];return db[_0x7ca9('0xa6')]['find']({'where':{'id':_0x27f64f[_0x7ca9('0x89')]['ListId']},'include':[{'model':db[_0x7ca9('0x94')],'as':'Contacts','where':_0x2d9948,'limit':0x1,'order':[[_0x7ca9('0x99'),_0x7ca9('0xa7')]]}]});})[_0x7ca9('0x1f')](handleEntityNotFound(_0x299bb9,null))[_0x7ca9('0x1f')](function(_0x19ced8){if(_0x19ced8){_0x27f64f[_0x7ca9('0xa8')]=_[_0x7ca9('0x74')](_0x19ced8,[_0x7ca9('0xa9')]);if(_0x19ced8['Contacts'][_0x7ca9('0x6a')]){return _0x19ced8[_0x7ca9('0xa9')][0x0];}var _0x25bb33=_[_0x7ca9('0x18')](_0x27f64f[_0x7ca9('0x63')],{'firstName':_0x27f64f[_0x7ca9('0x63')]['from'],'ListId':_0x19ced8['id']});_0x25bb33[_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0xa5')]]=_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0x9d')];return db[_0x7ca9('0x94')][_0x7ca9('0x5b')](_0x25bb33,{'fields':_0x4ca522,'raw':!![]});}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x299bb9,null))[_0x7ca9('0x1f')](function(_0x2c338e){if(_0x2c338e){_0x27f64f['contact']=_0x2c338e;var _0x2d615a={'ContactId':_0x2c338e['id'],'phone':_0x27f64f[_0x7ca9('0x63')]['from'],'WhatsappAccountId':_0x48c5bf[_0x7ca9('0x64')]['id']};var _0x3aae98={'ContactId':_0x2c338e['id'],'WhatsappAccountId':_0x48c5bf[_0x7ca9('0x64')]['id'],'closed':![]};return db[_0x7ca9('0xaa')]['find']({'where':_0x3aae98})[_0x7ca9('0x1f')](function(_0x35a44f){if(_0x35a44f){return[_0x35a44f,![]];}return db[_0x7ca9('0xaa')][_0x7ca9('0x5b')](_0x2d615a)[_0x7ca9('0x1f')](function(_0x22e105){return[_0x22e105,!![]];});});}})[_0x7ca9('0xab')](function(_0x27ada3,_0xd7e3c5){_0x27f64f[_0x7ca9('0xac')]=_0x27ada3[_0x7ca9('0x5c')]({'plain':!![]});_0x27f64f[_0x7ca9('0xac')]['created']=![];if(_0xd7e3c5){if(_0x27f64f[_0x7ca9('0x89')]['autoclose']){_0x27f64f[_0x7ca9('0x91')][_0x7ca9('0xad')]({'id':0x0,'priority':_0x27f64f[_0x7ca9('0x91')][_0x7ca9('0x6a')]+0x1,'app':'close','appdata':_0x7ca9('0xae'),'interval':_0x7ca9('0xaf')});}_0x27f64f['interaction'][_0x7ca9('0xb0')]=!![];}return db['WhatsappMessage'][_0x7ca9('0x5b')]({'phone':_0x27f64f[_0x7ca9('0x63')]['from'],'messageId':_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0xa0')],'body':_0x27f64f['body']['body'],'WhatsappAccountId':_0x48c5bf['params']['id'],'WhatsappInteractionId':_0x27ada3['id'],'direction':'in','ContactId':_0x27ada3[_0x7ca9('0xb1')],'AttachmentId':_0x27f64f[_0x7ca9('0x63')][_0x7ca9('0xb2')]});})['then'](function(_0x12187d){_0x27f64f[_0x7ca9('0x28')]=_0x12187d;if(_0x27f64f[_0x7ca9('0xac')][_0x7ca9('0xb3')]){return db['User'][_0x7ca9('0x5a')]({'attributes':['id',_0x7ca9('0x3c')],'where':{'id':_0x27f64f[_0x7ca9('0xac')][_0x7ca9('0xb3')]}})[_0x7ca9('0x1f')](function(_0x2b9e33){if(_0x2b9e33){_0x27f64f[_0x7ca9('0x91')]['unshift']({'id':0x0,'priority':0x0,'app':_0x7ca9('0xb4'),'appdata':_0x2b9e33[_0x7ca9('0x3c')]+','+(_0x27f64f[_0x7ca9('0x89')][_0x7ca9('0xb5')]||0xa),'interval':_0x7ca9('0xaf')});}return respondWithRpcPromise(_0x7ca9('0xb6'),_0x7ca9('0xb7'),_0x27f64f);});}return respondWithRpcPromise(_0x7ca9('0xb6'),_0x7ca9('0xb7'),_0x27f64f);})[_0x7ca9('0x1f')](function(_0x3b14e2){if(_0x3b14e2){var _0x532139=0xc8;var _0x12e8e2=_0x7ca9('0xb8');logger[_0x7ca9('0x20')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x12e8e2,_0x532139,_0x7ca9('0xb9'));logger['debug'](_0x7ca9('0xba'),_0x12e8e2,_0x532139,_0x7ca9('0xb9'),JSON[_0x7ca9('0x24')](_0x3b14e2));if(_0x27f64f[_0x7ca9('0x89')]['type']==='twilio'){return _0x299bb9['status'](_0x532139)['set'](_0x7ca9('0xbb'),_0x7ca9('0xbc'))['send'](_0x7ca9('0xbd'));}else{return _0x299bb9['status'](_0x532139)[_0x7ca9('0x2e')](_0x3b14e2);}}});})[_0x7ca9('0x2a')](handleError(_0x299bb9,null));};exports['send']=function(_0x2ea1eb,_0x56f826,_0x17ad83){var _0x46a012,_0x367c0b,_0x5a07c7;if(_['isNil'](_0x2ea1eb[_0x7ca9('0x63')]['body'])||_0x2ea1eb[_0x7ca9('0x63')][_0x7ca9('0x63')]===''){throw new db[(_0x7ca9('0x95'))][(_0x7ca9('0x96'))](_0x7ca9('0xbe'));}if(_['isNil'](_0x2ea1eb['body']['to'])){throw new db[(_0x7ca9('0x95'))]['ValidationError'](_0x7ca9('0xbf'));}_0x46a012=_0x2ea1eb[_0x7ca9('0x63')]['to'];return db[_0x7ca9('0x42')][_0x7ca9('0x5a')]({'where':{'id':_0x2ea1eb[_0x7ca9('0x64')]['id']},'include':[{'model':db[_0x7ca9('0xa6')],'as':_0x7ca9('0xc0'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x46a012},'limit':0x1,'order':[[_0x7ca9('0x99'),_0x7ca9('0xa7')]]}]}]})[_0x7ca9('0x1f')](handleEntityNotFound(_0x56f826,null))[_0x7ca9('0x1f')](function(_0x641c3b){if(_0x641c3b&&_0x641c3b['List']){_0x367c0b=_0x641c3b[_0x7ca9('0x5c')]({'plain':!![]});if(_0x367c0b['List']&&_0x367c0b[_0x7ca9('0xc0')]['Contacts'][_0x7ca9('0x6a')]){return _0x367c0b[_0x7ca9('0xc0')][_0x7ca9('0xa9')][0x0];}return db['CmContact']['create'](_[_0x7ca9('0x18')](_0x2ea1eb['body'],{'firstName':_0x46a012,'mobile':_0x46a012,'phone':_0x46a012,'ListId':_0x367c0b[_0x7ca9('0x9b')]}));}})[_0x7ca9('0x1f')](handleEntityNotFound(_0x56f826,null))[_0x7ca9('0x1f')](function(_0x547d1e){if(_0x547d1e){_0x5a07c7=_0x547d1e;return db[_0x7ca9('0xaa')][_0x7ca9('0x5a')]({'where':{'ContactId':_0x5a07c7['id'],'closed':![],'WhatsappAccountId':_0x367c0b['id']}})[_0x7ca9('0x1f')](function(_0x4f914a){if(_0x4f914a){return[_0x4f914a,![]];}return db[_0x7ca9('0xaa')][_0x7ca9('0x5b')]({'UserId':_0x2ea1eb[_0x7ca9('0x5f')]['id'],'ContactId':_0x5a07c7['id'],'WhatsappAccountId':_0x367c0b['id'],'phone':_0x46a012,'firstMsgDirection':_0x7ca9('0xc1'),'Messages':[_[_0x7ca9('0x52')](_0x2ea1eb[_0x7ca9('0x63')],{'read':![],'body':_0x2ea1eb['body'][_0x7ca9('0x63')],'phone':_0x46a012,'WhatsappAccountId':_0x367c0b['id'],'UserId':_0x2ea1eb[_0x7ca9('0x5f')]['id'],'ContactId':_0x5a07c7['id']})]},{'include':[{'model':db[_0x7ca9('0x8e')],'as':_0x7ca9('0xc2')}]})[_0x7ca9('0x1f')](function(_0x404246){return[_0x404246,!![]];});});}})[_0x7ca9('0xab')](function(_0xf2c8a4,_0x3779ea){if(_0x3779ea){return _0xf2c8a4;}return db[_0x7ca9('0x8e')][_0x7ca9('0x5b')](_[_0x7ca9('0x52')](_0x2ea1eb[_0x7ca9('0x63')],{'read':![],'body':_0x2ea1eb[_0x7ca9('0x63')][_0x7ca9('0x63')],'phone':_0x46a012,'WhatsappAccountId':_0x367c0b['id'],'WhatsappInteractionId':_0xf2c8a4['id'],'UserId':_0x2ea1eb[_0x7ca9('0x5f')]['id'],'ContactId':_0x5a07c7['id']}))[_0x7ca9('0x1f')](function(_0x299413){_0xf2c8a4['dataValues'][_0x7ca9('0xc2')]=[];_0xf2c8a4['dataValues']['Messages']['push'](_0x299413[_0x7ca9('0xc3')]);return _0xf2c8a4;});})['then'](respondWithResult(_0x56f826,null))[_0x7ca9('0x2a')](handleError(_0x56f826,null));}; \ No newline at end of file diff --git a/server/api/whatsappAccount/whatsappAccount.events.js b/server/api/whatsappAccount/whatsappAccount.events.js new file mode 100644 index 0000000..42e7245 --- /dev/null +++ b/server/api/whatsappAccount/whatsappAccount.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x81a6=['hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','emit'];(function(_0x27bb0b,_0x3003d6){var _0x58709a=function(_0x35a351){while(--_0x35a351){_0x27bb0b['push'](_0x27bb0b['shift']());}};_0x58709a(++_0x3003d6);}(_0x81a6,0x157));var _0x681a=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0x81a6[_0xc0a3d3];return _0x3386e8;};'use strict';var EventEmitter=require(_0x681a('0x0'));var WhatsappAccount=require(_0x681a('0x1'))['db'][_0x681a('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x681a('0x3')](0x0);var events={'afterCreate':_0x681a('0x4'),'afterUpdate':_0x681a('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1e22f1){return function(_0x3217ff,_0x39b464,_0x46c75b){WhatsappAccountEvents[_0x681a('0x6')](_0x1e22f1+':'+_0x3217ff['id'],_0x3217ff);WhatsappAccountEvents[_0x681a('0x6')](_0x1e22f1,_0x3217ff);_0x46c75b(null);};}for(var e in events){if(events[_0x681a('0x7')](e)){var event=events[e];WhatsappAccount[_0x681a('0x8')](e,emitEvent(event));}}module[_0x681a('0x9')]=WhatsappAccountEvents; \ No newline at end of file diff --git a/server/api/whatsappAccount/whatsappAccount.model.js b/server/api/whatsappAccount/whatsappAccount.model.js new file mode 100644 index 0000000..ca527fc --- /dev/null +++ b/server/api/whatsappAccount/whatsappAccount.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x262f=['request-promise','path','./whatsappAccount.attributes','whatsapp_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x582f6f,_0x39d0ce){var _0x6efd70=function(_0x412f4f){while(--_0x412f4f){_0x582f6f['push'](_0x582f6f['shift']());}};_0x6efd70(++_0x39d0ce);}(_0x262f,0x67));var _0xf262=function(_0x75f0e3,_0xf48e93){_0x75f0e3=_0x75f0e3-0x0;var _0x3d535b=_0x262f[_0x75f0e3];return _0x3d535b;};'use strict';var _=require(_0xf262('0x0'));var util=require('util');var logger=require(_0xf262('0x1'))(_0xf262('0x2'));var moment=require(_0xf262('0x3'));var BPromise=require(_0xf262('0x4'));var rp=require(_0xf262('0x5'));var fs=require('fs');var path=require(_0xf262('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf262('0x7'));module['exports']=function(_0x2e1631,_0x400709){return _0x2e1631['define']('WhatsappAccount',attributes,{'tableName':_0xf262('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/whatsappAccount/whatsappAccount.rpc.js b/server/api/whatsappAccount/whatsappAccount.rpc.js new file mode 100644 index 0000000..f4e9e75 --- /dev/null +++ b/server/api/whatsappAccount/whatsappAccount.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x5272=['debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','find','options','raw','where','include','map','model','attributes','ShowWhatsappAccount','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s'];(function(_0x41c9f2,_0x3dc2c0){var _0x2fb75d=function(_0xb78361){while(--_0xb78361){_0x41c9f2['push'](_0x41c9f2['shift']());}};_0x2fb75d(++_0x3dc2c0);}(_0x5272,0x14a));var _0x2527=function(_0x475927,_0x4b0be7){_0x475927=_0x475927-0x0;var _0x19e8f3=_0x5272[_0x475927];return _0x19e8f3;};'use strict';var _=require(_0x2527('0x0'));var util=require(_0x2527('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2527('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2527('0x3'))['db'];var utils=require(_0x2527('0x4'));var logger=require(_0x2527('0x5'))(_0x2527('0x6'));var config=require(_0x2527('0x7'));var jayson=require(_0x2527('0x8'));var client=jayson[_0x2527('0x9')][_0x2527('0xa')]({'port':0x232a});config[_0x2527('0xb')]=_[_0x2527('0xc')](config[_0x2527('0xb')],{'host':_0x2527('0xd'),'port':0x18eb});var socket=require(_0x2527('0xe'))(new Redis(config['redis']));require(_0x2527('0xf'))[_0x2527('0x10')](socket);function respondWithRpcPromise(_0x194d35,_0xc3af22,_0x40732c){return new BPromise(function(_0x3b01f2,_0x42d07e){return client[_0x2527('0x11')](_0x194d35,_0x40732c)[_0x2527('0x12')](function(_0x1c2a50){logger[_0x2527('0x13')](_0x2527('0x14'),_0xc3af22,'request\x20sent');logger[_0x2527('0x15')](_0x2527('0x16'),_0xc3af22,_0x2527('0x17'),JSON[_0x2527('0x18')](_0x1c2a50));if(_0x1c2a50[_0x2527('0x19')]){if(_0x1c2a50['error'][_0x2527('0x1a')]===0x1f4){logger[_0x2527('0x19')](_0x2527('0x14'),_0xc3af22,_0x1c2a50[_0x2527('0x19')][_0x2527('0x1b')]);return _0x42d07e(_0x1c2a50[_0x2527('0x19')][_0x2527('0x1b')]);}logger[_0x2527('0x19')](_0x2527('0x14'),_0xc3af22,_0x1c2a50[_0x2527('0x19')][_0x2527('0x1b')]);return _0x3b01f2(_0x1c2a50[_0x2527('0x19')]['message']);}else{logger[_0x2527('0x13')](_0x2527('0x14'),_0xc3af22,_0x2527('0x17'));_0x3b01f2(_0x1c2a50[_0x2527('0x1c')][_0x2527('0x1b')]);}})[_0x2527('0x1d')](function(_0x372b4f){logger[_0x2527('0x19')]('WhatsappAccount,\x20%s,\x20%s',_0xc3af22,_0x372b4f);_0x42d07e(_0x372b4f);});});}exports['ShowWhatsappAccount']=function(_0x243959){var _0x2b6f74=this;return new Promise(function(_0xeba6e7,_0xbb70a1){return db['WhatsappAccount'][_0x2527('0x1e')]({'raw':_0x243959['options']?_0x243959[_0x2527('0x1f')][_0x2527('0x20')]===undefined?!![]:![]:!![],'where':_0x243959[_0x2527('0x1f')]?_0x243959[_0x2527('0x1f')][_0x2527('0x21')]||null:null,'attributes':_0x243959[_0x2527('0x1f')]?_0x243959[_0x2527('0x1f')]['attributes']||null:null,'include':_0x243959['options']?_0x243959[_0x2527('0x1f')][_0x2527('0x22')]?_[_0x2527('0x23')](_0x243959['options'][_0x2527('0x22')],function(_0x515a6e){return{'model':db[_0x515a6e[_0x2527('0x24')]],'as':_0x515a6e['as'],'attributes':_0x515a6e[_0x2527('0x25')],'include':_0x515a6e[_0x2527('0x22')]?_[_0x2527('0x23')](_0x515a6e[_0x2527('0x22')],function(_0x5af1d6){return{'model':db[_0x5af1d6['model']],'as':_0x5af1d6['as'],'attributes':_0x5af1d6['attributes'],'include':_0x5af1d6['include']?_[_0x2527('0x23')](_0x5af1d6[_0x2527('0x22')],function(_0x54b9f9){return{'model':db[_0x54b9f9['model']],'as':_0x54b9f9['as'],'attributes':_0x54b9f9['attributes']};}):[]};}):[]};}):[]:[]})[_0x2527('0x12')](function(_0x3a6858){logger[_0x2527('0x13')](_0x2527('0x26'),_0x243959);logger['debug'](_0x2527('0x26'),_0x243959,JSON[_0x2527('0x18')](_0x3a6858));_0xeba6e7(_0x3a6858);})[_0x2527('0x1d')](function(_0x21f7d6){logger['error']('ShowWhatsappAccount',_0x21f7d6[_0x2527('0x1b')],_0x243959);_0xbb70a1(_0x2b6f74[_0x2527('0x19')](0x1f4,_0x21f7d6[_0x2527('0x1b')]));});});}; \ No newline at end of file diff --git a/server/api/whatsappAccount/whatsappAccount.socket.js b/server/api/whatsappAccount/whatsappAccount.socket.js new file mode 100644 index 0000000..7a0e481 --- /dev/null +++ b/server/api/whatsappAccount/whatsappAccount.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x6c57=['remove','update','removeListener','length','whatsappAccount:','./whatsappAccount.events','save'];(function(_0x318ab8,_0x151ef9){var _0x49886a=function(_0x1c3263){while(--_0x1c3263){_0x318ab8['push'](_0x318ab8['shift']());}};_0x49886a(++_0x151ef9);}(_0x6c57,0x140));var _0x76c5=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x6c57[_0x134c2e];return _0x2825db;};'use strict';var WhatsappAccountEvents=require(_0x76c5('0x0'));var events=[_0x76c5('0x1'),_0x76c5('0x2'),_0x76c5('0x3')];function createListener(_0x40f2e8,_0x2d3743){return function(_0xbd912c){_0x2d3743['emit'](_0x40f2e8,_0xbd912c);};}function removeListener(_0x3f3672,_0x48f7dc){return function(){WhatsappAccountEvents[_0x76c5('0x4')](_0x3f3672,_0x48f7dc);};}exports['register']=function(_0x5ade1a){for(var _0x3fb969=0x0,_0x4452f8=events[_0x76c5('0x5')];_0x3fb969<_0x4452f8;_0x3fb969++){var _0x5c2a5d=events[_0x3fb969];var _0x563d9b=createListener(_0x76c5('0x6')+_0x5c2a5d,_0x5ade1a);WhatsappAccountEvents['on'](_0x5c2a5d,_0x563d9b);}}; \ No newline at end of file diff --git a/server/api/whatsappApplication/index.js b/server/api/whatsappApplication/index.js new file mode 100644 index 0000000..39f9be9 --- /dev/null +++ b/server/api/whatsappApplication/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7dc9=['./whatsappApplication.controller','isAuthenticated','index','/:id','show','post','create','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4a9973,_0x5228c3){var _0x4695f0=function(_0x30c21f){while(--_0x30c21f){_0x4a9973['push'](_0x4a9973['shift']());}};_0x4695f0(++_0x5228c3);}(_0x7dc9,0x139));var _0x97dc=function(_0x292eb9,_0x4807f8){_0x292eb9=_0x292eb9-0x0;var _0x30f4af=_0x7dc9[_0x292eb9];return _0x30f4af;};'use strict';var multer=require(_0x97dc('0x0'));var util=require(_0x97dc('0x1'));var path=require(_0x97dc('0x2'));var timeout=require(_0x97dc('0x3'));var express=require(_0x97dc('0x4'));var router=express[_0x97dc('0x5')]();var fs_extra=require(_0x97dc('0x6'));var auth=require(_0x97dc('0x7'));var interaction=require(_0x97dc('0x8'));var config=require(_0x97dc('0x9'));var controller=require(_0x97dc('0xa'));router['get']('/',auth[_0x97dc('0xb')](),controller[_0x97dc('0xc')]);router['get'](_0x97dc('0xd'),auth[_0x97dc('0xb')](),controller[_0x97dc('0xe')]);router[_0x97dc('0xf')]('/',auth[_0x97dc('0xb')](),controller[_0x97dc('0x10')]);router['put'](_0x97dc('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x97dc('0xd'),auth[_0x97dc('0xb')](),controller[_0x97dc('0x11')]);module[_0x97dc('0x12')]=router; \ No newline at end of file diff --git a/server/api/whatsappApplication/whatsappApplication.attributes.js b/server/api/whatsappApplication/whatsappApplication.attributes.js new file mode 100644 index 0000000..bc8d44b --- /dev/null +++ b/server/api/whatsappApplication/whatsappApplication.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x187b=['INTEGER','STRING','*,*,*,*','sequelize','exports'];(function(_0x40998b,_0x38b1c5){var _0xb33ab8=function(_0xbee60e){while(--_0xbee60e){_0x40998b['push'](_0x40998b['shift']());}};_0xb33ab8(++_0x38b1c5);}(_0x187b,0x12a));var _0xb187=function(_0x16a035,_0x2d520d){_0x16a035=_0x16a035-0x0;var _0x32749a=_0x187b[_0x16a035];return _0x32749a;};'use strict';var Sequelize=require(_0xb187('0x0'));module[_0xb187('0x1')]={'priority':{'type':Sequelize[_0xb187('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xb187('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xb187('0x3')]},'interval':{'type':Sequelize[_0xb187('0x3')],'defaultValue':_0xb187('0x4')}}; \ No newline at end of file diff --git a/server/api/whatsappApplication/whatsappApplication.controller.js b/server/api/whatsappApplication/whatsappApplication.controller.js new file mode 100644 index 0000000..f5d66f5 --- /dev/null +++ b/server/api/whatsappApplication/whatsappApplication.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1bb4=['sendStatus','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x527dc5,_0x1de7e7){var _0x216de9=function(_0xde9c52){while(--_0xde9c52){_0x527dc5['push'](_0x527dc5['shift']());}};_0x216de9(++_0x1de7e7);}(_0x1bb4,0x1c7));var _0x41bb=function(_0x4e406f,_0x526785){_0x4e406f=_0x4e406f-0x0;var _0x456590=_0x1bb4[_0x4e406f];return _0x456590;};'use strict';var emlformat=require(_0x41bb('0x0'));var rimraf=require(_0x41bb('0x1'));var zipdir=require(_0x41bb('0x2'));var jsonpatch=require(_0x41bb('0x3'));var rp=require(_0x41bb('0x4'));var moment=require('moment');var BPromise=require(_0x41bb('0x5'));var Mustache=require('mustache');var util=require(_0x41bb('0x6'));var path=require('path');var sox=require(_0x41bb('0x7'));var csv=require('to-csv');var ejs=require(_0x41bb('0x8'));var fs=require('fs');var fs_extra=require(_0x41bb('0x9'));var _=require(_0x41bb('0xa'));var squel=require('squel');var crypto=require(_0x41bb('0xb'));var jsforce=require(_0x41bb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x41bb('0xd'));var querystring=require(_0x41bb('0xe'));var Papa=require(_0x41bb('0xf'));var Redis=require('ioredis');var authService=require(_0x41bb('0x10'));var qs=require(_0x41bb('0x11'));var as=require(_0x41bb('0x12'));var hardwareService=require(_0x41bb('0x13'));var logger=require(_0x41bb('0x14'))('api');var utils=require(_0x41bb('0x15'));var config=require(_0x41bb('0x16'));var licenseUtil=require(_0x41bb('0x17'));var db=require(_0x41bb('0x18'))['db'];function respondWithStatusCode(_0x28c08a,_0x233473){_0x233473=_0x233473||0xcc;return function(_0x1f4b78){if(_0x1f4b78){return _0x28c08a[_0x41bb('0x19')](_0x233473);}return _0x28c08a['status'](_0x233473)['end']();};}function respondWithResult(_0x4bfeae,_0x43fd1f){_0x43fd1f=_0x43fd1f||0xc8;return function(_0x46a7ec){if(_0x46a7ec){return _0x4bfeae[_0x41bb('0x1a')](_0x43fd1f)['json'](_0x46a7ec);}};}function respondWithFilteredResult(_0x514d8f,_0x18bf70){return function(_0xa66c46){if(_0xa66c46){var _0xfa8f14=typeof _0x18bf70[_0x41bb('0x1b')]===_0x41bb('0x1c')&&typeof _0x18bf70['limit']===_0x41bb('0x1c');var _0x5a8de5=_0xa66c46[_0x41bb('0x1d')];var _0x3fa4a4=_0xfa8f14?0x0:_0x18bf70['offset'];var _0xc202d0=_0xfa8f14?_0xa66c46[_0x41bb('0x1d')]:_0x18bf70['offset']+_0x18bf70['limit'];var _0x3755d7;if(_0xc202d0>=_0x5a8de5){_0xc202d0=_0x5a8de5;_0x3755d7=0xc8;}else{_0x3755d7=0xce;}_0x514d8f['status'](_0x3755d7);return _0x514d8f[_0x41bb('0x1e')](_0x41bb('0x1f'),_0x3fa4a4+'-'+_0xc202d0+'/'+_0x5a8de5)[_0x41bb('0x20')](_0xa66c46);}return null;};}function patchUpdates(_0x2be518){return function(_0x2765e7){try{jsonpatch[_0x41bb('0x21')](_0x2765e7,_0x2be518,!![]);}catch(_0x44d02d){return BPromise[_0x41bb('0x22')](_0x44d02d);}return _0x2765e7[_0x41bb('0x23')]();};}function saveUpdates(_0x407480,_0x5bd58f){return function(_0x29b356){if(_0x29b356){return _0x29b356[_0x41bb('0x24')](_0x407480)[_0x41bb('0x25')](function(_0x177209){return _0x177209;});}return null;};}function removeEntity(_0x54ec2a,_0x4d065e){return function(_0x1a43ad){if(_0x1a43ad){return _0x1a43ad[_0x41bb('0x26')]()[_0x41bb('0x25')](function(){_0x54ec2a['status'](0xcc)[_0x41bb('0x27')]();});}};}function handleEntityNotFound(_0x19bd28,_0x592239){return function(_0x310f09){if(!_0x310f09){_0x19bd28[_0x41bb('0x19')](0x194);}return _0x310f09;};}function handleError(_0x20ebe6,_0x2fba16){_0x2fba16=_0x2fba16||0x1f4;return function(_0x440d33){logger[_0x41bb('0x28')](_0x440d33[_0x41bb('0x29')]);if(_0x440d33[_0x41bb('0x2a')]){delete _0x440d33[_0x41bb('0x2a')];}_0x20ebe6[_0x41bb('0x1a')](_0x2fba16)[_0x41bb('0x2b')](_0x440d33);};}exports[_0x41bb('0x2c')]=function(_0x430131,_0x16b1f6){var _0x148ea5={},_0x4645c8={},_0x501f78={'count':0x0,'rows':[]};var _0x32af99=_[_0x41bb('0x2d')](db[_0x41bb('0x2e')][_0x41bb('0x2f')],function(_0x3a3d23){return{'name':_0x3a3d23[_0x41bb('0x30')],'type':_0x3a3d23[_0x41bb('0x31')][_0x41bb('0x32')]};});_0x4645c8[_0x41bb('0x33')]=_[_0x41bb('0x2d')](_0x32af99,_0x41bb('0x2a'));_0x4645c8[_0x41bb('0x34')]=_[_0x41bb('0x35')](_0x430131[_0x41bb('0x34')]);_0x4645c8[_0x41bb('0x36')]=_[_0x41bb('0x37')](_0x4645c8['model'],_0x4645c8[_0x41bb('0x34')]);_0x148ea5[_0x41bb('0x38')]=_[_0x41bb('0x37')](_0x4645c8[_0x41bb('0x33')],qs[_0x41bb('0x39')](_0x430131[_0x41bb('0x34')][_0x41bb('0x39')]));_0x148ea5['attributes']=_0x148ea5['attributes'][_0x41bb('0x3a')]?_0x148ea5[_0x41bb('0x38')]:_0x4645c8[_0x41bb('0x33')];if(!_0x430131[_0x41bb('0x34')][_0x41bb('0x3b')](_0x41bb('0x3c'))){_0x148ea5[_0x41bb('0x3d')]=qs[_0x41bb('0x3d')](_0x430131['query']['limit']);_0x148ea5['offset']=qs[_0x41bb('0x1b')](_0x430131[_0x41bb('0x34')][_0x41bb('0x1b')]);}_0x148ea5[_0x41bb('0x3e')]=qs[_0x41bb('0x3f')](_0x430131['query'][_0x41bb('0x3f')]);_0x148ea5[_0x41bb('0x40')]=qs[_0x41bb('0x36')](_[_0x41bb('0x41')](_0x430131[_0x41bb('0x34')],_0x4645c8[_0x41bb('0x36')]),_0x32af99);if(_0x430131[_0x41bb('0x34')][_0x41bb('0x42')]){_0x148ea5[_0x41bb('0x40')]=_[_0x41bb('0x43')](_0x148ea5['where'],{'$or':_['map'](_0x32af99,function(_0x5f22eb){if(_0x5f22eb[_0x41bb('0x31')]!==_0x41bb('0x44')){var _0x3ac009={};_0x3ac009[_0x5f22eb[_0x41bb('0x2a')]]={'$like':'%'+_0x430131['query'][_0x41bb('0x42')]+'%'};return _0x3ac009;}})});}_0x148ea5=_[_0x41bb('0x43')]({},_0x148ea5,_0x430131['options']);var _0x4df15e={'where':_0x148ea5[_0x41bb('0x40')]};return db[_0x41bb('0x2e')]['count'](_0x4df15e)[_0x41bb('0x25')](function(_0x4aa5dc){_0x501f78[_0x41bb('0x1d')]=_0x4aa5dc;if(_0x430131[_0x41bb('0x34')][_0x41bb('0x45')]){_0x148ea5[_0x41bb('0x46')]=[{'all':!![]}];}return db[_0x41bb('0x2e')][_0x41bb('0x47')](_0x148ea5);})[_0x41bb('0x25')](function(_0x4e0c7d){_0x501f78[_0x41bb('0x48')]=_0x4e0c7d;return _0x501f78;})[_0x41bb('0x25')](respondWithFilteredResult(_0x16b1f6,_0x148ea5))['catch'](handleError(_0x16b1f6,null));};exports[_0x41bb('0x49')]=function(_0x14a908,_0x6a5364){var _0x59ed00={'raw':!![],'where':{'id':_0x14a908[_0x41bb('0x4a')]['id']}},_0x2deafc={};_0x2deafc[_0x41bb('0x33')]=_['keys'](db[_0x41bb('0x2e')][_0x41bb('0x2f')]);_0x2deafc[_0x41bb('0x34')]=_[_0x41bb('0x35')](_0x14a908[_0x41bb('0x34')]);_0x2deafc[_0x41bb('0x36')]=_[_0x41bb('0x37')](_0x2deafc[_0x41bb('0x33')],_0x2deafc['query']);_0x59ed00[_0x41bb('0x38')]=_[_0x41bb('0x37')](_0x2deafc[_0x41bb('0x33')],qs['fields'](_0x14a908[_0x41bb('0x34')][_0x41bb('0x39')]));_0x59ed00[_0x41bb('0x38')]=_0x59ed00[_0x41bb('0x38')][_0x41bb('0x3a')]?_0x59ed00[_0x41bb('0x38')]:_0x2deafc['model'];if(_0x14a908['query']['includeAll']){_0x59ed00[_0x41bb('0x46')]=[{'all':!![]}];}_0x59ed00=_[_0x41bb('0x43')]({},_0x59ed00,_0x14a908[_0x41bb('0x4b')]);return db['WhatsappApplication']['find'](_0x59ed00)['then'](handleEntityNotFound(_0x6a5364,null))[_0x41bb('0x25')](respondWithResult(_0x6a5364,null))[_0x41bb('0x4c')](handleError(_0x6a5364,null));};exports[_0x41bb('0x4d')]=function(_0x239a67,_0x69292a){return db[_0x41bb('0x2e')]['create'](_0x239a67[_0x41bb('0x4e')],{})[_0x41bb('0x25')](respondWithResult(_0x69292a,0xc9))[_0x41bb('0x4c')](handleError(_0x69292a,null));};exports['update']=function(_0x590f8f,_0x5d2e2e){if(_0x590f8f[_0x41bb('0x4e')]['id']){delete _0x590f8f[_0x41bb('0x4e')]['id'];}return db[_0x41bb('0x2e')][_0x41bb('0x4f')]({'where':{'id':_0x590f8f[_0x41bb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5d2e2e,null))[_0x41bb('0x25')](saveUpdates(_0x590f8f[_0x41bb('0x4e')],null))['then'](respondWithResult(_0x5d2e2e,null))[_0x41bb('0x4c')](handleError(_0x5d2e2e,null));};exports[_0x41bb('0x26')]=function(_0x45ef28,_0x57cd4c){return db[_0x41bb('0x2e')]['find']({'where':{'id':_0x45ef28[_0x41bb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x57cd4c,null))[_0x41bb('0x25')](removeEntity(_0x57cd4c,null))[_0x41bb('0x4c')](handleError(_0x57cd4c,null));}; \ No newline at end of file diff --git a/server/api/whatsappApplication/whatsappApplication.model.js b/server/api/whatsappApplication/whatsappApplication.model.js new file mode 100644 index 0000000..8f43ec1 --- /dev/null +++ b/server/api/whatsappApplication/whatsappApplication.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4bc3=['utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define'];(function(_0x59eacf,_0x56ec4a){var _0x5d74f2=function(_0x5476ed){while(--_0x5476ed){_0x59eacf['push'](_0x59eacf['shift']());}};_0x5d74f2(++_0x56ec4a);}(_0x4bc3,0x16e));var _0x34bc=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x4bc3[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x34bc('0x0'));var util=require(_0x34bc('0x1'));var logger=require('../../config/logger')(_0x34bc('0x2'));var moment=require(_0x34bc('0x3'));var BPromise=require('bluebird');var rp=require(_0x34bc('0x4'));var fs=require('fs');var path=require(_0x34bc('0x5'));var rimraf=require(_0x34bc('0x6'));var config=require(_0x34bc('0x7'));var attributes=require(_0x34bc('0x8'));module[_0x34bc('0x9')]=function(_0x2cc9c2,_0x4c63a1){return _0x2cc9c2[_0x34bc('0xa')]('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x34bc('0xb'),'collate':_0x34bc('0xc')});}; \ No newline at end of file diff --git a/server/api/whatsappApplication/whatsappApplication.rpc.js b/server/api/whatsappApplication/whatsappApplication.rpc.js new file mode 100644 index 0000000..520e3b7 --- /dev/null +++ b/server/api/whatsappApplication/whatsappApplication.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4c4e=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x565ac0,_0x559e8b){var _0x54d5c1=function(_0x19a345){while(--_0x19a345){_0x565ac0['push'](_0x565ac0['shift']());}};_0x54d5c1(++_0x559e8b);}(_0x4c4e,0x152));var _0xe4c4=function(_0x4957b6,_0x2ebb38){_0x4957b6=_0x4957b6-0x0;var _0x52f3ad=_0x4c4e[_0x4957b6];return _0x52f3ad;};'use strict';var _=require(_0xe4c4('0x0'));var util=require('util');var moment=require(_0xe4c4('0x1'));var BPromise=require(_0xe4c4('0x2'));var rs=require(_0xe4c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4c4('0x4'))['db'];var utils=require(_0xe4c4('0x5'));var logger=require(_0xe4c4('0x6'))('rpc');var config=require(_0xe4c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe4c4('0x8')][_0xe4c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x262b64,_0xad105,_0x22085a){return new BPromise(function(_0x329d29,_0x28a42e){return client[_0xe4c4('0xa')](_0x262b64,_0x22085a)['then'](function(_0x589b2e){logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));logger[_0xe4c4('0xe')](_0xe4c4('0xf'),_0xad105,_0xe4c4('0xd'),JSON['stringify'](_0x589b2e));if(_0x589b2e[_0xe4c4('0x10')]){if(_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x11')]===0x1f4){logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x28a42e(_0x589b2e['error'][_0xe4c4('0x12')]);}logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x329d29(_0x589b2e['error'][_0xe4c4('0x12')]);}else{logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));_0x329d29(_0x589b2e[_0xe4c4('0x13')][_0xe4c4('0x12')]);}})[_0xe4c4('0x14')](function(_0x1038cb){logger[_0xe4c4('0x10')](_0xe4c4('0xc'),_0xad105,_0x1038cb);_0x28a42e(_0x1038cb);});});} \ No newline at end of file diff --git a/server/api/whatsappInteraction/index.js b/server/api/whatsappInteraction/index.js new file mode 100644 index 0000000..6fef14e --- /dev/null +++ b/server/api/whatsappInteraction/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x1b20=['getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','put','/:id','update','delete','destroy','removeTags','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','show','/:id/messages'];(function(_0x408d9d,_0x5eb151){var _0x36546c=function(_0x2ddb21){while(--_0x2ddb21){_0x408d9d['push'](_0x408d9d['shift']());}};_0x36546c(++_0x5eb151);}(_0x1b20,0x66));var _0x01b2=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1b20[_0x17d9e3];return _0x14192d;};'use strict';var multer=require('multer');var util=require(_0x01b2('0x0'));var path=require(_0x01b2('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x01b2('0x2')]();var fs_extra=require(_0x01b2('0x3'));var auth=require(_0x01b2('0x4'));var interaction=require(_0x01b2('0x5'));var config=require(_0x01b2('0x6'));var controller=require(_0x01b2('0x7'));router[_0x01b2('0x8')]('/',auth[_0x01b2('0x9')](),controller[_0x01b2('0xa')]);router[_0x01b2('0x8')](_0x01b2('0xb'),auth[_0x01b2('0x9')](),controller['describe']);router[_0x01b2('0x8')]('/:id',auth[_0x01b2('0x9')](),controller[_0x01b2('0xc')]);router[_0x01b2('0x8')](_0x01b2('0xd'),auth[_0x01b2('0x9')](),controller[_0x01b2('0xe')]);router[_0x01b2('0x8')](_0x01b2('0xf'),auth['isAuthenticated'](),controller[_0x01b2('0x10')]);router['post']('/',auth[_0x01b2('0x9')](),controller['create']);router[_0x01b2('0x11')](_0x01b2('0xd'),auth[_0x01b2('0x9')](),controller[_0x01b2('0x12')]);router['post'](_0x01b2('0x13'),auth[_0x01b2('0x9')](),interaction[_0x01b2('0x14')](_0x01b2('0x15'),_0x01b2('0x16')),controller['addTags']);router[_0x01b2('0x17')](_0x01b2('0x18'),auth[_0x01b2('0x9')](),interaction[_0x01b2('0x14')]('whatsapp','whatsappinteraction:update'),controller[_0x01b2('0x19')]);router[_0x01b2('0x1a')]('/:id',auth[_0x01b2('0x9')](),interaction[_0x01b2('0x14')](_0x01b2('0x15'),'whatsappinteraction:destroy'),controller[_0x01b2('0x1b')]);router[_0x01b2('0x1a')](_0x01b2('0x13'),auth[_0x01b2('0x9')](),controller[_0x01b2('0x1c')]);module['exports']=router; \ No newline at end of file diff --git a/server/api/whatsappInteraction/whatsappInteraction.attributes.js b/server/api/whatsappInteraction/whatsappInteraction.attributes.js new file mode 100644 index 0000000..073202f --- /dev/null +++ b/server/api/whatsappInteraction/whatsappInteraction.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x29d4=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x341098,_0x525fe5){var _0x4a39fc=function(_0x82bbdb){while(--_0x82bbdb){_0x341098['push'](_0x341098['shift']());}};_0x4a39fc(++_0x525fe5);}(_0x29d4,0x1a1));var _0x429d=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x29d4[_0x33032e];return _0x13316b;};'use strict';var Sequelize=require(_0x429d('0x0'));var moment=require('moment');module[_0x429d('0x1')]={'closed':{'type':Sequelize[_0x429d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x429d('0x3')]},'disposition':{'type':Sequelize[_0x429d('0x4')]},'secondDisposition':{'type':Sequelize[_0x429d('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x429d('0x4')]},'phone':{'type':Sequelize[_0x429d('0x4')]},'read1stAt':{'type':Sequelize[_0x429d('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x429d('0x5')]('in',_0x429d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x429d('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x429d('0x5')]('in',_0x429d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}}; \ No newline at end of file diff --git a/server/api/whatsappInteraction/whatsappInteraction.controller.js b/server/api/whatsappInteraction/whatsappInteraction.controller.js new file mode 100644 index 0000000..2e34385 --- /dev/null +++ b/server/api/whatsappInteraction/whatsappInteraction.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8294=['error','name','send','WhatsappInteraction','key','getOptions','query','user','catch','params','model','keys','filters','intersection','attributes','fields','length','include','merge','options','create','body','update','find','describe','addMessage','WhatsappMessage','ids','findOne','rawAttributes','nolimit','order','sort','where','pick','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','Attachment','Messages','createdAt','read','Account','Owner','get','N.A.','closed','closedAt','disposition','basename','createReadStream','pipe','createWriteStream','direction','System','lastName','out','secret','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','log','unlinkSync','rimraf','zip-dir','bluebird','ejs','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','end'];(function(_0x12d2d7,_0x253ea8){var _0x1defcb=function(_0x4d42e4){while(--_0x4d42e4){_0x12d2d7['push'](_0x12d2d7['shift']());}};_0x1defcb(++_0x253ea8);}(_0x8294,0x1c6));var _0x4829=function(_0x1d004b,_0x31803a){_0x1d004b=_0x1d004b-0x0;var _0x64c34e=_0x8294[_0x1d004b];return _0x64c34e;};'use strict';var rimraf=require(_0x4829('0x0'));var zipdir=require(_0x4829('0x1'));var moment=require('moment');var BPromise=require(_0x4829('0x2'));var util=require('util');var path=require('path');var ejs=require(_0x4829('0x3'));var fs=require('fs');var _=require(_0x4829('0x4'));var Redis=require(_0x4829('0x5'));var interaction=require('../../components/interaction/service');var qs=require(_0x4829('0x6'));var pdf=require('../../components/export/pdf');var logger=require(_0x4829('0x7'))(_0x4829('0x8'));var config=require(_0x4829('0x9'));var db=require('../../mysqldb')['db'];config[_0x4829('0xa')]=_[_0x4829('0xb')](config[_0x4829('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x4829('0xc'))(new Redis(config[_0x4829('0xa')]));require('./whatsappInteraction.socket')[_0x4829('0xd')](socket);function respondWithStatusCode(_0x5e264c,_0x692720){_0x692720=_0x692720||0xcc;return function(_0x200885){if(_0x200885){return _0x5e264c[_0x4829('0xe')](_0x692720);}return _0x5e264c[_0x4829('0xf')](_0x692720)['end']();};}function respondWithResult(_0x154e49,_0xe938fb){_0xe938fb=_0xe938fb||0xc8;return function(_0x1d8089){if(_0x1d8089){return _0x154e49[_0x4829('0xf')](_0xe938fb)[_0x4829('0x10')](_0x1d8089);}};}function respondWithFilteredResult(_0x20620f,_0x5c304a){return function(_0x1ed308){if(_0x1ed308){var _0x2d6b30=typeof _0x5c304a[_0x4829('0x11')]===_0x4829('0x12')&&typeof _0x5c304a[_0x4829('0x13')]===_0x4829('0x12');var _0x42cb28=_0x1ed308['count'];var _0x207ff8=_0x2d6b30?0x0:_0x5c304a['offset'];var _0x2b61ae=_0x2d6b30?_0x1ed308[_0x4829('0x14')]:_0x5c304a[_0x4829('0x11')]+_0x5c304a['limit'];var _0x531355;if(_0x2b61ae>=_0x42cb28){_0x2b61ae=_0x42cb28;_0x531355=0xc8;}else{_0x531355=0xce;}_0x20620f[_0x4829('0xf')](_0x531355);return _0x20620f[_0x4829('0x15')](_0x4829('0x16'),_0x207ff8+'-'+_0x2b61ae+'/'+_0x42cb28)['json'](_0x1ed308);}return null;};}function saveUpdates(_0x53cd35){return function(_0x2c41a3){if(_0x2c41a3){return _0x2c41a3['update'](_0x53cd35)[_0x4829('0x17')](function(_0x3b6808){return _0x3b6808;});}return null;};}function removeEntity(_0x2b482c){return function(_0x2020f2){if(_0x2020f2){return _0x2020f2[_0x4829('0x18')]()['then'](function(){_0x2b482c['status'](0xcc)[_0x4829('0x19')]();});}};}function handleEntityNotFound(_0x1057c4){return function(_0x3b28ce){if(!_0x3b28ce){_0x1057c4[_0x4829('0xe')](0x194);}return _0x3b28ce;};}function handleError(_0x976f61,_0x26ee97){_0x26ee97=_0x26ee97||0x1f4;return function(_0x3f051e){logger[_0x4829('0x1a')](_0x3f051e['stack']);if(_0x3f051e[_0x4829('0x1b')]){delete _0x3f051e[_0x4829('0x1b')];}_0x976f61[_0x4829('0xf')](_0x26ee97)[_0x4829('0x1c')](_0x3f051e);};}exports['index']=function(_0x267ea9,_0x320ec){var _0x3add46={};var _0x5584bc=_['map'](db[_0x4829('0x1d')]['rawAttributes'],function(_0x44d140){return{'name':_0x44d140['fieldName'],'type':_0x44d140['type'][_0x4829('0x1e')]};});_0x3add46=qs[_0x4829('0x1f')](_0x5584bc,_0x267ea9);return interaction['findAll']('whatsapp',_0x267ea9[_0x4829('0x20')],_0x267ea9[_0x4829('0x21')],_0x3add46,_0x5584bc)[_0x4829('0x17')](respondWithFilteredResult(_0x320ec,_0x3add46))[_0x4829('0x22')](handleError(_0x320ec,null));};exports['show']=function(_0x1e5b8d,_0x42ec04){var _0x3b4617={'raw':![],'where':{'id':_0x1e5b8d[_0x4829('0x23')]['id']}},_0x502840={};_0x502840[_0x4829('0x24')]=_['keys'](db[_0x4829('0x1d')]['rawAttributes']);_0x502840[_0x4829('0x20')]=_[_0x4829('0x25')](_0x1e5b8d[_0x4829('0x20')]);_0x502840[_0x4829('0x26')]=_[_0x4829('0x27')](_0x502840['model'],_0x502840[_0x4829('0x20')]);_0x3b4617[_0x4829('0x28')]=_[_0x4829('0x27')](_0x502840['model'],qs[_0x4829('0x29')](_0x1e5b8d[_0x4829('0x20')]['fields']));_0x3b4617[_0x4829('0x28')]=_0x3b4617[_0x4829('0x28')][_0x4829('0x2a')]?_0x3b4617['attributes']:_0x502840['model'];if(_0x1e5b8d[_0x4829('0x20')]['includeAll']){_0x3b4617[_0x4829('0x2b')]=[{'all':!![]}];}_0x3b4617=_[_0x4829('0x2c')]({},_0x3b4617,_0x1e5b8d[_0x4829('0x2d')]);return db[_0x4829('0x1d')]['find'](_0x3b4617)[_0x4829('0x17')](handleEntityNotFound(_0x42ec04,null))[_0x4829('0x17')](respondWithResult(_0x42ec04,null))[_0x4829('0x22')](handleError(_0x42ec04,null));};exports[_0x4829('0x2e')]=function(_0x55fa67,_0x48ad5f){return db[_0x4829('0x1d')][_0x4829('0x2e')](_0x55fa67[_0x4829('0x2f')],{})[_0x4829('0x17')](respondWithResult(_0x48ad5f,0xc9))['catch'](handleError(_0x48ad5f,null));};exports[_0x4829('0x30')]=function(_0x5c09b9,_0x1dc520){if(_0x5c09b9[_0x4829('0x2f')]['id']){delete _0x5c09b9[_0x4829('0x2f')]['id'];}return db[_0x4829('0x1d')][_0x4829('0x31')]({'where':{'id':_0x5c09b9['params']['id']}})['then'](handleEntityNotFound(_0x1dc520,null))[_0x4829('0x17')](saveUpdates(_0x5c09b9[_0x4829('0x2f')],null))[_0x4829('0x17')](respondWithResult(_0x1dc520,null))[_0x4829('0x22')](handleError(_0x1dc520,null));};exports[_0x4829('0x18')]=function(_0x1ad29e,_0x550fb1){return db[_0x4829('0x1d')][_0x4829('0x31')]({'where':{'id':_0x1ad29e[_0x4829('0x23')]['id']}})[_0x4829('0x17')](handleEntityNotFound(_0x550fb1,null))[_0x4829('0x17')](removeEntity(_0x550fb1,null))[_0x4829('0x22')](handleError(_0x550fb1,null));};exports[_0x4829('0x32')]=function(_0x1985e9,_0x14be81){return db[_0x4829('0x1d')][_0x4829('0x32')]()[_0x4829('0x17')](respondWithResult(_0x14be81,null))['catch'](handleError(_0x14be81,null));};exports[_0x4829('0x33')]=function(_0x473d81,_0x410a02){return db[_0x4829('0x34')][_0x4829('0x31')]({'where':{'id':_0x473d81[_0x4829('0x23')]['id']}})['then'](handleEntityNotFound(_0x410a02,null))[_0x4829('0x17')](function(_0xd3d649){if(_0xd3d649){return _0xd3d649[_0x4829('0x33')](_0x473d81[_0x4829('0x2f')]['ids'],_['omit'](_0x473d81['body'],[_0x4829('0x35'),'id'])||{});}})[_0x4829('0x17')](respondWithResult(_0x410a02,null))[_0x4829('0x22')](handleError(_0x410a02,null));};exports['getMessages']=function(_0x1bcbf9,_0x475db6){var _0x29bcd1={'raw':![],'where':{}};var _0x5e0c82={};var _0x4c5e60={'count':0x0,'rows':[]};return db[_0x4829('0x1d')][_0x4829('0x36')]({'where':{'id':_0x1bcbf9[_0x4829('0x23')]['id']}})[_0x4829('0x17')](handleEntityNotFound(_0x475db6,null))[_0x4829('0x17')](function(_0x27d66a){if(_0x27d66a){_0x5e0c82[_0x4829('0x24')]=_[_0x4829('0x25')](db[_0x4829('0x34')][_0x4829('0x37')]);_0x5e0c82[_0x4829('0x20')]=_[_0x4829('0x25')](_0x1bcbf9[_0x4829('0x20')]);_0x5e0c82['filters']=_['intersection'](_0x5e0c82[_0x4829('0x24')],_0x5e0c82['query']);_0x29bcd1[_0x4829('0x28')]=_[_0x4829('0x27')](_0x5e0c82[_0x4829('0x24')],qs[_0x4829('0x29')](_0x1bcbf9[_0x4829('0x20')]['fields']));_0x29bcd1[_0x4829('0x28')]=_0x29bcd1['attributes'][_0x4829('0x2a')]?_0x29bcd1['attributes']:_0x5e0c82[_0x4829('0x24')];if(!_0x1bcbf9['query']['hasOwnProperty'](_0x4829('0x38'))){_0x29bcd1[_0x4829('0x13')]=qs[_0x4829('0x13')](_0x1bcbf9[_0x4829('0x20')]['limit']);_0x29bcd1['offset']=qs['offset'](_0x1bcbf9['query'][_0x4829('0x11')]);}_0x29bcd1[_0x4829('0x39')]=qs[_0x4829('0x3a')](_0x1bcbf9['query'][_0x4829('0x3a')]);_0x29bcd1[_0x4829('0x3b')]=qs[_0x4829('0x26')](_[_0x4829('0x3c')](_0x1bcbf9[_0x4829('0x20')],_0x5e0c82['filters']));_0x29bcd1[_0x4829('0x3b')]['WhatsappInteractionId']=_0x27d66a['id'];if(_0x1bcbf9[_0x4829('0x20')][_0x4829('0x3d')]){_0x29bcd1[_0x4829('0x3b')]=_[_0x4829('0x2c')](_0x29bcd1[_0x4829('0x3b')],{'$or':_[_0x4829('0x3e')](_0x29bcd1[_0x4829('0x28')],function(_0x2729dd){var _0x56b695={};_0x56b695[_0x2729dd]={'$like':'%'+_0x1bcbf9[_0x4829('0x20')][_0x4829('0x3d')]+'%'};return _0x56b695;})});}if(_0x1bcbf9[_0x4829('0x20')][_0x4829('0x3f')]){var _0x54139e=_0x1bcbf9[_0x4829('0x20')]['$gte'][_0x4829('0x40')](',');var _0x208427={};_0x208427[_0x54139e[0x0]]={'$gte':moment(_0x54139e[0x1])[_0x4829('0x41')](_0x4829('0x42'))};_0x29bcd1[_0x4829('0x3b')]=_[_0x4829('0x2c')](_0x29bcd1[_0x4829('0x3b')],_0x208427);}_0x29bcd1=_[_0x4829('0x2c')]({},_0x29bcd1,_0x1bcbf9[_0x4829('0x2d')]);return db['WhatsappMessage'][_0x4829('0x14')]({'where':_0x29bcd1['where']})['then'](function(_0xf4168e){_0x4c5e60['count']=_0xf4168e;if(_0x1bcbf9[_0x4829('0x20')]['includeAll']){_0x29bcd1[_0x4829('0x2b')]=[{'all':!![]}];}return db[_0x4829('0x34')][_0x4829('0x43')](_0x29bcd1);})[_0x4829('0x17')](function(_0x47ef9e){_0x4c5e60[_0x4829('0x44')]=_0x47ef9e;return _0x4c5e60;});}})[_0x4829('0x17')](respondWithFilteredResult(_0x475db6,_0x29bcd1))[_0x4829('0x22')](handleError(_0x475db6,null));};exports[_0x4829('0x45')]=function(_0xf01fcf,_0x22bbc0){return db[_0x4829('0x1d')]['find']({'where':{'id':_0xf01fcf[_0x4829('0x23')]['id']}})[_0x4829('0x17')](handleEntityNotFound(_0x22bbc0,null))[_0x4829('0x17')](function(_0x1115c2){if(_0x1115c2){return _0x1115c2['setTags'](_0xf01fcf[_0x4829('0x2f')][_0x4829('0x35')],_['omit'](_0xf01fcf['body'],[_0x4829('0x35'),'id'])||{})[_0x4829('0x46')](function(){return db[_0x4829('0x47')]['findAll']({'attributes':['id',_0x4829('0x1b'),_0x4829('0x48')],'where':{'id':_0xf01fcf[_0x4829('0x2f')]['ids']}});})[_0x4829('0x17')](function(_0x5c0075){socket[_0x4829('0x49')](_0x4829('0x4a'),{'id':Number(_0xf01fcf['params']['id']),'tags':_0x5c0075||[]});return{'id':Number(_0xf01fcf[_0x4829('0x23')]['id']),'tags':_0x5c0075||[]};});}})[_0x4829('0x17')](respondWithResult(_0x22bbc0,null))[_0x4829('0x22')](handleError(_0x22bbc0,null));};exports[_0x4829('0x4b')]=function(_0x17dfc6,_0x6d7894){return db['WhatsappInteraction'][_0x4829('0x31')]({'where':{'id':_0x17dfc6[_0x4829('0x23')]['id']}})['then'](handleEntityNotFound(_0x6d7894,null))[_0x4829('0x17')](function(_0x45c266){if(_0x45c266){return _0x45c266['removeTags'](_0x17dfc6[_0x4829('0x20')][_0x4829('0x35')]);}})[_0x4829('0x17')](respondWithStatusCode(_0x6d7894,null))[_0x4829('0x22')](handleError(_0x6d7894,null));};exports[_0x4829('0x4c')]=function(_0x3cf1f8,_0x5d0ebe){var _0x12b90a=moment()[_0x4829('0x4d')]()[_0x4829('0x4e')]();var _0x1b79c8=path[_0x4829('0x4f')](config['root'],_0x4829('0x50'),_0x4829('0x51'),_0x4829('0x52'));var _0x45edaa=path[_0x4829('0x4f')](config[_0x4829('0x53')],_0x4829('0x50'),_0x4829('0x51'),_0x4829('0x54'));var _0x57a94c=path[_0x4829('0x4f')](_0x1b79c8,_0x12b90a);var _0x13c632=util[_0x4829('0x41')](_0x4829('0x55'),_0x3cf1f8['params']['id'],_0x12b90a);var _0xe5e769=path['join'](_0x1b79c8,_0x13c632);var _0x59368c=[];_0x59368c[_0x4829('0x56')]({'model':db[_0x4829('0x57')],'as':'User','attributes':['id',_0x4829('0x58')],'raw':!![]});_0x59368c[_0x4829('0x56')]({'model':db[_0x4829('0x59')],'as':_0x4829('0x5a'),'attributes':['id',_0x4829('0x5b'),'lastName'],'raw':!![]});if(_0x3cf1f8[_0x4829('0x20')][_0x4829('0x54')]){_0x59368c[_0x4829('0x56')]({'model':db['Attachment'],'as':_0x4829('0x5c'),'raw':!![]});}var _0x5e1821=[{'model':db[_0x4829('0x34')],'as':_0x4829('0x5d'),'attributes':['id',_0x4829('0x2f'),_0x4829('0x5e'),'direction','secret',_0x4829('0x5f')],'include':_0x59368c}];_0x5e1821[_0x4829('0x56')]({'model':db['WhatsappAccount'],'as':_0x4829('0x60'),'attributes':['id',_0x4829('0x1b')]});_0x5e1821[_0x4829('0x56')]({'model':db[_0x4829('0x57')],'as':_0x4829('0x61'),'attributes':['id',_0x4829('0x58')]});return db[_0x4829('0x1d')][_0x4829('0x31')]({'where':{'id':_0x3cf1f8[_0x4829('0x23')]['id']},'include':_0x5e1821})[_0x4829('0x17')](handleEntityNotFound(_0x5d0ebe,null))[_0x4829('0x17')](function(_0x5838d8){if(_0x5838d8){var _0x269b96=_0x5838d8[_0x4829('0x62')]({'plain':!![]});fs['mkdirSync'](_0x57a94c);var _0xafc341={'channel':'Whatsapp','account':_0x269b96['Account'][_0x4829('0x1b')],'agent':_0x269b96['Owner']?_0x269b96[_0x4829('0x61')]['fullname']:_0x4829('0x63'),'createdAt':moment(_0x269b96[_0x4829('0x5e')])[_0x4829('0x41')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4829('0x4e')](),'closedAt':_0x269b96[_0x4829('0x64')]?moment(_0x269b96[_0x4829('0x65')])[_0x4829('0x41')](_0x4829('0x42'))[_0x4829('0x4e')]():'','disposition':_0x269b96[_0x4829('0x66')],'messages':_(_0x269b96[_0x4829('0x5d')])[_0x4829('0x3d')]({'secret':![]})[_0x4829('0x3e')](function(_0x4b50e4){if(_0x4b50e4[_0x4829('0x5c')]){var _0x2cffd3=path[_0x4829('0x4f')](_0x45edaa,_0x4b50e4[_0x4829('0x5c')][_0x4829('0x67')]);if(fs['existsSync'](_0x2cffd3)){fs[_0x4829('0x68')](_0x2cffd3)[_0x4829('0x69')](fs[_0x4829('0x6a')](path[_0x4829('0x4f')](_0x57a94c,_0x4b50e4[_0x4829('0x5c')][_0x4829('0x67')])));}}return{'date':moment(_0x4b50e4[_0x4829('0x5e')])[_0x4829('0x41')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4829('0x4e')](),'sender':_0x4b50e4[_0x4829('0x6b')]==='out'?_0x4b50e4['User']?_0x4b50e4[_0x4829('0x57')][_0x4829('0x58')]:_0x4829('0x6c'):_0x4b50e4[_0x4829('0x5a')][_0x4829('0x5b')]+(_0x4b50e4['Contact'][_0x4829('0x6d')]?'\x20'+_0x4b50e4[_0x4829('0x5a')]['lastName']:''),'body':_0x4b50e4[_0x4829('0x5c')]?_0x4b50e4[_0x4829('0x5c')]['basename']:_0x4b50e4['body'],'direction':_0x4b50e4[_0x4829('0x6b')]===_0x4829('0x6e')?'A':'C','secret':_0x4b50e4[_0x4829('0x6f')],'read':_0x4b50e4[_0x4829('0x5f')],'attachment':_0x4b50e4[_0x4829('0x5c')]};})[_0x4829('0x70')]()};return ejs[_0x4829('0x71')](path[_0x4829('0x4f')](config[_0x4829('0x53')],'server',_0x4829('0x72'),_0x4829('0x73')),{'interaction':_0xafc341})[_0x4829('0x17')](function(_0x15cf5d){var _0xbd1b3=path['join'](_0x57a94c,_0x4829('0x74')+_0x269b96['id']+'-'+_0x12b90a+_0x4829('0x75'));var _0x5a1098={'path':_0xbd1b3,'channel':'Whatsapp','interactionId':_0x269b96['id']};return pdf['createPdfFromHTML'](_0x15cf5d,_0x5a1098);})[_0x4829('0x17')](function(){return new BPromise(function(_0x51d5ac,_0x8a1854){zipdir(_0x57a94c,{'saveTo':_0xe5e769},function(_0xc0bb97,_0x59b9f7){if(_0xc0bb97)return _0x8a1854(_0xc0bb97);return _0x51d5ac(_0x59b9f7);});})[_0x4829('0x17')](function(){return new BPromise(function(_0x14f339,_0x17aa91){rimraf(_0x57a94c,function(_0x18f987){if(_0x18f987)_0x17aa91(_0x18f987);return _0x14f339();});});})['then'](function(){return _0x5d0ebe[_0x4829('0x4c')](_0xe5e769,_0x13c632,function(_0x4c4606){if(_0x4c4606){console[_0x4829('0x76')]('err',_0x4c4606);}else{fs[_0x4829('0x77')](_0xe5e769);}});});});}else{return _0x5d0ebe[_0x4829('0xe')](0xc8);}})[_0x4829('0x22')](handleError(_0x5d0ebe,null));}; \ No newline at end of file diff --git a/server/api/whatsappInteraction/whatsappInteraction.events.js b/server/api/whatsappInteraction/whatsappInteraction.events.js new file mode 100644 index 0000000..c92dc53 --- /dev/null +++ b/server/api/whatsappInteraction/whatsappInteraction.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa45b=['exports','../../mysqldb','WhatsappInteraction','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook'];(function(_0x505a97,_0x2ffb37){var _0x57703d=function(_0x8aee23){while(--_0x8aee23){_0x505a97['push'](_0x505a97['shift']());}};_0x57703d(++_0x2ffb37);}(_0xa45b,0x199));var _0xba45=function(_0x6437f3,_0x4bc1d0){_0x6437f3=_0x6437f3-0x0;var _0x56dd80=_0xa45b[_0x6437f3];return _0x56dd80;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0xba45('0x0'))['db'][_0xba45('0x1')];var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xba45('0x2'),'afterUpdate':_0xba45('0x3'),'afterDestroy':_0xba45('0x4')};function emitEvent(_0x35008a){return function(_0x53dc1f,_0x197626,_0x14ee6c){_0x53dc1f[_0xba45('0x5')]({'attributes':['id'],'raw':!![]})[_0xba45('0x6')](function(_0x404229){_0x53dc1f[_0xba45('0x7')](_0xba45('0x8'),_0x404229[_0xba45('0x9')](function(_0x4cb181){return{'id':_0x4cb181['id']};}));return WhatsappMessage[_0xba45('0xa')]({'where':{'WhatsappInteractionId':_0x53dc1f['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x594b02){_0x53dc1f['setDataValue']('unreadMessages',_0x594b02[_0xba45('0xb')]);WhatsappInteractionEvents[_0xba45('0xc')](_0x35008a+':'+_0x53dc1f['id'],_0x53dc1f);WhatsappInteractionEvents['emit'](_0x35008a,_0x53dc1f);_0x14ee6c(null);})[_0xba45('0xd')](_0x14ee6c(null));};}for(var e in events){if(events[_0xba45('0xe')](e)){var event=events[e];WhatsappInteraction[_0xba45('0xf')](e,emitEvent(event));}}module[_0xba45('0x10')]=WhatsappInteractionEvents; \ No newline at end of file diff --git a/server/api/whatsappInteraction/whatsappInteraction.model.js b/server/api/whatsappInteraction/whatsappInteraction.model.js new file mode 100644 index 0000000..bf15310 --- /dev/null +++ b/server/api/whatsappInteraction/whatsappInteraction.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x04f8=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','changed','format','lodash','util'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x04f8,0x1be));var _0x804f=function(_0x1b6573,_0x396d7e){_0x1b6573=_0x1b6573-0x0;var _0xddc766=_0x04f8[_0x1b6573];return _0xddc766;};'use strict';var _=require(_0x804f('0x0'));var util=require(_0x804f('0x1'));var logger=require(_0x804f('0x2'))(_0x804f('0x3'));var moment=require(_0x804f('0x4'));var BPromise=require(_0x804f('0x5'));var rp=require(_0x804f('0x6'));var fs=require('fs');var path=require(_0x804f('0x7'));var rimraf=require(_0x804f('0x8'));var config=require(_0x804f('0x9'));var attributes=require(_0x804f('0xa'));module[_0x804f('0xb')]=function(_0x46ded1,_0x4cf62f){return _0x46ded1[_0x804f('0xc')]('WhatsappInteraction',attributes,{'tableName':_0x804f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x47e7ed,_0x98abbb,_0x52cbae){if(_0x47e7ed[_0x804f('0xe')]('closed')){_0x47e7ed['closedAt']=moment()[_0x804f('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x52cbae(null,_0x47e7ed);}}});}; \ No newline at end of file diff --git a/server/api/whatsappInteraction/whatsappInteraction.rpc.js b/server/api/whatsappInteraction/whatsappInteraction.rpc.js new file mode 100644 index 0000000..ca59503 --- /dev/null +++ b/server/api/whatsappInteraction/whatsappInteraction.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb6d6=['limit','UpdateWhatsappInteraction','catch','AddTagsToWhatsappInteraction','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','WhatsappInteraction','update','body','options','where','attributes'];(function(_0x5cef66,_0x3f9f4a){var _0x2850cb=function(_0x2a0b97){while(--_0x2a0b97){_0x5cef66['push'](_0x5cef66['shift']());}};_0x2850cb(++_0x3f9f4a);}(_0xb6d6,0x1ad));var _0x6b6d=function(_0x337e43,_0xa39a12){_0x337e43=_0x337e43-0x0;var _0x474fe3=_0xb6d6[_0x337e43];return _0x474fe3;};'use strict';var _=require(_0x6b6d('0x0'));var util=require(_0x6b6d('0x1'));var moment=require('moment');var BPromise=require(_0x6b6d('0x2'));var rs=require(_0x6b6d('0x3'));var fs=require('fs');var Redis=require(_0x6b6d('0x4'));var db=require(_0x6b6d('0x5'))['db'];var utils=require(_0x6b6d('0x6'));var logger=require(_0x6b6d('0x7'))(_0x6b6d('0x8'));var config=require(_0x6b6d('0x9'));var jayson=require(_0x6b6d('0xa'));var client=jayson['client'][_0x6b6d('0xb')]({'port':0x232a});config[_0x6b6d('0xc')]=_['defaults'](config[_0x6b6d('0xc')],{'host':_0x6b6d('0xd'),'port':0x18eb});var socket=require(_0x6b6d('0xe'))(new Redis(config['redis']));require(_0x6b6d('0xf'))[_0x6b6d('0x10')](socket);function respondWithRpcPromise(_0x49878a,_0x484b7b,_0x243d5b){return new BPromise(function(_0x108659,_0x3099ef){return client[_0x6b6d('0x11')](_0x49878a,_0x243d5b)[_0x6b6d('0x12')](function(_0xa61113){logger[_0x6b6d('0x13')](_0x6b6d('0x14'),_0x484b7b,_0x6b6d('0x15'));logger[_0x6b6d('0x16')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x484b7b,_0x6b6d('0x15'),JSON[_0x6b6d('0x17')](_0xa61113));if(_0xa61113['error']){if(_0xa61113['error'][_0x6b6d('0x18')]===0x1f4){logger['error'](_0x6b6d('0x14'),_0x484b7b,_0xa61113[_0x6b6d('0x19')][_0x6b6d('0x1a')]);return _0x3099ef(_0xa61113[_0x6b6d('0x19')]['message']);}logger[_0x6b6d('0x19')](_0x6b6d('0x14'),_0x484b7b,_0xa61113[_0x6b6d('0x19')][_0x6b6d('0x1a')]);return _0x108659(_0xa61113['error'][_0x6b6d('0x1a')]);}else{logger[_0x6b6d('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x484b7b,'request\x20sent');_0x108659(_0xa61113['result'][_0x6b6d('0x1a')]);}})['catch'](function(_0x3d92c8){logger[_0x6b6d('0x19')]('WhatsappInteraction,\x20%s,\x20%s',_0x484b7b,_0x3d92c8);_0x3099ef(_0x3d92c8);});});}exports['UpdateWhatsappInteraction']=function(_0x378262){var _0x448625=this;return new Promise(function(_0x17b407,_0x5447d3){return db[_0x6b6d('0x1b')][_0x6b6d('0x1c')](_0x378262[_0x6b6d('0x1d')],{'raw':_0x378262[_0x6b6d('0x1e')]?_0x378262[_0x6b6d('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x378262['options']?_0x378262['options'][_0x6b6d('0x1f')]||null:null,'attributes':_0x378262[_0x6b6d('0x1e')]?_0x378262[_0x6b6d('0x1e')][_0x6b6d('0x20')]||null:null,'limit':_0x378262[_0x6b6d('0x1e')]?_0x378262[_0x6b6d('0x1e')][_0x6b6d('0x21')]||null:null})[_0x6b6d('0x12')](function(_0x136e19){logger[_0x6b6d('0x13')](_0x6b6d('0x22'),_0x378262);logger[_0x6b6d('0x16')](_0x6b6d('0x22'),_0x378262,JSON[_0x6b6d('0x17')](_0x136e19));_0x17b407(_0x136e19);})[_0x6b6d('0x23')](function(_0x49546e){logger['error'](_0x6b6d('0x22'),_0x49546e['message'],_0x378262);_0x5447d3(_0x448625[_0x6b6d('0x19')](0x1f4,_0x49546e[_0x6b6d('0x1a')]));});});};exports[_0x6b6d('0x24')]=function(_0x532f6d){return new Promise(function(_0x90c3f,_0x19da0d){return db[_0x6b6d('0x1b')]['find']({'where':_0x532f6d['options']?_0x532f6d[_0x6b6d('0x1e')][_0x6b6d('0x1f')]||null:null})[_0x6b6d('0x12')](function(_0x45ae27){if(_0x45ae27){return _0x45ae27[_0x6b6d('0x25')](_0x532f6d[_0x6b6d('0x1d')][_0x6b6d('0x26')],_[_0x6b6d('0x27')](_0x532f6d[_0x6b6d('0x1d')],[_0x6b6d('0x26'),'id'])||{});}})[_0x6b6d('0x28')](function(_0x5900d6){logger['info']('AddTags',_0x532f6d);logger['debug'](_0x6b6d('0x29'),_0x532f6d,JSON['stringify'](_0x5900d6));_0x90c3f(_0x5900d6);})[_0x6b6d('0x23')](function(_0x1a3ac4){logger[_0x6b6d('0x19')]('AddTags',_0x1a3ac4[_0x6b6d('0x1a')],_0x532f6d);_0x19da0d(_this[_0x6b6d('0x19')](0x1f4,_0x1a3ac4[_0x6b6d('0x1a')]));});});}; \ No newline at end of file diff --git a/server/api/whatsappInteraction/whatsappInteraction.socket.js b/server/api/whatsappInteraction/whatsappInteraction.socket.js new file mode 100644 index 0000000..3b838e0 --- /dev/null +++ b/server/api/whatsappInteraction/whatsappInteraction.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4ae2=['save','emit','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x1dac68,_0x2fc251){var _0x22c215=function(_0x12d572){while(--_0x12d572){_0x1dac68['push'](_0x1dac68['shift']());}};_0x22c215(++_0x2fc251);}(_0x4ae2,0x193));var _0x24ae=function(_0x1fd9e7,_0x24cdbe){_0x1fd9e7=_0x1fd9e7-0x0;var _0x1781f2=_0x4ae2[_0x1fd9e7];return _0x1781f2;};'use strict';var WhatsappInteractionEvents=require(_0x24ae('0x0'));var events=[_0x24ae('0x1'),'remove','update'];function createListener(_0x1cdb6c,_0x2534a2){return function(_0x49762e){_0x2534a2[_0x24ae('0x2')](_0x1cdb6c,_0x49762e);};}function removeListener(_0x4e80e6,_0x1a96e3){return function(){WhatsappInteractionEvents['removeListener'](_0x4e80e6,_0x1a96e3);};}exports['register']=function(_0x5c812a){for(var _0x446033=0x0,_0x3feaf2=events['length'];_0x446033<_0x3feaf2;_0x446033++){var _0x21f0a6=events[_0x446033];var _0x44b1fd=createListener(_0x24ae('0x3')+_0x21f0a6,_0x5c812a);WhatsappInteractionEvents['on'](_0x21f0a6,_0x44b1fd);}}; \ No newline at end of file diff --git a/server/api/whatsappMessage/index.js b/server/api/whatsappMessage/index.js new file mode 100644 index 0000000..d14730c --- /dev/null +++ b/server/api/whatsappMessage/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x3985=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','post','whatsappmessage:create','create','status','put','/:id/accept','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x223461,_0x2bca70){var _0x4dbe0a=function(_0x3c3cb6){while(--_0x3c3cb6){_0x223461['push'](_0x223461['shift']());}};_0x4dbe0a(++_0x2bca70);}(_0x3985,0xab));var _0x5398=function(_0x80b21b,_0x1ca9b6){_0x80b21b=_0x80b21b-0x0;var _0x4e4392=_0x3985[_0x80b21b];return _0x4e4392;};'use strict';var multer=require(_0x5398('0x0'));var util=require(_0x5398('0x1'));var path=require(_0x5398('0x2'));var timeout=require(_0x5398('0x3'));var express=require(_0x5398('0x4'));var router=express['Router']();var fs_extra=require(_0x5398('0x5'));var auth=require(_0x5398('0x6'));var interaction=require(_0x5398('0x7'));var config=require(_0x5398('0x8'));var controller=require('./whatsappMessage.controller');router[_0x5398('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5398('0x9')]('/describe',auth[_0x5398('0xa')](),controller[_0x5398('0xb')]);router[_0x5398('0x9')](_0x5398('0xc'),auth['isAuthenticated'](),controller[_0x5398('0xd')]);router[_0x5398('0xe')]('/',auth[_0x5398('0xa')](),interaction['tracked']('whatsapp',_0x5398('0xf')),controller[_0x5398('0x10')]);router[_0x5398('0xe')]('/:id/status',controller[_0x5398('0x11')]);router[_0x5398('0x12')](_0x5398('0xc'),auth[_0x5398('0xa')](),controller['update']);router[_0x5398('0x12')](_0x5398('0x13'),auth[_0x5398('0xa')](),controller[_0x5398('0x14')]);router[_0x5398('0x12')]('/:id/reject',auth[_0x5398('0xa')](),controller[_0x5398('0x15')]);router[_0x5398('0x16')](_0x5398('0xc'),auth[_0x5398('0xa')](),controller[_0x5398('0x17')]);module[_0x5398('0x18')]=router; \ No newline at end of file diff --git a/server/api/whatsappMessage/whatsappMessage.attributes.js b/server/api/whatsappMessage/whatsappMessage.attributes.js new file mode 100644 index 0000000..e1c5ecb --- /dev/null +++ b/server/api/whatsappMessage/whatsappMessage.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0460=['out','STRING','DATE','sequelize','exports','TEXT','BOOLEAN','ENUM'];(function(_0x390b40,_0x32a62e){var _0x11a416=function(_0x985f68){while(--_0x985f68){_0x390b40['push'](_0x390b40['shift']());}};_0x11a416(++_0x32a62e);}(_0x0460,0xab));var _0x0046=function(_0x1c89e1,_0x4e4f6e){_0x1c89e1=_0x1c89e1-0x0;var _0x4df70d=_0x0460[_0x1c89e1];return _0x4df70d;};'use strict';var Sequelize=require(_0x0046('0x0'));module[_0x0046('0x1')]={'body':{'type':Sequelize[_0x0046('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x0046('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0046('0x4')]('in',_0x0046('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x0046('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x0046('0x7')]},'secret':{'type':Sequelize[_0x0046('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0046('0x6')]},'providerResponse':{'type':Sequelize[_0x0046('0x2')]}}; \ No newline at end of file diff --git a/server/api/whatsappMessage/whatsappMessage.controller.js b/server/api/whatsappMessage/whatsappMessage.controller.js new file mode 100644 index 0000000..9e7733d --- /dev/null +++ b/server/api/whatsappMessage/whatsappMessage.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc762=['ContactId','sequelize','QueryTypes','SELECT','contact','User','internal','agent','interface','channel','event','EventManager','../../config/logger','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','fullname','email','SIP/%s','motionChannel','rejectmessage','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','http','client','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','options','WhatsappMessage','includeAll','rows','intersection','find','catch','create','body','params','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','get','WhatsappInteraction','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','info','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'];(function(_0x9fd887,_0x47f76c){var _0x1a54ab=function(_0xb65c08){while(--_0xb65c08){_0x9fd887['push'](_0x9fd887['shift']());}};_0x1a54ab(++_0x47f76c);}(_0xc762,0x1a6));var _0x2c76=function(_0x3e99cb,_0x1d2fe0){_0x3e99cb=_0x3e99cb-0x0;var _0x1bc729=_0xc762[_0x3e99cb];return _0x1bc729;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2c76('0x0'));var jsonpatch=require(_0x2c76('0x1'));var rp=require(_0x2c76('0x2'));var moment=require(_0x2c76('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2c76('0x4'));var util=require(_0x2c76('0x5'));var path=require(_0x2c76('0x6'));var sox=require(_0x2c76('0x7'));var csv=require(_0x2c76('0x8'));var ejs=require(_0x2c76('0x9'));var fs=require('fs');var fs_extra=require(_0x2c76('0xa'));var _=require('lodash');var squel=require(_0x2c76('0xb'));var crypto=require(_0x2c76('0xc'));var jsforce=require(_0x2c76('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2c76('0x8'));var querystring=require(_0x2c76('0xe'));var Papa=require(_0x2c76('0xf'));var Redis=require(_0x2c76('0x10'));var authService=require(_0x2c76('0x11'));var qs=require(_0x2c76('0x12'));var as=require(_0x2c76('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2c76('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2c76('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2c76('0x16')](config[_0x2c76('0x17')],{'host':_0x2c76('0x18'),'port':0x18eb});var socket=require(_0x2c76('0x19'))(new Redis(config[_0x2c76('0x17')]));require('./whatsappMessage.socket')[_0x2c76('0x1a')](socket);var jayson=require(_0x2c76('0x1b'));var client=jayson['client'][_0x2c76('0x1c')]({'port':0x232c});var client9002=jayson[_0x2c76('0x1d')][_0x2c76('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1ff0c6,_0x2b4868,_0x58735e,_0x173343){return new BPromise(function(_0x374044,_0x36952f){var _0x28d47e=_0x173343||client;return _0x28d47e['request'](_0x1ff0c6,_0x58735e)[_0x2c76('0x1e')](function(_0x2b53c5){logger['info'](_0x2c76('0x1f'),_0x2b4868,_0x2c76('0x20'));logger[_0x2c76('0x21')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2b4868,_0x2c76('0x20'),JSON[_0x2c76('0x22')](_0x2b53c5));if(_0x2b53c5[_0x2c76('0x23')]){if(_0x2b53c5[_0x2c76('0x23')][_0x2c76('0x24')]===0x1f4){logger[_0x2c76('0x23')](_0x2c76('0x1f'),_0x2b4868,_0x2b53c5[_0x2c76('0x23')][_0x2c76('0x25')]);return _0x36952f(_0x2b53c5[_0x2c76('0x23')]['message']);}logger[_0x2c76('0x23')](_0x2c76('0x1f'),_0x2b4868,_0x2b53c5[_0x2c76('0x23')][_0x2c76('0x25')]);return _0x374044(_0x2b53c5[_0x2c76('0x23')][_0x2c76('0x25')]);}else{logger['info'](_0x2c76('0x1f'),_0x2b4868,'request\x20sent');_0x374044(_0x2b53c5[_0x2c76('0x26')][_0x2c76('0x25')]);}})['catch'](function(_0x8f2c32){logger['error'](_0x2c76('0x1f'),_0x2b4868,_0x8f2c32);_0x36952f(_0x8f2c32);});});}function respondWithStatusCode(_0x16bdf6,_0x5bfb50){_0x5bfb50=_0x5bfb50||0xcc;return function(_0x3bd14f){if(_0x3bd14f){return _0x16bdf6['sendStatus'](_0x5bfb50);}return _0x16bdf6[_0x2c76('0x27')](_0x5bfb50)[_0x2c76('0x28')]();};}function respondWithResult(_0x459a27,_0x284a82){_0x284a82=_0x284a82||0xc8;return function(_0x5f0e0d){if(_0x5f0e0d){return _0x459a27[_0x2c76('0x27')](_0x284a82)[_0x2c76('0x29')](_0x5f0e0d);}};}function respondWithFilteredResult(_0x2133be,_0x27ba0a){return function(_0x17e92b){if(_0x17e92b){var _0x49828a=typeof _0x27ba0a[_0x2c76('0x2a')]===_0x2c76('0x2b')&&typeof _0x27ba0a[_0x2c76('0x2c')]==='undefined';var _0x152c82=_0x17e92b[_0x2c76('0x2d')];var _0xe303a8=_0x49828a?0x0:_0x27ba0a[_0x2c76('0x2a')];var _0x14dd99=_0x49828a?_0x17e92b[_0x2c76('0x2d')]:_0x27ba0a[_0x2c76('0x2a')]+_0x27ba0a['limit'];var _0x3e0229;if(_0x14dd99>=_0x152c82){_0x14dd99=_0x152c82;_0x3e0229=0xc8;}else{_0x3e0229=0xce;}_0x2133be[_0x2c76('0x27')](_0x3e0229);return _0x2133be[_0x2c76('0x2e')](_0x2c76('0x2f'),_0xe303a8+'-'+_0x14dd99+'/'+_0x152c82)[_0x2c76('0x29')](_0x17e92b);}return null;};}function patchUpdates(_0x3f9acf){return function(_0x82510a){try{jsonpatch['apply'](_0x82510a,_0x3f9acf,!![]);}catch(_0x519844){return BPromise[_0x2c76('0x30')](_0x519844);}return _0x82510a[_0x2c76('0x31')]();};}function saveUpdates(_0x360207,_0x55d75e){return function(_0x2a17ae){if(_0x2a17ae){return _0x2a17ae[_0x2c76('0x32')](_0x360207)[_0x2c76('0x1e')](function(_0x8eac79){return _0x8eac79;});}return null;};}function removeEntity(_0x4205f4,_0x2df62b){return function(_0x23f4ce){if(_0x23f4ce){return _0x23f4ce[_0x2c76('0x33')]()[_0x2c76('0x1e')](function(){_0x4205f4[_0x2c76('0x27')](0xcc)[_0x2c76('0x28')]();});}};}function handleEntityNotFound(_0x9eae29,_0x1dc8c3){return function(_0x5016e1){if(!_0x5016e1){_0x9eae29['sendStatus'](0x194);}return _0x5016e1;};}function handleError(_0x32a884,_0x11ac03){_0x11ac03=_0x11ac03||0x1f4;return function(_0x30d9e1){logger[_0x2c76('0x23')](_0x30d9e1['stack']);if(_0x30d9e1[_0x2c76('0x34')]){delete _0x30d9e1[_0x2c76('0x34')];}_0x32a884['status'](_0x11ac03)['send'](_0x30d9e1);};}exports['index']=function(_0x696bff,_0x2968d8){var _0x9ed96e={},_0x84ef3a={},_0x4e1a5d={'count':0x0,'rows':[]};var _0x21be44=_[_0x2c76('0x35')](db['WhatsappMessage'][_0x2c76('0x36')],function(_0x4f061f){return{'name':_0x4f061f[_0x2c76('0x37')],'type':_0x4f061f[_0x2c76('0x38')][_0x2c76('0x39')]};});_0x84ef3a[_0x2c76('0x3a')]=_[_0x2c76('0x35')](_0x21be44,_0x2c76('0x34'));_0x84ef3a[_0x2c76('0x3b')]=_[_0x2c76('0x3c')](_0x696bff[_0x2c76('0x3b')]);_0x84ef3a[_0x2c76('0x3d')]=_['intersection'](_0x84ef3a[_0x2c76('0x3a')],_0x84ef3a['query']);_0x9ed96e[_0x2c76('0x3e')]=_['intersection'](_0x84ef3a[_0x2c76('0x3a')],qs[_0x2c76('0x3f')](_0x696bff['query']['fields']));_0x9ed96e['attributes']=_0x9ed96e[_0x2c76('0x3e')][_0x2c76('0x40')]?_0x9ed96e[_0x2c76('0x3e')]:_0x84ef3a[_0x2c76('0x3a')];if(!_0x696bff[_0x2c76('0x3b')]['hasOwnProperty']('nolimit')){_0x9ed96e[_0x2c76('0x2c')]=qs['limit'](_0x696bff['query'][_0x2c76('0x2c')]);_0x9ed96e[_0x2c76('0x2a')]=qs[_0x2c76('0x2a')](_0x696bff[_0x2c76('0x3b')][_0x2c76('0x2a')]);}_0x9ed96e[_0x2c76('0x41')]=qs[_0x2c76('0x42')](_0x696bff[_0x2c76('0x3b')][_0x2c76('0x42')]);_0x9ed96e[_0x2c76('0x43')]=qs[_0x2c76('0x3d')](_['pick'](_0x696bff[_0x2c76('0x3b')],_0x84ef3a[_0x2c76('0x3d')]),_0x21be44);if(_0x696bff['query'][_0x2c76('0x44')]){_0x9ed96e['where']=_[_0x2c76('0x45')](_0x9ed96e['where'],{'$or':_['map'](_0x21be44,function(_0x40d0f8){if(_0x40d0f8[_0x2c76('0x38')]!==_0x2c76('0x46')){var _0x4d7ee6={};_0x4d7ee6[_0x40d0f8[_0x2c76('0x34')]]={'$like':'%'+_0x696bff[_0x2c76('0x3b')]['filter']+'%'};return _0x4d7ee6;}})});}_0x9ed96e=_['merge']({},_0x9ed96e,_0x696bff[_0x2c76('0x47')]);var _0x5b3103={'where':_0x9ed96e[_0x2c76('0x43')]};return db[_0x2c76('0x48')][_0x2c76('0x2d')](_0x5b3103)['then'](function(_0x13497c){_0x4e1a5d['count']=_0x13497c;if(_0x696bff[_0x2c76('0x3b')][_0x2c76('0x49')]){_0x9ed96e['include']=[{'all':!![]}];}return db[_0x2c76('0x48')]['findAll'](_0x9ed96e);})[_0x2c76('0x1e')](function(_0x4cb2df){_0x4e1a5d[_0x2c76('0x4a')]=_0x4cb2df;return _0x4e1a5d;})['then'](respondWithFilteredResult(_0x2968d8,_0x9ed96e))['catch'](handleError(_0x2968d8,null));};exports['show']=function(_0x4062c2,_0x334c8f){var _0x48a6df={'raw':!![],'where':{'id':_0x4062c2['params']['id']}},_0x466726={};_0x466726[_0x2c76('0x3a')]=_[_0x2c76('0x3c')](db[_0x2c76('0x48')][_0x2c76('0x36')]);_0x466726[_0x2c76('0x3b')]=_['keys'](_0x4062c2['query']);_0x466726[_0x2c76('0x3d')]=_[_0x2c76('0x4b')](_0x466726[_0x2c76('0x3a')],_0x466726[_0x2c76('0x3b')]);_0x48a6df[_0x2c76('0x3e')]=_[_0x2c76('0x4b')](_0x466726['model'],qs[_0x2c76('0x3f')](_0x4062c2[_0x2c76('0x3b')][_0x2c76('0x3f')]));_0x48a6df[_0x2c76('0x3e')]=_0x48a6df['attributes'][_0x2c76('0x40')]?_0x48a6df[_0x2c76('0x3e')]:_0x466726[_0x2c76('0x3a')];if(_0x4062c2[_0x2c76('0x3b')][_0x2c76('0x49')]){_0x48a6df['include']=[{'all':!![]}];}_0x48a6df=_['merge']({},_0x48a6df,_0x4062c2[_0x2c76('0x47')]);return db['WhatsappMessage'][_0x2c76('0x4c')](_0x48a6df)[_0x2c76('0x1e')](handleEntityNotFound(_0x334c8f,null))['then'](respondWithResult(_0x334c8f,null))[_0x2c76('0x4d')](handleError(_0x334c8f,null));};exports['create']=function(_0x21f7e8,_0x3e89ac){return db['WhatsappMessage'][_0x2c76('0x4e')](_0x21f7e8[_0x2c76('0x4f')],{})[_0x2c76('0x1e')](respondWithResult(_0x3e89ac,0xc9))[_0x2c76('0x4d')](handleError(_0x3e89ac,null));};exports['update']=function(_0x569068,_0x336ba6){if(_0x569068[_0x2c76('0x4f')]['id']){delete _0x569068[_0x2c76('0x4f')]['id'];}return db[_0x2c76('0x48')][_0x2c76('0x4c')]({'where':{'id':_0x569068[_0x2c76('0x50')]['id']}})[_0x2c76('0x1e')](handleEntityNotFound(_0x336ba6,null))['then'](saveUpdates(_0x569068[_0x2c76('0x4f')],null))['then'](respondWithResult(_0x336ba6,null))[_0x2c76('0x4d')](handleError(_0x336ba6,null));};exports[_0x2c76('0x33')]=function(_0x2758e5,_0x8220dc){return db[_0x2c76('0x48')][_0x2c76('0x4c')]({'where':{'id':_0x2758e5[_0x2c76('0x50')]['id']}})[_0x2c76('0x1e')](handleEntityNotFound(_0x8220dc,null))[_0x2c76('0x1e')](removeEntity(_0x8220dc,null))[_0x2c76('0x4d')](handleError(_0x8220dc,null));};exports[_0x2c76('0x51')]=function(_0x162e59,_0x1e1ec0){return db['WhatsappMessage'][_0x2c76('0x51')]()['then'](respondWithResult(_0x1e1ec0,null))[_0x2c76('0x4d')](handleError(_0x1e1ec0,null));};var interaction_log=require('../../config/logger')(_0x2c76('0x52'));exports[_0x2c76('0x53')]=function(_0x3176a2,_0xfdd072,_0x1881d6){var _0x343b6b={'agent':{},'channel':_0x2c76('0x54')};if(_0x3176a2[_0x2c76('0x4f')]['id']){delete _0x3176a2['body']['id'];}_0x3176a2[_0x2c76('0x4f')][_0x2c76('0x55')]=!![];_0x3176a2['body'][_0x2c76('0x56')]=moment()[_0x2c76('0x57')]('YYYY-MM-DD\x20HH:mm:ss');_0x3176a2[_0x2c76('0x4f')][_0x2c76('0x58')]=_0x3176a2[_0x2c76('0x4f')][_0x2c76('0x58')]||_0x3176a2['user']['id'];_0x343b6b['agent']['id']=_0x3176a2[_0x2c76('0x4f')][_0x2c76('0x58')];return db[_0x2c76('0x48')][_0x2c76('0x4c')]({'where':{'id':_0x3176a2['params']['id'],'UserId':null}})[_0x2c76('0x1e')](handleEntityNotFound(_0xfdd072,null))[_0x2c76('0x1e')](saveUpdates(_0x3176a2[_0x2c76('0x4f')],null))[_0x2c76('0x1e')](function(_0x557bb5){if(_0x557bb5){_0x343b6b[_0x2c76('0x25')]=_0x557bb5[_0x2c76('0x59')]({'plain':!![]});return db[_0x2c76('0x5a')][_0x2c76('0x4c')]({'where':{'id':_0x557bb5['WhatsappInteractionId']}});}return null;})[_0x2c76('0x1e')](handleEntityNotFound(_0xfdd072,null))[_0x2c76('0x1e')](function(_0x4b6b08){if(_0x4b6b08){return _0x4b6b08[_0x2c76('0x32')]({'UserId':_0x3176a2[_0x2c76('0x4f')][_0x2c76('0x58')],'read1stAt':_['isNil'](_0x4b6b08[_0x2c76('0x5b')])?moment()[_0x2c76('0x57')](_0x2c76('0x5c')):undefined});}return null;})['then'](function(_0x197524){if(_0x197524){_0x343b6b[_0x2c76('0x5d')]=_0x197524[_0x2c76('0x59')]({'plain':!![]});interaction_log[_0x2c76('0x5e')](_0x2c76('0x5f'),_0x3176a2[_0x2c76('0x60')]['id'],_0x3176a2['user'][_0x2c76('0x34')],_0x3176a2['user'][_0x2c76('0x61')],_0x343b6b[_0x2c76('0x5d')]['id'],_0x3176a2[_0x2c76('0x4f')]?JSON[_0x2c76('0x22')](_0x3176a2[_0x2c76('0x4f')]):_0x2c76('0x62'));return respondWithRpcPromise(_0x2c76('0x63'),_0x2c76('0x64'),_0x343b6b);}return null;})[_0x2c76('0x1e')](function(_0x3e4ddf){var _0x2a3856=_0x2c76('0x65')+_0x3e4ddf[_0x2c76('0x25')][_0x2c76('0x66')];return db[_0x2c76('0x67')][_0x2c76('0x3b')](_0x2a3856,{'type':db['Sequelize'][_0x2c76('0x68')][_0x2c76('0x69')],'raw':!![]})[_0x2c76('0x1e')](function(_0x343437){return _0x343437;});})[_0x2c76('0x1e')](function(_0x9b041d){if(_0x9b041d){_0x343b6b[_0x2c76('0x25')][_0x2c76('0x6a')]=_0x9b041d[0x0];if(!_0x3176a2['body']['UserId'])return;return db[_0x2c76('0x6b')][_0x2c76('0x4c')]({'where':{'id':_0x3176a2['body']['UserId'],'role':'agent'},'attributes':['id',_0x2c76('0x34'),'fullname','email',_0x2c76('0x6c')],'raw':!![]});}return null;})[_0x2c76('0x1e')](function(_0x40603e){if(!_0x40603e)return null;_0x343b6b[_0x2c76('0x25')][_0x2c76('0x6d')]=_0x40603e;return _0x343b6b;})[_0x2c76('0x1e')](function(_0x257c33){if(_0x257c33){if(_0x3176a2[_0x2c76('0x4f')]['manual']){_0x343b6b[_0x2c76('0x25')][_0x2c76('0x6e')]=util[_0x2c76('0x57')]('SIP/%s',_0x3176a2['user']['name']);_0x343b6b[_0x2c76('0x25')]['channel']=_0x343b6b[_0x2c76('0x6f')];_0x343b6b[_0x2c76('0x25')]['motionChannel']=_0x343b6b[_0x2c76('0x6f')];_0x343b6b[_0x2c76('0x25')][_0x2c76('0x70')]=_0x2c76('0x53');return respondWithRpcPromise(_0x2c76('0x71'),'EventManager',{'event':'acceptmessage','message':_0x343b6b['message']},client9002)[_0x2c76('0x1e')](function(){return _0x343b6b;});}return _0x343b6b;}return null;})[_0x2c76('0x1e')](respondWithResult(_0xfdd072,null))[_0x2c76('0x4d')](handleError(_0xfdd072,null));};var interaction_log=require(_0x2c76('0x72'))('whatsapp-interactions');exports[_0x2c76('0x30')]=function(_0x2e94a7,_0x2818c8,_0x33ff0c){var _0x2827ab={'agent':{},'channel':'whatsapp'};if(_0x2e94a7[_0x2c76('0x4f')]['id']){delete _0x2e94a7[_0x2c76('0x4f')]['id'];}_0x2e94a7['body'][_0x2c76('0x58')]=_0x2e94a7['body']['UserId']||_0x2e94a7[_0x2c76('0x60')]['id'];_0x2827ab['agent']['id']=_0x2e94a7[_0x2c76('0x4f')][_0x2c76('0x58')];return db['WhatsappMessage'][_0x2c76('0x4c')]({'where':{'id':_0x2e94a7[_0x2c76('0x50')]['id'],'UserId':null}})[_0x2c76('0x1e')](handleEntityNotFound(_0x2818c8,null))[_0x2c76('0x1e')](function(_0x435b18){if(_0x435b18){_0x2827ab[_0x2c76('0x25')]=_0x435b18[_0x2c76('0x59')]({'plain':!![]});return db[_0x2c76('0x5a')][_0x2c76('0x4c')]({'where':{'id':_0x435b18[_0x2c76('0x73')]}});}return null;})['then'](handleEntityNotFound(_0x2818c8,null))['then'](function(_0x563fb7){if(_0x563fb7){_0x2827ab[_0x2c76('0x5d')]=_0x563fb7[_0x2c76('0x59')]({'plain':!![]});interaction_log[_0x2c76('0x5e')](_0x2c76('0x74'),_0x2e94a7[_0x2c76('0x60')]['id'],_0x2e94a7[_0x2c76('0x60')][_0x2c76('0x34')],_0x2e94a7['user'][_0x2c76('0x61')],_0x2827ab['interaction']['id'],_0x2e94a7['body']?JSON[_0x2c76('0x22')](_0x2e94a7['body']):_0x2c76('0x62'));return respondWithRpcPromise(_0x2c76('0x75'),'rejectMessage',_0x2827ab);}return null;})['then'](function(_0x29aaf3){var _0x3e1a5e=_0x2c76('0x65')+_0x29aaf3[_0x2c76('0x25')][_0x2c76('0x66')];return db[_0x2c76('0x67')][_0x2c76('0x3b')](_0x3e1a5e,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x2c76('0x1e')](function(_0x28254e){return _0x28254e;});})['then'](function(_0x3ff255){if(_0x3ff255){_0x2827ab['message'][_0x2c76('0x6a')]=_0x3ff255[0x0];if(!_0x2e94a7[_0x2c76('0x4f')][_0x2c76('0x58')])return;return db[_0x2c76('0x6b')][_0x2c76('0x4c')]({'where':{'id':_0x2e94a7[_0x2c76('0x4f')][_0x2c76('0x58')],'role':'agent'},'attributes':['id',_0x2c76('0x34'),_0x2c76('0x76'),_0x2c76('0x77'),'internal'],'raw':!![]});}return null;})['then'](function(_0x26f146){if(!_0x26f146)return null;_0x2827ab['message'][_0x2c76('0x6d')]=_0x26f146;return _0x2827ab;})['then'](function(_0x2b774c){if(_0x2b774c){_0x2b774c['message'][_0x2c76('0x6e')]=util[_0x2c76('0x57')](_0x2c76('0x78'),_0x2e94a7['user'][_0x2c76('0x34')]);_0x2b774c[_0x2c76('0x25')][_0x2c76('0x6f')]=_0x2827ab['channel'];_0x2b774c[_0x2c76('0x25')][_0x2c76('0x79')]=_0x2827ab['channel'];_0x2b774c[_0x2c76('0x25')][_0x2c76('0x70')]=_0x2c76('0x30');respondWithRpcPromise(_0x2c76('0x71'),_0x2c76('0x71'),{'event':_0x2c76('0x7a'),'message':_0x2b774c[_0x2c76('0x25')]},client9002);return _0x2827ab;}return null;})[_0x2c76('0x1e')](respondWithResult(_0x2818c8,null))[_0x2c76('0x4d')](handleError(_0x2818c8,null));};exports[_0x2c76('0x27')]=function(_0x473418,_0x235a8d,_0x2cbe3e){if(_0x473418[_0x2c76('0x4f')]['id']){delete _0x473418[_0x2c76('0x4f')]['id'];}var _0x5ae0ab;return db[_0x2c76('0x48')]['find']({'where':{'id':_0x473418[_0x2c76('0x50')]['id']}})[_0x2c76('0x1e')](handleEntityNotFound(_0x235a8d,null))[_0x2c76('0x1e')](function(_0x4cbd9f){if(_0x4cbd9f){_0x5ae0ab=_0x4cbd9f;return db[_0x2c76('0x7b')][_0x2c76('0x4c')]({'where':{'id':_0x4cbd9f['WhatsappAccountId']}});}})['then'](handleEntityNotFound(_0x235a8d,null))[_0x2c76('0x1e')](function(_0x37b41a){if(_0x37b41a){logger[_0x2c76('0x21')](_0x2c76('0x7c'),_0x2c76('0x27'),_0x2c76('0x7d'),_0x37b41a[_0x2c76('0x38')],util[_0x2c76('0x7e')](_0x473418[_0x2c76('0x4f')],{'showHidden':![],'depth':null}));switch(_0x37b41a[_0x2c76('0x38')]){case'twilio':if(_0x473418[_0x2c76('0x4f')][_0x2c76('0x7f')]&&_0x473418[_0x2c76('0x4f')][_0x2c76('0x7f')]===_0x5ae0ab[_0x2c76('0x80')]&&_0x473418[_0x2c76('0x4f')][_0x2c76('0x81')]&&_0x473418['body'][_0x2c76('0x81')]===_0x2c76('0x55')){return _0x5ae0ab[_0x2c76('0x32')]({'read':!![]});}else{logger['error'](_0x2c76('0x82'),_0x2c76('0x27'),'twilio',util[_0x2c76('0x7e')](_0x473418[_0x2c76('0x4f')],{'showHidden':![],'depth':null}));}break;}return _0x5ae0ab;}})[_0x2c76('0x1e')](respondWithResult(_0x235a8d,null))[_0x2c76('0x4d')](handleError(_0x235a8d,null));}; \ No newline at end of file diff --git a/server/api/whatsappMessage/whatsappMessage.events.js b/server/api/whatsappMessage/whatsappMessage.events.js new file mode 100644 index 0000000..044756d --- /dev/null +++ b/server/api/whatsappMessage/whatsappMessage.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7980=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','remove','emit','hook','exports'];(function(_0xb2f404,_0x406b79){var _0x3ca35f=function(_0x2de0da){while(--_0x2de0da){_0xb2f404['push'](_0xb2f404['shift']());}};_0x3ca35f(++_0x406b79);}(_0x7980,0xab));var _0x0798=function(_0x2d953a,_0x4d762c){_0x2d953a=_0x2d953a-0x0;var _0x8e49c5=_0x7980[_0x2d953a];return _0x8e49c5;};'use strict';var EventEmitter=require(_0x0798('0x0'));var WhatsappMessage=require(_0x0798('0x1'))['db'][_0x0798('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x0798('0x3')](0x0);var events={'afterCreate':_0x0798('0x4'),'afterUpdate':'update','afterDestroy':_0x0798('0x5')};function emitEvent(_0x31597d){return function(_0xecc24f,_0x1637db,_0x1a1fe7){WhatsappMessageEvents['emit'](_0x31597d+':'+_0xecc24f['id'],_0xecc24f);WhatsappMessageEvents[_0x0798('0x6')](_0x31597d,_0xecc24f);_0x1a1fe7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x0798('0x7')](e,emitEvent(event));}}module[_0x0798('0x8')]=WhatsappMessageEvents; \ No newline at end of file diff --git a/server/api/whatsappMessage/whatsappMessage.model.js b/server/api/whatsappMessage/whatsappMessage.model.js new file mode 100644 index 0000000..dad020e --- /dev/null +++ b/server/api/whatsappMessage/whatsappMessage.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc3b2=['models','get','direction','toLowerCase','out','UserId','WhatsappInteraction','WhatsappInteractionId','then','createdAt','catch','error','secret','WhatsappAccount','find','WhatsappAccountId','type','twilio','authToken','phone','accountSid','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','application/json','statuses','message_id','update','err','finally','utf8mb4_unicode_ci','lodash','../../config/logger','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','define','WhatsappMessage','whatsapp_messages','messageId','body','FULLTEXT'];(function(_0x431309,_0xa6a419){var _0x240caa=function(_0x6aab6f){while(--_0x6aab6f){_0x431309['push'](_0x431309['shift']());}};_0x240caa(++_0xa6a419);}(_0xc3b2,0x67));var _0x2c3b=function(_0x52e854,_0x4cef54){_0x52e854=_0x52e854-0x0;var _0x5a8410=_0xc3b2[_0x52e854];return _0x5a8410;};'use strict';var _=require(_0x2c3b('0x0'));var util=require('util');var logger=require(_0x2c3b('0x1'))('api');var moment=require('moment');var BPromise=require(_0x2c3b('0x2'));var rp=require(_0x2c3b('0x3'));var fetch=require(_0x2c3b('0x4'));var fs=require('fs');var path=require(_0x2c3b('0x5'));var rimraf=require(_0x2c3b('0x6'));var config=require(_0x2c3b('0x7'));var attributes=require(_0x2c3b('0x8'));module['exports']=function(_0xf71a8d,_0x3675e6){return _0xf71a8d[_0x2c3b('0x9')](_0x2c3b('0xa'),attributes,{'tableName':_0x2c3b('0xb'),'paranoid':![],'indexes':[{'name':_0x2c3b('0xc'),'fields':[_0x2c3b('0xc')]},{'name':'fti_whatsapp_messages','fields':[_0x2c3b('0xd')],'type':_0x2c3b('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xbf8480,_0x1ebb78,_0x5f41bb){var _0x1bf997=_0xf71a8d[_0x2c3b('0xf')];var _0x444b59=_0xbf8480[_0x2c3b('0x10')]({'plain':!![]});if(_0x444b59[_0x2c3b('0x11')]['toLowerCase']()==='in'||_0x444b59[_0x2c3b('0x11')][_0x2c3b('0x12')]()===_0x2c3b('0x13')&&!_0x444b59['secret']&&!_['isNil'](_0x444b59[_0x2c3b('0x14')])){_0x1bf997[_0x2c3b('0x15')]['findOne']({'where':{'id':_0x444b59[_0x2c3b('0x16')]}})[_0x2c3b('0x17')](function(_0x3bae14){if(_0x3bae14){_0x3bae14['update']({'lastMsgAt':_0x444b59[_0x2c3b('0x18')],'lastMsgDirection':_0x444b59[_0x2c3b('0x11')][_0x2c3b('0x12')]()});}})[_0x2c3b('0x19')](function(_0x40ffcf){console[_0x2c3b('0x1a')](_0x40ffcf);});}if(_0x444b59[_0x2c3b('0x11')]===_0x2c3b('0x13')&&!_0x444b59[_0x2c3b('0x1b')]){var _0x205e62;_0x1bf997[_0x2c3b('0x1c')][_0x2c3b('0x1d')]({'where':{'id':_0x444b59[_0x2c3b('0x1e')]},'raw':!![]})['then'](function(_0x2d96d3){_0x205e62=_0x2d96d3;if(_0x205e62&&_0x205e62[_0x2c3b('0x1f')]){switch(_0x205e62[_0x2c3b('0x1f')]){case _0x2c3b('0x20'):var _0x482d4c=require(_0x2c3b('0x20'));if(_0x205e62['accountSid']&&_0x205e62[_0x2c3b('0x21')]&&_0x205e62[_0x2c3b('0x22')]){var _0x126193=new _0x482d4c(_0x205e62[_0x2c3b('0x23')],_0x205e62[_0x2c3b('0x21')]);_0x126193['messages'][_0x2c3b('0x24')]({'body':_0x444b59[_0x2c3b('0xd')],'to':'whatsapp:'+_0x444b59[_0x2c3b('0x22')],'from':_0x2c3b('0x25')+_0x205e62[_0x2c3b('0x22')],'statusCallback':_0x205e62[_0x2c3b('0x26')]+_0x2c3b('0x27')+_0x444b59['id']+_0x2c3b('0x28')+_0x205e62[_0x2c3b('0x29')]})['then'](function(_0x577fca){if(_0x577fca[_0x2c3b('0x2a')]){return _0xbf8480['update']({'messageId':_0x577fca[_0x2c3b('0x2a')]});}})[_0x2c3b('0x19')](function(_0x2f1567){logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2c3b('0x2b'),_0x2c3b('0x20'),util[_0x2c3b('0x2c')](_0x2f1567,{'showHidden':![],'depth':null}));});}else{logger[_0x2c3b('0x1a')](_0x2c3b('0x2d'),_0x2c3b('0x2b'),_0x2c3b('0x20'),_0x2c3b('0x2e'));}break;case _0x2c3b('0x2f'):var _0x586da4=_0x205e62[_0x2c3b('0x23')];var _0x184256=_0x205e62[_0x2c3b('0x21')];var _0x403a50=_0x205e62[_0x2c3b('0x30')]+_0x2c3b('0x31')+_0x586da4+_0x2c3b('0x32');var _0x2e19c8={'to':[_0x444b59[_0x2c3b('0x22')]],'message':{'type':'text','text':_0x444b59['body']}};var _0xb3ee69={'method':_0x2c3b('0x33'),'uri':_0x403a50,'headers':{'Authorization':'Bearer\x20'+_0x184256,'Content-Type':_0x2c3b('0x34')},'body':_0x2e19c8,'json':!![]};rp(_0xb3ee69)[_0x2c3b('0x17')](function(_0xe8819){if(_0xe8819[_0x2c3b('0x35')][0x0][_0x2c3b('0x36')]){return _0xbf8480[_0x2c3b('0x37')]({'messageId':_0xe8819[_0x2c3b('0x35')][0x0]['message_id']});}})[_0x2c3b('0x19')](function(_0x2c2604){logger[_0x2c3b('0x38')]('WhatsappMessage,\x20%s',_0x2c2604);});break;}}})[_0x2c3b('0x39')](function(){_0x5f41bb();});}else{_0x5f41bb();}}},'charset':'utf8mb4','collate':_0x2c3b('0x3a')});}; \ No newline at end of file diff --git a/server/api/whatsappMessage/whatsappMessage.rpc.js b/server/api/whatsappMessage/whatsappMessage.rpc.js new file mode 100644 index 0000000..dc6655a --- /dev/null +++ b/server/api/whatsappMessage/whatsappMessage.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xec0c=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappMessage.socket','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','debug','stringify','catch'];(function(_0xcc6a3f,_0xe32370){var _0x45990f=function(_0x9b56c9){while(--_0x9b56c9){_0xcc6a3f['push'](_0xcc6a3f['shift']());}};_0x45990f(++_0xe32370);}(_0xec0c,0x118));var _0xcec0=function(_0x39a92a,_0x4bf484){_0x39a92a=_0x39a92a-0x0;var _0x3a700a=_0xec0c[_0x39a92a];return _0x3a700a;};'use strict';var _=require(_0xcec0('0x0'));var util=require(_0xcec0('0x1'));var moment=require(_0xcec0('0x2'));var BPromise=require('bluebird');var rs=require(_0xcec0('0x3'));var fs=require('fs');var Redis=require(_0xcec0('0x4'));var db=require(_0xcec0('0x5'))['db'];var utils=require(_0xcec0('0x6'));var logger=require(_0xcec0('0x7'))(_0xcec0('0x8'));var config=require(_0xcec0('0x9'));var jayson=require(_0xcec0('0xa'));var client=jayson[_0xcec0('0xb')][_0xcec0('0xc')]({'port':0x232a});config[_0xcec0('0xd')]=_[_0xcec0('0xe')](config[_0xcec0('0xd')],{'host':_0xcec0('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcec0('0xd')]));require(_0xcec0('0x10'))['register'](socket);function respondWithRpcPromise(_0x56f002,_0x2fc003,_0x3aba17){return new BPromise(function(_0x54cca2,_0xb9f4b9){return client[_0xcec0('0x11')](_0x56f002,_0x3aba17)['then'](function(_0x27419f){logger[_0xcec0('0x12')](_0xcec0('0x13'),_0x2fc003,_0xcec0('0x14'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2fc003,_0xcec0('0x14'),JSON['stringify'](_0x27419f));if(_0x27419f[_0xcec0('0x15')]){if(_0x27419f[_0xcec0('0x15')][_0xcec0('0x16')]===0x1f4){logger[_0xcec0('0x15')](_0xcec0('0x13'),_0x2fc003,_0x27419f[_0xcec0('0x15')][_0xcec0('0x17')]);return _0xb9f4b9(_0x27419f['error'][_0xcec0('0x17')]);}logger[_0xcec0('0x15')](_0xcec0('0x13'),_0x2fc003,_0x27419f[_0xcec0('0x15')][_0xcec0('0x17')]);return _0x54cca2(_0x27419f[_0xcec0('0x15')]['message']);}else{logger[_0xcec0('0x12')](_0xcec0('0x13'),_0x2fc003,_0xcec0('0x14'));_0x54cca2(_0x27419f[_0xcec0('0x18')][_0xcec0('0x17')]);}})['catch'](function(_0x3f340d){logger[_0xcec0('0x15')](_0xcec0('0x13'),_0x2fc003,_0x3f340d);_0xb9f4b9(_0x3f340d);});});}exports[_0xcec0('0x19')]=function(_0x19a170){var _0x572745=this;return new Promise(function(_0x20aa87,_0x9d3504){return db[_0xcec0('0x1a')][_0xcec0('0x1b')](_0x19a170[_0xcec0('0x1c')],{'raw':_0x19a170[_0xcec0('0x1d')]?_0x19a170['options'][_0xcec0('0x1e')]===undefined?!![]:![]:!![]})[_0xcec0('0x1f')](function(_0x805aa2){logger[_0xcec0('0x12')]('CreateWhatsappMessage',_0x19a170);logger[_0xcec0('0x20')](_0xcec0('0x19'),_0x19a170,JSON[_0xcec0('0x21')](_0x805aa2));_0x20aa87(_0x805aa2);})[_0xcec0('0x22')](function(_0x3ecb2e){logger[_0xcec0('0x15')](_0xcec0('0x19'),_0x3ecb2e[_0xcec0('0x17')],_0x19a170);_0x9d3504(_0x572745['error'](0x1f4,_0x3ecb2e[_0xcec0('0x17')]));});});}; \ No newline at end of file diff --git a/server/api/whatsappMessage/whatsappMessage.socket.js b/server/api/whatsappMessage/whatsappMessage.socket.js new file mode 100644 index 0000000..2ab1326 --- /dev/null +++ b/server/api/whatsappMessage/whatsappMessage.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x415c=['update','removeListener','register','length','./whatsappMessage.events','save','remove'];(function(_0x4bf979,_0x13d7a7){var _0x5570f7=function(_0x30afe6){while(--_0x30afe6){_0x4bf979['push'](_0x4bf979['shift']());}};_0x5570f7(++_0x13d7a7);}(_0x415c,0x1af));var _0xc415=function(_0x2a8fae,_0x54fd0d){_0x2a8fae=_0x2a8fae-0x0;var _0x29a1fa=_0x415c[_0x2a8fae];return _0x29a1fa;};'use strict';var WhatsappMessageEvents=require(_0xc415('0x0'));var events=[_0xc415('0x1'),_0xc415('0x2'),_0xc415('0x3')];function createListener(_0x4d9fa4,_0x2ba8d3){return function(_0x3c4aa5){_0x2ba8d3['emit'](_0x4d9fa4,_0x3c4aa5);};}function removeListener(_0x4c59d6,_0x225cb2){return function(){WhatsappMessageEvents[_0xc415('0x4')](_0x4c59d6,_0x225cb2);};}exports[_0xc415('0x5')]=function(_0x5e3b99){for(var _0x540f93=0x0,_0x46b1fb=events[_0xc415('0x6')];_0x540f93<_0x46b1fb;_0x540f93++){var _0x10af2b=events[_0x540f93];var _0x508447=createListener('whatsappMessage:'+_0x10af2b,_0x5e3b99);WhatsappMessageEvents['on'](_0x10af2b,_0x508447);}}; \ No newline at end of file diff --git a/server/api/whatsappQueue/index.js b/server/api/whatsappQueue/index.js new file mode 100644 index 0000000..cc52e87 --- /dev/null +++ b/server/api/whatsappQueue/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xc833=['isAuthenticated','index','describe','get','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./whatsappQueue.controller'];(function(_0x513a0a,_0x6dfd40){var _0x22f507=function(_0x2efacb){while(--_0x2efacb){_0x513a0a['push'](_0x513a0a['shift']());}};_0x22f507(++_0x6dfd40);}(_0xc833,0xfd));var _0x3c83=function(_0x56823e,_0x460ae2){_0x56823e=_0x56823e-0x0;var _0x5524a8=_0xc833[_0x56823e];return _0x5524a8;};'use strict';var multer=require('multer');var util=require(_0x3c83('0x0'));var path=require(_0x3c83('0x1'));var timeout=require(_0x3c83('0x2'));var express=require(_0x3c83('0x3'));var router=express[_0x3c83('0x4')]();var fs_extra=require(_0x3c83('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3c83('0x6'));var config=require('../../config/environment');var controller=require(_0x3c83('0x7'));router['get']('/',auth[_0x3c83('0x8')](),controller[_0x3c83('0x9')]);router['get']('/describe',auth[_0x3c83('0x8')](),controller[_0x3c83('0xa')]);router[_0x3c83('0xb')](_0x3c83('0xc'),auth[_0x3c83('0x8')](),controller[_0x3c83('0xd')]);router[_0x3c83('0xb')](_0x3c83('0xe'),auth[_0x3c83('0x8')](),controller[_0x3c83('0xf')]);router['get'](_0x3c83('0x10'),auth[_0x3c83('0x8')](),controller[_0x3c83('0x11')]);router[_0x3c83('0xb')](_0x3c83('0x12'),auth[_0x3c83('0x8')](),controller['getAgents']);router[_0x3c83('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3c83('0x13')](_0x3c83('0x10'),auth[_0x3c83('0x8')](),controller[_0x3c83('0x14')]);router[_0x3c83('0x13')](_0x3c83('0x12'),auth[_0x3c83('0x8')](),controller[_0x3c83('0x15')]);router[_0x3c83('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x3c83('0x17')]);router[_0x3c83('0x18')](_0x3c83('0xc'),auth[_0x3c83('0x8')](),controller[_0x3c83('0x19')]);router[_0x3c83('0x18')]('/:id/teams',auth['isAuthenticated'](),controller[_0x3c83('0x1a')]);router[_0x3c83('0x18')](_0x3c83('0x12'),auth[_0x3c83('0x8')](),controller[_0x3c83('0x1b')]);module[_0x3c83('0x1c')]=router; \ No newline at end of file diff --git a/server/api/whatsappQueue/whatsappQueue.attributes.js b/server/api/whatsappQueue/whatsappQueue.attributes.js new file mode 100644 index 0000000..145bfaa --- /dev/null +++ b/server/api/whatsappQueue/whatsappQueue.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xca2b=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xca2b,0x156));var _0xbca2=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xca2b[_0x2be8c2];return _0x97f531;};'use strict';var Sequelize=require(_0xbca2('0x0'));module[_0xbca2('0x1')]={'name':{'type':Sequelize[_0xbca2('0x2')],'unique':_0xbca2('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xbca2('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xbca2('0x5')](_0xbca2('0x6'),_0xbca2('0x7'),'roundrobin')},'description':{'type':Sequelize[_0xbca2('0x2')]}}; \ No newline at end of file diff --git a/server/api/whatsappQueue/whatsappQueue.controller.js b/server/api/whatsappQueue/whatsappQueue.controller.js new file mode 100644 index 0000000..ddee5d6 --- /dev/null +++ b/server/api/whatsappQueue/whatsappQueue.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x4baa=['findAll','rows','catch','show','params','intersection','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','describe','findOne','nolimit','WhatsappQueueId','UserWhatsappQueue','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','SIP','whatsappPause','Team','getTeams','addTeams','ids','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','userWhatsappQueue:save','removeTeams','select','field','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','toString','SELECT','every','TeamId','includes','all','union','compact','value','removeAgents','addAgents','omit','spread','emit','userWhatsappQueue:remove','getAgents','rimraf','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappQueue.socket','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','WhatsappQueues','UserProfileResource','end','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x2b36d9,_0x42faf0){var _0x7a8c90=function(_0x4dfba6){while(--_0x4dfba6){_0x2b36d9['push'](_0x2b36d9['shift']());}};_0x7a8c90(++_0x42faf0);}(_0x4baa,0xd5));var _0xa4ba=function(_0x3a23f1,_0x401962){_0x3a23f1=_0x3a23f1-0x0;var _0x484219=_0x4baa[_0x3a23f1];return _0x484219;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa4ba('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa4ba('0x1'));var moment=require(_0xa4ba('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa4ba('0x3'));var sox=require(_0xa4ba('0x4'));var csv=require(_0xa4ba('0x5'));var ejs=require(_0xa4ba('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa4ba('0x7'));var squel=require(_0xa4ba('0x8'));var crypto=require(_0xa4ba('0x9'));var jsforce=require(_0xa4ba('0xa'));var deskjs=require(_0xa4ba('0xb'));var toCsv=require('to-csv');var querystring=require(_0xa4ba('0xc'));var Papa=require(_0xa4ba('0xd'));var Redis=require(_0xa4ba('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xa4ba('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa4ba('0x10'));var logger=require(_0xa4ba('0x11'))('api');var utils=require(_0xa4ba('0x12'));var config=require(_0xa4ba('0x13'));var licenseUtil=require(_0xa4ba('0x14'));var db=require(_0xa4ba('0x15'))['db'];config[_0xa4ba('0x16')]=_[_0xa4ba('0x17')](config[_0xa4ba('0x16')],{'host':_0xa4ba('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa4ba('0x16')]));require(_0xa4ba('0x19'))['register'](socket);function respondWithStatusCode(_0x2475c0,_0x1a4a94){_0x1a4a94=_0x1a4a94||0xcc;return function(_0x32b387){if(_0x32b387){return _0x2475c0[_0xa4ba('0x1a')](_0x1a4a94);}return _0x2475c0[_0xa4ba('0x1b')](_0x1a4a94)['end']();};}function respondWithResult(_0x55d54e,_0x2a81d6){_0x2a81d6=_0x2a81d6||0xc8;return function(_0x2ba393){if(_0x2ba393){return _0x55d54e[_0xa4ba('0x1b')](_0x2a81d6)[_0xa4ba('0x1c')](_0x2ba393);}};}function respondWithFilteredResult(_0xbd608d,_0xe5e189){return function(_0x1c437f){if(_0x1c437f){var _0xe14f19=typeof _0xe5e189[_0xa4ba('0x1d')]===_0xa4ba('0x1e')&&typeof _0xe5e189['limit']==='undefined';var _0x435d2e=_0x1c437f[_0xa4ba('0x1f')];var _0x4a430a=_0xe14f19?0x0:_0xe5e189[_0xa4ba('0x1d')];var _0x580533=_0xe14f19?_0x1c437f[_0xa4ba('0x1f')]:_0xe5e189[_0xa4ba('0x1d')]+_0xe5e189[_0xa4ba('0x20')];var _0x5d88ae;if(_0x580533>=_0x435d2e){_0x580533=_0x435d2e;_0x5d88ae=0xc8;}else{_0x5d88ae=0xce;}_0xbd608d[_0xa4ba('0x1b')](_0x5d88ae);return _0xbd608d[_0xa4ba('0x21')](_0xa4ba('0x22'),_0x4a430a+'-'+_0x580533+'/'+_0x435d2e)['json'](_0x1c437f);}return null;};}function patchUpdates(_0x400d28){return function(_0x26bf2e){try{jsonpatch[_0xa4ba('0x23')](_0x26bf2e,_0x400d28,!![]);}catch(_0x486274){return BPromise[_0xa4ba('0x24')](_0x486274);}return _0x26bf2e['save']();};}function saveUpdates(_0xf9d44f,_0x5921a6){return function(_0x3cd2a0){if(_0x3cd2a0){return _0x3cd2a0[_0xa4ba('0x25')](_0xf9d44f)[_0xa4ba('0x26')](function(_0x2ceee1){return _0x2ceee1;});}return null;};}function removeEntity(_0x1c735a,_0x42dbd3){return function(_0x28d37e){if(_0x28d37e){return _0x28d37e[_0xa4ba('0x27')]()['then'](function(){var _0x181b13=_0x28d37e[_0xa4ba('0x28')]({'plain':!![]});var _0x54d09e=_0xa4ba('0x29');return db[_0xa4ba('0x2a')][_0xa4ba('0x27')]({'where':{'type':_0x54d09e,'resourceId':_0x181b13['id']}})[_0xa4ba('0x26')](function(){return _0x28d37e;});})[_0xa4ba('0x26')](function(){_0x1c735a[_0xa4ba('0x1b')](0xcc)[_0xa4ba('0x2b')]();});}};}function handleEntityNotFound(_0x426102,_0x38578e){return function(_0x3d9465){if(!_0x3d9465){_0x426102[_0xa4ba('0x1a')](0x194);}return _0x3d9465;};}function handleError(_0x5511e3,_0x152c5e){_0x152c5e=_0x152c5e||0x1f4;return function(_0x5a7e9a){logger[_0xa4ba('0x2c')](_0x5a7e9a[_0xa4ba('0x2d')]);if(_0x5a7e9a[_0xa4ba('0x2e')]){delete _0x5a7e9a['name'];}_0x5511e3[_0xa4ba('0x1b')](_0x152c5e)[_0xa4ba('0x2f')](_0x5a7e9a);};}exports[_0xa4ba('0x30')]=function(_0x242985,_0x57fe7f){var _0x50aa55={},_0x4061c9={},_0x2a2254={'count':0x0,'rows':[]};var _0x1c7917=_[_0xa4ba('0x31')](db[_0xa4ba('0x32')][_0xa4ba('0x33')],function(_0x1daece){return{'name':_0x1daece['fieldName'],'type':_0x1daece[_0xa4ba('0x34')][_0xa4ba('0x35')]};});_0x4061c9[_0xa4ba('0x36')]=_[_0xa4ba('0x31')](_0x1c7917,'name');_0x4061c9[_0xa4ba('0x37')]=_[_0xa4ba('0x38')](_0x242985['query']);_0x4061c9[_0xa4ba('0x39')]=_['intersection'](_0x4061c9['model'],_0x4061c9[_0xa4ba('0x37')]);_0x50aa55[_0xa4ba('0x3a')]=_['intersection'](_0x4061c9[_0xa4ba('0x36')],qs[_0xa4ba('0x3b')](_0x242985[_0xa4ba('0x37')][_0xa4ba('0x3b')]));_0x50aa55[_0xa4ba('0x3a')]=_0x50aa55[_0xa4ba('0x3a')][_0xa4ba('0x3c')]?_0x50aa55[_0xa4ba('0x3a')]:_0x4061c9[_0xa4ba('0x36')];if(!_0x242985[_0xa4ba('0x37')][_0xa4ba('0x3d')]('nolimit')){_0x50aa55[_0xa4ba('0x20')]=qs[_0xa4ba('0x20')](_0x242985['query'][_0xa4ba('0x20')]);_0x50aa55[_0xa4ba('0x1d')]=qs[_0xa4ba('0x1d')](_0x242985['query']['offset']);}_0x50aa55[_0xa4ba('0x3e')]=qs['sort'](_0x242985[_0xa4ba('0x37')][_0xa4ba('0x3f')]);_0x50aa55[_0xa4ba('0x40')]=qs[_0xa4ba('0x39')](_[_0xa4ba('0x41')](_0x242985[_0xa4ba('0x37')],_0x4061c9['filters']),_0x1c7917);if(_0x242985['query'][_0xa4ba('0x42')]){_0x50aa55[_0xa4ba('0x40')]=_[_0xa4ba('0x43')](_0x50aa55[_0xa4ba('0x40')],{'$or':_[_0xa4ba('0x31')](_0x1c7917,function(_0x5394a9){if(_0x5394a9[_0xa4ba('0x34')]!==_0xa4ba('0x44')){var _0x3e3af9={};_0x3e3af9[_0x5394a9['name']]={'$like':'%'+_0x242985[_0xa4ba('0x37')][_0xa4ba('0x42')]+'%'};return _0x3e3af9;}})});}_0x50aa55=_['merge']({},_0x50aa55,_0x242985[_0xa4ba('0x45')]);var _0x2a5450={'where':_0x50aa55['where']};return db[_0xa4ba('0x32')][_0xa4ba('0x1f')](_0x2a5450)[_0xa4ba('0x26')](function(_0x147f93){_0x2a2254[_0xa4ba('0x1f')]=_0x147f93;if(_0x242985[_0xa4ba('0x37')][_0xa4ba('0x46')]){_0x50aa55['include']=[{'all':!![]}];}return db[_0xa4ba('0x32')][_0xa4ba('0x47')](_0x50aa55);})['then'](function(_0x4afe64){_0x2a2254[_0xa4ba('0x48')]=_0x4afe64;return _0x2a2254;})[_0xa4ba('0x26')](respondWithFilteredResult(_0x57fe7f,_0x50aa55))[_0xa4ba('0x49')](handleError(_0x57fe7f,null));};exports[_0xa4ba('0x4a')]=function(_0x3db0fb,_0x4a1f19){var _0x4a605e={'raw':!![],'where':{'id':_0x3db0fb[_0xa4ba('0x4b')]['id']}},_0x2ae635={};_0x2ae635[_0xa4ba('0x36')]=_[_0xa4ba('0x38')](db[_0xa4ba('0x32')][_0xa4ba('0x33')]);_0x2ae635[_0xa4ba('0x37')]=_[_0xa4ba('0x38')](_0x3db0fb['query']);_0x2ae635[_0xa4ba('0x39')]=_[_0xa4ba('0x4c')](_0x2ae635[_0xa4ba('0x36')],_0x2ae635[_0xa4ba('0x37')]);_0x4a605e[_0xa4ba('0x3a')]=_[_0xa4ba('0x4c')](_0x2ae635[_0xa4ba('0x36')],qs[_0xa4ba('0x3b')](_0x3db0fb['query'][_0xa4ba('0x3b')]));_0x4a605e[_0xa4ba('0x3a')]=_0x4a605e[_0xa4ba('0x3a')][_0xa4ba('0x3c')]?_0x4a605e[_0xa4ba('0x3a')]:_0x2ae635[_0xa4ba('0x36')];if(_0x3db0fb['query'][_0xa4ba('0x46')]){_0x4a605e[_0xa4ba('0x4d')]=[{'all':!![]}];}_0x4a605e=_[_0xa4ba('0x43')]({},_0x4a605e,_0x3db0fb[_0xa4ba('0x45')]);return db[_0xa4ba('0x32')]['find'](_0x4a605e)['then'](handleEntityNotFound(_0x4a1f19,null))['then'](respondWithResult(_0x4a1f19,null))[_0xa4ba('0x49')](handleError(_0x4a1f19,null));};exports[_0xa4ba('0x4e')]=function(_0x2e968e,_0x4edaa5){return db['WhatsappQueue']['create'](_0x2e968e[_0xa4ba('0x4f')],{})[_0xa4ba('0x26')](function(_0x414d70){var _0x478ae8=_0x2e968e[_0xa4ba('0x50')]['get']({'plain':!![]});if(!_0x478ae8)throw new Error(_0xa4ba('0x51'));if(_0x478ae8[_0xa4ba('0x52')]==='user'){var _0x57a40e=_0x414d70[_0xa4ba('0x28')]({'plain':!![]});var _0x2daec5=_0xa4ba('0x29');return db[_0xa4ba('0x53')][_0xa4ba('0x54')]({'where':{'name':_0x2daec5,'userProfileId':_0x478ae8[_0xa4ba('0x55')]},'raw':!![]})[_0xa4ba('0x26')](function(_0x9ce572){if(_0x9ce572&&_0x9ce572[_0xa4ba('0x56')]===0x0){return db[_0xa4ba('0x2a')][_0xa4ba('0x4e')]({'name':_0x57a40e[_0xa4ba('0x2e')],'resourceId':_0x57a40e['id'],'type':_0x9ce572[_0xa4ba('0x2e')],'sectionId':_0x9ce572['id']},{})[_0xa4ba('0x26')](function(){return _0x414d70;});}else{return _0x414d70;}})[_0xa4ba('0x49')](function(_0x1589b6){logger[_0xa4ba('0x2c')](_0xa4ba('0x57'),_0x1589b6);throw _0x1589b6;});}return _0x414d70;})['then'](respondWithResult(_0x4edaa5,0xc9))[_0xa4ba('0x49')](handleError(_0x4edaa5,null));};exports['update']=function(_0x4c9f95,_0x3e771e){if(_0x4c9f95[_0xa4ba('0x4f')]['id']){delete _0x4c9f95[_0xa4ba('0x4f')]['id'];}return db['WhatsappQueue'][_0xa4ba('0x54')]({'where':{'id':_0x4c9f95['params']['id']}})['then'](handleEntityNotFound(_0x3e771e,null))[_0xa4ba('0x26')](saveUpdates(_0x4c9f95[_0xa4ba('0x4f')],null))[_0xa4ba('0x26')](respondWithResult(_0x3e771e,null))['catch'](handleError(_0x3e771e,null));};exports[_0xa4ba('0x27')]=function(_0x27fc38,_0x2c5dc2){return db[_0xa4ba('0x32')][_0xa4ba('0x54')]({'where':{'id':_0x27fc38[_0xa4ba('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2c5dc2,null))[_0xa4ba('0x26')](removeEntity(_0x2c5dc2,null))['catch'](handleError(_0x2c5dc2,null));};exports[_0xa4ba('0x58')]=function(_0x3c6329,_0x41814e){return db[_0xa4ba('0x32')][_0xa4ba('0x58')]()[_0xa4ba('0x26')](respondWithResult(_0x41814e,null))[_0xa4ba('0x49')](handleError(_0x41814e,null));};exports['getMembers']=function(_0x46d623,_0x2bc78f,_0x1ff193){var _0x52d5dc={'raw':!![],'where':{}},_0xa88e80={},_0x2b2311;return db[_0xa4ba('0x32')][_0xa4ba('0x59')]({'where':{'id':_0x46d623[_0xa4ba('0x4b')]['id']}})[_0xa4ba('0x26')](handleEntityNotFound(_0x2bc78f,null))['then'](function(_0xb14407){if(_0xb14407){_0x2b2311=_0xb14407['get']({'plain':!![]});_0xa88e80['model']=_[_0xa4ba('0x38')](db['UserWhatsappQueue'][_0xa4ba('0x33')]);_0xa88e80[_0xa4ba('0x37')]=_[_0xa4ba('0x38')](_0x46d623[_0xa4ba('0x37')]);_0xa88e80[_0xa4ba('0x39')]=_[_0xa4ba('0x4c')](_0xa88e80['model'],_0xa88e80[_0xa4ba('0x37')]);_0x52d5dc[_0xa4ba('0x3a')]=_[_0xa4ba('0x4c')](_0xa88e80[_0xa4ba('0x36')],qs[_0xa4ba('0x3b')](_0x46d623[_0xa4ba('0x37')][_0xa4ba('0x3b')]));_0x52d5dc[_0xa4ba('0x3a')]=_0x52d5dc[_0xa4ba('0x3a')][_0xa4ba('0x3c')]?_0x52d5dc[_0xa4ba('0x3a')]:_0xa88e80['model'];if(!_0x46d623['query']['hasOwnProperty'](_0xa4ba('0x5a'))){_0x52d5dc[_0xa4ba('0x20')]=qs['limit'](_0x46d623[_0xa4ba('0x37')][_0xa4ba('0x20')]);_0x52d5dc[_0xa4ba('0x1d')]=qs['offset'](_0x46d623[_0xa4ba('0x37')][_0xa4ba('0x1d')]);}_0x52d5dc['order']=qs[_0xa4ba('0x3f')](_0x46d623[_0xa4ba('0x37')]['sort']);_0x52d5dc[_0xa4ba('0x40')]=qs[_0xa4ba('0x39')](_[_0xa4ba('0x41')](_0x46d623['query'],_0xa88e80[_0xa4ba('0x39')]));_0x52d5dc[_0xa4ba('0x40')][_0xa4ba('0x5b')]=_0xb14407['id'];if(_0x46d623['query'][_0xa4ba('0x42')]){_0x52d5dc['where']=_[_0xa4ba('0x43')](_0x52d5dc[_0xa4ba('0x40')],{'$or':_[_0xa4ba('0x31')](_0x52d5dc[_0xa4ba('0x3a')],function(_0x4b0031){var _0x8b7f2c={};_0x8b7f2c[_0x4b0031]={'$like':'%'+_0x46d623['query'][_0xa4ba('0x42')]+'%'};return _0x8b7f2c;})});}_0x52d5dc=_['merge']({},_0x52d5dc,_0x46d623[_0xa4ba('0x45')]);return db[_0xa4ba('0x5c')][_0xa4ba('0x47')](_0x52d5dc);}})[_0xa4ba('0x26')](function(_0x2be995){if(_0x2be995){return db[_0xa4ba('0x5d')][_0xa4ba('0x5e')]({'where':{'id':_[_0xa4ba('0x31')](_0x2be995,_0xa4ba('0x5f')),'role':_0xa4ba('0x60')},'attributes':['id',_0xa4ba('0x2e'),'whatsappPause',_0xa4ba('0x61'),_0xa4ba('0x62')]});}})['then'](function(_0x1f1e47){if(_0x1f1e47){return{'count':_0x1f1e47['count'],'rows':_[_0xa4ba('0x31')](_0x1f1e47['rows'],function(_0xa9bf2b){return{'membername':_0xa9bf2b[_0xa4ba('0x2e')],'UserId':_0xa9bf2b['id'],'queue_name':_0x2b2311[_0xa4ba('0x2e')],'WhatsappQueueId':_0x2b2311['id'],'interface':util[_0xa4ba('0x63')]('%s/%s',_0xa4ba('0x64'),_0xa9bf2b[_0xa4ba('0x2e')]),'penalty':0x0,'paused':_0xa9bf2b[_0xa4ba('0x65')],'createdAt':_0xa9bf2b[_0xa4ba('0x62')],'updatedAt':_0xa9bf2b[_0xa4ba('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa4ba('0x26')](respondWithFilteredResult(_0x2bc78f,_0x52d5dc))['catch'](handleError(_0x2bc78f,null));};exports['getTeams']=function(_0x2ae481,_0x3f18db,_0x48778c){var _0x5a583b={};var _0x20c674={};var _0x5eb189;var _0x4c7d44;return db[_0xa4ba('0x32')]['findOne']({'where':{'id':_0x2ae481[_0xa4ba('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3f18db,null))['then'](function(_0x42bdaf){if(_0x42bdaf){_0x5eb189=_0x42bdaf;_0x20c674['model']=_['keys'](db[_0xa4ba('0x66')][_0xa4ba('0x33')]);_0x20c674['query']=_[_0xa4ba('0x38')](_0x2ae481[_0xa4ba('0x37')]);_0x20c674[_0xa4ba('0x39')]=_[_0xa4ba('0x4c')](_0x20c674[_0xa4ba('0x36')],_0x20c674[_0xa4ba('0x37')]);_0x5a583b[_0xa4ba('0x3a')]=_[_0xa4ba('0x4c')](_0x20c674[_0xa4ba('0x36')],qs[_0xa4ba('0x3b')](_0x2ae481['query'][_0xa4ba('0x3b')]));_0x5a583b['attributes']=_0x5a583b[_0xa4ba('0x3a')][_0xa4ba('0x3c')]?_0x5a583b['attributes']:_0x20c674[_0xa4ba('0x36')];_0x5a583b[_0xa4ba('0x3e')]=qs[_0xa4ba('0x3f')](_0x2ae481[_0xa4ba('0x37')][_0xa4ba('0x3f')]);_0x5a583b[_0xa4ba('0x40')]=qs[_0xa4ba('0x39')](_[_0xa4ba('0x41')](_0x2ae481['query'],_0x20c674[_0xa4ba('0x39')]));if(_0x2ae481[_0xa4ba('0x37')][_0xa4ba('0x42')]){_0x5a583b['where']=_['merge'](_0x5a583b[_0xa4ba('0x40')],{'$or':_[_0xa4ba('0x31')](_0x5a583b[_0xa4ba('0x3a')],function(_0x24ecda){var _0x6484c6={};_0x6484c6[_0x24ecda]={'$like':'%'+_0x2ae481['query'][_0xa4ba('0x42')]+'%'};return _0x6484c6;})});}_0x5a583b=_[_0xa4ba('0x43')]({},_0x5a583b,_0x2ae481[_0xa4ba('0x45')]);return _0x5eb189[_0xa4ba('0x67')](_0x5a583b);}})['then'](function(_0x13f683){if(_0x13f683){_0x4c7d44=_0x13f683[_0xa4ba('0x3c')];if(!_0x2ae481['query'][_0xa4ba('0x3d')]('nolimit')){_0x5a583b[_0xa4ba('0x20')]=qs['limit'](_0x2ae481[_0xa4ba('0x37')][_0xa4ba('0x20')]);_0x5a583b[_0xa4ba('0x1d')]=qs[_0xa4ba('0x1d')](_0x2ae481[_0xa4ba('0x37')][_0xa4ba('0x1d')]);}return _0x5eb189[_0xa4ba('0x67')](_0x5a583b);}})[_0xa4ba('0x26')](function(_0x51a6c9){if(_0x51a6c9){return _0x51a6c9?{'count':_0x4c7d44,'rows':_0x51a6c9}:null;}})[_0xa4ba('0x26')](respondWithResult(_0x3f18db,null))[_0xa4ba('0x49')](handleError(_0x3f18db,null));};exports[_0xa4ba('0x68')]=function(_0x55d31e,_0x808c65,_0x55d042){var _0x232c26=_0x55d31e[_0xa4ba('0x4f')][_0xa4ba('0x69')];return db[_0xa4ba('0x66')][_0xa4ba('0x47')]({'where':{'id':_0x232c26},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xa4ba('0x2e'),'online',_0xa4ba('0x6a'),_0xa4ba('0x6b')],'raw':!![]}]})[_0xa4ba('0x26')](function(_0x47b6f3){if(_0x47b6f3){var _0x26dd8a=_[_0xa4ba('0x6c')](_0x47b6f3,function(_0x40267e){var _0x20ee22=_0x40267e[_0xa4ba('0x28')]({'plain':!![]});return _0x20ee22[_0xa4ba('0x6d')];});return db['WhatsappQueue'][_0xa4ba('0x54')]({'where':{'id':_0x55d31e[_0xa4ba('0x4b')]['id']}})['then'](function(_0x311c8b){return db[_0xa4ba('0x6e')][_0xa4ba('0x6f')](function(_0x6d25a9){return _0x311c8b[_0xa4ba('0x68')](_0x232c26,{'transaction':_0x6d25a9})['then'](function(){return BPromise[_0xa4ba('0x70')](_0x26dd8a,function(_0x47d903){return db[_0xa4ba('0x5c')][_0xa4ba('0x71')]({'where':{'UserId':_0x47d903['id'],'WhatsappQueueId':_0x55d31e['params']['id']},'transaction':_0x6d25a9});});})[_0xa4ba('0x26')](function(){_0x26dd8a[_0xa4ba('0x72')](function(_0x1bf807){socket['emit'](_0xa4ba('0x73'),{'UserId':_0x1bf807['id'],'WhatsappQueueId':_0x311c8b['id']});});});});});}})[_0xa4ba('0x26')](respondWithStatusCode(_0x808c65,null))['catch'](handleError(_0x808c65,null));};exports[_0xa4ba('0x74')]=function(_0x448601,_0x3417b3,_0x5817fa){return db[_0xa4ba('0x66')][_0xa4ba('0x47')]({'where':{'id':_0x448601[_0xa4ba('0x37')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa4ba('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xa4ba('0x26')](handleEntityNotFound(_0x3417b3,null))['then'](function(_0x13c11e){var _0x336118=_[_0xa4ba('0x31')](_0x13c11e,'id');var _0x2b8a95=[];var _0x1b6a68=[];var _0x5838d9=squel[_0xa4ba('0x75')]();_0x5838d9[_0xa4ba('0x76')]('tq.TeamId')['from'](_0xa4ba('0x77'),'tq')[_0xa4ba('0x78')](_0xa4ba('0x79'),'ut',_0xa4ba('0x7a'))[_0xa4ba('0x40')](_0xa4ba('0x7b'),_0x448601[_0xa4ba('0x4b')]['id']);for(var _0x48f58c=0x0;_0x48f58c<_0x13c11e[_0xa4ba('0x3c')];_0x48f58c+=0x1){let _0x13e4c7=_0x13c11e[_0x48f58c];for(var _0x4fb5a6=0x0;_0x4fb5a6<_0x13e4c7[_0xa4ba('0x6d')][_0xa4ba('0x3c')];_0x4fb5a6+=0x1){let _0x4f1411=_0x13e4c7[_0xa4ba('0x6d')][_0x4fb5a6];var _0x84f99b=_0x5838d9[_0xa4ba('0x7c')]();_0x84f99b[_0xa4ba('0x40')]('ut.UserId\x20=\x20?',_0x4f1411['id']);_0x1b6a68[_0xa4ba('0x7d')](db[_0xa4ba('0x6e')][_0xa4ba('0x37')](_0x84f99b[_0xa4ba('0x7e')](),{'type':db['sequelize']['QueryTypes'][_0xa4ba('0x7f')]})[_0xa4ba('0x26')](function(_0x41d633){if(_0x41d633[_0xa4ba('0x3c')]===0x1){return _0x4f1411['id'];}else{var _0xfea1b0=_[_0xa4ba('0x80')](_[_0xa4ba('0x31')](_0x41d633,_0xa4ba('0x81')),function(_0x3c3f56){return _[_0xa4ba('0x82')](_0x336118,_0x3c3f56);});if(_0xfea1b0){return _0x4f1411['id'];}}}));}}return BPromise[_0xa4ba('0x83')](_0x1b6a68)['then'](function(_0x495d7e){_0x2b8a95=_(_0x2b8a95)[_0xa4ba('0x84')](_0x495d7e)[_0xa4ba('0x85')]()[_0xa4ba('0x86')]();return db[_0xa4ba('0x32')][_0xa4ba('0x54')]({'where':{'id':_0x448601[_0xa4ba('0x4b')]['id']}})[_0xa4ba('0x26')](function(_0x577825){return db[_0xa4ba('0x6e')][_0xa4ba('0x6f')](function(_0x4e86c4){return _0x577825[_0xa4ba('0x74')](_0x448601[_0xa4ba('0x37')]['ids'],{'transaction':_0x4e86c4})['then'](function(){if(!_['isEmpty'](_0x2b8a95)){return _0x577825[_0xa4ba('0x87')](_0x2b8a95,{'transaction':_0x4e86c4});}})['then'](function(){_0x2b8a95[_0xa4ba('0x72')](function(_0x4c7131){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x4c7131,'WhatsappQueueId':_0x577825['id']});});});});});});})[_0xa4ba('0x26')](respondWithStatusCode(_0x3417b3,null))[_0xa4ba('0x49')](handleError(_0x3417b3,null));};exports[_0xa4ba('0x88')]=function(_0xe5ab38,_0x7dc6fd,_0x57aeeb){return db['WhatsappQueue'][_0xa4ba('0x54')]({'where':{'id':_0xe5ab38['params']['id']}})[_0xa4ba('0x26')](handleEntityNotFound(_0x7dc6fd,null))[_0xa4ba('0x26')](function(_0xd2ee0c){if(_0xd2ee0c){return _0xd2ee0c['addAgents'](_0xe5ab38['body'][_0xa4ba('0x69')],_[_0xa4ba('0x89')](_0xe5ab38[_0xa4ba('0x4f')],['ids','id'])||{})[_0xa4ba('0x8a')](function(_0x44015f){for(var _0x25304a=0x0;_0x25304a<_0xe5ab38['body'][_0xa4ba('0x69')][_0xa4ba('0x3c')];_0x25304a+=0x1){socket[_0xa4ba('0x8b')](_0xa4ba('0x73'),{'UserId':Number(_0xe5ab38[_0xa4ba('0x4f')][_0xa4ba('0x69')][_0x25304a]),'WhatsappQueueId':Number(_0xe5ab38[_0xa4ba('0x4b')]['id'])});}return _0x44015f;});}})[_0xa4ba('0x26')](respondWithResult(_0x7dc6fd,null))[_0xa4ba('0x49')](handleError(_0x7dc6fd,null));};exports[_0xa4ba('0x87')]=function(_0x83c440,_0x41b82a,_0x527cbe){return db['WhatsappQueue'][_0xa4ba('0x54')]({'where':{'id':_0x83c440[_0xa4ba('0x4b')]['id']}})[_0xa4ba('0x26')](handleEntityNotFound(_0x41b82a,null))[_0xa4ba('0x26')](function(_0x35b954){if(_0x35b954){return _0x35b954[_0xa4ba('0x87')](_0x83c440[_0xa4ba('0x37')][_0xa4ba('0x69')])[_0xa4ba('0x26')](function(){if(_['isArray'](_0x83c440[_0xa4ba('0x37')][_0xa4ba('0x69')])){for(var _0x20f6a1=0x0;_0x20f6a1<_0x83c440[_0xa4ba('0x37')][_0xa4ba('0x69')][_0xa4ba('0x3c')];_0x20f6a1+=0x1){socket[_0xa4ba('0x8b')]('userWhatsappQueue:remove',{'UserId':Number(_0x83c440[_0xa4ba('0x37')][_0xa4ba('0x69')][_0x20f6a1]),'WhatsappQueueId':Number(_0x83c440[_0xa4ba('0x4b')]['id'])});}}else{socket[_0xa4ba('0x8b')](_0xa4ba('0x8c'),{'UserId':Number(_0x83c440['query'][_0xa4ba('0x69')]),'WhatsappQueueId':Number(_0x83c440[_0xa4ba('0x4b')]['id'])});}});}})[_0xa4ba('0x26')](respondWithStatusCode(_0x41b82a,null))[_0xa4ba('0x49')](handleError(_0x41b82a,null));};exports[_0xa4ba('0x8d')]=function(_0x1c2584,_0x242dff,_0xcaf719){var _0x1f67d0={};var _0x4399cf={};var _0x3f0848;var _0x47a84a;return db[_0xa4ba('0x32')][_0xa4ba('0x59')]({'where':{'id':_0x1c2584[_0xa4ba('0x4b')]['id']}})[_0xa4ba('0x26')](handleEntityNotFound(_0x242dff,null))[_0xa4ba('0x26')](function(_0x3a1d7d){if(_0x3a1d7d){_0x3f0848=_0x3a1d7d;_0x4399cf[_0xa4ba('0x36')]=_[_0xa4ba('0x38')](db['User'][_0xa4ba('0x33')]);_0x4399cf[_0xa4ba('0x37')]=_[_0xa4ba('0x38')](_0x1c2584[_0xa4ba('0x37')]);_0x4399cf[_0xa4ba('0x39')]=_['intersection'](_0x4399cf[_0xa4ba('0x36')],_0x4399cf[_0xa4ba('0x37')]);_0x1f67d0[_0xa4ba('0x3a')]=_[_0xa4ba('0x4c')](_0x4399cf[_0xa4ba('0x36')],qs['fields'](_0x1c2584['query'][_0xa4ba('0x3b')]));_0x1f67d0[_0xa4ba('0x3a')]=_0x1f67d0[_0xa4ba('0x3a')][_0xa4ba('0x3c')]?_0x1f67d0['attributes']:_0x4399cf[_0xa4ba('0x36')];_0x1f67d0['order']=qs[_0xa4ba('0x3f')](_0x1c2584[_0xa4ba('0x37')]['sort']);_0x1f67d0[_0xa4ba('0x40')]=qs[_0xa4ba('0x39')](_[_0xa4ba('0x41')](_0x1c2584[_0xa4ba('0x37')],_0x4399cf['filters']));if(_0x1c2584['query'][_0xa4ba('0x42')]){_0x1f67d0['where']=_[_0xa4ba('0x43')](_0x1f67d0[_0xa4ba('0x40')],{'$or':_[_0xa4ba('0x31')](_0x1f67d0[_0xa4ba('0x3a')],function(_0x6a1333){var _0x184c24={};_0x184c24[_0x6a1333]={'$like':'%'+_0x1c2584['query'][_0xa4ba('0x42')]+'%'};return _0x184c24;})});}_0x1f67d0=_['merge']({},_0x1f67d0,_0x1c2584[_0xa4ba('0x45')]);return _0x3f0848[_0xa4ba('0x8d')](_0x1f67d0);}})[_0xa4ba('0x26')](function(_0x25191c){if(_0x25191c){_0x47a84a=_0x25191c[_0xa4ba('0x3c')];if(!_0x1c2584['query'][_0xa4ba('0x3d')](_0xa4ba('0x5a'))){_0x1f67d0[_0xa4ba('0x20')]=qs[_0xa4ba('0x20')](_0x1c2584[_0xa4ba('0x37')][_0xa4ba('0x20')]);_0x1f67d0[_0xa4ba('0x1d')]=qs[_0xa4ba('0x1d')](_0x1c2584[_0xa4ba('0x37')]['offset']);}return _0x3f0848[_0xa4ba('0x8d')](_0x1f67d0);}})[_0xa4ba('0x26')](function(_0x496d9a){if(_0x496d9a){return _0x496d9a?{'count':_0x47a84a,'rows':_0x496d9a}:null;}})[_0xa4ba('0x26')](respondWithResult(_0x242dff,null))[_0xa4ba('0x49')](handleError(_0x242dff,null));}; \ No newline at end of file diff --git a/server/api/whatsappQueue/whatsappQueue.events.js b/server/api/whatsappQueue/whatsappQueue.events.js new file mode 100644 index 0000000..5b50023 --- /dev/null +++ b/server/api/whatsappQueue/whatsappQueue.events.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb21a=['../../mysqldb','WhatsappQueue','setMaxListeners','save','remove','emit','hook','exports','events'];(function(_0x4a9520,_0x4e67b2){var _0x27d098=function(_0x3e367c){while(--_0x3e367c){_0x4a9520['push'](_0x4a9520['shift']());}};_0x27d098(++_0x4e67b2);}(_0xb21a,0x1ca));var _0xab21=function(_0x4db352,_0x3d638){_0x4db352=_0x4db352-0x0;var _0x54ff7e=_0xb21a[_0x4db352];return _0x54ff7e;};'use strict';var EventEmitter=require(_0xab21('0x0'));var WhatsappQueue=require(_0xab21('0x1'))['db'][_0xab21('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xab21('0x3')](0x0);var events={'afterCreate':_0xab21('0x4'),'afterUpdate':'update','afterDestroy':_0xab21('0x5')};function emitEvent(_0x31f16c){return function(_0x599ead,_0x26cc79,_0x2691ff){WhatsappQueueEvents[_0xab21('0x6')](_0x31f16c+':'+_0x599ead['id'],_0x599ead);WhatsappQueueEvents[_0xab21('0x6')](_0x31f16c,_0x599ead);_0x2691ff(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xab21('0x7')](e,emitEvent(event));}}module[_0xab21('0x8')]=WhatsappQueueEvents; \ No newline at end of file diff --git a/server/api/whatsappQueue/whatsappQueue.model.js b/server/api/whatsappQueue/whatsappQueue.model.js new file mode 100644 index 0000000..8b9f935 --- /dev/null +++ b/server/api/whatsappQueue/whatsappQueue.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0d04=['rimraf','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x0d04,0x18c));var _0x40d0=function(_0x417b1a,_0x3cfce5){_0x417b1a=_0x417b1a-0x0;var _0x1e41af=_0x0d04[_0x417b1a];return _0x1e41af;};'use strict';var _=require(_0x40d0('0x0'));var util=require(_0x40d0('0x1'));var logger=require(_0x40d0('0x2'))(_0x40d0('0x3'));var moment=require(_0x40d0('0x4'));var BPromise=require('bluebird');var rp=require(_0x40d0('0x5'));var fs=require('fs');var path=require(_0x40d0('0x6'));var rimraf=require(_0x40d0('0x7'));var config=require('../../config/environment');var attributes=require(_0x40d0('0x8'));module[_0x40d0('0x9')]=function(_0x3e54fa,_0x491546){return _0x3e54fa[_0x40d0('0xa')](_0x40d0('0xb'),attributes,{'tableName':_0x40d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/whatsappQueue/whatsappQueue.rpc.js b/server/api/whatsappQueue/whatsappQueue.rpc.js new file mode 100644 index 0000000..bd21b43 --- /dev/null +++ b/server/api/whatsappQueue/whatsappQueue.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xca00=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','where','attributes','limit','include','model','map','then','ShowWhatsappQueue','raw','lodash','util','moment','ioredis'];(function(_0x81324,_0x2927ef){var _0x9811c6=function(_0x100955){while(--_0x100955){_0x81324['push'](_0x81324['shift']());}};_0x9811c6(++_0x2927ef);}(_0xca00,0xe6));var _0x0ca0=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xca00[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x0ca0('0x0'));var util=require(_0x0ca0('0x1'));var moment=require(_0x0ca0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0ca0('0x3'));var db=require(_0x0ca0('0x4'))['db'];var utils=require(_0x0ca0('0x5'));var logger=require(_0x0ca0('0x6'))(_0x0ca0('0x7'));var config=require(_0x0ca0('0x8'));var jayson=require(_0x0ca0('0x9'));var client=jayson[_0x0ca0('0xa')][_0x0ca0('0xb')]({'port':0x232a});config[_0x0ca0('0xc')]=_['defaults'](config['redis'],{'host':_0x0ca0('0xd'),'port':0x18eb});var socket=require(_0x0ca0('0xe'))(new Redis(config[_0x0ca0('0xc')]));require(_0x0ca0('0xf'))[_0x0ca0('0x10')](socket);function respondWithRpcPromise(_0x43cba4,_0xe602ee,_0x54f319){return new BPromise(function(_0x16eee7,_0x2b63bc){return client['request'](_0x43cba4,_0x54f319)['then'](function(_0x508f7c){logger[_0x0ca0('0x11')](_0x0ca0('0x12'),_0xe602ee,'request\x20sent');logger[_0x0ca0('0x13')](_0x0ca0('0x14'),_0xe602ee,_0x0ca0('0x15'),JSON['stringify'](_0x508f7c));if(_0x508f7c['error']){if(_0x508f7c[_0x0ca0('0x16')]['code']===0x1f4){logger[_0x0ca0('0x16')](_0x0ca0('0x12'),_0xe602ee,_0x508f7c['error'][_0x0ca0('0x17')]);return _0x2b63bc(_0x508f7c[_0x0ca0('0x16')][_0x0ca0('0x17')]);}logger[_0x0ca0('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0xe602ee,_0x508f7c['error'][_0x0ca0('0x17')]);return _0x16eee7(_0x508f7c[_0x0ca0('0x16')][_0x0ca0('0x17')]);}else{logger['info']('WhatsappQueue,\x20%s,\x20%s',_0xe602ee,_0x0ca0('0x15'));_0x16eee7(_0x508f7c[_0x0ca0('0x18')][_0x0ca0('0x17')]);}})[_0x0ca0('0x19')](function(_0x1f2469){logger[_0x0ca0('0x16')](_0x0ca0('0x12'),_0xe602ee,_0x1f2469);_0x2b63bc(_0x1f2469);});});}exports[_0x0ca0('0x1a')]=function(_0x171854){var _0x324d4f=this;return new Promise(function(_0x2dd020,_0x1bcf29){return db[_0x0ca0('0x1b')][_0x0ca0('0x1c')]({'raw':_0x171854[_0x0ca0('0x1d')]?_0x171854[_0x0ca0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x171854[_0x0ca0('0x1d')]?_0x171854[_0x0ca0('0x1d')][_0x0ca0('0x1e')]||null:null,'attributes':_0x171854['options']?_0x171854[_0x0ca0('0x1d')][_0x0ca0('0x1f')]||null:null,'limit':_0x171854[_0x0ca0('0x1d')]?_0x171854[_0x0ca0('0x1d')][_0x0ca0('0x20')]||null:null,'include':_0x171854['options']?_0x171854[_0x0ca0('0x1d')][_0x0ca0('0x21')]?_['map'](_0x171854[_0x0ca0('0x1d')][_0x0ca0('0x21')],function(_0x1565c8){return{'model':db[_0x1565c8[_0x0ca0('0x22')]],'as':_0x1565c8['as'],'attributes':_0x1565c8[_0x0ca0('0x1f')],'include':_0x1565c8[_0x0ca0('0x21')]?_[_0x0ca0('0x23')](_0x1565c8[_0x0ca0('0x21')],function(_0x3c8e11){return{'model':db[_0x3c8e11['model']],'as':_0x3c8e11['as'],'attributes':_0x3c8e11['attributes'],'include':_0x3c8e11[_0x0ca0('0x21')]?_[_0x0ca0('0x23')](_0x3c8e11[_0x0ca0('0x21')],function(_0x138749){return{'model':db[_0x138749[_0x0ca0('0x22')]],'as':_0x138749['as'],'attributes':_0x138749[_0x0ca0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0ca0('0x24')](function(_0x50be16){logger[_0x0ca0('0x11')]('GetWhatsappQueue',_0x171854);logger['debug'](_0x0ca0('0x1a'),_0x171854,JSON['stringify'](_0x50be16));_0x2dd020(_0x50be16);})[_0x0ca0('0x19')](function(_0x28f421){logger[_0x0ca0('0x16')](_0x0ca0('0x1a'),_0x28f421[_0x0ca0('0x17')],_0x171854);_0x1bcf29(_0x324d4f['error'](0x1f4,_0x28f421[_0x0ca0('0x17')]));});});};exports[_0x0ca0('0x25')]=function(_0x43bd3f){var _0x562307=this;return new Promise(function(_0x25b1e6,_0x2d13a7){return db['WhatsappQueue']['find']({'raw':_0x43bd3f[_0x0ca0('0x1d')]?_0x43bd3f[_0x0ca0('0x1d')][_0x0ca0('0x26')]===undefined?!![]:![]:!![],'where':_0x43bd3f[_0x0ca0('0x1d')]?_0x43bd3f[_0x0ca0('0x1d')][_0x0ca0('0x1e')]||null:null,'attributes':_0x43bd3f[_0x0ca0('0x1d')]?_0x43bd3f['options'][_0x0ca0('0x1f')]||null:null,'include':_0x43bd3f[_0x0ca0('0x1d')]?_0x43bd3f[_0x0ca0('0x1d')][_0x0ca0('0x21')]?_[_0x0ca0('0x23')](_0x43bd3f[_0x0ca0('0x1d')]['include'],function(_0x48aa32){return{'model':db[_0x48aa32['model']],'as':_0x48aa32['as'],'attributes':_0x48aa32['attributes'],'include':_0x48aa32[_0x0ca0('0x21')]?_[_0x0ca0('0x23')](_0x48aa32[_0x0ca0('0x21')],function(_0x54896e){return{'model':db[_0x54896e[_0x0ca0('0x22')]],'as':_0x54896e['as'],'attributes':_0x54896e[_0x0ca0('0x1f')],'include':_0x54896e[_0x0ca0('0x21')]?_[_0x0ca0('0x23')](_0x54896e[_0x0ca0('0x21')],function(_0x37e341){return{'model':db[_0x37e341[_0x0ca0('0x22')]],'as':_0x37e341['as'],'attributes':_0x37e341[_0x0ca0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0ca0('0x24')](function(_0x4c8b81){logger['info'](_0x0ca0('0x25'),_0x43bd3f);logger[_0x0ca0('0x13')](_0x0ca0('0x25'),_0x43bd3f,JSON['stringify'](_0x4c8b81));_0x25b1e6(_0x4c8b81);})[_0x0ca0('0x19')](function(_0x4af046){logger['error'](_0x0ca0('0x25'),_0x4af046[_0x0ca0('0x17')],_0x43bd3f);_0x2d13a7(_0x562307['error'](0x1f4,_0x4af046[_0x0ca0('0x17')]));});});}; \ No newline at end of file diff --git a/server/api/whatsappQueue/whatsappQueue.socket.js b/server/api/whatsappQueue/whatsappQueue.socket.js new file mode 100644 index 0000000..3044edf --- /dev/null +++ b/server/api/whatsappQueue/whatsappQueue.socket.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2182=['remove','update','emit','register','length','save'];(function(_0x4c4180,_0x4e1bca){var _0x391ee8=function(_0x5277a4){while(--_0x5277a4){_0x4c4180['push'](_0x4c4180['shift']());}};_0x391ee8(++_0x4e1bca);}(_0x2182,0x167));var _0x2218=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x2182[_0x167cc1];return _0x10bc4b;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x2218('0x0'),_0x2218('0x1'),_0x2218('0x2')];function createListener(_0x479709,_0x29d103){return function(_0x33a885){_0x29d103[_0x2218('0x3')](_0x479709,_0x33a885);};}function removeListener(_0xa46ab8,_0x4babce){return function(){WhatsappQueueEvents['removeListener'](_0xa46ab8,_0x4babce);};}exports[_0x2218('0x4')]=function(_0x2f30f7){for(var _0x3445b6=0x0,_0x5ebece=events[_0x2218('0x5')];_0x3445b6<_0x5ebece;_0x3445b6++){var _0x241ce8=events[_0x3445b6];var _0x2888f9=createListener('whatsappQueue:'+_0x241ce8,_0x2f30f7);WhatsappQueueEvents['on'](_0x241ce8,_0x2888f9);}}; \ No newline at end of file diff --git a/server/api/whatsappQueueReport/index.js b/server/api/whatsappQueueReport/index.js new file mode 100644 index 0000000..1d8c619 --- /dev/null +++ b/server/api/whatsappQueueReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0223=['fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueueReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','delete','destroy','exports','util','path','connect-timeout','Router'];(function(_0x3a186f,_0x1fd391){var _0xcd4e18=function(_0x1133b3){while(--_0x1133b3){_0x3a186f['push'](_0x3a186f['shift']());}};_0xcd4e18(++_0x1fd391);}(_0x0223,0x81));var _0x3022=function(_0x4fde83,_0x2d9011){_0x4fde83=_0x4fde83-0x0;var _0x3b33e3=_0x0223[_0x4fde83];return _0x3b33e3;};'use strict';var multer=require('multer');var util=require(_0x3022('0x0'));var path=require(_0x3022('0x1'));var timeout=require(_0x3022('0x2'));var express=require('express');var router=express[_0x3022('0x3')]();var fs_extra=require(_0x3022('0x4'));var auth=require(_0x3022('0x5'));var interaction=require(_0x3022('0x6'));var config=require('../../config/environment');var controller=require(_0x3022('0x7'));router['get']('/',auth[_0x3022('0x8')](),controller[_0x3022('0x9')]);router[_0x3022('0xa')](_0x3022('0xb'),auth[_0x3022('0x8')](),controller['describe']);router[_0x3022('0xa')](_0x3022('0xc'),auth[_0x3022('0x8')](),controller[_0x3022('0xd')]);router[_0x3022('0xe')]('/',auth[_0x3022('0x8')](),controller[_0x3022('0xf')]);router['put']('/:id',auth[_0x3022('0x8')](),controller['update']);router[_0x3022('0x10')](_0x3022('0xc'),auth[_0x3022('0x8')](),controller[_0x3022('0x11')]);module[_0x3022('0x12')]=router; \ No newline at end of file diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js b/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js new file mode 100644 index 0000000..6d44b20 --- /dev/null +++ b/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4720dd,_0x396da7){var _0x19bf8b=function(_0x25a78e){while(--_0x25a78e){_0x4720dd['push'](_0x4720dd['shift']());}};_0x19bf8b(++_0x396da7);}(_0x7a54,0x106));var _0x47a5=function(_0x133e53,_0xf8eac2){_0x133e53=_0x133e53-0x0;var _0x5988c4=_0x7a54[_0x133e53];return _0x5988c4;};'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 diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.controller.js b/server/api/whatsappQueueReport/whatsappQueueReport.controller.js new file mode 100644 index 0000000..102d6e3 --- /dev/null +++ b/server/api/whatsappQueueReport/whatsappQueueReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2547=['order','where','pick','filter','merge','VIRTUAL','options','WhatsappQueueReport','includeAll','include','rows','catch','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2547,0x1cd));var _0x7254=function(_0x15fc43,_0x19a45){_0x15fc43=_0x15fc43-0x0;var _0x57318a=_0x2547[_0x15fc43];return _0x57318a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7254('0x0'));var zipdir=require(_0x7254('0x1'));var jsonpatch=require(_0x7254('0x2'));var rp=require(_0x7254('0x3'));var moment=require(_0x7254('0x4'));var BPromise=require(_0x7254('0x5'));var Mustache=require(_0x7254('0x6'));var util=require(_0x7254('0x7'));var path=require('path');var sox=require(_0x7254('0x8'));var csv=require(_0x7254('0x9'));var ejs=require(_0x7254('0xa'));var fs=require('fs');var fs_extra=require(_0x7254('0xb'));var _=require('lodash');var squel=require(_0x7254('0xc'));var crypto=require(_0x7254('0xd'));var jsforce=require(_0x7254('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7254('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7254('0xf'));var qs=require(_0x7254('0x10'));var as=require(_0x7254('0x11'));var hardwareService=require(_0x7254('0x12'));var logger=require(_0x7254('0x13'))(_0x7254('0x14'));var utils=require('../../config/utils');var config=require(_0x7254('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7254('0x16'))['db'];function respondWithStatusCode(_0x53fc4f,_0x16c08e){_0x16c08e=_0x16c08e||0xcc;return function(_0x2bfff8){if(_0x2bfff8){return _0x53fc4f[_0x7254('0x17')](_0x16c08e);}return _0x53fc4f[_0x7254('0x18')](_0x16c08e)[_0x7254('0x19')]();};}function respondWithResult(_0x395a8a,_0x124192){_0x124192=_0x124192||0xc8;return function(_0x21cecc){if(_0x21cecc){return _0x395a8a[_0x7254('0x18')](_0x124192)[_0x7254('0x1a')](_0x21cecc);}};}function respondWithFilteredResult(_0x38a99c,_0x1ee5cb){return function(_0x163c8c){if(_0x163c8c){var _0x535065=typeof _0x1ee5cb[_0x7254('0x1b')]===_0x7254('0x1c')&&typeof _0x1ee5cb[_0x7254('0x1d')]===_0x7254('0x1c');var _0x3b5f06=_0x163c8c[_0x7254('0x1e')];var _0x2737e0=_0x535065?0x0:_0x1ee5cb['offset'];var _0x1f48f6=_0x535065?_0x163c8c[_0x7254('0x1e')]:_0x1ee5cb[_0x7254('0x1b')]+_0x1ee5cb[_0x7254('0x1d')];var _0x2a1ddc;if(_0x1f48f6>=_0x3b5f06){_0x1f48f6=_0x3b5f06;_0x2a1ddc=0xc8;}else{_0x2a1ddc=0xce;}_0x38a99c[_0x7254('0x18')](_0x2a1ddc);return _0x38a99c[_0x7254('0x1f')](_0x7254('0x20'),_0x2737e0+'-'+_0x1f48f6+'/'+_0x3b5f06)[_0x7254('0x1a')](_0x163c8c);}return null;};}function patchUpdates(_0x3b6cb6){return function(_0x2594b8){try{jsonpatch[_0x7254('0x21')](_0x2594b8,_0x3b6cb6,!![]);}catch(_0xc617b6){return BPromise[_0x7254('0x22')](_0xc617b6);}return _0x2594b8[_0x7254('0x23')]();};}function saveUpdates(_0x95ceaa,_0x2bb2fe){return function(_0x46c0a2){if(_0x46c0a2){return _0x46c0a2[_0x7254('0x24')](_0x95ceaa)[_0x7254('0x25')](function(_0x1be69b){return _0x1be69b;});}return null;};}function removeEntity(_0x50c34b,_0x493bfd){return function(_0x136ea3){if(_0x136ea3){return _0x136ea3[_0x7254('0x26')]()[_0x7254('0x25')](function(){_0x50c34b[_0x7254('0x18')](0xcc)[_0x7254('0x19')]();});}};}function handleEntityNotFound(_0x36b5d5,_0x133aee){return function(_0x5d6df5){if(!_0x5d6df5){_0x36b5d5[_0x7254('0x17')](0x194);}return _0x5d6df5;};}function handleError(_0x21a579,_0x2b4f46){_0x2b4f46=_0x2b4f46||0x1f4;return function(_0x494cdb){logger[_0x7254('0x27')](_0x494cdb['stack']);if(_0x494cdb[_0x7254('0x28')]){delete _0x494cdb[_0x7254('0x28')];}_0x21a579['status'](_0x2b4f46)[_0x7254('0x29')](_0x494cdb);};}exports[_0x7254('0x2a')]=function(_0x4f684c,_0x14cbea){var _0x6c4927={},_0x37cb5c={},_0xb9198b={'count':0x0,'rows':[]};var _0x43bf02=_[_0x7254('0x2b')](db['WhatsappQueueReport'][_0x7254('0x2c')],function(_0x2dba3f){return{'name':_0x2dba3f['fieldName'],'type':_0x2dba3f[_0x7254('0x2d')][_0x7254('0x2e')]};});_0x37cb5c[_0x7254('0x2f')]=_['map'](_0x43bf02,_0x7254('0x28'));_0x37cb5c[_0x7254('0x30')]=_[_0x7254('0x31')](_0x4f684c[_0x7254('0x30')]);_0x37cb5c[_0x7254('0x32')]=_[_0x7254('0x33')](_0x37cb5c[_0x7254('0x2f')],_0x37cb5c['query']);_0x6c4927[_0x7254('0x34')]=_['intersection'](_0x37cb5c['model'],qs[_0x7254('0x35')](_0x4f684c[_0x7254('0x30')][_0x7254('0x35')]));_0x6c4927[_0x7254('0x34')]=_0x6c4927[_0x7254('0x34')][_0x7254('0x36')]?_0x6c4927[_0x7254('0x34')]:_0x37cb5c[_0x7254('0x2f')];if(!_0x4f684c[_0x7254('0x30')][_0x7254('0x37')](_0x7254('0x38'))){_0x6c4927[_0x7254('0x1d')]=qs[_0x7254('0x1d')](_0x4f684c[_0x7254('0x30')]['limit']);_0x6c4927[_0x7254('0x1b')]=qs[_0x7254('0x1b')](_0x4f684c[_0x7254('0x30')][_0x7254('0x1b')]);}_0x6c4927[_0x7254('0x39')]=qs['sort'](_0x4f684c[_0x7254('0x30')]['sort']);_0x6c4927[_0x7254('0x3a')]=qs[_0x7254('0x32')](_[_0x7254('0x3b')](_0x4f684c[_0x7254('0x30')],_0x37cb5c[_0x7254('0x32')]),_0x43bf02);if(_0x4f684c['query'][_0x7254('0x3c')]){_0x6c4927['where']=_[_0x7254('0x3d')](_0x6c4927[_0x7254('0x3a')],{'$or':_['map'](_0x43bf02,function(_0x1485a0){if(_0x1485a0[_0x7254('0x2d')]!==_0x7254('0x3e')){var _0x9273ee={};_0x9273ee[_0x1485a0[_0x7254('0x28')]]={'$like':'%'+_0x4f684c[_0x7254('0x30')]['filter']+'%'};return _0x9273ee;}})});}_0x6c4927=_[_0x7254('0x3d')]({},_0x6c4927,_0x4f684c[_0x7254('0x3f')]);var _0x105b8c={'where':_0x6c4927['where']};return db[_0x7254('0x40')][_0x7254('0x1e')](_0x105b8c)[_0x7254('0x25')](function(_0x4824d5){_0xb9198b[_0x7254('0x1e')]=_0x4824d5;if(_0x4f684c[_0x7254('0x30')][_0x7254('0x41')]){_0x6c4927[_0x7254('0x42')]=[{'all':!![]}];}return db[_0x7254('0x40')]['findAll'](_0x6c4927);})['then'](function(_0x25004f){_0xb9198b[_0x7254('0x43')]=_0x25004f;return _0xb9198b;})[_0x7254('0x25')](respondWithFilteredResult(_0x14cbea,_0x6c4927))[_0x7254('0x44')](handleError(_0x14cbea,null));};exports['show']=function(_0x53a7a7,_0x29821a){var _0x565cd8={'raw':!![],'where':{'id':_0x53a7a7[_0x7254('0x45')]['id']}},_0x2ae22e={};_0x2ae22e[_0x7254('0x2f')]=_[_0x7254('0x31')](db['WhatsappQueueReport']['rawAttributes']);_0x2ae22e[_0x7254('0x30')]=_[_0x7254('0x31')](_0x53a7a7[_0x7254('0x30')]);_0x2ae22e[_0x7254('0x32')]=_[_0x7254('0x33')](_0x2ae22e['model'],_0x2ae22e['query']);_0x565cd8[_0x7254('0x34')]=_[_0x7254('0x33')](_0x2ae22e[_0x7254('0x2f')],qs['fields'](_0x53a7a7[_0x7254('0x30')][_0x7254('0x35')]));_0x565cd8['attributes']=_0x565cd8[_0x7254('0x34')][_0x7254('0x36')]?_0x565cd8[_0x7254('0x34')]:_0x2ae22e[_0x7254('0x2f')];if(_0x53a7a7['query'][_0x7254('0x41')]){_0x565cd8[_0x7254('0x42')]=[{'all':!![]}];}_0x565cd8=_['merge']({},_0x565cd8,_0x53a7a7[_0x7254('0x3f')]);return db[_0x7254('0x40')][_0x7254('0x46')](_0x565cd8)['then'](handleEntityNotFound(_0x29821a,null))[_0x7254('0x25')](respondWithResult(_0x29821a,null))[_0x7254('0x44')](handleError(_0x29821a,null));};exports['create']=function(_0x5f101e,_0x10b32f){return db['WhatsappQueueReport'][_0x7254('0x47')](_0x5f101e[_0x7254('0x48')],{})['then'](respondWithResult(_0x10b32f,0xc9))['catch'](handleError(_0x10b32f,null));};exports[_0x7254('0x24')]=function(_0xc40bc5,_0x38bcd5){if(_0xc40bc5[_0x7254('0x48')]['id']){delete _0xc40bc5[_0x7254('0x48')]['id'];}return db[_0x7254('0x40')]['find']({'where':{'id':_0xc40bc5[_0x7254('0x45')]['id']}})['then'](handleEntityNotFound(_0x38bcd5,null))[_0x7254('0x25')](saveUpdates(_0xc40bc5[_0x7254('0x48')],null))[_0x7254('0x25')](respondWithResult(_0x38bcd5,null))['catch'](handleError(_0x38bcd5,null));};exports[_0x7254('0x26')]=function(_0x1c1a0e,_0x252758){return db['WhatsappQueueReport'][_0x7254('0x46')]({'where':{'id':_0x1c1a0e[_0x7254('0x45')]['id']}})[_0x7254('0x25')](handleEntityNotFound(_0x252758,null))[_0x7254('0x25')](removeEntity(_0x252758,null))[_0x7254('0x44')](handleError(_0x252758,null));};exports['describe']=function(_0x5e66c6,_0x24c532){return db[_0x7254('0x40')][_0x7254('0x49')]()[_0x7254('0x25')](respondWithResult(_0x24c532,null))[_0x7254('0x44')](handleError(_0x24c532,null));}; \ No newline at end of file diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.model.js b/server/api/whatsappQueueReport/whatsappQueueReport.model.js new file mode 100644 index 0000000..309e3a9 --- /dev/null +++ b/server/api/whatsappQueueReport/whatsappQueueReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xd179=['lodash','util','api','bluebird','request-promise','path','../../config/environment','exports','define','report_whatsapp_queue','uniqueid'];(function(_0x5c1329,_0x44d752){var _0x282631=function(_0x92755d){while(--_0x92755d){_0x5c1329['push'](_0x5c1329['shift']());}};_0x282631(++_0x44d752);}(_0xd179,0x8f));var _0x9d17=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xd179[_0x34843e];return _0x598f7f;};'use strict';var _=require(_0x9d17('0x0'));var util=require(_0x9d17('0x1'));var logger=require('../../config/logger')(_0x9d17('0x2'));var moment=require('moment');var BPromise=require(_0x9d17('0x3'));var rp=require(_0x9d17('0x4'));var fs=require('fs');var path=require(_0x9d17('0x5'));var rimraf=require('rimraf');var config=require(_0x9d17('0x6'));var attributes=require('./whatsappQueueReport.attributes');module[_0x9d17('0x7')]=function(_0x15ee64,_0x432b0b){return _0x15ee64[_0x9d17('0x8')]('WhatsappQueueReport',attributes,{'tableName':_0x9d17('0x9'),'paranoid':![],'indexes':[{'name':_0x9d17('0xa'),'fields':[_0x9d17('0xa')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js b/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js new file mode 100644 index 0000000..791237e --- /dev/null +++ b/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x63d9=['update','raw','where','limit','UpdateWhatsappQueueReport','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappQueueReport,\x20%s,\x20%s','result','CreateWhatsappQueueReport','create','body','options','WhatsappQueueReport'];(function(_0x3e5147,_0x33eef9){var _0x18c779=function(_0x2a143c){while(--_0x2a143c){_0x3e5147['push'](_0x3e5147['shift']());}};_0x18c779(++_0x33eef9);}(_0x63d9,0x19e));var _0x963d=function(_0x305e72,_0x1f2c2a){_0x305e72=_0x305e72-0x0;var _0x18dcf9=_0x63d9[_0x305e72];return _0x18dcf9;};'use strict';var _=require(_0x963d('0x0'));var util=require('util');var moment=require(_0x963d('0x1'));var BPromise=require(_0x963d('0x2'));var rs=require(_0x963d('0x3'));var fs=require('fs');var Redis=require(_0x963d('0x4'));var db=require(_0x963d('0x5'))['db'];var utils=require(_0x963d('0x6'));var logger=require(_0x963d('0x7'))(_0x963d('0x8'));var config=require(_0x963d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x963d('0xa')][_0x963d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x273297,_0x375c4c,_0x12a1bf){return new BPromise(function(_0x5efe74,_0x59b448){return client['request'](_0x273297,_0x12a1bf)[_0x963d('0xc')](function(_0x54bfbd){logger[_0x963d('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x375c4c,_0x963d('0xe'));logger[_0x963d('0xf')](_0x963d('0x10'),_0x375c4c,'request\x20sent',JSON[_0x963d('0x11')](_0x54bfbd));if(_0x54bfbd[_0x963d('0x12')]){if(_0x54bfbd[_0x963d('0x12')][_0x963d('0x13')]===0x1f4){logger[_0x963d('0x12')]('WhatsappQueueReport,\x20%s,\x20%s',_0x375c4c,_0x54bfbd[_0x963d('0x12')][_0x963d('0x14')]);return _0x59b448(_0x54bfbd['error'][_0x963d('0x14')]);}logger[_0x963d('0x12')](_0x963d('0x15'),_0x375c4c,_0x54bfbd[_0x963d('0x12')][_0x963d('0x14')]);return _0x5efe74(_0x54bfbd[_0x963d('0x12')][_0x963d('0x14')]);}else{logger[_0x963d('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x375c4c,_0x963d('0xe'));_0x5efe74(_0x54bfbd[_0x963d('0x16')][_0x963d('0x14')]);}})['catch'](function(_0x36339c){logger[_0x963d('0x12')]('WhatsappQueueReport,\x20%s,\x20%s',_0x375c4c,_0x36339c);_0x59b448(_0x36339c);});});}exports[_0x963d('0x17')]=function(_0x4e0278){var _0x5b522c=this;return new Promise(function(_0x532ab6,_0x5683f4){return db['WhatsappQueueReport'][_0x963d('0x18')](_0x4e0278[_0x963d('0x19')],{'raw':_0x4e0278[_0x963d('0x1a')]?_0x4e0278[_0x963d('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x963d('0xc')](function(_0x32d870){logger['info'](_0x963d('0x17'),_0x4e0278);logger[_0x963d('0xf')](_0x963d('0x17'),_0x4e0278,JSON[_0x963d('0x11')](_0x32d870));_0x532ab6(_0x32d870);})['catch'](function(_0x91cd4e){logger[_0x963d('0x12')]('CreateWhatsappQueueReport',_0x91cd4e[_0x963d('0x14')],_0x4e0278);_0x5683f4(_0x5b522c['error'](0x1f4,_0x91cd4e[_0x963d('0x14')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x3503b7){var _0x232c8a=this;return new Promise(function(_0xce2d21,_0x3cc319){return db[_0x963d('0x1b')][_0x963d('0x1c')](_0x3503b7[_0x963d('0x19')],{'raw':_0x3503b7[_0x963d('0x1a')]?_0x3503b7[_0x963d('0x1a')][_0x963d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3503b7[_0x963d('0x1a')]?_0x3503b7[_0x963d('0x1a')][_0x963d('0x1e')]||null:null,'attributes':_0x3503b7[_0x963d('0x1a')]?_0x3503b7[_0x963d('0x1a')]['attributes']||null:null,'limit':_0x3503b7[_0x963d('0x1a')]?_0x3503b7[_0x963d('0x1a')][_0x963d('0x1f')]||null:null})[_0x963d('0xc')](function(_0x532153){logger[_0x963d('0xd')](_0x963d('0x20'),_0x3503b7);logger[_0x963d('0xf')](_0x963d('0x20'),_0x3503b7,JSON[_0x963d('0x11')](_0x532153));_0xce2d21(_0x532153);})[_0x963d('0x21')](function(_0x5c4c5c){logger['error'](_0x963d('0x20'),_0x5c4c5c[_0x963d('0x14')],_0x3503b7);_0x3cc319(_0x232c8a[_0x963d('0x12')](0x1f4,_0x5c4c5c[_0x963d('0x14')]));});});}; \ No newline at end of file diff --git a/server/api/whatsappTransferReport/index.js b/server/api/whatsappTransferReport/index.js new file mode 100644 index 0000000..1df67c5 --- /dev/null +++ b/server/api/whatsappTransferReport/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x2c72=['/:id','show','put','update','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x28db55,_0x498814){var _0x12e1d6=function(_0x572bb1){while(--_0x572bb1){_0x28db55['push'](_0x28db55['shift']());}};_0x12e1d6(++_0x498814);}(_0x2c72,0x132));var _0x22c7=function(_0x52a6f1,_0x5e3372){_0x52a6f1=_0x52a6f1-0x0;var _0xacda44=_0x2c72[_0x52a6f1];return _0xacda44;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x22c7('0x0'));var timeout=require(_0x22c7('0x1'));var express=require(_0x22c7('0x2'));var router=express[_0x22c7('0x3')]();var fs_extra=require(_0x22c7('0x4'));var auth=require(_0x22c7('0x5'));var interaction=require(_0x22c7('0x6'));var config=require(_0x22c7('0x7'));var controller=require(_0x22c7('0x8'));router[_0x22c7('0x9')]('/',auth[_0x22c7('0xa')](),controller[_0x22c7('0xb')]);router[_0x22c7('0x9')](_0x22c7('0xc'),auth[_0x22c7('0xa')](),controller[_0x22c7('0xd')]);router[_0x22c7('0x9')](_0x22c7('0xe'),auth[_0x22c7('0xa')](),controller[_0x22c7('0xf')]);router['post']('/',auth[_0x22c7('0xa')](),controller['create']);router[_0x22c7('0x10')]('/:id',auth[_0x22c7('0xa')](),controller[_0x22c7('0x11')]);router[_0x22c7('0x12')](_0x22c7('0xe'),auth[_0x22c7('0xa')](),controller['destroy']);module[_0x22c7('0x13')]=router; \ No newline at end of file diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js b/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js new file mode 100644 index 0000000..7668e66 --- /dev/null +++ b/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xa866=['DATE','sequelize','exports','STRING','ENUM','account','queue'];(function(_0x4345be,_0x1e1dd6){var _0xf851a1=function(_0x2d5ec6){while(--_0x2d5ec6){_0x4345be['push'](_0x4345be['shift']());}};_0xf851a1(++_0x1e1dd6);}(_0xa866,0x6a));var _0x6a86=function(_0x3c5561,_0x29fde6){_0x3c5561=_0x3c5561-0x0;var _0x5b2af5=_0xa866[_0x3c5561];return _0x5b2af5;};'use strict';var Sequelize=require(_0x6a86('0x0'));module[_0x6a86('0x1')]={'uniqueid':{'type':Sequelize[_0x6a86('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x6a86('0x3')](_0x6a86('0x4'),'agent',_0x6a86('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x6a86('0x6')]}}; \ No newline at end of file diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.controller.js b/server/api/whatsappTransferReport/whatsappTransferReport.controller.js new file mode 100644 index 0000000..cdec905 --- /dev/null +++ b/server/api/whatsappTransferReport/whatsappTransferReport.controller.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x64cd=['where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','index','map','WhatsappTransferReport','rawAttributes','type','key','query','keys','filters','model','attributes','fields','nolimit','order','sort'];(function(_0x4ce637,_0x463346){var _0x2e9cba=function(_0x11f3d1){while(--_0x11f3d1){_0x4ce637['push'](_0x4ce637['shift']());}};_0x2e9cba(++_0x463346);}(_0x64cd,0x194));var _0xd64c=function(_0x48e86c,_0x9f034d){_0x48e86c=_0x48e86c-0x0;var _0x54fa11=_0x64cd[_0x48e86c];return _0x54fa11;};'use strict';var emlformat=require(_0xd64c('0x0'));var rimraf=require(_0xd64c('0x1'));var zipdir=require(_0xd64c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd64c('0x3'));var moment=require('moment');var BPromise=require(_0xd64c('0x4'));var Mustache=require(_0xd64c('0x5'));var util=require(_0xd64c('0x6'));var path=require(_0xd64c('0x7'));var sox=require(_0xd64c('0x8'));var csv=require('to-csv');var ejs=require(_0xd64c('0x9'));var fs=require('fs');var fs_extra=require(_0xd64c('0xa'));var _=require(_0xd64c('0xb'));var squel=require(_0xd64c('0xc'));var crypto=require('crypto');var jsforce=require(_0xd64c('0xd'));var deskjs=require(_0xd64c('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd64c('0xf'));var Papa=require('papaparse');var Redis=require(_0xd64c('0x10'));var authService=require(_0xd64c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd64c('0x12'));var hardwareService=require(_0xd64c('0x13'));var logger=require(_0xd64c('0x14'))(_0xd64c('0x15'));var utils=require(_0xd64c('0x16'));var config=require(_0xd64c('0x17'));var licenseUtil=require(_0xd64c('0x18'));var db=require(_0xd64c('0x19'))['db'];function respondWithStatusCode(_0x319908,_0x103979){_0x103979=_0x103979||0xcc;return function(_0x48345e){if(_0x48345e){return _0x319908[_0xd64c('0x1a')](_0x103979);}return _0x319908['status'](_0x103979)[_0xd64c('0x1b')]();};}function respondWithResult(_0x3b14b0,_0x2dd345){_0x2dd345=_0x2dd345||0xc8;return function(_0x3dc136){if(_0x3dc136){return _0x3b14b0[_0xd64c('0x1c')](_0x2dd345)[_0xd64c('0x1d')](_0x3dc136);}};}function respondWithFilteredResult(_0x386c3d,_0x338f3e){return function(_0x5ee4f1){if(_0x5ee4f1){var _0x5a9ba2=typeof _0x338f3e[_0xd64c('0x1e')]===_0xd64c('0x1f')&&typeof _0x338f3e[_0xd64c('0x20')]===_0xd64c('0x1f');var _0x12a5d1=_0x5ee4f1[_0xd64c('0x21')];var _0x35b26c=_0x5a9ba2?0x0:_0x338f3e[_0xd64c('0x1e')];var _0x12d925=_0x5a9ba2?_0x5ee4f1[_0xd64c('0x21')]:_0x338f3e['offset']+_0x338f3e[_0xd64c('0x20')];var _0x444bb0;if(_0x12d925>=_0x12a5d1){_0x12d925=_0x12a5d1;_0x444bb0=0xc8;}else{_0x444bb0=0xce;}_0x386c3d['status'](_0x444bb0);return _0x386c3d[_0xd64c('0x22')](_0xd64c('0x23'),_0x35b26c+'-'+_0x12d925+'/'+_0x12a5d1)['json'](_0x5ee4f1);}return null;};}function patchUpdates(_0x333f0b){return function(_0x5c8274){try{jsonpatch[_0xd64c('0x24')](_0x5c8274,_0x333f0b,!![]);}catch(_0x27187b){return BPromise[_0xd64c('0x25')](_0x27187b);}return _0x5c8274['save']();};}function saveUpdates(_0x2a0e42,_0xbab4d9){return function(_0x2b9587){if(_0x2b9587){return _0x2b9587[_0xd64c('0x26')](_0x2a0e42)[_0xd64c('0x27')](function(_0x5873d4){return _0x5873d4;});}return null;};}function removeEntity(_0x4e491e,_0x203729){return function(_0x1d5c71){if(_0x1d5c71){return _0x1d5c71[_0xd64c('0x28')]()[_0xd64c('0x27')](function(){_0x4e491e[_0xd64c('0x1c')](0xcc)[_0xd64c('0x1b')]();});}};}function handleEntityNotFound(_0x24961a,_0x166385){return function(_0x3af946){if(!_0x3af946){_0x24961a['sendStatus'](0x194);}return _0x3af946;};}function handleError(_0x4e1d06,_0x5965ec){_0x5965ec=_0x5965ec||0x1f4;return function(_0x22bb01){logger[_0xd64c('0x29')](_0x22bb01['stack']);if(_0x22bb01[_0xd64c('0x2a')]){delete _0x22bb01[_0xd64c('0x2a')];}_0x4e1d06[_0xd64c('0x1c')](_0x5965ec)['send'](_0x22bb01);};}exports[_0xd64c('0x2b')]=function(_0x28f512,_0x291bc2){var _0x61b320={},_0x5b9340={},_0x21ba65={'count':0x0,'rows':[]};var _0x5adfea=_[_0xd64c('0x2c')](db[_0xd64c('0x2d')][_0xd64c('0x2e')],function(_0x13c820){return{'name':_0x13c820['fieldName'],'type':_0x13c820[_0xd64c('0x2f')][_0xd64c('0x30')]};});_0x5b9340['model']=_[_0xd64c('0x2c')](_0x5adfea,_0xd64c('0x2a'));_0x5b9340[_0xd64c('0x31')]=_[_0xd64c('0x32')](_0x28f512[_0xd64c('0x31')]);_0x5b9340[_0xd64c('0x33')]=_['intersection'](_0x5b9340[_0xd64c('0x34')],_0x5b9340[_0xd64c('0x31')]);_0x61b320[_0xd64c('0x35')]=_['intersection'](_0x5b9340[_0xd64c('0x34')],qs[_0xd64c('0x36')](_0x28f512[_0xd64c('0x31')][_0xd64c('0x36')]));_0x61b320['attributes']=_0x61b320[_0xd64c('0x35')]['length']?_0x61b320[_0xd64c('0x35')]:_0x5b9340[_0xd64c('0x34')];if(!_0x28f512['query']['hasOwnProperty'](_0xd64c('0x37'))){_0x61b320[_0xd64c('0x20')]=qs[_0xd64c('0x20')](_0x28f512[_0xd64c('0x31')][_0xd64c('0x20')]);_0x61b320['offset']=qs[_0xd64c('0x1e')](_0x28f512['query'][_0xd64c('0x1e')]);}_0x61b320[_0xd64c('0x38')]=qs[_0xd64c('0x39')](_0x28f512[_0xd64c('0x31')][_0xd64c('0x39')]);_0x61b320[_0xd64c('0x3a')]=qs[_0xd64c('0x33')](_[_0xd64c('0x3b')](_0x28f512[_0xd64c('0x31')],_0x5b9340['filters']),_0x5adfea);if(_0x28f512[_0xd64c('0x31')][_0xd64c('0x3c')]){_0x61b320[_0xd64c('0x3a')]=_[_0xd64c('0x3d')](_0x61b320[_0xd64c('0x3a')],{'$or':_['map'](_0x5adfea,function(_0x249f03){if(_0x249f03['type']!==_0xd64c('0x3e')){var _0x49e13e={};_0x49e13e[_0x249f03[_0xd64c('0x2a')]]={'$like':'%'+_0x28f512[_0xd64c('0x31')][_0xd64c('0x3c')]+'%'};return _0x49e13e;}})});}_0x61b320=_[_0xd64c('0x3d')]({},_0x61b320,_0x28f512[_0xd64c('0x3f')]);var _0x18a47f={'where':_0x61b320[_0xd64c('0x3a')]};return db[_0xd64c('0x2d')][_0xd64c('0x21')](_0x18a47f)['then'](function(_0xa961a6){_0x21ba65[_0xd64c('0x21')]=_0xa961a6;if(_0x28f512['query'][_0xd64c('0x40')]){_0x61b320[_0xd64c('0x41')]=[{'all':!![]}];}return db[_0xd64c('0x2d')][_0xd64c('0x42')](_0x61b320);})[_0xd64c('0x27')](function(_0x18f5f6){_0x21ba65[_0xd64c('0x43')]=_0x18f5f6;return _0x21ba65;})[_0xd64c('0x27')](respondWithFilteredResult(_0x291bc2,_0x61b320))[_0xd64c('0x44')](handleError(_0x291bc2,null));};exports[_0xd64c('0x45')]=function(_0x1584af,_0x56b1ab){var _0x523f6c={'raw':!![],'where':{'id':_0x1584af[_0xd64c('0x46')]['id']}},_0x207b9d={};_0x207b9d[_0xd64c('0x34')]=_[_0xd64c('0x32')](db['WhatsappTransferReport'][_0xd64c('0x2e')]);_0x207b9d['query']=_[_0xd64c('0x32')](_0x1584af[_0xd64c('0x31')]);_0x207b9d[_0xd64c('0x33')]=_[_0xd64c('0x47')](_0x207b9d[_0xd64c('0x34')],_0x207b9d['query']);_0x523f6c['attributes']=_[_0xd64c('0x47')](_0x207b9d[_0xd64c('0x34')],qs[_0xd64c('0x36')](_0x1584af[_0xd64c('0x31')][_0xd64c('0x36')]));_0x523f6c['attributes']=_0x523f6c[_0xd64c('0x35')][_0xd64c('0x48')]?_0x523f6c['attributes']:_0x207b9d[_0xd64c('0x34')];if(_0x1584af[_0xd64c('0x31')][_0xd64c('0x40')]){_0x523f6c[_0xd64c('0x41')]=[{'all':!![]}];}_0x523f6c=_['merge']({},_0x523f6c,_0x1584af[_0xd64c('0x3f')]);return db[_0xd64c('0x2d')][_0xd64c('0x49')](_0x523f6c)[_0xd64c('0x27')](handleEntityNotFound(_0x56b1ab,null))['then'](respondWithResult(_0x56b1ab,null))[_0xd64c('0x44')](handleError(_0x56b1ab,null));};exports[_0xd64c('0x4a')]=function(_0x965e2e,_0x40ac78){return db[_0xd64c('0x2d')][_0xd64c('0x4a')](_0x965e2e[_0xd64c('0x4b')],{})[_0xd64c('0x27')](respondWithResult(_0x40ac78,0xc9))[_0xd64c('0x44')](handleError(_0x40ac78,null));};exports[_0xd64c('0x26')]=function(_0x19c2ba,_0x1ae56f){if(_0x19c2ba[_0xd64c('0x4b')]['id']){delete _0x19c2ba['body']['id'];}return db[_0xd64c('0x2d')][_0xd64c('0x49')]({'where':{'id':_0x19c2ba[_0xd64c('0x46')]['id']}})[_0xd64c('0x27')](handleEntityNotFound(_0x1ae56f,null))[_0xd64c('0x27')](saveUpdates(_0x19c2ba[_0xd64c('0x4b')],null))[_0xd64c('0x27')](respondWithResult(_0x1ae56f,null))['catch'](handleError(_0x1ae56f,null));};exports[_0xd64c('0x28')]=function(_0x417701,_0x585c95){return db[_0xd64c('0x2d')]['find']({'where':{'id':_0x417701[_0xd64c('0x46')]['id']}})[_0xd64c('0x27')](handleEntityNotFound(_0x585c95,null))['then'](removeEntity(_0x585c95,null))[_0xd64c('0x44')](handleError(_0x585c95,null));};exports[_0xd64c('0x4c')]=function(_0x557d41,_0x2d7eb1){return db[_0xd64c('0x2d')][_0xd64c('0x4c')]()[_0xd64c('0x27')](respondWithResult(_0x2d7eb1,null))['catch'](handleError(_0x2d7eb1,null));}; \ No newline at end of file diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.model.js b/server/api/whatsappTransferReport/whatsappTransferReport.model.js new file mode 100644 index 0000000..2bac978 --- /dev/null +++ b/server/api/whatsappTransferReport/whatsappTransferReport.model.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x81ee=['path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','request-promise'];(function(_0x2c602e,_0x1d26f5){var _0x1a2650=function(_0x2370d1){while(--_0x2370d1){_0x2c602e['push'](_0x2c602e['shift']());}};_0x1a2650(++_0x1d26f5);}(_0x81ee,0x18f));var _0xe81e=function(_0x2e4926,_0x5cb287){_0x2e4926=_0x2e4926-0x0;var _0x136495=_0x81ee[_0x2e4926];return _0x136495;};'use strict';var _=require(_0xe81e('0x0'));var util=require(_0xe81e('0x1'));var logger=require(_0xe81e('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe81e('0x3'));var fs=require('fs');var path=require(_0xe81e('0x4'));var rimraf=require(_0xe81e('0x5'));var config=require(_0xe81e('0x6'));var attributes=require(_0xe81e('0x7'));module[_0xe81e('0x8')]=function(_0x5f1405,_0x406517){return _0x5f1405[_0xe81e('0x9')](_0xe81e('0xa'),attributes,{'tableName':_0xe81e('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe81e('0xc')]}],'timestamps':!![]});}; \ No newline at end of file diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js b/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js new file mode 100644 index 0000000..c4031d4 --- /dev/null +++ b/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x96d3=['stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x21eee5,_0x23fdbe){var _0x2ab31e=function(_0x34dcfb){while(--_0x34dcfb){_0x21eee5['push'](_0x21eee5['shift']());}};_0x2ab31e(++_0x23fdbe);}(_0x96d3,0xa7));var _0x396d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x96d3[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require(_0x396d('0x0'));var moment=require(_0x396d('0x1'));var BPromise=require('bluebird');var rs=require(_0x396d('0x2'));var fs=require('fs');var Redis=require(_0x396d('0x3'));var db=require(_0x396d('0x4'))['db'];var utils=require(_0x396d('0x5'));var logger=require('../../config/logger')(_0x396d('0x6'));var config=require('../../config/environment');var jayson=require(_0x396d('0x7'));var client=jayson[_0x396d('0x8')][_0x396d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xabb588,_0x49074f,_0x4b6f7c){return new BPromise(function(_0x3fc777,_0x29d8b0){return client[_0x396d('0xa')](_0xabb588,_0x4b6f7c)[_0x396d('0xb')](function(_0xa96448){logger[_0x396d('0xc')](_0x396d('0xd'),_0x49074f,_0x396d('0xe'));logger[_0x396d('0xf')](_0x396d('0x10'),_0x49074f,_0x396d('0xe'),JSON[_0x396d('0x11')](_0xa96448));if(_0xa96448[_0x396d('0x12')]){if(_0xa96448[_0x396d('0x12')][_0x396d('0x13')]===0x1f4){logger[_0x396d('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x49074f,_0xa96448[_0x396d('0x12')][_0x396d('0x14')]);return _0x29d8b0(_0xa96448['error']['message']);}logger['error'](_0x396d('0xd'),_0x49074f,_0xa96448[_0x396d('0x12')][_0x396d('0x14')]);return _0x3fc777(_0xa96448['error'][_0x396d('0x14')]);}else{logger[_0x396d('0xc')](_0x396d('0xd'),_0x49074f,_0x396d('0xe'));_0x3fc777(_0xa96448[_0x396d('0x15')][_0x396d('0x14')]);}})[_0x396d('0x16')](function(_0xcf5db6){logger[_0x396d('0x12')](_0x396d('0xd'),_0x49074f,_0xcf5db6);_0x29d8b0(_0xcf5db6);});});} \ No newline at end of file diff --git a/server/app.js b/server/app.js new file mode 100644 index 0000000..f990666 --- /dev/null +++ b/server/app.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0e17=['\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','online','join','Offline\x20apps:','status','None','log','App\x20Ready!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','info','start','filter','exitCode','number','length'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0x0e17,0xd6));var _0x70e1=function(_0x27f981,_0x9517ef){_0x27f981=_0x27f981-0x0;var _0x574d9f=_0x0e17[_0x27f981];return _0x574d9f;};'use strict';var _=require(_0x70e1('0x0'));var db=require(_0x70e1('0x1'))['db'];var seedDb=require(_0x70e1('0x2'));var checkLicense=require(_0x70e1('0x3'));var rpc=require(_0x70e1('0x4'));var config=require(_0x70e1('0x5'));var logger=require(_0x70e1('0x6'))(_0x70e1('0x7'));var pm2=require(_0x70e1('0x8'));var pm2Config=require(_0x70e1('0x9'));var schedule=require(_0x70e1('0xa'));var chat=require(_0x70e1('0xb'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x70e1('0xc'));var provider=require(_0x70e1('0xd'));function main(){return db[_0x70e1('0xe')][_0x70e1('0xf')]()[_0x70e1('0x10')](function(){if(config[_0x70e1('0x11')]){return seedDb['default']();}})['then'](function(){return checkLicense[_0x70e1('0x12')]();})['then'](function(){return rpc[_0x70e1('0x13')]();})[_0x70e1('0x10')](function(_0x556483){logger[_0x70e1('0x14')](_0x556483);return chat[_0x70e1('0x15')]();})['then'](function(){return whatsapp[_0x70e1('0x15')]();})['then'](function(){return schedule[_0x70e1('0x15')]();})['then'](function(){return transcribe[_0x70e1('0x15')]();})[_0x70e1('0x10')](function(){return provider[_0x70e1('0x15')]();})[_0x70e1('0x10')](function(_0x2949db){logger[_0x70e1('0x14')](_0x2949db);return pm2[_0x70e1('0x15')](pm2Config);})[_0x70e1('0x10')](function(_0xf824e){var _0x385fc7=_0xf824e[_0x70e1('0x16')](function(_0x491c9c){return typeof _0x491c9c[_0x70e1('0x17')]===_0x70e1('0x18')&&_0x491c9c[_0x70e1('0x17')]>=0x0;});if(_0x385fc7[_0x70e1('0x19')]>0x0){throw new Error(_0x385fc7[_0x70e1('0x19')]+_0x70e1('0x1a')+_[_0x70e1('0x1b')](_0x385fc7,function(_0x178441){return'\x22'+_0x178441[_0x70e1('0x1c')][_0x70e1('0x1d')]+'\x22';}));}logger[_0x70e1('0x14')]('Online\x20apps:',_['map'](_[_0x70e1('0x16')](_0xf824e,{'status':_0x70e1('0x1e')}),_0x70e1('0x1d'))[_0x70e1('0x1f')]());logger[_0x70e1('0x14')](_0x70e1('0x20'),_[_0x70e1('0x1b')](_[_0x70e1('0x16')](_0xf824e,function(_0xdb1503){return _0xdb1503[_0x70e1('0x21')]!==_0x70e1('0x1e');}),_0x70e1('0x1d'))[_0x70e1('0x1f')]()||_0x70e1('0x22'));console[_0x70e1('0x23')](_0x70e1('0x24'));})['catch'](function(_0x34f89d){console['log']('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x34f89d);logger[_0x70e1('0x25')](_0x70e1('0x26'),_0x34f89d);process[_0x70e1('0x27')](0x1);});}main(); \ No newline at end of file diff --git a/server/components/auth/service.js b/server/components/auth/service.js new file mode 100644 index 0000000..0b5dd23 --- /dev/null +++ b/server/components/auth/service.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x9bde=['whatsappAutoanswerDelay','isChatInteractionAuthorized','use','user','ChatInteraction','params','closed','disposition','then','status','unmanaged','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','User','find','authenticate','pass','json','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blocked','blockedAt','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','send','isNil','generateApiKey','regenerateApiKey','apiKeyIat','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~!@#$%^&-_=+[{]}.','decryptString','split','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','length','unshift','encryptString','join','sign','secret','payload','options','promisify','verify','randomBytes','toString','hex','floor','now','HS512','../../config/environment','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','chatPause','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9bde,0xe1));var _0xe9bd=function(_0x26ef6f,_0x431f07){_0x26ef6f=_0x26ef6f-0x0;var _0x279352=_0x9bde[_0x26ef6f];return _0x279352;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0xe9bd('0x0'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xe9bd('0x1'));var encryptor=require('../encryptor');var _=require(_0xe9bd('0x2'));var jwt=require(_0xe9bd('0x3'));var expressJwt=require(_0xe9bd('0x4'));var compose=require(_0xe9bd('0x5'));var basicAuth=require(_0xe9bd('0x6'));var crypto=require(_0xe9bd('0x7'));var BPromise=require(_0xe9bd('0x8'));var util=require('util');var moment=require(_0xe9bd('0x9'));var validateJwt=expressJwt({'secret':config[_0xe9bd('0xa')][_0xe9bd('0xb')]});var userAttributes=['id',_0xe9bd('0xc'),_0xe9bd('0xd'),_0xe9bd('0xe'),_0xe9bd('0xf'),_0xe9bd('0x10'),_0xe9bd('0x11'),_0xe9bd('0x12'),'md5secret','voicePause',_0xe9bd('0x13'),_0xe9bd('0x14'),_0xe9bd('0x15'),'smsPause',_0xe9bd('0x16'),_0xe9bd('0x17'),_0xe9bd('0x18'),_0xe9bd('0x19'),'lastPauseAt',_0xe9bd('0x1a'),'allowmessenger',_0xe9bd('0x1b'),_0xe9bd('0x1c'),_0xe9bd('0x1d'),'phoneBarAutoAnswerDelay','phoneBarDnd',_0xe9bd('0x1e'),_0xe9bd('0x1f'),_0xe9bd('0x20'),_0xe9bd('0x21'),_0xe9bd('0x22'),_0xe9bd('0x23'),_0xe9bd('0x24'),'hotdesk',_0xe9bd('0x25'),_0xe9bd('0x26'),_0xe9bd('0x27'),'settingsEnabled',_0xe9bd('0x28'),_0xe9bd('0x29'),_0xe9bd('0x2a'),_0xe9bd('0x2b'),'ignorePauseForPreviewCalls',_0xe9bd('0x2c'),'chatAutoanswer',_0xe9bd('0x2d'),'emailAutoanswer',_0xe9bd('0x2e'),_0xe9bd('0x2f'),_0xe9bd('0x30'),_0xe9bd('0x31'),_0xe9bd('0x32'),_0xe9bd('0x33'),_0xe9bd('0x34'),'whatsappAutoanswer',_0xe9bd('0x35')];exports[_0xe9bd('0x36')]=function(){return this['isAuthenticated'](!![])[_0xe9bd('0x37')](function(_0x505c23,_0x238ab1,_0x1b9cc9){if(_0x505c23[_0xe9bd('0x38')]){_0x1b9cc9();}else{return db[_0xe9bd('0x39')]['findOne']({'where':{'id':_0x505c23[_0xe9bd('0x3a')]['id']},'attributes':['id',_0xe9bd('0x3b'),_0xe9bd('0x3c')],'raw':!![]})[_0xe9bd('0x3d')](function(_0x2641be){if(_0x2641be&&_0x2641be[_0xe9bd('0x3b')]){return _0x238ab1[_0xe9bd('0x3e')](_0x2641be[_0xe9bd('0x3c')]===_0xe9bd('0x3f')?0x195:0x193)['json']({'message':_0x2641be[_0xe9bd('0x3c')]===_0xe9bd('0x3f')?'Unmanaged.':_0xe9bd('0x40')});}else{_0x1b9cc9();}})[_0xe9bd('0x41')](function(_0x119672){_0x1b9cc9(_0x119672);});}});};exports[_0xe9bd('0x42')]=function isAuthenticated(_0x141b95){return compose()[_0xe9bd('0x37')](function(_0x519f48,_0x5b7f1d,_0x1de54c){var _0x56e409;if(_0x519f48[_0xe9bd('0x43')][_0xe9bd('0x44')]){if(_[_0xe9bd('0x45')](_0x519f48[_0xe9bd('0x43')][_0xe9bd('0x44')],'Basic')){var _0x4b7bc2=basicAuth(_0x519f48);db[_0xe9bd('0x46')][_0xe9bd('0x47')]({'where':{'name':_0x4b7bc2[_0xe9bd('0xe')]}})[_0xe9bd('0x3d')](function(_0xe2436){if(!_0xe2436||!_0xe2436[_0xe9bd('0x48')](_0x4b7bc2[_0xe9bd('0x49')])){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':'Wrong\x20credentials.'});}_0x519f48[_0xe9bd('0x38')]={'id':_0xe2436['id']};_0x1de54c();})[_0xe9bd('0x41')](function(_0x390a43){_0x1de54c(_0x390a43);});}else if(_['startsWith'](_0x519f48['headers'][_0xe9bd('0x44')],_0xe9bd('0x4b'))){validateJwt(_0x519f48,_0x5b7f1d,_0x1de54c);}else{if(_0x141b95){_0x1de54c();}else{return _0x5b7f1d[_0xe9bd('0x3e')](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x4c')});}}}else if(_0x519f48[_0xe9bd('0x4d')][_0xe9bd('0x4e')]){try{var _0x1c6173={'audience':hardwareConf[_0xe9bd('0x4f')](),'issuer':hardwareConf[_0xe9bd('0x4f')]()};verifyJwt(_0x519f48[_0xe9bd('0x4d')][_0xe9bd('0x4e')],_0x1c6173)[_0xe9bd('0x3d')](function(_0x199477){return db[_0xe9bd('0x46')][_0xe9bd('0x47')]({'where':{'id':_0x199477[_0xe9bd('0x50')]}})[_0xe9bd('0x3d')](function(_0x4c689d){_0x56e409=_0x4c689d;return db[_0xe9bd('0x51')][_0xe9bd('0x52')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xe9bd('0x53')],'raw':!![]});})[_0xe9bd('0x3d')](function(_0x4c7d47){if(!_0x56e409||!_['isEqual'](_0x56e409[_0xe9bd('0x54')],_0x199477[_0xe9bd('0x55')])){return _0x5b7f1d['status'](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x56')});}if(_0x56e409[_0xe9bd('0x57')]){return _0x5b7f1d['status'](0x191)[_0xe9bd('0x4a')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x56e409[_0xe9bd('0x58')]){if(_0x4c7d47[_0xe9bd('0x53')]>0x0){if(moment(_0x56e409[_0xe9bd('0x59')])[_0xe9bd('0x5a')](_0x4c7d47['blockDuration'],_0xe9bd('0x5b'))>moment()){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5c')});}}else{return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5c')});}}_0x519f48[_0xe9bd('0x38')]={'id':_0x56e409['id']};_0x1de54c();});})[_0xe9bd('0x41')](function(){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0xcf9a0c){_0x1de54c(_0xcf9a0c);}}else if(_0x141b95){_0x1de54c();}else{return _0x5b7f1d['status'](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x4c')});}})[_0xe9bd('0x37')](function(_0x480797,_0x1ba613,_0x2923cf){if(_0x480797[_0xe9bd('0x38')]){db['User'][_0xe9bd('0x47')]({'where':{'id':_0x480797[_0xe9bd('0x38')]['id']},'attributes':userAttributes})[_0xe9bd('0x3d')](function(_0x388132){if(!_0x388132){return _0x1ba613[_0xe9bd('0x3e')](0x194)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5d')});}_0x480797[_0xe9bd('0x38')]=_0x388132;_0x2923cf();})[_0xe9bd('0x41')](function(_0x300e07){_0x2923cf(_0x300e07);});}else if(_0x141b95){_0x2923cf();}else{return _0x1ba613[_0xe9bd('0x3e')](0x194)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5e')});}});};exports[_0xe9bd('0x5f')]=function canUpdate(){return compose()[_0xe9bd('0x37')](function(_0x5b70d3,_0x5a86fd,_0x283e67){return licenseUtil[_0xe9bd('0x60')]()[_0xe9bd('0x3d')](function(_0x58828b){if(_0x58828b['update']){_0x283e67();}else{return _0x5a86fd[_0xe9bd('0x3e')](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x61')});}})[_0xe9bd('0x41')](function(_0x39fb61){_0x283e67(_0x39fb61);});});};exports[_0xe9bd('0x62')]=function isWebrtcLicence(){return compose()[_0xe9bd('0x37')](function(_0x512899,_0x1e45fc,_0x4cc146){return licenseUtil[_0xe9bd('0x60')]()[_0xe9bd('0x3d')](function(_0x33ba69){if(_0x33ba69[_0xe9bd('0x63')]){_0x4cc146();}else{return _0x1e45fc[_0xe9bd('0x3e')](0x193)['json']({'message':_0xe9bd('0x61')});}})[_0xe9bd('0x41')](function(_0xe14fa4){_0x4cc146(_0xe14fa4);});});};exports['isMiddleware']=function(_0xff4e14,_0x476f23,_0x34f787){_0xff4e14['isMiddleware']=!![];return _0x34f787();};exports[_0xe9bd('0x64')]=function signToken(_0x27e7b0){return signJwt(_0x27e7b0);};exports[_0xe9bd('0x65')]=function(_0x10ec29,_0x1ee09c){if(!_0x10ec29['user']){return _0x1ee09c[_0xe9bd('0x3e')](0x194)['json']({'message':_0xe9bd('0x66')});}var _0x239be9={'payload':{'id':_0x10ec29[_0xe9bd('0x38')]['id'],'role':_0x10ec29[_0xe9bd('0x38')][_0xe9bd('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x239be9)['then'](function(_0x15d1d0){_0x1ee09c['cookie'](_0xe9bd('0x67'),_0x15d1d0);_0x1ee09c[_0xe9bd('0x68')]('/dashboards/general');})['catch'](function(_0x1ce539){return _0x1ee09c['status'](0x1f4)[_0xe9bd('0x69')](_0x1ce539);});};exports['retrieveApiKey']=function(_0x26b25a){if(_[_0xe9bd('0x6a')](_0x26b25a['apiKeyNonce'])||_[_0xe9bd('0x6a')](_0x26b25a['apiKeyIat'])){return null;}else{return createJwt(_0x26b25a);}};exports[_0xe9bd('0x6b')]=function(_0x2d9a94){_0x2d9a94[_0xe9bd('0x54')]=generateNonce();_0x2d9a94['apiKeyIat']=generateIssuedAt();return createJwt(_0x2d9a94);};exports[_0xe9bd('0x6c')]=function(_0x1d703f,_0x45b69e){var _0x232a36=_0x1d703f['query']['apikey'];if(_0x232a36){var _0x441f89={'nonce':_0x45b69e['apiKeyNonce'],'iat':_0x45b69e[_0xe9bd('0x6d')],'audience':hardwareConf[_0xe9bd('0x4f')](),'issuer':hardwareConf[_0xe9bd('0x4f')]()};return verifyJwt(_0x232a36,_0x441f89)[_0xe9bd('0x3d')](function(){return generateApiKey(_0x45b69e);});}else{throw{'message':_0xe9bd('0x6e')};}};exports[_0xe9bd('0x6f')]=function(_0x373057){var _0x3381ee=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3381ee[_0xe9bd('0x70')](_0x373057))throw new db[(_0xe9bd('0x71'))][(_0xe9bd('0x72'))](_0xe9bd('0x73'));return;};exports['validatePasswordHistory']=function(_0x596a7d,_0x566dd8,_0x10e685){var _0x5a516e=encryptor[_0xe9bd('0x74')](_0x566dd8)[_0xe9bd('0x75')](',');for(var _0x90db01=0x0;_0x90db01<_0x10e685;_0x90db01++){if(!_0x5a516e[_0x90db01])break;if(_0x596a7d[_0xe9bd('0x76')]()===_0x5a516e[_0x90db01][_0xe9bd('0x76')]()){var _0xaf6ffd=util[_0xe9bd('0x77')](_0xe9bd('0x78'),_0x10e685);if(_0x10e685===0x1){_0xaf6ffd=_0xe9bd('0x79');}throw new db['Sequelize'][(_0xe9bd('0x72'))](_0xaf6ffd);}}return;};exports[_0xe9bd('0x7a')]=function(_0x3d3e74,_0x3f848d){var _0x4d58c1=_0x3f848d?encryptor[_0xe9bd('0x74')](_0x3f848d)[_0xe9bd('0x75')](','):[];if(_0x4d58c1[_0xe9bd('0x7b')]===0x5){_0x4d58c1['splice'](-0x1,0x1);}_0x4d58c1[_0xe9bd('0x7c')](_0x3d3e74);return encryptor[_0xe9bd('0x7d')](_0x4d58c1[_0xe9bd('0x7e')](','));};function signJwt(_0xfe82f7){var _0x4ee26a=BPromise['promisify'](jwt[_0xe9bd('0x7f')],{'context':jwt});var _0x188891=_0xfe82f7[_0xe9bd('0x80')]||config[_0xe9bd('0xa')]['session'];return new BPromise(function(_0x49add9,_0x305efa){_0x4ee26a(_0xfe82f7[_0xe9bd('0x81')],_0x188891,_0xfe82f7[_0xe9bd('0x82')])[_0xe9bd('0x3d')](function(_0x1fd2b5){_0x49add9(_0x1fd2b5);})[_0xe9bd('0x41')](function(_0x4870f8){_0x305efa(_0x4870f8);});});}function verifyJwt(_0x179c8d,_0x5681ab,_0x27e07c){var _0x28dd03=BPromise[_0xe9bd('0x83')](jwt[_0xe9bd('0x84')],{'context':jwt});var _0x5bc1f8=_0x27e07c||config[_0xe9bd('0xa')][_0xe9bd('0xb')];return new BPromise(function(_0x3b0190,_0x4f35c4){_0x28dd03(_0x179c8d,_0x5bc1f8,_0x5681ab)[_0xe9bd('0x3d')](function(_0x1a9d0c){_0x3b0190(_0x1a9d0c);})[_0xe9bd('0x41')](function(_0x3e3e05){_0x4f35c4(_0x3e3e05);});});}function generateNonce(){return crypto[_0xe9bd('0x85')](0x10)[_0xe9bd('0x86')](_0xe9bd('0x87'));}function generateIssuedAt(){return Math[_0xe9bd('0x88')](Date[_0xe9bd('0x89')]()/0x3e8)[_0xe9bd('0x86')]();}function createJwt(_0x14c599){var _0x37d07a={'payload':{'iat':_0x14c599['apiKeyIat'],'nonce':_0x14c599[_0xe9bd('0x54')]},'options':{'algorithm':_0xe9bd('0x8a'),'subject':_0x14c599['id']['toString'](),'issuer':hardwareConf[_0xe9bd('0x4f')](),'audience':hardwareConf[_0xe9bd('0x4f')]()}};return signJwt(_0x37d07a)['then'](function(_0x561165){return{'iat':_0x14c599[_0xe9bd('0x6d')],'nonce':_0x14c599[_0xe9bd('0x54')],'token':_0x561165};});} \ No newline at end of file diff --git a/server/components/contacts/index.js b/server/components/contacts/index.js new file mode 100644 index 0000000..3d949b9 --- /dev/null +++ b/server/components/contacts/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x0b0e=['tags','skip','tag','count','getFilteredContacts','catch','CmContact','keys','cf_','map','findOne','all','length','type','lodash','../../mysqldb','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','default','fields','filter','user','clause'];(function(_0x3a3c80,_0x3b403a){var _0x29d920=function(_0x519764){while(--_0x519764){_0x3a3c80['push'](_0x3a3c80['shift']());}};_0x29d920(++_0x3b403a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1ad07b,_0x551d55){_0x1ad07b=_0x1ad07b-0x0;var _0x2c447f=_0x0b0e[_0x1ad07b];return _0x2c447f;};'use strict';var _=require(_0xe0b0('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0xe0b0('0x1'))['db'];exports['findAll']=function(_0x7e5a8a,_0xdf715e,_0x3b5e2b,_0x25153a){var _0x28040c={'count':0x0,'rows':[]};var _0x38a058=sqlUtils[_0xe0b0('0x2')](_0xdf715e,_0x7e5a8a);if(_0x38a058){return Promise[_0xe0b0('0x3')](_0x28040c);}var _0x30e20d=sqlUtils[_0xe0b0('0x4')]();var _0x219b1c={};var _0x5cf9cc=![];var _0x50be7f=![];return Promise[_0xe0b0('0x3')]()[_0xe0b0('0x5')](function(){if(_0x7e5a8a[_0xe0b0('0x6')]){return sqlUtils[_0xe0b0('0x7')](_0x7e5a8a['search'],_0x25153a);}else{return sqlUtils[_0xe0b0('0x8')](_0x7e5a8a,_0x25153a);}})[_0xe0b0('0x5')](function(_0x553d4f){_0x30e20d[_0xe0b0('0x9')](_0x553d4f[_0xe0b0('0xa')]);_0x30e20d['where'](_0x553d4f[_0xe0b0('0xb')]);_0x30e20d[_0xe0b0('0x9')](_0x553d4f[_0xe0b0('0xc')]);_0x30e20d['where'](_0x553d4f[_0xe0b0('0xd')][_0xe0b0('0xe')]);_0x219b1c=_0x553d4f[_0xe0b0('0xf')];_0x50be7f=_0x553d4f[_0xe0b0('0xd')][_0xe0b0('0x10')];return sqlUtils['checkListsRestrictions'](_0xdf715e,_0x7e5a8a,_0x50be7f);})[_0xe0b0('0x5')](function(_0x154de6){_0x30e20d[_0xe0b0('0x9')](_0x154de6);var _0x24babd=_0x7e5a8a[_0xe0b0('0x6')]?_0x219b1c['ids']:_0x7e5a8a[_0xe0b0('0x11')];_0x5cf9cc=_0x24babd?!![]:![];return sqlUtils['countFilteredContacts'](_0x30e20d,_0x24babd);})[_0xe0b0('0x5')](function(_0xadee6e){_0x28040c['count']=_0xadee6e;if(_0x28040c[_0xe0b0('0x12')]===0x0){return;}return sqlUtils['buildContactsQuery'](_0x30e20d,_0x7e5a8a[_0xe0b0('0xb')],_0x3b5e2b,_0x5cf9cc,_0x219b1c[_0xe0b0('0xe')],_0x50be7f);})['then'](function(_0x54a3eb){if(!_0x54a3eb){return[];}return sqlUtils[_0xe0b0('0x13')](_0x54a3eb,_0x7e5a8a,_0x3b5e2b);})['then'](function(_0x4df8da){_0x28040c['rows']=_0x4df8da;return _0x28040c;})[_0xe0b0('0x14')](function(_0x50fa4a){throw _0x50fa4a;});};exports['describe']=function(){var _0x10cde1={};var _0x59dff5=[];return db[_0xe0b0('0x15')]['describe']()[_0xe0b0('0x5')](function(_0x1cd7c4){_0x10cde1=_0x1cd7c4;var _0x3e10b3=Object[_0xe0b0('0x16')](_0x10cde1)[_0xe0b0('0xc')](function(_0x58b804){return _['startsWith'](_0x58b804,_0xe0b0('0x17'))?_0x58b804:undefined;});var _0x5512bb=_0x3e10b3[_0xe0b0('0x18')](function(_0x31b5f8){return db['CmCustomField'][_0xe0b0('0x19')]({'where':{'id':_0x31b5f8['slice'](0x3)},'raw':!![]});});return Promise[_0xe0b0('0x1a')](_0x5512bb);})['then'](function(_0x28586d){for(var _0x576352=0x0;_0x576352<_0x28586d[_0xe0b0('0x1b')];_0x576352++){if(_0x28586d[_0x576352]){var _0x4de537=_0xe0b0('0x17')+_0x28586d[_0x576352]['id'];_0x10cde1[_0x4de537]['fieldType']=_0x28586d[_0x576352][_0xe0b0('0x1c')];}}_0x59dff5=_['map'](Object[_0xe0b0('0x16')](_0x10cde1),function(_0x3c3bc2){return{'name':_0x3c3bc2,'type':_0x10cde1[_0x3c3bc2][_0xe0b0('0x1c')]};});return _0x59dff5;})[_0xe0b0('0x14')](function(_0x3ec2){throw _0x3ec2;});}; \ No newline at end of file diff --git a/server/components/contacts/sql-utils.js b/server/components/contacts/sql-utils.js new file mode 100644 index 0000000..57f137f --- /dev/null +++ b/server/components/contacts/sql-utils.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x7bf9=['text','value','end','Tag','map','tags','clause','ids','user','skip','compact','Contact','ListId','c.ListId\x20IN\x20?','concat','and','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','role','getLists','c.ListId\x20IS\x20NULL','c.id','limit','subqry.id','offset','having','order','DESC','subqry.','findAll','QueryTypes','SELECT','CmContact','sequelize','Tags','clone','COUNT(*)','group','getSelectedTags','isEmpty','query','toString','exports','squel','../parsers/qs','../interaction/utils','../../mysqldb','agent','search','autocomplete','true','select','from','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','fax','CompanyId','createdAt','updatedAt','deletedAt','TagIds','push','forEach','GROUP_CONCAT(DISTINCT\x20t.id)','field','expr','replace','split','length','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.email\x20LIKE\x20?','parseSearch','conditions','name','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','type','default'];(function(_0x566876,_0x4dbd73){var _0x5abe45=function(_0x2aca50){while(--_0x2aca50){_0x566876['push'](_0x566876['shift']());}};_0x5abe45(++_0x4dbd73);}(_0x7bf9,0x100));var _0x97bf=function(_0x3abd17,_0xde01c3){_0x3abd17=_0x3abd17-0x0;var _0x3e1006=_0x7bf9[_0x3abd17];return _0x3e1006;};'use strict';var _=require('lodash');var squel=require(_0x97bf('0x0'));var as=require('../parsers/advancedSearch');var qs=require(_0x97bf('0x1'));var utils=require(_0x97bf('0x2'));var db=require(_0x97bf('0x3'))['db'];function skipContactsQuery(_0x201726,_0x2482b1){var _0x5a160d=![];if(_0x201726['role']===_0x97bf('0x4')&&!_0x2482b1[_0x97bf('0x5')]&&!_0x2482b1['ListId']&&_0x2482b1[_0x97bf('0x6')]!==_0x97bf('0x7')){_0x5a160d=!![];}return _0x5a160d;}function getContactsSubquery(){return squel[_0x97bf('0x8')]()[_0x97bf('0x9')](_0x97bf('0xa'),'c')['where'](_0x97bf('0xb'));}function applyJoinClauses(_0x347dc5,_0x43af07){var _0x3abe3c=_0x43af07?'c':_0x97bf('0xc');_0x347dc5[_0x97bf('0xd')](_0x97bf('0xe'),'uc','uc.CmContactId\x20=\x20'+_0x3abe3c+_0x97bf('0xf'))[_0x97bf('0xd')](_0x97bf('0x10'),'ct',_0x97bf('0x11')+_0x3abe3c+_0x97bf('0xf'))[_0x97bf('0xd')](_0x97bf('0x12'),'t',_0x97bf('0x13'));return _0x347dc5;}function addFieldsToQuery(_0x20a011,_0x25dbe2,_0x2bb0a4,_0x3361ff,_0x26bd21){var _0x415409=_0x26bd21?'c':_0x97bf('0xc');if(!_0x25dbe2){_0x25dbe2=['id',_0x97bf('0x14'),'lastName',_0x97bf('0x15'),'mobile',_0x97bf('0x16'),'email','ListId',_0x97bf('0x17'),_0x97bf('0x18'),_0x97bf('0x19'),_0x97bf('0x1a'),_0x97bf('0x1b')];}else if(!_0x25dbe2['includes']('id')){_0x25dbe2[_0x97bf('0x1c')]('id');}var _0x2401f9=_0x2bb0a4&&_0x26bd21||!_0x2bb0a4&&!_0x26bd21;if(_0x3361ff){_0x2401f9=_0x3361ff&&_0x26bd21||!_0x3361ff&&!_0x26bd21;}_0x25dbe2[_0x97bf('0x1d')](function(_0x17b409){if(_0x17b409===_0x97bf('0x1b')){if(_0x2401f9){_0x20a011['field'](_0x97bf('0x1e'),_0x17b409);}else if(_0x2bb0a4||_0x3361ff){_0x20a011[_0x97bf('0x1f')](_0x415409+'.'+_0x17b409);}}else{_0x20a011[_0x97bf('0x1f')](_0x415409+'.'+_0x17b409);}});return _0x20a011;}function getSqlClauses(){var _0x26d362={'default':squel[_0x97bf('0x20')](),'fields':squel[_0x97bf('0x20')](),'filter':squel[_0x97bf('0x20')](),'tags':{'clause':squel[_0x97bf('0x20')](),'ids':null},'user':{'clause':squel[_0x97bf('0x20')](),'skip':![]}};return _0x26d362;}function parseTagParameter(_0x26f6a9){var _0x28f344=squel[_0x97bf('0x20')]();if(_0x26f6a9){var _0x2e38f4=utils['getSelectedTags'](_0x26f6a9);_0x2e38f4[_0x97bf('0x1d')](function(_0x2ce570){_0x28f344['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2ce570+',%');});}return _0x28f344;}function parseSearchFilter(_0x59303e){var _0x23752d=squel['expr']();if(_0x59303e){var _0x4c9326=_0x59303e[_0x97bf('0x21')]('\x5c','\x5c\x5c')[_0x97bf('0x21')](/'/g,'\x27\x27');if(_0x4c9326[_0x97bf('0x22')]('\x20')[_0x97bf('0x23')]>0x1){_0x23752d['or'](_0x97bf('0x24'),qs[_0x97bf('0x25')](_0x4c9326),null);}else{if(qs[_0x97bf('0x26')](_0x4c9326)){_0x23752d['or'](_0x97bf('0x27'),_0x4c9326+'%');_0x23752d['or'](_0x97bf('0x28'),_0x4c9326+'%');_0x23752d['or'](_0x97bf('0x29'),_0x4c9326+'%');_0x23752d['or'](_0x97bf('0x2a'),_0x4c9326+'%');}else if(qs[_0x97bf('0x2b')](_0x4c9326)){_0x23752d['or'](_0x97bf('0x2c'),_0x4c9326+'%');}else{_0x23752d['or']('c.firstName\x20LIKE\x20?','%'+_0x4c9326+'%');_0x23752d['or']('c.lastName\x20LIKE\x20?','%'+_0x4c9326+'%');_0x23752d['or'](_0x97bf('0x2c'),'%'+_0x4c9326+'%');}}}return _0x23752d;}function parseAdvancedSearchFilter(_0x475cce,_0x21e13d){var _0x483b3a=getSqlClauses();var _0x4bc161=as[_0x97bf('0x2d')](_0x475cce);var _0x3bef9d=_0x4bc161['sqlOperator'];for(var _0x5ef9ce=0x0;_0x5ef9ce<_0x4bc161['conditions'][_0x97bf('0x23')];_0x5ef9ce++){var _0x7fce3d=_0x4bc161[_0x97bf('0x2e')][_0x5ef9ce];var _0x44b98b='c';var _0x1fee58=_['find'](_0x21e13d,[_0x97bf('0x2f'),_0x7fce3d[_0x97bf('0x1f')]]);if(_0x1fee58){if(_0x7fce3d[_0x97bf('0x1f')]===_0x97bf('0x30')||_0x1fee58[_0x97bf('0x31')]===_0x97bf('0x32')){_0x7fce3d[_0x97bf('0x33')]=_0x97bf('0x34');}var _0x1d64e9=as[_0x97bf('0x35')](_0x44b98b,_0x1fee58[_0x97bf('0x36')],_0x7fce3d);_0x483b3a[_0x97bf('0x37')][_0x3bef9d](_0x1d64e9[_0x97bf('0x38')],_0x1d64e9[_0x97bf('0x39')]['start'],_0x1d64e9['value'][_0x97bf('0x3a')]);}else{if(_0x7fce3d[_0x97bf('0x1f')]===_0x97bf('0x3b')){var _0x413d0e=_0x7fce3d['value'][_0x97bf('0x22')](',')[_0x97bf('0x3c')](function(_0x4f25cd){return Number(_0x4f25cd);});var _0x2d4c12=parseTagParameter(_0x413d0e);_0x483b3a[_0x97bf('0x3d')][_0x97bf('0x3e')]['and'](_0x2d4c12);_0x483b3a[_0x97bf('0x3d')][_0x97bf('0x3f')]=_0x413d0e;}else if(_0x7fce3d['field']==='User'){_0x483b3a[_0x97bf('0x40')]['clause']['and']('uc.UserId\x20=\x20?',_0x7fce3d['value']);_0x483b3a[_0x97bf('0x40')][_0x97bf('0x41')]=!![];}}}return _0x483b3a;}function parseModelFields(_0x874b20,_0x54a345){var _0x40340a=squel[_0x97bf('0x20')]();var _0x2d8ba8=_(_0x874b20)['keys']()['map'](function(_0x23b53a){return _['some'](_0x54a345,[_0x97bf('0x2f'),_0x23b53a])?_0x23b53a:undefined;})[_0x97bf('0x42')]()['value']();if(_0x874b20[_0x97bf('0x43')]){_0x2d8ba8[_0x97bf('0x1c')](_0x97bf('0x43'));}if(_0x2d8ba8['length']>0x0){_0x2d8ba8['forEach'](function(_0x41abf2){if(_0x41abf2===_0x97bf('0x44')){_0x40340a['and'](_0x97bf('0x45'),[][_0x97bf('0x46')](_0x874b20[_0x41abf2]));}else if(_0x41abf2==='Contact'){var _0x40cd23='%'+_0x874b20[_0x41abf2]+'%';_0x40340a[_0x97bf('0x47')](_0x97bf('0x48'),_0x40cd23);}else{_0x40340a[_0x97bf('0x47')]('c.'+_0x41abf2+_0x97bf('0x49'),_0x874b20[_0x41abf2]);}});}return _0x40340a;}function parseQueryParameters(_0x67a217,_0x1f9a71){var _0x4285db=getSqlClauses();return Promise[_0x97bf('0x4a')]()[_0x97bf('0x4b')](function(){return parseModelFields(_0x67a217,_0x1f9a71);})[_0x97bf('0x4b')](function(_0x1f72dc){_0x4285db[_0x97bf('0x4c')][_0x97bf('0x47')](_0x1f72dc);return parseTagParameter(_0x67a217[_0x97bf('0x4d')]);})[_0x97bf('0x4b')](function(_0x1d3ecd){_0x4285db['tags'][_0x97bf('0x3e')]['and'](_0x1d3ecd);return parseSearchFilter(_0x67a217['filter']);})['then'](function(_0x53b7f6){_0x4285db[_0x97bf('0x4e')]=_0x53b7f6;return _0x4285db;});}function checkListsRestrictions(_0x3aab0a,_0x495392,_0x2051f1){var _0x163b69=squel[_0x97bf('0x20')]();return Promise['resolve']()[_0x97bf('0x4b')](function(){if(_0x495392['search']&&_0x3aab0a[_0x97bf('0x4f')]===_0x97bf('0x4')&&!_0x2051f1){return _0x3aab0a[_0x97bf('0x50')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x304f7e){if(_0x304f7e){if(_0x304f7e[_0x97bf('0x23')]===0x0){_0x163b69['and'](_0x97bf('0x51'));}else{_0x163b69[_0x97bf('0x47')](_0x97bf('0x45'),_['map'](_0x304f7e,'id'));}}})[_0x97bf('0x4b')](function(){return _0x163b69;});}function buildContactsQuery(_0x4b373f,_0x2b8364,_0x124054,_0x26d30e,_0x5d911a,_0x28c6fa){if(_0x2b8364){_0x2b8364=_0x124054['attributes'];}_0x4b373f=addFieldsToQuery(_0x4b373f,_0x2b8364,_0x26d30e,_0x28c6fa,!![]);var _0x198a75=squel[_0x97bf('0x8')]();_0x198a75=addFieldsToQuery(_0x198a75,_0x2b8364,_0x26d30e,_0x28c6fa,![]);if(_0x26d30e||_0x28c6fa){_0x4b373f=applyJoinClauses(_0x4b373f,!![]);_0x4b373f['group'](_0x97bf('0x52'));if(_0x124054[_0x97bf('0x53')]){_0x198a75['limit'](_0x124054[_0x97bf('0x53')]);}if(_0x124054['offset']){_0x198a75['offset'](_0x124054['offset']);}}else{_0x198a75=applyJoinClauses(_0x198a75,![]);_0x198a75['group'](_0x97bf('0x54'));if(_0x124054[_0x97bf('0x53')]){_0x4b373f[_0x97bf('0x53')](_0x124054[_0x97bf('0x53')]);}if(_0x124054['offset']){_0x4b373f['offset'](_0x124054[_0x97bf('0x55')]);}}_0x198a75[_0x97bf('0x56')](_0x5d911a);if(_0x124054[_0x97bf('0x57')]){_0x124054['order'][_0x97bf('0x1d')](function(_0x116a3f){_0x4b373f[_0x97bf('0x57')]('c.'+_0x116a3f[0x0],_0x116a3f[0x1]===_0x97bf('0x58')?![]:!![]);_0x198a75[_0x97bf('0x57')](_0x97bf('0x59')+_0x116a3f[0x0],_0x116a3f[0x1]==='DESC'?![]:!![]);});}_0x198a75['from'](_0x4b373f,_0x97bf('0xc'));return _0x198a75;}function getFilteredContacts(_0x36af27){var _0x447a3e=[];return db[_0x97bf('0x3b')][_0x97bf('0x5a')]({'attributes':['id',_0x97bf('0x2f'),'color'],'raw':!![]})['then'](function(_0x3eb607){_0x447a3e=_['keyBy'](_0x3eb607,'id');var _0x109d74={'type':db['Sequelize'][_0x97bf('0x5b')][_0x97bf('0x5c')],'model':db[_0x97bf('0x5d')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x97bf('0x5e')]['query'](_0x36af27['toString'](),_0x109d74);})[_0x97bf('0x4b')](function(_0x3b7a47){_0x3b7a47[_0x97bf('0x1d')](function(_0x2f3ee1){if(_0x2f3ee1[_0x97bf('0x1b')]){_0x2f3ee1[_0x97bf('0x5f')]=[];_0x2f3ee1['TagIds']['split'](',')[_0x97bf('0x1d')](function(_0x46b6e6){_0x2f3ee1[_0x97bf('0x5f')][_0x97bf('0x1c')](_0x447a3e[_0x46b6e6]);});}delete _0x2f3ee1[_0x97bf('0x1b')];});return _0x3b7a47;});}function countFilteredContacts(_0x399064,_0x1a98b2){var _0x21c906=_0x399064[_0x97bf('0x60')]();_0x21c906[_0x97bf('0x1f')](_0x97bf('0x61'));_0x21c906=applyJoinClauses(_0x21c906,!![]);_0x399064[_0x97bf('0x62')](_0x97bf('0x52'));var _0x2ca71f=utils[_0x97bf('0x63')](_0x1a98b2);if(!_[_0x97bf('0x64')](_0x2ca71f)){_0x21c906['where']('t.id\x20IN\x20?',_0x2ca71f);}var _0x145d07={'type':db['Sequelize'][_0x97bf('0x5b')][_0x97bf('0x5c')],'raw':!![]};return db[_0x97bf('0x5e')][_0x97bf('0x65')](_0x21c906[_0x97bf('0x66')](),_0x145d07)[_0x97bf('0x4b')](function(_0x2d00c2){return _0x2d00c2[0x0][_0x97bf('0x61')];});}module[_0x97bf('0x67')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery}; \ No newline at end of file diff --git a/server/components/encryptor/index.js b/server/components/encryptor/index.js new file mode 100644 index 0000000..08d64f5 --- /dev/null +++ b/server/components/encryptor/index.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0xb807=['base64','decryptString','crypto','lodash','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','filter','indexOf','encryptFile','createReadStream','createWriteStream','createCipher','data','binary','write','end','final','close','unlink','decryptFile','createDecipher','update','encryptString','secret','utf8'];(function(_0x25680f,_0x49646a){var _0x135948=function(_0x4b6ebe){while(--_0x4b6ebe){_0x25680f['push'](_0x25680f['shift']());}};_0x135948(++_0x49646a);}(_0xb807,0x1bc));var _0x7b80=function(_0x3de8a2,_0x1c8615){_0x3de8a2=_0x3de8a2-0x0;var _0x267573=_0xb807[_0x3de8a2];return _0x267573;};'use strict';var crypto=require(_0x7b80('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x7b80('0x1'));var config=require('../../config/environment');var logger=require(_0x7b80('0x2'))(_0x7b80('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x7b80('0x4')][_0x7b80('0x5')],'algorithm':_0x7b80('0x6')};const fileOptions={'algorithm':_0x7b80('0x7')};if(config[_0x7b80('0x8')]&&config[_0x7b80('0x8')][_0x7b80('0x9')]){var isSupported=isAlgorithmSupported(config[_0x7b80('0x8')][_0x7b80('0x9')]);if(isSupported){fileOptions[_0x7b80('0x9')]=config[_0x7b80('0x8')][_0x7b80('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x7b80('0xa')](',\x20');logger['error'](config[_0x7b80('0x8')][_0x7b80('0x9')],_0x7b80('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x1781a7){return AES_SUPPORTED_RX[_0x7b80('0xc')](_0x1781a7);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x7b80('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0xdaa294){return getSupportedCiphers()[_0x7b80('0xe')](_0xdaa294)>-0x1;}function combineOptions(_0x4ee208){var _0x5a0e6a={};for(var _0x2ba638 in fileOptions){if(fileOptions['hasOwnProperty'](_0x2ba638)){_0x5a0e6a[_0x2ba638]=fileOptions[_0x2ba638];}}if(_0x4ee208){for(var _0x557ca9 in _0x4ee208){if(_0x4ee208['hasOwnProperty'](_0x557ca9)){_0x5a0e6a[_0x557ca9]=_0x4ee208[_0x557ca9];}}}return _0x5a0e6a;}exports[_0x7b80('0xf')]=function(_0x591386,_0x29295f,_0x40ff8a,_0x17e7fa){return new BPromise(function(_0x50ae23,_0x5cf2ab){_0x17e7fa=combineOptions(_0x17e7fa);var _0x55cb11=new Buffer(_0x40ff8a);var _0x38b118=fs[_0x7b80('0x10')](_0x591386);var _0x3ca82d=fs[_0x7b80('0x11')](_0x29295f);var _0x4280c6=crypto[_0x7b80('0x12')](_0x17e7fa[_0x7b80('0x9')],_0x55cb11);_0x38b118['on'](_0x7b80('0x13'),function(_0x365da0){var _0x27f924=new Buffer(_0x4280c6['update'](_0x365da0),_0x7b80('0x14'));_0x3ca82d[_0x7b80('0x15')](_0x27f924);});_0x38b118['on'](_0x7b80('0x16'),function(){try{var _0x683431=new Buffer(_0x4280c6[_0x7b80('0x17')]('binary'),_0x7b80('0x14'));_0x3ca82d['write'](_0x683431);_0x3ca82d[_0x7b80('0x16')]();_0x3ca82d['on'](_0x7b80('0x18'),function(){return _0x50ae23(_0x29295f);});}catch(_0x5268c4){fs[_0x7b80('0x19')](_0x29295f);return _0x5cf2ab(_0x5268c4);}});});};exports[_0x7b80('0x1a')]=function(_0xf31925,_0x350abc,_0x4e602c,_0x3c77f5){return new BPromise(function(_0x3ccf7f,_0x1d6505){_0x3c77f5=combineOptions(_0x3c77f5);var _0x5b5eb3=new Buffer(_0x4e602c);var _0x4e5bb3=fs[_0x7b80('0x10')](_0xf31925);var _0x359f0b=fs[_0x7b80('0x11')](_0x350abc);var _0x3c0598=crypto[_0x7b80('0x1b')](_0x3c77f5[_0x7b80('0x9')],_0x5b5eb3);_0x4e5bb3['on'](_0x7b80('0x13'),function(_0x55f5d9){var _0x2f1e6f=new Buffer(_0x3c0598[_0x7b80('0x1c')](_0x55f5d9),_0x7b80('0x14'));_0x359f0b[_0x7b80('0x15')](_0x2f1e6f);});_0x4e5bb3['on']('end',function(){try{var _0x3415b0=new Buffer(_0x3c0598[_0x7b80('0x17')](_0x7b80('0x14')),_0x7b80('0x14'));_0x359f0b[_0x7b80('0x15')](_0x3415b0);_0x359f0b[_0x7b80('0x16')]();_0x359f0b['on']('close',function(){return _0x3ccf7f(_0x350abc);});}catch(_0x5c6de9){fs[_0x7b80('0x19')](_0x350abc);return _0x1d6505(_0x5c6de9);}});});};exports[_0x7b80('0x1d')]=function(_0x243f15,_0x5aa07c,_0x1715b6){var _0x2fb3eb=_0x1715b6||stringOptions[_0x7b80('0x9')];var _0x2f40f5=_0x5aa07c||stringOptions[_0x7b80('0x1e')];var _0x48792f=crypto[_0x7b80('0x12')](_0x2fb3eb,_0x2f40f5);var _0x449a75=_0x48792f[_0x7b80('0x1c')](_0x243f15,_0x7b80('0x1f'),_0x7b80('0x20'));_0x449a75+=_0x48792f[_0x7b80('0x17')](_0x7b80('0x20'));return _0x449a75;};exports[_0x7b80('0x21')]=function(_0x4e8a42,_0x1bd9c7,_0x49e3f1){var _0x142720=_0x49e3f1||stringOptions[_0x7b80('0x9')];var _0x1fd23f=_0x1bd9c7||stringOptions[_0x7b80('0x1e')];var _0x387792=crypto[_0x7b80('0x1b')](_0x142720,_0x1fd23f);var _0x2db423=_0x387792[_0x7b80('0x1c')](_0x4e8a42,'base64',_0x7b80('0x1f'));_0x2db423+=_0x387792[_0x7b80('0x17')](_0x7b80('0x1f'));return _0x2db423;}; \ No newline at end of file diff --git a/server/components/export/csv.js b/server/components/export/csv.js new file mode 100644 index 0000000..bb65ae6 --- /dev/null +++ b/server/components/export/csv.js @@ -0,0 +1,18 @@ +// ************************************************************************* +// * * +// * xCALLY Motion - The Omnichannel Contact Center * +// * Copyright (c) Xenialab s.r.l. All Rights Reserved * +// * * +// ************************************************************************* +// * * +// * Email: info@xcally.com * +// * Website: https://www.xcally.com * +// * * +// ************************************************************************* +// * * +// * The SOFTWARE PRODUCT is protected by copyright laws and international * +// * copyright treaties, as well as other intellectual property laws and * +// * treaties. The SOFTWARE PRODUCT is licensed, not sold. * +// * * +// ************************************************************************* +var _0x8821=['writeFileSync','zip','zip\x20finished','CSV','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','util','path','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeCsv','then','sequelize','query','QueryTypes','SELECT','num','length','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','join','mkdirSync','%s%d.%s','csv','%s.%s'];(function(_0x269a48,_0x88b5d5){var _0x4d849a=function(_0x5d532c){while(--_0x5d532c){_0x269a48['push'](_0x269a48['shift']());}};_0x4d849a(++_0x88b5d5);}(_0x8821,0xc1));var _0x1882=function(_0x11309c,_0xe18a74){_0x11309c=_0x11309c-0x0;var _0x3fea9c=_0x8821[_0x11309c];return _0x3fea9c;};'use strict';var util=require(_0x1882('0x0'));var path=require(_0x1882('0x1'));var _=require(_0x1882('0x2'));var csv=require(_0x1882('0x3'));var fs=require('fs');var BPromise=require(_0x1882('0x4'));var zipdir=require(_0x1882('0x5'));var rimraf=require(_0x1882('0x6'));var db=require(_0x1882('0x7'))['db'];var dbH=require(_0x1882('0x7'))[_0x1882('0x8')];var logger=require('../../config/logger')(_0x1882('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x1882('0xa')][0x2]);var QUERY=process[_0x1882('0xa')][0x3];var PATH=process[_0x1882('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x341deb,_0xce9204){var _0x1df330={'status':_0x341deb};var _0x39cded={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xce9204){_0x1df330[_0x1882('0xb')]=_0xce9204;}return db[_0x1882('0xc')][_0x1882('0xd')](_0x1df330,_0x39cded);}function main(){var _0x559e28=0x1388;var _0x39b505;logger[_0x1882('0xe')](util[_0x1882('0xf')](_0x1882('0x10'),EXTRACTED_REPORT_ID,'CSV'));return db['Setting'][_0x1882('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1882('0x12'),_0x1882('0x13')]})[_0x1882('0x14')](function(_0x43d9bc){if(_0x43d9bc){_0x39b505=_0x43d9bc;_0x559e28=_0x39b505[_0x1882('0x13')]||0x1388;}})[_0x1882('0x14')](function(){return dbH[_0x1882('0x15')][_0x1882('0x16')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x1882('0x15')][_0x1882('0x17')][_0x1882('0x18')]});})[_0x1882('0x14')](function(_0x1ccd77){if(!_0x1ccd77[0x0][_0x1882('0x19')]){return analyticExtractedReport('Empty');}var _0x31c3e3=[];var _0xed86cb=0x0;if(_0x39b505['split']){if(_0x1ccd77&&_0x1ccd77[_0x1882('0x1a')]){var _0x5f4967=_['range'](_0x1ccd77[0x0][_0x1882('0x19')]/_0x559e28);var _0x421aae=Number[_0x1882('0x1b')](_0x1ccd77[0x0][_0x1882('0x19')]/_0x559e28)?_0x1ccd77[0x0]['num']%_0x559e28:0x0;_0x5f4967[_0x1882('0x1c')](function(_0x34b2ef){if(_0x34b2ef>0x0){_0xed86cb+=_0x559e28;}_0x31c3e3[_0x1882('0x1d')](dbH[_0x1882('0x15')][_0x1882('0x16')](util[_0x1882('0xf')](_0x1882('0x1e'),QUERY,_0x559e28,_0xed86cb),{'type':dbH[_0x1882('0x15')]['QueryTypes']['SELECT']}));});if(_0x421aae>0x0){_0xed86cb+=_0x559e28;_0x31c3e3[_0x1882('0x1d')](dbH[_0x1882('0x15')]['query'](util[_0x1882('0xf')](_0x1882('0x1e'),QUERY,_0x421aae,_0xed86cb),{'type':dbH[_0x1882('0x15')][_0x1882('0x17')][_0x1882('0x18')]}));}}}else{_0x31c3e3[_0x1882('0x1d')](dbH[_0x1882('0x15')][_0x1882('0x16')](QUERY,{'type':dbH[_0x1882('0x15')][_0x1882('0x17')]['SELECT']}));}var _0xf7949c=path['dirname'](PATH);var _0xc9be91=path[_0x1882('0x1f')](PATH,'.csv');var _0x58f617=_0x39b505[_0x1882('0x12')]&&_0x31c3e3[_0x1882('0x1a')]>0x1;var _0x625196=[];if(!fs['existsSync'](path[_0x1882('0x20')](_0xf7949c,_0xc9be91))&&_0x58f617){fs[_0x1882('0x21')](path[_0x1882('0x20')](_0xf7949c,_0xc9be91));}return BPromise['each'](_0x31c3e3,function(_0x22e56f){_0x625196['push'](_0x22e56f);})[_0x1882('0x14')](function(){for(var _0x42185e=0x0;_0x42185e<_0x625196[_0x1882('0x1a')];_0x42185e+=0x1){var _0x18eb85;var _0x46a971=_0x625196[_0x42185e];if(_0x58f617){_0x18eb85=path['join'](_0xf7949c,_0xc9be91,util[_0x1882('0xf')](_0x1882('0x22'),_0xc9be91,_0x42185e,_0x1882('0x23')));}else{_0x18eb85=path[_0x1882('0x20')](_0xf7949c,util[_0x1882('0xf')](_0x1882('0x24'),_0xc9be91,_0x1882('0x23')));}fs[_0x1882('0x25')](_0x18eb85,csv(_0x46a971));}})[_0x1882('0x14')](function(){if(_0x58f617){return new Promise(function(_0x35f499){zipdir(path[_0x1882('0x20')](_0xf7949c,_0xc9be91),{'saveTo':path['join'](_0xf7949c,util[_0x1882('0xf')](_0x1882('0x24'),_0xc9be91,_0x1882('0x26')))},function(_0x3a6951,_0x37f8e2){rimraf(path[_0x1882('0x20')](_0xf7949c,_0xc9be91),function(){});_0x35f499(_0x1882('0x27'));});});}})[_0x1882('0x14')](function(){logger[_0x1882('0xe')](util[_0x1882('0xf')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x1882('0x28')));return analyticExtractedReport('Completed',_0x58f617?util[_0x1882('0xf')](_0x1882('0x24'),_0xc9be91,_0x58f617?_0x1882('0x26'):'csv'):null);});})[_0x1882('0x29')](function(_0x5365f8){logger[_0x1882('0xe')](util['format'](_0x1882('0x2a'),EXTRACTED_REPORT_ID,'CSV'),util['inspect'](_0x5365f8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1882('0x2b'));})[_0x1882('0x2c')](function(){process[_0x1882('0x2d')](EXIT_CODE);});}main(); \ No newline at end of file diff --git a/server/components/export/fonts/arial-bold-italic.ttf b/server/components/export/fonts/arial-bold-italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..00968d29b6efa0c1068fce29ce3ae87ae0f595dc GIT binary patch literal 226748 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

qkjxgdh5XP^WjJ4G7PM3{meP8n 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 u_&cEI7}ADpPkySAnA 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 literal 0 HcmV?d00001 diff --git a/server/components/export/fonts/arial-italic.ttf b/server/components/export/fonts/arial-italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b05d353598de439996a111aebd310450b4005c4 GIT binary patch literal 207808 zcmeFa2bfjW)%d;kIk)$@Q>k-d0FmBAK%_{CiUI;65DUXFz$h>{Gc;pCqtRd^Y7}dX zVnd??HbkSu7<+F~LB$%oXzY~x{nkGB4g;8I{_p!d-}C>zoHJ{kz4uvr@3mLk`?Nb^ zM5GAhlVKw#9`uW^YgT_OZb^|y@hyi;nt0%GmlyRG8M;iw-7s!q&puaNe8Ej3=22=* z9zWucNu8b@GE&^)P2~Ge9(m}L@uwWSMP$S>KeZg=dBEB7u`cW$C;>`{uiQUUN)x@YkUh zAqqsUt$XkRJ>L1)^_OgYef#Xt4Z*GAFivA@(49zd$d0ixBD8_?V?sAbI|*uy{N~=L zH12(%p)yVU)J{oHIh^jg(63A0xM!IaoDu(J{=U-Iw6e!(?sGEBNr(JSG~ja_C+zq{ zB4_5?)#IVH^J{56lilWjVaE}sZ*YiNJ50<2Z+@GjawSCj1!A&UdJ;LtcLG>bB0DVB zw2_Dz!co(X#QdM-(yq+)Z^)&6QWofzOZ%nFzb%&zNbA7JTskNZ1*YfHA?Xxs%%#J! zJpM{99q~PAd)B_9G9xh~S00mDiHCCOc;Jp;hg>=#M<%9{+suq>BONRQH1aAJI_-9+i(xwKDOmL6o&Y6XeX+FV-8t86-; z@-O{uE{)7f)k2IfXv_bYOKbV>ZCbS(EB#9@t>t&xG=7+qvhk^{s(!Vdu+pPnFYW2q zOMCkD(w=_3w5MM$?djJ`d;0a#o_@Wwr(ZAa>DNnp`t{PDe!aA(Urk5gEibDGF)c5v zDCI?^-q@p*XL4hYQJyM&)s7`bdF#@rY&t=CsPyYx+DF|FZ91jxmxXg_ZGXE>7uxcQ zT$=K-QkyQKJeKRXi1za`FShjiTbg3!v#hsGm)Pur|ba&g% z=ee}D^Nyy8olWv54ZUZpp=RSE-88OPGkVfZ^s#1oA?@j9k}Q=4QZ2KjQmQy+zx4LPcej38G>4aJp|*I0@SC3C6YgSsPadFB7GrJnHMah8#Z^f6Z!HuY9d z+Xumy*I#cL$lgo3i=Sw&8!)d7oO6{r2N}_>WO|IrVDK%{Pwisc+IOCR1iy#6b5lF9R!r)!|iYFgKE zRp;7PZnb0~Tr9P^+G%gKRxc_QPkRlPQ?;{sxmx)is%(ALqK?TMnMz<5w5s2oQkVs$ zw&s=Yl&d#-9icZ8&Ci5Zb33)Fxuv%Dzp{zE=hQciMSGfOrR!OS*J7<4m*ZCTu2R%7 zs4b|E?UeaUYF1)lTI$tbjMUXGR5L37x#(U;-2hDn${H)Roh{@!QW>bOJnK+xs;zi- zrR{mGSJIkB0M8oLtEzJ&X>Q$~gguL_mL*n3>NU!Z+NNrv4z9eIpnYa+Oi?*_6nP8U zHQwkrnvYMpQfbVvEvPos#+%z_wH%M!@{(2C&fCBCsJ5+=@ObpRw}HHBcQ$7{t*iXK z7^c3Yp6q#(_NKPEGqQPS)putDC)oO)&8a1NScw(w5v4QW8SOw-lgT{E$y_E?z{AGC^3BJxm#&>5-obMLM2*< zN96r^lC|v29^?6`87D(4I!2Y4=lPz!czVvqp~IO&GBTb%)!#ZC_ITRw`Ci86}(aQOu@%_#Omfw9oXC1OEG z>3LFqM&0SF`EoD9dfN8vLuvDJ+Fjo&Q}w7?WT3KLKo3ftA5VU^$lKrydv+=G3!(D* z)S1h(JWqByA81_nJjvt7lkGfYljp>XEovp|Gb%IfRk^5U&&TT?lupg{rjbYc(H3S{ zOH?g+eX6GN64*6Ds1JK_eKGa5^$g(6R34A&Z(6Q1sTXTzkyl^&F?-5K2$h&OCwZ;x zoc;Ff&+}++UYLR8R2mwUJZY*2dZW@c!tNT{%gW62xxAz_g7o+itJt$=PbMnsMT}lo zL6!9C#aEq!Rqoy#@?(9g^bd!-opV55^E-9nMLf^ebxf)gZ)VY6HIAudb^W8d*7@Y8 zbgpxf+M+k_dr>UkuX?{qGatjeIIi<;ewC)N(4$uS%iC>!_Q+ewzmk-4r*lqTL*7Vs zwzn9&(72<~VrP`!Idkl!tR)7_hl2(1pb}S2Xz$*5JieM+w?;JeJTDr1>%j%K#Iv{` zvmtNJ_H?}ah<4h?LC8KY6I}u1y+|djJ?ea@7L}K2el4n=SqDv?=bd9~F7KT!>-aP- z%(b?y9<_+N8Vh%>Eq;#ny?(sNtUP$@lU--=d}Q8z)EXO9?>kr1>eYLC)lQA6l`3^! z)+(!f>p#uyPATv1x7w;oIKLLzl_Ssp)q(~!`LWJ2!=djEbd~|qPxh6)N$<;*$pA`w zQPPV&%zn6x$x-&=Y;Vr=Bd_Uwr7xhh`pZ7d#|k=s=rv3Oqa4INs-EaX_a1gV(0u;y zVP!FIk0_L%Cp1otwBD)l&a-827WBN@<9-72oMF#rn7{OlT86jkSO4^8QnezD461>N z;GOe^&JubxHbDCPhkW<6^z-PeCu3`X!%B|THdimlkjt;ldo)r0XOj7;9`uSuuVr=q z(Ai&GSAPD_d&$rBJ!z$R>}+a#($WRhvns2qGdE=>&8g1l&BF$YG9zm17Sz^NHq_M4 z&n%c*)gv>qvZ3-PhX{>I=QmW()1K;aWoqb!8@e;AtE%hkYwPMWmGft2 zDrtXV)tpRCuBn>&nTCb)t22vh8s<>Fnht7bYHdx=t)vg?SHeubtYLBW{DzupsH;dU ztXtY6W93%6sJgC_;WgA%S2oP!lvb!($Pnwbv-;XuuxVMCwQ%lSl9pGxpT|AuOwIh6 z3+o%~Q0p6(&aG}P2~|$L_EKFpuVy~NfUx#Bnyo|>RSW5eF~IH2n#$R=dVcYo8b&y$ zdhP-wQk$7wv#8nS3P%W zhOyOS3Gg+ma$XGuDxjR*)aUxEqQ;Es%)c#a7 zDi^>SBr{>Lp{8CNRy8lEtDRSCZLmk)pa*$Fn@~M_;oQo)%s~y6b8D&wO{Th9c%L2v zdu2KwT2ob5tE$@DBld`Fy1SP?bdt^8n3+_ERm`ibJ5FWs?;M9w&c-~eu|(xsHFfyJ z%=pTNOsCAGLo?%M&FW!UuAW<8y?72}J;sikbkOL7Mhu^H(73UgaicSb95iCo*omVu z!+$Yh)Tl#8jhz&a#3PgDprpJG)WWo3hK)QLtbX$2&ft@^v+F7s%voytQMXVD&RCjR zTDwqdR;lg6-NN}ZtzBX*n3}bCtfdA!hrDujT{XrqzoAEFD%IvxVpO#=)G4XiunRLP zz{P5u)i@O`&aA1cu4=$)W}%gx0Y(j?b~c^_iFLoGdMFxSn6a>dreU)d|3t|70qs?v zX9~Ay5=B#GwcX63%DD?GXJD_D_1IhU+C4Id&$k|+gSVq#OgZJ?ER~u11=UqGvudjH zo$MTW1}WnEn3&eBoH?^bEesp4vmvdU7S~zXs(YwNnlm-GW?qdBh)yis;@Z07>OGUU z&S48{7ZYq3&X`+MKS%pPPoB8vVfMsjRJ8zkSXanNXxEOcJPw*=8MK4bSa|%xYQiH% zP86-;iCJz0bveE*as8ayg>z?OtBY!?7h7A}L-CdlO;!_6axShm*EB}hvSGTap-EMC zV3j$pb1`)fdr}qVb(_gWkz7OcQ`s;`2@an)JkveXc|gB?_s;CwdqDSI{d)BZhYue^ zVXxl3`}G6w+jrm0zWw(ZxX-|NWKKiFfWs ztJA#3m}YI&(xTotZFb(h+P&Ak#l79V$6eFBoLdrlfujo!@A9Bo9T{m3<4nUY^dngC z+KOz~^t7#<1 z?NVdB)S60`Xp2}R?$U={*6O9&M>f@*<59GA0=(+7(r)^+Q=zr@gfO^GpSXyG9q|P> z>jPLa`qcPjbBa0NTwwla8qFq?b*4IxIFC86yT*0huv_7t>@IiDasTK(?Th)w`Hu7* z(>F6HGdMFO zGcr?~IVH0yb3^8qcK&vS?Mm9UZ`Y|^k9L#V9o_Et?QU%Ev=6jTwokV&Zr`$fdHcQF zcWr-Q`^xs!6;4H}qFqPn=yZ&AOm!^kSk|$1#||C4b?n!1aL2hFmvub7<5?Zg>3Cts zKX$yO$vPTo>2=c`m3!3t~R%sr_2vX;9(^2iYrYLI2{R`=U(eGzJ%{E-_gDm zzKeaA`L6NZ>Rab~#rJ`~(SNW1S^t){%i3O@iDe2irI`#8=z;|LWCrFWa4ZtI77480 zMFJDs{j%MPCJ7WEffnuC<|Ht^{Y)!?%)gMp_$CRg=y-L<)lCw390|OF1O_!ppt{qs zADAs>i*Ktz0$sKaKmxGNutOnuA#~ za}U_P3t8XRz=;pS>=^l5Vc9DYHM6aaoYXE#I z{Hx7+-=sGxJj6M%zBeFDN|t5vRU3T zg{H{dYwk0}ro^0M{%r0y510++FXlm0YRcp`X*4ZNOY>LrkZEOFn>MDc`I~uIzLy{5 zZF$F(n~Z5^+M7qrqvkR5xOu`nNi2HWRG1E?qv>RxG0&Rk%=6|2^P;RbdzsE=Z_`EI zmG{g`^0K@sugYt(QQnZh%j@QIT>T4T`IqLO<}34!`PO`AzBfOZu4b#*X11FhrWQ_hnC?#0i8*m6;Ut}uQ{beXLZ`^|aEhH0)6?{FN}V#Nh11e$ z<+OI%IBlJBC*z#sv~${<-lmUJVfs29oQ_T>XD_F-v$xa5>FS*2{MKFNUgr*Q2fBmY z{oKLs{_YTWs5{IZ?jGQda7VhM+|lkY+ymW%+=JaQ?ji1>?pSx6JKjCao#0M%C%K2a zliefSDehEvn)^%lNcSlBX!jU*x?AbaaI4&zZnZnho$bzXYusbqn?DQ zckA4Gx4~WLE^-&UOWdXI3GT1l6Wx=T(@t@hxu?3PxxaQ#ch7Kt^U{Z9yfR1{MrS_*VQ*H zT(o$}(i47l;z=i;vh38;etr5Gzd7@)-!4Dy!qc%&VN@q|6S$$ca_r=_Wrxd`R^*{ zzpI@853O=?p3S@ZTqiVv@v-*l$C76yA1MHSuBL)#iG*4M7jXZh4ETVz+NS`|@{On=caQ+Ac9bBsrc>3b+O=fHuwbVIg&ko);-$EmblZ_)etsM1bqMvKb;R_>Q1e zTfN=FyZ@YTJB{xc=p!>hq#bRxKUSn-nMj9TA|0XYGzs`bWbeyFx*j6ZjePfmMS8r# z_XP)t^xh!ShwHVzi$wa3=5vK2k$t(U8~`r^e-If&--8(2ezd&dC7@eRexe0y=9$dT(sj`~dGXvT63d`vF`;C(u6O}`O%O{6jcAj8UY z0P0jS))`%ZBZ2dP2LalsLKanH0ot#EuIeL^nUu{$CNob4?f~8usiu!=#!^k)>W76_ z_km%+Z-6I7W;cq==_gXd@z^g#=FS3WZ{7fr`4@;R;N0<#iqx$YsV@NuC47qk+o+WO@BMksILghKEFMq>USw0F>PXFRLkE zP5I4-032_D|35tlY!kV)2QVGDSmZXJNFy|B9tIfG+5sZB!}}fda|h?|yh!A(!6J7f zpS!7h53;&s;TL&QDhsi%Y9-#e)srT^PB9A;P^5_PDHXiE-(B@++f#*dYhp)%s z_wl*F6~N=d?F^s~Fax+i` zAo9Y)A}_8JdFfV>mlufqoi_izTI3aYdUY~zvdC-5XA}9?+XFLzYkwFCwM(*VZ*HaxwJeBb_3|7=U|`?xC(e2 z*dg*RGJSUvupGDppzrrefMLL~0JQHtE%Lqtj0P3~tAS5M{*eJD0F2=uj{@-c0sVh) zGVqYdhn)X#FaWO~HUKMtTSPvF&rd%R*#e(iXm1PUTPWW`8(ZELZb1P@0v8Lno`A{Tt&H*;? ztw~!k{*}O^zz0EyEC4P8Xeau=081pJjZZRCXQ!k7cymg7LMO1e^}s0q{jq%htdl0Cii!4|AbueZ81A zM~W#YouOWP`0qe_9WD~nu?XN?ClRw3Ut4u95wmwc;0-Zd-WJm>Ag23h-~?bf!1#L% z1I7c>0c6r+8NhgZ4gtmjM+2LHPsH@P1-MU4@A<&V0Q~p9N=#qc?Uw);b3fYdw;Fgw z%swH2_V-yNrvGL!`)&|3;50DyiCkd^mX(@Vva$d)A>TJ65eNE4^`x=z7sQ(F;~AK zX4czcX0HPt6~laMj)nHvhk7;At5=o!SK$ zB<3{a@ay$r&S(uB0?^KH9v5@w#bVB)&$DQ6`E)U7GxoDNcTOi@8SuWCbK&{iBLT*6 zE@NZPHs`_9c~=0maUL=~Ux3yCeVq?K=U)WC^NJ#Xx-0GgHi`Ki?f(uL|86BfTNg|N zmH->XT$lkE&xNEf!agp7&x_6jc8K{sa{B#UVlJlri%$mV_ma-QT;MY?E9rA3eXgYL z%1^{x8UY3XR{`{U*-QZ4T@K%uQ}+taUvaCLD{1#Cc)aQrF@G2WPYwAWJS+I3=9!ON;!#9TKRpr7k|0C$MFf$`ozA2%KdaQ-IfZ~8*2EG#WQUGAw zFEO5%7~e}jhE0?@qqikQuu+uR3O1i;^B_hnS>hzF7bkg* zIH^Ycrk(rt_XUkH!9XD3_k#k#p#C*&LEQp<^qikW*ML88VIb%al8gDz_fw|l1A&BA zZ4($6OZIvr&@Rv~5GVA|keve_iZUQL;HUQuh)x`n1%U()&#!!s*3Kab|Jn$WGqG9JXWXyIjk zHl{)!wia3uM%a3LbzA%~O_4U2=ZIt*cAM{-wfjKIlJE-mhR1wxYIp{y6?8xUN|T7` z8OqMTQg#>ut1AYsa)ZZe1KRaIaWr2og%F zWV>u|t`y9^P7&{>ZtX zC>p5d^mF#E1G^3kwrjqJ>DAj~fmom?9C*7wVfTR2>ltqswu&xrQ)mjU!j&;=5k?=% z@mh)H)bF|~LVnla6V~Q~1Q%OeB1PFBq*O}4Wfr%PQqnD@4BSdufLmMKMp|XRm$uRxTrO?E z8Sr<~PTGRoOF6iL-+lN_I!HTkM`@q^mUl!dzFR{ca_fIZWec! zy|Z8Q)_E6jPw5KoCEdWir8}4}^uT?kCzx*uvj61k0LA^KH+Wy^10EoK!2>NGB>hP5 zC;Mc-l)=&;yuZamWM9%lWdL}X?3ew57poK>AcM18cztbu(j#REc$CGXWhmvpkYV5h zWjOdC@aJ-{8~`38Bfy8qDDa^&8a&qGaqY zA>he!X!a91LdJrp$T;v+84sRj@h{~t(nrcf@KG`ee6+>K$l=+KWV##yu9PX@85UQ` z)a-}6VKEI{Ex!cMk|V*hEuJGsk*<-W!NnG6T$4u-OlI$3pP}nVJ0u zZ(CG@>tq(V-eSHnA-zy)z>DNK@M4RX$lUDvyoWIle1gme|H|SMrIz$bvLO2&?`0eh zK1J%X@5(Z%2cIep;L~Iw_}8)se7ePF$YS0+`i(3BpD9bhXIcDP`4#Eqa$@#v-a|PF ze2&HE%E_e9lT)&9$@#Jjyu#w&$!Vl7kY8sv^Pb8X;EOE&z5Iss#d0S267ZX{(&9_y zx1=wV<>1TZZ15Fw4){uouaa}KZ^$3yeDKw>0{lnt>%8UiJMgt~0eF>MnBByaeZ|+y zMc^CcV(^V}3HT<9SIbJ$H_N5jjl3Uo8Td~Y-zt}rzD=$KH_BDuH5RXxKV)C!{er8( zcgQv1JLOvNT^8Rht4Obt>$0!NJ#syGy~X#+4W#dr8^M2;o51(WYVZScbN27DL2d#6 zMg9bS(Bi+!t=X4(gWmmU@S}1&_%XQy{J7i+enRd7KPh)-U*tWW zb>OGv9`G|3KP&4=KPUHQU*LV7`@k<){G$9h`@Fm)4}f2m4PbZyzaoDDzbX%ApOe?* zui%XqZ<4=}eqA00zafugpXGfP#hc|(@LTdY_-%Ot{Eo%%%9Etulc%!J$ouki_G#WQ zdItP~#UIMEq(749vQP1L(F@>DEdEqpB>kDZ1pZuJ25+(W3;8?gFXdJ6KjpRTlk%0t zU&}_)-^ixy6Y{ORo_(D6fZhOqFK>c>kj>z&@)mfT#oOg=(mUiGa8}+0|KAnUHL`ak zvTID&$iA12>^o!nw>GAKOHAL3v)wH2ZX^4T#dMAAeQad!Ya@F|YVn zdxJHmfAt^5^g%@S;i6b$`WOEqrhj2$`WH5)e_><#78}#I*qFY>#`G;eJEnhTWBO+{ zrhjH*`lmLge`;g;r#7a4YGeARqA~qb8`D4CBc^|BWBSK7rhjZ>`p3L8HUqjWBL;|raxh0`V%&$KVf6~6E>zl!5gG+ z6a6)&Kk+~1wI{gK^PJiKNuhXBi>-6XBI{i7jPJizIXr2DFU8g^7 z*Xd95*7S?4-*uh-v|Xn^{U5H=|KpgxX3{Cc3!LlaHsAr^bHFFPz~g{p09S@N*RMUl z@33_oj?-+@D$M7KU*sHJ7t-5{G63wr=z0V*o-=(*g z@6fT&DZ^9FDxMgBZgCRa6Br7d0{G~B)$PS?ylUYht#aV|Tx+qV z=MDBx%_r<1vwvhh;(eoTM#}XLUaH&->t=?P^NB>*MA!B!|J^zh9ky@3@*bHH<$Zv@ znO~H5<5&*-s>^}p-GO#pMwai(*EmMPys{pW(o*h~r3*sC)|p%G-f?Dp`n zGxpTnb{vL9%d4m~t;@9XDH%xDmXFQYUVc$dGk2Ab;^fFK>x{Xpd|3H!%lme>Rr_ew zyUKf)*Om8By0zuqyzch)cXv-Y-^QRRon!}0LGD>emJ+!$POeQ?Fe!4<=U zEA|Vn=pS6MPjE%A;EJBX6iE9nRtL1)3~8Z#>~hxelxLRorxSatPfyrt#u26Q?w;ZZoy9k0!EhrjBX6aAM}jDfjSU&n=@y-oqC@9HvgW z$L(fr9W_DA-EJeNP91}4ES(Ic9J*We0A1*18LD(LH1x8i^BIq>!qQ=O9$iUBDlA<^ zNoE(iw&qW?CtdVFd!?JDt)**Qy15zMn)MZXEzNqbt;WIH<(l$xNZNrQ z!BxsFNx5;fna0sONxJ7qdNh&rusyk!bFUd~i)P}PJWX7=-c{KDDp!3#*RG>#)Kv46%BTw-|C=tM&4{`>{m3PHl`-9MBl8I6#IDE$f;ZY@_y}Ftv5I3PNgU=ppRxu zH#96{ld@4YBb)x}bKAn)u|dW(c9}S)ap+;wrmP7DM>P(cK5{B$z4B$z=%{ts4PIdn z3I{8p>oyTKm4(AOLZormxNc@#x!JdCL&Mar^{`Z5-_VS)t_}70rVJZCY1q&q`w!l4 z(7*xv?$fVtpWeNC_UPWNYnQz{@71Yehl=*?GUaXCv~Jb1MOkS{aZzEqAeBtSW6?-B z#A7|5>lo=as$%r?Ok=0%jlND52Oij6^A(j8R5mM^-k70i^sY3G8Ld~zsa+_CK{;zT z%3&VmuqH~A$_$pl-MeK*Rb(2U8d*UYoOak0(&vt>n3`$))TR%$XliSg^*F4ly?2l#Uv- zhWR1R7#mwwj2zY2qJpY4<8~ZXIkR#6VN*tpY}Kya)b8CH&4{Xs8I7XG($$j42-{6# zU_@ikc9W@TWH@qmW=*#Z%gA2y{~-B#_ig{f0%gSt+~(bJcYrt5Q1l_~29bIQIB z#T!(0#V9SAer%>OTya3foaM((MMZ3nKttzHg zj%>ZANS04ndV7munHIaA>E3Nks=$-xnnW^}h{c;Hs*$vJ&ZaE6rp8QY5~op)Dh|Rk z8Z%WHIGIwxKn5tP9w5uB1|W5|sfJpOGf_iLV|c{$<*7khjwnr|zhkN*v;1qmgq&XS z=_k9EROU(o9aCS6o>b##GO$KdnNK%%?b_I-i`qqS1d4>mAvV8H_il^UIsGdZq?nZZ zBR&~Fg=$j=^+e|F+NoC0UN=l;kZD|Y*c30Hkr}Pl%CMfq6lc1g*^oa|e7K%jmOs-} zeR>7v%j*gFZE<6$Q`28ERZ=)=&Y(t9@^4O8d*{bYtQbT1$c$P(J!h(8Chd~*&Z|I? z8|QMV#=;R(+*Xd7HYul-YtLedM^0-ZAu}b`=HmG)HTPb$9Cg>yX1FaFSgtrGl@XsjF~iT`SQpv=SCC4 zmM1+80 zRx7l+XPC$`OY5@*HebcU#+G?Rlo_d7=Xhl)OE-1u)b4z7uwGhNxL#WNI`Pz1xX&s) zZ{xV5Ci|J5+fkc++j(1f4LS!L*zV)W%{e>;x}JTFq>PXI!b^Dyb~aCOKH`}ePoc~m zJf%BzsFZ0)DyNjP^&=1Q~&LQw!z;on%xqm*E zJKERtoa;`W8*Mb5{Udl{)=q};#8ZEr?mV81J#Nl-s-1<-D)&+U;n~Zw^g>JgW;?$m zS_4%*PZ2L;9G~;`bs^tHzvq_uuGsPAj_}*N)4tQ?EbA^N159MzBbiM~a1&LiLYn*G{b9Owm<6E@C6Lx-+ZeMo& zCD>`m>M41R@3dR+CG}qBKr_+Qn5)fJzIh(#oa(G{zU52Y&g}i&Yu!8D*WEYWFMJ33 zmiXQeM6;ce#R6xf zZ@jPG_xujoF<{3zJJ#%Yn%`Min|&nv2~Ya{^xlqVG@TgT6rL5FDrfL5{iXDHvwmOB zzMdy)oA|2!JNvpqiq~FBO$WXd@6HPg{mpoO-(i}WZ5qr{bDBBNtl&HOEBMO&cDT8p zuhCyK`XdovA{oTYci>6B?r!gNbGkb{oUzVq=S*jXbBlAQb07P&&Wp|~&PL}wzIy(i zuaAq^+q<3kiu+)`(5|&#Tc7OSj69!kH}n3E-D9)x!x^uZZ_kc8~8ndgj*)ZxtE*g{A1*|&S0m}9O{&~|KuC&MN;hEWWM4V z-(7t9{)*}9yTM#7_u)zBILA3ld`WYJ?vA ze=D5XJWs#MDUv6+LO+9N=nu+Ofv~dzy`L|goC9SabCBxB`J8(j=SczIfFFyWY&X~X z8=OCy6WkA+m`pa?oj1*X{sx)F)!C`$c4w^ngn1XwyAOLAW9B#m%?$2Azt1lfyzd+? zhdRHOYkjl*FPhhR2WhN-4)!O$&3rdMi?8(WZ6+2kc^glXU2Ojl_fa|0T!8mK<#d&U zoLafk{j>Q{?l33%_--C9mpDH2Ykc7rx!pa`7v;&?9qt`+zq!$U*>vSojwNQkxiC9w z`%&_B;CkP!?izo8U+e7SJ2vsl3D0KNJ74hD#pCYbJ7$|Jd@brJnXfY*cQgiM-#aYk)zF*c+9VnQh(D~#yaigIA?e;6DZ=#t-X-Foo$i% zz$U17{%)c^el-!O3AT|({FCL6=1gMPYWb71I(wnpMn3V~BI~Hro3dj#E^-EDS3>_g zU%lzcaS5;hI0`rqxEc5kxD;3p{X(s)Z8Sl>@rBBz);~G>clw*^e?-;;za)L6?;SZR zFc3Z-k;z)uCo+=qU((iuz-pOB`Ap8=OW72Te?t9b%_FkEc_bU+{Akks>3@Wl z12bvkV~#b*MC*^Gp0=@!^fmDD2cKlOlhzBZ&RD~7SonR;E!j!PV3jv+#{P)h2aiW` z^u`4Lw4prh2_BEfa;^#J^Q7j$xg2lG-!8C>d~;au_B92RT?PyThB!~jJl`Sc?;SbV z|DH@#2=S2ua+<~%KlRO&6Z!d%KOys5{dZ80d=u2m7~d5Vb9oBQxf22x%NLvzr#JA8 z+~9m7=Lb5(SHxy)_ctJ_3}qR`|gyNlj=Lf2Ufvz&b^5=CbBpw}<3?^kH+tehPl zx$`JTLZf!u1j<7mtevT?0apI2i3h7?1MnEI5t*F_97y_5pbY8$krHa^qZtT%=!*2b*g7(ew(X=f#HQ{Wc)6>u|f6Eq*d*CW*3NBPaSO?zDC zOMU*x`MJL1f!4KdtGgzQ>1s$^-R}8){7mxG;Ze)IKc{W{C*{rS{@k?lvj1k8 zMZX{UU&>~EFUbY!6Ty#7FCddYQoa^g26PE^H7i5MnRUU#B^40)3aIrBlR^GrvafH0 z4D}Tg2l$|t^27aa$U^sA+0XZ}RGVeY1uvOsu$VdEVrij$IWNnv6|{Yh3!2%{E;g69 zq1}&pd)@trElkeYls)GBPh*_=Ve{iaY?4L2#^`K__J2uwv;}Lg+4;2P+2><2gEkM! z+h_jBdF(T*^IhH-KcSDZygmM_qn%rb@6`L8{zQEvKYopm8sq5WR_ypvRvn%5^t&H- z*5{XgR@=F9nC~f>mh=;ajp}5ZpQzAMY@u{UJQ(rs=(i5j@w#h1g6p7Co(W9_`kC#!5dw<_7x!89>_Cw@wm3t@hrrdXgoMzAQ5w*J|`;>1+ z_5;pe<6daz$CsXM%K6Xq~ZQX0Kr)XQj$=SPoA4-+~9?k)_ z&WYKNbMlznTo%Y|y_E%R29C6I_5=Rss8=N$gGb2`!5Q>>y!<0rN}2X`F8>&>2gio& zkxQe}{Ve$WZrl*(cy5JsNp?YlKm5fbwsN zxy&^xUk|dO;DOm!0)Mdmjj}w@2X#(zx5yFB-Q1Yx1NP8rY~@HhPoItby$O8gfjo#E z4$Z+q907jmYIXKGZ1e>3e{fS~f6^B_edTFqwXcM-Bzn8YcdFF*CQBc;H*utZHN|ss zjrm?KcaxI!Jua8~*2&-beXWqMP`-8>Wg;u*ZMOUwe#Y^88R2B+3-5gk6mERxX*%>2C+=Jx|_{vqjr$Fl}jUF?4M5n8CUI?7b-25_Y%&Dwd(y~nKx3$}c^X={3&`sg^ z31$0{?g0!S&Htd=&NbSO+c_qHS(HPQeTcG=zE(0h7pHzj8Q%?WUq?CL5O05!Ja=xk zKO(a2Q-Hb(+qnYS_B-H2-~wPY0B3sK`Z{&>Ti@{37}!Y`2e0)a@- z;TB53^|`KoY2|HRIvNayLcw4-Xq^>{Uv)^%14RSZEHED;B!T1u! zN7K~iN8p0FCiOtAW}QH-HRvM>1JQ8EQu;$-nDK=o!JwYkF6b~EjRd0HG@*Ha&M9;&a9$?!I__RE%kGJ)d z8?*%WEEO3R`G7AL4d@QLRI?-Gk@(Nwf>GVzG#cYsIt>H@p%5eTMSMXYe;#w%DH6B4 zGNp3Ujh|A~aeI6!r;yoUYBgH*^F17o?t*R2bG_|RrZp8+n_4;O=z_Zq%oxL zLk{|;57u7;PlKL!x==fvv^ zL!{_7Hk)pf0PGk-A0`FuL@MLe%mrmTCa2{SnLR?mO2G5nVrzL522RaP)UFkwO= zYU+eqB*n#=ny!=ZvT3q9%a znJ16y!X+HU$3nh%NOxVxFd?$3g!nmJemf8sij76OV z&y8qV1eNF<9!$h>P_3;o*Cwn@(1r>>7DH*g*5|dNeoAa6!yJJJgQLU&)_b0_xh^5u z`fog8*9Xd@-B1-9RIC#G)(h1aHP~CW>^jZ$N8ya>IvPC#v05=jEN494|Be4Ljy?Ss z27lCLcPZS>C-cJJ^Qbz@`>S{Kf~sPr&U-JB&rT?+WmMX5EP^qo}Lp?x;v1B5Y)c3jY zr--YjPRIDKPA+zKVOGOVT}DCIEU)|_7s&*Dswfg+)?Dg1v>oy0rjTDxL>UiTgO<=HDWd|`s0C+aZF=)?$}Ka~vW9!fHOvQhs(+QLcQsF+M8)Sej~Q6=p9V}4i+ z)3J8y={5#4u*07BUmX*?dVDIU%BSXZPlh9UJ{gaNeaW!yT?ap;R(X6reuY1S2P`qTmR}7{!T1 zEFQr+s6kbovUOh8%?6VYQe-+&dthG15)w?+YAVT8MEPslSW^4_*b%F9AFC6M;$VzH zgBJ~J1n>o7P>|KpXcr!_rS%hGEFHPfk1mPB$yk{Gk-pnTY~8KoN3uxx=k2O9PlHW3 zOs{sg3Pfh!o^Ma-^U93c)j=qbKrgt2j%V#CFG*sOpQ@yq)JXm;@sMye*JU@hW&K6iQ*VUWEEj z{5KX!>4wdv3X%+%;1Oau%~~+#k8m%7%WCVh8W(c9R+e;tx`kk#ap(99dwk||Nk;06 zhEq)JIsYY36wUi@G@b}B>+3QEopOLs6-tbblf_QZBw@-ft@VhEkSMZ?p%R_LLj|b> z>QaX#=29j{lTyTR` z-M#Z?`7eU{dAsT>uNv>DeR{j*^XWJj9d<{{&FPi9aDZuop&&CIklmF=q@XY^Dk>&| zs9x_x^p=In!P|(|1ZliO6&z=7Q2&jiXARjDYrxcbUpEqXrRTqTr^5Ee{RH%jYMBjo zZaSu&IhC&ZZ#-VWWl;g%#fEn!!dxH4nRHQ}^-n!L z9V@l|tC#zFH-i-g9u`vnWv8uxKaog;<00HuML^Gb0uJ?H{g+D##2VHMTx#G?nzz9b z%Txb_E?8I));(N+(X!bHrIF)jZjl1rs92CrF<{m+;W(d#xPc_j>-jI8dKO|A!Q^6$ z)Z2AT@aplYoGPE1)4hO^aK0cJkN68>x|2t|3|oItDuDk66UlhafBoveR-x!A5%+U3 ziV%oUDhrH-t7Y}yxaun&O&}=jBVB-l>NnG5?JX22NOM21*`~MB0)Cx%xT%Nd!i@T_F4Z+K*cBaXd5t#Q z7hyx3O6ZBKh4aFp59f z-P3jyE$jS}-<6GUAjPUQVq>0N>tPw%9=~{9oKXK|$zKrHdqGk4-<>mwmoAFO6MT%2 zO!yfs%8Bcz35j?bSD|j0s~SQv%gw0YhskK|Km!FV|6nmHOuV1~(Pg5OW0sy`Ogye@H~ zTx}5ixHS|B78gczhg~~}c+7I}b5SCyzl>E#)xx5J1oIKoUxE+2e8ED!e;f_M5$t(- zO~MT9uSP)5pQz;fzVIlxiGZTQXK-Vzb(Jm~GTaD$B=f8Sg6IBC+9hxIW z6NGc76OCb^l-`WYP)zN9=N#gt zixUaFB96|n^8&8e^xL9jf?^eTBt~r}XsY3rgnTyQKnzpD&iP3}YV+TNSSISGD{1w5 zzaDcNOGj$NlgVOkqZNCUSW7{S^;HU|)%KYpVsw})E{Z|L5`$Rp;|4C1J29e2Czpga zi;?2O_9h3HN8Bw@!)7K*#t?`06AY%)=~zmORRomayVzY)4|r=J#wB=f(r^ zpypL*F|Ib4nL|ui!P4TW?$P2DGY@eE?*Ef5UaT7)R9sR>IHAQTR|auku-M)dgC}K9 zSxUf)?#hG?P&akmXpAu_pUSE7sX5(|66a&Zg{gR;7$w;}_qiE%n$ZUn1?dp8zAi)1 zB8P&cRVXpKfKuWjAuu{hCJGsOj5e@|B;Jg! z3kwSh6UkzvNdvg5H$PLK6CzwJ=5KFrl)t7;Z@C6}R>hT+ zKZF+&!g+)b0 z%nmF`bZtq`sdy@0z<4;Qx5gtX(!zK_s34@ikz`3evl(m01dT*Cb)ZaKjb%qdGLSkYaXP`T+AV@%wI^7vFv zl~2v-j+8hbFDoug2Fp^qljow7VHfG`k5pk%xUjfTmmz48Ls5Y$RR2L+Q98iwG=!i_ zYVLCBqL?&pS*ZFdOcincLia7piV_Gc1(&H3MxLMznkYzOBb1aB7N-hYAZ^ul0WC!n zh!&L=u_t0hMagtLrdlRAutF{=(#by-Dr?F8gl3z)`^3F&R%QX#w0Lq9j4_}D!nxi! zhy@}=u&LKoY-+0z2O|lbJemlRwRF0|`q3pZ#+EEh?(Ui}xO>r_`GBXJpT?>$PlHXE zKE2&4uql`GZ?x=b+f%1@9S@fjsMq2{2+E_=*7U!@6bT}WB$H)nu6v^?z2w;2}adMeTG^ zago<5gpjg%S&KDzGTjyxwZe2;VRvkacwtGBtDfSrf`TwpDiL1!C~nmv*@}A|eimwJ zKc>#)j+b&KH@h&ash#R2kzQ0q!pT57Q4kMeGcccGe38=9(qwTmm`)V2a}zk7Oec#N z4~JxcVML3PMGzE)i^5b56+|?z!b}#I668~nG@-w3tAy@}mPP6ZIDlOc|6Ej*YNZ<$ zTeogeRFp`k68KlFz#nN5=B}1@q0A{uX;{%+nb4~O-4l!{kqmfzDyPb)=5%jSnC5)4 zRatRCs70afnFw%T zqms#@V#<=m=~Av=i0N%wm8!F+(_~vP@>C&KfszXfiqSP8sVrUC8fj`PIzMySV|7}R zD5c4g(gNb3iax@vv_POm3CiRqR;xB?<*#Yei`g)Cg7*hm)3PRsgCj&5mP44A&Io~M z2~!MLXexQ_1L6=?th5o##?t8m>PMHv$yOz);)30sGhu($WB1bC@<{mS?W!+NgLzz% z%I{Wz1;x4DyVyyiWl!6lIjl?>lXBk`K5?S zdPoHs221#22#O=cT-~Na>4@f4xCNywIhariQ^`oCO;Yz{>ym;rmQVfvXiK-z4G(Br z-m0X8X)Bp5DUPT8k@9dl5=q08>PJ~BgcaSD2_2wrNyfxgtjDKvs(flr_tqtaoKLlB zS(*;DF43Jl_qlb#XT=#QENu}jZBY_bk)?|{FjJ#Y{yS=68Ko>#g3P4qD!Q(YrZ6Pj&$F&n|EV#$JFw4flU%kzR@grz!D zdn#E}$b1`&l?CzAcuH3nYE1tRWnTgyM^W$H)jjup_jJ$IJ@>IQvpX|8GrO71PO{l# zbL@tYK*+HWARGZXf`Eho0s`TX2gs!&mm(mDK$c^89!AspZPuxqz_s=K=TU-iHLRb7R`CYu|*XLdJ{jaJSG+W!!j5?{C?L67($V;Qy) zUHsoSV;497|2^TWi@~{l&@-1b1OkF?n$^m{au?fObP^aYYY1Tyw*x!`KgFwwX?hyR zDTyElfd`X6>_?2l=A|GkN#^cmHWQLnzaL!TlSC8fJS0kf2|3ZPK-J-1rw4aK$>KI} zr7=Y0Y;~DEcs?*>vV!+TzbJ{_C!!#VV)JPBrgoBCGb?Bys93EYrCZYN5@iqUD=F;r zSuvdl~PkKfRlff~vT09_gpUWhA&>SF9 zT!7+(?EreGCcvA)dma(>!NFrhHSE-!l3TPwPr0Clt(5oSAsz{O-r=?RJuWN0yQk!e z1&I&5xc^_;yb5i&QH@7}K{telD=0dA2CHg8RLcvP2si@C4_GM?5O4{!M6B!b7`t#1 zqy#7BC@BztM!!daVmB)yCFHFhFDZPAwfUtGT2(Sqi}^&8-yaeQp;+749}1fM5LD2~ zke6<-EbIcf${x2U8G!=HA99OmWmh~F@}j}OxS~ITntKDF3Lx3%ll)>J5|zXLfC|6B zjphx&FLHVUL=~W;`TjL@V?0`Y_cHtG?uf==u%ugT{1LL*>4 ze3KPVg0%Cv0;Ca4b{QNF|0RG8WJHC{b}w0MUXZ0*D`$dt^C2!JzHlqDSNf2#4BLn< z{_h)F_~RwQnB+b%$=L(1Y|YlQM>%> z#$p->o4YmsCG-X8v9c^f&mb_OZ8&(00k_X>4th}OF8_wZVUO%F1ppusku?D73i^X| z@EC}HNj%D)pfza4t!AH%@-VR7UODWAVQT|1T9c}ql3S6yKCchN{4cR@(1-b2R24cS zo`^~kOjx&D3OeD-saBs2ULqg@a0F5Spim+p;3;UyjXJqKhAx~0DZxoON=h(*>mD^C zgMWjRkhgk#sCJkdB_N0Gazr*zi}`}4Kp-6S6GDA~Ku9uyPS6Oj2hbK^KODVa!k|p% zwj2n1M6|Lyp@h9?Fn<8qDDdVLK@~u<&o2Yl(P${*7vmzHf?GvA$>r6gw>#tx!%q%{ z;S{;xeSv?`V`z+q$ar^I)nuTHwb?y|T&-q=L)<=--RA`tI^h}F;HnV6Lv#@TIzliJ z!OqnD5QkLQ?C_%Z40u9TD`$cL@qQFLdeo3l_J8n-I~@MtsSoE(UEKWt_n=8b7lU*A zkZ&$&2=vRdiMW!8l*-Q`GpNZOk1Z;arUwr}cy-Is)9_JdHq60fK{!;E5U+Ct5aqIv zWbSSj3y|zjNm3{z!F08FB|nfOMUV?g38*^U>-O7VUHf5fLNt3#QM%LSwfG@rydFf& z0=QcWMMB*tq9BT5>t?mR6MMT)424o4-Bct5vW7P$M}6p139F)L196eK2ON=9!jDo$ zlh5Oo41R>oy?*p@;0iW+EUZ%K8R{QLbc3QWemH@m#}e|x6Z8iHI2nt@{1HD~iVzaw z*{~;|gF%NLhan8T-f+kz8tn;Nz-|xN0TF;BkR*UYiGYAXsU$5 zWC_>(DK#Qm5;7&^ZTJN*Fs2Wz0i-xn|u#9_sA{>6GAKYd( z`^^cu+u^r~eh|ACQ8Nj5hofq=`&3O&5sKb>iRh*~L^&4AI~-zOjcJ$s(S(T6R!T~i z9b^*ABEg~Nvtk}$F*DdXY!n?180YBH=^^E!X%}dNjOIs$mev3=CEJ(TBBkZ zz)KR&ClU!!6|G@^6bWw*i(xT}`rsg%Q4M!gjG{o)5q02Jo9v`KnLI%?5rk#!g2Cx5 z<^7cWxft<*g!})MEhgn@!;OWWjG_d>Aa*6@l}*lqLqbs635Wn3ffNQPln4mw1El0f zo&2J?3nxKJa8iy^HWtQpF`rUpTQ)`sd50*W+6iitu$pwKN!3g(CP%H|a3UH4LM0i$ z6l)kBp;;uCSTvL4;}wH2kYlPDC{V)*F^X397jp?I6b**}WjKSHOA$~7kSvGPa4ek3 z#8aV2AtFLUiz3rK>Q5jA1Bs*@3;30Q2nWFr<1d{MeRz{2Uknp``!@vTfx(~% z?zgxgo#Aj}?}VNg$$Hl`g2fYuCh&R#6i$HQMTKo{3B6}t34ScOMNm74*nFf*E9T>p z`XOUEkVt%(Uq5&TE&TBk;j4?mxqV!kOBw=0n4wKeAW%xcau?fObkd7OS0+MMHh2gP zg)#_g(9<}sR7r3MCB{(TZsV5%8b-9#FhV4CZO2|9qFshxV2yHBx@uadz z3$<8SwZ~#HSX;(>2;+&L>Wh51?EcO*MAv9PtCMmIe z7*hl)pb8*497zG!`FtuDRmy11peV@-JwaA*yDX-~G<>ggCK3;d2}zbAxM4Eo({cdf z*;T5<2)_NBha%s08LofW>IsLeB(lR+mmHK~NJ*kX8o}yKTS3%_i(n(lLt(o&WT&zq zYDp_+g{G80$bgiWN~v%v^1&;?bozs*KAcAjf4oFE>tb+jk9W={LRTs>mq4JDfaNZ> zyXd4>OYXc93WNeG+EAu4!B~)<#&MNKnuEaegu^{5#`Jk3h;lhdGIuwJ17a;)QB`n7 zER%FdYB-|TP?F)0TXKY@WDs<2cZ0H%YBH1TJ`n{` z6k9i|?a4KBhhnKz#qADNGD*mca7aq#LJqGd4JqM{AP)iq9GOZvTybN}Z3skV3d3uZ z!VaqoSFq7zGnoun*nvnhb;&y1?yyyrVxm16Rsnn@g40lZ;Y`?}N=YQV8TLe&WD*Wx zE2`m3hLb3ebSK@o)e-Yho|-n2$w$J0s8EYB=sdD(MU9!h>?2x*jqAM>B9z< zUF|QW)6jpiluiW@d@j492ugbZ5r89*RDeQ>favzzJ1i3FB!#VAI0;gMlX8@LAposv zxYCn}IeL?nkavfpr0^+bsAlrsY$0P+)i|)|P}O`=0YamY(fPDPjReA0xJV)xh8&+j zI1&tnk{K&dkWurY1X@|@@5@INl9R}mV##DA4ypi>V@g&{#!IDakD92$FM!ky$Hj0s z7)Ay}l9%$qh@3CPQm8JZ9_dr7wUi475m0ki>T!Z^|K=t1Il>{I6t#I_Q$b{7?}^A^ z80v7}6v%m-KL-<06hqYXcm)-9_@iX8MLn3$SSx3Pcl04HCB6t(a?z|pzYg5weEz`f zNB>3(f4l^oS-KdU+vlQliO`i*<`M{$60qFGb{C!W`jEGTFlQtP9zsK@Qe2M9^fZpE z&&zQTcxay9qy^m|3Uz|MX9+r;5NpwTG6}9w^BHF-87*e=$vkqIWDQJ>d!?uc5sPRP zw^`vb_R!s)kTV*}$RP>QOa*r*Gx<#SsVIn|*t%J5kBA2vTg_(cAl-UCO(!FvOivW? ziX5bbN5Ki0#egGUuSQYIW{rZV%pmnpDC)F%`oXiwBs~^H3KmB6lw5rTPCQXtGNek5 zOf(7L6$Md~VzC&_N1e$~1_^IYMw8J@JVS@54b=!_q8Sv(crqT`>Qudyr>2eNi?L`> z^}*ou&Z~zgh5ECKs;Fu@PU`JrZyB}Tj}08q80gF8A_xeDa@in)&keVVptKhd0XPCF z2~a2z5Zw_uPHPBt3Po*QI0;gMlX8@55P-I1wBDOnowW=l8E5@l4lx&gi=5od3 zab;d61FlFE^R7rn>CG22Mdb3CW+s!sy&(miArS?=DT>`5v6tyiZ^WfUa^Xk_QSUhJ z&g6^v?h{cEMX`0W+Fr!o7fTchgI=#P*ew~0Pq-2p9m#FYOzmMq(mUCM0~@85lWGPd^{0PBy!2z zzp~{Mg9F&0Gv*ET_w>Zl@o1!{ASbQZc1Cg0$2hTz-3VPq+Km=O+% zBpiW6+yRjd58ekmT?vJiXf_4g&=D*0mig!kkX;-=e*}??3TTIkfP{ON6s72IuzW#9ShDl~QvF1WE~5?qa)(PI|c#=+DMO z@ep_j4TUn`dwLqjjV!HjXs}=^)hgN%M$LE;3Dshw+78&xWKtu=VsCFTSL^l0i>YRB ztyn{@x7aQgbGSE_LNGO+LNqqzbjFTfDmm;jTfy5;Kt)AuQPxv z*yypfT8-#5fZh;n2<)bu#dt2}?oAZ|d?tgF&1N%IOL>d&UL*v8i>YF&H{VN#loQnm z^`?4Jpf}JPz^&d~kn*`$E|#t})2T>S>Pf|eOGo0A;tTsS*-SQD&X@m{tuH&W5F2Q2 z(UPG`CE1gW$18o&oISWOkPQa2K|loH2&5uFp+rE;_VA;Xi>SA=3nxKJa8iy^yRV4r zsgYJK=WX{Ik;rA2~o|0bhzCg4pc zL-DLz&Su^57`W6OOefN*n39T@3*c8*xZwtw#gf$eP{CB#8_s&EEd1D%R?eM_r7|DI zgsG8wuKz>Ea=h96sKW0*hZg>LiE!4%;M~5Rn@fbQ{`_15fl>mNyV&lclU|#YhDszY zz(esAl}Qv6^fZoJesGgR*gcfbk5n8mLwcwag*>J1=J)sX^yHUUD)oA$G+6hiEBT@N zU}X@wdS$FqDdFA(yqbJEk7z91tF(JQ-6^I0`E)&;>c zu9=)IH5w}i2ZS>f|!NGdH?w5i=bZWpu;d@BQ$k+K7g6nDc#KkI-f*O~V9-r1R;v3em7#hc5Lzr%D)R^Y zm4cdg=L+dWKIcxSa_M-!00r9^bOR-WmEl}JS~-2tvf-ZIdZn*|>}aW8@2P?+faFqd ztJ0{BjSfPPtQ*erwf_+?Q$cNYGx6JNTuQJE}EZDr1L3h z`6|Q{4%i|HJ4yb0E}AZSBgGzXI+1{kmJ8W@E|JWoH97Bz4S7Lki7e!H4P-=x1F@a} zm6fr&k5i8|Uak22LvHA7G1xYZlxV-+_sQYtNLU@WfEOPwfMY*gEc zB9vKaO{39jHL43*V!lyY)LPJ3fLyC_P@_@By_ph%sreG3u_ccu?-|tst9h}MZ{_n@ zgl&6qccZnS)qN@oqA0d*R@k;E04LliHA<~oiw-3Zs-d<@Efi>lTVdQPRwIv+r82KJ?_b%5Dyt911`ax8?TY#Hd+L4p{QRL*)fG7?REb0?5kLgs z2&4u;p+rE;jmpWRPWh6j3nxKJa8i!aL9GU^msT%ZP!$hqQ9?dks-W7V6h&$*Sgb4@ zYkL}vCa@?r8jD(WAhc3#G)9NTMmdQ_DCg6qq9>m#=2NBKY^m5<-~o;nG!_@%jHk!AJ4Lk3FaLatOA$dpQ%@&F+^KZ;Z? zj4r7S_2lOFluEH&9^USXQCQswVy#}^B>47k3OZ=QV!5d1D?X*t=gX(lm5MLY+fy#4 zv!(oCKcu=ZvB(GQk?w)q9)t>}!ohf7kjh4S%SEl6ub3`=h)antimOK|3;XHUfm>m8 z^uX*#|3(XcyhJ$bVsLIhQkhGHu7&+`2?RMDeRMd&C$`x zSgg9STe4DIxT1=o080*THe+?Hm)5Kj9Ag{TRyW2l460fz4LPf^SgBM+m(Ju6ZS>f& zu`w8?2)V=%=ZMKltm+#oH4DLo)gb_1uSa9C@$vEMSXCY>EkpvWL)D?`!oh`fsQOTi z)WYgQ6j&Hr7{je{Q>8pLS#4~*R?Rlzt!haiTF?Rhudx0&oP<5I~_sK%j3&OC{8)RP`;aj&v_+a8dzE zhm8#3dUfN$V@>(65lYC%str_oocfH0mQEy>9<;RsG&GQMq{aYd?0fV(ls@xD0jk;LQ7a*gR{=OOvscN}B59UiCy<9Ap3x&QmHmG1K zET`)-l~wv{6|I~IP5B`%CBCR^T;5zdNWTu;%H!h)W+SR(sB+0FWGFa8}XuhW{^5j z$W!WW;V{HnbMwf^7|=5@7OspmSC37MOdvNlvT0;w2=|toYO`5sHgQ`ZPziwFnoYG5 zZdPE_meGebh`UF|CdRr?L_rkA*3D{ra?KL;q2R_W$A8HaD6PpijZdMh)uhCZ-af8$=m1a1g;0iW+?8L+bSU9XIaS98^5^6IrQW+}C zV@(LX=HOsVO{`wMx;fDdkH7&KtH5dvE~>GjHzQPZVeA5C_hvl zDi2Jo8EE#jQVSZD#7UbglqyFp8Eg%2Vh9SOmCwHE|@=90#TRhWLv}28#YOM*G6jeG+e^Mo>&zI39C36xn&RX>(6j| z72)ZW|wE6yc^5Dw#u&E%roHj3>b}l zy=-za#8<6+qiTHZl;M{b{q+A7epq0q31QaLd1CKO=igp@k=wVA`GqNg;7Maj6^ z3)_fh@lP>k;HKH~N5?W8<9RN}6|le*;P>zQy>6ZUKe4u5jQdCXb`wVZ@+LUkSPjt6 znRSAX!`we^4qvdkI7|fL3Sp81SJ3V>xK$Pud0KrI(ickh}3rrZN%?3r5}*ikB+>w11i zDM$x~1{}a2^~oK$X-z766a7`M+OK-60{vJ02|@L%Lc*&G==@TTTl=*amUaHd%4=^} z%jT`UaqWFSSk3~SAFjRO(9U<(p1}r}cfKvLd#-0EUeE69tfv3#JJ(;|Ih5VgIg}q} zClWPo+1JutZwO;8yk4%sRU)yvRSVmUH{R(N;>27VR%^9>%+N7&Qme<<&*uxiW1D& zhf5`|keO!HhqBqA;KPq8uUC+;BI8t09smPyZL=UXgUg%}!`b1s8ABZq%1L^{)BKgl zE%Dy$$qLJK)BKLM9dko^l9(%^vLu}heX8DIkqUv}-;RdDU%W?rKV&bekLcQFw9`0feUTjRTl)al9rJC5*0|N1T( zjV(v3Wul$YHTO#ow&b=>vPpe9ooNIDqBosMr~7NkYDENt;Diwu1dN#W84QVd#+dMW z(*}dz7w`&!dVej=zVo?f&5xK*Joxl8`{Tp|@a*f54 zJo;D1j9)ai{Pt6JOs}y=|8lSOtQ#VHu3DIP+nQV6U=thSQ`ec-ogjD2tDisXv|T5# zdvz-NjWBfj=!%m&@67Dh-+Si7X^;#r?EAjqC*U!G^KvTJ#|?95w1XTQ9dK%)+y2{!2S896!wlA7X5vBH%|`!oX8qT&a9@Kq<%z>`LgXK1CK6**-2ccG&R?ue|2Subugs%fC3>KYZN0MUBCu=JUHgc;VQVcA;)C|Ia^l z#oRrY9F)H5@=xyLK6U+hYZf2*()h^OT1`r&@F`QD#gbM+p*V7K)oQJ9eSL{UJcO~6 zsYTX49}1+>!CEbDN&8Te3n{*YKGJ8YrGvVLlnPX>WoJ5QsadNj$rR~{C;CF164j$m zPUum*Y)}!b32Xe==wp$q`=;6NrwoCK+%!9)Z7WYWw>BmWQtPBob}_Mg50Y!oo|#>c z-@Av2yglN88{{kw%*i3hC(7<{XhOy-NXSOX}c+0{w794-+v7PI$9qw5*xcJ1*6USdVxay`;Z@lW*rGMUe`p&WX z&?hs^_L}>Sy5o$apF3&y=hvOJ>WYh3pK;P!;q2ur>&P+#P!UR6Wz{n2zbQJY$QXRWR|go?)73fzvU}HGYl2uI96x{-=VF zg+_kF$Vr9`7g3w;8i({4E|5fleA(sNt%(P;Ww!p<>#PzcKur#=-ge&XxX-~up?Pc*yyn)cSkZTA)nyVh|Vcbh}Nm*JlGzqf6(P0#|OWnSQA*EC!G z;1~h%*5tTGP&2bYOfq~Zj~VBUi8|-$cM0rle;HRw6()rOM(>Vxp$uShS#Yyp%S!MA26TTsEk zOqbfVBO$7<*V_n)=}gsN+)t&T%M6IPUAlG5%dQc8$6Z|d^w~qFoHe*|S@X=(D;MbQ z`?qH9;YCMZU+ej|yrcipLsnjT<+4MrDoJ?lX;@WgQ1=LD<%ZjeNig&JbA;{uIm5VQ zI>%tyu4m`8dG;-sFp}-4$N23q7|68RI=%$;F9go*PC)f^}DNXsC+liI$POQ z_pqxvTX(b1-A%{4J128^XkX_gc05)FHFFbfchcBz1O_l`y-qK1h7*j_{DnKQbip+L z#kPm%*(hfb?&n9@{oJ_aq}Qo+w8nuox!cu(goYsS3~;XR5lvM=s|JG+RCP+>N2&N# zN4h_iesSvd8>}nUX}tFcD1-a>lOPL~wu^1&`1^$~>hWMncjm$_iSBZ}h5GEK23Czn zr1@-$O+WlF!Hji%ux9a#xL10FU;;!S?C+fmrp;TerDR zSB2qVRXxVHMLI5_k1Ci|MRD3a!<>`~4V&fkHrN}Q>7W@As0Y;q#_?nU8*Bn^%`>0Z zq#~gy5$78|5#p~=_jH9K&4O^vDVKik%0ut|?Zn1A&b$4q|L6YV&{^B9JRD^ zm$swJ`Ewb+4hq{c#+F*v@P}c}H>>q=j=|Dpu(;lBI|NG>Gt_1|eAb1p;m8QHaAwBL z#7J0nZ{5RoGjnm`<6zo6nz&GCvBKG||Hgv%llWPl{Y^hLc}Oy`ynBaU(<0OYsJrSl z=o|GUNh!v5|KWzt-{U)&abY&OrSqb0^_ffVsDEQYcHo^h-gp*P1N$_fSGn6Bop4Ts zx5$EHdfyM*;|_PtreKHhSaK>nAk>`$o_1tmbRB<^^?2{G@}|(H@X?W@qTBiH!sYzs z!nL8V8m0v?rf`uEX3Y`|VHuMO#_Wnuuf$NxM^w(Hyp?c0j#|25Jz{C?xMesfCocQO z0f>a4eO>dphKWPE%91JtlulOX^Qh5&tp>S4S`VU2o7T>#8qW$JeaD~vt+qTaUUmF& zUsNBI-+kiT9~^spyYt;kKBMwiCqDDwtxs&NPb{ytj=A!xTjb|{d;F7|KeuDeKTo){ zbtllnoeFwA18tG#zR-4*Gt8$r-8C~cLI6!Ng`+@CBjQIxtYk*{#iA~50UZl|CtC)! zaY);pwJmch7E9Kzg!MWlYX`S+Z5t;QjKis$V`Yg2sR1PRy+=L6F}Y{1@-usOPl6ra zqh+#%ce!SEk=!JsjhcWO0TL8c+*Rzx#{QoqMX5D38vuI__Q9zS_%1u;lIK3R-O&@1 zgE!rE+0jSd6xiAG&b<%4x^3H`hjf1N;tOxG^8;VJ_~~;#ai#7?-Hj(7bNQ7QBp?3H zFK<2lzJco1li%*V`YQQ`lc15c(Bl@)&LZt0y^Y;vyUYHl?K`$THoeZa%*L0E!^R8s z7ujyI-)Dcq{sX%St}bW8)Ki#_jK}=FR(KCKO!ULqr`f)CK+wUv!^F;Z%ry8oX9I88 z1iNjTS=(lPR;RNYhk4WE>_>3rUwp^{PJwLYrp`Ap(=_|VPE1fb&Fk70O#F;F32ENK zSsubnblfRG<21j1r_&5U%(bmf68@MljuS6?Y(G1Z5*XhFM*90CxatE;)%9V{{vEEM zSl8xw9hhi=(O`585U1@ho%=kFU4xB$Ny5)oZgML;#Rh}-XiNx#m+_ld&fJq0`mcNL zN9vDOj-EgB3OjR3xMuIh+d7x?0e#2Vz;dq{^PxMLTNmeG2<*e;#%y?C!D$EimuLE7eUcG9X zANgc^%{M-A&6z8&9J=M#{0|c||9SHK&y3#v(siAg8_s+7NcI&^#&2Wvld(m=NfL|lv*z4Q=!SJ#$A0(cYXqU-%^~!JB zip^bfg}1x6B|eqkk=LuH{>WnPIBuKkGV!v6Q4Da?`~KceS=}`*73H#u@RqnN@MBr= z>Q%*J7jI4t8*UEBJ<(yiRG8*3c~Db4vyQ8#)1i81_Pn)QYm-7(qt9|Ho2|E|fck3< zO(T&{N^X{Lpwq>^wBp8Pcm49qpZ)G5Z%niveBs<1zG=VPapL%@JI*}hi$^Z{{0Y|{ zf7XwLgNKKAJ@Y?1zrd{j{PkZR{`1LCe8csr6VChR%pcGB+HpTQ{*v4O40?JS-1;2o z$TtkJaftAVxmJ3cyveIKSsf2KM{I5IzeZ_VE z@hnc%s0uy7Z1JR+FbP2I5v4M{@9B2HY^k9KGNBmt1;u9A%RDyKUmgafS07b|EpmO%W|#p%zqR{Ks$kbSE9@R18M}4Xd?*wcQE6kpM1?u5 ziBx!6UJYxro-$AfTA%Z?*pCiAc+>eWKl932=O32t>-_N#kNxS+o41{C&Q04+IOviE zSI#?Y{Mrp;7k}c?r-XFz%2gL{{ldTBaN^gijrprS@$JqJcinsY?^(~`pSZcoIQQ5K;REyB<)HK}Xul{|;=bH=^cxl%_)Cf`XhIV~C;fa14anozHseQD z0pY8ZTZ|uPNTD9Hw(%mK`0RcX6 z@R#4?K4Izc>pnAo!xCyg#sB^CJC6OqiEFN2+CJxYYOgb}i|Nv! zJR_HbsWHk7`ca)`{PKtIG>qz}`AervgYect2bvYES&y)T8U1GqKg@T|hea%`d-27+ zcadGpll9L_+B5CkG3{W=+Hd7C1v_SlH47Fvu%kRPSWd7$!C#2@un}GWW)h>98t=#Z z$n541e^h_JPIAy|Nzw0tu|oj@%_VqCleMJn-*XEzSO8DgHDGZBdOH{FcMxV_n{yMu z6{m8))6LU8hgkPy8*8^<%`N_XusJ-EhYVKhft{e}c-f>I z1@H4mp|OtAyd*@xDUt*NkjHmp!#svCPj*jg?lzo^e&%P)f2#0{>0dbf?wOnJ{$LGtJj2px=R?C&4cS!)EKm*gZALZJcWY=kK@kK*-DQ*h zeKmX?^=pmqrYe3!4H@gFKi#~&{Q}#&Pxt|ULFdRRHq2U6onz5>SfEmO4t%6Ar+^kR zr%4w|{9@Z-y5n^MzQw}?xPSqXaQGF@jAw3a8etckj*|z-tHz&9Dx$g(g2 ztqZjT)J=|S%tP!$u^9}6gCK|LLeVse1;Iq=IuBj@d56RG{PQhsuZ7TNBWRFJ9+L5h z6${!Ed%kXtE0I{|DmT{d~fHz7yr~b_h&z2*S-nKd(>eMSKsd3^WU#@ zF6+EKvS#zy>>1X6n_Y3*kw1LorO`ut_D@MnW2N2{i?fI{2MQKj{DP_om;;4zme zE5H4IJ|nRemwkTZq8}W4=?x36hDp8ezd*ZxgEbE$fV-`|7;CEWm{b;Plws)*%teZ+ zJPcS+39Gi;Xk)wrXC-R1`7moVk5vw%0uRfbXGSL$Y!O_xcfovSld3mNvnSe^s~CYi z0c+TO&H0%Ng9XX8hYQa3%TUB+xCJJsC@A&I?0^N`?Uy0qr+yiVbn2gf9_A$WMi-)= zuqzX+>P1hCz*K=km^oqi_y73jl9~Je3|@R~Ks8l1=^uY*F}t&~o*!bTzWllK?t|o6 zhyK4I)X)R|%yK_#FG-WR;iug|e2f2u@Cy;0Hya6O(|)g2pUhdkS?WybI_W+yKKsgK zI9({LvQ1eXAH{cI9?m4@P1F1hZM!4SC08alCC^XllF4cIvvxEB@14WP|K>#QZHd9kYJ@ zti>%37+Z+6kS|zeYDJ8KND=HMug{RciLOdj1+@Z8lW0<1hoH=N&S@RBW7)-*ed^3B zUc0jM4VL@a6N5)y()sRgHgR!j^7MrlJly%L{&9=@kZad%o9@lryk*-f+k~-8FPy(V z_wKc3*Z6s($DIh-`}n@!>tBM*3vstj-C$x~GSy&h_%tgHb_nJ^bJyHtdj#oJAB+oK z&==&>zG2s5;VhTV9aD2|n2Cl|4Ii06y6{Moh%t1r&N49;=?T$bmv7|Dj zKrQSTiPT0&TfVNv?ZD}?${Nix38!q28{L6AfHK;V=nsow$|EZN+GC zYlfTdKcC&$x$Wi7o1GW_`cpRVk4zOGjXZo+=Z!nBer4z9-{N(lPG>J$%zD{pneh8} z{?mQy&42q*=e6Jc^*dw(Yyf5L1Z6oP_dnNOCMu|8n06eZqP@Ncd^#s{D!iFl!!Z^L z$CNTFE5;>yh7Xix=_{tFjAeP=JK$2YPR=CfO{?OF^cvglF6}Hq@lAtp^YV52av8q{uX-M0Ak>HEduN_V}%9&bsH&6YqQK zf}^hL{MR3DK6^!d$>53&=WJSXLuW?+xEQtEVT?>TGv5>9HLMMKZg|r~pxE2xX`tHP8 z=v~Bl&0+7dk+y$77mQ=mK<~ZQ=g?+y_sNiaa`{83;6nu+Mlxs_3ESksB zPq8m>^B<;&&WWoR;D;5nUHQWE{EJTmm#znFUzHIF3hFH`);Q5?G$#N>6#b|>- z(IG^N2D3Ns;my1YPTBmn7?<zV)fk z`)|DczRp)(`StJ4WAi9>b0|h|m^6-fwY`j%!_f;CD@YwnyxDEM)jG!tMq|{Z$6V!5 zvN}}N!dtN@43GBVvFw-82>QUXNJis!th`1GOl{ zsdS#AT2D^}6WXzz@%d}KAj~!swTFPVK)nUwHcb|AZBGKjk;vC~%ki2EPrpT{$%R{P zJU}i0;ZUmGdcG$a=Hlb~gX3r}n9`^UI|Ehd{D^D^JaG}c>!pC#&)v~Zp6Oz}&bIR) z=O*WA&b#f?h+O)ZRlqDq_?R4B$TqeK5ysE9C4-GO6x~>705g8)t>#U(Q(+=ug(!sd zpKgcDLcTkA<7%JIcc?XxwYe~RXuz^~i$>*ul}1T`$idoY6YdE3$@c~KcMpT(=L}jR z@L4U_jjzMTmj*bPTUq1J0`B(Qo@;JNKen@uJk@M!4&(=BL z{qgUfz5DYcs4eNRziKr5c6+S{T{<*YDI|mpv}_aBk3eJ=dn-ix9Qk7G60eJ5ks3r? z;ci6DCd?9vaZ^~#3F{zZSy-S8YX)iLoHZFa6Gk^R+IIVC2S~NYSOY;N>cSv}Mlt>t z*cg<^wWy~M)e{FyJI1>#J=Yfwp{5PpF`6*&0~0B?9yIVHYYuB$4MBwT%oNu{^y5F; zm`A>bxf8QBOqrOaQ@`1XBS-8}D6Au~z@0X-@vw(OW3hRiN8PsrsF#$U9`D-zH z$~Uu?z43BqUFXHkpy&DgvorVZy@~%l422}o^ue%IDrhx5joElV$%3P^dQ|#Z^zY=_ zA)`jV?`K;>SCu`+a{GI9<_y9QXfsmtaB5~v!8w-H_z&vpU;x|sZ~lLvo!po=R;KGv7x7mqH|D!EK3piZXaLwPwPVaXJ9J9hC zMwB0r0+WP1YHCdihaTgcK!8IrJh|^_PLF>bxHlnS~} zh{2%$QisWmKEPw9^d7e|&9d!-{ct{by*^4a!Rt*PKW5mEx*a~Zo_Ax(GE3Cz05dvZ zLPmprOjzmHv!H)HZ+2`qWg$S&r|rpNLSZYGJ%L1_#p=*`aK^)WGS#7Y=e41{xa~pA z$Yl-&uhoNxNiO9IHSOq6X~%ZU;i@^x)?2OjTZL1spSHeg6|7}>Smx#L(@fyo!R^A@FnoV=SkFLPxNOnW)qv`3m8y(8z9?S~4S&rFZ0_Tt;y#EJYL>`tljN~JC90rRr zjCuyUY@Iv}EaIiXB#@Q()Xs|-LqhYwg!QcQ-`7RVLs#+qo1Gs$^M(GShbL!VdFoo9 zSqeUN$-UY(fFZlX1TlcO57i|W$IzX*nc658o>B5=% zZ4P0;vCeUrY$tC1rL1%zQ0Jglf^v%PCJ zwvFc_BstA4Y3DdIUZ6R0UhjKeoZ0BhG7J`l!ZnI`pQdxs>Rq)<61;Hs#GGT-#jD28 zxS%2RzbCb$cI9lGB*b?M%$}ldCQS-zs03y;H;^z)_=X*Ky zZ8NT>kV!};FbqM8`JmYmvD@F%k8DAUHoG_#-X6Mv$?1tF(bM1UfkIC|pNMl$uy3;w z=3(pBF8I#Y8}5Ff^Xm1_ocPl-w*K(;$u}Q*y>lCXEW4Dw*14(k)1N_xli^gu`B-jZ3!KH%8Nc5HfQc}t zC=uwIfwCl3x!<9gnRER1_rtm8;sWR-M;L$t0vOk1NYL2TZciMXzr$FS-+b$>$1mG@ z`ob%(?p$-ut!(7U2To`ndrjw3{o_j?JbA;DXU})4GxzcTv+B;tu?+>(`l)?~8G3>J zAo?BNX#3XXw&;(QFOqe2sTVSkyaV(z{DwL!>DV^oM3m?vMY%;F2SX}^nN$L)^V9mQ zBj?VDpU%C*>C+sdK)LPmnd%=oLkrQpmNZ(>6?+OoLdpqzAdGOjUdm;9iiK&`-*#t& zB0pe^718}!G@8SCbjNEHq#Z#)bnH@4fCX0dCi1;DR<(q)LK(uk+Pkw%vgks6<(VI&|f3KNRtP-w$Xbw6Kr-r9># zxPHecI-PGEy>#fg)4#Bj2yeRc`nDVPJa}E_uXlX$tjkVXyJ6Fk1zXNM?BLVap0oJi zJDL8LZ{2_Oj|Y|$3I4ish3;^+bmuEfe_v@e(Vp4$W({4da;i19Rk zYhR#Jz$HRP&{``aor<}coq=Fd3}NzGvp$yc29lUGsvFj#Nt7H`tO{rKU|rdiBOSA1 zTFOfTp-n+d!tM8SiKIrQqBDzS%s5jriTNq#j2LLyhg0TQUNQ6{SU8fV@hMj!E<+YK z7!&OI|8PKNb<}~>3(w8<8p3^=L8}eXc95E)-gJuFYRJ(1j=9l~U9WDAt}zS zu77;!?(?Vql9)Ge!R4L5F!yzzSYDnvL&)o`6Bn&$9}y>O?`p)ljsV>^xL-WR^?&%T!+NH|%;&oQRX}9KkN`^pxWFX89 zut+3;o`pm)AQ+1MW(?*cTg0BpE1q5t@ARDN;XTuQb*gF3_YqNB@T$HSB6)ce-0!E` zu6VYlgnPq$Is6~t--HE>)4pPA;JZMD>rEIKduH|&;4)8cJs?a*W36|&v~eWemL!o$ zqSV_kcI9M$4fC#0bIy(wp;*KW9N-J<5w+H<$G4m$LjecV_7r}J(0OHcKXE62Zh^yoly)AHmi;g zoMNma?2ILb8G4+v2DsB*s@C%=e3SS5XZVaUI2~qk7^l>DO>-P=;b^VQ^>PouAw_e4 z`w^37jbHT`%-1;|a@KtYK~H|f5Gw?)XU(hk2OB0;M!n$hB!0}ComfJ5VWN}h{I}kF z*In=IrkZ?b-|JX-8P+*;XT^+#l4}{4B5&|-@qdb)<;SXI`<+U})&m^y!P#w$w!Dp*p`EVxBb-mnO7h8-Is;T-aCHP*>}^)&u$-o5-@aTZ95D1rM7nwTg0zn zYj^}g=FI--eW$bwdd{N2{!;ZOIFlxfo{RE&9}hd9RuCq$-2!8MyQyt?4g-KN8!LOe zZPP1kdz=5V{t2rxi!(`f%>?(zyK&qd+$CxKlbR<&hSLX4;RDQGsU!iU{{PlBBo-8~~Q31$2&U7Ad7iAmU!K}!}xTVrz+&XCsw?*23+z#mDX~jHRYZ1HxS=$f(T^XYHswMtI7~s#o8G=>cBv#JuYD$ zRxARD_0bVZHDi@3J1quj#$?@oS0rkqDeBBNINdgy;5Ql&K`3H0WEK@HpJ5iFSm?*b z^U)yI?%3W2DV)0#b50@9HWgG|Af5RS+tm;sMHlQ(ra0BCJdRPUF7}g$Lr<8mjiE`~ z+Hj8<5Dh*NaLv4qKUs3k$U!nj$-kR((dl!H_xf&Noz4zW*G$s)yo=|tX}RSONUINf zj0^4i%_AQ-+;aJxGTe;jx>+k#70A&bnM2No=5utt4$a+QZ2kHd;)0Q9XV=*` zzu#vPJf)=x_T}%+1b)(I)D7i2I+(77+UsrEeegTS3M=;Bb?v`bkNL`CVGw5QS*P83 z#rWPakkP(xfjTq5rk{PHJ*ZQx1B!0MemN5cEQ8ho+n9CCw#YH!Jk)xqZQA-a_oi=; z{~rN|Af&mv?NaMyw!7_bVQpP2n+-r%9K47H9pDX{2-V~pGmqV*<9NhP5Y*R*v5Vwc z6n|0+{#mV@PESrS=Ft~ueKV||#d|R;AP{YX{I~f{g2M`Cvhq&5fH}WSSdYQv;r$qU z9rfF&6ijdfFFm!~D#w=H#1=AcW*+<8 z&;FVy)h9Z~@vree>pb+CK;NRxUtz0fthfe6v-IH33X-UQ10Ku3qm6s5eem(-<1IYg zM64Lkva|@QZB{Q}wNry&iJA@I8GO&e8_axEFre$wU^eiA4yz~{n1HYqB+f>tb6Dn9 zmu)-DnrZgkN9;IWg~p$)?kIYq|J%dE)+&%4)rPeP%VLG#J9@WO@8%JS>juc1M}s#}LDCiwp~{USd@tQhb--YsYC;pYp?veu}>VgTu^M`#%x zb{GNA5Y03sGDah5RE94Es;aT#3;j_>&V#Y@k25_6u)jK`$H<&% zhW;PXrLw(QX=gP!aC`X7T|5Qamqw9(EkVAn=o?mYDCNaqye z@+u-w(#0j;5^z3bZT)_7wykkmtlJ=$PZtVlc;W_i7uU8Lo z$nJRSvu||=(L-`w+BpTvkLt9s9f1;py#ry;9YQPcD)Z=ds=??o+>fZMeoDvgM|eyB zh+rJmagQM)`Rc>Mxap6VYlZ<>oH~&{qE`5>Ma5w8L_=l4&Z&`KvlYLJuxmS~Tw&d-WW9-Ol*wGLF6R%VEzRDkhr|evSa1BPE(1<9uVv0$+7x#Z0GCng2_i&PF!vQhshOn{wxnG^GyNh`{ zyWxYa-}eVyT{oZ0aQ)mf?Nu9!EM-Yq6Sh>(AO`Fk%BBI+TJ<(c@E;uo& zG?6U`Uc03tXA6ZMiyeV0dmtGTnRu`_CL7b1N=&edhdJTBPP6CQ(XwJl*PTj~JIs|h zHNhwLMcZyqjf=XXr$mM5ll)n5Ow!nEJ>!#w@wXvVWN>Wpxd3?r7@67~ORni;vJS;W+KbSN1FkMS-FjVc9sZ4@uYG9M zB}WdiLzekV!`n`~Mt!vT#$(_9 z%@JAFH=L{-GwHhJ?!y1u!r=oejymEV@^crVjj6ZQ%O$wI z?PIk#LzIFII(2304FBcsuel#{8*=V)YB;sTf2jXhzu|0^39y#pUK+L|gp-0H=H>YW zL*EUV)8M{jEM_ozvz#Rub6U-cXE@Bba5+32UK##dSRW2kWX6WrFh3UsgxqUOW-S&q z%&p{(AX+~(sksjSm$EMbjHiR- z?|ql^p5-~u89%GTZb*9Zm*%ah)x_x{I=nH-WavwwvD~# z9Vy6N#O|CnXd} z8T#6b`5Y9sDaIbsJolX7KCR3V9ODQtW8CTxZw}70uQRN+AJC(&yw{y$=+ElJI=$AG zVI5;)8O3l+?7~t5m?Lb``NOhFsEYtVA+oQn-iR(M)mA51?N-q`EL1s+rYvQ%(QJh< zx&gr@ILD_nE%D$S!U3-f;j<`s>(Rm1PuC_VpcHKx@ZFK0zJD)ck3IQj6I*u6q9c=6 z)zuwkce&np>5~gju~Da9I&7Y`^xni5cW&9T2{URTp7H`_6m423+k}wnvvQKrJ_Ym2 zAZe{~$S=(^w_46vbzZAGl%tDz23aRqwQe6PVo_thXS{K?QPY!kH&%Iuv3|y(9xbX} z!x8N^n1x{2phIa=cUUx8-nQ16-?rPP*cRK4*koHP%QzFYM>JWHtTvXJ++DaklT!T2 z7gdEHEYBjS4D0#WQ;H`>KQq|_m;gTRz~$z85^QV*{OZBS_gy&r)vDKLtva3f`H4hv z{`{e9XKva!v+sg=gAX=+{O-%F?~(IjFW{q|U%X-5h9|zgZAZ_o@6igIkN)V3QTGe! z!i#M}6#ZbpXotz81ZUbON*(ozHamT5%2vOe;vW>irqkko%`at1`KFbD%>h}UbA@0) zketk63kex^HWlU#v$IinBeOAbFp%%qF>Z zDxm)465GebDRZR*MD{6QP(|n_?jR=Xml9Pj zH;`cI5dF>`_6w+POKI~ec#ITtpz11sJV$~Y9GoQbb(FJG|I#C&N5Uy3%VyNv6}`Dn zS%o|0XQ7|HBpuwguVH52(8DQZGnQ_~`5i=-VC}E*CAxm9R@L6$hFu?hM zkdnmi=I$oSDLoA1vSwv%DAQ!-6_<&b&P-3WP!*QpRLZA<7yfKZHn<&QMjv)YA49;^ zj$5>fJCqVjQP{16`K`?kTa4Op2qkC?et#W&2tM?d!FRilg?&Z74Zcf0d5Vt-*i&1@ z%+m%`6;9Dgsi^sT!$ zv`zlPleT!k#HSbSUeIsdf{Lk*K7AbCaXrqD-+B3iW|n{8^{2kO{`m8A``td;FOFGM zQG3&Rrd@g0gM)S>lK@x;i0NLCgelCetQ;h>EFBA*!xli+GWA2)K>Y-1v;OA}-5lK- z{Tl4E&+4CbXl0XZ72R+ii;^!z6jM@Ss#=X8TFioSyr{5=y_I%Z3uZKMTxN5f#jw-P z>~=$urP^}4<&s6VTSi)@SQcAk#N)*ENcQtn|s`zcmlTFZ5;BzEOPY&c+MCH}p|+ zs8~Iw7O6*H@>GMHP7THRr%nE7H4Rkfzlr}cMoB?ML(!44N{dFP=^~x-8aSLC-bhxH zcRDXI;P)-RmoHzu_?=76`tG;r*6aGj1Q7@bs2on=qB7_n11oY*AkV1L2#1KpB5Gvn zK-r-&=|qbqW@Hd6$zC*RbrFXRooKN{z$pWVG1-tnY{67Ir=%Nh8d_Pal4q1>6ai(it(r>`$wKYn5F5E_tLQpf;8A=+M=Wgh0xWES7B>GB3!5JyA?SD(0zyz? z&hM}GypHAGshp^*z0=GgG21}E5>^gj+KImF50BmkXcD<>h|+tYgXJqo>N}kOZ0vmg zCEtbE7ozrn??CJ+?^Efg@}Ko-Ypmn-dH7{E|4YC2X2Nc4w+%CAN4r-PNvNT zjuqXX51+YWaoY^eI=5Xw`2f+?$`&Y=aLArk2Nff12hSIM5*9>zE|y1^xtNE!7_o=l zb{Fkn9NQ{Bs$@ z;?tuzLq<%@(3gt?_2b0}=Go$E{VK;3j`L6|-qv4mSS7Cy!a)*I>W#)qvG)M<9b=VL zEbRDTshuVD3pi^M3jCN%n{D=4EYRghL4asD+hnc-fc~rkRfFA7GoBUK!@d#Oxh7v7 zoS5enSC_F#xuIClV2~+>Ljw+6&wwz4vW&Qy02CIqJ!lKb9w)s4Ze1Dl$@Bwf^Mf*yC8G|@fDGd^v6c(G?{SleI2 z8tp6GYXfW2PD`59u&je2Zn8xLrJ$%($cp+Sg3hj60_u%r=~-}HbXwpy;4~!Ep!VX) zTy|g_I58AAsyH(g5icZDoMxWg_m3C<{6ONXee2#@(6VcB&!y9AJmKB9j@#By#_neo zZ=d}7?X!v3PR@UM_udDKrmh_{WAd)UH$8NT_U%8zlQ$U8=MbX8w@P|Vc)WazZIWk! zP1Dm;7Os(NZ9_boOu5jO=c$mZY#M~qzE*C+!>3XYOiWqDR;S#<_6grawf>YWb0r(h z=Gf<^X!US{Iz%bt6Hy&eRZZ=7Ye>~ewZ1Umq1l4f5D5r@DS)lCicuwlJUs@71M24% zu1FEGSQu^)(y`TJ`lcJ-BCWH-Jb+xK?VQ%<4^&GMxTFIhR7N(KY84Ra874}XS%OKz ztpWJl>alI8i<8K=u*1itqyf;O|9e=;iE#b>qxZjg>ybytpP#qt8Ha!Au!ml}V`|Nc zS^X08G|xXUZP-UYKc4vN_=uO=&r3sA7WN&*rkve;|B&6k#5|gZeqMlnhWHWws+i8f zYwEuzuqh-FIE&J&39Q9|{sC_NG!@UUiEwB+%y6Jo@QTA6ir!x9UYtHDkcfU4~y?NjU+L}2|8`GyAs z2`?7A-Di&);R?xuE96H1BD0TMUZg~EmAzAeM~`>y+77jmwr)gOD6fweU>?+40ycE< znNU_AP;XuQWkmTR{?CIu9(en~zipUyxLeLciJ!M5_TM>e^oa$VrcD`CUzWXU*B>su z&XgmIZhht3{?edB`?fIq?RP%VXVkvNr1d0CM$g)WE6Q4fw8?P4ez!r^qCE6*{TuS1 zAmJchZ;@lQRt# z@Kj{GE$#ARL*kpn45eGKa;Ddbe2fdt`pq+s-+(d8qD7FAAp zv&SSk>w~o`;wRJJOCy^m zjeoCck6AX+Qja9(DF>Aezz26rTT>o29k<8>rPZb_CJD8|qUo_pvm8PEGXxy~N16FD zyrW%024gvauuG>2=a@o7m}GBc`Q&you)2tfEQDW0u@{j4{cC+h$h2pQnO}1ZnIj{o zRPfrp;wNy$zf?H>B~@59UvRr9UQHXF%af%j-YpG6kK*lf?Dain@ zt|ShTyz0mvC3p=4D^EvDC$~Dh0_0=oA|PvAOYt4!SFOs(O#C6c|A047zxfOK8F|C< zTjmy|t$(L{{IoYVx889FTVNV->%ggfi*j?<`g0Z!zU_3|KJ(Nimm>9cJh~ zlF9Zph!PS__D1J9mJnQGu-RQ_Ft>`qCQGB~IWdUI8WaqeR;G-6Ojf&Lr$I8biaVQw zm9UD?HF;M)MQ{mmvn!vfeoeTdC_hhS#K&aEYNm5il9s6@y-`)$A;=mm{ zLpv)j-PDx!%vxV&Zq@w{ILfkXVz-I&wlU56#BJN!Tb6hu>3F^km{%*1i|-c_%5uNn zZ`flxqdQ~#!t+^*4i<%Bqj^)x9^D?}lhWf_ecV`)vO>4Q*l1p!qRnST_8yKQ4jBbS zpmuouZZEWq+cDf;KdBu6rs#{IcIXib)eCyR*Pw^*$p$g!Pcdo&*Jvl|MyHRGH&nm~$B3{|Pdz=^<}JO6%{bqFM9ykIJN1Kx`^4M%^Bjgk z`I#;C<5V%nKghq*wMp7w+GM`db$7~!z&^vT-Cr2KG=Ax_62z`K6s1hJ7nT07p6%G! z9H786Sv_8=xs3w7J~C3l-%CIptu`Q7T|PI@Gw{s-{2a=u%R0mD4rpft;M+YX&J^6@ ztg``>@CZ2T9OqaYkR3CdUxb69m9;gCbqw0b%w`+9zm>fN_73PG{@`{PuwXoFsJ+?% zEY8*Xg#T(vyMIK@tO1{=)Y`B96%zy;azOs`9zy~E{v(254$q+=LK1$Xf^awz;l>O4 z6FViyil`q6ZbQ?B!)_?XkObXW7e7_(Le5WaVf$+_z1Y3s)0XysK8IxJoXW%(auz^t zSJEcWUNlS0ZNI$wXPf@Y{`lQ*#l<~OE?C#T7jpl4JLXa?`rgK@irZ;-L>yw=rZ`49 zX4_WlK5=Lr)WbsxdX;JoUIRK!3vqm9GusS7KSOs;Oc%7GshK=JB+3|bx7fi9B?{-*B><{r;Y{ax2M_NN!sBXFMwzYk z`c({esot2v-zx@>uT)3#wgUSB{!Ju248%Tn8~}64B=+;f|Gqh?dp7I-QKBC+zd1iW zFY&4v6iv_1pT@Sdf6@N;-_*=btj7cq5;w`~(Wh=3~ohZ>+;ajmcs3P?EdKFxpGeX7l#i^6TYi`dMRlP*_b)R zvf>chlu?_+do7~Yw4B{8uQ4vMd}-3wuwh0KKp&$8ECe!=W-UyXOVo(Ev61Eu(MOc% zwG353?E>xoB@Uy@=No3QH)4M~+hin@adnffk&9{k{S@x1n5?D3SI)0^c=Adf>G`!+ zJ|(04%BLgjwD5%L+RF{p6=3F2k1)e|f`;ANnUoWZm`!)V6>u#@gWoT;1ea7#~-1=7-583Pe> zAxf$g!dXGT`Bfkj%3cf6Zr#i%$!4=f&BQX&DlSl*u5XHwMsdbnBdsiqow8-HjOUmU zAVwzSin^9STcL2O+c|bcC%0HUUTJ z4edQHg2FoyK!UM|$Wc1S2XH0=f(%nQ10Qmohg**E9koj{Qir&M!^ZcC-Bg(#9ycsI znmc&W%)vDU5u2%^KE2|Wte*V}W1~ihGsO|3db8T9F>@+y`a?Mr_q={;QC_s6e#E8w zva-Am*CC60%7_8KeXQrGF~D+wxCX4N#9S^3@w1X(6%p^3&f{^hV#Mjtou`Wnp(}Gz zciLGoQ(a*CeC`nFPVW5XHj-9j!Opsx_xf4IIlF)rdgr-UyYF$!xqc>Vff2$GIK6JC z)0(RIJAI5{fp>y*E^&2i_%daPGj;fcKI!Us_#Ba(P<&1Oi0Xn!MO~N% zq*vc)@hEZTF>%DU#50xS=JvpN8_xzCA>oRiYO{u-KJ6@8H@wjDVzlXl495ot! zK0z#y$4ko*DZNSQvD$f$Q9u{gouMr>l%B&^%UF;UU?Qm4&G{Vg665Hm<3uiS^xD zuG}@cYSHD9N`qK%aaF7|olMDQtQknK9m z!r(ZLt~U1Hg35~DdBvBVSA57$U@>`5^PhADd^%j8&VJL*$&-kk>JDG7DOZ7J56VsyS7Ko zpVR&gS9If7yw85kh6x_Uh&@iMqVsdUcRtVF;!g}zAb;ZXc;dWfG&-Z>#3Y0nWeFm2 zNmBC4%7SO{_jCyzk~b0krlQ#Sw^Sy-<(K%Dbj2+)CAcKGA-F3j2X&th&O=3kP{-Hi z)t8mwT8@{}oI{Hdd8B6)egR-LS}d}Pz&LatD{o_e?(Fe@Iln)1be!KK@EM)o<3FDN zp738dKc;v@p=WVVv8d-KJ-_ZL^$fHP&J$VB&P(eX%IL||*6r_X-45P5bw*SM)ERN( zqK+%ZXijuq@jei#h&nfmY*?W6`euw7-gVxln#fP(YG{;HNp%50|{&!sk%+ z_pVt64-QZ{xCT)jU=n{f%h@@Lru|?RaV!V#VFEf+5C5^F$1=vyX&8MkjU>!bsr?pznqTuL-;U|R=eLG!qxmg&-ii8_&R*N)?EVn?!4@_Z zIsjb05wwjlUFQ|`e9Y;Z&$?Xm-dlp;#R>`;kJL6wLLptQlFja zbo_Kt>~cQ;eu}X7(;UYYH}Ua!U-&(q9j#IdSb?@Rah12Kpz|(jk8$5GZ`J7JD8A4! zD(UiA8kK1074+mkJikBlCP!rhwtV?Z8Wk+@~!m!SYGg)=!NVq}d zy>wybjSIWBj(S0D-420T2MHjF#W5weA$BPy$7CZP(JmKr383DU`a`|;ec@GH8#*gi zmyaw*3RUa%Nqi37kOOLKxsA_z1i6=dUIY6r6e?a8R5IeFwqQ}PIw;wK;owfN7XW9~ zhj(nCOWX5k1b_HF{TcE~xRedyqMvao3#rv*#{ck&_k@pdMLy&*OY1mMm6|O=AY||= zdBM}C(pVb4?!IRR!@8Py74%0(tqm>1B3x4poa_ymP&d-1FCkD)(GAZ zt(NE;IPge-ee{UZO_QycZZ(L%)@q5Z;FMvV(WteXZWX{%z7D`|djxlTOfY9_5aKl( zr-RTP4hafZQJOQnJ5?$J4U}U3hC5|}HX=Iy&Wu!*3zyJ~3{1GZmb6PK7XZi7DC z%4WBi8;&h)eB{`&rN z6GtIzqQD|d0fpPi0|_M&Z}2|{$KePf4b_LD8fo+i|06-~Q9nh4A06=b_($dnrMYII zrUBJVarvlL3ec8u21~BI!l%Y3;w}a~3-C)ey7gWrKAILjIsfR?Sxqb}FY$uURd=+I z5Sc|q#}Lc!$T0FR-zADNK_9n-f#j@)$?dOL z4m>=M`w<5xvL>NxQ_K~hT)0)x!8~D7Wnd%9I_gL2MQ-u?P_KX(wc=2zpiL`v;A&#j~TRLUQPf9hnOcOLz#_c7b{dF!5Xv-HS!Y|8TTl$+|0 zRWvLt-@hy`KeA&+<+ywN&kU*`c%;e_*|+)TSD5LgR~;Mfe)f?;>-Oc(dAm+$tEfIU z)Tr;}&86Af2fl#@^kAvbUwBF>>6uqmKC)y%iCi2XP@0d5gNY}e8 zKc49}>H25I0eUqG4>Gy1JNTa;QrxNUL<;@PcaR7Qf@1(WlPTuZ)SMb!_o8Dp zvF`AEex+CkRCdp)s;Tbo@DEsowMb}9K;e@AqpOmId@xa~t7(FwS9uC5PXXb5=|FFi zpzu|2eV#Lv!6U-m@eaDO-s zpG~rdqVEYLi&;#E%aq!V>FQ9!4pC3cLH~*A&wlW?FU8fnp7C^|?9O8R-t2$*3;~m6nwyqge%E4KS6V zu+IcygL1{}_rEO|A`w@kK9bui#+xmXtSs_th76^phO#mQTPZh}f?1;Qb-5bK`tQy- z){nBWb8e)|SfZ3-PD~rBQ;LTHlL*(&Ii(6ZzD`SA$>I+@YeAhov=+NeHkxA{QEfy9 zrJ=vcSpLV`_cfIr$_kEMQ#$L#Iq&Y+UoyS>n2qVH>k4|mJa$mQtl_0DgXdk@@RO&O z>>byA)tj}EP`3%|=Twb8G4s!(rw_VoShQ-zgb6vtxBXB5{DHB`0p5q_c6l96j-jGvXSV(TvUT$w`p-^Nm5{rs@DW&D5mwK^}d$C^U zvo2+cSrs3bv#-io`R$SOkxLONk`Rf&&MuRbQ-cpr7OkON%&5C7n-T?Cvs{dMJH31563d3||L>YWEC;wZ#nP zPwNaitkGwTG9E$sROykLFjeB=)@aN@D*TZ?L(qyv7#1 zvi?}&7mprG{QATRmUrw?R&?yUKS}uoOR6Vs)I0sf4Tm@E%Suh0U>62dW*{$L`rZij z6y8^S4@8bceuEA>Q1oO`Q_;&s?-pr_P-~Ef2KrQ&uBhBpDOP?AUAwru(p`*nXREv4 z(_QSImy!4XGI&MwJ$b#VO6^5VfD5RwFdC0+08shGvUkeFIc2OY9*y&ns=`S1>Q&Xs z4*d8?U94YPR8NCYbg^M+p76av!eG%K>uLDvd({8mN6E!Ee7-WeZfm3q{9ngs?Ao+f zwm$v4nQbfYemb%;ZTZM$d$uo`wB`R{Xxi-=>-T*6vyHFJxP4J*=*UM895^(WcC|l< zTebfSSqKI;aIU0QnQFnf?Qq)Q-_Y38!x|Gyv}}r6JI?M|?mPJA4x(wrW%kLIok0s{~>e(KiSCQ{o%(VB#v9 z_2$ptcy-+`*M2B&70;|*-9A(T-GsRH+AqYP07-SGeJBDHlaQ}QEM8y{SKQ;JIpRtY zQ5Jg~XX<;rhe#6RpEBd&icdo?d3XX{%9sZuUxmSh*v96Cjl zPHzJ_lfjDQ7=x9W?RpzCJ2XyaHh?ctcDg)PGh=H-6Nmu73ucF99ig%w7K_zv5)cq_ zIGhoe3ud(hegN}Y#16l}PV$d4#&0YQh!7#ivB{3=U1GN;Bw5pM+HV~6o6`xf-aizh z@Qu_U``x$&d0O3v!N2aeUrpgTCK&1}(g1I~_^tjXj1kibq_QHaErSOOX>@j%O?I+ugm04R ztwcO(c0x`#T{b4c#jB4ZPAh;L1vAI)h*~T~)@tkRs5eG5%{CjTSk2ic8&7+F*+{I$ zX5Gu$H>8)vfCp@(;G%7E+Re|iUn7R}GWIOSUInatlHf-u&-~{b)TFh1av(@Tff9hq zz-Z4iW&wl(c#arq;l!psB$WgL3a{uh&iO(CUNyc;RogbJjL)4JDlw+AvZDWV=uL@5 zU9mCJCQVkX-8@BXkF`q+q}tebpVhVh>{~X4{eADRI9u!S1Ut?iN!%h17U9#8kc)dj zTdqw*Zd(Sz9e(9u=lJ04;PT*#)K!K1%^=*&ku#kY)UeYm7qjn{M-ENGT+bA zz*_-da+G>;o7aYaJsF>F=_|dMopUR24@O+xqsP$s?J`Jv;hiO zfoN)lZjkO|q%|U^m~tGMK1s&diUgYa2QH1rii5U18*2B(97-{Z6tiN-gQ;+TEK+LZ zQMoMF_h3xcdTd_*-L^fpSNy;7f9}`$ZMp(eJWCK)3#;N!#{Uw(7S{-Io!kFSJdWTL zT#12_0-Kw;{oPAi*^cJuqAy8bLVV&P2U1=nvIKN_4^=aQ6ux-n;!=A%UK^Iu=UicG zSSkQv$+Om|Fe7%?4&+aqJQf@qgqSJqv>a&(jg$vBIH*H>W?rvR6X%^Buxt3lQN8AE zIWTMY?pX&eP8eL+WB8nTBf91FygF)Xe$U!bJ!VPy8*_W^e|*K}(LM4uK6zki1Gb>e z-J?rp&tH-ne_&>h(Srvet6CIBK%9Ezi?Cj7!YIXUu?nKu=Fn@`>7}&>aUC-2!7{S} zeB9QxW{VN!^h^|2rC6Un_ARDhvwEM3tLc2#cxsF;&kFQRJZus zi669ctKw4INtGx}0K{P9QsBATpqQ92Uprrl(ANE|cn}&tW4E+O5voz4{!Zm7JP}D} z981+HD6iqPNeGzLHh*4g|GeH_g?3Y;+fxFU>pA6(dPF@A`_%yLOgCB&&45>|kkEWN zrL$^<`UGm}ie9G^v#-5*0(1?#QT{fdD&1plp)CMq6 zn#~A~6KG{NDJ>Kb*ZQSvUhP^BpdKzK@^4asf%Ks^6D*uoHd--+Y_?Duep#V1F%VeZ zk2zI@Csy~FBqAP+G<-kl97A}#l6y)g69;}L#aDHUVT@6|h_-1;gS-KUp;80Lz#*jx zI}H^z0tG@RWeI1{MrAo{K}QB8=7iXRaAHm>t4n-!rg4leXv?W%^`Eq(kZ~w6Kg{;x zbpRW5@BR0RZzo>+FIR14{c83}dnrChw4vY4iP`e~z&7~cQn|&CB5>k7{X)k)_d2B7 zZFgw<=zBXx>T4ZC-8bv&9TVMpJ0LD*kBBr$21cNm*@i9N2B2EZC!k!mV22>{L3I)= z+H76eX+i?BFD2V-6MT06dEj19ZH=7+WkGdz93$Uz%LR>)J6ET<*g49PZnMBm)PFow_ z8kbTFJsvq$Xf?p!)yj-#{DnY|jKK3xSL~70v7QmegE^5Aj)U3DA>X(s3r|Pn9B^Lo z`n@~`4G0g5my`4+mx7(MWl@AZlgQGvEJ=|7WCT0DdEl$J3||{AD)?#Qw>$26^1y5C zRXKZV-##nY`YZo+|Lg(7#x1{JURrf%%gB~3{`IvCaZ3A2 z+5VkfT-g4Y=2wqi`{%Wv9eq}EWBbO_9mUiA9Z#nd22m^?jMh4u_FHzUYC^n*;Qt+(&wnq21W(EoxgpjtRf7>v_$QmKa&Ym{CZ8U;`DUai+pa>Jl zh5$DB;ruJAUD5t21QRe+-&-vtj8I9BcxK=O$Ior~a%S{QNNm#e@KD2x;=r=SY$ln|}8D*X*vlvjWa;^k^-(CG)=>w*fC)L{tb zgSijT5Bxvirs>pXR8=M}UT_$4f>R2*4=anua(oVl&yZ=?k1iio+OH&@-P7&x8ZxER zqU*q{zJ2>=7xl<+hhn*N60@)OZ~x!K2Xp%mC@UyeQlq&e7#R0O;e_~!G!Szo21e3X zl#!2zm?vVemb&TX%`EmfYjuC*{>UQ}RhA(uCnMb~S%pwESS+MxWuR1xCO;L;bQq24 zj(Ccc?#_=(Zcky@z0-XdWsO_eFqECs79P%FISoQ#I9O<%TNJJip9-H3%i+6=7s1{p zkPblx5i;mxTS1S}IFdF_DmuD}Mit=}YX@byk++byRb}Xf6eOTHhsbe<3k0F6`e{3B zd2%e3%DzIV9rD5~$+}aSySnC{EpuyZLzG@K0^5roTDN6edB}aQ&R_9iETebv=nYau zdfAEzeQ&MMYwh`-yxw4}n!B`dOzj)2K47n@sH9l^rr>2a!QrZ zd})?J1cis>3>)3vur82h4Tmwk{Gr1wNmm0*lB->4coBC~X96T(79wvxYG(35v^z(g zUAOhA*PCV^9B_Z6_@;`b!=?=Ey-bnwN4&M;)IEC>AC11J@s|94Lk`_EYUViZ|Gpi% z$t#+VQPJ_GmNcT#L^jGNNi}bi%Mi+IuAGaI1iAI#6DPcm{fFM#qY2OzRMfXJwNG_T=|QRfx#xJLk57&bu^>r&MW zj6D`Fk^m?RFE0~5PVNjXiTGetVQuI#Ari|uVX25!Lq%zvK9Z7OFYGblmcy**RW|DM zT?;3aO=Sz)UmBG^cxK6r3p>xxyYI}A_VY*jS5IZqp;y_ErxWKA-=0jg*Y~W}9)Bh~ ztM|zl=G@DC_pN$7@wX2W7Y3g`31esin4AA1R|_S`MIXk}k=I-@vd<>nJ>BI#MBPz^ z0)a%_+dFwI#!(rEjErHlb@rf_O541l3x}=H!Aj0>iNpH3bh5W5R#uVUM=|={j=>S# zFxD;BE7V6(@*Qrs!{JWN2!~i`v_Bll=oQY?m6hh_BOjwx)GNNcys7ytKi`Wmgr)pvYa$l^aFrT_>VMJZgMvvg zi1|cB1W%~`6dM$M3}oh2$XVd$0iF9k1CqKdRSDL)M%54$A#)M62agB|uQ-3D;6RcS ziNsrSN&0B26Nv8n3?uvuErwUCF4Kx~&9`SK{PTF@g}x)-UvlK>;mdESV#5aerrxsj z{&;igKh7;Y-ecP@*1j~`cI`WP1k=UE?M4_IHb>fC`~47p3$NQo7#LYmit>K0oq40I1HE$q#fv&>eLlxh)J z7GUp!|Z!|C>sJx>yDAd1>JZ;d_c2E54HM)j~R4j=_QnmDsBtfsTHXD1Ya9GO7 z#k$54Z~wfACpjP)Uq=cOqsKtHyvrr_Kw->Di~Ia;z`ML{JFb12c$d|n5*;?KrR*fH zN2w9=DN5Vpw7ecU!SMT^MI}m|UgcBMxa@aH;IG{qxHvaXvb!Fw%HwJR9L6Tp+D(V#Mvpwmqd0nJ3kJmPkh z^g38xY@OoF2JJgYDfP%U1%k}D0=#%#&^CTNGMFawKBdxTR2N01?!{3pIjz0{^`t7l z0JLYicqWrWLlbW%?60S@0=7q2`^_w=eX_Fe+6C%|LLdZsYu**2(3<9~NZS||nZY3F zkVc{Pr-o7lmYy2)!-JvKJ6*AW5JB>Q%iy$oQbM7a)&w=!6iP8^<$yM%mrN*|5wWAb zSt?xh`G$bsPbmcwQtAVNm|eeEzf&*i{pqoD$U=y++GoBXe;KmpIEbF-taLioY2zfx zOel-wTI~d_Bmpg4t0IDXGTf7C7pQ^`Eu(^y7^$i#(&|V|a~dNO;DxbSCFMQs&s<2k zkmB`)m(`Ej9Gg>8S?O}U?SK1xV9kGn7|eF z{{}KG{Wy}k1W4+;*4{u;FZ?Tz)MJ0_L-CInSEZMwIXJvJxS%3YL%(-{TZ^d5Eyx!& z3-AmYVWLtDPnf_aXk;u5S;P_)2B;L440UQnLDGQ-Kr?{>P9V!#-5d(h(1uQYtF)gp zRiRGenmTzpx)n#G21&m7-6*k2m25T04`-SwzwH{zguf+Gd{tWa+A60P!^3cA9TsGGE2=Va<}? zyr>IHWD@FvVyz@)i>eUk;6e!`rSKl{S9Z(cE$_13JF_3U?{&8ELD81zfvC@^L@yja zWCkgy6}J&JLTezrsJ^Gs_@JrA@E|6A{aG2|!x|nttXC`o zqK7r?LBVgn2nRX2h{-{OEE@HN29o|Gza@qZF~p7^pvW%fvrni-?I)1r6i`G+u>*at z%Laln17n~Q`m?{WTUG41)BHQa#5z0C=AGwrbi8{0`|K{D;|ZG$8~FN6j?M0bz2^~% zR>j8?p1wQ3!~5(!t_Ze>)ri0&M|lEArj~Wy1;|v4+oRV%*H41Y18W%53xOIYj!>D)^aX5!Q%H@g@DCV6cf_?7AN@N()?C8K6E*w9*^7Yw`LU> z!3B+CkXA7*SMqtI;6l?&hLo2<;k~KZ?|vCkOrK(L=EmOer^EY6;u=<67Rc&?~s7cWwlCfKzav! z$JYlRTJ&Y&=kx6jJlk# zlp2o3BvUvNY4oB1EkLaPKIJfXnkpk+ZuJOmyIXVzs=2$>;13rR^r@}{*ptSp9cgFa zE5hR8qo#sBxgQS8h^xF5O@*;Tn(+|8ti*SuVD%Yelj&wlAdHS85DCY~&Qc4*>%_BTG)UcPD3 zv}fn6UOVRgg~d_{#KheTW;}m(_Pj5Db%ynNV(!$LS$)2GbIhoW$dc1{&2v2d`Ybl( z=)N5+u;$iNxc) zV_bzAFqHvCU28JdSWGpRQ)a(=3BVIv1k%2Im5da1BSSWm8g-&U1O1np8;^`!QfHxi zV|Bzj-%0kopJzpPPO~r1xzzbie&XWkqkBywBj-Afc&_)P7o-WA)BL&Glz65#(_W!1 zx69Oa@D3Zmlx73ryipG&R4dr$+Zfh5l|mq>cewTT(fr@pJ3uYnf?w=kWQBlYyn|95jLh z16WS$3Jv6I>c$v}>_^4}Z4jgv#0owRa}{p}zz6X8fKCm)E_C!PZrv=@fO=Xy*i44A z+Oa4U0R=G7*_XqbjgvWNH(X5|KT3UBi>@SwXChMXY!y+)CA+FmXII_mAo2r@VAY8A z&Pnd)Q?Rs{0d(*tR)hG*T}@h8<2V><^nDHDA%u-Y1~wScf!QRBjwbB(phs5>hvAU- zCj*q&NYF4sqLa1(eIvOmknCY)B_1C1rQ=%{*=-brY;UJNE)z8X#A32lPzUydPqGqdKpF&3hX{BZp0I4#f@ihktpfe zbL{WHb@u|V_}`mlzp#=N8%@J zESsa*(O%KsOMFedFs*%m`vGwd^a7r1&9i=xqX*4nhwvnp1M-(d76I4j5ufCgQeK1%e@(>X*_Y;b1^PrQbjx&FRXH=kZENvcZf16etnWa&<+QKdQnO z1QI|LmUyrG>)nBkz-|_>U$kGur<6oZzS5$qkE-nN;RTBef6pV6FNNOFGSfujS%?Rg zlvnTHSdy$ zxIEN;yG0|e3bh}%&Yaiu(8_{k{=N4z-KGJ`rn5V~Sn@Zki3y} zS~s~(T+VOO^&Zq+Nwt3K-ra8|7C$7K*o8ziF$ObfG3>9KG2VVyVo~^i*SVQpa;HeJ zdm zW~Ui#VI%W_%^20g$dThmDBs)YlN!a;R6{gcmu9d9Sukj@Au}qiRrDxc!Qg3B>3fqT z$DDKvjQ6M04a6ZsTt*aFMx-D0yt|MbC!yc`4_%3&ihhLqnA31^a>vf14dgaSV#T2z z*)MdmAtyZw+;l^^#D8@sBpnKzmJ?Cx#V;KT9Sf(pQkTt}GCMl0cSbjx&gp$S^!7{Q zg#4ELL=C7)L6*FCX;#mg(8J+q)H!B8_>$$%-+lMHK$5+*>$otBGRF`^ZicfWMgC7C z04Gc!2>e)(x<8a1__uuz*-hOa3e^P+cHaE~Tfojq&pe9jUj~5cVZEYQ(+nCgd4u;X z;N#;!z9>$%%g5tKhl4n$=nvl;jvwQq=Ht=H0r_u-f~NAn9{@ly*pGMqh0ukU*iD>I z@<)1}7kI{MGa=)wMROcl-`C3UeuCl>vAZBz+9)ZIaz(bczm_(da@MQUfTx4K8%wBZ}3KZI^C!0Gg_^=x#+Q_=plU z2;xX96a0-b+gWv}Dsvx+Ha}Z$c;s{JK zLegMR;SO{-dA^hHD2&`r5pdG7evpKh#G{g%n?`9P&)so^&t}W@3wj+SzeNbbhgcx=5{3v9gnfv&glqH0hLsO$!-Fcr86R{D56Vjo z=b0Q~(+4SGIV}{D8S=e)o=!`Pmx0x^rxH(1wF(oVnBG*_fBn$Hs?%kK@%4p;ha)U< zx2I6I-dZU5>kfA$fVE$Sa*7xHaGjNQ_gd~n;MNaDvi)*3A*pes_xL-M6<4WKwMs=Y zRe9=WM<86w8Fv4}-!=c?Z(Almyky0un~%+1xp{ZblF4QLs)|deD5Ipa`>zdR5B%sK z#k9!}H!M$H)2sWTc_+!6GzpL)}6qnriw9`w)Sszp{)q89cSRbO0Nf8%Fmx^4~Ael8E zp*(EY4K-2C!~P*-#CvQ%u0?M7NW{tz)o9@<(DoabQAWDTd(q{N+Yy6Ur25h9=F#Lw zLoV43)(e5(h3l{?FU1aa3_5HkusO_TEwYMV!Qq6j_*)CtWxL$1p^Rt1tF0uzoqBzL z(FeaB@mko>#&3DX_4n_%9M(XHw=f^VhBypjY73E=%yuO6{=2l0&hOXd{Pz&wRFM#T0asI2!wzsKIj`NXkMjSM5{L7EIV zJeO*Iym}AnW%VBY#dwEzG$y@A_WfH>;=7U8{=@Hi4;&+OF){NK5<#H={3#gWNFrh5U#wwCs8zyo zZH2Z*J3%`~yGpY~qk}mBE~2BF`LGA|wHhcM?6mf%{2=mO<}~Z3!&iWmmQRto;wY zjwnJ)P@t}a+>r4siqO3noi-#|{ZPo4VP0))7@FPt-bf_ZAisY1WP44ta86^ODu-}- z7vzi57)>4Yjc!dWr^EdOC^9yUpkhUVvs2=Fm{L$elCCz@Q)E&MCi%`~rAO_qth}1R9VG|1QZBT5JZz{E+8I2$wM3%z(@Rt z9jc_uQ)GR(!Zf^Q@VwMj>CGz|@6+rU(tl{bRok}1KHnj?i4XA%t4#2T)Cd}EobZjE zW4}dxv@y?s)(BtSB^#KV6+4PPE|%Lq{urA3V0o!{TJw9vTzo?BCT$bK`&ZAJn}o+w zE|Eu*{4B|iIAd!vc$y?ueff8ngH47eTdVj$GyeeROoT4|Z^#hX;042m&tEWX*n(lz z`32S01^LyQZ2DmM{Q1Mx->YfW)uO^eEj&RU;fOLU*IZ;#%um6^cnRgeoL&h?W}6X< zDM#g6#dG73=5?`t7lGmAo+`|Y^=8{bqqeRx5?=_#& zoH9SFIcL78LBUI~S?ihPkPKj-(8d7@aWx4>(A)jCMT%R`*s(M-$XRfORweW-6_!Yl zMDEHI>aid>_5)579v*moNzdxi{tNv}W=^ON-Z{9uI&W3wl)7b@(|YvKST2)BD*4@rcPu2N}Avu-k0rXO|-q*AhW<`tf{0Kue=9RuNH ziLXK$3l7A!4-Y@CIhVMMM-A=<_%cI9%a?(0o~BrB8VxcF*IH2T0~J78 z#r@!oG@v$(@5MViBzdRU?&5*KL%?fA!4@jEq=v_k<%VBX^)`v$Rjn?tydK2KsKYZ#KQeRCb88($(+{*NB1dN#;8)*4yy&e@}C>OswikhG+1XH%r z2(ClD#w<4Sk}(!D6TwTl#A{ ztJ~Fc^OSm`zN0^g`22glq3?nWN8qr-7)^Fdg-$2MUf3Vqzq4ia!;yy%w1|sudT5mR zbo+B-9~|4BNpV?Tf1T?p<>(xp@G)Bs9U}s%daCMD)%7Z=3UtlC;3@{_z>-Q%J!u%k zIIZWbLF3gch0}t{_R|fl=YQuKMq#JVmhJ`ZNt43wMNoUXmj(ACZ8czNZGV(s;p@B! zT>-6D_VatxC-1Qf_kb220d5gX;U?ZNDDOAemmq6y@D%EV0pv*h5MoExeW=k|vCd=} zJ2^W8EClNQXrBYhmZTQ8>c@IMVdYwpxG(yiA<=AR)o1ld=4B-`zZp>D2R9kDWjNK^%UFu-jYiChFtIk zry;==%)1a=nVf5s;6I!TB*wEvCvSf^_3(Dqa&Kkb!>fBP{K@loOy8CG%@>E(3@;zl zYxtyfQwHz3j#RM+Qh`xBxJf){v`;wvixtl#KKlK-G~e-%GgdHk`gcc~&WC*o3snxB z2~Lb#(2r?A*8c?vG6amB2o2kUxxw7jp26O!nlC{-p5!Z6`R!I%Mmh#W^uv?oGwwMrA_7{XBOF)+tD9q|w*dd9}zWn(WwN^2Og}da9 z`sjBxWCPfh9`vm|L5H>_9ytajP#!Bm93KctVs%hA2{O~c-GC~TKufxKUA-iN&?zo` zE;I9)!iUC;I`O}czkYdt`08e46<4+S5>Ypk$Adz zUYrA1_#?`M|HIyU2S!z9f8+PLWqPJ$GA%QcnaL!XkWMNgKnCeb7ZKFZi-JG`2qINc zkR~7?VgW0zYl+gaEQ+YhT5xv}MOQ)BRaY0wT2{*3yr1*jnIvHO?)Ue5|9sJ8W-|BQ zr=90{&U4P^e2yP%xc2mbLky(bCD{{1kY7GBOeBM@0pCEZIurbX2>A%aG5N3`B9XMG zz>t}RsO$NI8IU}USeorNP@VwE6+~u<-aXFCP1L02fZ_8*i)<_Wgmx9kKdrEMNn$Su z6u=d0;NY}qwF>5uG)fIl`x!yBw}!jVi$+GUPKWB*-P^WZeR0!u7p+;VZm1v6;?F%b zrFPyYjG56?mJOV+FdCHB@0;I9vhhn4FdPWM zwLqdH<_R{i7blko@*E|joHfK7EJmpWZdfIt68=27#){pIL)Z1+@+-+T^g|M-hW7f^ z>>5Cnii_pWSVniAn$J5PO;f33cZ=?F*B2jVdW^gzP(aVG$?G)40fZH2QQEa?pN6L-h0XpHf=Az#nT zcLU${EUQ7c8ClH^OdRO8NY87c>@0%G^hRH7Fzwjsu-CvfehRu7ofRM+sqFR0#NOsB zcM`S$hf#?=IAiigfB!w@jrXEj8GW-ByQkGB9H@tIr}%+Xg?a{sDTGg!-Qp6sQ35!f zc^v)|NEIvwP}Lnm(E5yc53m#ZczW=-Ddu3o=D^+hl8nqy+I~=v6zvv#S<{kug71@& z3aH*G;=&^TAnL_eVC^hGu?8ulXS?Vha_mR+cZTk4p6HF%ckMgSxg~4s%_~=RDc&@) zhYML<#1F21VtlPHw;->kQ)k=Mrg%sb|-Tse5e#dQy^p8t^afW5Z5Z&gXBsjPENeoe1hbt`99u#l75mwl+)!LKr0Q*(1^&c0_%8~ zOKrI!5Rghq0YuusB3VJUMI3C*`9NQq(>k0e__{y@k=5Nhtc3yU8b5|R;Ejcj7h=Ij z+^u}vVrGTS1$VnjvTrH&?++Xhi@-qbMm?aBqgQP^aV*3n{4Q>@^itCHD|6*0VNcN; zFa_XX^t~6rATou2539|OUXIvLRw7k31AFKrM;NAFmx3^Mq)HwP$E_cXsnqToF zReGk??#^&}{VtEwYe)RK)$h^+J%a&B1LKcll|M7X@38wbonCK|H8aC%&1@St);5@# z>3-*ubO!s$yggQj%fHGEQVm1g=(VQN$S44>-o0C|FGI4TeWET727Tskb`5hv%Gqwm zet-Jie#raoOz%(DpU6|UE1tPN4E>Ak6f=Y859c}zurGikKLNCTSX8|OPJuy&4=g_Z zNFR9wKgRh}0JVYSqZ4GJ0c#Y|%G7tE5cXOkO2H`7@B-GK9NyH60sd=B07BzTbSYS= zQ%5QR`q~BKjRO!9=TsM9~=7iAjxcc{B7}Y!Hu@BY2 ztUHk!)2RLjhaKTjjOD-hSQa7md}lUuzfh))CBnwujSr`>EUPK&Q+9co+#!dR)E1Xk zK|AkUSzTUJTGgqxxN~KW!RTnXGz;{~H|0s&~kWLW#hzeuDR##xG4`A_Yv%K%W)u&^2SA zi*`CG%KvV>mq9_KVXnFS#iL89)Bf zg+_+^(n)(Dm%7GS)N0WoCKDQ=MryO>=JGt2dR$c=VQ-;THW!snmho~hto)(rAP z5wUYEFJ9=C;{Hl1C)BQ-69VX?$evRcW^~sZsk_dz=Um(Jxl#)$_XsiJ&G=|JHzPL| zY}Pj$e&^Ze(RU5@PwOAN%ss)a6sJYprNJ&~RqkGHoe+lMjwS+(<9ahJs3~Kn#}jbr z#UdE;`XPOBH007F%Siya3zgSRBg}}G+q=Us8(RF{UHW$r>;fxO+$FzmH!p@mCbNS# zT{*2}xgvpl%0<&p5+zrW+~{ikj?G%>NX zXv)R&CoH>pT#u<&_mf{**3`7@Y}dPXoH%-j#kU<$yUkc~*^=L%S#(?H6~}-T`AC-~ zuheaW)&wS1k=5>ic?5)hdj)vI;NYp;&*HpANf0=21RcvHz`8^7qq?jcZ-k!Z6z6~v zqX(XlxfhNXsTXeB$HqRb#jL{`LT({)w}?)}nuv4S$CuD-)I9OWK_5V~5l42!i#)*R zR_1xLQOg%Vv#}?a$m7Cy$=O%~Du3;c?kQ^nMVPd_qh79T;9KDraR_GqPf?5thr-^j%#8*hQuRuFFi5Oh}X# zF_pS2-zcSkr|Q2k+l&y zLbx(#+6aqvgynU?W(N=BV%rj%0!NiA?k}{5M>}_plye1pU7KA|Lt0#z0Ylp#cn*^oPaD%NVFK-Q zL!tka^O;%7Yqdt$p4#X1ViWCKy0&?V>#^^OZ|c2RRR(F-w;W}o1d3>Bd1bE*o}%;j zY}nAKgn5|BM$F|$;$EKwDtXDsu%!q(oQSeC3LESepc5750}~3qN70&w7&DVWoX?;* zRm39}qwS#e9*4yOPuP5u(F}Kx4K{%qyU~nn_iJIPOuB%0f>D@Q$VHpVYOlFzlMdQe z^@*lxJIh?_JjLSM)HVTORb&ypv;-Ko$l7s^xv_I&S@|LLTk&)hiS0R#FTDS(6X4B% z!8axnRs{Zg^3tXWJLB1UJ5sD6$trRQO9oh?(iFYU47XP+x&z@kF&J+~=nyB6Orx$F zq1co{Br2rTpI*xSD@mZE<{mLJOpXRDSAz2CLO2-br5=u@DB1j0qhx!mYvB#NSCV!~ z@__wP(@9xuqEzuPo28bYP8_VtCgy3&%+x4>R27z5P*U>4=K+@=SQ0)#70Dx|gN)AL zS|TLq6c+J9#^V@Cg1$o!X%d7eR;b_wuzVw1iguM|`6h|_aF;AY3)GC?GJBGY-zake z;ufr2W;<#!$X?{T39RSPtN+2v%s5YKu|vtwe;~C(l2ZQ9WG#KVeJ$_tJG|}p!k?9K zf*nE`3j;pWZ&MaM`d+wSJnxE%7TWrHoyWXZ3@4seJlpe!wXSZ zABcWx6LwQcjJh(gol4^QI4sIl@(3>nGYl)x2heWO^ZbsSbR<~99p~p^8G~K;9o}zM z$$q;^o9jrU<9n8NY~({pHihbhmPl9f5-!8_I$;gedhXM3NUzb#05n}YjrPK)pFl(_ z;r+w|Fk@ktABA?Kpw<$!^@_^a+OCWfC<9nBMkJPE39WF5KS`FN;R-MGx2|EcwN^m! zcaNfab!shxTEX-B@)GC-KzO~o&`-P_B~E^Qacc=QgIf}BC=WqC_3$kGEnX1AdXA*r zCS<^n#C)>}xgCMDPdZk@)-o$h!PW;1Sd{j$s(7UyZWTq8#fT)D=7Y7sC?5<#YY-J> z1Gu=1dOduQAg>iS7%9U8EN__61mPljk$voCoCRSu_N?8{#MD_3fd+_BNdef&4cR{4 zpzsFzO9OG+G0r!SGb1^;aWMR(;k@OojbD%hE5IR0s*4F9H{>*G@C@S9+Mb^x3 z)zgJX^1N#r>@&iO^N~l+oKl~8W9O_}ErUWJJ`#noi8JDQh4S|12+zl3IoUPY18tLS zbCJDQ2L+2|$nD>m%hURP-+*ks0G%V8kKPd34nI58BdCwMgKJ~> zmGmcaCjzZ{zm@K{t#7^zb?-Wr692BtqQt*X2erh%>XF#~h}eIeYuBBv?kDYDmpItnM08^L_Rg z)>p`ko6!%x5VOQZ61MHa!g_BNID~noCoOLh#lFFlidEtLwv0!uDaf>qh-W+sx662x zXG1EzcG>3mXlf;YAX+h+v<4%zMSnXjsbVW&mG6F3?kc_-Y2|((e1X*nS?)kynp%e1 z$_=(=TEh3iwsJ4TfvjOJl$#SzL-0KmjzM6?6g{vlnfPAgZj&dTWeOVWd66fAg8UF;X9UbdQ^5fE0>;+CiLpJVBtP<3Y(9%^TJ+i297Hr z+=2|-;tIRyC@?xIUG$3sCh!WQ*RgmO-eea0d^UHnB-x6MM&KTt1?zO|1>IZVGN6^* zpIu3>alj8MmmrdUNES$EECpp+I`_&TrchI&ytD$Zg@sKs=`F2O6lzEZe`s=r4Nkid z2@4MX+nFI(@Wd2((QJX37N2ELvMX2~>!ntz2i33D-@VAves?=F-`n#0uhmD7Ma6Jb zT+D`v0`V`Zcc^wYg++e+Za=$X=jW%@De5=dp{Yv3u9jDI_b7iC($Vga@J8I6S&7DF zh1)e5R=bn&4){YY*z7|-K(JW4(+dv-z-(p#ur7p}hla6mZCMZoUR}MkjHoGianMl_3##K`FM`%COmE4x6x*(W-+`Y;*;s zc7<+BdA%^KLVZPP;i=kMyd+v3Oi9A56xe_|kX3+@nfS641gPf-$b6Jbf3Pe3Ltae! z{18yp(BITu>UWigDpghelHJ0VN7YZ&Z`u4qtbmDsctQF5^B(ovSGTIie((7DCpRplk@zs|mrY z)Sun(MS4JAfET@66y1T49Va1o2zk&Dv*pw4oW3wXOR&B{hYs77Mx|Lf08gJ1c81gP zLSRjSa5tQ)NW%GO@dfOOXW1ed;=VTuP9-^la|QHZ(HPcXaAw(&|B38k73CVig(#a| z{K~pJW8*7LcaCJ8jvtwtxO%}=o8Or=dFz` zS1XwyEdj9_-onNX%0YnG!iIP#TuHgu8xa&SD}qD{8DT51LqDRue8$jgYb(KDPAH26 zfou7&L!CjuEm$LjNH+M;gc=NWyY{l%rC2EO_|!)p9;&{je)|`sJpJZCpV4clZ$EzH z%=`YSJhOShZL6Oj`@K4i346X{Hyd{~ox9?;yIK6;g8S4DvD)-%`CNJw;~Wth;vH## zBtwSN>F^suMxz6yQhGnKxzekTBknt z(NY@8QjUYyW3mIVq%lQl@K?&u1$K;NzA5R^l~>HXYR1=rT<4Mp#}2yV*6EMGxBI!% zQ~!4NQE7X_n5%oPvE3>z7~W^#jo00|eeP@Hu9|-%z=ebn`y5cqZa9nkg)y*TVvtaE z;w06?b0=P59y}S3;f)xw>3pFyy)&dYi?R&}BEcONWV_r5oBFJvJ#5Mga26jDM>Hnc zoch!{#xNW%EMlnl&ty-@52^ndfMNL0;m-ih7;;hK^IPZaI&#a*o$ttbn;W;Q=hRuJ zUSL7C+MAel<3nuZt_@q&z39`Yuy_qcl!YEydy4=p5l#RE4W1TRj%rk9k}f2G&&(w0 zLeKfZ*0N`JgqT{e&L4}9M<{xbx)1X36xZlwXCPO~$#CnzjN{6I z1h|Z#cs1(X0cVEG%0hyW9kS>HA*VS9U*zQ*U3QzxhXi~!F8#1THrgcHte6a;$#Z#J zdD@alKKF*gQ*f=rxnylvVwIsMm+Sp3opUmrls&79#;3Pa;P`5#Q~PF{}h{lZlIs_JUoB#0t}Vd@=;>4yi)xV zJC0uH|1|jQSnW;(R&qKA#EMWhoOF9y6}_XpBnJT{sW;&Ikhvr5?HB= z{ZqUnOevYwnPyr)d%66mdd*EYsVYqD&^~5C!zsb)lm~w>X?HSv0UC~#^4Qv8X?o#l zC@h7LrMaSB%9WoKJi?)PXLw%4F>H+Z594QcU7>WbOO)Im5o!IHP6R~TDSA9%4FP1d zSi)&`fVu6SxAP@EGTz*?J6{)b>V0tM?X?^2mY?i)s8aTLCL)47KLHt(CU{}qv8UN_ zgh}(7I%~1BIJ41E^1*z86~g5}=}C}FL(5Y_Oe_hY?CJ|!bBIA`y`10(gH0zo{Ew9G z=nbM!15RJh16e?ugMm#^^h$F#FU{yZwQj@&#}#YGq~&)QadWtrs28`4s4Z?75FMb- zVh?rp`@*wVs;`q~-~(sWUFf||!bQS3RuQl1TwPOBYwXdpr$LA8PkP|C`d^YK4H=ww zNr!&5H8nju2^pO_31v!sti#1+{e}#&3@^zxr$aNe#S2^|7QJCyj~=C^Wu~$cMc1#S zgQ=>zt}_6Doi3^^N2dri`JGIT^7Q8bNErzOQix64vY$6qhRj@Myjz-gPV<8#xQfb z{D7YQG4U0wfq<&~2uk=LP9>15O~W#BvmmAlJWX`A;bh%-TMABfe5PeNb#6=%Okn`{ zEaUFh^TPBo*$D0Ep^&Kvd{J4VE1H*F(6#LeOL+{~)Z~ipjB<=HRvr)}XuwFkOGZ6# zuFGTy1O^nh@xLIPEdIbBXBjW)vAYMe4!m^IT|+|;>t~D^a=FW1{?WZ}KQv=h@7`I1 zO0J#aTp7>X*fjY4or_;)@6Vd``kfTAJ^$4$TdrU^s3goCcY!Uv|_dblv$=X&#%^|1zV#oR4XZ=zXoCr-rIjGnVt zU6yDpar^QN9WLz_isjiSE}VE#$C605D^^`r-wShWkZ`a5Dd}3^DFueuDm|Fi-5&Hu ztg5=2{i}an-2h$P>6fn_HSoq~#$SF=x^~X!F%z#nylzujaqgYCMc4u!(yNs^x*t(m zHHdG*iWmcy9M9UaesgX~>85puubnt%^c-pHEeD5>f9A#kqb8r}rX1|wrH<}zUq0Q7 z+oIJq06d}!I%n%0r(f39;ST9qJhHfqKXUA-Ip>$}slo$rxTvO#?s~Lg%iK{~WlKwP zH{1Kyb?L7hJkxFRr~zop@Pk_EThaRI*fj)}D!R4#2yM|v@?vO`{;5%WZW`Qc;hE1C z_8NTCo>AH-#m7I1f#Sm3H$J{<)#Dp)FDx!vzlq*%B2KA0)yt&G%3l8TRL8VdE>?xg z>h#pj|HNGzA6vcpv5o7C=vn;j?aJO!dr|13GoLQ%Iq0Unqwr}^&qYe+B2)qFRKlH! zjmf8D%L2w)>-b-KKF0J{%259%zLBW-&60k)cN`wirogH@Rc^rv5M?>&iBl%X_nv8y zTh30LfVOVM2{Fo9L9dP*=Xscy4rc+{fk}Z8Sb8Q-AYxhE>PSb}p>~K%zdu zaXd6EA`gp{h`#J7&x_LtN`6pO@~lt@J>r3G0|@NYr3=L%X$oaSBPGd^1g%8{_uHn92 z%PY?&Hi)zTUO#jBoc@EC-g9;JTeQZ`6b^#x^%K4;nsMeuf)RuX|oAHqy#?W4`@5{f# zy1))MCpH*&|9A<$6Bi{mCpdi9dU_^n#E1{WBJ*ING?tFl8Tbw)BP1v(YfcvjdZ`fG*v#n zC-^eIKjPp|NKB;bd~ZhwaDE} zkJ4(SyqJ8J_9)(4R43FM&q|fZufoBZo|UW`e;&V5dn8>5gYh5J=P?{epfb zdE;&63o!a7DKX+EeEH3}I@E@GB`KM7C3Q0W7f}wLRq-`@N0U%q73vilJv>$G73vfR zN}}fo5KSJR1+CG3T<)OGx%hQogxt@_vzC)?`llB3Wzd z7G4|ai?c247;2N0I?M+yNBl~yCa7^0#)n>{y5_Sj(ops0=EQtd#NNynNH3pVjh1S2 z7*D4WrE6QI1rnVS7vpZ;FAx|_2B;5-i#ByfN)FjOYKNpOa?#e-2}zSN+#{jqZQ5N< zUKW>5NE`3f#0}yy+|O4RrMo;EWu7?zA>wkXttH8NqFphqC$u@WiSaILPWBn*b5cTD z>&fLw8%A)-svUUOwNC$JJvFI1zn-Wex}5)lY&EMlC+4$bN#UZ~u*|G(mR?4eLd1Bf z$(fv-`>C}=o6YB*ORXq;N>kI?Rvx;8>Iu=|bCBw(ysJ$^$bRcQl&GG`QndcWO`7y$ zE5zMeS!Y#VO}2n~RpjNJU9EK|mz3l>maHcY2ep#!ArjAXnkm5AnuYC8#Dx>Yb)8zMCWn&s< z4oXaY2e}15MQfe#orJ;jV5>^)%=Df3HkV}WJMmww--*W{Jv4*qnYd3p*7{|ZFiABe z>q7I}hMxC8^9~77A%^&kQe-cw5$cdIyob;SdFuv&Gy8JkO29S73zLPZ0By_?-~@42 zxDXAh{V46;>)XBmwZD7XUGu-ae$v8)?BDqLZsEd22E8s=K%Y-9T&Sku$GUK#{2{$A zSU{ig=hW47#n1oxE6P?6&`(SCYWBKJlC%0y$1APb-eUM>%a((Te^ru1Shw zd%@G*)9<7_Ccoqo+WM>Qs`Ib=wR?W;dO;{@X-TYBj$vi#Ds&fmf#qxfut=8)BjFz% zD@+uw5vGA!?>b=~ScGmAZV^@hr?OtyBy7Ry?0(^4;ZflU;b~#FuwQsycu{y+I4ry& z{8@NgI4*o3d?fq>7^73dx3p$OUC8R)_CpJCRrG?N3ReZh?ZTg^EB9xAtElqeVX+H- z^uKVOf@^9n_`8D75&Y<@+Meyi`{)Hfzx2HS_B!QQYP8ODXzl(5G^+gn1q;q*w|(Lg z(<)=9TfaDWXYz8~gzMQH2qKAN>M3}Gb*tSc?S0$dl)tDe7pN;2YQGn->lWe}t-o9A zMZ(+muib}K8z9WT_&wI(m2F>W>nOjc{hv|4)IXfhZ^x-Ie@$6I z-x);~RvtTZnX)2Llt5S_E5mosDc5S>>7Gk;PIOkTJ#!tNbl!c;!E~?DZD&S^N6GfE zLs%h4r8BUKlZA{YtP|}~6vSa6oQ)V2UqpExMs_LAhGa8;8cWm?Kx5qsx zotb%bCjQ36y|ey0v;U~4Mr}TJY%^Z)>?P=dVc@NmNUtUpj*(9d=YM+O66vVw9yVw0 zrNidTk&d1#5_ioRcIjODi0cb*=MyrWIUU&FQ}^O#cu-NdygWUxsb;^et}c+5CJr?I zbq*@Ahlz9kI^)Xbac^(F^X+k5`GwUd-*gR(Q+i!0k(>w|WEp}(i3f%_z zX6O?h=nCH00@E^D)5xRrMA88HbZ6C>$1sH@bU@ZU-{2N(?lyY4FW z#g9K$Uu5+kf6VF=b*0&nva(2aDf?&YU1C$WL0h&AtS{d%cHHfv4)?ACgNcC|*>!l< ze{dI`@DV+MP1Np9-C3%x$yv89XY_;#=q|PoE!o+wCFiw6;l3rU^K;w1NA5HXM@@_j z;<}v|*8SXxR8j4#TYmevu^Ym^9Nl1geC8F=GyDZtq z6-aL3L2x+i@g8WaI`|Ng-cXOj1-(@kmHP4Mi^nwddVZ_=K{?CpTWe99*$`W|uId*RENj?9Q+iF=HjIU8 z)lYkOH6-@pcJ(M8^H)|(^XGfDpJE1z!v`IdG*+zlusPr`K@NW{-66TdB|eu@(klg! zNTsSytz@rH{$c&9pH|#@dZqf&sW~4lV$OpvG3TO>*cU`X;%zQ>8=qvU@lIs>WzM;x%2^St8a z7jhn~y-mGq@doUy{`S zR3-MDR}HLaogsoc`G}B>TDaXZRRJ}K!Eoz|)Rb4pc!enaZ8iQEBbnDS*TqY&8o0P4 zyX4^&`g5Nd_Pr(--!klq8zaSkD(lxnK635v&o1jVX35xw4Nr^*d(1m;j~;!~mHq05 zZm+)dCX`o$$!kD)6<8-D6cA6onPef=fLZX~*AiIZOa6veC@%)Nb9>~A&pl;$xO&KB z*0uS{*$-?S)n#&lZ|j^n_xBp+@MllhaDP+%Eghqk^2n>Y-Jc!JuK42&d)9)P56qdp zt)h3I4l}oIoi=h@zGAp{_Vo{Tt;ij*ZGYDel=`wBsEiv?s{m>T3D$f?RGqeb8Ze^5 z3p_3~>*0BUk`5cEO&`)VFVf}GY1iH{V$nmF)OqI|dGEf$-q&@RamT>UvzqD#Z<>6? zOIwfJat)py2m0X{p6;MN#v|!bypR~0C>lrJbjMW}|L)eI{?Z}WXWlz;+Z_4G<|qC* zdEm)C>neL)zb*RWthcw~DY-50OYbX}0x1JKKh+HK0*#;&Pl`risikhxOttLOyvJ(> zbt$eKU)!nQ$Uyv_tEMf!bN;|F%B9wf+JY^UCKvV`?F*lKe%|sS^Cw)hwge9pE^Aq$ zlq+BJr{}hR8hjy2`_CSjPXqOvM^C%yt{d{Z_DVd_`gr+2Kb?Ji!J?rH$4^*q4T?wi zpL=fJ^1<`RQwi`bUx&EJ822q}F^k3QL->~6z`}Wf;C&))>>EQpGOr^Sb0My;Q!ke^ zynBC@e9;3K8~{R9+$M=OkdM@Ze&i(RN5Cp^Htq)eQ?SdW@*sJ%JOklXI@w=`zY$?S z{ZRQ6A?f>+U6^k}7Sr?gwBRp7G@i-qUgphyux}w;Wu?L(9w(p(*)M7L<96K5WND|E zj@nc1div~=c1qKEYfKJ$nu#IuL~s#)AFa6rNJp5##3Xtj9)f)>f71O3w48)}u@D~O z<$IM$@_Ix1Fd#K6JL<=ZngooN@i8 zF*}>CUpb!*x~Tt*`b)cZYh|bhD5I4?b0zX5m)Hrk&K@*kvLnC#B6JkgM~#KI~~TKa-U@ln2`v^+#xo><<52ncNJf!@m&I&!-*Q;@+L;YBrt^M zpM*QR7ChC0m->+dcA7xI?X00}$y!HYawmPzlZ_WE4Guz2zP?74e751&4$%VX1rY*P#BgC0+` z|D%Jh8qllpcn|is4Qo5)=6XU`Q%|+&tg!Wy*6M`T#x>Xel9wy66V81uAp@YWlszvF zmDWIxG&{{uwWG8~En`RUl(z54V}K_piX$T83bs@|%xbjjE@A3nJf}_nyg>UDr%rFv zH_z8HsiuwW_u?e!KCZXXo!WkbbqiW+tB%R0UcF(%)mLx0{hEH0Cim?-88^^J`sqKp zZ@)>C`t?Ny56*e~t?r;$&0{+~!nA9y;Ofi^DG1pZ-snw ze6$vO=fU;b^N-{CE3{Tvz+Z^xw{h&XJ^!}W=N}h7$Mf^z01rj&QE^F>HAfFb@u83x z)<)^q&@_|o*V;q9rj_>|+nwsQ-)Il@n%188c+3?a|6gp67RevO^*Gm{zm6fX%rvb% zksPZP?LnMSyC{1tj{g~4f3bFbn|xK)M7`)QggGaNo$Ak@&qrN*{(GV`RsY|3KGk1) z{(Hame9X~T)ys7ete>UA$+$gM0N`C-C6a7sRRVbz1^|GdwIHy2eGgt4E3px*bfCvy zX|t7>V>%n0NOl`Mu1qdZOABP@$6{GUg-E8JS5#;hN@7L1g~j>#q1-^N|MpO^2N`5a zj2#LJvI7Nve|}-Cs4TzGUbK&Oi(5Np7nC}gv$CwnQ&iR-rkuj!5hfR?PLAnJaK=d> zhbY_caoeoDQ%x zlqf-x0dhTK9dVTkN;G%X$R{7n`Sbh7*_6L;JF_VGg8$&X>W}KvUqA8u-!4)wii$Ta zRR5*^CFHF(P3Za*cxC$xk=7Qo9v_@#J5J1bc9Uz}@6@Z*7yk45B38FO@z~>pQQ&f* zLqHScvJ#O6k=Yrui^T~U6N<%Q8N-Uj!p!VoPDiP*Vr`jNOe}(h1ROQujh(WgbJR12 zsDl1lfw57h=yZl&B0=^=F`yVEolZbDGEwZ1UYaF^9N|bL>Ii{nBb4PVFG4^S#xY>D z08ef$3b{v1hT*^ZMeK-_p46zW$58LgPj;j2S-4VCiD&r1T4^|CFwIv*jbqIU& zsvI6iRdTG*?;JbbqyfqSkLHkaEnJ%e%?VD&bGs%fY=ED{;PAo17XqNWg~02l;H`zo zoQ`O2%7KRCw;nmUT^WSms;SYoOU^?83NMlJ)>TzH+aZyq&bfc~mF>=*n4cK4mmQvT zQ(Yi^%{`C2ee1cke`(Cweypqd!~M@4{cO?ITi>~T;-(|;)LwVuqDy1b&Wv_g4QqNX zSuuR=w|~8xMW1`+$+Io$2al~>?H2Q!wzDqJFWaIX!JI^_o6dm9lxk>ce9p6fB-eZa z$P6qiy7QJv&UlX9M6ToaT#~%UnY^deN0Bt5h4ovS_uXI}JvwH4C@n*-CnPmQx1k8eA+^MNW4PmIoWelk!P}I8&Z!5Qodd z4PrHu@!}uuZ}cPOlHYBwH!-_ukZH7OhDioiX<&O|>1=6)G#x z+gkS{)mqoR&o9^%Ub=gE@Zw%mo*fY#z5C4K;G)3p02>gHpHSc1drRX*8xw29rK@A* z-ETPfu-Zv}V%hTL%P@an@RXM5zQ_EbQ=SLjp#U4G?U}NsV<29+-JXfKC`qqu7puig zT<;d%c@Sia(6E+(?6B>ILHc^#{GNqzIul3ryOP4!J1zmKBd8|%B&f^mHJWpoN)Xi+X&Bne=j-~E{R zF@VIW5~E5xAqa1Y=Pi#E@|1eEd73>3JS`p_60qx$V;UUU`X~|T%FJf4r^V83k}w{v z(}NLPr|7VTX2eV;8JXCP!1*>&+m^_0Aq8~YY_F7MiezX?hB9E1BwNMXMPTK&mL(~n zsDVw`?XVy*K$6dIBkNtbt5EH6a@U8wTH6U`gE!7PDbqu;wfn9i%R|qW&lJY@2bdm7 zk7S>v_7pc0+&)Vh_J_7GKn%LrVn7c)j2_Yn8N#8sSqXz<7?FEW21qN>SO;0huCL z+@4-J8V&~#+*QKh0D58M+I|*TZy80gcrMQ$p;*Dl6-~1Od2cnO*(IyqG~Q{mAt2je zuvzVh&_e(k^Z~PVn6=R=rMdF0_B86Vv@}nei)#VNU@~w9W2NUR81FGHqr0~2SNKYa z2Hs9|>G&V`@PrH{sv zzhlSgKi%aR`Jh~Ow)w3m(T`VxJLD_GfL04+vO*LE!)`5@_kf_+A%x?IP^I4P4ZaXq zW^mO&?J9mYvJx-C$Gfr|W&^*F(aA}kj(8Zea3nrgme^zvZ0PhxlM$@*k|dkVCdDk8 z6q8x0kR^y5WKf5&ID;|600vg0Ucydoj%pK4XA}`ojC~m*%FwH3!9{0y!Sh zKyUQmEHiY`ep5U{6XEBHjv@*^+1?-SzDBftt=6&hSC0PeVmVLMv(xJA#3V8D2lZa+ zuc7EKFmIs0N|XKdNwQa6W#|@QEDw%U8*^=1jdq|WoRs8!Q@p~jK;Nms_erFCQEoQ zZuW$+9jAvO`Utc-wi6QqoAk-}AgjG{cmQ$3END$jbFpABD@#BoL!naa38r(aH_dML z7Gr=BQc`R-2D1#V0zC+gvqHiw8~`OD%dQ_1wq=!OiCMivS$s_F#0#K}2+!(^$Oecz z$u+1rQ}It+#l_zU^h^sOMNeX9O-D!`L|e;KQQevn8@kN8Lpi(8yszH%=3VgEN-!$Yq=zv-2g=k}u$g?{L*Zit}@ z3E#y>%yu#pof>=@UYA~{v$#SSYKt|)VzGKj6Y)S3@mNDX$)R`YjItx-*Lyu6AeU{> zT98QG>v6ePSPxspJFSmd_gf{i)o-0`mG}aji&dbfr_m#tp@r0XBuhBoYVkm6v4Ag& z4YG{3%&+1fk1uZRPXMly9ST#Mmcx

(mXFfxNIslYld!>R{2f|(WG&IkI}W6cAmqn=qCLXmktGqa zJ~AkBAR-Bo4uT%VgJdwJ(P;LPF<3v};WLxe3R*wc@|h_Ll?4LK8GQY0fz?2|lFv+R z)il#T6NId%`Jr*AFSC*#9*x*-giy$4!%c(VnV07^Z@p_ zHi8kpQluD0syW9X_C?_Z)Q4NWip%V7+|b4_f(*LCzu=uAh7lXA!6VzwNmzDmpxd+9 zWQ*O*%;3kyMu-UJQuuKVx*4D!1B-~vk3uqzLb8Q1vj`u89MR#FWH8FskUU#{4569! z8KjP}mv`806c+oNerm&uG7#-J}a zUz%^l(a+}yXE9%T$ZqpG!cLnvJrra8TNqblfhy4bJ9sIcI zwt&qa@{4}IE9@?Fi*C0UyS|V4yew+-qCdQPhe0ug(u=|lhfDFgeS*e+p@d9kTx5&n zd+pFsPsUxI%*saFGTTO*RBEfYi8h%SOlLy>oATav7^y&6I`eqSfkabVlL47yOJu>=QVn zuz#k`D83wll(DwMI?Y^-^8#lS&Ury+8rmVboMz@4Jh;AhE^p_Ou+ za8LZ)G&mD}w`^Vzh>TKe2FSKwCVpe)28qLZIV=oT7Jf5s{xH{4^tbWQg9R|rjBn*NkPdbuY zginU0P)1|M$qXqgJug3;m62{2vf^1wvLvLbw55mA&wsO7^k(5(X_ql3HHVoyw<4X;X6eJZ@^GGDsRatyLr)S6R*ZQW9 z+gJ7B;SP@+dd{le4JGY@Ba(>SyEqq-6Pa6Hu&(gTkKBYJ+P9MLwOa6gFO%G=;*|jEp z-K6I)%O1V^!=^6vozScMCa!+r-6adV+$T;r=T(s(G#w+T9*Y&bL7>Cb+ytY@TgtOX#T2Xz!E) z(08rE^muW|9=79XYe=(NlgA9bVh~Ir1z(%enANCd9*GNY;Y3Xq0gqQpUubq_R0?re zkUV&U)?$7}@N3Mu>>*)AVet!1k zy5LrCkIT+p4V{Vm-A?PzVkH^Rdtwc15xWbuaic863T&>p9HX3j*2>tgrC z#F((Kv}tCcH<_L#9vd8Mj7be6iC2j9FwVNFAB1O4Pd>ApZ4xr*nFEJZcZtgb_lXY) z^>jIE@B~JDBp-`)+SMQl9<5At)Ai*{UJ+A2)+{0%L4$;fPm+TWk7ee3f(6lG-K`VMW+ z7Z}TzM#9*dhr@?|m(UAw^6)?JV0TOVaaIJ6Eob1uu#n*)zwq@!Y2+Jk{DPeK5RarJ z@Mj`UwYpHkdvJa4S0(&s^JtCu=Kt#XYyO+(>pns+Y4h|pJinhn8Bj4%^JtEWV%sFu zP#ans$mgZa(%bkf)$Z|U(=-*ucJq|W(uFg%2mFw!nVR-r%+wxyrt*FQ{lxjx6tfiM zFn@ zn~=hiYd(e8gNXVT!%T)HOg*5iYAQraqhqLJizD`?{8`7s>Gna+on`%DD?~guvSr@Q zvt>H=2py0KfeEE#mm{|d(Hm_EivLJu!;B-N)!(p=R12T)7plNjVxjY5HFFk#H3sZD z$KoBZJVbNLGxZ@qOoDds$b?x4o{HRzk~FEPxx8>#Zb^BE@{*ErG7c3WA!_;Ds!F3T z5RtMx20&CyQK>2vMy{)H7F;;snKBg?6*Z5j?xyR>_O?&yIH2{?=TicbnDJviVhAP6QMJV71>>@rE! zQrp8pk_qh)^u_qa(Q}&Hk8{Bgxs3~2qmEAJ9`XVbB}^<2k+HFAHtE~Y$IQ_jS|qX1 zOHY07eAu>T(gM(J3=6C8o6m$l&)-_*U2?;Snx<>3?`rBl{icaq?{a;|ez+q#dvhps zoJnu&b1YuAf1B60c~Zwao|vug5UhXj;^OM@PjAJld_~KL@&dUp_>FwR$lV!Gu60D? zgUD+Wm{la-HQe-?#na6i-PhRk(lti2qSK{2o#|e<1y4PBgXmOmyWz*e zwYRXYKm7=#>PPAq7qbrYZcyJvG*bKgD%r5Lbz;tV<9=noMSN6w)FN(Cwphe#lxr;F zNM)o&EK~|DqS=C!L_g27;_Xmrjh1@7!EmM5npdspW0b>@GOEC9RUJE$cLMBlagPtk z;EqKx=kboQU{C_ODT-t?=%yOnXU8tM&W_Afr6u7GC2le7mMTj!Gdmkf0X?-SX?nRf zU$M`VSHR4R1fH@-uGP*YL>81hlt6{i4jZRDkh#)RII0z%qN#%e9pxxTe>RbY2eJic z6?bM9l1_vF&vRI+E*))p6JQN zTj$<%+Y`6_e&f1TjWcWFbwhfWb{RTwY40gF_aEPyyQ5!lv2A*_x-39_h=(K`AMsJP1g=8sdPJJwj)IdHOqJgm^-A;59yU`GJ>(;MltnhfhSXGrI zly&c)*N2I9B}j*t9H;zn{trtkT$+CtK7kX?mF zi3SMSG&IKu7A)vJXvhT5E4?dcHW1KwdkivU|6|y~=1HdriIhk_p;Cp0Lm8SJ}B}YGYBwB?y!C;)s`BCz8r9x?n+9N1H(*rv@KFs3Q1E~P`7VBG zyCHRX-~mCRRE%X>41Q&gCqo|#9?yt5M2uwt4R}GgZ|q2?6P?6PG^Cw6_2?GMJ>DZ$ zS_& zuA5z=&E=3lb7i+@UNEqpiU!O)elBPmRvIln0e?QQV5ci2(_nIJF~DR1$Jla}l@ILs z!-_SWvUJeWo}738iviuh2Xy(S%vnRn53Cq^+47m}2cNpQbjRRi zGaucwZWRW!N8OMf<#m@1ylKFM)|vT*zH#Iw-FkI4vL*BG>vYpqbDp_H4R@S+>9p~e z-dvD-^VAjdMT*eoY-#J7S@s)irjFR=bS5LR3mejC2HK!kV0^S$i2WDTNdNQXOO4Sdt+|Xkmhr_f zoeW=;yZ3)F1mpP-gfC-0^~y}K)_471f>IvV!zJs`>l@du(R#gCS?6K29xfd+I=LRQ zF-)E}?`rj-`?U2?n>p=zyQG+U8|&c^v@tL7Z+2zNazu)E-fOUX0+qTcdT4ArkVk@q z-9a0$QGk;X&|749Zsr;D&=o{9hrRYkj$Cm<9fyYqpp~Y)Lt)ollhP-YtM4{%Xt>8X zJQIvJEhp8>*~yk8*zJ499RlDQCPOTZ9CK+c=`k=lzp%%cQ7J0r+~aG;-)$zdO)yI! z&Bn?La7+oKiYgb^dhTV~4r z2++pnBagEm)*9s4*h?DYdZ=Y6l~@HqwWZ&CD_l``A(vGt>79j8KPfSt6ON+!&wZl) zs5#wm02RjKIh&Q|@Q&hjXT%+bUS?owdr|iwVYVQe=(u9O8_dmYr@?^4e)y=|jpW2^ z=UdQusY~79FwreRflN3dvgL5n>I6tPwX~rLjcuSU_j}U+_-O~(@}T7LtRGOX5ooDL zu&+KU+V`Hi;n-6ho)VYgm-3wY<%{@-I<_2z_YNmI)X<9les||c8L7ZfuG46(On<-u z<79feJq{lce5TX~=^jc+255(azsAb}rgAu#$%wS87ArCl>A@H-WyuzJ`YaZ`MNUyw zTh5~H$X}#@|Loa#7Ns>bh(>q_b;!vB= zXs(CgP2z)NtrQ+$BC0Mi>LkVnqm|TuH5_E77?E1rfFuK2x;$gVg3l2}OpC~H7@JLc zD_8;zN*Yq?G~w_ggB%X`8ev}2>5%CSRtF3$WpC7+J`OJ5n(~Szo%aMeE;$|u&BhLq zZ1pL$8iyIh$x_zyh<^Nj7Es^0h?UFP+2`&bE%k|>+doCRD=L3<{P^oR9%-Csgu4oLn+UnEJdh?@EZ8Ec$!Td}>tOPBTdfS3D1#y) z#ij^3$TBGK@G5ZbCQ%ep!~|ypa&8jPz$_Tx1t!OCNSUd8tVkhXC_ZMAVt|(yIp>g0)h9 z0L1IEUawHMD9T`6qsGV^&x0%g=uh)Pb918yBuGC?HJaJWu*{&*JB;MZ256+sVRD|M zLg<-Q3!HSOIa|CL8Z_!P!a<_%FGtC$&wsg;0uvY-iSY21cRC3jOIs%fKQmr z?4?2(Dn!OaKEj$cm{vAuW||VfT|2ad5jF(MTD#=%tzTUr1k{@mLWNL_6{+gfebSM+ zYL~wpzqtP58`lBq5Xni zqYZ|19E&6O0D%QStVU`PE5D?*O)Tnd%OzF9-D3RVdQIkT0CTp`uBSuTkIo?CyvhON^L z4+dFoN5U&hc{|)VYhsmYAup}WR~eJg6u0?ApKgUBA>n}T8oZDru@uu;2dZ*O%m8M_ zB+E$&G(?yvN3g&GS_9XuVu!YYEf&W_%*BQZA5MoAkT;6G(Fn@PgpC8Ah8n*B|$);xBA*E*lK0zP@g%Rd9DhwnKKn12Qi z7@x00(}2N4D}g%1=PPkNVUgT~MS|{!R?FwmYLhTG-f13yh+*iI68{BH7!v@_#nxnq z7)=>4{wNUvO%$PqL!&a`z-AOlSAsC^#ceSB7>vBpg-sPcI{u*5)NII3Qjhpq%K=jZ z-iLGq7G=`MEc5x_ceGqpm-yjN7+^GAy5{V%=ck>Eql&0KY^l04y!MD&$L9(7OqdE1T=by4B6@Z%ZR1tjRe3vV!;uomR_G?A1U8tV*yQOSqQCllanJt?f%(DN}S2bg8IFI)vk`W9t+V1gMI5lATn<*=)8V4%dMKpKP@l z9eWvOEJrsRZNNQ=LT`i2H){>u%>7?vG0Y!d=ycnA> zb0rMwm(=Hq6HNJN5B#k>Kb)JQUeO+)0F_J89gU~J}XE(Z?5gfW))-(e^TR?CdtiW?IlDZ66 zqn`Q9{`@qv;M2S8jR1epa^4}B1?GI$5?~zS>8{FB-)LW>PxAQ&xfZ)lx+Iqwj!~D# z?DLbI5T0c0YFJ(hn`pz=Jf9k`aI3PGbbr#|cj4I-aRR;ow#1#GgkRF2kmz_AIk>Hm zU}5A)R^aEXt_IUEz)UismvS7HHEhhGcp_3%$)4~cm96oerzW;4)zx$nxUwPi{_bWSF zseLU{qWx@ddjT68GHI5XOEb7<39B0=J#m++}og&^%H_|z@^uwA@O$x zd5T1_&8eG=Bjz~^AnVl(D?iFw12&mt6k#aaZinv?KCC2&g1m5?`<`EqwH65XHP05{)J4OfVXz~>X#A7=#;h}V$jQ7BsyaK>O=6mLM5HrFdDa&QfcNfI5 z(G?Wn;?u=Y_sGuM>5K>q!zzr_J>I)kT`C-B*@AL&JlL$Y+bG&i@_giNb zfg`#R+Dc(QVxtMM3@ueC)EodBB#8qUw3HaIHE<8OmNSG5i>-ceFZlqlbdt{rBFo{N zg@qF9CRS9FU6F^EK@H1`NvTL)KoFDokScowK|ECx|9;PXfBN0L1q;4EdE>VF1?;H< z2O9^>-c!^o^YN<}Kdo*+-~H|EHxG(`xMRh>Q01%FKCZskFf#F){H?rw;m~W}d`I28 zc*wFl-(1JSnAux#HK9Z-!tdfkkQgIs5diQMpejT)G%{>>l4Q0BiUfNF8Pl=Z+`)uVuyL^8L?qXOaPNci;E>exJL*B$?c~_dMr0&pH3| zKj#Dl%#4?zC+$Eb!ng}~7(tKG4r*ZruZ6==ZG#U9mk50iQXL_5kk_ESe|($=;YZ{g zBILjyjPT$mUwp6y4mcWS;_*U9(A9!Z2}QF6;QbDvG|bM3_xj-v_aC%jMt$$U{cXVe z?aN30@!==go%brsG|w(N+5FKLy=KbN6*u);{n#Cbb!|JRXbdl|`Xigd<`2P^5h`h? zf|Kh8H>wvnxspqC^M&F}T#@veL9dy?YDPPpAb|#2liBJPj0P+6#BSj-99;4MV?Bw3 zOWY1jtjG8O$?O3K7jh^w$IP#rCA+!Ie9kNp6L&qhxMpuMr`%(P7i0GDCFML^2TYr1Gfp&66iT7yG6ynXFu3Pc`p!UO)Bvzp}5` zSaG$e`MFtH*}RC^#oW6`-SVgAKDYE<{{$mri;iRhdxNt$#>C17XqIW-&`95DF2KW# zIb6jWO5VbT#?=6;kL?KTBu?8|#%Vi5z!GX?LQj5DX*$SNl95Wdnf&}zDgE6(Zv2>P zOYq4!vE)hkWRvhptU;sEB9PD-F!E7C`GRa@2H9YgQ9nuHl?LsxwNahk1qWWE*NO%Z z5u)l4A`R2yedIJVBk|+mXQAo=7&l%UP4)O3lbxoPh%yQnOsvpUW*UHix5jMZB>8_| zxG=ND`GivaPUXTaRJjnZU%-RLs}>majD;J=i}H7X?Wex3e7bH(BMKMVuy>W}=8a5Q zpe#hhbsWmIiAM!X2-Q3ntAGMY$UX=5Z0$0imU!OMLoF<6LQv*2^QD*)`XN>Ge1`9nNBz{>5E`6Yy%R3@#hz^_%Qwn+vzf z;PhIecn!>w5wTwYv0t#j6lm=(UC?2&+E9mRwV16Sy198GBZrE3%o*l-GmeIOvuFW+ zhE5?KZ?4%UfW;4Zh&X_l(7ZTi^?B&P^w_}M_jpx{fuS0oLk(Nmf4tnM#s39qvh#04 zAP9oU8u8}uKy_4ymlCg>ImyS1=U`2PyQbz`cgQ!xPv41!we0CN zc-(+>Ys9X3(SV0y!HI1@HxE;%uB3MtHhy2)Q&}c$NGO%t7K~qBuLb z)aESCGGd;PodvO?!GJL}=(A-RG(J>tMvNFK>C&LKIRXI3A3`|paurxYk?gjr`A`S( zz(K%s@RNl9rJg3l4@itkVmh_Cnx{xd?Zx6}3nhi95l=fzgmLgeLnTGBG4w)XL;sDB z1^%HtK5f|FPdUeaFsOdfmqd4$uD^y1{Jn&#&s(%eztepM6ut_#H(JeJ9>^ zrREOvjaPKGrF3tcw}S<`R`02Ow1&s%u%lOlm+v9|KYX#zp;Pm4{#b#6-5)dDl)`*u zLirG)5|~gIL8ew4$_!EX%9z*&1W?f?IZ}gKog-*A3CxP00v(G5!^MUe%4&GwI1q|r zLv{v=8O0D(r3^=JI-IL`n!wA_6Yc`>z14Cs^r*+cF-R`qU3t~r!jBPhr|{!iXEZ)N z$1Z?;!)vJ#ONjNjKN+cvqPsmHkiigWn%kzE@^! zX2x4qY-Vi!f(K}l7DETEVRCOge?*wxXpCVu5w=8X0S4BAT@V0v)#+Fp2tf#^8JUE6 zT49~T3HH1(&5H!KE(4X1&<1bFV#(BnGP0wpDu9WQ;PmrI8ekofk>byRSwLXc@CJL- zfQh^Kj;Z3<=t-r8<-}^F>|1Mhz^uNQ1bhhtI1%)6`yF?P`L?%`yG)!m7HC}Pn>TFm z^2)S@jg#9o9KUVv;X)0(!CkZ44Q%Ee+o#d7+aWk+tm`Wpbc?7|Fa_OtwS+Z&sj zbhGW;Xyk-PKa>}41IN#W3&ioBtgT`g9E^(Xk}7CrtY_>sTR z+mGmv;6%gU$YB)$*^VC!Z|-}5J@Ik#d*_erR!Tk;JLAb4#Xik}<}7hq^BrO{*8D!q z$imqU9Q)TsGf&c!?yiM0r|MHtTj(};bUwY;?r=mcHdJw9s)ZCy7hFhZ7(AY+SMTzA z_34sDa_D@GRpyrWVf8N zh-H>K%X*7sv89)#*QHD8c5j)t&MSE>-gK|mYf1M8xO%8?39`2d4N;+z1DD52=)Az* zNqCkCRcU49)2R_ZIS_Ki&kZjylI|i=#4#`gF$H<-P8MwZLv;1cFEzfj_JLs?#ym5v zVCk3t7}R+6nf+aHg7_c2<`1I`($h_Yq-&n|lI>U6$5t00%Af@^>gK)l;vH-j&Qih%-q3(U8?Sy} z3ydHbOF;)ld5kOyNdQR#B2W<$Zi)Esaf|?{%4wWD(HKS!j!tE^)L<%VO+p+hplPj% zUykD>YP}k9qH$hvoa79C8?0JUxNLo#`e}rGsGqh5U8U8|NukvC^hqtHGw~1NI0j!; zj(=pUpTZ8uf2%NWe;yjJwH15-O72wc7w2}|4kkceTLR2>znxlktD^;vyz@v6cet#f613NSWUf%byQXI{) zHqGwCe)JV+wdqnufgm~xECzo%3Q`SHhCe+6`K5HbI-S`NYL8LR>6CJ#5DunU-C~Jy zR9=rpiiOAxac_K!p>mSkm(~+3;gxapy`(6F6RWj2RVBocv(3!%4Vg-G+{e3_{O0l> z9-p%;bMdtsU){L**}rc-1Zqx*;Q8*uFYLHUQSNH@M3*z$r`|oj`D%?5+68o86Cw$>U12H|6leWK$7^#b9zWka6!9-!*e){JV9kY)9i!Jc~P5Bl_L8oT6`JD12 zA0S18}#2e~mN5h&R%RjmM`bYnzoK<9& z*8I1}3J2ZshmsM|vS9BaZQhc$DrX;K(y4~NH*HXkOIMZu`T7k%Owc%+PM$hAHFc}| z_G8iq=fCZ;ePs10fKQ~&x67iz5!#b&K=uyhihkA#Q7!tFG>Ob$zmRdBllCKpl{ zt`zFAV@DySojD4E77IqNrr1SyfeG=MJ}n;&9NeZ9yY*B1X_q+DUhfiv_Ml62ne0d@ zo9t8~5VqM0QBGNfF}|ofCD?`}7#CoY_r>=o7o&{Wbru9lX`sx%NUdldS+V?T0eRD~ln>H%1f=jZ#{J{kf zoA^NUNcu{wKmTp#yC+wT4w7a30$GUpkXfqmSZwsQR+d8GjqH{@LSgDw0$v|{7T+I`hSRz|PFO^*tTRdL9(Pp+tK99En<);>(7c(KjOZLMT z@e-Yegu``9wTOx0w0Mm!2eT42`sAhYC?sA{9yg49uh+(HA}0gG&EVirgkukYLzZR1 z9DerlUp~pW`taD4Rjc=(zT*%}Qw?Fyk$bley;Zr9J=?$gq>1C22esJ2iQEoW#O+{t z+zwVnqiDqem$lUnV&8vx;ah+eDX^RU`1?Nq+u}yGp3IRZ$asH7>-!<)VagP(8&Wn2 zO|j8IL(nJ&H9@V|U}!Lkb2W3dz%f`@MS#I%3dH+VAV;clxM)rqa1X0q7dBBh7(#`O zn4PTA$?G-i4PwwxkAAAsY0YT^s##!UsTII!4HBl;VwAF^7tOg6cyQo)A(dhns9&!a z+oQmma;Q#=4Xsy2xymeh^do<3f^->OjApe-QD?8lfd#}ANY%HbR$Eq(60E<) z7g{o{oOn+tGx3M$k9f9b$1u$4?s`c1T5M+SBg#<%nt{H2t8tyLqRixbz!6&53hMsW z0G>hAoC;=RxrfHla+-*oD%orStKhO)1(_z5OVCDJft3=jE}YMTEhseL0#>`h;I~-| zt)jIm&B}o=C?r3h0o~cDn56}VOq|Ls_KYgRTWnfs>o#QTq+OZKwlOU438$(%5ge;OI5q|V3+N+mDqLApNn}H>Lhqd?`wqqv38VI)&TK9q0T}9U>7}w z4%HE-1sJg!sX>r{t7{4YRaR*+;TQfZwfj-+G(7YXE-yXp2 z&;)q#!cyg==3{)K84S#~W9{*oU`gULK@SiEDGoHGbF@+(#1y+}AzGt2Eb0vzaL}LL zje{Hp6U81UVpqawz#K!b_pmFAEHI5Xc0RxFs!XT&>QlmPTLE}yF z8oZhmgR?afpy}(CO@0u zYa+VcgW5$|b5!WgH2Z`IHX32!5(Rx-2nJk*gC?Ca<*V8;f4hpv!gdnN5CYvo-Gk^- zmKyMRaAJFMqgh$u>|9rNcCHWz1cKdN!C?2?sNW-JyYpGMa7GC4w}lOc_L$QpbQgW- zZ}siNrV$3(bmzc<3(8j zpmiQEKvi_&hUgIlLi_L*e93>#8|_m2>!Kp3{NruIXD{hFdDO}wnU#^ufMr7O$`PAJ z-#zKc_g4+RY5sg_1s0;?fQ;0UVLD^ zxB@nLJp8V&;mhU;x9t;*SW7F`Qcr7{O;{Z02v}a|b%YiaT(c9gj(CBlPZqP;zyiTw zn7Yx24Fz^7T##eZoWi094k1tOX!>1MkqoQyHjW z0oB70)HUcn(@ET9T?^YQ>9mNA+7rPXhmOfqXkdmaqZUSh`%G#ZB_i3jfDvj04h4l@ zlxQUy-`%8#_&+Db5PU<@QxgzTC)91jbKgm4_bSJpJ=f%UQSn#AX|GY+8_sAr?*zz!mqWy8Qms zGCUMTl)gYJ&UilyhXWA-HUC0tAe63kTci}97&04E&@L3em{MRwhDP+Kha*6F!l%im za{&nvyBV!o3;oRR&$LAfBVwc~8cCc{ROdlkS+(k5nVtnVpQhsycoaQgks1#u*JRSsAVi2rr z)Eb(Run|GUM}7-^UUUJw;Ii8Vv&LkF#gjpcpQ_^C<40i-^@f9L&qbI4&E^C(nbhG zf#s$R4hjNmsWsXz6}8eK<>*nC+I;wlihCbzQxhGM()HT5DpRcKq;ll2eTRMNUrEC* z<>y_>M!bk27uQHI+yVw~Y?-d~!>oY<=P`a&|F3wxLQqFmDV#d<6h7p91) z5CcFYq@-}la0*B<08bIANC2=Yj# z5lX@X*t6H*38@k{B>X96o#JGE%8&$z9*o{sr-?`IB7=PuUWlPIP^6i|nTp3j6|E&8fg7OxS!z0WOOzBfq^Sra7RI-arO%P{fm8h(ud)n9`&~3I3rL2n52p zu9(jZ-wH4U(r87J^6gv2dv#I%446059ORtPO~L!Zf3Lc&u6y12rjkvg@-iH-X@;?YLBw*UhSVA zHh%Xhv$8FghmFeaw{E--DbRuMuHFD{-*32k!<3U+CnRMO&c#LrjX{$b)CP58gR#LR zHfS3tc`BlZGVMLk5aVn`_;~@<_oDFKTBpsNsofyL`WXScX%is#<>6GK^Ad$e$D02aNu zGa#5taTS<)?k2>6cIt;sl_V32yw9F2g(YC-0*iGvS8boY@rUsm=Z+Sv5mipW8b{-a z;DZ3EJs6ujjLp-EK7u4%6fkK0niTHn2r#yS24}HdhNB~E3;cd~$mlgHN+|_)y(b@p zXdJ{TcG^QC_jrPsig;SUHkwJ>2!Ib9Bx;V=;_O&5Z1zIXf2-2T=Sg_bIHuy*T9OSV z-0`fs%!HUdQoB_S_;g12le-~tQXio@{DJZ90apnK)(nb zG@}p-P~|hXc*W!q=-=i!O2d@@2}u+oVmtyUav=d;6=*wxQ@kx(wETU$ z^1*FS*05f0z@O-*)F_WA&C0jdz1IEPpJ#a$;vb)gp8iyMwcY-2lxLB0T+{q7miK(| zQ^(V&_wZ%KWmmaOVF!su6;P*6K!X_4K{S(q z^H7Yzf4xRbuQC5BMhi`zWy#k-&FtnYr4}aPxq^pD$sKx16Z{P{YKe*t9 z2XqFo`5+T#z~zQ_;Wh?kgDwbFaXCR%*1HQF2&ch=NCSWXvX9$2(9MGGDeeYTKiFM3 zI(LVI*bOeqF4~)c{KZ2X_@oE{`6l2Q2Aaa5lB6#~3L|HIAJq1G%w6!o&-ZG zEDvs2GHmPwWhJ13SzBj6{`mTTFpF5B9NN!(%Kv=7Z`PojUSNgdTJONwN?-QOv$^R{ z-?8?+S}L4ryK+qB^avsq-WQCso`9-DtLB0oa|BxD7jlI8jR8VgKtDgt8yr=j@c_B> zyr{1eUT9KfgBe2&Qd7;)m7rOh1=frqJwmDd^iZ8`soKcB-X_^*=S4#9>|8aMpGXyQ zAQ#-fM0~8;0!rc|2Fam^r)DBDr>v```6il;iDJfVL@27gpyX&0gEooq6sI|1iD4r+mXt-x&$Gwq z%+4QG{YuhLobdizTlUUiRm}C^6E`>S>fPzJj^Pjv&Y>jgWB&al$^c-kCcR@78O|I4^MfwGJIXjc`Foz0{S4|r47pgZpO2b7~vIv=u$6o#a#1g zlA$UPHuleTEdRx$BRAcDu)KWJq@@em-aSUS^X=EiZFuBVyMn1xC)7#-Gjlz(aPY#) zTr^Xu?p-r}wpn@Pp#?STugdAzzJ1{pL&~7(wBlo-=^o%lWA|Yg+6g`)#zi<$n9OG( zmO3Srh9MU$6twEnf_hU1W!_RULUrUG*eP$LnVl(M?o!Ca>1_aj=z*IPM0v7$T&dfj z*Bm-m6Hl6!8IYm3xE)xuNuyWTUm`dD`it_qa%SI8Y~a_EHnjDRT)Rv;xnjYS@7y%^ znRhfLe^kyZUn*BNpFjN(OyP|qMy^^>U)VI^hHY%np+yfW&k*v!XG-z?+>4{(M`7{) z0anhHtRPnFzj8s&tvM34^1d=C1l(ypU(}1^^Ta6Y+O|9SAUcU_f9U z(LKnDQridW`as7EP8T>6g)>z$Z)xYeOkY9I zlIw0Q99D4ivr{?@s-C`cTIrZsADv{Wi&l5-nr2RMM7$;D_U%UJ=VfG6_66zaN;c-^ z+Xp$Oo4b!W+AgKvEah=#U3#rav9W)O-8U&`*tq+$vZt@E@_DVZO~sv7+3%i)|;}$Am!EFan}E<{CqQ}`>~rd(^CY;dWVQ+vFSm--<27Zb*`YzWDNVk zcS9F=b2wC|TS~P}cAco3ol9HV5n770P>j?+PW5Qn*~Eys2r|d!hRo?NRrhOI4#`nP z$%)blkUVbTvZIMtIP2Kx9pwi%ZQVU)%#stYDcia~miN}g<<-;cf?m&>H6uoLxlVFA zw=USYVARSs1J~U8HY>LrnQ={z0j{;;=uy3Uw}A%0*hA3_0YeW3 z8|L3Q@J2DX-oK4HL9=vI5a<>W1k*D>`3C_MgXT!ZGwgz=-t!blp`$ZcVMbZTfD9?4 zCXm4$D6syxesi<|%ASDNRe~FJ;!^1c2`}m*{1|;sx{@Vr(Oa~4L4Ja8 z4Ni{HQSJqCYf11;Vf>w~Z<+JX;9ReacP*61)>Nd{pA)y^m>K?O6=Jq{C_boH1i z0;oYufWi_H<*5RlxbkMF9bEt}0*5&Q199*GnILs870QkgJj`2QL&0e4UxLCw20VwI z+|-`cNukf4Ii~cuH9B{4*YV-}NM)N`s`Zf8HQ%!R2J4+t#4H_p>x(1|zcoCXt1lB^ZFJ`Xj4JNY@2^*t;UJ|-l zm{~Owep)@;ZrMi+|fd zn5sOfy96-dI0bj{5w)Xi%;FLK#!Rt|@g{MVQ7hD5%lCG?kPpWfa_u5Rz+9W(28(dOBKvn zlp7v&rDL>lW6Z$vgdyNkbR_N!SZl+ zW=l1JYFX%Mb;8ZDvZUQZk1F6%1$Enqn1W)&meHVD)-0JBXt4n==1q(S>Hg!BUCLx?*&~RxqyeX&Ijp!3;|Z`no0_Hrv;GDQ@m~Dy2Xi~h=V9`%tN7PF zffX&|Uk~J8^Ipu{?jjoxZ+bMiGLv>D8kI{*Q4coC_ zowG{|Lz?Uozt>;FkzgLL0PjAFVTcUonHOacmcfk>am6Sx4@?8LIANC6avfghN}wP8 zhi#I@QDD{eg9`EUP-P@zzqCZV2yJp&1Dq0v_|lv$>yNTFZ;rV)b?#GBXZ`u6Hbt5O;Kd64?$A_4W?U>S2%x(U8&1-Kd-zg*N zdo;f;X=bk6%+hb3d$Y29Mg2c%hlHHLH_`cjjE^osGjl@TVBnl`fU-Up?Tqi(-HKTbV0EA z+z4Tua+V*Z6!1S#O0m#f?~&>R5LL>AGP4-*XXcvyNUo0d*U=a^yT8o8-VcIrR$*i` z^;<8C42aZ4q=?@e@%kf~aTpq2A&vu(99mgVEl532cOfBhmUB?l!h)n!B5~FdmJfRY z76Cguxwrzai)f$o3JYBVzz^?Q>*?Kl@Qx`RChgvy+H=9!%{}^0V8Lg0&b|}Gkmeba zO1pL&dFN^NUbA(!xm4-LA_IHd(=r}iv7qy0NOm(MT?iZC7VeJqOU1#WCNrXHGDBi4 zid+Uj1_R(oqg4kDhVKA_XSU#9l%+{76L4s5?$)8!(SjLLbcXUg#^RX4Yj>^Vc??1w zF!KmJ2kyJo8!Ouv_MA-`8Hw z-uZAvRdoTo0F$@5;I^eD|HKn6Kn=i?c*1-bt6OHJ&Po#(nHO2ag~CGgr}NMCuX0Nf zqlBi$(ezYMw^J`JzsVC^d3nOZ$SUO3Gx8*(O{+^wRdp#C4C;beCV#pyE!CeMugNi` zW>Dt|UWtbm6@r*&Y?GUsj*^@_kZ1D@=_H+@J1)nMhNdyU>auQ87ovGZ~Z zwB*NO`5OjZt1j`ZB6KNE4dvRzGpHAJrARt2NTqmY<5Ha>uNR>#iI#Wj&w=^pD#o&Q zZE|((I`ZBTp?SORO6h#XoX_$^@w%tK+?jpH(HW~XLmJ1<*c6414IkC^$}6X=TQ8^OdihfM)#T*AI8Tvbf*GiHjyyZKplFK>4foDXc>$He{cW58LbT&=Ayfv7LA^ zD>5r8E^;sOhzku1jUta}voq&ruE>qXv)Vm^7G`%wv0zaU@=VFLsSy1gq7;Q0->6 zz+ziOV0Jc3kZEl}v(Xg-Kn`v{4nUpG&n&ijm=rt0a||~?xDEBE#EsgvEg8J${m9^e zb59U7K7@E2z=>iy52NZ-AU4_2=slu1{NTPnj#%`}i%Qp*l&9G6uWqUD)8m@iufb=U zSi1I_X@|<;hqKJl63nEkBKiTm>7`JemDQv4 zmNeLbXR^-D(1#2LcgPjPm0Wlpp0Obx4y%Ne4F{d^lDBwQp^Dl#P=Wq$rR06-R4kIC zb!y569rOT6#iSXN_SHVKkzM)B>&i)``N7wvotk;qE_kplJGp+q*o_}M+3?dZ1EZV1 zXPtG#l$|>XQ7^mjmF7#iCvpxUVfQ}40c(tb&=~Ut_ZCZ*LF-2Rm{=`dr1DjCFi^cz zVuKiT;43%*0hARxT}B@&i=`A4q&r>eg1YSPkc~!HV>qY5A40Wp2)%agV4F*Z*%1iA zTI{L`BNahGA!x{FTa`I(995CO2@GD#XD?iG~?MI|1Z9M8`y!V*;M5<5I1vh1DX zUe9LXSNFc9(J1f#`ode{$+5e|?Te>8^(kggkIJYY?+>(5u3*a- ztz&bKE?%ZQLTu-+V84bzuU+U_vOZQGklbSH2w*IA6rexqzI0}zB@jg81$R)OK50fv zD!v6pF}drJp|hg_3w$DwXz1K9hf+g!J5un>C=!ea5D}veu%Thr2u~pVK&2|H<%Iwg z;$A#$V>$y8juCtzo{ho3iEK=f7vF(v3!bbz?5mxly3Xu1z2N1OuS}jjbJmo`7cZQD zt@g_Pqko`{%$~IlECX_9U0oQsW$K7O_g^=&=amB-3A~nS00rQ+K&aLVZ@~-4{0%U@ zqWNZX3{)=EHMDdIqSL(+mDybpUFEWjn8j!JWr!n8ld|X9q%2aSfDr}eIp{rsj$vrl zkSk-8rV|NgKc-cn2$UM*@o)>Jc{sPRp~(x2*Q2O7ZtS-3N?)Uw z%?m5Hb>FjZ<(i#kw~g*IDb%Gy_loGP8P(O-Jzoio|Df!E%-h79P-`Fsz%x%$D{6LCNU1uq^E0(2^$i=FW?2I*ljL`8r{*wN?qzcklrGpZKvEFA(gA0zp2fUQLea$UbXz;-a8( zKzH55mqzWXRDNE+^$c1Mnjd`qspW&`JQ)_Jtc&GOTg`ONzr677d(6bPKK+zo#`N85 zvETSiM2=j5^NFvib{C{GRQC04`TAILE$=ElALN#Dv&K^k(InO{rdcQ0?2}#NN_svzL0;c|`zT z_%AVcj6!98w8!z(q{bt_FsMv}WY2lZKr)g-Wo`qBb(?VXSduFPr!T2$Fv;hWzZi0G z?-uUzbw8xIZY@92XHvANLuD+yL0k~R_ z2|?i%-i2m2oPaBAG%fR7Y$%@AM|vj&U2ccTX-qNOEkGNhMjVtzrycl&)rNW_8`?t! z&1RR&X}4+JK;|u0qYHtI-Da_xob^u3w?yT>(}+>cX(7~Rsg8t36GqoxYq6C^#-k94 z4$xL1CPfwm)BmrE263JydCJ(8DyrD(7D|8T{$S$^O1BwGY|^eXyN0o6Yo0#xCHc+p z4aHTe*w}eROFkmIw?$?+9dM4)=@1ltiAB;t1e8U;)-MJ$k{>g%GSV3em(oG@2J-9> z12k@w&I3MnbOKZ~7-SBMPV(60U{DhX7@+x{ph0J|Blf0n-R=NI%7G+D6v+`JNGuL; zm;LE4JJ?;0haLMIlHQT(XmFqnlOH{{BnPG#+RFg$+XvW3+w1JIo#V3MbP{cPO$fsR z5`cC50N{~x9J6kn4nt>gyhAIr6{^ZL*83aFPrwhX|3zjWnYv_ak2#lYbdt5dZB^*T z##>s9{I9o#HPxz_zhhMS=H@lxjjOZb1|A0hYzEH~VaJz<6Zo0EhWc@;S*1W&phJPY+S=8LHFuQK@jE6l!4*c8~|#Xw(Ya|`lAteOXMP84%uj!YB` zRhP>P8yin5w8r8(vrlrn5PqYMPBNk22ucy*n|K9YhG+(ccOce|OouDO)!>p$m)8t5^1fHyPooQmby&D^?^YUJc;FfGmcRnkc(oq`dEXi<$dEI1 zVD(91wRc==u?*_>BzYm~WRP+pF1}8qFWTuP3r8-RwA8T~=sPfb2qOq0Mj-#8( zi^=!aR_O(=)+^}a{>ja@~OFdvb8;5)!m^es|ApS*?NP|=Yk9^Uj zOtPa5vP9cXqNG8>obj0UB7*bf?~doxN{ggS<#u=uY)$9Q689UR`b-$aUeTQsN5JcG zVGca&{0u_xOU9=S3h9=H*ekbV;Gaz0o%K8LNCse`VIhkxiG@tM8d03YrfBCfDU;=C zd!yS7OJ%*aQW_nh;2b4dd7X<*HCl@05CV9K{u1afEwzHqibRYW4D__8dqSgWB3wGE zSM;}t%VI849ilaSuC~Y}$RTlL^Pr`rcUmH9 zX{o(Z=Y6At3e2YJBXh(?%}mtR3PiysqB=uRSB!r90C8}tXD3hB;x(#wy~y7B<$2}M zUZw4?FKDKnKC)%&sYACv{n+p>GjHm1Rl^Mz1o7ceGpay-oh`3HIoGOR=ZKF#$MOy= z-le?#@bV!;zP`2l#BZ8ET?dVM47-xhDidZ+kHiWI=sJV~*Qlz{h*hEn-lm!IVU$ls zse=I(4Jb!K-Kv3)P|y&o-(WA()KN!3w+9^osX-}tIhaRn830FB!)w>#9X@#0uU6%c zkX7P291`enD^#&r)lU0pG!(`-WVJ>$`d9hy!LJT99#96o*!bdCa`xt?nbJD?1HXS& z^BPunp%l;K#glc!m@3;Lz#_#dQJw@Rd{e4IT^}k{FPaO zAKh^24aK6kG2Bj%u==l}bng)M^@xU|iJ!m}UHAv?v^&338?c;*~pEY^%dXhwW$lvy&D?8!ITy$kt8pXAvx~!z< zZN2)u;7qzcY5;AQeuQ#<)8xsU2Vu8YcrLMhbB*c2=5Zj@)mKgrV4s3 zB^7xs}pya|2CgN)D=4XnB(tu09wSn})6TqnCD|doDoVWmiu{nKy2q6v zOL?aZ58f@<@YkRz{vKW8S6x*g9$B*NxXn`$%jVHseg`?`2Qhq>>5v~lRjN?a9%esUkV z0~qH5hDU`~I9l8H++GE}eA$!;vOKL|oS|n3AO&E?y z_glAklt+6F!*x=jDxGj0s0`W$Mx_YQ5L|<<2J98DFhx}IRl1*ZEV*v*;dzgp?&^?q zYrA!H^cwp^s!@CbbojfNd`H~_XPLLAV4U$T&r^L!mS=H)$MDo79d5Ks!}0@-2VOkT z{Cq^(Bi-Dz5Q_^rQt!*-`1}-j9|FV8!?(umBS_$nHej%Be-zj%3jwt9~O;U`)p2EzHEL(1dzald$BgLxGv%M#n@+uKa;b5{RrQ} zPZ0x1NAMDoV?@fr|LBqV{~$+c$6arSw1!kq@IaOqg^|&1$`29oMrq3vn=*!cKWXC= z(?9H6_~)71)X$M$#l7Rs!#t|tGNXHsKZe|S|Me+DD>n?C{^I^qr*^UVWfr$sHlXv= zj=9#R8)a+s?flNY#^OrvT{wf%l`dcm3cz>aXnTQ+;f{!Ci)F~cGC(SHuYg~2KyoZ) z*X^I{%B!CC@zCsGhGqQdiMbngobcG&#(G>3p4>cfjN4rxXElE?wrYIaKKqBRzoo3* zqN(F{Huay>_pSQ55A^Llui*{sEIm43UL>hGhp`EpKN7j5epDvQHdV(iTA5D8d~KL+ zD;ny|?(2MW|1r0vRQYN8U9#UZv+su9Bb(Yt_m3?v4y{58oe6_4oRdz-rNFX;QUd%) z)N~D1!PFIpQx}a4E*m!f<3(M4=7NfcCrmIc9LbDx2H7f<&sV)zYke%Rb7)=Xj$afuaG zzPKjUoThv~bozaXB~|*ft#f*AvNq#LLHABv?PbUjUA+O=cuNvjllZnREg?am%{26e z&8vJaz3R)Eh+3uG@y(|qY+R3QjkZtq>)oQftbDh{# z5hAR-&LQhpC$@OTHc_A0*emhNaJWB}56V5j&c~_ZL@FX_0dpu+Pu=f#ppz zr!-#Old;(|aL2(5Tjb5yuTZ5d1ZDA@J>R(K_gq@ShS^@u*jv@L<247XN_>HCOO>}C zRbJQcyFq%OX>-pd(=j((`SOE`VYSDmcJ1(B8m{;i^!irF0KN>`u2EE58aMV>XxO_X z1H``Qs+rU=%Mk1PxpCy~Ohc^S88mGYJKZ|wk3IXLOzExaEoI}TJby*U3DuLG zhde1ma7Tx;X<&o!E1t9`WM{<}XoZDz2@l^fIEIOj?fUDwVeQ(4hP^btMmhPAGFi$K zH#L9Pu1o27W>tJZ&zTno`&6mbuw^mF| z!*2COqW$_@i`_a>`Q^l(6SQFuE$dZx{Uht@$}9Wz9lmtk`7_c#n&{?)AFw>nZ^1-ybVXYQjy`uLpIzeu~>OpR+{&C@q){HwO0|=~zY!z+^ z+NMEnsr4)9OGx6l2&M#e)Jz>Sr0vxQM(6jRqns7*z3Hdbol93AnBQwq?d^BJt*k25 z<#dp<9#ejr*s0yU7+$z@W1o7@j2qsnd78bX%=`AH&BI2p+Wby4&#^2#MZtxCVeUZ( zx&v-4aRZ5iI7u~gvUQlr0Ei(PDTuZ2R#~31yyk|KufO@eVSZb$2PY-Q=v4K2YV1l+ zMre7%sMK|iZUe;$j;$HF`IAcq_Mb%0d~dH_1s!CudGX{9B|YO-52hmS)4(1P&LDTj z>8ZTZa)k0@6fI65>)(4XKSbz#{2;-5(RcGQ@5S4cS6U7n{$3`0Ej}Plsp*gg%f3D`L47xf!ei@`JOPQ_dI#Aj-$8 zHzEmi#@c0+A;KE9!SA=64RMD8E}b(ewn~men10JL)@D{e*Bkqf#?Rk}5b1P43~7o- zmvXviR-X-5wVcPRUCoW$i@!L`#Zx@ravvnC%iTphF1gI779~QJ-+o-vy*zjkg>lfA zT+MShqro3aOxY26UY36qfT!R*| z$M4bnzq`j|4Oi{yf4s+5HTd7&qI8iIyZv9}_B3-N!4t19O!_1dmc z0+*uMVz;7ulc0dyD~e~m`_bLQYhuc&XovEMKfgWM2SNq<#!r*q;sQ?BML3(al1(~C5mJ`a z5sL6>7ZpWtR*(JBXH+&Nz@kgwgz-);V4BxSx=x8cTODZ)&|)3E$3+S`$=%c;%Vb| zHgmXQ&YuBSWED(UJHADXqHs5mi;JYFOFF&94Ra37dA%|>BMLjEx}iUH?+{8Y%Y+cc zi+rxj`#MS2x{SYbj+VPJBluf)M>)}Qi})PEJ>HYA0PcaMyFBvY1=EX=kK|S3D9GY2 zDhe{*xCkgn!ysnwshj}}!c1{pYsEvR1|J6=vZ)8hL&RChcc3C8|JLhD*1q5Mda_#9 z=rT@Mv#aGJMUHj60t=*ivxIgKBB=&09B)X5J1$a{`Bl%QSI?ZAz&=h!*!Uh>vktf;IZ%wtaPJC*G{BL2MctR7@L66i-;;R@Wve~Ewa zz$sZe{|OCo81-#>jO*UUfSgk{PxkyfTtvLZ*`uI;G{1L`b|D{mRJhMF*wbD(PaGVb z`z^kayfNio9otXpv3zq2)^V7yj>6_A;(94(A7}wRRw%gydOY3SoUAJ<{*m2s=3FKY z;s{8x{Q(+s1+dGhsagAj-biNOKEwTiI2ytpNZOalu*ird>(75iu!!8Q<>O)Z@T@lM zO}-Z{I`34hJ^54hTW(-IC-9RlXp1QCPrEzG>Mg!{Wz{t*YO=$1vCV76PySy-DE|>n z5x2vW&V)z(U&1Pim~f&=H&ukCqZ&p1cNj~u8YJT_-+n)Peu2kLc#A<_+2`pox2kxH z_$JH-vbjMOc$w(j2H<5%$)LV}XaQa%v3U^zFJgJi65-w`cQFb%KJ?&Ly@S>rT3W(0 z8Gnpt`&92B5qqg8HuwKDeYt*J*8d}S`uF@kB|_fxB~G8X15Pw}QyjzB^a0Q6Q9%$q z;=Q0-#dkSAFP|oZ$9FkSw11Cs!bhOnKsgkU&TCSVfX-V0bQZM&on`&b7+H)b`y`;9 z_f`yOMLRopm{>K%dD!hBwDSW#=x%g6-)#c1`tbBNX#2Q1?$w+XE&w^7f} zf3ar%cS(MClC%B1*h!hDWVQO+sJ=g`oE0)P2CR{J7skhng~x@$LeLXZqA8iZG=^V3 z*QVoLS$Nk+nwt^pkBha{YprNnX3~I9jA^wxjajw`s3JCj8m?z1!C*0>YmWwP%e68q z{J3lCDRk!Y*-yn^IXZVM6nurLgcdv0qQ*=3{Ii=oGu)=gX znY~tYc=XW@k32$uuTaivW~}V+@I&;)Ll1WViqD^cJ%PJ33WYJ3!3dsJOw#JXlomrq zhK4HI!c)gO;{(%9QA1&TcwyS{&ZmwODGVPJ#-oOFO4$=1bhuUdshSPCwS)Y`i4M!p zkJEgyoHo8P2u~kPT%QIuYGM*YzjM7D!dzDnqY97z&h_yqVLSpJBpj_)e!8{82lx<% z>uI(u?{MP14$I?r|D^nupb_kiAo+kwkK4r}99LH%?9S}P-j-L#@8GI3n!QvjgXyA4*V769n59s=REu7?8VSrOsqh#V zMAze>nkVi|y{p6>Vc)hqALfDyu~TCLI?oj0@Bv9G^AHg3fV(mB)a_ukvRd%*$(JgpM72+^2L zmO$OInDkmqez!1F;Q^Atf!82|1E&s8W$kgR< zY(FDr2JezOmTMWVgXJW31|bdq$1UIqR8!WgmoBI23h6KB|3!bRt2j*f8dot1!I(vd zxuPInnhdBk!2ZJ$o`R@P9l-w~=T3YHxu9wNAY)}%wZ2Dn_0KO>FYyUM*k4*K2Q2hR7XuMeqVuy%6%MhPf_!{jU{#!yV z-8YQi^SYd$+v{#!8~+@-W3m)rU`k9bJcVC4&L6Z0dp7f!@;%-@uNohN6YVPD8#yc= z!1<9QG{@RLBtNKq(DATqpS)YU$FbLiDNI(I2jfS)HWV{5N%Vy6)TwVECsW_C)0yJl zE8ej)7;^3fkWCiOIwTU>&G8rf6oHw)sK162o0|M~Y;DSj!XzV3&4FP?+6&EjK?PQufW5nF_Nu8j-ZW)Z z!>a0P{59pK8>ix1)!XlyHtnv>)2H1f9b7qYRj*#F=B>PL@sjIS&RgBP_iDUevUu_I zyY9lz@4`?F_!NR(&>X}%8IZ3@MYI-$Pf?8Mp#s%deTA#h^?i&mnJKXgJ8XMw;yl|e zw#_!_`fN5hYkZa%%__?3nI&D@ZAv#WuUqGCy}L=*mQN`c^U6Dy_b!)ex=iXKW_Ky+ zQq@JO={c#VnBB9aXH`$>*d%szGJ9nldwBw@88c~&ca0sKx+SbDF?2$SE^JYhnLvtzv3~tKR1WG`)xYon3??>p?E(8cc!d_`$7k8! zP`~+3{G0X@Gi#5(Q+xba?K?A%7uD9<->IE>Y8K8h(9W^T4s`8$3V-nXF!1;uz4^eY zH;%RZ0M;H?I)O{W^vs-jytDnt0Xz0Ty|s2G{-Csj{!;(L*DTrz2ZII&B!dZOu6PMq zC%mTbg*z2>!gs^?83i*Q7KH(#Z-*I8FNNkpqw!t!?HW2^idb

V}@H|73x)kYX?D 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�Q5tB+NjOSaZbI) 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�A`)jwxID7Twf+{rh~^2@?jq$k@)W*d3$zU}n! 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

%7SB*zylf7u#n_f?!6J7Z+a!Fi$M zn@O-rj@?`3Xc{fYci7ppU5>ruV6`0Vj~zcW%du~>96#2}v7fx`XZhchA6PF3`)0>a zEFWb0b4N&(;}E_MVf&Z)ax`0V9Iggz{^o+dKs>)Kf!%T(X#?4S#v=#h_?>uvC%$8| zWEt&cnM-9^6JWC}=MdN{%e6(8dyOowPnIuHmY;8c*n?yR3S|Y8WrbS63|V2mTomap zE6SJLPMIp}RKBQn8a7)s%W6GZRvYTu()Ub$E~DKdS?#CD>ab1L+1Ng(kF3tMvbuO= zotGr5E5D_{{?NLBwijl|ikl=WzD8D$&ay5+Ur&}Vg~r{c_1jOgglo}{vi1qzfRUe<+3L1ku`}tJe(_Q@=RHeWXO8d zl2tlQ)?+!c%F1Lten{36qhvjakMew3Pcc88_D}bfHG}ChiLz!6lJ#tYtl9XUjgE>< zvYx~K^XPvbTb1OY@}R628f49-|J)^TRMv~+uqp}aWX&U|^UzaG+n0vQn%@U%ph?yO zG%e^MYvE2=TvJ<%+RIwpPF8ITS+CBJwFHf?EtT~;ZR*fdw@+5R4cJ%%#+HXN0;u@m%#49ElWvvG~AO)gm(l+RKARxx^Fgw{=qPIkZ5pxtRjI6R@OJH*KhM>am{Ca*CdPUJ!|h) zSwB$!Blh-}$U5MW_0uR>2kT}1+$`%C;%lb-S8{duu&g7L|GrDsALQ`(G}tbu4$Enb zmy>TPI~{HLfdmh%mD4#+PS;d9-R+=SPERpZ!E)Flr+1K?{@rp0E9DFgm6K~SXJojX z(YbP-vQy3$$K-6u7m!XHC1XS+#qwy%)0BlbEK z$=P{`oSefryEMqzm7ifaf3KX~2g(`OQqGHJ$r-;(&K}t4nI-3?8|CcH@@3e*9Nkyo zFJX$DSN4)Kk$y>AXmY)9Fa41h@1mp;8HoSZItu6@p7gU{|&aB8Exde5gj+- zXUJwbhZf42$^0;49!@^8iea^!x1sYkeB8EA&TKS{=nLr0q0jAW5cOzO1uXJKOwTAtq`=L=|`J44QS zMRLA`Kkg+s7wnO0k zTzfdTQojvtpHu$DA~_pb4`0od^J|}+yU_7XzMQ+ma(+v$nyTd7lP3-va_-BKbN^I1 z4|bLF7koD}|7(MszoGYcY#c3@^VoE`j5xW>{c<^@a=G|XHP2ePd}VUkiE;&#O;R$Zs;Qv|I!EQg9m6>n6yRo&a0rx*i)h_LJ+TPS7aV5Xx>|A=fR~ z&+IGLux7c2uaxW7-Ew8o|2DK{+j5OSdk(rr4wWmHm^deN<>kqBPo`W2#5{JrT=z!h zDw;1>af)2yEV)X2a*aPG*MwBLCgE=qIeCP3rHOKt&6I2E8o8!X_EfH1PgBlVuIpK} z&7LgRoR)G`hUIzzZ7(jDYaY3(u9s_mFS)q>b=8!~wTQO0Q{-CGAlK4;a=pG?t~ba> zJvQI;$h90TD@x>Axmhm8=v?nM$@LzZ)^rDKtYLZWT)95jA=igX0bfm}P|<=Vyi*v<4?mYWLY`tG1y z-wy<)KeU$XNBSQ)B-cUW{Dr*yN}Na9%XO4Ke;knO_*S{iUUEAVf+z)q_`;jSfKUydE zW7sLf$J9Y`a}MF222XC2ySzc}r|>(S>C-IFI4bwdc5*+9KJMMRD?D;Pmm>EZG*qU` z{la{?*$29-usyF)?w6Lx{W97X;-hAt+>3U~T{~RvCFF6*LAhTWDfiN$uv+fdljN?$ zcHIiO-$;gLx$DujY?9m!_;_==+{;-nE2!hV-~IM3xmO;Ndll_hk>7U@%l%#f;CBr% zzMm=g2QB4ZH%M--1>763{ZUwM#*N*dRLK2VwcMX?mHP|&eo0(k(eLY0xxeWqH|O{6 zrsZ<)St|_?jPyi?q8?L&G?G@cl;h}%VRBlJ#&;i?Rv`7zOy_XI?8i4Z95&7r}K1q&fO!=d3;6xJnVL*eK!lR z&HmGKL6bb)u@~1yo{OULT)ae{p0+%_Hp_F_0(maalqVrw9>zmGN!jvTJzSn^m~wvY zxt6-?j>>a=D|rTWljnx*^4!>0p24)esac+zi(#ugnJ!2K;u}WH!_Yo_ygXU>zpX@` z>~eWVOp+&uyxf7^T^eipkowq+*L2n-Q+Bvxbo?H5AE*RD9>p0k0Cb&Y4VJv zZ0s6&3j4t!d5S2zZ>~J|XUW5{+*2}8o(HSsc_>vL_N|_Y$?`nX0?;$1 zD@>KAw7Wcy;iHW8!)L(rINBda=hU9^Jb|_+8s&MiLZ0%z@;pU+(?`m~IkjiTaCx3- zEzeBs%%sh%LV0GRp`yJ!&-H*k@;pxrm3i{KfR4FC<$00zRV(C~N4{QaDbIZBUZ%~$ z0(okd$ny$0Ta+sg_lZ2Unex2aMxG^c^1K!Wv@P8(5BK*yZxBQMRC$)+Z`odX-bBxv z*nF#xJS)QTyuC=CcjD!F7u%dicvcSva`WCCdDalq8uI=A5P8<(^Mhg@gF^2*+J0Ck z&-y`7BF~0?@@%xARGyEpv1znCAE(Q+xr;oXU~9{8c|OJNR(yY!CeJoBecl$(_XT}- zpnbwYP8zs;26n?O3iM-}6 zeu6NWpIba4uX~`po|*D`8|C%Skk`(ZH&7vOaErW*OL`;o<&9>^drGOiEhsy6v%IH; z%X?&uAqtQlK?CtV$&f*=B1;^yg$p^}AA1?367)RyJ6`-B>@ACFA z5EcMB-pT}GTTv?S+iB1!@5+&|Ro-{T$-9aeS7GyAVq8re?~$+f(6(m0yzj$WV*DTq z*j|?-?}x;_o;Ww)X9F>A#MVd5e{@vdP1yVxHq-ADa`?#%z#rGt-Yo~@{j>mf$h#G- zTg%{>yq^*0XXxBE9GHHNkIyUR<#{0Q_HFWhf$ts6GtTDy5?^1EhsIg*entPC)8+k| z{Ozie_nSTPe%leI%G=aJ-tXGMa(VaE%lke4_L{I--X8`7(|zRQ$AR+hcgg#28?bdC zUf!SZ_fws`2S>p{d4HzuFVz3COWx*1@*bwmZ++xFk}L1;X!#>s-s3HJwmDxuqe(t< zg?x@}@>$3DQB%Ho8UkCbh z*bGPH>)0OBVLZ$S>~y5f+3n=(gs;wM>s$|LKQ{>RFcc=p*M)Xn^Pm#wcYbFmhV}Aw zYYSpAs5KYMdTuWoqRo7LJ}0g99S*iC9NO} z=zj?@UqXI*Mxhr_-m?@I!9MveMbo9|xU>MOV6%L^1l@o*deOF5Es(d~7R13|V14wa zeQz}MCQp63z&Id|%dmMF^_LNI-}Zp*zH8u+e3!F)c{)shC9qSzejdPIzfnLg`Vm_{ z+FsESXnO^*T|sOKv`avLLY;h9lBX*Z0XtWs?@H_>QlHor1_6B%=L5R?6HkBi_0NQI zKudo#CnduS*e~Bz*t!axSIvdBKv{AdNC9jmqbqs4d{^5*9~uazUzqTy1qcp8H4qu=fE2IuE*~6#5l+WtiM6afmmWn4eJgWK-*!gi(zY_S-#<&U=U0K><`~5->vw& zwGZUNOjrSE&q7;PBCtJW%>ry>9hUDlY%t#CyKOww0XDM3Kpfe5PzjsmV;tHyA_ZtS zf_5X&pVJ=j!`Oo_XRCa-yPzv%09tQH>+MbQjqC!WfjIB5U?3Dj6%gYcN94<;O>P<# zLIseIJL91g&@_s5HEJ4cm+!8QkOahX*DN5GyPD<8qdYGi@SV3>zPriA-Gc!gcOR86 zA6@zL0e|<<_8xTHQv}rCgN=Lk%Qu>sIG6B^rfl>f`Nkx|bf|~j@)cl{aXnu_HlU|q zCD3my_Qno{nLxhAvaSosZQ&r84CJVAmwflO0<_;-42uBWMQjH}v?(`TaZO8;6#0!+{vaHOlt@%MXl%8lVqj z{Js)mDxvPdPB0qqJsuz9iEDfXY?tpLwu6W8`OqXl%R>j`o51n}>`ZI{Xqng~-=s94 z>|qZiK?$sokLSdFllubO%w+QW2=$N9{}FsYf~_g3Fkik$Eyw}dJW4)F+XCyLl$c7% zTPa!|i$VgR^|1x8N4_%jl@-8d`5x~9j^_) zzkE-kt-LiP0vgI^0NTrU%J-B9;$b)t-&3@oPWz|P@-!Nr-U`R$o6!|ApaiO69UPMH znU0VS*nDQ2d^7vOD*2uzN6$_J;^n@kZ&rJtY!>;PRSByB-Lq}L|7^-<@A|*spnMf3 zj0WsHhoK<4DPU(_7f6FyfcEMZ z|6%?p`4(bl;YRsth_z<7e6O?v;$K957af&vG5%^h%lB%Qd`qzP+FYRh((X_t-|GeP zEwi8-RLIxhf=nQ{4RfFY*d7|1<$JRgurA-E{>@2H1DoNne9N)(mJQfnaY(+ENe0xlF!K zDBp^n&#|)|4POx7mr)?5FE`28C_w*LJ>=Wj7Y@qzHFkI9%eT9ueBa``X}5fP+Q|1k zx%eLKdx_zPHS+Pixo4k7{+ou8{O2Tl<@fBDpL0ULy;1(aPWeNr@`r2XkG7Zpld6-xFH9K zIb%35y%9ZwljOe%ZH!6zZ*C#~(C+eceD`NkH>_U%;pn_|ll)o4aNB6Jj@-v?Azn6YR%-`1qh^v^G z?x)Q-kNgj`k-r5057KY^D)}Gk3{&Bt{1dRx^{#&+d7DW6MEXu5*AJs_GBzJsApev} z@;^$N%Jq^_L#@~!eeRVn{;%AVdS|1)Xw&&0+oG|iqS ze?^)6&y~vm{1o|Lz~)@yeKA@7s#dT|{(0D~9xeY%VZiVFBKcp&#sai0I3WMRX8CJY z$p6Y3`T5?8e{rh(wb*zSUrWZx{~GOH+a&+%8S>Y)1h&EYLiyQ$_?MxvfpyWaPX0Hm zfEc-s^)KHm|6Bc_T>cfK`n=1KtQ}%5a`J3q9gof|t%FmdT|NE8l?`0eOVY>YLGUfjywfu*P{kJXhv!C$)ULya|1lTD5AEoji!^g2^`H$DgR;FwtRkoQ9 zTV*>M_{k0^x6YE?20v|k$v!hfc02007i@RL-`VxDJ1vsknfi10%I-2l z_IdqeckL+qe2?sIiLx&!k==d1>9y|6Fv*5ZOH!$i5U! zT$9o{ zK>A)wpEUfW#irCO`V`nBdr+C|8?t3*Optve`UWqRebX%2L$G_Z z1?94b_Jc#RIp4R3^^`r_2eq_ zk^Kw#_?7kZTZZf-oq;yL@05L%{>Nr0p#2J%P5e(Z9Tjky3V2)!_=YQBPf#EbnEYOlb}dlkqWr@*bP6v(m^xUE5f5orqK zOjBTFiUM~WQs7Qo0q#8o^6C}HFI8Z4TLlURDo|LVK+zxtiYpc18ZJxDad`%;OX5IY`smvGlnX7CVkIJRIvRK1sVSg zcErxvf-aB&s}$@M4;2b>9vwWVOu^1AVU~jDc7iOZgdGZYX$^y*95yO=o(;(`8L-n8 zyIp%h5iEs+3ZCBsN?@~s-LThf6cEz|#Bf0lECAYdPXc^)->Kk*#B(8WT)17qxORZO zxJ?RPg#U}sbJ21I<6A%`RKZaNFGknJbD&AV9{pe@>{9TOK2WJ(PYdYV6P=f~2Q*!Z z-(K0UO~KwNP^(}cVrLvQ*oVHCCBRhJpireG>DrZy`$fLI2k0y!Em7qB(ph=Kz<0U8IAhk=a>UW>MCb72Oog8d4n zkzq>Y9-fWI_sUWd)=1_H5MR|VK)e-TV?2Pq0(KUu*WMk$z)2IMLOjTyTYyb)W2 z={p!5oJRzQ5bMw-3TEPa7=0M$3*L&oEECY5MSa$G1#jyCXvh{M!(IhPP(Naif;sff zX#jNHUJB%B_?AFS zJ@yr1r);$1t(+kk$706;1qKBD9dG*f{&w< zaiCy1@lQ8lwSt^`1ZQCP8SKn#rQov#3eMW1;Or6wE6_8iyMmQHfc5Y~qJl5BhD{1q zZB}sJP6cb|v!qbLdbF${&egjVd~cS5YYr*+0rQ*N0h&HR;}+ujG#-v9xb>idpQGW6 zbOm=1%a_F3SO(bm3VUB2Rd8pOf?s!rjSB8U*EhWs+>@f<_cImTyGOwvSXVz%&i&~i z_ostA4;nnMMZupc6+D=y;Ll+=q~I^uXkMk@ugMA?ZmZyLa0K1I=PP)0nu32cDtK&x zg2(45q#}ikdd2?tppbPyA@^#9{KpgutW+p6RiPHC3Z1%Cq0_r4)TT+HGicXtzC!KS zD%2rUp^k#R3Z1<~p-w{;I%lpzom;~|h0euJS07}+eud62Q;6emsM~ghE*P#*_vs47 z#VK?V%NNtWXJ>_a#VgdC<;%LlZiOx{Q7ECGLRV6Eb4BPgW>pokG{pE;SXlDKr3o1Bhv0oG3|1&(l0r95QD|@w zb}BT4m~I}W&`|o_a!{dRw7(VYx3yO&n|MalE0nWVq1%b~4r0601I-HY*$CZrSfRU# z=bmzfMx%jy(V?-s6uOr_MQAKOs?hjGg(ePG=;2a@rc^8R7`~_Dk?=9_?@mudGh_7r&{|DurHKuh8qQ72n%SeSjouSZH^0STl&+)UJa>m3$Ut+&8TcNL5=J|`z&PmXu z(APr&JG)9?lS1FLQ)qV|g}$ZTx8$d32;i@2uR`C^_B%A~X#rVqSfTG{DYUl-Y*y%p zJcahL4)(27=*J>BrqI8M_W;X3jaTR({5%LKKeSDuU#2P4oD3Tk`n4GF7vpduG${02 zUxj#vI`n&`LPzm;v{|7)211QO$Ix{=45=^~jwq}=sD_>V?EOF}=l^WsKV&frfO^LS zewnN#EK=Cn0*awoVOJ3xQ`kL8VSiglhUp61^tBrm4jfiE*bizI4kaoa#!q;+!jU1c zN#SS`OaW}1vO?h&DGHyO4fP7QoC!?|pGN!BGZk(f{|wyPCBbB4n0Mk#z& zhQjTu6z)j**(()32Th%cqYLw0$1B_oTNjK}xO=I>7ZS@whZK%quJFZ&6}}`*;Y&LK zntPQf+#4;I1r_ewO5w|~*$>@(X2Vxvqd)UW2NX_bdUXQqP&kDgTvMTNYJdSQur~nmd#aoDt)F-fTIdOLF`W)R(Kjy?j?lFJHuv$pW;{S zo?4^ubhJEe0{MQL@)_j{Ka->IOzNLqr0}d&3Rj@zIa}d5anP)AB^oNx{K9aB*$;$Y z%uu+hi^5#PhO4Q234Qa4=Vjtw&{yGw)Yp_Myr?6fsWw^RSK9!#Uh4yeuBd6mICM@SBMWFHeV^3cqzg;T6R7cCNyVorm8cu6LFwylT0^ z@7624dYi&)$kAHCOocxnSL<2>K0ieJ`cVpRK*t7hwh`MKs}%kSO&`@Nyou#a^#8aQ zP`za%t>o#mPJo_myA|G!<}cbQyo0hG!=Vfs75;L*!i_@} z{wg2Px0Cv>TPVCM#(IUnA(q|P|8@!-Qn+a<98vf?a`7F@d#V-wz6aoE?`Va8NK$wo zI`&m4{NoUX_fxn3n8F9JcVL3TKW$a`V7cB4U{*tj+!$R{*~#kEFVTA z$KCL6bAWh{VE6Yhq$td|T$uez_z!#>>j?`KKAx+HhALuYD`Kuw#IZsVXM06lnXpz7 z_drEFgB0=7#(P*1-yuc(;}x;{DH5PhuoE;W5@H(Kr$~5XF39wg@Q|lCI*$3tVZBHv#q}52+t;p%gPyibNzcE_RP~>0T6=~yw1&W+;K#{h~ z6=@f*$XT``?Wya~PLYmLKnG)ekxru&Ij4srokuHjZjB;cRx5JeB1O2aiF7kzt0EWB zt~q8zcBfh@Hid^0vhC&_e zRHR=w7y|UYq6J_tVIUC4m1s%q32PMTPpnClUxoJMJ&IhNqex1wBG=?Ak~&3^0c#Z* zcvKPY3q-C%e>!#sja1|YG~Af3$ly{%hJ+Qld8Q&mv6YFfVYQ0fnxsh9Dn+sfD>8z% zw-+jM2R^v=kBnNRNM2V(?xy`c%#X=ZqySrE@m)w>7~hW+qmMED$OG7akbI2C{zK$q zVwxfkTZ&BHugH`ciagd=k+S)UJdVa`n-nR>*V8Q(d8UUVvpOnLu|SdM6BT)ZoK)ez zx>}K!DPOo-5uW{w)Y5P11V!qJuL0X{Vs{1G&x(DDyuDJ9m2(w&r$&)g*m-xgBC8K7 zvc^*6ecG?BQse_{tXr?h`nHN}Ag>$C75RweO-B^jJY11a(DtdV$ky?Se70GU&odSI z!l%fNaf*DoMv<=uDzbBrBD>J=4YBNQr^vTm6=|waWDoP-*D3M?{r9CP^5a@X_ODXp z0P+2VmY=66atJ@arYdrn-2H})qg@m^)=J!&j$$}Wl~QkLXV^r|_Ea?dK7lBZ}Y zx&|y#^xF1{rY%>L>%r*tv>6nq=ndT!&6up{jk^@RsZ7x!YZM*YLeX1HMKgyeI;>97 z;b_XrRP;95jYv>5r&`h5k12Ww{&Kr2dS{BFqnN*|LeaaE6wRlMYqjX;(TcL2MGGb< zT1ZUyj#RV=`^8a3?=Mnx+yX^Qn18U1qT@R$`cSf>6Veo&I9bt2)IVIH=;UHWA6cj9 z6f~6j6fJ|PEft+st>}})K7FvFGqCXtc4ram?0Q9?qtBfEidJG{F3VM^idN%$eyySl z(-nQCo1%*=73I17C}T^}dNjT{P0`hHN+585lb4jUhCQFKFypAJ&=GwgisQS=M)^5y?S(fP+$IsSkAWs*!XJ7?$I=RQAo&e{33v$JH9^hr`l zCX-B(NoF!LQ<+R=CYdCe%uJH0B$=61l4P>aB$*_WB$Fgb`b;v(_xb(f`8emguJ@1E z`+cu-?)$p$HLFthG%EGG2Bq%JSL*lp|1e9b`*W1~6B-Yq`Pbe`{SBQ*(DM5crFNt5 z*f6F3HBYHM2bKEIR;B(sMiw2CC25^3z2NjdvYatWmcG4Y=~pdFNsCXbb63hRX}vfLJw<@Rb>?${$ssVPetnx{u(xu;5&d-0pOM3(!A zc|Wmdk>`PFvQ$wk&wE%nC$c<>?-NO~%%`R&VZjVpo@$h(miSNam1W^!S?UJM!g04e zN4|y?vOHfV%Oc|QJKL5QiLrzpzC@hHt+FibE6Xz8a~)$@fsR)zWm$>cD)hhJAWIW5 znv-RDbD}IQ3uSq0wJdMXlw~d2*A0>79s2z4Az9w*lI8tLvV4HnR*uEy9kR5=W%=(x zSw60l<&%UgpAv`j56gC9?vN~BhGgOXoaHNgJK^i~vg{(>H@juo-73qsjk2)sXxZCa zmhb6D7rsBRzHgT-`~9-~MBjhr^;7`td1O6%?+}; z7`vy*>c!5tNLIg3)&Tw)epy4^vPLRojSZDG^Q5dqYzFxU55nKg0zI7zX4RQV8WR2kKxs9F_Gy_zztv>o8(mGELS?u^mbNQE0uaMby3S6ojgs}!X{a#_L8-Dimavdb{cCl7R!1sz2x~U z>#RYtR_>Cun)yfQ(W7f*ox4g_o;$KWMem-aKMmyLdfvLYR@RqFWPO?5tbo_)(;N7` ziO#o%%KA3B*5dOHw(E(tvA3)rP}62KwU3f@3&(1!Pu6XFWc|ES)-Sqb{fhao>C3m& zv3H@YKjg}~pZTAeKh!Df;S;j{j`r?|tbdfr`WOBusP`Xw#-2}F(s-qDU7FV0r?ft8 zN;|VdY5hu-cFu66S(Yk|^S?AllhT|Ul;+0P%X|MgrDb3f^(!rt`9!(W&dpU?&S0fo zuvcjuv$Tr}l{Pe_v`cc7cIh^yjjU7JsFg~)9Q!Ny%gJNOH}<&FuEuWs3Z>r&dZ0;SDJRoXp0N}IV# zY4=Z1+N?&URqjz*)l{WDT%oktB}#jQxtbcK@%&iY{Mkx-YKhXGo}#pR>Ue&V(iR_5 z+KbfPSgW*Ula;oT+FqNXG@dg^TTN~2@|E`PK&8F6Uum1r)5_XM#Qk`*(zdd;ty^gw z2b8v>QfXgO(^u&Hn!3K(sI)!A+>7=fmMZPXPNf~#r?f*cr5)+3G(HQ`j?GlspU0He zL%e?mDeYgIY<$PqdZo(NdxLC!_+OpRERpT3df8H{WJ^6Ro3&jwd!cORRM}kPWb^QU zZ+mvhmcCoI;2zmR#j-`#$QGX@TlPuW&MTK~V4G}%P1%MlkZtHF*)Hyo?NZ{7B;P1( zE}te_?s(b8;+MBswrg@^yO!J&&~p7&*=}V1rY_lT?v|~vmuy9OvQ0f9TQPHYMr12x z{ch%_Gk4E?+3xKt+kHD_yMKmkvkuDkU|hC`l4PsiDBC0GcyxtqbFrBhl_9bz4Qg}%W#fF)_G^V~N2u+8>t#EJ#^b|e`-^ygQ^P+o+5SzH z{giRCpSn%<(`sescYN$;?vnki?XsstWKW$TyLF-L_NlTv=F0BI-e=10pCEgNP4+PM zvAFD6U9u-O!C~36{V*9=>yLl`M%m9Rk)8W7_6s^>AI#j46|%GEV*k$x*@u$rV)Ap& zX&<&u_DiP7KAg4T^JKp?30NON%n_rY7&gj25*;H41GXa@fZQXG$UX{9qnIB>{!z8C z26oGS8F4P7p3BBV1vElCoRocZ4wM0Uxz}R99NWvWy?hKXe|a4+KZg3pYyfJ!VjxsP z3+$3T*8^zDMRP7WbGu}}k{Yf=%aujI{FT^VxnFiZN9<#BVJ4ts>{jTO{VEp>hpB*e zp6Rl4Z`RK98}_^*Py%SoLw6pvUTwfI!2aq5z&z*ScJ9mA$4!7mK_|% z_o4>bZ!>{-Ja=Zl4clUDiVI;WP-ii9-GR*=*xZ559rIudFkiy)DM`qFC-ZkQe<#P{ zPU4sL2Ifoi0o%LA!wgsmt6>Lp%U)&$jzJmu%J45^t!%gKchj@G@xPmX-(3ahx_cAs z1&+})!9Xa1HLy?i>C`uU7?i?hI4L{V&Gs3@ozW)yJ^0)+7WnzPhhuuraoNiwK#ua| z&?)=9$$*}Fi=iI2!$H|+GBl++xr&+F=lxHt+STH9@!tT0eT;p5BOB}25c(PS6K!tU=yITk{&$R2ZqB$sD+i# z3iQ8J8eYVuT*r@99A%Kk99AExGqTY!AC z6To=(Qb6DAE+F0`#CrrCkD!C=K>H))dE|ubb8?^x)JvAp~ ze~h{xTL9#pOWwJYU@;t%{qaFC54Oq9^WFA&xq!xb?Xo{X51v5R6XSt+PpklHV!y*a z-w&gKn&#KTcG;g~?nz=liQSXvU*H0?FQDfOj>`VjP*?;9WUobI?F?vygR(zuz$ifH z)6~BZ--Y?Wcp~(#Cy6dI_y{K!K{aFE;pC#6_l|WCPZG!!9 zQucZ@)R(|&Kx2K6?9WAjT+fvPw$JUBo&6ho!z3VA!#>%c_W|SQ=K`9a-v!jPC>iMC zqCBX9C9n?2w}^Z%41}>j9WQK>eKDFB4*@hRZh#i(l>J3CyjTPq08Q*k+m}oO@-HFJ zON?JC2Xw!5O!h{`jRi0p+GKyZ4usint*(-O@;Z;F8it^7y)Qsg|<~YWq&;t#scHlkI3G{`zHF@ zMBJw1vcKVjNr2urm}_R-JPwKht(H`p0+4H6m+bFQ*E@xP?K|XMp8)c%p9`A+U(RFg?_%>V$LHPka6tAA zeP9p}YeNm7@x8t<6}HK~(GMlC9MJXt7-)bkz<5(K42D^N)=gXCgzO&-1M+;(E_-VP zs(|+&rU1w5Lt=hNoDb2y8QaY@!1`u%eq@7Oz=q!$wSR=BwmvWs@M$|F`+w2(-{DXJ z8)R=MZu=x?hNH57oCC!Cm>RZF_m=svU-nPP{Yf3{mVGNRw$hKS)VB42?4S0B$*>X* z%f2lE#N0;A&(QQ)F_8Z=GVWaFnQ`f=XP!1foU(o*xbBC<3MfP9m#jp7Px(4XqVQM?PTlU{LHosBd z5o$U*2{y_8zd^Eh)0^&jfXyGtPzBWWC))m;59B;PLH55=fPVF$>F=4cpYX_jvXAWl z9+sh9GES+6H8PTlWSr`OGT0{Lw3#wa?=9mDK?)p^k<9z#bN}!`i}=}`ZohM19&}e zi;VN}Js)iYi8~N|7X%?k#-PJ82B*rnXg;ilT{4CUSRcarf5>$)KEqmo8ZJT4CC6l3 zngH~Vj6eY_lrf6qIJ!i}mG9Y(GB}SnuBO-Qn;X}d5Qm{aPkFw>xCTwv%!WEx z0qbEa?13XP#wURlLNEx%z$7RIY93z;OJNO=i*tNq{2@3g;af;DZ4`jqH&b*Hh#5 z)ObBLUQdk^v6+aLiD;ilofCUx+%QYVq&N`wMzr3zR7SxB88;E|6LGAgG5cK;90uNj<^8&zY09y~;hYT{P!k@0W^9Fj46rHn`B$>1E>c$A*k z%#iUIeVDsh#^VV<=e!mfPc+MzKT5`vIly?qWEoGD%cvaytumgbPfs6_u@Jk3$7DQ1 z{m(F8HwMUAcU;D^6JVE&dOvKD@!V1w4KbJt+hsgYyhR1jCF6zRPzpQXq>LBQyJQ0# zmGP1b%49U6a~ZG8mdjXf1L|1bBZG4;nBODLdI5nw(gMe zX_E}jEsSl`cS zr82(t$=FjP4+9l(M6c`27&@N+N zZx{-U_icn@GJec~azOu&dt~fK$9`h(M=R$Z#!vYCGy?GXX+0d5anK{%cY>&3e_#gf6o&^hK{6SruPZ-C^)w5j2iNP=qih&#_8f5%a zDC1;M2K(B^zio1yvW36yTOkMcPaM4_$#L2SIZp2ji{#IbLa!-&Hi*e8d>2jp-N z*Ktq|(*@`-YXMtl9~c2>bgqE|a<~#u3`<~-9BzErcXzm}RAx9=U;{4@nzPlalD>}{%!5BFP;G2^w$N4Aa7#M+EIWE`& z$K@F0k>f)0TtuB0HOTQFY%lIF$0eO|Tsj}H;~u1A#1vQ}$H){I3*;S%?osF-H4a+j zxXcDqp;eC2R-m5I#2(!x$K^hl1?vEgk<6r?Cm7}CT zEQ0NF+&K*B<(+%vC>;Vz;J6%jjR9)Bi#o~@Pz0@TQjWW^ySo~8$-%ytW7-VZBFFR; zK=<^8K#UnVP$9=XedQ=8?|tO2sFGt=k{k~d%27$Iha^Y!G&vroKeN$3#}DM5QwDXg z0lMUPl-eGR0r4Njp5M`TJh}!t<)|S>4Qn-dKrJHK;KG6i|olpMx%jI~IoKNNh{a;`O>Rhl_j;BUJ zJsgswb{L?u_Lv+`kAoID7N*KkH$sm3;c`4ju0^H5&*q{7a=bv^7iP%uqEC*O`pD6U zed7^1_`Mg$()n^MTP?>cemPe3$nokHIaZR7`_PWpN6W#rz2l8Fax|m$%^W#e%H?>A zdf)CR$C};HEyr4FSsMgu=33pcwgj+Qy9kKAb}Q_I6LP#mo_Cf4dEPNi`jDfk(CdY;(7z*@c!xEr|jq?C~@1x;;V)Hw#j`#Cnh8!QvlHeBIf0`r5XK37x{TFEYGAKu9jU2l?a(sj4Z@cB#J6w*g-E#a$to_I2__>!H zzetW>Ikvx{@2FLd?wA~Z9F^lZJ?&|b;~(^%q+kEm$vkC-%u|ocFFhnYvtN+Dw^7zD#qKOs;)QPm@evvrK4XlK-V4HWtQ}VF)$li;e^aP z2LX2Mv72}9lUeG6i7*e^WZsnoLjb*ZZGvMm%ZOiA42z*d=Co}xr-uLy)5$gcfXo^6 zV8#OIlF2!+$^N)`54Pogz^)v-@@|>;Vs|fg_wJQBlR9V4gsn2~qi^?(f_gYCvjPnj z*j4P7c|ZB@C*J*AWX?(jV$7NfwXgxm{{Zt3;PXHc;P(K%dVu;W=|LqmS55(HtXu=+ zelQt``(Odo0R4E7TvffHKhTpZ`c~BhoiZOvf;don^-h@&SHpIhkDz4^JW8G#d>(6+ zITu}zACx(7xykXeh*Lh62|S!P|E%x4*ME^R*7B9mu!&F7h4)GqS{ z#xI88giOwv&6k*eIVN*y5Dv*)MxWTLG+*f}bHzf~D)UupdKE3N&VY5$Epz1nm;T``7^c$>t(WsXa3qQ^S2!`f1dz#&>{1v2@_$H%>Plt z|0cmgK!0~%Aa3_cnSZeM2WvdPZ2r+I^H>t(1GdMA^Cvq0%!RqoCiA#}ejJ|-#6Esf z=3m2r^}n{r?7_chxXi!1WS*e6C#dBgY&btR|2@Xvx%SJMv{KGqbD;@#K#!cK`Cycs zr!SYY4|d7Ta`qhn6JVB{{gUKN=?BcEFqgtyN~4^qML?`n?5!(co1FHDoW@2uow;(l z%YZdcZzu$OJl%47<1hnO!67+)!(a&-b;9Y33>TF4d?KgfbL6UPz-Hyjv(iVg>Y2Pk@S3IB~Zgi;*7#)R1MIR z%gDtu0nW>o1N|FK4WkzWIxZgs_0TEjn1L_{y5!8QkaH|CuBwtVZ>OB&d~#mXBjL;a!xOi^Pb&umiGbjmQRs$X0n_W*zsNKe4wA457x_BJwVRc^zu=9!+E^((L5-J zMRLwvAm%!-3p&`{jHVyJzvO7nA`#daeerZ=idv-SL@__ zZIqm=Hp$skEaw}?|0vlu$*r(_ZGfyO@qb2-0Gn) zAISf90xF?hPWFoIoI}vLTHn7oe$8st`rsm{eKso8~Q;7bjtZ&f8hN_;=Yf~ zrV(;}uvE?uhsn9QNzOK6@r<5x3w3UpA?MZ_V7_CpoZDS;?wBm+SJc~iSk7tKtVhxW;NWRjfS)PHQIoPYV{{F^-gG|Qzaa-9mN*fo+$>kWesZyY;W}rZT$Y(~r7e)lzD6!{vRv-CT)w_?`FF_`N|7tFO|Hyt zx%jMc^~dHsUUO>Y8hBi;!E@yr+DEQS=0OYWgdVwudtf*e1GdBQ8&14SlOP0Rp&S-N zD;$(-L@Eq~iGa2d%V7%~m22cixkjOzy#Uwce!0e=DHrWyna>+8*EqPQQ?7jSURN*I zgc`Xf_L7U|WL!5E%2g1N>!vEXCXbfu=Am*;886o@`EnK3iOUDMZX?(2*c2a->yAdb z?o5`ebbwrCR=Mu3lxsRRGjip+CoWex`tLm~*G$%C4wCD>Jh|>C=KbiYTqIZ33c0FR z$@NG=u19(Q7{_8R+U9MRYd(HFN8qZZ#)XDl&*aEew@|KUH_7$f9J!vKE7uEy<$5tD z*GuSr8GTD9$hE9Vu2-t%T0sw2mdUk>T3&CL>kV|i;Rk%)7zf3G-5U+i0$ZR9dgN+O z1>!ajhlwx^=0YQ^hwX4st~ZmwgaI%Hra%SM!b)g`U2s&cmSph5U>FC*a`ErV^)`KH z@748AP_7N5<=VJkt`F$d=CN|M?UC!_a=AVs&!;7Fb=A#C3k&4 zK<{%$BXKJg1J4r`I@nIG6VH9tiv7IlV)kJ_qGFW41iWgP>cUzSy0WCr`f} z@|=BAp40+)ER*F)8w<7a*!se8dF<`-ILKq}k;fI6$Bm6=nmpbbdD6+_CuU%mJQ@52 z;1K!43*?CqFP1M)e5yQIC*%xfa}9CF6YpB$vIp#$K+V?^V`8T~lUTd4MV^AC^4vrW&LKTFAC_lImpp}2K^LUax^U(7|w>(ec z_tXe^_)hUWy;z=Sh+jvZdg46SDbMrFz0hBt#q|HhL-M>t%$Ensv$R5<S$|xf4TbW&M?c?Zya^qx z)b!zYc|Ky?wp*Tddh;>!pR~&J>0Eg}qmIu_dA1XedsUt<$?;XAJe}nH8oO`Wc#46h%@3emMPG2tXJ$3TlJ4oL9 z&{t6<@2rr#4^+teAaf5H@>b(FyHMUa^s9#2A3GxN<7?z)FW&oPFL@WB@u@a>pI$9* zT|(YxSIPU_XnCI>F7FHU=f&~zzBEPNm&@f{M(kIp>(yEEzQ)`tbT!epX5P0QyfSdSIRm$gs6{;Bc}AV3!szfnPbgXOg#~ zPQF?57`jdy{tKA~s!X@(6^_TD2 z1M)qG|MLsvTg2Lnynkt|d@rw;Z@DSoEBobpwN*a;?-5@U{>|{_8u?aJ%bGFrt;?5h z{b2bvz@nf zNrRN$YpBvs+okkAE~O{;Q+nUoO7B;w^pskq^O=#JmaBB5KrJ* z8X}0{Rb8`ne~Se%@B4pI@PL&NI_5T&(mV#2LCs>6Z*t`lZK} zKC(mUmnSQo&w}(TtCfD$5v7kyRr>fXO22NW(kG&A(h{W?tXBGDa!pyK^joJW{Wf&o zPTV^VD4pw@^s;eEpH`~$88M}o<6B`UeO9~DADpN3htT}+VWrQhQTk((mHv2%(&rOn z!FHuTolyES-#Bv zLyponE>QZWdZm9@r1Xy(mEMk)Pq6!xSf63@d5Y3^_?5nMq0)DufA=A!f7h+_A8bnh z5lug>Q~J**m40Zk(hv72{V2ZOX!>)E(*Hv1-xHPo&o=o_86^Ly#qytaRQ^6?@+WVV z|E$UKrwoxlb%*?ETjV!}%5N@|-(4cVw@QA0fBCtGW?lJk_pC*4Rb05*4_I&xb(2q}x9 z<^Khn!#VQ*j&HYL{yz)k|BGJz!~1_r6i7Otz-iEDngVCeQlKC2Q>6g=t^s?O0!~u_ zZ;Ar`9SX1q8i+J1z&T(b8{6~dD==`o0)uS|3=JtTyq5waXDe`dssgzK6}alK0@o~5 zVEj-xsX+cD1+HsWU_z||*Ox26eYe1*l?oITD{#|R1#V6#a7&H?g{2DIx>teQ$iW_5 zpcvabRw=+UVS&;K3Y5)JU|N|1)9V!AS|)JsMg_P}9=Lz30uLlBP6?lE20?qRjXrT`7#RS%}zOGGycj@KE zY6U*%r@&?p%vIo{K?<}DRp7s4;FtpK-3oC3Ht-30d44&-@3sZDEmq(&a(Ap(V0#}0 zz8I*$j`<3F313wy@O6p;-;n>CB?|0j?pt2>98%!Br3&mlpg>oR0zXVs;KzOn?4PN? zfw2l4EK=YQTKTsa_`SaZNAc@!QQ%me0)J9t4|e~=f!=W)5>%^#r>s`+)I0@y9Z|4% znS!S`DtN{)1(UZa*mt0UXYEk%>{ev5*Wu;IDHAkTaR3(brWo6j zWCiccQLwaI!7{Ypy-~sG{S}-+p7NN2_m(PnAL|wC6r43!LGEP+tH@j3rQjny3O+_n zk4;fK`FU~{>GEkz2x zwLrnQ$-SmQ!L@r7d}pSD@1py?gn}EXc@sVRfZQKeDfp48VB1aw+e;Mu_>h913|DX~ z<83Vpb`&W1`F;hz$Ww3!8owH%VCOmoccm!!%^(H8O;YeX`m%Sqf?e3}TchBQ#}xdD z_dgT&mxT)cTBqP|gBAQeqTv6q{e#y(eF`4mtYD8#!M}GX_z$)Gdr}!mHf5aJsEpG_ zDWi9bGWsMbVl7GRL1pFlyO6yG788wne{2m7ow#oUm5JV zWZbb%8Ks6Y?(UDP!((Wjrxl8Bew< zqjr-r>iR09zCjs_sB!U1Wh{Z0S14mSy?K?|UdvTR6Yt+7*6O9oSVNrk%x&1Gj7{`w zGrsM_*jlcP4s?A^zU}m3N0KtWMC;Bi%IHMf*Xa3%*x%MD<2%;&b|~YA(aP9&LK*wf zdw}_01}o#&RAv0e`jO4bI7a`c zN};jq6uLTDp=+!P<fNATepsnFwS;u=2m)KY~O693t43O%2r(2LkLdK6mTOQBcm69EMsKuqwTk{oKO^&yzW9=%1-eGS2JcZt+j`xW3en_EB?FzLnP-ycA zh1w=6)NWPiL%W?N`?MJ?_UvxdYTkELA;X< z3TuPHNo5N6+N^NzLWTPbRya9X;l4{1K0BuHIl~mTY**M8f*OVG$6A2NVuso54EQ;o z3xcv*?Uub}T$V!wv2*N-XO%(#Uf ztwzt9Hih4@D$Kr7_`L-RZyKs_>nw#gZ&didQx)EVE}oMJe?||tS1SA^uU~Ibco)9k zpzmAyzh||=dq*hzeX+tnBrE(Qz1qK5;RD3_nfRQGh7XhDcl31+Quxmu3jaM=;giJu zcancmFF2scpu>s` zCimbjMK0Q)$PniLvs00w=(u=^BE!lQxdc7Kmn(89^CPw?GO8Dlii{)oH8qNiCx3piBG>g-WCFUc$7Uk7H}E=X zg(5dnPXVu!li-*lQ?R{dm?DJEBPmEJ!{%%DUu>Mq~BDM5sA$p#n2ha9Xq@Fq&(D;0hB3x@mUQAYGNsb~f z%~Yh3_)CL|ESsgs@+peEvQ?2+ixgSerO0dDio9N;NYi*l-dLbWGjUoXio8WFtB)wM z#!!U4`^Y+M*H2UA-F8KI<|wjpl_Hx=MLs}tYlk8q9#w?%>PQ>@?RkoPyjzh^$hWmk zk!|&gbWq>t)cQq|B46USbE6`i#Mwp6-KmOvJ5`ZA2Nl^%?(hAIbWKv^2lVVC-j630 z`3c{j>HEPQiX5VMzphZ^Fj|hVb~L2O|H>5kgSf{gEAnT9B7f1Fo)$&^UZTi9)P55F z9j&NlE1FcP=&3D=o@OfAd$po{8Wl~Rr)Xb8(X(bK+OI*;l)j3dQ>Un9xuR*sin4DX zHRdYnXjPQ&(5P#jqV8>qdM7ICTcoJpr)UtLj2=b9gA|P{Q8czi(MJ=miWW^(^tO6M zZ)c9r%IKZcS9(m*vMGvA!+%DyqUCW#XZBI_zOjn(JNMC9s}y};uc8kQQS>45K1_^9 zLW<7WsA!Ex(Z{Iy@db)8ERFv!RXmhusZ<&g&rdMn76>iCC?~-AtagLyER@T>0*feo~+)*XYsDB8qk#R+R7W=#E-Nca|vHS*qyQ?TUU= zspuZRqTk{B{Xj*3C|C5yMT-8kQqiBcDf&x=qQ4GT^tXkI{_a!sC~>>zD0+;%f38sU zufB@*Fh1c@^rWenRw&7Z} zy+^T$TNImwT|tpzlhHF}m}0jaQS8>uirv;vvD=AxN2+2aO^TJGll{-wbYk37so1^5 zxNp8<_s>&oR-0lElB*iK+0ztzq*Jj+_bB!lF&`hJ*b~(9WWHigQDg0X#h#&_x_ye( z*C^IN&5KOMUg%cr#U+Y0PEc&A6kA4)SAvSISgF{`jf%Zaj5n-`@hnU1EpoiQMlr6v zV(&~tohG$yMxA);}AfSjRENwl7zV>-yME=tR#q z*zWF8Y)^+`-@6p+qNaVb72Cf_u>o@iP%SPK|%} zQ|zDZiv2rQnWqd;X3}P5_8PCu-f?B}U7C5uN@e!-Df6rq$~^n1GS3;U%+yuNv{ow9 z?op<3M48TNWxC6i=}S^(dWkXv3zeC%U76uo%8b=3GfwR6$;v!8sLTNel*#vL<^?Wg zUN}sdL*mLDI$W8o6LB@1xA_g~~iON14Z2 z>)ET!lc|cUzv4+ww}Z%%`qY+!|8cwoY+lmEz`l#rgLe=N?x) zz8Hyig zu4jkhTnlBLvQt^7^;XvDrOHb7DXVY3vifaM);Y74WgVa_+g4>6UCMG6D$9LXS-uI% zV$U=yV~Mh&xyp+7Q&#o@Wu3cJSvj@J;=V!Fh4@^wM_EHpDC?3%${NwAtWm3!b@^~* zC0AX?nqYF7lyLFvMOuWYGr+! zP}X-RmGuL*`-dv)=M-ffDpA&NgOv4qo3j20D(kOt$~rMaS^st@aq40vPCuf=nTwR@ zw^fPMSxVT7m2f00;c_YAtyCf~T!~P<644$dvTaHXSg6GL^OYFfti(l(hhWEfd*VMW zN(^mM;^IyvcqTSMUlW)1Qi7lH#K;CEMqz&$Yn;y{#w<}H*Qx~9f{C$Hl(=e}5?41W zam^4V#uM+_u}b8xQQ|t{O<--}93^f*-;HHT6zo!Ba-kA8lk*n*3(F53G5(R`@e{Ql;PoJ}59KOxxUUkwZBpWQG#o`&ccBu0 z>{sH?Y9)>nyNCMz?or~Ou}YjgsccPCc9K=ur!H6aX`_|h`-HOl6ev46sO&TMDVy`^ z?6c=7`<#ffQ!ABi=~i~y0A<_ov+q~7qfXf-KCT*Nvp<#XU7+mrn6mwQl^rZrcE(C& zho>q#TBYnbd9o^$omi*r{>PL(V4SjZY|1{rUD<cvE+W@|N|ZhHh_Z)mRQB+C zWsjJt>`_woWlNNOIb6}E>?`{yd+Z=(=f#yhE~M;h4k-KD8fE7nSM~(_C)O%^(pY5| zpmTDEvTrF>_N~>*{yzrJKThhYedBLQR+1zuNs=U$c6MfVc7E;r-r1Si+1Z)dnc3Od zBr8d>&ss@(lB^_2RLNs=V#SxJ&4Ns=T)g0>M9{Mm_uztsNL_@DL^oSsR+|K%{8)r8^f$r#QV zis9V-7|vUU;r#U&I{Pqmv18~u07JJP81koMxXgn=YYT>6oiX&Djp6Ei4A&XVKMh0a77S$zF@#$% zl+VCW(F;SR_!3bJ$yN-htr#+j$x2hLY&YaE+$jE=8OEH!Fm@h>aVIg1SFbaDhWn>tXzGh$awiN^z%Vt0VOoC-kM+Tzvq^?0c43$` z97BtEXP>|@R~++3VVE!M1&Uc{#;|AxhF5xHSfad^F2%4+8kQ^W&2AX}*AK&6^%&kB zgW(<3mOySl0DD0P`@Vagk4md{P z^=1kSj1(5uQ)p6rk?^b&D0FO~Q0GVsJ(DQ(&!(_czM%#R%ll9mlf7~Ug^5iRrtB1E zrczjArSOIng~Nn(bBMwbeJLEN*il<4yrU=~7?3KiL)jW(>Pr!JMY}XCIIB+Y* z!M!mS<}jMA7>hM;JBZOW4x@J}#(*7Tuoa`8Cydd0jFp`*CXE%_#u<5P z>oGnq9-XBy&TNnINzKn{!1$E3JRQL}dm+X-9Wg$;0ONB`jPv$moIeZW0{JbJ-%H0a zE;eIaB7Qwn7++WJ+P^Wbn2&Mg6pXFiFurvXb+$i5o zF^roPwD3Ly)a#|98<3|n0nV^>SM>$ zw=O_(ajU`nX3T8Aku44tPo6mVsiAihorV(8+jU0h# zlrTmg$Mhe~-MI_XU3)N%&0-oa-21v!niM|)v3{0OSF?}k%pN+%xx$Iv=F?~55(=PdH&B*l4 z98BMC!}OhU`Chty(D+Byqi zF^}qn`F7<}AH&=rO^w37TNw9D!+fviCv?R;QEgHy<|g4!UW57J-k2ZRgZa^2m}f}$ z6SB<`*VEGYjBuV+{Bu(=KR*`pixJE(4Z!^JWX!K@$GmhL=GSF=Lq03}VQ!s?d6l%i z(+TstNzCsFcfAYqh9Q_g65hwBF>g`7^*H9w*J0kF8thcROPt^I#r&=E-=`e*OX~sE z?z%=0O- z%%I2?p~x|pBG(9tyd5bD^rT2@ctxQWiprA|Rm`EN@(e}EaTKMFQ&c^fBAsI^8nTC? z8x>op`4Q4^n>5_spQ1Z7ZshYnU0`fuc90Rp-`<-pZp$ z@3EpaA&S-t`+fO+aEzjj!zkL6p=k3|iau?m=(7V9>G`B+$0Uk&Dt^}{ioP*Yr2W*Q zef=ofuUh>$h@zil*Pd0;FY-S+grZ~0`?#5+zuHmsw}GO64pMX`hed0ymUgGHoU;&1 zUJI5^W-OieV!5apOSk@5F71ouvTay;)?>M{E0(LaW9hpB%eBj~3lFJz z7c3i%SU&EJWsBxjcgyxOSiW43WtZY~cFD5WisgItKd62`NyA}jJ}R!?rQ!HaEPtuj zdYDD$k&4giNb%XTDL%I^#T^$?d_juhE}JO6cn-yvY@_(HCW^1irbg zPN#Ti1I0IOr+Bz9ZkS2nPZJ_v#Z4|E@Pw`u$D1KYxHS%BAiQ*6D zQT&lO^!Ho5wJXJ+M=Abt5XE1MbW5uiwPewu9mmvj07f z;(w1~Wf@lOH(B#`VC^&!YnSC%yY0r>y&KlcHP`zT*1m(WUK_wVuou?BYNiIPmNi&y zd$BsVVD-4L`V~_)4r}>PtojbNYJJL@>5nzn73&Q_tiyI;y;;5^BUo=2R{eggjk4)X zm37<^tP>VvofOA9IS=d9Nm!?A+?>Vwq&S|I&zzH3pRdEZa0ymDQ(E;rX???^b`0wZ zX@7Gx)|K^G|0kTchG1Q#xVMjDeMektPGDU-0qc9~u)ejxRE+7q;HY{IH%OzUQG zZn0zi^bFQ*gRpLI#kxZnI~D(RKGtuP&$pW2C*S=uu^wo|dT>3~Lp!nlG8XI64p@KN zhxHHT`R81$C)==|?uS*+l(u#Yv7IvrTV6M8=Qm>OJRaLc^RQhq7~5rMu=N;$?eaLb zo)fTLF%?^{Hf+6<*sf~9)@LTRtCwQC#*D4sCT!Op!**RCYy;#!@HDpTo3RZ(jLk3- zo6&&HY{6DE3!7yoKJRR7{tULjer#pEu!Y88i$t)M zr?5rE5u1XoQoQja*s3~WOKrrKk?v~cQgaGh?M`erbi#I{9osN*)s4b-v+TEIvE3@X zk!!JyI*RQM`PA>j*02RzV-DLGX}ZUV?cToF#&5+oL2(lsu}zZZCUHHa*oX75O6GgXhL24HKMi*5EEY|nPZ_MG%QzZ%^_WbZwGAqq;tRceq4s_(0pu%w_y8KF!IU^ikL!Q;lYvz}{@c{)B4q zq;h&Hj{WJ5*k`ZDKIaJbx%08llaBfAu)iREFUtOsYWcGKmyE!^RQW7ZzkCk%6;rXV zRGoB>W?!YYT5<0V!2X_M)_2FQwI}<=HP||cv_j}QBI8?f(F z-1nOQp_iKY4~)kCVapA9B1Wlw408jeHKTDE;!B|g5$iNI66+l z(Wx(v3*>WQ4;)=I-!&h{#lvxQYr~O05r;m<9hWV`arqb=S9HhGYXFWbV>o&XuaD-g z4&cz=mE)QNIIflLx1nHhC|<(4u|GT zcHnS(aCqu)c%{iFJilT~C*#mFxg(^xu<*;5;Hc<`Bc{1Z#V5=-lJz*MPUFZZpK9^f zOu|u{#W6%aLr3EnHWo*ncyHc}ZMorF^+~4IPMDJxZ8(g zY!i-gvvG`HgyX-vaojfs$NfKkvu!%V`|Hs+L-RaU4_a+Q#8H zJ_yGN#heuGDPf$h!*M2qPVnMv*AZv?J~%tH$C($x*>MccPKR(_I2@R4?g7cC# zoZZ{u)P1V+@_jh3sK2IfGpom*7X<0vUPM2SZ>-*!q$H6NNoN#r0UvG$b2*Hco} zOi4!bxgaG&c2aWVR7&d1l-x3ll93IRj9Ng+9lI&HvnM5YIVl+%qvT%MCTykTek&yp zNXJ7SN*)&OG~v!@M@jP(N@hv()6*!KGl-Js`cg7KkCGQVQ?h6&C9e*lWLX;}E0k+% ze@fo&K*^dqO4co>WP|#Tgz<4JC7-UPWcy@FzFb1duKkqkIZnyG0hIh8%{ntvqP35b z-^BmBbhLFC{awN8>tYH?9sX zxXwL>OZ!HyPGfL&?uM(&NnG9JcS#SmEx7URk+^R6;krYuUKkBaaW#r(OdYPf zkK?*WG53mVLI+&;3HJf%n%oQ56a%iQJ#am;0oQctpD_wov+6Tbc|9rYr%vITE&Mq- zTyvAS=Bb}Q2iJlfxE40zTC@n);+?o&&BOKDAY8Ba#I<53u9X{cz116+&ZN5D*@|ne z@ZTSYYlHett++Nz!>7vYvn9B;55cvg1=m;IaeXcO9y6}JQ*iAQug+At4yylIyhr-s zIyxQK@2bV|@wony|KD41o$i3^%qiSwjltc1A?|ZWZ_XWdocWJ?Wv26LLarcO; zZNh!|M%+Esu2_lt%8s~u@50?@0PeoMabJ_f-R~ss{)cc6T!XtnbA}Y|!fCjTqi~y= zahtc}E?SSfSbWxfxb1bg9Y=7N5BJ;hduIghcbDK^r?~ZcO+Hj@be_}wi8wx0J+@_VZ&!`JT!?#@^8QA8 z^nK~xw-dMS(cC}I#r@NM+=qpKWHIhzU2(T5=Fk4P|59%MNc)*QJWR)x3tNA09ood9Ij)=c+Dv`gX;0?N&Sk*W=OJwa2gwk8wX9^J+Yn zsd%hvcHuc^;BigE<5i6B5FYs~x>kHWL2H=ebF@T}X8=L6w?sOwE5@qDrc&(Uj9gg?1jd(9#jkni$yuD}Qy}CW#Yc}D%R`CP! z@D4KL)pNJEuo16*i{iCt-gXSHeGy(~9bQ)kuP2AsE1Q20-ct2tKD^;L-tvifD`w!W zR9r&#s?m5;Yw>2f;H_SPw`LVyt=V~R7>8GDr{0?eCe1ewV|$e>&bD*Wvwn zFy14p@&2|H?=jW%_nCPAh~hmy74M(o{!96t+=ln>V|f1&@4p@J{$B$=eNX$^jlg&I z0et67!FO&wzC77GI`N&q6yF8l>%0(Ommt22>hN7W2w%6=`0_RGJ`-P$t@wJ*z}G8| z@5&Z@S1rJI^#pu<_u{*@9lrjH@ePRJ8@LMJ;GXyjj^Qg*oJpMKR(uw5S)=&u-SIhQ z;Va4Da~;IzX~yT%d_dR1e)!5(;tL(Z7g1k+3SWh^#XI0jtiYG*gfBe~U-f)^H9PRt zj>dOG4}3$n;~S>yx{mm6o`~<3@%V1-jc=slN6o@Fx*NVbPUHK}8hm#);k(O@Z>#~| zxOMo(=i~dYwB6^yH*pd^y`Oy#EXUV$2H)ht_@;pGVO>8W-H-Oh_m~ymj9vJeH{yFz zdY>AB?`d&9(*@t0Mfjc*&b)*8=I_V%qO>hkofb*QD@*XbIu74!(zARez7>u5-juyn z9B&=Pw_3Ta3F2ETE$^%Uz=iKa1HO;;;QM$izRh~wwj9Ct*$8}}&%yVFa{tnZZ>MUv zYahPdJMry_;@ew~Z=W6C5B>1{D6F40dURUY7r?HvH|o;qTBJ|G8uFpEm`6C$$TE;@24f|HV!C^X>S%`|$VJg}2@fT$A7xu@m^OOFfDE{K%_-*s>J0{~V znTp@N0l%*c{=f|U!EyLQ`S`ymR_Bc_tysS-%yAD zM)}oc@ZT~R|E=;LH6H)y#rW$_;cpm?ztN6=jIi%f+`Sv||5v{EwZnh^Qv6Lr@K2V` zDRc2ZqFkmOz^~75|KqdpKViW?Q~tBo;BT3Y{~6`+>|y-R9l@{vYwKUI9{&u+FQ1Bk#eV$%leV{-@xQIOclP0b_ay%JcH&f7~@P8>?I}hUjTDrfH?!9sR`xfB;!HWM!C;p$J_z#EhAL)w!XdeFGq~rH> z_>aqeLizvQ2mfjLotZ)4EC`$(CveUR0(q?j&bJfjJdD6aeFqlVxQUdqMHfarkrtt(OFCs9diNGU@eN=NZCJ<=eLqO}Ffv1E!djx@J z~N^Qb$W+-(F$ESI%S(gS+Q5w#pw7fT^ z6_Y59Po*@uo6@wM(&{;s=EQS@kJ4d^9X_1WTcecTCf?CKC~e45dRKc&@192KxN(&J zcM7HVOTz=wJb4zSQwLExO?qYs=ZQv2pFBxv%ScLR3-8(Gls>nI(ih^CF6=|;BE>C{ zj-`t!eO*3pNZU&Jye0nC!hg4p(sdIk)wzw*kECO>a{5%*pLe8m#|%opYNhm>v6Svr zp5NC~dSD%;KWY3+H%foaQhKa2rEPmD{qqc^e@7_&w>Lpf5Ij3a@SFyMd0Pl}(ywhV zTtM(5*)Qo%@Y16Md+Z_DYbL=y6A1R*O7PlY1g{%Ta9}gR!9xia?j=~%gJAJmf({Eo zm*zaD3HlEa48{pYMiQ(LUOYok&;7xSm0)%V^=bk|X$4l#dA%c_41Rrci@S)WNAKpyx(b)ta-$3w5VYle|nfV0gO2fQk z1Q#?Cd`Vhf=}7QZ#lAj{;0ne4PkP@L_nJ)v-|I#2{Y3;fsNbl$kEQ2RacmnwaEJ2T zxr^Y}2MB(PlJfW0dJxu1xm_W%|8C+2CcA8MjcTb*?gd2g*u9 zlzHY;=4+!Y7^5tlrL1BWWr=*s(%mS_x+tqvKU5euL7Dar%SH{S>_5V5oI}~zddluS zLfL&2C~FemlxE5vmbOPWQTC{GKGvVI8OJHpen{EO{ggdrr0i)YWzWo`>{-P>C;s`m zUNDrhh2mOthO$?BQl{_evSnQ;TRw;~tzDI^+(X%0@_BnZWoy<`_MZCn<0;!{rfjqF z*s_NJe zknYVwXB{BaZZV;=>j<@9LFk-Agw9P7${R+gV<$rA%kP50ggTEQbfM<7<{0X_h)}lx zq5S29y6+=&d1pdBXAc5`Q00`+mEi~u^p~2e; z85#){ir*9^R5XZCaXukiA42vKgdA;zO6C#Ly;{gKjgUT5LV>M>g1ZQX`V!LGNvM1# zp$f%RS_viA5UR2eN^K#O5k^*;YmN{aBJLZ85xOx;=qBOZtai&BLboc%+aiQ+?@8#6 zj)b%)9BP?uxm9}w4LgSkVP0)DaSVEIl6KWF2gVLq*-Jyq15t^plADuwx zG5J2OadQiynVO%~OsGY1v(@JGCp5Pgq35LidDYu+BebNR(9!^* zWnBp^S3OpYBeYWZtqTdQQckOv5?Zr>(AuMf-fu@}z4$k5B(zcW*(9#b;|Xnj>xh2zP8pxRYAvv4p$i z2w!xVaJL?Wwe}M3zLRi|NrW$NBYeeD!o9l@?lXvR-(`fa9Z&eWVT1?f5x!nH1w9ED zsu_0?HVem6N7#CZu>B`gh%fp{2ys+>`qwEXyLK)zgK$x+kvp| z*TUMD2tOb#59SkoC`S0ESl|EQ$eaoI7Fmy77^1bB1QE?iu)0< z4JG23K&0dp5$!=me9c4x!Y}JgB+`jURITD5k;(=liQPm}U5RAGn;l6cC;uVhyU|SK zCSeXw5xLb$Cs;+>EsGVvsl2kb;1j1ieKp2*Z8 zL>^ThGsN30oSDmrJQXDJ^cf;^6t6v`$ov&VUKHm`ieGFXvScNZrF)1hJ3{1*_C($s zP2_(wh`hCr$UD-oR^xRUBI{d-d^ncKM`~L0j%?{hME{>9vTYZUFY<_d*_+5$%5nEF zBHs=o@?9H|?^hA|VKb3~s_!9b_(ht2RnEU@{D(CDX(jSkj>z99h@6(DGi{WgHG=Z? zM#?+Pq&#mOx@D9aOt>pDCMIjP(FGh<@M6op!i13k6B9jxFM8J7(n?% z%}r{iylEHZllM~ou#@sf7E?Z5_Q$(WJ~N;4Sz{<~IYs$1t0PGou^{-0vYeOl2{Sf6Vr1yVntL9SvPEX3;jZnVMO8I*Eeb|TckHojRmGV!IQ~tSu z@-M`tGfm}RouGWTbbYHD>}#R?he4G8xQFtemQj9q7UjQArTo|o%Kwn<#5BrJ%Kne? zI%6h!))b=cGeplFOtj-BqIw;oU1k#Px{7H2Y@(NqC)%@#XfIvs{Sxi#B6@9%=yivQ z4w_4J@NS}oGl-fO5Va~!`#jN-V?;fQ^=&3vDvq+fM9WVSjj1IypYBRj&!W*<^+Pp( zQzxRsI};rtj8T(`*87MytR;F^f1-D{620dT(eY!5-Z!7_YUR5k#j#blNLy5L1muGenohz*82M~Qh4+)hQG zCMvF3K}G*DR1Az$G1y3ju_qNp!>OB^Qm}aDHZ>l zL&e+us958pVx66e^_!^pP&L@JjfzjZQt_Fze7=r~9Y?A7x(5||Mp3aZMa2&jsW>S6 zVd>EQb48o<|0%71NzW>$?OO6=S<#Lo8->)cB0A~Ugz4-(5CN$fHYv7WlV zvYFV`b;PdiKx{x~VmiMP)4E#BG@4k^abnif#GJ#4X`MXg%@FhNCsx*tSVVpmdx^!z z6HA4NWo8qr*+cAxCSt>e5W9I9v0J5M)DmKMtRU8)_`8HR_9(G?HxRpT3b6-_#3uJ3 z_V8F@(>fBHAw5raA=VtGMSE5L+PoLR~N3O6=90#9mihA-?}jC$?%Ku{FY8 z*N)f+EyOksBeof0pY|p8c~4?H6#vy^V!9`a?N!Y84a9zwrk|6lqf+nf%KSl8UbdOaE230h)rU&GuPd+JLgl~|m4nAo zY1~Go_K7NOeW@&wk7pK@foW8R%v6>iq%z)#%2YclvjeECok`^|`Q5yL%3Fs~IqC?N z^|CkWdaSs{&!F;t3zZMHP&suGmD9&i`NSkDpK7J@8S%|qOXY&qR4x+kk{p$ zWRSsNAdh?*~!2|1gyY)PBydmB)@z*>;@DKNWX! zJC*+|rSgnbRXj}m?7qa$X(4{@I^rGs5$`mcc;~gmFUk?`79^g(hWKSuiT7Mh{K`?p zui8qyZ;E*TI^qM46TiMI@q#4r!X?Dbnk(*2+}1?g*^apD5OLpW;-zzlhkV2%ny=_Z zymBM)s_w+o3yD|DmYYKSh7rVvbs>JU?6;gCe%k=zqlHo5k9flo;&(L@AFFonQsNVq z6Tg2y@uuCxrwDgifcT6C;xi``Z&^(I=~cv^5$Cg3;?MOY{=DX2SV8abV!`X1u@hZ8?wBz~|n@t?*K*WYsdm(j$3?N9tSwcnk@ z|A-L(Q~h5vh@WaB{_koMOe4{ujzq`VB+j2p;(`SvE^H-n(R>o!`jE)ClIT91#N}N` z^gKc0$_^y1>P_P6Q8NemPJ@IfR-2xpX!M7=m0XOXyT2?_l+E^&{z z?;T6xznY&AS35=GKE+HF-u(?ECPhd*FrP%zUJ{dq^Uz`v54Tej&eZKBbkCl6bTWzQ z^GH0Ve#Ryej~^iML<@Lja zBwpM`;w2A>MGHy1yo1Cm1`;Qv#L7`5T4jH06^T{* zN$5S9ct?Eib|JA=Ilgz4#QVBlzm>!W#cdSsrWlEj7n9I?Gx4d~*6Ad+N!ND8>~N9z zQu%+SdhA+8Vs}3h->634O6zwT?^{k{e}Kdfvq>Bf#*arx{B(@O&#OuNqBrqqLg$VXf9d*f*-t6|(^E*CnN5;rl6po+o_&bqIcrIt+ks?WJ;{#K zNp_k?vh!Y&U6zpSY9@K{N|Kj!CYdk4?(<3ZSWU8LN0L`)zITvhpA5;XPm;Vw^ViNI z+5Z^HfxAdvf0Sgwc#?&!Buze&MRQ0N?1s#PeTJl0di+C4maZaMR!1^y zBw21DSz#aauYL$&Y)G{3J(m>nM`jq!)obe^w4hhLSvbhUD+UK5i#@VhhQ?*O5Fuoa7k`ReGhX&W=*mVHQ>A zjiu`R*;HL{lBzB{sJgg4Rr#H$>OO#~9)qarxtA*aUaab>$yD{#+_k-^x~?--17}io z{UNFheW@~aq{^)LVi#5RW~xdiP^C4UDu0%$;9;u5>#2&$FE){?#3ZUx8>y;}P?hsg zb%UL%8)r~e*Pp7JPf&I1aH>X4rRom(|K}i8W5hRhD^>SyqiVt?swT~$>Y)~@9ud!D zL8_V+J4^Y@+DX+@vb8LrYIck&y|1gDT}#z-^;GHex@x|z7f6@h(^W4mqv~b(ELOft zwo~<*fvVTlR&=9krTAKNRIS=a)jRvCS}WZ3s?P_~wP6WW8x{A_UaCHp{S#q*x|*ub zLR5Y3qH6nQs=ieGR}-oFx{<1HR#NrtTB^QNKKoU#1FFZto>cvGf~v!+@h{^4^*B|> zx=__Njj9u!sXE!8D*aE3s(;s#I%^!M_8Ul@yMt6-3#s!Klj^vHl-BH0oix5+E2#^+ zlj_o+)J09Cx~?PDtplk`8cF3(C)K?psmu0~x_l(5p1Vl(no8=*R*dah4h zlOok`4ypb_NL{yz)Iiyr6`Pd8wP7q=v61HDW2Lk>VdUiq!4mxq#jvI>e1b#9@|Xn@$ICZP~4N# zNIfM@Pj4jkjBzx3pce|2$PdeAlBcccstKGOWhBS?MHkJOenQd`%N z+SW{JySTqloxa>e>MO;3y^7Q~()F!s|DAlkKS1h-454o+R~$Y=4UPuTG>+O3x|P=(Otkug3p3pY&N1NuRxv^f{wQpSzRvdAmrTuj>nz zlfJNyw4Nc-7k4FnNrd#Ji%IwBMEdfzq_0>;`bu42HJEgtIi&jzAl)xVy1(KEtR_8Z z8)^L=r41RTX z-J~mylGeIkI=Pv2+DJMhjWzv9=hl%PVkJGaC+Qo7Tc^3{k7#bXf%IeY zZB{*IE+;)pTA$MO?2e?LSw#BTHKgaYCq2Id=@(>QIGprL2S~pxeXsaPzp9vJJxDK4 zk$!U$>Hjs6ek(v)dxGhA6thNke^2x4R+C=8ko1Rnq(5pT{qbbdpKKt#RrT5?-P@JR zj=7|FE+M@uM|!t(?8zs+_Xz2I+e!Z*%pX^f{%Jqy!$#6ag!Ah$(#H&>+vNAh0n#VL zsk6xGQ_^;NA?Y*6$eh)i%-Ma&wBJeQTo0M^Qe@6wMdpGSnF}YAxu}&)H!GR^9b_&W zN2bR?GFQmw$}E|yWbd<;jP4gR*UlkxT@Nw?mXR6cBy;^nGKOAc3fGe{=aI3@Cu22} zv2P>eJVnNxB;%VvCLo@&j$}f6$V8TtiB2RFTSF$%jZBp|(ksYRPbX6|l#G7&k{KE$ zGi)rGx<)d?4P-{hf23kZ?I&}`JTm{0mPT>h-HFUSAu{8|J;6xkzT;#jtt9i{Xfh8i zAoH+vJ)-$XU1T2HOQv}UnJ1-B&-9t6bv;*)WR{8VjWc9crpUCaeyawMS$&$!8u`7~m(2T+(S2X$!@*=eT1#fLkIWY3_gOzO zpG)I*)oX`pw{tET{pKh|rZ?$Dj;ycpFTJydrxP~CYQ)fY{t`r^}6=l7sm z_ixobj#7O^7pkwcP<_=ts`Xy3?$=E9bsec5q?o~Gstx_9Hs+`{H&9*NhiY4hYR6=% zOU6;{oY0rj_a;!Wr70>S6M$OHn<% zKh-0IH*x{hw@bqv;%ZQ9Y@>Rt^xP}X|Hi4F7@>O7L8>2=eaZol_xihGqryR9UT>at(s$ZH!^~(mTUs+4_(iK#{-bnQutEhfcW1W|& zUe$~0)ibGn*Glz!C#hcFo9YeHx6w!SrZ%cSnNRgrU2h9gyaWEAwJ^Vt z&)!8;e}9B({SKx2Cu#k83)R2q`sfI%k9DT{_pMYP4^VwVdH&sp>VJ|{>%3!@#bnR! zMYjDJvgby~o;Q;0`76kFK1ueXDA|kWlFc`h?Oso|$8@s#y=wN#j%53^BinZ{*?u9i z{kM@F*oW-(W5^nEWR1(o7M&(*mEAd$tm_zAujc)0$OeTGo6tenE&5jVp$TqUK4p5?DO5oE|9i`@>!H6 zyF`4isSdCE$ZFjz`{oj|ts1YINOtu&vU-iO@3oL!FWwCXvKs?rKdvXcWe3^M^2mNJ zjXR`&=R&eyOV2m!$?n}o_WO-wf6(~gRWtvW7)GR(o&8x$ySyo5Q8_M_1UDULy4y%?>^N#%AZK7tKa6gDr^PzJ4NV$Kkm@Tqz zm9A~7!FJ{HrP?md?-tgch17i4OwIROs5#)G=3omoKM$owXGUv&J4Q|0GHSH8RC6*% z%|C;v`L~4}!^xf9o7_1E$Z0<$r~BVrmrmrgrj*l~Qtq;oL|q8RW{$mkD<2oIJMz?YNKXq zV~43t4x%K6=Jrsl`?gv=`_+y(P3@@m)ZQV#JB`$iX`uF=cGTXxo!SYbsh!lD z+6OmNJ0(Z$BZ`^ckJ`t5)Xv;Z?Nhp*J)7D&!g$_7?SeLHU()!MEVWDR)Gkx}@?+G# z*_GPXk<_m4LG8PWeQy@E?+gEfgVb)EO6|u}sNJ%W+HKPNg>v{xTE9L-tpuhMZ?%NGBN5*~bvo zbV#=bhFtpp44r>m)7AIKpC2+aA|q4dOJrtdL}X@Ure;P&W=3RWW@En@V;f_Pv5jr) z7uy(Pni-K98JU@xnHiapnGukr^48k(!yA+4uZ$ANRh`J?Hg$oeR8oe@)#e zGFPD(RfJ;n0Tg2=q8PUmg`62FaywDnv>ip>P!yB;QB0M-=_^p&RfwWsHj0^Q6!(kI zgVRwwbP`3$SrqfcUy+MKB{uC86lF_MnAW1GjG?d#U+qE^bvY<}J`@4L4U3NGEEMr> z6wU1@o-m+T+>1iah7`}HqG*%;_E9KSq@Z{uh~l*j6l*1qH-*1rIf{+TP`oE`n+3ni ziK1KhKM}mo1bgRv6kl3U$lkJIpB2Tog8RMLei%T}SB&E4B#I+FD1MuR;`l)nr<5rE zNkegNIi)F!DLsEZrLr$kn$|<9>`9bfc8=1^(6K1$`TXKC?CN+0f^^wAPZ9~TUjl2Y9P zO3P5qcb zmrLnS`zZZ+FQvc882l>nzZoh0-A(E7m6ZM=eSh{+`qvst{~n<9Y=Y8rD^RirWy(5~ zgEpcZd>Ez7+m#ntQC_?XWx5vSunv?XHlWOCMVWa5<&{M!M~6|$IkED(0+iQFU+!R( z_d6WdX$q!qMSSi<&+&L@5n=W=Q))5TTm8?-%Jn6`=wo!iSnUgC?D=cIoE+w z&WV+ZAt;rbP->Q=)C+$3Vw9$dDCPc*(sl@?BZ1N-@t#hU{xp<9u|=~{#&c0FP@-HU znxB;CC%2+pESxPfQ9eC@@)_}$u~sgPpnOhpd_EoJ3zJc{pGLV{xL2$|`N|TMuL|cH zC(1YGqI`2T%D0Z9+|Y&c-8jlkLr}gioSP@1{6PFZl=!Y5lpklI{G=7-r+$>5ZASU| z9F$*_p!`y_?slX6O6*^sLivqom35Y~SMvEGjIwVO%EN6af0>W+sOT9OkMfurbf(iZg8R+pMvV<1E}&0sALVLx_vgPsoPOaKaDDXFsg#XsAh&y&F({0 zBtFIcs2(1JO3v_AkDfp^KM$3n3zcd)D(x&(WhtnPIjBshP*v_kWpksFf1gg}6bMtyE*^sVA&HUwXm!a@)Q_w}J$DW2d8w!$ z6Q0Lcqb{9^S}DG2C2DOLweBox!yweg;iyeZQCmEyt45)&9)r3@fx6a$+9f!i8K`{{ z6Bvv-B-jlTQOi6|-55vR)Q>tTc|EZOwan$zEwfR#PD8y!;+_?*r7fu2ME~;!)XREN zw6h==syE8m zbdE&*-ci)=7oz?^#$d|;>MkGZ?s2F;K7;xb(Y|dP>g|hBea$}|pA(J$wW9f-6OHV1YtA2yX7DjILk^-z z-H0Y_GMbC`p}C|D&7~{QToy+&Vl|q}!)Ro#qsd&0CM$ww)Oa*kb)mUhY}bh2wFPLd zv!l6w2AUhBFIVu!OWcGbXeOG_+#-IH#D3cjG`CCqR4bZk!gJ>+G&B0qRkm;9GY zjw>?ItSmwEY9^Z3a?rePLi5I8H0zF{Sug$_J~SJoY!pqMxo9>?**p==2a@lHg7wiL zG#?K~^NEbjr%E*21$&2R+$s6@bfVcU{(H8e+3QCmcdIn}Q_+082hDe4`(ASUp#@E! za2}qGrhguqBS|zzXP_C#LUU{~niF<3e;h^gr}Y12K=Zfc@y`J?{|d){%hCQXi1xfL zwC5YqUa%DHg{RP7B<+h8XfH{iy;P0%vIA&Gi0|c{X#Z~|+AB7oy|Mu9s3T}cx1$}i z5baor9p^`z9Y&kuM4PKbJ3fwf!eX=&1vBq7+S>&8cJZG!4z1j;(9Rf-Hh(kPd(zPs z9z%QI5VZFXMmu{y+M*t`#U`|K=AkVSeUFNL-chvk-Dnl7(JE)7RVUHv#-i1?pfzNp zmG_C(Gy$z;8d|wuptW_NwQoi1=tnE}nze4h^9Z+hFWUMwXag(Jh6T4_7uuM_#pj|; zw4qHNK`VRW+Qk;MPfMQ9j6y5(LhaH%v~Anaz92p?9!0xCI9J-yu9}Z_brIS%9<*!s zps!&jE!gkK_`WN-ZxW0T1nWZw+K&`yw~E$JPN3Z` zM0cgwuj)W|^*VIdtVcJ_hAvy$IpTAp7Ttsi=q9$JyLBPD+dSxQZ$US87P>o}=qULA^Vjo`}9P`B;`y0=!Kds|}O5&iE< z{Cg+SZ61$qi)iVZgYIMT|0EUNHqr4}4!Y0#(e;#|+a)^pEJ3$-Ho9-J(S0j8-|awm z(1`BPL3BS&NB8q)bVnAWJ9-G+z(#b(C8v|a(VZHF?zD`7?2YOEU5}nc=+8?>fBpva z7o0$!sz#r-2K~?@=+h6Qzs!Jsq?C+q^j8GYUztQdTFMv)`fF3sUpEcCytDN;Y(sxj z2l|O&^tU?E-=;)AB?tYq3FxQqM1R*x^mq58FPw{h<|y>D#-g7cLtoU3{-I*@54WM0 zy%@dRAJfklEsBHaRl=hkie8^UZ-}5biZ0n7(^vY?SDi&~2Yu}z^e$<84xz6fi9XPU zJ}ewjBl<>(m-7XEvuIiBZ=m3_<_w9`tS5=$Fky-!5aYd1 zhJKagzj`nF*Tzjf8@G|uMo6#RRgMMHn`eUN|55fGi z1pQx9|2+%+KYsN83det&C`*|_nS9rv?1EOxE?h@hS`KAHCsTImM9PNGp={(z$}(0_ zcEuRVuFRn9sv(qJy@9f^1(b~&PFZ#fWx3gu-6Zy#rM{($vPr3wO}0=r)k)cOvE3y& zcW@v<$_ny zN10_QW!7bs*$z@xGnBI0xsAZ6PJQ?^5}zL-VXuCbKu*-F{hy_D_GpiJ&mmK~J($HkQWw2HF+4$6KNoZtE> zJ0`IwMAM(bA@km{GotnEHp>1xgCS)hhV!Rk7^1*%Q4qt>E)17iF$_P1;quKGGGiFB zPGh+0ForS5FkI`waD5tv8x~<0--+SoR1CL-G2GgYVe%jhQ>Dn~mf@~d7z)Nu41U}#o!PP zt}Pfm!r?oCA>hXlZo?4ShoRAgLEdAA1-Td&rD9ktTA!A(WHN@OOE5ft6hr$;3@=T> zu(BA#>MRUvB(FCnVpwm$@U~!XT#KRe6o$oM#V zUEd7FAnOZ5ue5)VKDqy9_*wM*nu6iCE)2(IY))>%@R#IsCJ)2E^C@RE<>#%Ze6WM^ z3s+H|c8Kyzaw)$wLHUS@lxMV4eno`xQS&GtE#;a$l#g3Z`Sn`Lb7xa7XQbsf52gH; zUdkuMDZf37ayeTszf)}acFON5pj`HR%J1Ju`GaFAmoYAXcrWFTrcplMNqOl8%GHx7 z*Pf=l>=flj8|CIvlv@R(dKTr5>6AOSQ(m`&azB)Z`YD$^jq=7tlqa@OzHlVvi2efF`4on(Y`x}@~KW z_DAd(=gITqK8(sC7}WV?BN2%~8$#>!0?ZP^%WQZUx;!RVG}&pM3t5))XDF+2^U z+`Be54q!}3oc!JzpO}U5$zvE>PGMXkI7=-UpI?ZvUGQEKJu8zKWuM*nS_a0~1#6w? zUN8DKI555&#<*!X#t-IU{AeV`j|JybdEPMtV~^hrMq~f}CDssB0xbYknHxH&lK0_;R+e^h%3l(=9q2jJgDhkr5xL2NM z&!eI^LdC<=sF*7lj|HhH6%6$$D)ds9ub{##{go0|ZKA>7xCZF3HDqnI6-~ZJ08LV!Bd^Y4mDLW1X0; z+lT3fVVK4*#w7RuO}9$i;TE4oq@}V|w=_ruW^Ly7plD_ynd;Ct{L$xT$9nrrq-~?ajgT z%}h++iI#(EOnvh(^)JEno8)m!{A5jKIxX#gESUZ~jQPAU<_kJ8ryaqZz7X?>m6-o8 zi8*T(=FwKnW9MPcK7jd#0n9gT!hFj(%#*q?PdSHqy7=aIU@qK_`Tnz*AKHgm_7%;K zORXM_S@sjn6)l);DVVF%G24e@t|`V`I|{RNDQ5Rz%ynBad$Tdur(yQnFb9re4oTfG z19Nl&=EhviO-9TK(U9DOdEp7ni(;6cJdC*|19NKu<|XpH^bqDY!CE#ObGrfaav$au z>oKpC=T#QWs|zu&nS^<*^sSSe*DuH1A?*#4-^MuRPSLZe9rNZjn72sj68lGIFmKJp z{K;C(pB}^fSuf_DlEW980^KNPHS%rD;GR*t5nD^^3A2^Iz_RY;d$awS#-(e5t z{yfY_S}-4#XE}Q?ADfB!_-V{1)tF@;-F#Zc`HW~fE4=>|U|~O&6bF_;d05WhjAe)k zOX@f*Y0I$;or@)1+QY;)JcecDb}Sj|v1BH&TsacUs6$w;PQh|bE|zO;Sgz~Ga{VbR z@|k5BzYxoWE-VwbV#({ka+~1a-iBrBQ7rO~wcNP@Oa4SG1p`>_bz-@1Etc8xT$GQc zSdC@QC@dxISmug--a0JvC9ZTD7L^r?W(O911dCxN7ULW&=2=)O4`Q+DvDiDY)QVP@ zaCUO!Bz!N+ zn5=OPxlB>LrE&EPl`L+d1uV5UMvHMYS|H*>o=RPdI?80(Xa0f*5anb%q z29`fX>*+CA&N#6An~vqbZYon&P&sIT${{&arp~4^Z9kQl*r~j950x^HuDpCKmH&5$ z$}0{~IVzvZt0z%8wvbA>w^4chFe-1bQaOGel@m5nIkAn(TeGOV%}wR);xlyzmD5wG zly`PzK`NDn5<7D%mG{f@1Ak7Aj?rvhvkgRKB*I%C(|@oz!p1m~2o}`EG*B_j;(@ zEc&*{vz$X!cAug06KQ`c8g>k(a;MZiJE`0)wd^@oelvv1Z#$^`K1t=Fb}D~bNoBvA z$|J|9{9W=nF@?%glI!21{hwAU<-V*HH`bJ+SkE7db;x|I7cIp)RNCp|v0j#ob;JRz z8AVvHP-7jn66@7_u#RoPI_?nG>-|`BrSGN*SZ}sr%^QMsQWw@K(!OII))~@&cOTY! z2VtEx4{K2h*5VCVOXgsGbUW7h+psG0u*$xlRd)(&c?VXL#9PH?JBHOEdR%&}b#biq z*;oTTSi?!I(HyMtiCCMZma~5AlWVX(brx%@^es)t+SZNr1q;^Y;{WnGtgA+0UEPWG zb@6{w+8xuezSD}e(}wl^jaWY%j^;h8?kQ|OHv7VIjm+1aS#_rrus{WTn)p?t!8hnPT3r|vYv6ZUyY^sK* zQYClHsxk*tmDNtw=!H~`O;DBHK~?U2swQluD$h^VZ4x(i5>?ZseODJ%g%W#T8&yR! zsd{KJRVACLnm3lJ$7fTe%%w_`LRFd6Mu{=^P*s&dm3gY&fwE zGGZHY0$W-Ew)9EZMoht$l_BLAwkywJyDEn5YCpDXlGv_o#g;t;Th2yo^4(n9&BfUA zB-8Tt^=FQM{E@(*vxyeRY|<8;cPX6=S;`u&co*E!&Wab!DZMQ zreTW;XIwa&+OaiDolIa`umsx^)3H4%F^iXCYuSpebuzYR+}NI7i0wJi^87?>FG%}E z>3^vO+sl%}D{a_TPr$ZDc-M-ibt|x~pM$MKY;TM9cSJ|0;BOMV&7%E7;gGv2wvWaC zlf~FR75zI**uF@?_GK%!-J<8K{n)B*YzKB>`+hXGA4GfKAZ&*vzJEKmqv_ZN zwAhZ1$M%O2+n)p2{vLwuA8DUUp_xRL`GAwNiLg4yx6Hr4=514%LQys*Qqg5=B<%bZ{m*AbPsm}9918;h}##>8hu8t^3CU-{VC+w{VVC);UC#RK&q)7L$)T+U zd%I|R$%K97LhP>=U|*AgeQgi+H#@O+h<(Fy?C*-sP13(*7xwNP>|3Sp(_z?mh~AyO z*msS@{?$Hs&)YJ@}LXGVC)eP^VCc{ci))s26T0zYdEi)O_rtW~=1!$q;I`*|naU-TSHeO1SoJrDmV_ek{37L7$?fPVY6d*i9Ggwe3E})h#`e!y)clo7&1va7Bb;ZG)X4m#=D#&K{-?%q z-gF%255aN4OdLb@;7BdOanTVR7th9V$$T7_`fyyf3CD<&I4(bgpzI&*I77zlbn7( zisOVI$4Sw2N;I8L;5d_k%c#wqMr~F$wWC&0dvyx6*Nmg~+Bwu-7o+z27HV?`QG4TFYH!*|?L-f? zd3n@M5{}75)XLvv?R2P}F`L@E#dgnhYVTb{?JV(|eU{n>C1#GqKO*JP1htQypjJ^r zt#T=~8XvWKH?@XM)K+Yx*1U^a>nLigMWbE(9H*#tNe=S4RO=I*fbfOdsEy2`Hm0Pu zNw|{*)IKqq+Qo&`J}vn@Biu_R_Ic6sg6Ll^SSxy{eMMqkT}SPjRBG1>=9`jF$2@A^ z5&w64sok`P+7G5t+a>vTuc!7Cv27nt?dNf7zc@wTjw(qE+@QYkS?)9-2t) zPg&IV3)in{)c)2d9K1Q`g|U^DxeQ zH_pNoocASg-oF=T(JY(~t;Jcg1?SvtI3HVqQ;~{OwFswf9!|q}oE0;0ns?x|9>Hl} zjk8w#-O}$Jg;VYTI72NsV+x!J!AJY~T7_avNW1?Rs^Tqy@}4VH4z3S1Wt#wBMKuJmQNhAqN1 zVj8Z?*Wr@&fh$Yeqk3>%E$wTT;~F;$SN1ksIUTreoQ~_Jc3cy4apeu*x-A{o?K!xn z#&AvFitDaXxbAl1x_1~ZSvR<5i|>PeTyyepJ)*_+XdkZm!l#rzZ3Zs=23$soF(+_Y zSK_jr#Z_a#<=lv?t{;~lTtU$rNyF7B?ZiS{3-!336yK*KxLQkaJtI1v70l-faJ8Mm z^@0`Gi$%DW&%pJP_`NI|UO9p5)xEgZh?ce6alNU=^_Jw*(T!_^jLkdqaBbX*t8+B2 z_e8^H(Z5A(vOaTtC_1{tSN11d-E(k#JRjFq8Iw=M_UTw$+k?11lYDmU$Mw0CFEViT z$oTEb!nJ!ku01wfdxzlqdKa#5B<|ZOxDM>W)!TyWpyYaJIIbVp;rdC5>u?{geh022 z6L9_7f$QiFTmyoCO!7Z2n13w7b#f=JQ=4#|7Te#F%Rln7IX6;P(}QuRNI7pa?(>)6 zzF-IL3y0&rXg2P&0o+5^;7*U=9@dI`_ypV|i*aY<E*^sW;WXTjOu_wVC+^3ESN5yj>S?%jqj8t5#BD6WZCZ@mybia_+uT(WQ#}lK zjU9Jw9JgDr>O_~f1-I`gZdp&dgAyOwio0P3?x-Gjqu@4)?nDrG^FiDTHsXF_Jnkn` zaX&R1_tP_RKU0W%$r;>BWqjIp;(kGRUKDLF<=}pK9`09`;eNFn_iMel*UGr8TaJ6Z z2X}{HZs^0kQS$ASG25iZEoWZtEp52F#^COje+6o*#BQ_T-Y)ufIC1ZkxSrFvcMIp9 zW4QN9{5N^Hza5JEyTQ1>&%%9h74AdrxcelZ!;5hD3*Qlm`z;r@ybIkY3UL21fcsPu z_h~=wGuv>V-G}>JFLfNEZcqVrgR`j{5~l8=V(Kn#p)Or)m*r45VghxS`>4y@LEV*e zsJm(zbz`!q8=ItV+)3)L&!aAP6m{b_Q+M-N>TcOZ-6REdlebehRY~0)E2+D4KXv(= zsJmwnb@xh~%*E?wOWcFwsC#G?btQi49-T~`+_9*8yn{MroI3S<>a?BI>5ouXzL7eU zU|H5sXI)C2eI#{`iPSm8uda(aUmRjqxmz>wRsp}AJ?}*>KV&BwH-3Q~T`|u!j-7-Gg zrcn1;K6N`YsO#BJ-EJRsvTs$lua~-SMNhAc!4H$D>zhs8&w}x*_z!HR?zrgqvyHmH z2UB-;4|V@#<2f%4&)`fv7f!;Hb_P$n70+c$@QhrG=l`^Lt~i3{szN+tw&1zeh9|oV zPi_XD2@-e996a*3UZ@#v+`D7EP*p2}5tY%B28Y{KJ8!Be*#PrV;ca2%e72%ebmBs%dd+=WNJBjI^^ zKb~jB{(KnEi!;({P=M#%Q+PJ(@q8G=BXe`lr;^9#qVY@d z{dy~&UJst{cjEbBHJ%?uhpZhvzliojI1BGZC3xkox_4*<@1=IUmrcPt zd>h`82D};4pP7d@OUkH;ct;oE9WxE@*pYb0iO=l{uJK&PTlK zrN2YQYQq}5vIh0O*NXT3Q+T%scXuk@kGJC8CLEvT;Qd^Q_lpU5cS-zL8F=@N$Gcy~ z;=mca-wVc}rFegug7@b*-d|VaJz9iU<`dol1>WBm<2@#E$9wV0p1Sv>^q&&Uzl8Vi zbi8Mz@1FyB{}sOfTJUiKUy2Ripc(kiUxn|2`S>nO#h1DWU)nHy7x&=1#DnkB$@qqC z#&_8fd?WVayWD{jcV!>Gt48CydKGqsNznQ z7JTyEJ)b=XpJOCGr?g!I_+%dA^Pa`$-;6KViZ7gouVD|qSPH&I2filZl=q%*!4`Z^ zh^8l(;%gDTPoKp1%wc@b3PzhB-!h49@5cAibbPXB=X*u^UOk9U_9T3-AI0~E*w#y2 z$5wprh=zCP;@eb=Z}WV7TV~+vT7$29CcdpwwiV#pF4}h#;oB*^J(A-tiTf%G-(KPU zMuG1@7+-G^-@*0x4$051ZzI0Lg7Hf}zF)iW4fycMJy73?dH7CB?5QBW(|UaW6yp0= zIR0}}pAw{gP$%^lET;a#Mbuy9q+Zri_35Lizbu7%`CG34zd_Vrp{D-IHPnw5+nCwZ z%ei>{xE0iAPoh32i~8Ii>c=0W{$`20WghjD1pD?p>Zk0Y{*LL?-#3t z>hGUP{R8s+;8yDA2wq7B^>d{??-2EmOHmG`UM;b@Ez}!g)K>_mSvaje>Z?VkL$o-> zuTD?BcN6t~@e2*3zCkoJ=2G7z{>{R>pqu(94^rPE`8^}?OC`6qKI&h{rvAke>Q}6$ zewFyI7Co=GQU9jo*D;FvcM7QQ6yEpSsoxT&zFTyEQbhgsOzL->p}uDd^}9v)-qF z!7uXz|HYH>Un1@F4*bKq@DJaFf8=)j8LjxQFyO!P6#mgp{A0rSuU&>ednx`K7UREZ zDE^7kcgs%vd8hGD8jJt782;PEK4mWcsr&KY5y5|F3H}+vou7yQ?tc9DNZgxefvxBXFLFz~DgyhC~QlltSR*B!Nq8 z1mqr7K=y0{BX$wUI7Hxz83e9$6Syi)V2t=*vy;F$iOmiZ$PwS%eFSbwCm?@=fm;d* z+`5XuZA%DDF%r0=jli9I3FHqaP_UW6z2bM@Yyz`K5-1u&px8lRj_{Ur6L=H?j|~ub z`~(4|_^3sLUO~Vxoq+Km0aGu5$|(e@#uKRCL7+zTImZ!jPaxnCU*Bc|0cnRe5Qq#T z5Gx=M7wrivfdz{RERr0b6m2a-2(*qO@N5o&=S0u*D+siUmgP~ml1ev zD}lA5d)-k2Zwb!Z?F8Ntj?OLun?&aa%L#NzfA?AfTgASugTQBE`}_!j9`W53Ca~uu zfxQO^e6xkXw^Diq`=I3dqn*Iv69j(QM&P$W1bz<^I3b!(rV{uog}~p^_iqn@|4tE1 zaT1hs>EH!Mf~mU*UVMz;r9pz1wGbS!nBe9631+S)cx55MtIiP|(@OAKEy3(11aB}A zym1@Bo24%=M)0;Qf>TonPM7+wi3IO)6THttaP~@q4;~~qXC}dtRRkZ+AvnK_VCfWs zGItN^B;FwY#$JMz?F8j+K+qw5&cg)j1lQ*$=oj9Q=#le{VB=YWiO~d;qU(wE1Q%Ng zJ}sEf6cb#kB-qwT@P$nTm*)~(A^E%_`K%Vd*S8XUvw&d7NrJNH7kp2+HqRiqWh23l z#AmB$`&42-A5HL!H3WCd7<_er;J$8x-!3B9YasZ8mT(eVTaRuDYCmf%SR z!M}P5o*hPrg@gvB5xU?Qp^FrRF3}Pi7AG`f4x!8Y31v!sWgel?1%$@-5W0Req1=2z z6FLap+D7R1QG})y61vktDE|bZ!mWhv+eT>i20{-?dH5iqM_UNZ6aU9n6PhoWif%$O zR|u&EOA{uf6aKQfgvw_Ts+dg3ESQyIlXY&$79&)>k5J7aLe2?<mu~L zk&wK{LN7{th2X7RLul1XLaUb(dR?@Hl^;q3=ZRLDBG|XgWNdP=6|+BQZip z#dqKgq2mTZf9xZ4N-$4L4re6(-{pkaNcg<5gfAFMct|hd)IP##n+T`p5*`*NJfeqi z#(ct=PQqD-2wzn~`09SbV{L@TogsYv4#K%}3E$L4c;X_$c{>T;W*|Ie1>rkd2+v3o zzFSYYFh=-3!I`~~aFKA76ce6%l<;E^e%wk}DO$7=Q#O&XaUS7HiLt2(JJJZdr1oqj z?3cc9gm7#N;l^Wxo7NLa2CxX{L~b}Ero<-{uX}bG~s905`NA^`1w(Um+dFq zF1aqBKzN0P@XHeON;~0KXA^!+a(Z2g?1_ip%p)xOf#J8^gx_%xepht8w~g@olKTe( zgg-n-_#-K@?-1TrM0mTF@Q!_icOEAEoc8msvod%Vk2931!qNPlHjT31w?WLh|BMr8(G}wisHkAffj0R7F zhWcC@0<&odi@wNs8e%;(G&yK!?xW!e$#1dXKP}~%lQb+nL&NjuXjl#nFG~)qM9*vO zG^~}J)}5l^t#veP*h<5@J7{?C1Pz-rX!uY#KQhs+<%2cQi_Sl*+e9@hsee2iCj92 z$Z&{UZY7dAm&lb0B3GRya?Jpd>&6nvk#gfMA~!E2k{2g(Tat*Zfg{sT5Xm1ysoB zUPHv=AmR%W@%xDcO+>=^L?Tm}T`3q~S~h|Iqt3q|uH!IAe?5|y) z14KR%>`x`;vyDW)*h6Gj2a&I|M81}B*e~Poos7fxqUVQAM1I^#k4t>1#Hhy;)#ek`=Mgn5CTbi_wBi_1OA%3-8%L}9iORew zTC;>`?O3AD0it!gh}NeN4Tx5mH$@wIh{h~L<5r?_1|CfwA^Jp&=wc_)r)Lm-Ml>y* zLsZVdqc3bBx?FUw98UCA2T_^(M&A(ITYW^|nMHJCglK05(M?l`ZZ;9!GMi|Z@N`Se z)`dj3O(VMfAkoi<5&a^E=q}N*TQq(py7md@{vAXQNdNaki2hJa^vC5yf7(X0UvfO+ zBYJc@(cdQ$J)R(XQsPgQ5Irrne|8f6S2+ILMeKj;h{^s@?EG$GLq-ux)e=iPMr`Og zV(ABoU6w~|L$EYJVI<{7qMBr#2z?JtXTZ!h^=G`u}9;?=1(W4un?2a zl$bV+m|oiDCSnzR#4KuJ)@{UWhlth8Bj%h!%qUlALhP*!VsDGi zjiRMf@_K&~u@4p!>l#n2TR7zGJ@%=@?hwu|@`!yY+V(6X_H`yPxdR_N5G3}!=sct+ z_R~sY{o?bhVE&dv>{vdr6N`!cSwQTsrNqw6AogztjkM8tUOJ8Ex6(LdBaIhrqjBhB z8ZXVIarihIM;6iee+nA2f;3*$N8>dIX&g5|d(8zi26qPl>&CKaEQT z@A*O+UpPeLOZ#YCX`)f)QjM>#qH*0y8sAz%qx?H4jqiGBd~XMho7FUKk@}-aG=7|* zahsjS&r)fW^MS@M1#9;n8o!=J<9Azaj?Aa=H+lYDFi&*TcuMT2 zduf!tw#IXv#8V(Xco6X+apD(^B|h{Z@nMUJk62GUBS`!TH}R{+6CdLsey#LpJBi=0 zlKA*S;x}&~p0|VeWCQW3xx}Y$BA%Z`{GJTrGjoW~+E2V_C-FH$h(98Jj|tD?g0E^N zuA4;M5GHPFAzmeIyOVhBVdCzS#C_Ss151cE2xd&|O*4rnjl>rTc1sHJ)(+xJO~jw? zBmUx2;wv@~UzJK+?l{HQ<`I8$Iq{Bj#5anD_av7OB&JKs$0fwKwGjVIbbTSY>=Mkq z3gX}N5dY3b{D;BB`;^3g7R|rP*bF3z9~TWLCBIVx#LrlW|2u~Gf5&J#Z!S%P`)Inb zm!^x`X}a_rO(QnZBx~TNtX7&v=hJk}dYZ0Fr71^A(~V-kc@9l^ewrp1(ll)dO?URt zboV5h?j1?fEGZ8JX_C8sO(iR7nm351$9K@AT1Jyj>T(}VW)DqPDb*30YSU?Qi@(oK zQ&4KzQ)-G^Xp+68rYFbH)FM7hj?mP$ho%>WNA@0?UQMG(=Ic#wioUlMG`%aB?`P1| z6{qPFiIw+jQ_nV<_DFl*UYfqkrRfI)O?`s>%RHKX>!RuS2AWPu94ly*+WSb4JT1-BQeKGqD1=UO5D5+B<7zWQ97H1s)vMD{PfZ`%q3wI zPIC^4$`%q;8%fv;NjUOII3pz71`?h*BxK#0@Gl|}6x^_s$Yv6;6(r)~lMwrY7>Osk zNIWTgEn`TuhDj`uzULtE{74cn^pjXVfy9a+iC0FEcvZBl8Bb#EWD;)rza1y> z&JGft(@1REMB;-ml%1ZV~@y3utbW`bF`1S@2&GyjSPZ{F>;L&zk0S;SNTy66DSORHS(hYJ z3rJo(i{vHCNe-J#a=3@&ua;EsqvXOkiPO^9n$%ic@=ME()_pOqT$4IJ%k<^?c zSvC)O?U6LCAZZo8YAs2}T$0WtN%ujL-XKZ&eNG0Ck!;vVGA8<)#3w0Qo)G`V!%51# zIQfilE!*|(YG&qk8JE+jdiCVBi6$v=mXJgp@8 zkNBSRvEYAuSaALX77R&e!A03D7%KI!K`a=N!GgUp9QxlSTJc03vM^DU|O67cOGNG-GcG|44r>mlhqf;-;tS_85x<8nVK1z84;18 znVFFpnVFdxnVFH98L5$}nVAvsg)zo9#(puzHpUp+*v2;YD>E`9BO)_0Gb1xIGcz(X zv+w!idEI-@J?HcJoICbB_qq2@^RlV9{|FTimQeBVNGcZisaTXt#S?!YaHa)63$!dcQmMVZ7^IH;%^PKA0I6*a=Ck5ge1 zANfsSg*}Z5=Nc-S7g6EyQPJ8%Mer;Y?Sc~@O~rQM>DWYt+)pby4^z=4e%%MD_~IxP zdj(_PG%61CQPDS#iXR30$Py}kSx?1p;(xN7ia&+(?-VNJEPlm**(g#5ppfUY;-al6 zE>WPktO!L~6vc=<6jyhlki9L%*aax$Z%`rYPKq0QP~03raqD;#Ifqc>I#5jSM=?|S z?#)6m+l=A?H;TEvDCBoOibuDgkaY`1f%HGM6vZOv z%2E6we5d+Q{N0J--+n63Q&V}tSSkm(sT?Bh%f?Zewvx&bXQ;eJ`o`#}9Cw<^jCEAr zR7_>&CMvVjsJ#6ImGbvgd6$FAduC9Xr=s%yAeH(3R6gXR@)7ZWY$lb9i>O>8^{2b2 zESyEH|%G=JOyrT={ol@RC1LeJXl(VIszY^s`-6$WOf^w1g$vHOVQ%RK1NLjcH z<;oP4FWOM9k(gIDpnPo!%GXz;e6tYcwo@oeSD-APjP~?2+>8D9UfQp_DV3%EOyc{^CP)8iX5usZ=h;W7ga;1QjP@l|#i1%8nA_8-+97cr9;$X8qv~V9+`WLRF3}_J3{`tZQngod>+PoMn{uk; zJ}z63RQ2tl>c>K=ev+{`DjdJArs_8tyOX(8_0OT|uPIc?I#SiYgHSOZRmyf$7i>T^ zC>_<{QdE~1QKim9b$LFjD~_PL@))YCPN5pP7}co5sK$u>x?WV{b5Ko~f$GM6s3vEi z%IrgR>n>EcXQH~}AgXCasN{V@b@yge_j*vxE<-g(@E)9lYF-wq`30yR6-+q~rdm7` zRY3_VIS;6MdMv7Egr{%=s^^ucRu!XqN&MHywN7}~i?)rUP;K6Z>dk4W-V)4rrl5Lv z2dZ+(rBbx2I#6jvTkR552C17Dp{n1H$|gFT15mld)}lq_n}sUiM->*XsMHgZ>-&P= zF&x!Laa5f>s6O?f>dry+MJB2*J5lu>K($|w>Y(uSiQf-FR6mNgpG1SqPgK8zQ2lxu z)rpCyPOeAQzY3M?@u>cm{LhO2fB96Wlu>=bA*u)Mqk70@s)wGW`m$qGU!kV@s^wIV z97*-4QmV)JsJ?zM)ftnio;XM@>Az7+^-ZZ%PhLUw%{!>RC5!5;4OC|jqxv=n)wge< zddfj$`I+jed#Ijvj_T=Fs_zotyM=qEi|Sc>sm_~1^=yfoBYgQDs^?1lLs6<9UPtw# z8B{-}p!)G#s-H-wy5K0)PtBqF=}fAhSxB|4saCI$_R9TK%bIHSOC40NnNIa9BdC6L zH`TB0qx$usRKFn_-;_Mx9z^v!eyZhJQ(du=YGsIO^$@CSq)+BG)n?J$P)@bH2Ugn! zvr)L4L`$>e+oGr1E1Fshs16*Xx=padaz(dMose;OPet|nN~%9_QoS>m>Rp1_d4}pw zCHAvZRQF_1{pCEWzuHdqzAmc2mHKx~E;mc89wIB7!!>C6~`#KkDdB0XqN=1Fs zPSiICQQvYJb++K-oIrht2lX@s>bu6HzPlgwtR<-LQ=-1V2X+1&)bg&aepoOc=|#Qp z5bDQ;t3Ys{ilAPmLcRPT>gRG%uM{n-j-h^O4eB-BsEa3|miKP;M#0`J_N`k{zwJg{ z8bbZQrKlCVQCF!^s~4lz<)hY%ugoRY_3KdEMx$=bMBQ{2wI>y|>;tKT+fYZ+P{%-> z5a0Jje}}|C@6bOiO064bx+p_cU^^&baN|CL1j zkHnvq*nc;p{%U_fE|PGtpc)2hBx6G#7WGx#TFC)OBbsD@1d-3e6P@(Oj8= zW`qY#dK#Lm)o8Af^4f7|#$=(nE{?sf;7 zJ5HmSCit>{r`#9QrN1@Ggqn$ku?ft!IAILzPA4L104edk1`*0lXBb(7aD(!_yw2K6H zvFMOFuXf2`v`-1v(kR-eMbk5awfqFy!ii{~lk$1d_rfN$GSAVzREG9t(Ykg4+I50c zd<5a`CJKA<>$D~Y%?|Y*0eZl=e#^A#(Xg?Cak7bN@Pea=!xpzx0JqOY5k#Ya> zG}^C(tH3OzlGjIVlgHBR&@p@`xoucN_S=3w>r6w(fn&B2|MwqF& zdM-8Blu>hS2{mJmQ6tZ;n(;wuGR{$R<0fiul9-$4P;-lwn(PoYIcKQJmH4Us)Jz{p z&0W3J%*>_c9%<)^-)zC3BY63Hsd*@snumu`^T-Nn77G8OZfc%Lqvpw#)I2qhnq_0D zSzbgi>#IbD**~xOc^Wmph^}At)chvn|GVV#hxDHsLCs$$sQFuRJ}a8f<)PyY zy7O0{yI>c(i&D{DT!?OH6kTc$y33vDh7UzILV+$_h3=XTbfe4Bjg|KG6Vcr;6WxSO z=q5>hat^voHM&~`L*^B_DH1<*HM;4O(9M{FZe}UEdxPli>qIwaEV_Iny17TtJuJA7 zY(e+vG<1v1=$^<$_vBu5OU3sY;eYlNx)t-#tqh@Cy$s#UndsK8K_|~J-TGtbHVs1e z#yWIcC6AI4bh5y$``-a{iY#=>f#_6mbQnUcHCfYiCkBMnUcMo2Z>2F_Vnc-Yo5`_0-;`rFKdwwNs~1dsiN{Gd!S9FNz}@DsoG`RseQJH+7)hUUo5A#=n%E*QmB1(2DKYA zsC{E3wOiHHmPqXXLewh9QmYninrYO^9!9NBd}_sR6s=}Gwe<_AwPsPB0@8?_xfsNE_0Iz`JT1=Q~Dp|&fV z+RrT1elBr6(*I>TwO=i!_G>-0-}tCKAo(5?p1vTpKaQgICnYX4kMt^B>$o{_QoSH|GK!{}2sp&zgd{e|n%4^E;VvI703gV7JmMW1#W z{qSYzM+DKQN6?S7qQ7<+`Z2T6U$+YV_%!qx+tA-Q68%kw&}Ys?pS2JDZM)G=nT9^M z82z*k^mk>VzxycqSrVUj4*mU$(LZnu{oEPoAD)B$5y4(4K8x0&U#vv`WFGpZQh#O$ z`a-ckzY_fmd(po%6TLit^y`+Of7OhBgS1~4-SU2^e@k*G$w&Y0DD>qj^oq0StK8_- zYV^7-=nZ=G=K1Jl&Zf6X-6EBa31?UMM< zMf;b+_jM6^S(DL!-;Z9_uk=5UMgObh@Ov-%KTn|ldp~-)?;FnV!*D?whJo`i44RJN z;&B*;EXOc(5r)f#Vz^w1VYnYd`Wg&ZJ28yR!EjAJhEdxwTzde+m{l0Yp2ILsjbVH$ zh8t#J$PlavM=?wqfZ?XS7;fH-A=8E7mLP_#5Qc2A-IVg=H94EW+@7DTWtDU|1#btBn|nreKiY zt{B#e{S_64SB3Mntr#{)esa$;ygnbp8^bWXDLUQ~ytkKPD3LKNmGLNBkKuo3FjR=W zQm(2@464Hz)cY`KWlVMBG1Qi0Fbu_D)L}4B!eAMQp?)%khI9 zQ1tg@VE92Wek{iDlk~|uu;Hj5!?AJ<$K4oYeamoiHHJTSV)#@1|C0Rw-hknsJPc=L z{QsMd@w`zOQ!E(I@4cdzWFnZz#t5(=g5v4f!1yA1cN8@KTKP6&M#}Vq7>9 z<02cz#e*;w2*;B77?*}HE)%S0wqtyDBF5(g|M}qldAW9>I88V$MjeXNCJ*A0||oQkG#Fpu{wA zAEt{kFkO5Q)6jfOsWwc*CSgiTVj8{)(};DL(l=llnTP3`lbA-QV;bwnH0~6p8zy3! zkc(;JF-(*8V7hr0rpz8pS<-jg0!+8hz;wr1OjG5$Gmhyl!IAeu)2ySI@=7qxj$oRj z$CNLebN6C;cs8a-7Gio-hv~89m>$o@^n_@8axtc-gnO9<)AA{p3Rh!VAsSxD!t~-i zOfT)kv}Poxb={bX&6w5;-v;sDbOzJrb(pq@ugr5yZ?DJn&Jj#yD>0ReU9kjHRXV2X z0hr`@ZK`o$sy&U#;J{=m!(+l*S;^ttam?qbFb_z_Ja9ec zL7OlSUV(YYD$GN*m{Y|jb0l-xX3TO1#4Ph9bGrD9?8iLHk9qVl%-5A+zCMcih69)< z9Kk$k2j(6JtUa0^7yp8M%uDuRep+-qBizpl=89s>E1j5M9E|xT(N=T{ z^SY6kizSEkg1JHLo3>)!+=Y3I=-DdyZVO^A5u8#f|F;rz#W~DM(V^)IM=C8Gwzv;*PtzaB1!u*58%Wu2PKP|+3bP?ub z(l2MF&A*GLKSG%QRAN3YIsGj$XXSG{=b`Sra_R=`p>9wnbr2z7Rb9H4x{>>-8$FD=F*~RmmrdObxztUN`b`Ha}jk}5$du9^Y+!$-68(d zdZ?Q*jk=j9sk>M3?;A(m{ky5l7rckoQ#Zepx<`dy)@14yPp9t5h15MI*Rn3^mY=4s zP;@<`cMecj)=Qm2w8|P} zUA6FQ2UDjjq)xw`I@4n6>V(@mlRA4Dbz zkTH<=^15BZ^T}xHy0WP2R#7KwE_Gk}sQYRub^H3M`}Qn#-}O)@@8WfbR#NvRh?a`7}Qm+Zolnu29m z2+I{&SVqjnl5WIuO*xj)+pvu7!7^?ymK!p$Oen=NNsZ;^G%UAl!jheV<#vg=qXWyd zJS=xD#4>XgmOSyjzX(hIJ}eJO?EG#lkIuldXg-$3(tc8fMaJLq^cpP7)3Fqu!1BDr zuNsa;_R%aa55lr;E0$NSST-EO^7=$9TSj5oIvLA0EtZlvmUoj_%4cIyq+(I}u~eVN zq7{3s_!*91k@>BqUVLqZSmb<$#WfU*TXOdFV`+6@2})l`+7Zzhn};PKIlp%fOUDQ- zA1%i6vD7~WOZP}DJrOKlF2~X<8uu^5@|_FI4+U5b&%*L^DVAe2Nkten@Z}pjibJFEcIo5)GOlDt1Q%O(x|UlLcM+m_2!Y(*XK~*&_liBIQ31P)Vo#G zd)H9k8l*lng!)JU^|4~=lfu3I9Q7X@pnm5Z>UWK&zB5XFm&AWAd417O{Z|XA-`7k1 z0mDT|d_A`>;-!iFHx|*2&VBm5=qd!B}r!jx|^O@0^2m zMiJJTJy`FZhIMu()(7HP=Q^-HycO#sTC9%^#kzPB)&k*qYA)7gtFS)16zg-xvA&Rk z^+oY560Eg3Sc`M9ZWxAj(>knglwsX^66@R2Cud=-<$_-+eJVFrO$JuoEUbEoHHlCC z7OXbmYTS#}U5?e4jx{L0p%qx$JF&*MW8EIa`hno=JdE{YiTgAS>t{!>_8h{xSG36* zkafRcekVMAO00*+WBpljJ9Y-^Z{qjIe5|JwSpQyt_1|n7SVqHu5Dgbjp<%FG@{ZOp zY$6S5J7~C4+E;05xMlX zm(!4ch=zGS8W!kiSR{Ch-84KokA|gY8kVQg@LV?yD^)bCUPObu*EX!1O+)c18a51| z;q@&vY}rY}TPtWNk+{;+G*pO>GLHsTKMmT|G}Mly!KkOfBL3F>G&m%tNw8bQr&aU> zC($5#a}BZSG$f^be-{lO&Y)qJjfPJpzIzP~Uu>gc?;#q#>7n7fB{cjnnued!X*k+N z!|^>doIF9psf9HBE&XRD?!O*v=kLHaa2K|V)?>S*3)`^i*sk1y?dnV5~Y{d4~SZwbIcA3;G1fyyZHth;*`c7*qVo8Yw5-2%fJ>$#nvXVVF$K$J+`CCUU$e2D=*M=-hwU$E|1J6cBl(@(f$g05 z{&xoZc~R`=kH;>1Huek0VZW#h`^A&64+&x)x*YqZz1S~vV!u2C`xV*Php)#zVj%Xb z`mkRu*Qi0*WsYtiy9E0<754E~>>2a1PaK8)#uL~lPsE;?i#@9Vd$!=`Ov8SA7xp^@ zb80{K>0`0a$iyyZu)|w_u+e!9H&*_W4=Z7c9cQFob=P68mDo zDp-bnNfP_gPVBNjV1HIPo^xY=Ua(&f9WP35FBM{cxd^-5Q|+&a@2mT;Z^*&E@i_L^ zw_|^!9Q&Kwu)o!Ty+nLUCBAF}_HxNru@t*fk6k4=>eJY3=3uXt+~k>NH;X>Y3hdV9 z*lm($qvYW{fZbJ!-7R@|#MdY7KnnJt4SPt1y*(9sY$*1G^uH&(?>n$}Ga9M_fOxc&r=j7}UkO8cf|IBqV&krl*oTQ&~4M?3E5$1$xN$6XU~ z+-<`#YdDU)5jbWmam?9=u@|e498=l;c>YNI&eHCxXbq7cy>FE72>zD z7src>aJ)1d$IF7XZUl~3h3B<7I5rC2W+}Jq!0}cNj<-dBspu(F;3${4N;M8u3J&!O z9NN=3Y9ly|TXC2LzutnwHWo*tU^NM@dp!<$COTThFDUh}=!wq45tlsPOT+QLV0}0e z$44q0otZdx%NTV5iE zR^s?06~~{Oahxu|A!{R!e|OM`p2n0jG+r>8#tZk+I5?fgOIFdCI*P_&9vaj7XuMKv zSBcNaA{wvt(RkfD8pjW(al#rJZ%ooC>mH3aOMljG8gI*>amq{@rw*cVx}L_nGikg> z`ttf|yuXabeCeMn_W9FjTu@HqV=HKUB8|o;Ma$AfG%hFKJ@X`2vH;soRubv z;3YUO3E@m#fb;T$IEPF9Dk%lpFD9#y5ocHX*nJ4WzBXK?`z7I>>BPVb!?7%7SGtMWM;aoZh=duXSLWx|KF#pOoLu z!g{vq0A9_Rdf2F`zu;5=ufDJ7ex3wF~qD3_)o7Mf)I znl87}H2gG8>Fa2^<`_+5q<@^0a*t@bX*f+cchHn|l%|}aG~Lld(=-=NGxBM=$4yh- zW}4=hX_9$y)5AfU9xbKm@j{xO6uhS;{#n6XAwDlif6)+{)}Ev3)k!pMD57bzV9Q*s z>21M$cMeU8#WYpTqDdo~YEx)33XZ&lHOasC)Z|dmB=e1?7Qygsqbab9rm$ef^fbwP zMbn33-<70kx00rAXxby#y`yOQCZDG7(rEf2naLJs^b+HTA(1Exv?ZI`K2iN6ETvwdJHDVU7bg_>VziW@+8haR*yhFRj zPseq`QCt(GeWMlE-GX%cSLbbJ&kMnYFsmdxb6{*ymVZ%OL09Q zxN}o+Jvy+u6(au&t~F!&VuXtLR>H8qCi?y$#pL67z`%SC=1G_ZD1Vh~6((;rhyj>+3#T`zPZ%uoKt! zDqKIvSRWS7Bck)DjK{GKT*r6d`dwoF5Z^z2xK2yo87nS18`n%K%_%EszF;2BgSOH< zI8O6Wv8V2&`SNWvU*Vv6L@CYbd5m1w4W;?|PMR|o(me4n&69S~d~*uT zSrVHq^&BP5Q>1_DB%1FO?7L>re7E4=vzO+)Jep;_s`-H;njaLthtASGe-6zHR?@ss zupS>wbAjM2DW&=8Av8aeq`A;d^Ya#(S4sP&;WWRzn&!3pX)czy_4{bvc#>wBZ#HkS z()`vYnoCB}T-r(V|3=WPm`rn3KF!rTXx56BT4@_L(`**}dL7LTHkuuoG`r^0EOYW^ zujuiMmf#_p!!ic#A(|62X_h%k^N#5>f4GF^U83_7(a^Pw=58g;Ulh~)Wk1cbM%=v5 zNArHs^quhcIcfe;_G@s6<`5)>3cNcEv<39f=?tyOH zgAU@pcsTB%gK=M`!<|-wd-xgLR~d1S%)ouEl-CWyeZ3EN#sJ(mPR2bs5BDv(xU=`; zzWpTb+(Wphr{KPO9qw5>ao^{`oj(%yL$h(q+P-_Ca4jyzy(AO&)55d72={Yl+$+Uj z-VxnJvv99Hj=Q)Q_iKA`zn+GBOAqdCN!+DQ-2Xd;yK)O|)g0U!(OM&YhDo^Vq_j#7 z_W8IQkKt|>jUM4`Ex;X|h&wF)(WAH%Ik>lr<_}!BKRS#16D{s8J?@^(xW6pN-5bKa zU$h<^g8K(>A6|+3=h3)-&BuMhkGo&;|4Zs;mf`+)J1wlC<@`7;11HgP(J)#r?xp3@ zAT7guw2Vlh zqUEhcw3G;DSt>1xfwWYPqoqpxRMMwjN{e<5Epqm{MPEjX@eD0>;wSqXEe)cUcLohztO-tuuTI6>pEuS5y zrDrBBd-l-sRWU959JI*uujRW4Eqy0w`BAWs9HQlyWwab0M9Yb@wDcFz@|V>AG1GEx z2cGlN@eGLL88i>i#e49i_TjmFJ)SG`@T4!mbIoQvqvRUB6wlaHJl7q?bNxv?vaao! zuoBOW5_i*VJU36mbBhyCw)o`;?j8Af;IBQ5r+7CWnJ;@bp24&E z7@n=8@N7Gd=N&bkvP?V`WAP{@uj+Alv{J7v#A6g}%LqL3`xB2tFq;Ikr3+8%EIh%T zc-o~*9>w#)NIW~Gzq13+X9MJtTtAnxNBF)l;`wq7p0B3h>2>4Tw;0biT0Gxw#`E1e zJl`+FBliZ+A&Eb{8qbl*cz!O&b4=oY-G%43Y&<8-cur>E=^u>ePvQ7W^8b4ko`1yl z?-D%!sqvmyi1++OcrTFh!g+Wv+Kl(&9K4qd$9t(0?`36pWsc&#!jJdLS$MCSi}z~j zlRa$jwGuN%f%m$lc&``V8?<;QOvgL%6y8bO@J`-@H?s(DRyy8W_v5|oB;F~5@#fCQ zJ8dA|JH_WNiMzWO@2nAc@9o5U-wM3<+wjU9+dEg{=WWM3e=lBn*YPeCtjF{4KCuk% zlcM9Pk$9J$z`IO`_gT^S+)TXB55@a}_`WFmUdqHP`w`x?8}Pm|3Gb^z@V+J*H)i48 z6v6w3XxJkCTZ4Gt&cXXm0p2q3mZ#yZ=*O$vf>-6kt3Hai#)wxhx{Z>nS;ozh#A_8^ z+hM$pBY2&n-6dn^77ULcuP=l*Aoy*Q@rEU~UHW2@OX4)%?X&Ujkp2%x;r(bL-j7AY zC&%!9dJu27fFHOId+$fDfOnMffi2#y6w@-_X_gf^Wo5d{>v_ z8#NQ(n34Fd%fxs68hkg1ZGsk`%;9~LQ}JaU!IyOg-)*`0Zdc&DV;8=u=kQJU;F}?S zGrREJTZr$zGJN-k@a1RWdq{X6j^JCc5Z_~h`S>b)1(WbCao}6J0pBt|zU88^Q1E1* z!uR3`d@o7+<&*f<4a8Smgm3*0d>bW~&4Tr&Xxo;JuVgX4QsMdEB77BF@KyHWlX;X+ zo?Gvv5wXob+q1eoYu^9wB9OxIjd;Bqlnf!1#3nstuxiM z-aC`l+1qG+pp@3RS+veOO6wzgXkDnF_3>%6K5>FpS?_6mdK9hC^wC-QE-|k(&`ax-#%J{f)kF?8q1|MDR}Rv(JJRQTX#zSA1|Tx6RCF{ruB2- z{Bi@Wy(4J-M)(eh-af(kQT%_}PU|mjT8~R^zaOFX)G1oeOriDPH2f^Ye|{v@n0UtFZ*%+t0v+fISv1{;2*OZ|2Xj<-+_NZ7XBO0;lKGf{#ykn$B92T z9sixP@ZUWQzpSVE?=#|mARGT&6@K|0o`1nQ{ExZtFJ6Fu$#VSiZ1*pZ<9}{D{*|5h zR~O@dSuoZu!T)MG{*B}DzaczZhv1j}9{)QE{Qr~q%4PUfEAeZN;;$86Qx1NM;5Rt% zJH+N1fxkuUKG7Ev{&vBQpTsY7O8*YA?G*fvm*U^O8-KS4|DMtKdr#ose-Quo6Y(EP z;{Qo-evv$WTa3Ry1OMqf{AY&|ka=U^{8I!5I0;-3Coph7feTL(xM)0q!RrZJY$Gs4 z>_aCJxO66g)B*y-AaJ>hK-y6P!>t5Hj3jW?Y64fM5*QgFFlrTn(HR8B6cV^jaK?2K z7@tERV=RFQf_-CbpU~BO9`%_s0m5rJ1D1YT1U*cc`7x{JUY zqGjtE0&kBX@Q&cTJCs0~@Rjc;ppbE>$|9gnBcNSLK=w-mdhs=$C15^8pkDYI<`b|> zj?NSUE{SuS33%jc75~5{0&>nI5E0!`@r#Rwq|~=BC9q=$fe)qsBgx_8TmqlWCGe?? z!)KzuXDop|(zo{@fv+Xzn{EQ%ItY9xdisP@zAu5FB>w1f0>_jDe#<2AdpUvrIRs8g zzJI3^_(#S`=D*g4fyz zjy*{5`fh?5;(Oz2f|Cmg-r^#dJ%`}!;x}~(!D(Ft?;1t$?hb;pq|94JaQ0q;4{Rei zx0v93D?xdm2tK}p;F2tYPwytU{1m|zQa-<*;0wzMt`dxwh7l|}PH?So7q27u8U#0r zw$0-A=2(K;R0K;E1k1&yj1yFu32G)1tm!1E-%QYyO0Z5it#a815o~l5l;?J^Widgo z`1=lCioZyE;3GNb(-8lriB&KIP!7nWYdwU4(A4l-uK7xm~5d2Bv zev$TZ9l?`=e@bHi4iWrU{Qt|KEoCfi1Gdw4;S|~iPonJ-xh~yB+puohuF%sqLQC7# zn`j%AM%$Pfw2hlb+xXM8O*l*2O{-|j4AOS%GTL&6({{%w+NK_(?XFbXX0E3#ZxC(w zOPTMZZJyW`NdKbav=wZnZK;R0<-++~E^RA|XSWs1_t3VX zl(vm0Xxl7UTh`IGRk*h0(N?0QtyE20SqE+9dudbbp-m}Vs?D^ii)ho%q)j)LHofRK zcG70vPn$*R4Vkprm(%7rOk0!aZx+0krL=iZ)7C2efgQBTGq^1x_Ndt7;-BoLZF?VW z9}J}JLkn#m309|Q*)5tsm2v3S(e{PJ>`kSucK~hQ6w~&t#2z%$)^~=sAKkRc`*PdQ z{j?nuo6LpVe$S%qj}5f_*-hJNA8r4X(ROYGvLZ+*#Z2geEJE@e4h>#RXviKyLp_9s z*$7=RozRuL2&L~Jbj>_M*B&J_R^rAv2;GoEXhH#@NfLK+E}^U$gt7(ecCp`agwV7g zq3Jz@?w(8Np5=t{l!WfjCX`=7=%EFK<_pe(IHAWf2`%1AXo=XKhS0Oa2t9X>kgP9- zR&OA*W+LXp5iFHi>^ne9Bf4s#r-#xt&n8i;y-+NH2b-@r2|v z2sMbUQ81d$5R$ddkUxh|NVG;pb1aQeJcCd|M@ZJ{L)+&QdcTX%2eS#u`cX*cr=eY^ z33ZB|-Qv?_CDbjs_XyV>!QI2>qT%=#O4Pry_(-%ebDIL+I=RLg!`>MnyPf4dDSjgynk@z9^gU#TLSs z>?NE!oA59<;VT9ZzH&O@tF(kiN;zsg;nAB3kM$59rz3pBEW#7k6P~ny@Z@8JGbQ%c zF2Xq_gzv~BJoN8XTg^bwvlgz$Zf2;YB_aQ+d(4@vomkMN_D3Cr21@ZyDp3l0%} zY8BySQeVD@@N-GRD+>s}DD9#pgx9JGuiHtuSoqd2C%i%UH|{6=y5#W2Ho|W%BmCAN z!f#I_{Ep~)SM24Z2rDF3nM+uuC9FO}xJF`Y4-qy_A#6?~Y$+maJx$m?k+4IwI;Bt6 zL&7ab346uge~xgQ#DtxMqpJxgG6}zTmhg@(gg+cW_@i{fA4ds)BEDU{gg>7}_zM}! zy&DLBts=ZXPWXV}e_u{m*0IBfXA=H7h43#Db3B9a?}E`UI#1~cpV>tC-z*}e6FGkY zk%2BEgHwqN*-0ez5Ru_hPhUx7)Nvwm)*~{ejL3D;9w+S^Ad=BbWa1GblRAk^?jR!X zhLNl#L~fP%oD?FrJBY|<6PY@nh|IYnca;*kdmE8^wh*~Do5+2eh}>@_@<1Vx2PIzi z!6FZLjvk5s~E^h!k!nvSKKa=lh7PT1aH| zVj?f?Ci1dqS}Rz^E+X=-5!qNwQ z5~&fKT8Wi?nuvK25t+9|tb$=HC(HFX)kq?g%*_A=0Q}pjP6Opx-NY5!EU#1cHYA%tl%ZPjZ9me|p+e(r6zrhxQA{(tc46?H5m>{gU;x zr;6?Jb+lixpLUtgwWo(@za~oiXz?3+fcERfCnJOQiG{RJ>Z1MTRkYvIP5Z6KY0oj! ze#c?jrx|IVevbB;DYVZLockp9{@JuYApLU((mro8?T-wj{m}umKW3$UaW3uhKG-hn zFzrvTr2QF*DHQvPe%j@k-~OVS_M*kKuN_MJD`m8=m$;2PXx}WnZ;Fm>6KOAr&|Wr< z_HqyH%HgzE520NvemZFzBv*4L?Q%xE-Bv`q6WU!HXm1ftuW2nWGK}c0{X}nHO*D5C(L0Sq@19L`Rxi=}f<*ImL?7BubU_x; z#|{xK5ZhBni9R!!XrYqms=Y*uiioZi+~Na7H*^t|y~pU*u|(fC6MgqA(FzOEssTjR zGlD3k+22j{J15b;OrnQG_fMkrXg|^83yGfCL9}1|P7BtV z14Pf25lb0D?1JgU25lfVx z#`F@q?g+8#ONrf(O>Badn7nhuZaP6MGm}`>Y+~6(#B!v6${Au)Gl)&wOKiH-XPhH; zPa3g%h4a3h#O~itOxC?)GEa@ovk`klPwdf?#1{F8EtYzLa4ivB*=vYBvzgel^N2kc zCHB1Zzi@=u>RH5!`iZUSCMM5_Sn(lZ>!okwaAL0u<{J{fRdjC?zY@v0^f0mits|xw zOiURfR$W9)qa&u9L(CvHljK<^SoNof*~DMYrp21Fi8aeOctp2v0Wtp>Vr>#9pHoae zrIax1Z~1aDtHG5L&Q-zkZGFMfv#iTzYS zOnwU)JC;lA_!44rZ;72eOYF}ivD1S6kA>L3N0DD%5l8k@C{9#D@(h zp0=0xl}6&}WyG)X6TfyB@iAS*$MqAxL9U4*;x|nqe)D1CS*M8SEG0grgZNa5neHS$ zb2ITgh~J-1`~l&TcfI(-N#c(#B)(`O@h1)ue`-1LXT<*O0pickB);l2@uG6#YvaUU z4HDn5llU7s#J37&$r|GCt|MOVB3`K`F8A`dW(9G1_QuVEZ|x!O7)`uMPu!&>?jAwh zGk~~P{8|;n1EMK3khtu-$D@mh#|87fOycjS5Z|$nc!$L8R1x1Lx;yt0mvbob&!pWW zIqVrme6Pgy3hy`5h<_`X2eXOybrb(Fo%l~B#E;G24C&xu3+{(sxfEiTlQrn6re$gDXkQJ3!)* z(Mq+W2#8Y`Bp0SW9JVj!~LK3p~lUNle@lu4u8qp|gc!_oUNE8d-tHSr1*fyLY zv1uZS*Nr4LA11M76NxuP_gm>Cwv~~1`zVQbN=dvc*kvb3R7i~CGzq1Oger?fwP0%` zSM50xwS!3LyGa;Di+L*vO9~0=C=#;fmv9UrA@}=)totS0Qg4y5@cK!#3SJHpZFb`PU5h{9udr6MC-4!Nc<-LCksgQPa*N=eiCw)C2>Yc z;;h8WK1mX}&QBqE!ETZlI!IpRCply`$)Sr#rfwxUY(L2>=90W}KFO=fNM0Q$IjWrG zm<*EF?IJlok7UMjk`o2zrd*P8t~{BwkmPNU%+ZmY(n)gadXjf`lbkVxV-)svLZJ^8{Ek}n=6 z`O-m>Yle}OGtS9kC&|~+Np6z9&7yNlKgqXdlPrZNL$x5-S#8>9O$r{nC zpGMMnoMc@-$$H_k4It?#An9C3(j}T&R*>{=BiU*r8Q4p*ElN^8!(?nIN!e#jZWqoS zqP1fS$(_4Mek@u)DJ9ueNb+;JzSv1}?@^NbB<9<}BoB@w*(X>(LQ>Y%lfOv(uURBd zNFFC;TxAZG{3}WFpMfO*UB-Lojpe-ot9b9i1-y6B4&EE05zA@e51lw~Mxn~GwZ8O5CoQOrz4aZe_S`{Gc{+l}JEStwF=p?E~%7p*|?_yQD9 z2=?*>6i@F%krqLbA+{IAmT5%sY6gne%TeSkL6Iw%@5P|lvJ%Bs!Tul>MZWmRI4eH# zqu4GSI|TpZttbkuD0Yg@PxUB1lh~pn6ual5_`-$aODBr2_MrG$u=cm0ka?5he@YbJ zu10atgQDaZibJCLhjS=?)S~#wj^gJM6u*dnndDr)6vc1HQT!f7@y8()CkjyfISs`r z!9MLnp%iZQMid&!T{{6q^*$6bzf#o7IMvNWVai8QFXPo9ni`W)G=)*LfTDF9indKC zI^t0{Por>&7LWLOQ&ITVqwtSH(I@^v8Ru{sipW|N(Y+{!E};1PD2jh1R^Ig$|COP< zNR9I1-6&(mpuE(Ba^wV*v7j84fpYXllw)?G9J>-_TqeqK`%ua{mvTZD%J?}bCyqoZ z^I)aybt!K-jq=tCl(&_lynPSK=@LIfu4f)Zc~1(;dj8CGGhVCRnlH9<>iGa*9zu3FUr@8 zQND2jWzJ%h8#bfNmG-+wQRWHGmN=C8QWpsJ_Cl0}V&AzI<*p2rpHD)$JBU)=SCspf zp!{YmO4%b;em5TF_db+|Q&E;$QT|+pQqC|a%h#j)JsD-iJd}SfL#Y6zY6nV<8D;fc zlzQ>2ld&{Q{tXjR+IFIB-iESuE6O$lN~id_N1*h^qx2P{>=m5gX_Woq9~Hi{(*KX- z@ZUsK7geCTWG<@9mY|aLdes$usK!W%OGI^T2CD0&edBRdH%&&Bpg}cx2dXJYQBBQ8 zm6(odngiAJ1E^-KMm2Les#!-+-5ZbUJ~gWQ!>E!3H`#*f;gP5w$wl?(AykW6P%RmS zYUv78%jTex`7NUA>2vyd4R5GVi zrh|03iZ_`sK>>kzODszy!cE?LOppD>RauoZ(ogidKv1wBB*EW zM=kSc^}Ic(A3TIQMSK_Jpg7q)Z2onKOTenlN8jug!^;RC1+FBU-(e(9gF%a(Z64Z z`hdh0&qRH2IqDMOKU9kPN74I}==@po`9=JG6|KiMqW)tv>Ju@j|6GjvFUe6k617@% zXuPPab5Pf~P#c89C^?vIs2dibZWJB%X{cM2s2v{E9m7z|7^^*?_6mQ`Le#y&5uAg% zKMr+N@Xt&{{kL$O7yJtzDlbZ=a`;p#FI`3DWpW+6lgd#pDz8kTa_mSd<4UQ#b~csQ z8K{iUrt-!WR3<>>YRLUMnWlDrf z*{iC2^gNZaH&XfdSt^&Ert+x`RIW&*^4XPCrZ1r~qnyeYS5ui8OXV7gd37$8uQ{od zckasU5-Q&kt#3!E+_;Cz_a;#JzTj_7pfW#9Cs%W0L_STXht4G^M7G9qw~>RwGK_(R5aHPM{}JWP5fRo zH|{`lQw5sIJ~X$Q(IlQmbH_w9cN)>mj7Kvo70ql58oAGC=B+{Vpx{50hi1NDFHoXc zl#XV}N;FT%^>S%HEj-VhMf03+WK2QxVjP-GX|E|oBhPfr`uS+ySc@j-B$~IA(7aQI zM&?hN_vfM6BKq@l(R>s|v*Q4oPsC@J7R~O3Xuixuvu_oeZ&siw2F<~8G~aJT^W$hV zKMCJaiTiaEnqwL?f3%>HwL;Bbg0CEdMlE?&WuwvULQ^{ljZt!{7p>OKXqxt-X%X(W zG&If%G;ZnhN?gxGG=1C9$h|}}AiP5|27i~JIX?rO>RaA{Ar0Q}fRih43 zb>$wauAW2HHBqXrn@&}H0#!FIrz&A5Rk!S=YHB)FiQ+q5L)Bg7RL#0T)xBn_?jKFn z19JUPDpm6Qta?A635_s5((Z)hWR|9id9Sm8z-*ROuwg+6tgGPxi5^ z?2>P*aJ4I`>I_rmF;mqo`ut^71*C)pZ$Nm@?5FCV*;HN7q8&C1?IobSG>SGh7VQ;D zXvgeBE9*wuaR<;|SAsTP%8fJ7CW!r(iD;)zKzn;C+UaR%@5)Adk6h1bL3_Uw?Su2t zrW`@LU=-R#$Ivc0iuQ>@v`@`NyJ8&LXXDX6e;lo>mug?mMY~pPugyc7B^t5~Xy00l zHg_A^cZ<==oL;*{+WDi=7AVo~5Wi1`qunLfMZ))m`0qW7c7Fld{}rMAPB6X~?8BvK ze{!PzMPh%OiS~Fo+LMWBPn|=n6pYGsXsgGdtrPV5h3fdJRLi?l^-U3~Z<$2(t;eZO3{riEjq1C~sGdEH>iZT_{Xh)W$z!RWznSWV zqp5zZi0UUMQ!V=h)z4_DmSJ0&;wQmVa6sO}NpfaD!MNp-Z8 z>a(M$K0g5+esmY_LpNeBI{Cipt}vpzDi+-}x$524M&#~k1jU`-Np)Zd3JPLx1lRoh;Dm3x}7V~eda;;#YS}UTNK?lYtR*2 z(S0x44-5BChtU0^M)zABx<7*GPDvh$LUfhW(P;%szYLvGwAU-q+2*5@HFTXr^mgdb zxkX2};P+;t3zndZj72B=gu1_vpgXUl20Jywk5MyX3^lUOQZuT6nlbaKiIeN`v#5z5 zN6k&MshND38ri31IM&Zd5U%6k^e3(wn_6%x15!+`+srf=r zjf_XlH)?9WJw=VYpVi15zUJrh|gDntLd zaC|u*{nrKP|0kFS*Q1wvjQ+MJ$Z;&FN z1-;_}de=Pk-W2qHGy0I&2a3?2QKJ7xkN&@H)Lwj;+895zmye=W*4b*W%A@ugGqn@c z)ZQren+vF&x{2CpL)6}tPVGIXsl9IpwMkjjrleB4U<9>~jih#|joMW4NsFa6<2<#Q z+0?#zh}x{Z)aK}^eMhkJq-<@c_5-nhm_zMH@zicBq;|(JYCjf^!YH*nw^A$j+S<>A z|MT_KezB0+FH5NXYCpAKms9(V`2DYf+HWsVTQZT_@6S^EgOyr&cdz})OYP4R|H}qy zf89v!Z_}y$eJ-_sOs4k4GHPWltoASQQxsFHIz_D}hFa}xYIVn{)r)?EV422HTQ9g4 z(JAX-wYJUFHVa0JU^`Ay+n!IYvw&Jx3bpbMQtOr6eS+1yn%Y1dwLt^5VX;S6P#cvo z9TcCl!f|dGwXzpndqIhTqZo$SF z48!$%Fx;>U!;L2~+@!@YS^B1&!*E+6hG`Qp+&LS=U0X5SU5w$Ld<^%_!*Jg;4ELvE zcwjk(2MaJfq{lEn0fWrn42x!Bcq|3O<7Ny`2={UehEy*G`Q932&DoGHcp0ZL$X<)# zB@Ko(g0WUKytWiWmf&WK&s$?Kyq$|-<9rO8B>sKD+_DzK2Vo2a$1!XdErp_O=V}bQ zS}+tjG3+*C_)@UGI*Q?I(euC27{0Y)C=tFN!0@91!;wS`vi4&5Rj__5#c+Hgh6>U4 zXBvjTBt{Xzpw7gg5nHvy*W_c6HB3XD4})2UpK;8s-Qu~_J#L|Hne;z(jJg$q{p>{Q(i5o5$foYa0_rja`;`OK ztrOepDb!_)wj9BHTl_Xk|9fkw+bp_2I7wZ>M(X4ociksW>ONab-RFY+rNr$kqwYW= zb;V)oN|saigPOY1eboJ|p{`7FJ0`Y2q%HI4y1!OZr(8x|rTA9Qrmi-VI+OHUrQa@^ z9nzL}mAZ~m)O99M=N8{C!SJP1*Efc`{>{`yc2YO6m%3;lbwi@_%yH`eoQRRr4@jy$<6wnHc3< zp7A>InQ$JXjK6WB6XT>7j0wdUCrjL|t1;dt*S8h8Hr6Bjq$lt7+)BL zag__>OGOx8mj1PKFs>7y*F{_QT#Rq6!I(Q1<2#~lQxN0(g1c34^V2XENRHbUVBArT z@sn7LpB7{Md@9B-G#K|v&ikwwzuAbfcm&3S%Q1ex3gZtuF_uom_;WJGvUrTY=`kMP zjPb-ajHjgU^g)d3RE$;AFzTe#YB3s9Fq(5P%6q=C(TLG5TWg0V>a77ND`iFte_rllt_Ez8Cvb2d||^gZpu^h`dcXQyFG6I=Q=Oc}!Q zf)3M*8cZ(sm~>SLI%1@m>2F;DPezQKrj(lE>kqcO`|%RFTk=BWw7ze^{6Q+_f~lBy2-YVD zF@GjlU!-H+y9V=q$>D$n^T8O*-wVzmFXqF7S*pZ*M0}2l<}wZD-^BO#eVG5)h53YV zoD%%gyD=+mnALvFvgT~omSEO}G1q2cmiI!lNsZaE9@9CJ&3+I2O)L*QmUgos*Ba^8gl}r7YnbcoBmilph z)K54`{lrY_6Sh)6If42q6R5wnnEKo1Qh&Sn$aAayP6PEbhfzOkHTAQ%Q9q}E`nda^4rDwEf(tYXH);tV(Mk> zzrHY@`kfN{*+%Mj@1p)oiTlb%{WlY-m+wmbLD5)TtsSVUC_EKM2M!og|^);fYPWozR0q`jODSZSe~fBlA3_!>1-@3PGMQ; z!SdWREYBxmd0{1%)nl<_mSB-{0hU(me)$HexB(VmT;r zB@%bYfaUNpETy9FXTg&-56iDgEWZ_F`F$0ZKaOKLA-;bJhC*y=(WF_2rFtBe8X1#X z(Nia5VV;A*(Yp`_8#?qOG#Vwj;er@pym+Z4x0*kSP#TKz+8Ist) zrTlXQ%fEIS$f04_1sX0XqhZ7h8bu8veOv4SMXqdE& zhMT9-FeRRbsY5hO6Q4ViXqb7NhI_m;%n{%F(`a~L8x6^uXm~iE26?_TEQ+P!@#Qo; znN35g)X&IuS_TczPoQCyXn1Kh4YGIK@Ty>E1!>5spy6$~-Y6V-hiTZll!lL1)9~>j z8g`zhp(vMzJysg_>1o)%n1%xq^R0u167lQV*S5FtXHhTdSxlrtDIQl zE?~X(5Y`EYvEDEh>rF9OWgp8rH5u#e4y<>s#5&^?)|q)&XRXINdjr-vi?PaF*m{2i zYtksJ$zV;9GJiSN1roC;4eMjeus*&O>k}@l%f&af1nV>6^Q>q{JCF5w!C58xR*N?I z4p?7F#kx+o*RR9+hS+k1_wDgm-|55pu4v4gg>|#wZ_UD*e+27C`B=9XVJ%#Xb*K1z zmVLMQ6@vHYMyzsQ zx2i-#rRbHl8EcK?RyPu>X&+XL;5JI`GWW8!N?dz3)=tqXpKojTPON^p?o(n7m0^v{ z$2zzU>lw-MAJP1;k;aRXXdIqGV~mc*%QQ5`E~oK|!!(XrLF3i4XuS3mjT4U3c!RVj zEu}HRN#m5UG$v-zc*klQ@0w1djD6#rbQBDGTRYqgxQ5xkw-MD@gjc>HjD0?T38w593;@&wz_gb*?!lI{7F$X-wgrA{i_@_^?!oq?*q@d<&5rE_;mQ=ewdb+DF8yyV!GuocY4wtWV+!X#{;W??Im_&pN))j4bjhG8qt$M*eXY(I&{ zBU)@nOR<%SZuzX*j)}fM#$Y=k*MAE3UuUr?B}dIzY}!0*I`OXsn^ADg!f6@8)>w?K zNp!VDv9+zkChLke*D7qDli0ew*!;t>^+m9SDzHTae^C0)F2VMXjLpBLG%=p0i&JQd ziKl7A4w^3CMAN7lG+jBCrm;(DinGu(ej`m24$*YOdYUFVX}URsrYU-wZi~=#hs4dW z(R8<(rh8*(l4oR-{AQ}@q3JX|+(Od=J57spG(Db1(=shhPYK=%DbKE;>G=YhR!^cS zvyY}%cG9%&Fily4_vTuf>nu;7W?b%0@ zd`6qT*-TUM1)54`&?NWdrqUxc{VcXJ(fr#vn*Nwa(@D{CS~%6xUuC38C;kSpn?!#@ z0!@u(nwlkNM-ELL3utm3q^V1Id!+P9e8^8zL_^cic$)rRNz-|=tkCYje(^@^BaUOg zdb3Hvptu}{dte&Yn}33IUDl8^ni@!0QJj{UA&?DrI7pSulvk`MdC4(tnC zus>doed!VG%VM!VS&IFs672F0WPe8N&x-xIo!FljoEMDPUp$XJa|ZS`7qGuN9Q$jF zvCD5K?OEcR?ZloVK5y^C{>}#M?+Q=eIP9AbWB)*WK3swQqeAT4w_-08j!%=Y7bRo= zA_M!E2eI!PhF!k%_5-W17mE(rKe2x=TtDcsmx|t>1+Q!}_TNP3aq&H|0Q;ZEu%Dib zU9|?gCL6nMHTD|OP;0|3=LGC#xweQ_n_$^DVQ;O#-o6%lr;L$Du)Rv`y>ZxsQ?d7_ zVvh>O87p>q*4Zztq4}bHG+#2C=F6-!Uv8v%)LxpeoKN#r(!ORm&DYv#o=`^f4N_0a zrupU>G*4Mh^KBAydmqiy*U@~Jf#!Rb&^#xf=DFu+ejq|~vcx>Br}@!5ninsm`SA@j zFWW}*Q)x7>$fWt%lQgFn(fq<{npcben#nZ3YN2_(gXTAm(VUY-^V>^les>(ra<;j7 zi}=aYwU_44Jv7TaxOv}Jnhzw<{B0b~CF1vki{_u=Y5rOK%4{?r zn@jT_>uLUTI?bn#(5%X#S#y}?>I$0mKAMdyXs%yHvsK#mqcpb$X>M#^VCenN+i{^7)nlF^oGHe7b!-r^*&uYu%6|~4_wdJZcv|O{AmhpRNx!y|4 zjb2)A&Z1?Cla|D(wA^ukmb)gd%YwzUEYi^OxPg`@rC-*T zTUMsil0K1^Rl=2-M$0QZXlWFV zX2EJJp~bb97O!aaJ7|&hk(Nj)EoZ0Ga(*SPWYRkP0Iee?(Rz81*3q+Qy;}OOok8pM zN?Ip6XiZo`>y#E+Z%?Q7&IDR#ir<{Mw9XqwYjO;&^H0*cD23L?b+kS?hSt=Lw608| z^|@WNzOb3r%<;6Yh1T`+XnjL`HVD@{!ug)Gx9p+yLl><(#P8Fow0uEhSn%2@(T7QvpOzagIwEi`RR`q^bE05Azb&%HT0$OWCZ>?a}ou<{ag4X&zT4i3@ z+PIF^rsK3WpQ6<Ya~qTpzxmAOY6Cr zw4T?~`rk$z^4{baE=Be-9hd2G#Ae|brNnV%5{|Kla9lGP$F&9=6QrFjGjZHC3&*VeIOc%ke(`hMaxPk8;?a0G-av=_&K1;>#1o?V0EoE^u%8MIMA+r=wsiy21S2peseduh7@+ODji zZEQMi*QC%kek^ShqO{#$r0u53v`rpK+Z1Wbv$*Y!g|yAsLEGJa+GZc6?LLW_w}7?> zSJ9TTkG4m|wotGiGtl;g)XOFQY3W~imbUa%+FlS1tMh1k`8aLzOlezRLfachXnU)V zwvED_7em{Yt+eI0)3#08A4}|~>u4)FNZXzq+P)g1?VB{(zAdEf`#H3gN_}(_ZNKiK z?e{UXRfsP647Vw>X{%gLTlEUs^rG8XMw>;jY_n)<6X`>=zh^(~b8>0Fe+}(PLE0bMNBew+H zX_t9Rds-&#&!3|G#gVjU9-)1$#I8S1`LjrQ+E!y&Q#DB6$Y)BcOJ%Z2Osc-l|Qr~OnO?FuPs2klil z+I1&sHw>rU7^Yo*3*2s1({301)=9LtiOnf`+$FSk52M{L_JHt*ytEGp#!x2he+&2d zblU$*q+{4TIxg8m$A}|z#7g^$8FY+^q2ua(bX=Q6$Aoe^ZZOkv(^xttPo`r^I~}*3 zq~i{WonfKl?rb_{r_*uYCOYQn>3GmjM~ae;M^@6Ya1tGh&(pC~u$C{Sy==gjy z9bZb{zFBm9vyP79LOQ-%K*u4`St@-$`{?*}G#$rw(NPgc$Dg88kxz$OONVwb9eU}n z8=^y=6&;NZI-13|O>%P{ro%1#-SKqzTj&TLprii+9fRxX_&b)4f5LS9XTW*!KAbTp zagN-Lb5u6YF=KJcbHjP<5}Yz#&WZDICJe)Q%VwNYH8`hjz&Rre=iOGE_e$*C7Mu@` z$C)w;=OYroP>plRTAWYp#ksr!=Zd*FpDo7u`~;k=@23R^t4s0Ox**FJ6PQWI4_scH=CK;5@ntXSrxO zJ`Lx|kvRW4h*RakS+x_VPW%m`wLTtaV=T_*;W*n8a5|6TblY)u3s>&~oFR!D5T7%` zbxw!#LJFN1dFj056rGo4(fNM`bY3};&arYmZa$sY+3CC?m(EH1>Abm|PI(XOl=GXN zckZL}ZVjDshOqN~C!G(Tqx0cIbUvCu=i*{IpIAWWQ#KZ*8D6_dK2N#nHJ%;y#=}=XTMsb3C0zE;_%QOQ)Pq>pUR!ccST#n$A+; zKUzd*`Aj;0_tJU7N9Sn+ot0DRtQNf596C*TbT*8mvuQn@Enzz4y{gl*gihaDI{QSo zd^S3VM$q~9ZaV+X#&yvYT$ilJHKGDnY$>kMeq2{);=1+%uIu%JoW z23L;w;GXQled|Hoi4uFqB;0q3-^>HJ@0pK#&SBj5r{hjq zjyt&&_rnFaAF<$GC~=G1aW7qrdsz_oQ)=ALtiqkP9{2O2W0m;5l!N*J zgUfJ#uf_f2NZdz6=h5@H%L{S;z7O|_4Y*GUhB6IzWeM(T(W^g>+i1pZS%KR&4R_00 z+-))@&NaB@KIHBaf1eL`?`qt^B;4T(xCioa51zw)<`C|4>u~=&6A!U?hH3F!l8$FY z9G;OuJpVTz&*&69S4kZwwrex+OxTa-hTV8>nu2HY20XX!z>}Dd=Z-u)GY;Un+llAi zF?i-q$Mb;rBrnJFuwX7&if7S8JWG=CJRy9`*W!`2ZqG`Idro3rkoM|aJZo0qd37hA z*XQBM*5i50hUcBJcs2>n`x-nSB;Y9+hG)C@6qe%ICGF3L^b9^JgjmLN%kIa2Nji>O) zJ>BDwzK$$BF45v0ho?t028QDaufsDSy3Z8gId>M%g+#h8T0+6*Npu3MvY-M)sdJNM8f=LWiFN9elmJY5fLq$|0d zu1AvST6CPQ$4Ali27(|D8S;gxk`?<0rtE*gh-NjctSF1)ED@jkNz?{hQozAy*xOL2H#DZ%?% zBHpb1c;6J>x5c)x1@HS}|6m>7kH+KOF@$%g6|c+#yk8E(`}IV;2X^B>RpBFQxmcvvgk*rTe-Hx^F0=J7EglQ&Q+oTuAryEV}O+ zqI>pCy6;P+`+-ArKcuHy_Kdn^ze4c$-erTf`^bU&}8`$fT8vxn~2R@0poraNa7 z-R}s-d&lYCBG@19r+dc&x<8pl_h%F7{$ecMU(KTXn@qaDZKwPDt#tobO!v<&x_`~5 z`*+cBVmjTYgike>?y5q%4PxBGF+jHo4iJ!NO?%s`b_aCJDOak5i zNd2E4-|%dFmpbvqCgU5u65rTO_^zFZ@A`6l2`Tt)3FAvVj_*z{zF9l*%~^_X-ZXs4 zL41#l#kVK{-{T|jJt^@|=ip15iZ3G%-)c3!wQ=}fKaKB=Ir!e(hVLyUzTCO^HV()4 zt_z>+1^6~g{|8CDsYJbb?t;rmsz%KEhL4~aifhVRr2e5a*WZN#S$yy{W-YNGfI;%^jvmeu$g zXX3NR;%gbg*FFZHb2C2oNPOO{_A47chEJs@ zrjMS>_Rte+qi1xGo~yFyxh8?0YtPbieJVXSrqGj+N6(az^xU?Jo@p)g+$pxZ4fNc5 znx6Y7(DPs{Jt=m27G%=1cq~0jN73_S1wFFf(({a&9@#hVc|rVM8b{BX1N5vDeAx@= zdE){-Z&~Ph$3st^^liG`gZo2_ z&%u9v5dV!^@!vcg|CBuZ^4#)I--v&v)Uy-t%Q~t*DHngrIQ$C=@IN*J|I#x2sT1%& zn}Yv27ycJ^;a|NRf94$guPng7PU_b;3!!Uz3*HWQe-U`tw&-h;DXnHG!zgqb9=jfIB zXs@iX^jgKgDUIG1;cDMWZ)YLBo??2tE%f%zqc>=yH*%2Pp;PqAx@Yfyhv>VwkG>I7 z$7<;tCH3eE`ebg@cXcLx*PNtpyj)*jLf?%u=u42coNMZvDlyZt=)2QH-`z*)o3og{ z`(x=#N~bSnCVh{brf*RWeUC%m(rxrDJ4fGB;wNVS`qHHDc>{ef9;7c*`qv8Y`Y?Uj z!uM8`zIV*@<;BpqrIfz>^Ym>yOkd$D`aUh9@AJ9z?Hxtm{xtfEr_)!mn!X=I%Mt1S zB|_h^iS+#;7^mXsQ;I&#F8Xvk=rc$j^%Ll86nk@+zIN$%i5{=`_GZu*veGv=g1*1^ z(s!YVz{RBmE}KeVGyfrp0(EUX}~WF3L0BsSGY;F&!H z(vk^0FMTf_Ca|V}z}f@?>!km6C4o1`5ZG{vfSiX2yyqp5XD0BzpTL$`1h#4j$rI?}sRXABDU09DyUk zadZ@cvJnKzQwaQ)OW>H1z;Vf~Vkv=>lFO+L1pX47(}JhmOQ2G8R*62Xz@wLb}G)k^^;b@h%L%8J~DbRkDfK&L~!qL@Ez$?W!fk00_f!+v#fN%v*5(ta_ z$YKHm83YF72%L!_a8|I+6%sfz!Mk@6 zoIRD`obv?ddI>(ThG3HL$eH9|ir~#pCAeS@!9~KeL~xes2rf?`m?|+Vh6u_$CYZjC zpsdpdUz|)ZQ{rAZPHz$?Yq#f1OA08{sJ)NARHZmq^^9y##+8M)0S2f1V1`Ec-9A;II4%ZWJz|C~Ya)NF#M#ZM{MYROL{?W)5Bs|8Eu$-$a@g0p*fj^=1SkZ z(}a?ogpxIc9xfvEXg;Au()U=H(Blq5Pb?(#WFMha!CWCe&+aGmTp6L~?SxiA=tVuD zmjq|cdP1)z5n3Nws zKSaxk-GokUBBT%uwG{c=g=*Rf8AP9HI3degLUMjK)GYlDv3G1B-`GSr zN3?8E6VAOr_}z7c-xHnhdkJsdLHI){+a%wQ9fUuX9E&Cs-hGO&{LUr3Pkg^AB3yi) za7hy3@B0WJo=5nn5rlsh?q4PmE}u*I_X&h6h7mp?e18g_{JR)og=kP}2v>@ZDv7C< zz8X7WgTxvggk`-k+#uMt1j2S{w@BO3LbyXs*fpDQmyAQVo^Y@D2Xur(qA^lIcyJow zGZDh)r2Ko1e#+>-cq9EWM*1%wMgOQ2`mbD1|5&*mC++J>>5sS5Kj|3#lXK{wI*k6? zJ@ntPivBy7(tp=P`e&-?pH)KtY$yHq#nFHNUiy>f&@bzA{qv{Lzo3|Yd9UeTl1~3J ziGQk`{uK-9f3}bQ=S9Pdx%9u3LH`=Dzakjxis)ZIg8r<1^vk+P|6B9u-ykJ7NdHE$ zzjuKC&6)InkV=2S1p2p$w!-D~?-bp;rqf>}{9jC>|H}*X?-Smy+v)#C^c7F0|KL&j zzh6oJ;RyXdNp43E(qA^4{&K-Qwu1hO)%5>4lm64m^eco*okf3DG5s}yZ3xqEl6>Sm zWq*U@Cht1^O^Nh3@29_YBmEA+ZjYf~);;^>cQpMTDc()=`%cr}dxZX=lK!yd77@It z@ST}P|KEanLE8VFBXUtLk&D+88Qw=EW)6`{qeL!SN96KxL}JT{j4B}_=l&vNb`Tl6 zhDh8}BI8yP8J|I9LYT-6^N37ZOyuSbM5ajGZHI_V6WblDiOfhQa<|~l))BdHGLidN z5qTh=NV0{18}o_e%p$Tu`rlbWWK$`T&2x!-Af-S7q`)4F5x%ErjfaEqLxPOc9IX@Bk zJ4F6l#Q;tQhNUww+`~Z3Yz8h(W?;lN21c%A;Qux-aK%gpu1sR!s#pfDmO3uVfV`Uy zTxVt=ejx)BmoP9Xn}LKq4BR6AQ{xy&Y-eElbOvTrFmShxf!RA4xNjc=^9&3;sAnKW zFcyquU|~K3kBNQhRtBD&%D_{b7+A4~fixWha<3X#B^u`Y)_m*o0+CIerH-`<@J ze0`dM{~c%GU^xSavKWv#^uUis298Mk=u8I6q?8NCG2#7vKLdXV?+LM=Dq%n&JgNu- z8quQ_T%GXfH4N14V!$l+2GP|h_;wku)+r3MN#31_40sY4@Cs*7DFb~g7zl~($QlNs z5_?AUo?pPge%ZNVYBl_?$qK}ji zeRMI=MeB$@RzURe6-1v9jwi)O{vOe%%|xFO%x5h`)29>7C?&c|a93-IzMMyNZ4%LS zMxyI?6U~YeeRCzzw=#*oy@%*KI->81?)Pm(x11#^|MpMxqj5yH=MXJSCc1Mu(a*&1 z^LCo<}o-|{N}|on3T%kLohhs$Ka!81{aqy zxa0zZ%cOt#5(ZN@Gx$s{gU<@jb7>4dFE}r#8C>mU@a2gN${O+DtD@~SC4*Uu8O(`c za6=J;?@VIw-C_pwW-=)6kc0US2IY4vgCCz`@Dpk8N@B3+0E4@aGx(+O$e#1y{&WTp zNZ-M+43;cl@JGqvXd;7U=NUXE92FAxm&B>3GN_%$pneR4b$b{zi*9Q&gLcV5&XEju zOlHtkz+hJngMQ%;Okgl1b-!pHT*lzpJO9RRREzuZH9J`sJ%TM82iWRlksY4Nc^093|fqod2YQd`&!F$?LHCEcu?^ zOFq7i`JSyHA3wkKJ>NsV^^3{Z#yA_e-gef`|7Mb}lQnKULcY!W$hVd2=;C_bNysC;4LY$rtY=KdmP}&XPYtL4IKl`9n)*G5$?t6-|5V0F&n17x3i4+zCI7VLkFRMbfBqQx3r>=Mb^-Zsm`nZ}tH^&-KlzJ^{I{GZKkr@rw=X3B z9jx;%#<-jF7o8*jeVn&=g8Wt03-6ddUBJIr+PW$iJ3HzvXrKZZr9ZC&_<|*XKBMoj6YZpEJn+%T)6JI!OLAod5f7 z^8dm4fAX6AwT%4#<66df-6qbE|3B8@uP1+y*C5RKF);-wn*xGk6c8<=K;lLUNO`PS zLjjeL0-7QU=!gP*?i4T=P{7JQXE_DZCMj@%jRG0-DKJe&fvkQCT*kSVS5n}LQxv$e znF3dF+|?}|8^F9!wK<#o0)N%YHUJ5+Ahysss-m=9MSbmrS zPw6PIa)1JB`Y7;>jRMc^r@(WZ^8(lOViyHA%%i|7oZrc~n+7SszgG#o!7f-Oc8UT&a?Z&L3XHJr*F6+C!&raJr@*-w1;_U6@P3i&ju@S`7s+<+$v63SQAiLH^BcFt?k6*PNo@wHqjS9mik4 zl!CLzC|JbprehSmrICUqCn#9Tn0#LnTyU6zWnK#2d5D5{O{HKt<5tY0;5}UwyqCEv z%PDx@P6{r`qTu~ADOkObf;HS8Tt~r&N+|fSn1V~^P_TY41sg0Bd@Mx4$B$C*i2({e z$yiSvr{Ky#3a;*_;M1)08J;&6Q;_#x!PXfRT+eYYG4{))6ntffg0Ds>_!`?b1t_?c z@!nWK!8du$cCe1_jTGEvpkU8t3Vx75!4J<;a8CyXKgp-yr_B@`+DgGM6cqfjih>8q zDEPIFg5T6qkpGr2I2@zku{9L@;W!0ulOdp_L8_ty)K+HF*?Tn@yp0%=vr{g<2VBy@En~oejOjcrP;spFxE> z=1{1UV>cQowCNOuwj86->x}gVW4w8eLj0PBy4xu9F8kjrq0svr`@u{KeV9R^k63Fz z^A9Yf(BLSA_HxX=J_>zhqtL--3Vl66AwD|{eK$-YzCR6};Pv>K*YB5p3Z33Yp|d>{ zI$uwr(EHV#ehS~zLE(9)C|o>F;aeRP zzD-Es+m#f)gE{Y%Q1~v!C?BG51@rPfQTRUgFX6oEQVKt)pl~hY)fG~BX$FPsb13{6 zV?16%;pN#Beu{Bc7EyThMhZW@fx_!76n@S`;pe%&^;!zIv2O$8ypl=bS5Hv*HOAe- zzSoyg_>F1`Z?C8D+a(m<*+$_W#@)?veLf2J&!g}F>-~)D*vsupw()*De3-QzIZNU1 z1}J=N1%-c1r|`)|6#j+t_}(`B`(_HCJ4WHZDk#k79AW-lM0k?@z7YxsIX}W2aRWtg zfFi+_6X=$d&3to!6xRD|oW>BQPkRq=-DDoO>+dM*%*9$1JjpMfO zrU;+=Mc&y?kzE}BK5PAeF+SW%kv+`ae~KcXveqHa`+^&vb40#6OOZq8DDusEiX5Fv zk?*r9@&ju>!JH?LQ{Cq?-?DLUmGMK7$R=ta9JI<1VN zSrUp~zLcUl7K&b-LD4)RMX&3m=9f}9^moUto86XMZe9Z=&=rp{;-FlKMqm!WF1BM*2?b6hke=1V{WzMZ}M8a#eFy1cXF+}mQt)|m}30>%eI_EPLfI>nB%_U|(&_QM*AolsNkWD&(i zwo~laHj4em>%wQSF}|0J{l)smIG*=pu?fzZWWS%agx|`x_k5K&Cbrf$oO>y22 z$6s1V@%AQ)zj~D7o3bgs#ZPceCprHY8O49yK=I!K6hG^t_@BiTKhIi5 zxsJapDLzq0@&B?Y9#B#|w2k7iwfqa836S6SE-FA@v z7|2u(vMvPKdO-GbAm<^F+XG6=22CjgUBI~)szDbOfHEVXY3-otr$Jd8LD`Hq<2-2Q zSx`F+bZ-@C@d{8?E2ugEsu=@4#5fO+f*v^oYA6Rao&-I?aZmPwp4tOi#TuSw zzGq57&n^c&w;t5WaqCxsUJ`>|o)79s2fd~TZDP)?8KACxpl!pTw;Z6i2SM-nK)X1m zhw(nB0skjBppQBC69eeeLeOW-zt;r*2OU9Qaer_Y_#bQn|HCSvqw7G!G4LOcg8v8( z{D(83UpVJ9$NgRe`h(ZzJadmWg2v8+{^2#BFgyVKz*>Kj0l)BCoUQ}Ta!u#g0%IoN-zwlgE#O}V1k-^q z<3`4TxE2CI83e+;5G0BrkXAq--v@zmDg^3N5a@~_(6>QgoP@wq1A#pPfx7_$ZzTj5 zoP*$^c@RvSfFNrf1edezN(%(D4nvTqh9JKig2H7G6m5WDo&kbe80R+5E#r1qI|TRI zAh^#3!IEPTJWv7wzi$N(c0o|v3qf501P^b6;F0qXH1t65xB`MF=0dPS2EnQh2%ctL z&oFMY7=jk&ctH!ni`;LR2|@b^1g|pA#&QU@R723U2ZHS$2zIdEoy^@c2Z9fnYtJqS z23YTBH4qF%AlSzo`#JYO9|VV%LU5RCIx+;ocRC1$S?{qj2##}&Ct?u%oDRV$)^mD4 z1ZPe_@CRd@XKkZ75R7p@&i%vy1pjf4e<1|HP6#4Ak7pwRy+{z&AVGWp2~wUbv`A1b zLV~s(2`P(_klKR;vjqv(rATnJA|Y)X5~fZf;lk}mxVR1p({)J5mLP%OuL(IBNXTV7 zuXjTJX(SX*N5T!~kTACe2{&`>`~f7~HWLZAGj`c-B;0ir35x_sxR-J7n~H=b+~1#x zgz8Zw)YK!PmhNB)rU;+K(XNRqkKgkAzLjkg%m239mE88xbVD$+2&-j_x)j>}0H6 zlSp{qg@g}S$A|3OqentNYaZBxgwINlu$S@oaokr`NI1w^4i_Wg2y-80jow)6;)4Z`gq2;b(udkn&N*FpFm`+Msl{E#s| zVyutzA^c<%!a*g3LyWhVVLMGIOl;2tud_i^$hmWRASzl0(M@L|x_Ku=w{UI=YbsSjw1BzG8X;QP1yOkn zqI+0pWer4&7eRDC`)YXp5c4kOm`4{t^cd?{)(g>-l@P5IK(wX_qIH=NJzE0Na|IB! zu#VPw5Uuw@)Rqp>OU&QS{2k{YdTj+nn>rxc%DTGNL9~r=w(o%G?fDSxoD0!=b0F$n z4$+64zh@kxPka!4#-4K1vn!e%jw+4uY_d#@w>-kX)(Mi_vix#3^ z*Ftn=6rw-YK=kKvh(;w4jje*{ALgB8oxUoFf?Qvu5TbYu#DZlIivM?yVh~@l9OA5Yh-dUdd?nkjo(A!?GaWBCOBsj11H^Z8-aS0OcNfI>F;>+e#1C-HgL@#Z3qbtHS%@2W{5b1a zz6#=}Mj&3@4)NNJ5H}Y>`~quw=@7*21aU_R#GP#4#GG4BLELo!;y2m<7Uy?&K>RMp z^-My%TLSS%E{H!KfOwz};?J0KZ$HFea^vg1`0JApf2)A_JLWpZoIkced@>v2kr2ec z?tu8rF^KW5HJNF=Qb0ZR8??d97c}U!G28r)*doL4- zAF#H*%}D&X4T+y}O`p$0;=W@@JZM1T;YuVPZ9(Gqto26;5>L)Y;xA{Bc!p!owIgv< zhs3}8k@#;t5`71d7&?i>SR*9pghaFr5-Imd-H>R~AxVirV%!Xg)dPvM3X-(#kX%p% z$wh6DTrvle%Ss`+Vi6=)aojcKkQB^$^@B=fJ_1<4x5S=S3mO9Lcrtf74ZlGhk#OA{n-^h5I2Vo2U$ zJw17le8@Wc&qMOraY()tKyr|6hk776ybqG2HIRJ22a+FZAvw;r6J?N`+yKc)4kUbC zl>Em1?|UIR$FZZFH?DwWq7{<=gpl}o4MMCdwi8lRLMqCFRFVy;+yiOS8A#Q2kS0%q zRIi5Aa2Qha5lHO|A$6G`O+*c1UN|LV6YFTwMie-c(5Q zn<2eE1nKN^klql3^u`FJ^EmbvZnx?oEuDb$jsT>06+&7u4C%c*Ufcm`)p|%D5JFn3 zg|yB9>BGH{KEgTmjM2~n>0{hKUI*zDJ0N}XIHXTiL%NdntY+UDp08z|b^9TGjxk!8 zqqP{)^%6*59D#I$0@8LHq_3QWv{L}-YlDz(=D4lPA?+H2bQ|Zt)dXob*YOVHyq6B? z`;Cz9W-Wbe`?v_w0SBamDNdGH`G{A8o=8U#LMpcj{OovRo4l?O+ z$dWQ3Qw>6j3fW_)AX}z|?8!dJo=S&oWff$ryCGZK1lhA{ZjABV5M<96LiR!gvbF)p zHq=1Yz5ucgA7rnsfoyXzWLq~w_C_USZ|;I@$6mv%64^7l_dzPl0fkGP(XnfH@fkbgP@@*x-Gdxs$3HvsupjL-W{`PXM5KjMM>=sw85 zXWkz;=f^dW|8xxU5!Q363i8uD{+)UF-a~%A5b{yR80&<5ybSV*ddMfa`HLVARze=$ z2zg8o1rC23q|5KD5NK$ke`P_DT6|N8j9o@Q0OgC823S8ISz&GFchxEPIyy-?&Z=GE-aGeB`2$6tQ{irG7$xRE*M{p>#|gyJy!zFh#tumXx7a-lfE{-3#)Q;hN3Q7Fz< zKyi-O=C3_ajB)%p+b3CvpYcK~pop$T5-mrPFbhfIA|y#pBT0S=NlLbB@{p8#0!gU_ zNHQKplC>U5jzJ{3E0N^gholRtk(4oxq-hEyO<#ee%MKywiWx|{N{OW0P9*VtcG7GE zl5WgJ(#;!@bSvlIUW%l$3MAdthop)fNV>NhNlRQvy8jH4YPKP%t^`T-(~WCTYzulAdiuQZw_ntVdF7FOptdgQN|tJjGrJ)x}%Q7e(v!L{>hw_3xC^P0mnb`*AC3B$6s)aIJ2<7DmpuB=} zuVnvKXP~@#9hBE>hw|EbC<_!&7S4lmPBxT99DkD<%3=$Y^IM=SDTJ~#3(5uCpe*Zx za^YDh@16$bBF3y_O-s_DynhvxHCv&4XepErk3d<^dLDB@xhx;b1{o_y$&V=%F*7l_X$^(pjSPSJ*F_ho4?RW*0Cr(2-auUkZi=h0S*X`Ue zlz$z9lF$E?e3qj8kGXY0{Z)m2cfRYSFoF`i3@>iK%8)-!$^>v@^Abj*jUb1zhU?xNbt+W9k~;xk3n zTc@GwJ`UBpYZj>Y{mgl%N}xJD1l8{gp!(x1RQ%acjk4|UJgENJ0M)OIiS|pLv5S`wYdXo+X1MZolvJq zpq`oqb^0l&FPeb*5);%}9FxuCD~>~*GYWOC5bA3cP+zwn>cSSNi~6CSdj{&87ePHg zAL`p&P%mhJ`p%P3SBybjxd7@VhoF9-0_q2kL0vZt^&>oP*ah`6*7YPo{S@2Q$e@0v z80zLDP(Obf>KFGwy4?KF3mj zUI_I**0!Iu9m<3HFzY?K9_sJMq5g3a>Ysa{{$)GVr`1rO;X2ROKz)w$&NJ62`}y8f zJ;C++6ExcO(4>?@V-P@N+6#@P5*k|xG|p+z zxO<>U+XKxMZWl~Kld%Ds%osG6?0_cgEHsz5Kr^!fnya+XT*K|!tCimN@r_x~EE|W0 zukD(Z4bZG%-!rSAX=c3VJE3`T7c}kN(7eX{n~y=W)dS7zA!xQapxNFJO?Lq_@3OA< zS#uxf_lu$Vqzal(S;J?;(0pD8%@>^WCG&j6IR}~d&=@q|=%M-61kKUo(C{+{&9M<^ z_`0t7iFN**4b2E^{*`flI{?jDAvAvkpgEro&1eraV|~#4lMBtijQd|bG=BDlilB+k zf|m5q^0OnYXf3o78?^Fy&?YT{R#gtI<{Y%T8ff*+&>BuaYxY2EtAf^<2d%pnTJHjA zr}jX5;WTJ3S_AF0acD0cg7&iW&|V>i_R4B#XAMGo%?4<%4M2PSbZBR9gtjOb+PRE- zvjo~(c0haUS!hcepYdO&$T)SIpI6o|h_Q$Qz{?q~O z&y4vC`+wzi`mG<@v)$1C$=H9*fp#_M`<7s)Oel0B=CJjI3N3%Ze< zF^1%en~;3zMkHT8AIUREkvyvq$=8e^xu6osvulxjV;PcfEPpL|HXNKbNg3!BOB#nxlL?)!6gopUbe3G`90BM&P0&rvhc06tbQkZ2?$Wi; zWpnJzRnX1a4_#gnbk`k+ZuT7Lc>kljc{_9^gV5cP1KnLE(A_f=y2?|~RePX&NC(}c z1<>(1wyx<6bSny>Tg5nQPD1xgJ#^3Rfv%+my4DDEFK&SDCGOi9vy(M#Vr^S*DvPZuczc`eM+1JQcc6hM^ne`4H#sWi9&{e}4~j z2b-Y#`Y3cq)yxs(1VonMx@-+ij+mHVX+G-RY#HXzyYMx4k6`X#;xx{%43Yp&(l(# zI*XK*9KVL~pUFlFpM|A7Hv=ippGV4zN09RJGNimxfRtAmV3BIRqY?b|%03^V7kok;ny4Jjup zk;2a_Q%>(j${(!t&mBnls~ai*iy>v4*X-X~r1%&ss6{(k1E?S{Ut82WnVZe)xnJkU2W z{>nP&pO!$sZUp+466n`&hMv!+_3abTcdmziGskxYpnq!v^gEfOM*;nZ4bboDf&SBZ z(0{%T`Y#R8A3P8J5!O9C1pSY>(2ul2|0{F<#<_oVK>t?@^rL5>|C{UnXD#%T70~+! zpbxROXfIOXL8?%R)Wi~`%5+FoY(uJg8B%#amzvs*RC5JV?O90mq$Abafz*s@q+S$2 z>Lo)+z4Q!Hvj>sN`{dNCa*=v<1gUvvky@}3sdE~TI+yWpS%B2rDv^3e8&Vf?Tty~Q z?;S?!5-(C8;FwyDUz&&1M-L$NarQsC1F0(+cdY}d&oa*QCZxV-L+Z<7q;{M{>c*`| z-I|ZoZAX#%whpQM-ICfXMC$Hwq<%Dk)PCmtG=$X8%aFQnH&VYEMe3n0q#l`$)bARR zdW?N17=MIwew~lhGt7UE$D$q_E96 z0E2ZH2Im9}-bxtKx599V4u(t1V93se;R?3p)WC4{Dj4#*VBj-n!|XN~ZrlJvu?vRz zBQTWif#J?h817=MiqkMu&Vyk|1`O3ZV0bV9!_s~j8rZ*#Ihz<`700bT2E((A{d_(Q zFBZYjwjYM}g)nrkfMMfq7`7~f;q@6XY?Hz8Ryz#uRKf5b=l3?i@Zl&7A0L3>Qy&a_ z9Wd;l4#T0HFdSh`!_4y|WB$zXr@4+ZJuv*S7lyxVFpSOQ##;YojPX1e{@De?1ke9% zgkiD?hW`d(@N>-p<_QU5h|Gc^z8FTqLKqXuU=#_s)xelYFiKirlr4Z!?toF@fibBF zMr9R@s!|x$B`|6RU`$rPs5=j%z8yw`7e?a{jOJPxEhk~LErQWL38Ql#jBdtED}>S8 z4dav^82OCBnBDL^24KUs?4aTAqFwSNCdCXbN{I@Vx3D?4}mvI5dmz{-i;W-$~eK1zAZxOfq=EAsy z_1@nK;{$79e308iT`=e^Gy8y=bg)n|F4r5;c#*cTx zIB)>QAu)`5x5D@(uj5xdK3D?dVb1%u4#wde7>{xO2@{MXWibBAde3nE=Oi%x#dZJ9 z>;7*#jFW8l&4MvtgE7eCa6XKYlQ70M!$fT`3C_bLS_o6(X_%zLFe$QOQn62+50hpQ zOvyT!Qe52nVA2O*G8DmNEQZOn7AEs9m~69PvY&*>c?2f+I85FRFimZSDSa_aystK8 za?B+Hm@f6gblG~CW^{04`%E=A&dce9X%^??Dq*@N0#iO;;jdc?)AekheHNx7=D(5W z^TuGhr5&bQkHB;r$K75JQ`rod7P7y*6sC$ZFjdZlX~|5O?q{7f%<&Mxw6p@IM;Yre z#&}!{(-X^J;^!2mr>bCDSq{_c?J%t!g6Ub#Y1s=bgVgy~)8-c<_Idxv3q-vLuEYuLRTraoTZkCwyq zaUo3oN^XZ>8gRk%=^#v>v9`}+Fn!Sv)0Z}wzN&@kU^YyLSm)soOy917X?Q+NKkR|& z1ouCgVEUPTe1Bp(#cOq%Yx<4rIhzI3xfL+|#oVKe|39|}RSVS_n|$Er@4HQZ|l zU``RhtS^JvPy(~b0JEhZW?Ku)j&7J;vtafR%w8qTQww2EuYx(F0p^Q^Fi$%Q^K>3( z)xn%S1Ln&Q!FtHTzg8BA+FyFBi<~tduoaYsXVZK)Zb0uRe&V{*(W2?8rT(ckMhiov{gxFq;E6mUBgqfdPnP23Xm!`wKp$q0$ zxc*nq!Mu@iw{Tn+^S!wO<{gzVzr*YD?j+1T<1l|v0CV3M%pXf&{)B7$bOPp~UYPkT zz`UQi59Yx9HDes%HTfN2t z_7Tj1ZkWSdOS}UX!A4lbb6}CmV3Ci*qS^|Jb}uZcHdss(u-Fu^@M~jnbDU=g7T$+i zrZmHH0o&5I!@}p0mdqKjOf$eTy%Cm6M`5`l6Ba%Xuw1zumYlV)%vuObt{#>=0W8Xo_oS0+j2}^YoEH$fOd8h!Ehq;cWM`3xCV;*aTEO6dEi9Y3&Mh3@wGEbSM__rY1eWeR zSa$kgd5`gWU9fzphUFuk_jB!^w!$*Rar<~pzEZ$)XaOvT`(XKY4lKi2u>3%<{I~~} zlZ^MvQCQ9t!t%#XSpMV~K0C0CErn%#BPwSx1ty%+XHQOKTfVJ)jto1#xKE{|&u+Aq} zz`BC*R=2{s)&%RbJa1v0FC2&Ur3zSi4`=1yBUv{#z`BKN>DmeFo1L(}y%5%S8)1E) zV|O$6M|)uXgy)}eonLTG`%lAqh`GLDo})fk`M%FO%>6O8ALqJ$48i)-a#;Bu(8|x8 ztfxm{Ju?97A7WVlw86^z3F{c^9&d*AUxM{NC9M8oSVMWRM$2HM3fK~k!6w$hCTW6A zkpr8m7&i49*tE5<>88S_x4~x6!e*KV8=v9ZY(22qM__Y|!sc2En|m*8X(wRg-{?uG4^0oZP3o)RAObN8}hwUE5Uepa+wD_M6*ad+RW4Z=Zr~C)c)X9Jcp)zB>=LKK6Y)2ey9pecA}yXA`jP?S}2k z5!ep&!}fJ9Y~L{UQO@~(A8bEn!1mJ_*hcuZ_|*&BZ$j99=eTpMdz7{O?SO5f6*j*G zws1OZ(Gcu>?{624!!ButU0x5ndJ*i&{jjHw!EP+#b{ux|9@uSK*zE$?9mBA@PQ&hL zgFS5s_9^FKzaRqpg%hx6I$*zq@%X&Xo;?8j6`io>tcU&Tjj-pj?b>6oUsnZt!A{s` z*TFu=0{ab|Q`7|e+)UVS>Vf^{Uf6G`h5gpOu$Rt*eF6K+IR7p^>~}NABGyvL8kQJf zubv8f4P!pk0sGQw*dJ|$y^(qNI%t3LDC{d3e{~D&YZ?Dp&V8P9TMxj_dr*5D*R_E$ zUOoZ)D{O!D2<)$|hkfHI*teX4y=xTqH}=E+W+Cj`nSaL)*t;2X=PKBDF;~x0*n638 z_et3KJIwwu>;FUm`=Ai^&(mT5q6_w~82>BwA7qXEJ!b#b2Kz8`{b+*yC)PN^HJ#%4 z(>y5pBo|2ZG_zt+M2KaSz=Gy6a1V4rM*-M;|#kPh|;>kaa7b(5;ImdoQXL#BwyS&KNY=uUVuM3}1P(s8a+prQVJ(5feijZ_I~<;7IJ`Wc zIv0-gMmRFE;JDZY$F$9GT)GgB%lhEBya0|X=EHF%kFScrk*kK|S_vHdtjAHf6OJ1g z=f)v8_&(He3+LZ@0FKgGaNOa5>jl zI368_qp=N+Wz4gD6pp7DZ#CzyRl@OXKO8OR;aIPS<0Zy@WhNY*9J^^b99swBc%vSU z?Z@HhCOF>p!tows^-hIjH}iZn7miODu;rNz)!;JOAIXHgG zhGQfI$FI!&JFm&P#c=$^_40Xw8gU$TL)))A)FVs!g-Ml&dfbuoVRX; z^R|3AZ)dCpyWlJvfOFv_oaHe%@0kPVy-jdd2H;%6Irr<~tlkUfg9fl_>9BT>AXL#PsTrE4`Y#oI2Mb^K;17~|LoE;H3Uu%PN zGsp6CPv@I?aK0sk^KAp1@6^Ki?g2P^X2IE84kw@QI6q=7{TtyNVD8Vjmd_8txvwA2 zubSaJ#F*bO-?xl2%(eee2ZxUM(>*Hr?zu3iflpLe(lmcuot1+JU2;VLeL>((5&N^9V{ zV=7z=SHV@m^Gc3g!m-sy;Hu4l>)~T?)$fGsu@1PNP{8%%09-43;94^T*SZ;SJ(mgB z3qH7BVlA%}!Sz}(Tw4m^>WaYiRxMoJ6>#lhj$V%WC=agwNw@|};QE~B`?tY$s0prb zIG67OT>QRvoydagWIbHJFz#vAbcSu`yl|c8I{(Mq|487PWS#y3xPr_TDS?}2z%49- zTbv1Z;uzerIdCg-;a2J3*6e~?Hw|w6KDZ61;5L`S?HGaET?MzdAMSL{&)f?4#l3J( zE?oLjmE?gaVQ6tzgVG0=S=Mj%OIRnf)y$xcPaT`-MKZ`Fq>Fp#$!A zuBBrF?v2@SZ)UBpbA4T0+cpc_+gayZT=(0I*?j`;ormGxRRnj>Vz_%7;NH!(_BF%3 zrw#6YjvL?_2btru&2WD{1osyeaDU13uQK31sD}Fx#~fz9BMP{W7Q_AB0l1H4!hO63 z?h|=%pLD=I!nK}aZKp@!{(TPIe^kT$=RUYcWpIxzf_q#7_e43||4oD2&-_8w6j8z* zYlnw)@CfF>Bisy+xE~(rF?i%B;ZZJyN4*#x?Ib)Y$0Z!SgcL(9r--Cu`cs^DWci z=~@WSwsY{j#r1Sc;CWXD&wJVM^v;B5_aS)tPQ%l0gJ)n3JfE?y&sV_1`%%ySF?bF# z&e!MRIZ_YLcf4N5nCtjDcz$Yv=NFFU-)DG!XPk3w@chL($7aFvPYXPgjOSzR!Bg-= zjv|f3NK2?hn%IFfi4bYBJxEJBfHchtr0M1&O}`mw#>Ggpv?9&PbI$nz$|JEYy??$Bk%RXNb(tsfX8)3$JM(yp|z&?c3pX%iv98 z`_yK5FHDE`qV@1zd=%bGSHXMvJa}gm!h0oSU3D7X+$wnUy5YTE0`Hu5c;|BNym5Hv z55Rj{54?A9+?@`17jj>|7v74U@ZQTBD%rPq4ZKyW;Jv>e-UpV#Tf;fE4e-{jfOjdu zTW^B5VHUiP9fz0yhRFLw8@x}hh4(4WU0Dn7>UHow&GkLA3*Ki-;ccFTwlJUNOA8i{R}m zhj$Nie^LSOr>ym}DtJGyhWCqBc=xlmgN)7hM_zuG;62K1H~{YtnehI|T23-PKSTAN znt=B=<~y4K?>W|d{xH1%W6bd^cqdrrB3Z+uxNkD!c+AW^93%3O$7GB# z#_kwnY-5Zu#ztm%lbI=T$jn0?GbJ-KGcu2n8OJs3lQ z$L|=elsm^L6hA@&I{O9aYN1#8gvn9dYZ=C}jhe z8#%Vgt&~4cRmwA5-`1~`zhHZ_QX0l8rICC)x&8|0cQfm2*mp`P%`T<1v?=B94N5uG zu9SE8E9G#XQjQK&%0JkLkIDVX1*LpO?$7rsrJKutGUL|?O8FOS&#*85VSfjbl`^!7G;)Z0nv{Qy(G{`V&zYJsIWVmXW3<<|&xcY<)Neg87%{Cb(w#hL0 ztPDn%4Cys8WGy}i zm=`BQ`DhvL;Q9h`{+`;4xLiU^6?yMJBEy5rWmsJ;!y~6?Y^yT>jrE8CptZIB1ulwMB*_M`iesy8qzVM-yZ? z!EEiVGJHBxhLbyF=sY1qSF;TKyEXiCstjNC$Z(o-eLH3NhQ9jO%JAI?8NQFm!1rzq zKi0}{VWtcho0O_nr4FB>)Der78h=5lzqBg#@}N@3IF)+UBBkp%caz8k5c)JHPu_M)I4$)n3Y<1TB(r@N{taa zrCO;swJUXoSE;iGlzQtXrOutD)Z3|1u|=s17Ap1kN0s`Ac%?3>QR*^oFE3N-$`YmW zHwLL|=wa=8rSh6L^~uRfeVSuiRx9;c);xDusejq5)a~@Y0}WxNHd1frHl^-j&R6N- zZ}hb{L8)&HS88*qQvV*O)I)xyzDKUZ$CdhlRjD5?QR+W-EA=CKYoDmpjz*=PJg3yI za;1Jrom0&G^>n5F>!MQ6tW#?LB&B|5QtJ1d|KYq+e#Jo(x&AtDVjmXPblF)~h_D`V++8K=j~ID>jOZ_7 zv&K6cWxT6N#@`RfxQHI^Ns{s2T{2dUkdeRXFy2qx1LS}3n2f6z$+(7dj}o`eDdXd; zdE$VK8)wV-)Oi`79w+0Utuk&MF5@jFBeK+zMrm=OUjPI@BPqRHTe%K-7an^r)M#fJoWbEvfv74MdJ7xUpf{g!S z%^70)!!mwbC*yY7Nu#O(k@-Dv|pT68jqW4myc806$wha5?9Su zTEcLp@g32$YdCl9PNgMVls0jd(ykw`w3LfVGjcn9q0%xAE6v7w2gh6kO3PWQG;dgG zd0Ym`8ER2l#ILmI8KvEDPH9s)SK6es8LYh}S!uT=DXq+_wBOY!ZGNlL7CM!-h~xKg zY}r_)Rk8N|sY-jGLTTJzq^+t}+G@_NA@?JFN?V(tw8sXOwtkY*YPyv6!S+9&MMr{wvJV_ip-_GPWozA`B7G`;?t zp1(P*w0_QiN5AJ9mG)z=(k_taVv9@~Ez|G@nJ(KU6YtlUMsJmAY==zzUA`%?My3f- znXX$U)Ab25rOuVf#HBe=CQFh`)-f_U;$(6ilF8$gDYr}}pFt-71(^c-WeT2^sn94> z(Q=uJi7ly@=|Mf+r0yho-br({}MC)0gvWxBsvCO$7Tt(qtk&sj`-R%m*Z+18DaX?>SWJP$W* zBu_25pAN{hWwA`pdSrTTsZ906y|7EBhOIKaL@&Eo^D6d`M;erVc|_?~ zc$GfZr1Wu3N>3P2dg5}WU%Oc8$xD^~+ghbhu2FibMd_wZO1F$vx^=bE9Ra1g%9QRN zQo5HMd2^J`V`qA}P3grAO21)}(x>(+o$ueKPj6QG&6AaW%UY%1dQj7F z?;v(TywdNYZsi1}FQVS!Zl&KlsPrmwEXRr+N`KI(^wq3=WSi30l4t!?r9VMG8>snI zh0-^1ee)Kj|M{HKpV_YTXM2_Y+-arP&sX~PcBSt)sq_Zo8maR#`I?yHZ%(DZ)}Zv) zFDm{2CM&&#{W-wC9AvIT>D_ab{?AcL z?_I6*KKeO3TIt`ikApjvKIBsRPc!-NCMuPFag@x%MzZ_oWxiy;%$FKu9&teC_`@=f zJRl5nR$=LTu=QMR>=Hfr_6t4mYw8#`Haj>tl3T8 zJr`u&H%sRI)O#}`^INPxI9=w}wK5-`Bs1UtF(0MYKm0O()GG7G>`TXLnLn$M`SXP` zcQ2K>r%&duEHZz+L*~9MGJmsP=Kq|M`8$`)-yf6tNAmu}yu8lJ;HQys$ysHL=u*Zn zYLzjnMHyGDSH{=_%J@~XGJbtg8P{|u<2O5$@!N^Yn4G8#<9KDHb1q{@8McMWV6QXW zTb1D*sf@hM$_SDxyhItr^OaFT?9{Q!n8x*)t;)FNh%)B%Dx-|!6?2tw=M-fuT%e3a zQDrPa)l6lq*r$w#`jt^l?sdbI@i;wfJgAJP6O{2RIqJb@m>CUcl<`uWGF}cS9WKn$TIw#Eb(Jx8M#ZA%a_YCW}Pfo zMP*5tEX&oyWJ#JT%Y+_Tu3IR}B+jL*kj2Pa^9WfoXUk&u$im;cSa?6h;$^LWK$hSv zSqkf9iJX?DWQ{C0cFHo%D$C3YS!Rc1xoxp5w@;9z;+QN8M$2+H7O$6ODK+nplV#;r zSyt2EBfDjJY@#fG9F%3lI9Z;mlx0(&EL*0?@+|r5Hp}vSw=6Htk)?5`EW1X^@+!4o zqpy8#S(+oVyhW}<BrEeF;;L6GbKMSQK2f5~r^vP0qRg#Rm05R4nJ<(nv(c)|U95S9y003P z`8T^VU#n2&>zkDM#(8Bn$0_rziOM`k{dby_+19Vj_sf-elzPXB`IufmsaNL7R%LcE zgmhr#2|FcepZ7)APT{@lCuk`===Ld-9xHr_3QP&(q(3%aqA$H*4Hn|*_j_Q_m^l4eIJRs}1RkHqin5y!RneXYYykUtPOZ%E#O$;PFW+>vc|^CI;Bk3($%ug;Px%7<@tei&M8^vt&_E^ zP1f=avR3Sob$+|73z}tJct+OB{j&ZcPS(Y{WW9Hatb7J%T~6)?R?50+sjLrgm-SKl zTu8$(?V@as?XqQ2GrLx{ob$5f zo|MhENwz$$2N%f}YLhKIC|jgow%B^vZXo}Sn`OJHO15c3vdv7CZI)TK+1#GfE!*5f zvXvc>?RUwt-9g+%8F9+)cIgY?h)QnrUV|HwGm z9;KhhuztL3H3_n9p!cWnr@69iCf}AM*|s*z_S_WN>RJCnyKH<8WP53~Y%kA}?G-L} z`(@*~o^9`8+1_ZBt$BoOZxMIkv}|uXWqYSwws%j-cDPcuBU@!VdO|i{*V{g#=XPQ{ zM#*-vO}5X8<$lI?Dqgl;`a8Wrwm$aen@-vKiT{p#=jO{c#C$)kk?p_jvJYD=`z7aO zzif=`BjaS}cgoIdAN$xE*?-k0`_;!}PueK^Z%)WQu~YWzVb~|TX_f356|!fZmEC?= zcIPSCvzN>6Su4A*O7=jX>;+3@=jUOMvhIeE>{F-9UV1_HnWJQ%wNQ568?n!uFMB!X z?&y&HE`#iqtp5Yom#&nZ=MDB1?Xo{e9}gdq{gEEo*OGHxrR?j8f5IsHlLNBXl85_j z`)1BPGeP!k5!wGTTK4CIvcJGgJBV+f@0ZB;a=+|N<+AUl#%tBGzrIiQH+p4n-Xwbq z>;6t}Z`aBG&QaOhnq)tGQuYrx_Mut!e{lZ9S=l>=$^IF6yU5?o?Nglp+9G@39NE7a zEBk*MWgnO&`#HDlKL%v~i5wT(Qneh( zoST#&M@o_$#zk_N!*W=AG`k$r zx63hOP!2v%aNIIej@bip%o!)gZL{T=%dvS?a+I;=_7igaZj>C{hdJgO<+yXN9CwA} zSV(V`Yvowvmg5gSa@;dfjwO|HEOp7Tj2`c^$Z`L0Iabukv2wW_tH#Rl5IJ~m=XiuX z)va=@-6zL7`u*ccIcj#wv4I(%JSN9eRyk_PziEjan@i-_!un^Z@htgyUFxVK$6uJ^ z`89I9;Fn_uYhFAo$6x8Iv0aXxi{*H^LyjimUOgbk-x}rE!+fvP(;MUE*neIQzLVu> z*(ApSavsFnhvaytN{)Bw{XKFXrq?5-a(vJ&$FW2?{y~0zmmDYPv%Or74woFC4$9F< z|DUt=3wq%`($PcCQ`GMb$Z^^vM;|fYIORBdT8@6|en;&0HFEqwKR?p=+ z95zeNxH371uaNW7Avxnsa`IZr`O85$M_c3^iVVj&cE|v2pYE0WL=ZrczZ(c4ZuZNwt_Q^Syn)A-e zSw2(F3Xhz3kdx1EoeM|E`TKr3?>;Z*;*gw6h+RrMsQXO;)3_aJjTMEvR&IUk9W z^Ur%6_E~`=2FItrK%d^V5e6zB~)GKT3 zpt5)mFDqe*vc?}&7O&H?lG>Fufn&+l%9@BtbCorDld|~CJu7XyviKQiWki*gS*a}B zkg}WxWx3WV%M(^sZnv`hE@cHcA3Ue5!jQ6x4lAp8x3Xf#l{ICwviOWRYg(eRrXNz) z&0~~x3vstrDC@Qr$|~b{`2=NEj8N8mViqPS>u%~TCjY&xT}rO1)5=;gRaq+=l=V=n zvL0r>>NCoEjG5Lm-xITx^(6Uf?aF$Ze18rq>zR|v+O||#e_=nK=hzE%%6hR)S&a*o z^|DD>JmzKXj#Jj2W@Wujj{VeZX1`hvDC_T&mGw3=z0<3#_vqn$a(~dOtYdx3`lwo2 zAD>qi-+jpHT%fEk$o=IpWu2n$uR4|WuYj`7j8)dz5z6Y{p{(zi>3jC^2YNqmQ5Js> znDz5Px#D)oHT;xZm-Wdta+_S2kCE$&WVxC-ur@ zSSeSUNiMTluFSD=*{bAn4woxygIw9j*(;ZKmRxz93(l3RaHd?519C+>xvVXf>*=UmTUN=nm0oyn+f^SY*LHI6pjIPwUbf2h z%0;<$C&=|0>-J5SYk$97EtBN>dxKnWGjHn}x!$9%BNn-ij*;uwak)NXhW2>5I%doD z8NGM4%Jn6C@lUT@z4YA|kn7Azx%%mQ;Iv%dvzF)XuAl1Vy0}W&!v>Xo$r)vjIHc@f zBrE&!S;`(0Q1(^Bl+EK`_SNH*eNDfzf8$m5M7Of9k5{&Vb7@9po1MzG996cRHCe}% zoztpp?i?V07D|;5TZuKjBZk4jjjw$2nWj_cbZInLG!Qm3^>A+3(P2+g@cK zS)lBrtUJz{6T6lDNsqEm)++mR>U1;5KbgOmHUFws_L*K~_m?XByUoh}p;6gC4k?@a z8h2c&+{2H{eOa>HBg1lEUM=^S({hjNmV11k+)2yjPL7lNw;SZ19Fp5`PHq!xGn(bL zEt1>G?d&OXd$!B%TO)V=1i3?Ve#9#GWAw28gxnj3%gt+R_ojt% z{~6D2le=!I+|Q4Y`$do3{JpUIl?J(YSINDXdT(5m`^^El50uIMHvPA{8 zK2GiSPPsp$?iW3BvtRD7XUqNX4!Qrs4Brv^1LuEY-v6Fa4xf+bjIb*w-mILFW0W(h zS~*utSI(6il{3zuoL@VYbM-9c@VQFPgbm8ME~1=C$CP6zRgQ_c%p~R5Yn9`&D2K<@ zoV+UKU6cv?9j6pdC+aZouij^99T-iyfL@ib@J3FXYBCco=Bw+57RTa$9;?NLrS zwJJDwr&T$3H7e)#)LOJsIrq@V(vWhh=xO;W(^adS9&Ypfnw-;($~i-> z|14I{0CDH&_s3-A{M4zOpV!J0Hzd!93VD7pOP*2n^6=S}XY5#cesxBkt2fJYZAhN$ z#>g{ipFF&m;YlAQk7a{A_F?j5EtSW8LY~}n@&r!HQ^>hUuRQ!-d!}xaXL`9jx0K1l zdybylg7VB;F3;_y@>I0RGk;K?yU1B-lxGp^7YF27(k{=k3G(o}?YV!4JS!K-v#Lp+ zhpF|*5_#6HmFJHo@^Js@*|1oijU20;F3%>`@EMio8EQVu^*WC{&%5P$f&2|E^1O6h zo?X;z;&k6E=GE1J5 z26;Z;C{K64JYUh{Y0mw-PM)({r{VNx9x3<>qZuZa%U6 zuICnomCI|h+#9-;d(%qgPB$v|W^&D<#;tM6y^S?xBa~a-sN6diD|Z3s7nUfulJkG) zQtpz7a+j@E?(zl7eE_S6Beh>9_SL=0ea)-fHwKjZ7PsGCrQCNnEB6S!A04LL50@+V9~|ScDEH&D z%I#oJPO`p}p1VBC?Y1cQ%R%M-vs<~mr<8kou5$bKDVOhh=bj};|2E|gv@7@fMCJa# zzWhio-rLQ+I8xqWtK_|8vApcDH$Euu$hq?J{;rqT!rm*#%6k>Je|1pa@tjZGB=5Cu zd6S9xZHc^-{qm+(%A0mXUUR9unG@x;EtJ<8C$GyXulu6Bx$EWi&zCo!^#w=eEh0~G zzq~iFmgnEz(k1fF7$xt`P4dp>_HC>wJ1H-ZS>E|&^4_&t-pWPt{(*H%F38KidzVxH z0j@tZT;7L|%Uj(i?^%H++$Nml@>yMZ0{X_R2SArhMZ@$(K+f zAJ2n**KCq+!W{Xo+bG}l0r^sn$(Lr8&zvY?OlLB1K}zPVq%*}LVtEiB*d!{n>r@=p3#SSjD#>*ZTAMZSBR zo!x1mSAr?$%Xbg6us>G7G6 ze9x|vZ`(Qf{xVv==O@ayBTl}C&GNlOotM4xy|PNaS8L?kb6mdH>32W+KzKjAyNP`+aqf3p5-r+j^L3&~}<-amc{&5!hf6ehkOqeMDb&KVnbXx2=|+&rd-7Np_xV(eQJ0tSnbwK_~@-3p~;zRQDo|=DImHhYB$iIU8 zE5q_XG++KTW96@ImH#o$|8c7PkDro%!&dogC&<5Pzx=!>?|(KR|8s5fKTpp)&dUGS zF8OyR$F{UhaXrpB8k^0zd}f1pDCgY3oI^v-)c{&!i= zeYF35)*oS(qh|R(+${e;%H;pZDgTLM@_$0jj&}J^?v=muxcps<QIl{ej^yqRsvyM=mlxIT{_%l9hpjwI#Xd4d1#zFB#9uU6jT66Gz~t-NK2 zl(#&jyaxixTNPB^!!wol2R^XaB3QTBK;5w@U z{Qd;k|A3Lp^l=Jgv?yR(s(>@9fNO^Wo^1;FkUvU+!XyR4a}|hiJ-SGNl4J#@R4H&1 zIj2okV8&hrW{p+gmQxDcO1`-h6)59edAkA?^l_(AfxAo!RC0XLkOE7HS>{sUzGekh zQ13xvSJT5I@d`Xzt-v396{wl5z>}=`Q<(yr;}qDkTY+b%D^SOp=gIfNfC7JYD!}Ke zfn9Y9yvpr8M-+H{y8`=HDDWoxa^ScEZ%y75HhC0vGowUtP){F{5P7MEO$|D1U0d@~7=k{>%-^pVg=QTNf&S?iA(UK2iA<)VtHE{DpIre>eI5 za8dd9lC!Ez`S;f<|ACXrf2c(HYmO;@Ej8BDSItr7KY3dDwMUfyH1)P5DF4~5%CF3fdPb=-RFz-;)XYhzSl; zuyB%s5iVmM1*cRhcoTW1uT${m6AIpXO2K)=l?N2OW0Qh+?NadW5(V$ss^Btm@Vqa$ zGN|BclY);_Dadn=;NztVZeU&QC_sZ@tW$x{sDixHD#$;sf`UUTC?qBlRzb90 z1tqNI-&w)b6Dla>`t&Xp+`L8ww{UI_{mfsfFq6+x;R&B>H{b&``tX9E>eJa>^Kn1mpDtJ0h1%D>j zR(h*rZ9OqNsPot5D%iPG1x>Xo*h5cyn^mxnzW;Bp3f?6C0I_d(sNmhPDtJFZ1xGpd zk2V#29It|onJVbySob&;oLZuS)5M->Rl&F9|E@#@gHaXmIYz;c^mAdP3NB7jXxM;4 zmzWj0v{s?Z4k$D-QK3;5g{~N;(3PDEja#VDufqym<5lR|JqlenNg?(;WN252*LxxJ zc7-xc3fYqta@Hx7eOMt+nL^%vh4Pve3T{&<>{O_jwI$;ensQX3($Nads8s0YvkKiB zuh3lT-F{x7J7y`gV1+^pFDi65weMM_&@#V5_q8gtV!lEvS@Y07h1O83`hr4_ZB}Ug zNQIsluF%E_3e_G^Xfx}cA!Zx7>P{)NeXl|<_9*nyL4|e^vzxkmx!h0RE%g2OtqL8Q zqR_h`h2HB`=mX|FM!z4?Q+ugGpVD_HIl9Lv^iT4C9Z{&SO`)^QIY3|MaDIzIKaWu1 z@OTx*SF7;y(JH($pu(%Rsqk0pR5;$K!o;;IOxmi#-vm`S(WSykeJV_uqQcZODl~Pf zFk`9;trJz~7^cFkCKb9*sW6v#e}@WroG%Pjsj!I4XsHTI&Z=-K`KP&6IHN&@w?tKV zYl{l!?o;9IT)%_*cOF*Z?>DIM4-pkEv8u3YoC=p8QsD!&DqKa*HI*uSbd?I%HLH-v z^}?r)sgQq@g@5MUv#V8DH&cb%XRGkVWED1&dl!8*b*b=g^u3q9_U}?*OSuaF-lM{I zSl4z^g*@ji{BW`gk8f6CJNZwVRrqQ04Uqvtoc{U+BBv?zQiLE*LMD)O0C6bP%R zV5Ew|2`b`y??ol7pGy8|=TvlaR7JN=QPJF0Dyksgox4=@durT0N=1KIuA+MbD!MOG zMJwu5v}&e`R&Q0&BZpM9c8iMsxL!pyn^m-t_&*W5xl~14>G`=$DtexCFLJ$cor-o@ zRrG3)ie5XfqW#q>YMHMh-eWClBi|AFKXy<>A2VZzNk#lUQc>3i6@59NqEpoTx?e?o zLn`{_n2Np~rXs$3SM&pYUtkY@UZlt+35txUS7c;~BA4$~aRJ`=OikFX6@yabKet3k6tI5IZ!eU+% z7T0#Gcyo)2pEaoXFT`!1MbVo#D0*wMqVw>(V~Q?Vtms1O@OnAQdu-9Fct!6c&;6$rT}kd$ zU5Y+@P|-*06kRt;(Z{Wd)-)@+VU?mA_bXc4r|9Mbif%1ev~ISd+o|_rf})MA*=11l zRr0)cR?#=kDf;FnMgKlg(L)OreYZ!^_cts0A$dPqr|2i+6g_!V(XM($dukQ!ZBq2# ziHiQGUD5AdivHND=zk|GHf)b#!!3%9IHTCea>YikP>kmRv4mR15*rnp(4*LIBZ{RQ zQp_}7F-w(V_LGXa1B!Y26!R}uEYAdP=gmYV)?f>o&Linc2jAud8(gt!QC5#l1m6%$uXTrqLQ z#1#|AzsFcHamBcyxRqh5@9G3v#rS3*5r z>&8l`S3hat;RzkfJ>XlHhgnB%F#7d}l1NCm8-VM~dfqHxn6}y3YH&E{e>fJ!S z8>ly>4tsF~Js48##?hDrH>RKhE3gp_Xu%2eDK>Q&5@13AGf{~(*n%dsq7ws(-9(+6 zsB;r_crF?%rA{ezN~u#yol@$QQm2$U{7qzx_r+qR)R{&d-j9q;qs}zyOry>;>hRsn z*fi=)qs}zyOry>;>P(Nv1jS|$H-oqt#LXaX25~(9jm;o#25~cpn?c+R;${#xlen40 z&9ozexmb$zsK-7W#VMRujPC-(Zk`MerlMc5StF1HE5ewAC0K_#>;?NUi+z~IKHS1S z+`>NG!am$G1r=CfTD-TjygXYSD-TXvZ1F z=EPw<%m`u@7NHtju^VmZ!k}WejYKk>h@uQts8MV#x#yC5F1hEDdmg#xk$WDw=aG9J zx#y949=Yd{dmg#xk$WDw=aIXN+-2l0BX=3O%g9|u?lN+hZO48bLoY5Ub~|ym6IV`L zIdSF0l@nJ^Tsd*&#FZ0QPFy*0<;0Z}_q(w$z>88Wz$$FQP8>uB&MHg^HlN<+(;J^N#OBl6e0rNt zZ}aJGKE2JSxB2vTC%y6hdF)PlyYmQoFr*mYuZ}I41UIIj0xPf)4QRm$^eJ}NFeJc) z0A`{RYp?}PXhkOm6k8aN35xxGGCY`y`B;fsG~xi-!5&ny2bJtWC3{fG9#paid~On} ztj1RCMjN`o9^B0y+|3^FoFjHOdvG^wnA`aN8~=YQ9S6kEccE@4lXu%~=Z5nED$71)Rd zwBQ8#6uWmA5@13AGr^wT%bwoLp5EJpR&-)Ov8C~#-csrMf(*GU_d( z-ZJVfquw&=Eu-Et>Mf&Q74@p9S4F)l>Qzy%ih5PltD;^N^{S{>MZGHO-ABFqR-zV- zIDmGXQEYh}#>0#tW?>Pku@$?~hAs>$cK=8u!-*)$P=y+7$9^1BY{gn^!yX()H_j>c zz$i?F3neJWa%{j3G~+l<m|3T(|kog~E z{#DGsY69$tU@n$oJ?gO!M{x@06?6{@`*94txS-g^u`s}kQY^qKY{E_)M2BLv!;uIJLYR%kSc`4ggTv^?ImP}o3KQW% z3Cgh?8?Xb-IF8e}sMw})Fv5@Niaosq>rjWiID#GwDaPM8#5PX?d$^fB++2Yb*oX$S z-~{><`|~g)z=Qy1f<6568f-xmS`~XH4&z})5VNod)!2&NXhRnU727%z$#5cyGE|`k z+p!Y7o_zJ>t0!MQ`Rd76PriEc)swHDeD&nx@8)99 zlaKFS#-1nN^W=M;e9x2bdGb9^zUTMgFuHM0vF)QU5iXP{_QGBqK@Wx$+c6rG;KmeG zU1{HgSzFwiPSLmyWzMAN(iN2cXtBJmv z=&Omoni{}fHnEpY?B%QM<*V%Ft0n|66O~wlEoee3Ix(Qw?s!a4>~AF~$8v1I4m9I9 zPUE6td&a>C_I?k0zh@y5Q)5Kf|BvDZc*308zL2TQ=-zsBD0J*(L3!;uIJLYR%k zSc`4ggTv^?ImPyk!bG@0zx(KSAN}s5-+lDEkAC;jFP~+^_R;Sf^!o<=zCpkHqbNfa zYOo#qaSXk1hpBm(nun=*n3{*Fd6=4qsrf!N->2sL)O??s?^E-A zYQ9g+_o?|lHQ%S^`_w!_%_G!2Ld_%8JVMP6i2s224~YMO_z#HxfcOuH|A6=pi2s22 z4~XZxZLy=oA0_@M@kfb2O3z2vU<;biicSnD_F+6Gz>Wy!Dt2rv4Dg~93$O~CuoDN- zfwPMJV>l9FK?t+47;CW&dvF-tIH%b0QJ4r9N>HxYM_m7i>mU8^`f_Z*4m9I9PUE6t zC&s}DKc-_LR%0`E;Sf%uU$KuzAPH84F$YVqPO_rEA@hP`I<@TrC z{`7yh*_%(`*D)}ILUsTWIs-Bzz#IyIM|Pq?8j&9 z$7k%vXY9vk?8j&9$7k$EC$n`jTPL%1GFvCJbuwEgvvo3CC$n`j+vm*oIkSDvY@ajR z=gjswvwhBNpEKL%%=S66ea>uM%+|$hUCh$OEM3gf#VlRS@&$Fipw1W6`GPuMQ0EKk zd_kQrsMAfIZt8SXr<*$6)aj;9H+8zH(@mXj>U2}*OX_?{oiC~LC3U`}&X?5rk~&|q zXJ4{sJ_!{9FsNAHNF>9FD9TWU8f?dY978WI zDE9B2IEW6MRqV`gB*KCaW`m!>8GZ(5wqXwrqZ{WG`(_j-!i5r)V>vcp2byslr*ToS zvzxIChj0@8iv4ElZ8}{HZ*wgRNDRz!MJ;$D& zbD;#xaE=+yF~d1#IL8d>uC3i2XPTZcIT1R$wC<(1H`_Q|$aOB*26Ki2sTBpNRj7_@9XXiTIz0|B3jYi2sTB zpNRj7_zT2eApQdJ7l^+w6O~wlEoee3Ix(Qwf8#L$c0_Or=M}p+29x2zRLsXp)S?jw z(2g^T{Tzq!Fe8XrScGb9#cs5r3xg^dHWJBjVl#H(5Kf|BB^rSwSP{k?EWtX|VK0uL z2SX}}8;wbDV+ty;0vpkQ7MwtzN-kN6S~TJS+HpoD!{aa>W&|+{i%^ZN*o`)Hff+7k zhD({@Qf9a`iZWE82HUY8$5b*Rg1K0V^{B@_9K|V|SIK2#Fc}_9#eC4`W%PL&eO^YN zm(k~C^chc|@$?x_pYik=PoMGh8Bd?_^!W?+>lbsd1nW?Ty*Pp%45?(~XiS0|Q^0aS$CitCDfUkq8Syn2p6)i*4A0!|292mHcWH_TmV7Fr<=%(U=4`rl0~V zun`St!3p%KFa9xN~Etu`bwm)MEXjkuSEJvq_0H!N~Etu`bwm)Yv}75`nra`uAx>EwUVfnM6D!h zB~dGhT1nJOqE-^MlBktLtt4t)ORa0EbuG27rPj67x|UkkQtMi3T}!QNsdX*2CQxev zwI)z&0(_!{9FsPE`kw}IUQIw$yHQ0{*IEG$aP|0;;VSpEV5FI$HlHU$TA}k1DHWp(owqXwrqZ{W`GHDbh!i5r) ztK@q2<9hbvdiLY`jc7m%PM}XElZS!*n9P1mW3!2c1P7J6dB_0!CM+9@R z6zfs15(6_Bn8Cmd24+ZQhE!%qWrkE{NM(jpW=Lg*RAxwJhE!%qWrkE{FfxOY8H~(e zWCkNM7?)!McAy!@aT*s@l16W7^p-|%CVDf`n~B~`^k$+r6TO+}%|vgeeK?9!IIoiQ zF_;VwreZ!;q85!ffOecwi8&7A(S|Mzsw871lHo)YWvD_8wqrkzp%)iaVi^kqyeP#2 ztimSj#6fg`eamFuGTFDx2DIP=`cz^ah6I=pz)VzP4Yr^O?1_~ ztVccefjzOYCpPxPPOo-)b3(5r)99rWs?S0}wXEeK&Y z7Go{8VGjJnI>Rv zmZlUbiz#JTiY!G$N-@i_7}0G;07O znape!vVwAI*-sm%xe}t;gBi;-B9^e4jUl?vocqkV&z$?rxzC*Y%(>5;`^>q|ocqkV z&zx*?vdzghC)=ECbF$6JHYa;02RY7JZiMIu!(5oRw6voda~x$F&g68OnI3 zlgColvWa?H=;nNga{DuaG_qJgF=cFJA4fxU|HTkRDU4zY*({=j3bxTiJH1>DQDO+= z$RMVWHB_;SLv(R2L~%ccGl`iYO1eqXO_Ceg$w7{D7B|UrlRP)cbCbMzEMpxtG;o*` z$o+ua56Jz1+z-h8fZPwr{eavL$o+uabFYW!!Bi$NgSiw@N;SJ_rH2b4nm2%vOlCF< zSwT6q?5B;>TnW)%4`wXWh(a`9=J_(umwCR-^JShd^L&}-%lwec56S$H%n!-@kjxLs z{E*BK$^4Ma54F?F)etQh!Z*>Wxx_7&xWy8;SmG8xbc-Ll#Sh)0a3Yz^V;SqHp@GAk z;9`g#OJNjK$Yv2GRIrUE+UezLh?Wjv92vwEvL-~2oANvPnh?Fc~6-4gn3U?v5P}=aV|v5`Z1hIA^K4*`)T7eS3buZC#l5XO-~Od)HiVi$+#;#`RS_9T}=v}z!unMw}%tfZ3d9H4_fu7&8C zp^Rrbc`Riuo2aLSZqA3ucUvOgZHauhCGs7W$ahqtAG^tq-NbiPq941-kFSSlO)3+Z z!CZ=PlQq@srj;Hpgy`=EFp|m4W+5vmrKmT9w0n`PQ8(`K1A%d}ah8kuTjs*$Ni zrW%=QWO~_uU;gsHvb`+Z%d)*J+sm@OEZY{@w#c?cwk`8m#yVJUzHDMZ@_GMcI6kk3jg+0Fqv=;K<5{^wA}Go3t^ zvX)KM(?U1rL$tj=BS;I;j;q}iYa3&`#8!eE{Ev# zL5v}tTnbpl2I^?0lQUco(e6~_+b!R2`S!@SN4`Ds?U8Sfe0${EBi|nR_Q<#A2q(D| zqK1KtW-2-4vyw`-bAS%|xE7*+92%lVpKtW}MxSr=`9_~_^!Y}gZ}j;_pKtW}MxWp7 z^LxiLojjJZmQB>tLO16_w68xSNF$2{6o=^7wd|*j(_9JB{=tl88WBra%|>=|kmH=? zMu>hhjEQ72k7cZ*h6WCEf{P()^4})^eItcYOd*>^lu*GonrNq&t06itgmGjLQ^*>s z*u^2bI2WSd_G37c(5G3SW__CVY1XG%pJsiU^=a0pS)XQon)PYc=S_Xy)aOlo-qhz! zecsgPO?}?f=S_Xy)ZhJvqN9Tu%QW2O zsJk3p%|>=|kmH=?Mu^@ShP%AuF7LR@JMPlvZJW1k-nMz$=53p|ZQizd+vaVXx4-lD zci#Ta+uwQnJ8ysIroXG9fy12OVu;#P7{wH_SwsmHAv&htG5wC|cTB%y`W@5nn109f zJEq?;{f_C^p_^yndGnh*e zrBt(H+9_PuZ4`}VzW-~0A;+1F)XmwjFKb=lWtUzdGd_I26U zWnY(lUG{xo-v{=6VBZJ!ePG`Q_I+Sq_XOh+p_}s|I@O;Mq>;q}iYW`xzs_el z>)AphM>xr)5S<>#XyiIA*J-&<%XM0=({i1b>$F^_ezdp!u&T=C}=Z7(oOy;qSb=1(nVNP%{ME@s+QA{D5 zMU+s%HkxP;(S>|gQpt7>&_N&9LiB%!GM?$=v6QuJqMjDIIUk~n{TV?TSuCKKGPbfW zME|djW;!{;^$=Z3WdbvpOA)11vzu0WxDcX04qzmcnax60P);rTY2!3kLiD*zpUd>Q zOrOj2xlEtS^tnu*%k;TSpC9EEmqT=A5MxLumjYI?0okv}ens{xvR{$?PqP0>_CLw~ zC)ux#W-2-4vl6$xx}5`b(8sk9{rgbHGo3t^vX)KM(?U0HdrgmPdR)`vnjY8mxTeRS zz5lcKfA;>*-v8PAKYRaY@Bi%mpS}OH_t(9@?)`P|uX}&p`|I9ccZcilaNQlQyTkQU zTn^C}?(l^>eBlmXxWgCj@P#|vklFWMBHw$7ZrFLl&Kq|6-b>_rFOl!PM85YD`QA(9 zdoPjiy+nVp)AwE?-+PJvV&`A%{EMA`vD5cnBHw$7eD5XEZxCZhCzpbd2wz&o2I^?0 zlQUcoiTq zZwGoi(A$CDe$CsjdHb~tVhUM96}vb@7w1A^P(OwqE3}Os5G;o*` zTnvd}DU4zY*({=j3bxTiJH1>DiEj>J92vwEvW6;lafmL?g~V`KhRZTsmf^Atm*uZy z`72reDxF*kSj7hFXr_}hTn~v6sZ3x7b19;fYIf5~4;Mn>KON*aXSop)BZo1OOy;qS zb-2SwcNpmoBi&)7JABI>zBP&|WV478DsYEyxx=^I;al$TEq55@4x>(TDI{(g$Y`dL zLq031WIG4wppR=IF?uNDnNA){S<5EsX`!3*A@QI4GlH~`7&DT|%w{1gD5sYFv~ij% zA@S|OjAa@TOIXcDc5;y8oaIJHj2*^AGMUG+khoQ+TXnisr(1QpRi|5Zx>cuJb-Goj zTXnisr*S%s(`lSe<8&IQ(>R^R=`>EKaXO9DX`D{C>2#Y;x9N0S77Hj2iSd3t-mk}h z`Rg*avX7&j;&MpbK8P`-lS=`s*gzf4baIC4Au%D93Cv(FMU+w<65lCg4OQ&o5M7)L ziHZFf&Ln0spXID)3ymD%B$qY$22+q`(aLS zF(fil7{wH_SwsmkWyq8vQ-(|#GG)kgw@i1-bhk`*%XGI)cgu9QOn1w4w@i1-bhk{? zWtuM2bZ@77dylvGczchx_jr4cxA%B^kGJ=DdylvGczchxGrXPQ?F@Zp=rco~8T$BM zOTzbB628}xn4!-MeP&z=3Eyi;_+CrG_gWJ7p5{tOWDaI5(}-BYYBsWygB<59H$vij z!l|I@=sHK&Il9i#b&jrcbe*GXuCBSd=IWZOYp$;MdwajP_j`N4xA%K{ zzqj{$d%w5$dwajPk++ezk++ezk++dMMeEr@BS$#NrI1JrWHeLBA)l2Y5&QGlpU3_@ z_UExbkH7r$O15(VH;?5$##Z)mlv7*|iMfLqLpr$>u!;@T(M%_2xE>O|glp zh}@6J{fOL;$o+`ikI4Oq+>glph}@6Jy-4mwaxap5k=%>qUbKcPc5#R<&V|I^^kX=a zm>ClJMU+y_Zd&Q#LP#tgz(^)Dn}xW?V)t0=9*f;$aT}+(5)uW28H;-qxJQ9|6u3u$ zdla}wfqN_&$Y`dLLq031WIG4wppR=I@x!5vXF7Q-Wi6Yir-g3LheTn2Mvz7p3qs;C zpMT8fAM^RgeEu$hCL<@!CT-;?@1so#_OJ*nT5`aP-NllncW-;?@1 zso#_O73){5U$K70`W5R}tY5Ky#rhTN=ihEg__tdUE2famB1))W8%?y+%hiy0Y6#=V zAf}KtRI!Ugba5^uO8POJNz7z^NIdQHPy77SKL51OKkf5R`~1^BztZPd`us|tU+MEJ zeSYO~*0Y61j&PDoA@R2Z8O>C3$Y&*$Z0A5oJfqt)x;>-YGrB#a+cUa7quVpOJ)_$* zx;>-YYTZ`rwpzEYng=`j4f*kARSTDzVIo8XuUXJJGcwUa@<#=9>=jC`_j_2igUXJJG zcwUa@*fz z>GF~;FX{4GF~;FX{4?uE}L}Ow314;bAXPJ z_{HUrs2;=^(#fTORcxS+W;!{;^^n+{$^>RGmm*53W;d<$a3LgW+^)v$YTT~I?OvWn zgq!$YO5$ZV@x7FU@1-POc9WOg#P?DXTZS=_Oy;qSb=1(nVNP%{B>o|VQA{D5MU+qx z5?dQNg1c;Wmsi~76?b`MDml2zEAH}&yS(BquNtLO16_ z;?@4hvrV3D@@$i5n>^d(*(T36dA4n%iFSIq8WR6=2;;~grjRvMv5P}=aV{jb_hUGd zm>Ci~WZNOz4%v3dwnMfZvh9#Y;_|@BZ~zTQ^r>Iaglv2%ZTIu0JNW4CPkxXVb3t2%qwd|*j(_9IO-Gdn$ z5_@FXBg-CH_Q|H@$+SDQ;Y91{BnF@|(FsH2%q&Tu^>ev`@sW-yl`N~vZy zt@LmqB$@^=lF1?QhWu~H|Azc;$p41?Z^-|K{BOwrhWu~He?a~N@*j}@fcyvKKOp}B z`47l{K>h>rA2=TpzwOTm(#T=~#gv6aa|4Gt!NrhxGlfx1A)7^%P{B5uXs4H}A#rdB z^jv91$ zONX~~cuR*C9a?l~(cx{m-5 z<^E^6|9Lo*n8|#Wvz{$9a)gs1@h`a)u!;@T(M%_2xE>NmQklRE=2Ao{)$FE~9xjB$ z{~EwZCNrCbte~9QkT`mn6I=|5cTyOI-tT0yh!Wi39XEK#4c>8scii9|H)wN%wsB+- zQ^*?Jpv?{1+@Q@3+T7rGZty!d@V${lyZP z@>t4RHc?Lt-JB1J&-ybWB+iwwm3;q}igBAiy3HTm=8tak$5UJmiOYi+Lpr$> zunM=i;?I2VB5}o^UGZmEzWg)y^1X}175DPJi-hl8B>v=He{!!s&0sD?lv2%ZTIu0J zNL(GjNG3Czg{+`FB>w$MNL(AtSf&xNgwkt3YsQiul(4Dna? zagA0+=E`EQc{rqN6#hkRC2 z$#xEe`0K0L$W9J&oU_~r@sMFmB$Ih8V;wa#aF`QZ4Do+VVH8uyW)US+u#G0#LwvJ$ zH+y%pcQ<>N>RqaLsote}m+D=rcd6c`dY9^5s&}cqTn+IzhA@r{VhUM96}vb@7w1Ae ztY3(~xrIiKaFREyALwQQoE7P>hf z;{Q}cDb?(zl^!mHc;o;^GMU*dWCi8avY$3ib0x&z8q8Rx5wV2TY-A?~Lwt)Kx9D+; z9=GUmiypV=;X4Jf?-azh=y8i4x9BlikI{OJ)?>6DqxBfA$7nr9>oHo7(Rz&5<3IOj z1ZiZkfZ`B;Tb^&r^KE&2Um*5^CkKrZl;qnTo3Vo zO=SWzm`f3*RI{5_dbkkcDFYbEWM;FF6_iuUe%d(Al@L!|LC3$Y&*$Z07(S^r6Q+dfcPOJ$l@u$31$?h$&0X)cmFZrY?v?3YneLS-Q>ILrGG)q?DO09QnKEU{l<9kA zY-Jxuafk1@!%TOW=?*i~$)$i*Y@m*2IyuAj5Pv_F3Cv(FMU+y_Zd&OHahCa6=Fc*J zmie>HpJo0m^Jkeq%luj9&oY0O`LoQQW&UjQXPZCU{MqKuHh;GHv(2Av{%rGSn?L(P zi0>P~NG9WLwzt{dW_z3MZML`B-e!B7?QOQV+1_S*`vY%(;O!5*{lRP&vVwAI*-sm% zxf0@>!Hi`ZQHbZ*F~^QMcFeJ3jvaICm}AErJLcGtYe%jfxpw5*k!we;9l3Vo+L3EV zt{u5{y#R7^cV=MbO8scOpXSg2Xyi_KjbDqw5I_K$}r*odpc{=CmoTu{xIzOQE1C!DD z0i7Sv`2n3D(D?zKAJF*$ogdJ7uFi9Ho-5mfvOOr(_DBFXwJt*6QvOOr< zgQvJ0;(3D@Lpr$>u!;@T(TpDR^q8l|U+eMLdi=E>^XIdi^=zS$Bb?+?h#wlrXr_`w zJ}aqYI|t~Xk82@bFqH93Cy%A9WfS!wepug!^xESI^DU4!Di2r6B8N?K_hAMV(h%U~BIKLmmnZ!)oCEs20*RzF2 zj&PDoAzth*i``|hyDWB>#qP4$T?+iS;LHEIPl5XsxKDxm_;)E{|1L%R=upNpojly< zQTKV&eI9k6M_cITe2ACyX9Q_vv4CRA*vh^T|In@<+Vw-berVSZ?fRizKeVgRu0p#C z?JBgZ(5^ze3hgSitI)1Oy9(`k%&y1mdd#lJ?0U?u$LxB{uE*?p%&y0dhIpyZKJK%R z`|RUB`?$|O?z4~k?BhQBxX(WBvyc1i)AphM>xr)5U&`>=ny~U z-BaE@<=s=>J>}g~-aX~rQ{Fx0-BaE@<=s=>m3UX;UCC5($Y&*$Z07(S^l>f3PY-20 z)5+sTh*u6{BALu%8SAK_fy12OVu=4Xg;7i)n?;o1&VRd&Cfe!cYKT`2VH_F6A$~^A zXXJcF&S&I&M$TvCd`8Y^FQ$k#pLq031WIG4wppR=I{^?N0Go3t^vX)KM(?U1rLtNgU z5u}mD0*WbPYlvSk_XTrbFt@_o3Ue#WtuVL3+zN9m%&joD!rTgTE6jb-+!xJ#(cBl! zebL+(&3)0_7tMWfA4fUGFsH2%q&Tu`%8&a9T4CYcqDb?(z zl^!mH*mnqG-yw*7hamp>Y! z>i&!%jjRxF)^W3rn|0i*qkpp^_HS0i{>_TGM#mZ*Yjmv9u|~%l9cy%~(XmFy8XaqN ztkLmh9beY*WgTDE@ns!f*70Q>U)J$u9k(2!i*q6Vhkgua5;K|4a@MnjMvib2ciHML zTSqgM9P(L7CEGbb2YtB9EACP&bFIv^GS|vnD|4;PwKCVr{Hn~a%KWO#ugd(Y%&*G) zs?4v-{Hn~ap5S7Lx1}(ODP*&V5-Qk6Q;4^lwcV`kW^FfXyII@K+HTf%v$mVH-K-sE z?J#SHSv$Fsq-&&{$(H6LcDV*S>{y^CA9Ke@2i-77Hk*jIHeBD5tm_;$4G6{F;8R>Gzs`uj%)iey{2Gntre8 z_nLmM=~u5`y?*uj)$3QUU%h_y`qk@KuV1}>_4?K8_qu+s>-V~Tuj}`^ey{7ddkL%A z$W9J&oU_~r@t$GGv`3~rGVPIRk4$@H+9T5*nfA!EN2Ugu8f0pasX?X&nHpqjkf}kY z2ALXDnZOL@QbZ}$?533-E`)gR07f#I*(_uQ<pk1PR?*W#J^3&y?*Onzjd$Q zy4P<@sb+VGn|;37=bL@L+2`N%`8R$3O`m_$=il`CH+}w1pMTTm-)yCa3n4x@fRRjQ zHVaunIkoJkjniBS@jng5o`16EkUfX&Ib_cvdk)!i$eu&?_%|hD|E5HI$R7WuMEsUL zZ`t#fJ#X3bmOXFT^Oikt+4Gh?Z`t#fJ#X35Vo%FhriJ+JOy;qSb=2VgZ@d57C%72m z))YoDg=`j4LIvAsqMcr@hWMX{Fpdmj3Ry!{h!6YqVZT27<*#>fh%U~B_+R=loJq`N zKFe9p78*IiNiK!>$UsIjl^pU}NhRAk5aOd*ETEV&wz7|-oZ@nb-xm(yM68UwcFQjU%P$n_O;vBZr?Hcj@ft2zGL}voWA=5}*I{3WeI537*ws6uEYpZs!fG~#xJ$P#-MVz^(ydFkF5S9x>(cE5-9FIm z1KmE*?E~FD(Cq`=KG5w0-9FIm1KmE*ty{Nl-MaPY)}vdGZaw^)53zsqA?`7!$DAH> zdd%rDr^lQgb9&6_F{j6zkIebVoR7@;$efSN`N*7)%=yTikKE%U_xQ*?PPoU3kxa%t zPPoSj_c-AmCo_mCWDQm9;t*Y&3-KTNF`P-vWIoGT&lVav!bvWL_|!l~GnE|jSxIGx zPfsD6MU+s%HkxRsm#ZQEcnIT=?_>EsmhWTvK9=ue`97BKWBERouUEca`FiE+m9JO6 zUio_E>&vBpRcxS+W;!{;^$>rW$^>RGmm*53W;d<$a3REJ1~8Jz%w{1gD5o~WXLUQP z+gaVt>ULJQv$~zt?W}HRb^A=W&vg4tx6gF@Ot;T;`%Jgbbo)%V&vg4tw{yCk)9svY z=X5)#+d19N>2_{Qh|jO2lI`2P%LJk!ZzDQnq8JuP%|KExOLGlDd-SU@pl zY-JxuLwxZ|r??#A|2K#+q?1bltJpvt&2(~x>mk0B$^>RGmm*53W;d<$a3REh9KgsB zU-tXUe*d}OfA066Pi8g?SwT6q?5B;>TnX`&!Hi`Z5ldLjMs{+LES|1{)YjK zWHPfu@+;1X0eKNC;hRLS;`{JQsF_x|hNf8G19d;fLszwZ6ly&vNJ5buY0 zKg4_gpZ}!)&wp}=_d~oNa)1u{xE7NCaVX=NP995H%O>hW^5$`5py$nc-mK@%dfu$( z&3fLf=goSi>Y1u%s-CHOrplQrXR4g3a;D0eDrc&ksd9cp&Tq*14LQFd=Qrg1hMeD& z=bQ3;Q=V_i^G$iaDbF|M`KCPIY@wU;AvwH1BS<5Q1r$@pR`zj}Q(O+ozZ%3C(#fSD zBuBJynkymsp9V9QX+$hxH5=KnK@A$vR5bQL>Jb^%hxgk@Xf?Z;|yDS#Mdz2I^?0lQUco$J z($CYAex9DZ)h%vyi(B2|R=2p-EpBb#FekVelH*bs#T2qxLI z!Hi`Z5ldLjMs|ke9X^xhGig4P<}+zNljbvNK9lA%X+D#7kmH=?Mo9jbVN4{Gc`Rcc zH8gOT6I=|*$tk$qWVf5_cK@}63bxTiJH1>D$tgn^M+Py4xZ4zWo8oR$+-*u1=R)$o z^$MgLF4YcY|~{ zNOyzujqJn?(%m544bt7`vI7usdOQ!tR9K3A+<^C+tqx z9orq-9orq-9orq-9orq-otH)y3n-?Ht?c6{r??!F4-8@q>Eu$tDmG9@Go75_dPvSq zWdbvpOA)0Z`QSm0bCw$+Id2#f$z&eOSVs*F9OeWUL-Mav7{wH_SwsmHY@>;Gdbt{s z^M{0_pK~W4${`)Aph zM>xr)ko@65Ml+Qh@>xk`NctIf($Bb)g?bd~QK(0u9))^5rpIG?Jf?@AaVPzZJLzZK z$;b3~OpnL(@H6h@V|qNM$5K6(>akRhrMVQ~{!86|X&ucW`S<}k=;K;Q77b-Q)5$}g zB6*7BDUzp1o+5dQdBJe^UM@<$qHC;$^I( zh6WCEf{P*fKT;UQ6tY=F2^DOkiFSIq8j>r9Fpdmj3Ry!HyEqh*PucU7Jx|&5ls!+` zQ({kvJtg*(*i&Lpi9IFul-N^ZPl-Jx_LSK3v^`JT^Rzur+w-(NPuugfJx|;7v^`IE zaV{iRUJl8>9mE*Y$)$i*Y@m*2IyuAjkX)6@1ZFUoB1)-dH?8z=Atav}z(^)DJ0w?6 zBVq}w*~m@~a-6f=2+1E0VrxyN~j3QzpJN( zZqA3~+Ww3njVu;WOc`6*$5BqxDh*GNAO>0P& z`@3>~SMKl1{av}gEBANhU;dr$<+{J1`wP0ip!*BDzo7dIy1$_N3$^U04c%YRy+Zd2 z-79pj(7i(U3f(Jof3cnxx;Y<`mHin(8d)sB4JzHB(hVxzpwbO0-JsG9em00Pq?1bl zZtycV@H6hDpK&LD<_14=gP*y<26=ui&(G!gxja9Y=jZbLT%MoH^Yfh?v5a-p(7<6%a4{tRK7~zkm^48C>lU3fn zMX>_jExmxFHovU@O z*11~eYMrZfuGYC)=W3m+b>1xZX1O=Zy;<(fa&MMK2ma!WskGl`kZXF2QHLL)~w$)%9|hk=Y{Dmmn{l1jFREsO8L-LhWCNP7! z6j4ewyJ@9|3n5uMfRRjQHVaunIkoJkjniBS$yfWh7LwbBGM?$=v6QuJqMjDIIUkb$ zvp*w9BZ~zTQ^r>Iag)?URc}|lUG;X=+f{E@yD$%Y}gS%V%8dNk?CT$#xFVK_Ayba{o}qGo3t^vX)KM(?U1rL-IHM84;3A z<~Nz&WPX$RP3AY5-(-H1`Az0Gncrmo8|J@Z{u}1MVg4KDzhV9x=D%V78|J@Z{u|~W zF#mx02hzx50mUKt+i65BVKp1s$w7{DmK!12JdBBCGLL1fqlN|!bApQ@`DO~Em_jy- zD4`-G53XVZbu`n-8Lo%qKczB(8O)`KQmWZaD?MBY$wLDe$z*1;kQJ0u%YNEI@-5lk zlI<O>>h$&hr9UG`BZ~zgdBmR`@n=W; z*%5zs}9%po2cH zh2(of8P9a`Sjt*9QBMoqoDa$4{TV?TSu6<2_w{*SpZE27U!V8&d0(IR^?6^P_w{*S zpDum6^y$*4OP?-%y7cMNr%RtMeY*7N(x*$G5A^v!pAV)Hv4qtj**%U7VhUM96}vb@ z7w1Cq!+s2B5;K|4a@MnjMvicjOCi}akkL#fhkRCs*?BWnzoD0c+?ZhcS^%=CO=*{C_^) z1U`x){p0SZx_i3k$Yid}k^3Mdgd>nZ5-`GuMk^7QG z77-$gkwt`vh%83PB0)q1L}XbPZzxmdWPko z4m5xh;4<|+X8`da2NZ)r;CbqM9(A2ZUFT8PdDL|tb)83D=TX;r)O8+pokv|4P}c?2 zbpdrKzaxe)j1{=X{a1>mmzCSYH z1s%WxU;ua)%%Z+OEd;e-7dQegP~Xb}aD#TBCny19zznbwYzBM5NpOYw{;YyT0NH_0>HpCS9tko{-K{xf9%8M6Nj+5c+-$siB(217v=m_z(DGI4cA`7wbyX%HC%fQ*IvW5*KzH2TzehYUdOf9 zaqac7pa!f4Tfu&C8eF5kH!L6(6o5WpI2aG+gY{r1I81$Sx+8LS2M;2<~yZc^XdHqaUr0u7W?-{xn*EU*e}0gd1k zxJrF>=vq$(d7w8K3aY?7unz11hrsvXHub&Z0GR-~z5`v~fv)dBe|MIGO<)gc!jGhp z1Y$u)@DLaX#)2BK8f*po!D(=fG-d&*paAp%!@+nkAFKyE!C`O?=%k4*kOlmtNkhPk z;AOBD)PsZI47f>}Yy+)9A<#fMm;@GsjbJx83NDgnV89DHfCs<;@GO`GR)H;~DUd;d z3@T($A%hAT)P7(zm*$DU?tcL_JWh(3TaU)NCcfhFE9kW2wo=5 zdIsDiE!qZJgF>Kzaxe)j1{=X{a1>l5%?7>Mpf?-zW_th(0MCM1U=`Q`8o?=Wl{C8v zB!fKC9P7bOa2T8eI%!T9$O3-Q4~z!TtrNO+LbuKaZ~|N=&1C@bAO{qKLEw2X2dn|x zzySc=x}aM(>U8%8LqQdo2iAcd;1Kv8+$PQA0GXgW2!c^y3Rns@fj!_j_>nZP1Y$u) z@DLaX#)2Bsd}yB!?L%IK=0p2@XkRSa7mN1AqJ6PwAMzr!ShOz|?TbbGkQbpLFG53J zgcgVP#i4z1XkQ%K7l-!6p?z^^UmV&OhxWyxeQ{`C9NHIule7dIXblR12Fk%Cuo!Fv zyTMU#k+ehxyr2Vk01N=nf>~e{*a8~CDR7mvBojymd7w9G$(sOlkqliVLl-H~MGAD0 z0$rp$1O|e!pa!f4Tfu&C8eAhS)dEsM0q6sUgYjTKSPyoB!{8jyNo%zdYzBM5NpOX< zbQL6m&Y%|<0$v0!gSDU@90X^;P10K1Kx0kO{hj zAQ%OvfTds)*aMD(A4%(Q7@Pw-Y1uB21^l2N7!9U@<)98UfD_;{X~>JvkQbpLFG53J zgw}Bocpl6FYrr;e0DKE>kk-ixT9KB6vU5;&4$96!**PdX2W97=>>QMxgR*l`b}q`! zMcKJ1I~Qf=qU>Chor|(_QFboM&PCa|D7!Pt?u@cKcLR@skzfK?NLm*>cj3>qU>7(7 zE|8Wd05@m{dV&%#2Fw5}!Dg@*oCH@$%U3}n=nQ&+A>c*uGFS`h!9miHGoc}8LPO4k zhMWlvITIRkCbX_WFbYfoOTi|v2OI}Kl7^fK4LK89w~pW;Fc6FdHDEQ^3igB3;2LT7 zSU@Uig?`Wvj0V%da!?1L&qC<4@G@!l8bCbA0mWbtcpl6FYrr;e0DKE>kk;J_pwI5m zXZOdzNH75`B&`R^?t!vE4{XGKxJp%nbG7?Mx3qdW|1&)9Vr1chn8?*yGK?!M(LNAZb0;|9l&GM6fP1>IvAQN;4K`;tT0no{xpp!pA zCw&?4f)3yTFaSV?zL23WWatYS`a*`jkfASR&>({b88pbCK?V&nXpljJ3>sw6AcF=O zG{~Sqh5%#;K!yNh2tbD5Krj~6fYo3t*bh#FYovuNAQcpVK43T)59WjQU?(^X&Hq0vVb4-1Eaw-upHEpRswlTAa4oeErGlxkhcW#mO$PT$Xfz=OCWCvkYgC+7zR0pL5^XNV;JNZ204a9j^U7FIOG@( zIfg@y;gDlEgJp(;G13f(h9X$gbJp&y*GZxf<)nF^w4^D$?q&;gPtpep% zpxg?STY+*bP;Ldvtw6aID7OOTjzzg+QSMljI~L`RMY&^9?pTyN7Uhmbxnoi8Sd=>! zcK&92HYg=MH^@h z3V{a7!6dL4Yy`W(QE-v8N(LZ*738mi{8f;@3i4M${wl~{1^KHWe--4fg8WsGzY6k? zgZ$$l|2W7$4)TwK{No`1ILJS4J=h5jgL6P9ZM+L)0Y7Ok^#h~9G_V}hfd+5_TqbRT z0mOqGPz(lv=fNDX25bWdz_;KAX%nrW73c;Y10%r%un^ReHVOAl!hMr)-z3~O3HMFH zeUowDWZX9y_f5uqlX2f<+&3BbO~!qbcY!0|0%=nO;0EnLPf!BJfEi#V*bMf9lM$wF zB5f+#J`LARPX^zUHY1g^nb5;5yq`51;M(e?q}5cBHhVm2b81MNi_c$1-LF8#d3^wM z_$p+WKbEuwFO#;=0_sRxGzuIiZ82n7qJrI|EnN#vk+ux?E%$<(q^-y!ZDl5DuXP4f z0Q9?RBWZt`Pugne<@M#H;fz=N>rT?vUL);|p#ZY318<^j>sOPuArLU3|Y4?R#$?Y1E%?vJ38-RDT#gX{O8oR3j|17|a7 zpP;P0kZJE_(r|vFHCjOxY5yz)kOk))+NZ}!!x@Iw1f3i_NZMx`Njo% zcBFlQvX6L4`?51>h|O!qI+AwW03gFxXxmpONIQYgzg7X-eiCgyd7CuEueDRC`!qiP zcPrAqEg%@AsQYI}7>G;hytnNV|Z0F4{=DR7~2B(@6UXdc8cHw4ZV9 ze;H|r_i4WzCGEOE+6~C^zn-MsMEh>F2DrDm8)^Cw((df00L4;(wW5HSLjfs^0y199 zCn;c9OaY~a0_p?`82eGc)DbjNz&wZoh^quF2PhCVg#uRG7p(%^V|$STb{jZE0mpm_ zID3K{6mT7;K+GlzxKqJO3V5ESfVY?eK71cr2yji@77E1o0^d>~VIVk8fyA8@NLovQ z}fAz%*$(jjkp0|iP@pa3!`?B_ zu8soj(XI~N!8r#Pl|3BcrNP+usPtSS^+z*)^aDZ9hCIudZOb-nJ_`V2jDV{`u zhv!hB*JcVla+CtSaZR5@3jAph1s+>XfxfjA(6&$@aGC-k8wL91P@q5VFM&=Tzd(Tj zCn)ge{S+v*P+-tw6d1gX0#C$KU}!H23`6<}+@QeRlN5LvGQBc~ z0HFU~wx7EP>2RC2)WO$gK%1&jir#iYXLWiThSU=GSoF zDnB?*fxn>tRzCo)QQ-CU6j)P5fxq?wrzx-&uiwZ6D0|&H3cMMlzT<1$IxNz&}P)U=Qxw zbA$pPZ=yiM3<`XrQDAQ>1@^fp&}abo{GX6}Kl=PrJRf+L0!<4kaBva@J{wMfL#@FD z3Ve<-4?jeKF9uTJ2-^MSP6`}F{m0Hx;P`0@e1&pOjHdwXQ2^&}fs?rR8?@=01`3?Q zJ^z9%ry=vdaox8kDR4%jz<2E^@IC4~yOjd4M}hN4De!}p0vA!wCFtNsl=IUW3jCZy zfh&0w_-{`NT%ALKUk+2?I^N%aKK_UH;x~qY+bFLY_v&s6+)1UN@G=GI3I)X%DJb2h zprI!Pl{pkd>^NvVLP67R3Ys@k&~lK1QMe9q*&yPrLEAP8+UHTwF^Pgs;Hsiv%<~j< zPotn`H3hx+%r~5Zu|p^rhv)b~6igUELB#ZeNsB3%Jb{8K_&jwv1=CPodIt)&uAyMY zdI}<*6>M{Wf?24)?IsE$z7%Ya&kz?1cEtUi4pA`YDg`^oQm_j?%kzR$6wF^s!GgsU z>^g&j-TdGh1q&ae;JqlL2d?#_t=P*4?|+_x4>Ag3j~y(!NWq7DQ?M7>*}EGBu@?>g zDV2hcZKa_000jeUC>W9`*sqp?B@a>X@yitaGs-K)wSyWcIHZt*Pwb%JFvv0dMGB5= zMZvNY6nt_i1)qYfqi<4h40Hm&G+2Rp$D)1D9jD+6DEq~g6s$Zz!EpwFvc}J%;7cPZ zIH4B>Cnf{*2YjC3@>! zaPDCWzM@ia9fyW!L6$(xXnbt?Gq?iUq`|Bzop;~jIo{g ze&+=Wet49EA7xQ+_bdwTF;MX185C?ld7q%Hz0hZ)1P)Q~pJ>Pa%@q8!fr1CtQ?O}2 z1wVU?f`<-J@bG8~9)Y}HZlmC_UKIQa_ng>E!IOCX4X*pwvlRSyJO#h4r{I}>6#U*x z!L!iSdEEDdK*5WU=|_}%8Ev?N=d1H6c&&tjH%t`#AM|-^2nCz*TE9Rc;UtCFAqq+7 zC}h}4A$2~5Opj5>5>KJ1RTPTGv+V$dFlRzIGYG{Dp^&?ZLY^85dACu>hce<4DHPwE zLJ7+$lz4_hNw+DK;-XM$kV0wmDAZ~eN7?Tq}h-`zh3AJcaT={tOBsCK&40k3#pHq|m)%DbyWh^teHx``i@jiEHmi z{fJ|Q9!#asL)|D;)QUpI_^cT6KD>)Uy*5(lk);&sJ&i(-mQ$z?%J>t?ehf1AMf)@d zg#s$LN}=Eh3WZQ#zbh2#4|z&(-{VIq^k)l&2BO`iXDBonbqz_T&=ZjV37tYi8!0qw zF@=VIOQDf@6e_Ew(3ALXl$SzJq3ow_QfM^3dwL;-#ymhF>1PDKsASkH1Etmr%}x9Tb`fT~As~A*`pNDZK#Xor?BO z!}AQ(ITK~hf)1(;-~fecQ1|RYaE?NAaNWy{La*Tcyh#*#^;rtdA4;JGnE>}MoI;^R z=!ZqeDYO{nFM*zxKsQToQ)szFp%twuw6Z&eUK>K8RnsW+m)#Uvjr(4|L7_D|h1PbU z&>Ig>Xx(rMy*Zvj>+31B0XnVymO^ixqR`(^&!#F0y^Z$1(}zNvQ3mqxLR$_~=-nSF zv=#Ebhx)b;qELM!g?0of^a1Y0IvCnjL!pn>QfT)c3Lz&e1Rp*0G45?Zx$w_Jd+~Z7 z>T86Kkf#*d519{mDbxgg97H=mtE14N%@q0^*B!<^N1&fCQz>+`8-g zgzVg=?50i~Q|u}BbUY9)zBxq}Zt-UUF9ask2?D($?+|3cC_MC@LeyHK`a8G%Nr@?W zlE~D}ii4OW8zjR!MG7rbHYiL`6tl_h=$bvawBk~Ot-;>4tI(tQV2@56sVxm2R7zr+ zXwMbXy5!O;xi94Z%hc2)y>R=6sM3QsA8JCKL2(P48m`kU^!Ga;w@D->NQ!DUN$&`L zq5jTpe^OL*o+9K68w9ah*e6^UL{&hG&F|!!mYJAfLhYAwvr9`W+ET37_UI)D)RiOj zC_GXKQ6NN@Tsi#6rnY~kQu$UNs2*a&V4ad60suIy8eDbfaU zySPt0CQ72mD`Y}4m)q%!k4++pnZy|8iV-u!e6doj7A2vNNZmyeMVli!!IEf}Rf9>f zTZ@h4F=iO^jiS+Dvx`O<9VUPRg_P`yiovBGuCKyuhX-BP@*b~`lok#y4gZ1a3JdSj zjMw2l#xs9iEq7>JJ+Yy>gO@*b>ZsW8Vd4M#ky6AoCkOrSOzD#1%oRDgF==87zDtn? z>Yw&oUZQ`}Z~5aJ_x9F*r0kL<{iqur>Y5%Vx4v3$c$m7<0=*w?Xf6IE!_> z(-&jJ_qo$v@)&vwX+oCJiC*@1DQiPio_XEvG6Pm zKa^HfgeS+*ic7XjM=JOv$*w@ReFIwNOStca9^W-J7us{PF@1X!Hiaja?K?Y0$KX<2 zfPd90x?i2xph&ic1_fY>QE8+Sp%l0A3nPEY?Mb8<7gJ)=x^$on9Nl^B9jHs^y!`0G_Iv8-=c|r9 zSyMJg>`h|kkxiR*-Mnq9=j%_B7q2n1d)pmc``5FMe*Ns**2RsiwCh&7>YP2Gtn&7C z+p_0Iywp~JWm|gZpN3a3$3-Dp@CdDhcEUG)yGR1k#U93#sJ8o44`l3*>)_b09B}VfqDYA1w(aUA+bKNo9xKR=JhpB5 zBY3l8AH8%2R}}WR^gW*W=a`?~M(kS?2F6}hBJ z*LD|k39i`bacV{!#dXP?o{ve#s&SdMD4SUJbgxQ+%6o5c=@Gs<+K!YKT*`&nt+(Ffom2JDzfL z^5l$hL#EbU`}~ejSJyXi__amQ|4DZ;ozVnqGzKj#AdW`r=r>6F}CA^OF`(M&E zHUuNiB0TQznkBYhW2%8N4WuwqB#I{m%eHEsD`j6g zQc(D1q0j@aOhqXcO#BS;g9%ov zzg6oz>;Bm2Xp>~Dl56DUa;+>C%O!HTTqR3bgv_#2s*-9XCe%vxQllhNrKuX;*#^^g z(>^$L1xm3}qLeEVlOzSUw^|S_f=j_Pb*k1XD~qyPD_zyDWiHXR-|1JJlpr|a{B47w zbUNeXFvhdPOH6nXE6vRwgvpU@?`mrpRLb4YyMKiq-wc8WQ<#&}HM{UqTfxR1K&(ml zBk<)5uLuL&!^gjpk(b{(Bj4?5-6hwh7-I7B*;kd*vnP+cr_aOPURdN@Fg$x(C)cYE zdGIUJrgTTvqJDp>ncKVH=BR|&SMN`H`_X|j6;tK15yXZ5YDC+bqjcA%YE53KfH=Fo) z=}GmhoIQ;S?Az!yh9#6`!#5DJc>$1}l{cSYt*QP!T)Pc7OoybR;P#u@W^$l@!qSTR zFTucJ^T8{b-qaK>S-A5V>xy|U3f=v!%cv5r53ZdTS%yUcy8veqt7fcNsDTGe_=IJL zy;iuUJ?^@o5TcYXajdIevVdyk9XDg-ANXEoAbfd`{10f&BW(9i>qfnZ^^T?o-6P!W ze#bBeD>U~uGqDJD=E8k0#ty0*BUTKf-AyH@CC!p+x!)o=-D&Pz_x)}uKDu3WVRY|k zDc;%6S?KKTlxhvMT&87^OfgY`o$^hj+R4o9D+I-~LUu;YX0F+a-^V5}uL4J`#dg`a zDtcUsj7SVf-U1=)a^D@ngG*ti`5#KQ+gKVN9L^kvy>kbw*39m5xLH>^b^WZKcK!PW zi|?C0Y{9~w)8v0NJM@|QtL!4ZM9dr*{TfO1yJHkZXlmFq%F*KqIz5QL8 z^jc)**2t2q!2Ahw%fqv`UXr9D>Q7~~j5d(W$5{pyp?9ijJFY@smR1}rZN`4G$I;T} zPk5i&4N8|*`MIL7wfbAiuXsUvY0BeuOHT4SdkBJLLY=X~HUI01kD>%M8tc6*%CES+ zF1OoT>&8M%q}V-nW@9EB{BQ12GubVAC7(Si%Cy3+_+ImqL-mn`ZE%zDo|`J&%iJ5> zB2(P??(1&Rs*1-&mO!G-?aPCuxrq)f5tqXohxs&%ZW(1^8q9WadzbIK?vt!O*j*Us zsM%J3ylVoBGqnD5)*gXid@X!3D4 zvXjM{mw|l-W102>JHwFl+RN=?|2D*WrIFY_ozz5cVnL#4QKCFi%)_GiUD?okv7y8O zpGNL zp;5o{?GE39`G24C(pu+gYu<=Qp01iRCFP@C->hjGz^zRZ#<>f&%p_Qa`Tijr;1s7v zy&1)pSjl3w&NC=3gF#tjc*F3nL4>vpM(Zk)BoXldhoCBKuBA*QRm>C%#9~pZ7te_| zL~fe$@xVmUT3{$Puo6SLp~_HWkOTwNQX2LoODjqXo4aC3>CpoU;(K#D+(y1VmnPcy zAmsZsN((PDlxxq$fA7N)KKZ^QCl|`}shB62vm17GOUw`M2-CHsqwG*39I_e3cz*t`{o?>dnVb z=%0P|sdet`&z7y+@`{UHsl&M8nohuc_6TWI?5{&M6dN6nSsDXXQ&}1bqkV+`+GR90 zN@X!542!}_~$*c-?5#a?^YpJ&|%-8}Gv8+_upL!yd zi5W4(JTXKiPFiLo)@Z`21*+zM7T8shT(~xDtcUy1YI`oBpjH2$mdB(T3)4n-->7fZLS5B+k z^cK6iN5A&j=la)FK(A5_&8>gWc3%Hc|EjsVao)Tg@4UM3Acpl&%z6*ziAmV(e=cAk zF&~>*W{?f95Od+B%nT$c2*JK)G)NAwQosXGv>id7BDqXn1~;w%ui-?9D{(d78f2or zVk#kn5eslN3L_M!U$> zHcQ5OZ{_3F=5Xa%+s#(}9od>RrmY>VJ1d`u*C(y#O9oY1u~bv4_n>#F^$c1Yck3 z+BLicaZ3>%r!BTuz=9;%T~fZV$5f#C*e3|fF0u#ONOgE#DYlI8oReOznxn0c1 z+NUanXe1RR6(^M>olC-&(CAxL%$GPX95c~~@M?6@3Zvq5#;k~TDyg2-jMVL^k|k3p z5LkSCDx&*#SPqMGt|N7}!Qa|4fu$RMGwDa*IY8%jxCAg8+?a<=IXb-jFS;{6g?SoereEiv>xqs)qQIDl? zrj(9Zr3lG>J8fpshRw1=klvvp83#5ndsxK78w3m>?3V1|Z5ehNX%Vxi1cBtVIk3AvIRQ`^-SP}Z)%B~)prMYnasyl?ko4+1Fq$73_gYED=xAVmPw{?;IhgR3p%6Iio^nY-@SI`WO@s{=e#1~NvzUFqEoe*q$n{q*1JTMq7pX8 zJBnia$HElYHrSYIBa^5gXjG*3S2v(5Z3yQ`2Fr(0aqlScY?b*`u_ONK}OWK#W7lq1pBo@Uji({-C z+@~T-e+#2ZBZ&p!2$v`n!?9Wp)fVScS;q|>S^suKHCfBEa449C^FE?##2|~z{mqQ> zjb%nAcv&VQ9gH@_6Xh4clSrcccq)ibh>uHfBqul$suPo4iHXTo_fTaQs_azVX?v%A zouq=c7EXq zKih|KZxb>61#%Mt729BSn zDEzEm~V#=eu5R} z!R?4u_vGg??(*g4U>|O4xgaH{RepMoBfKSK_)__5wB8xkBEI?O3$zQ9X(oN4&-~Z> z>VmZ^KBs&CxvL^=%c8jU-X0B8^kMqv`U1T@eL-`7rl&^S9#H-Ltf5QxO>uns3;lp@ z7wJ5?^gMl+{+-^Zc0EZuf1ri+tC}BuDn2=FrM`$_XsB+{m*{i#7uLKonR52dUaG(Q z*34C~RCjbl*h;XIRD@`9`xCnv30gMERyb8=9=T2s5RfHfv?xhdbN!tu{{ES5^G2A7 zJm&4@ede=f$!x_cFjY`sffcJHO^p~Lqt(E~g?@xzR5dypAsa8V6rbF$5D z?#V-)1$GPqm}$7_VN+TFvt5AIIakQ$W~~Q5OfKXWwwa$i@&RDQ&WoQ~g`iA_i$u^LA41#C^L zF>~=HLV;aK^`T!_67T7&Ul8lEX(7p4ay)#1Q)*U0jFcXVU0 zSA-)P@KTVqk<1VB(o^_I=HWnm5^+*e#INSeo^a;l=Fbp|HGe&#IgYvyojJ1X)n~DV zdAecw+As7?q9yCYmtH#fguLV2ydiHm-Ghde4|CsIJL|#O%2_emaSe__;r|HLof==Xz6qQPPN8*<8k9Tqr_@3Yi3HAW+Fw> zFV2dRZxPNY7Wv^pA>>fv5REK+cI%0@orZS{cQ*;0 zI^H#A&Xk-)F~%mep?q{BEK~5u3K^qS_&d#KxxWv`9Qc(P{d2>pP( zBksxipEl|{^}%)CQCIej`RFeXzlg(%?}oMMKBgwpv~-3&_}Aod5ARi_IK>>&41b>ej{7-ZgtJ&s0ekA!U)}l5t<;Z_dk%C_kYrp)x^CNMOdysPZT#M8>pd5pya|K6XW8 zNfa!r2g6rHR4LBs!+6E0bxxH1Nf13z{{4`Rge|x=YMHk@k`#_kUc#|0#&Tro!n`d_ z53fm`9fsC>%oBbLF&;n+<#Ru$v#VEzN!89nI_6 z0MxV-)lEiCqLAdb@pGEVej<6yWOQ}7B^>{Sr9}SOz_0dv@<|;VGkVw%_a6FE|L?!Q zIptlraL`Kw#hoO*N`6qfxCvH2gZ0#7{D~Es>bY%%VqJhG1^BNXU3WSQmR>!C*2X zg9~%jNL9ugM%IfTM;kMZjFz$Mj0p&fLQxwS7euJxfjQBrn#gOSC8jq`2>YAz!-uO9 zeQEm6^ovOp%lN#&Y~!oC2WA+1Z74rV6)_URqad6hhe2?(0AsiU@$|^w(uy1#-h_wn zZ=dlbF#O{oj_`F6*DexZu9lF9z*lUZ2}I!>GVH1=#zqnkxci2;ZTQg+A6k?`vUW#k zzHtSE>nk!euVmky*ChUNU2sBj$Wyn zQ3*nGMXU@xV_+05Da>Jp7a&UxNsf*dj1IHHrU=RuqhB>P8ky=rDqfMX+PKVk%y`zQ zD9Fv*Zro?QZj^anS%nx3ZH$5h!DZx)Mc;%U!ZGWxUtqgr&&`3I@nz@cVpYMmxJO|w zBKqNe!9zz%FWBC6oa*1(g)P(0}b_*N`LNV zl;Uz}5O(gL-s&R#>sE@qkiTgDYB|umwTqY2A1Rf#ns^IFK^aN6v)XnPv6z><=a5|bIjc%GKbT*=8y zN$@1}PuQ0rsUEMV#M9`J;ILsxia0}O5~VtlJP9_@ET{S%F?p$eB$lMgo&|od8Kzvq zw01G1JMZ=v;R{Mw0Ba%2PSxdgmAFJD)`OS_9Khr>h6J&cBuA`Ew5isVlvqJe@j-^ZzD}{r{{%(nvs)`aI%Yht=q;|*YDAr@PCX= zp!+G8W`8q5zqm>N;nXSp9C=SY-T#Tf+3&il?|c5w^cFpe%!y4HgmwDTV~>CQItF13 z-GiZbNZCc|hT zUwLYb;EIV6kS*i#EK>Y18wmou>)rklG2T2CaTHdroKtQnVwpnuJc~u4JaW4nAmWH3ftIYZr7>WakXaq^DTr`Hc$zdug8Z$GVXJK@pcFY^_W=d@hJEJ-KwZ=Tr-Gdr2o%miW? zG5Ik?F(O=+$N`c_{aaBhiW+==!ehYwok+6!;_;6z6RR0!|2(YQPmt@!tJKCQSzdnS*{24VcE}9=eaVM6$#v4U`LDB{s~Ypvp4T>i z|J@f{^X*|@w_$uMLaskSkQd<;-=V<0Vgj3t950H-Z!J`#IJqUy3ynf-V=uRu%{={# zyVpE~yiJe$SWl8>%a)s0WlPxWS&J2o`|uv2pTFR^leR}6i)K}7qskN{6Y=nIy?k7j zEN-)CU!)+FmbtO7j+rd*ji(P@gZB>`PZ$&o<{k*H3<`(Pupm5 z5}I+!S+!ExsO(Tgo*T5C#O17()gwUx$NrJiy&cB=#uLU1#+ycYlySUqj&Y@Nqfw4E zW*NH~dl?59Wzl4$oA7eUteB_XJta`2sgY9xYzlB>hhJNG1cDciD&g~DYaog6dLl;v zIegLK?hlWS|IyQd6FPSA*s)`==<@Lcv&b{Ua$8&-xwv`H-sZ;7X=2+H3IEL+e&}-Z zAvhMtM$Ud=ywryGvJVlnO0+Z{9^}v%tP1?_3%g3U2YE*Qku@w^R2L4_orrai=*1R* z;(hUVn-SxSnIi%`A^#&dm5KI| zY&N-K;^D2shjA1OuO~}8DLBXc@3=BVh%Dw?{JN)h^ z(QL}jk~0Ig{##Gt;BF2GS}(gzNAyB)JN~ocl#8njo#RxkK6lgdkd2?J>oj8T7&z%{r}F(b>`bCcDjc>Ai|N-cJ{r`(O^-)xQ~0mOzG* zAO1-aa(T_hyYp2t7!6Zpq&q=_(sCTSc`%>h|C#M~BZU%_7WNl+B3{@f+YVw2on4v@CxP!&@jIGGUH~^p^vLF%$4dNW6k(WZvcM)-ew}}h^ALAr zVH=EHa~GaAh!rD-kSDn5);RXls1CQAq}bd4ED>wBiM8Uy4s~_6%};WxHCHcZKD0;? zTKOIF3hZ%KP#j_la}oHX5qEdaJaHUHFyX~0B?en^=F`X0yb~w%az$J6zpr>nzh&eW z`P<`EQk=)&6Ei~Cf`o7~?mirHmJ3zL$ZZrPv6!FX;;TqvZe-Q|V{)zxL&3T(KyGd) zq~(&3qL)+MZ?fX&aF7*=Gjj#MQ7HfakTrY)o`RoyJ@?gD^om}-)R3_R<#b^yMeHPC z_!jxwqZ8>P!GItP1|SnZl4O@8$yKZdqGRN$Jb#$aRHV`%x$e&8cU|7dZ+g;s4vG!$ z1RGw_brdY)j2OQH+Ai&rkmFX1%moR(3QHPUeM)n99tgLk2%KV=Vt9t5A%8rLrZh9R zkmB5J*M5GVhAm(#S-<9uVls4m=jt6nvfLSoNSf_EXisL6ZLh5XDdD_l;38OVos+zG zgps^I`bj(R(=Ps7rOy61wr>jU!-`XeIfX15G%HyU&u8+W(EE2TWAGJVEAb6ZSxTEq zh3r_~(`jNZ?OXiKMHGXjjp284XQdSBULi$ji+tRT1F}dwmQDrf#pxyKB3q91uv+su zGe1i#Fcq6hO!cNllN|Xa08b8;*%F)_=f@YtAB#U5FEIriV~ zOmfduG4YTM)Oxz=Z=Y1o+NmRdJuwLDJbZ3o`woid0puQ+&a@Z^1W3Xz59Sg4a&%63 zI)&Zx7W;@fn35L$*$Yp@>4BfRbnXD(s3j#dkrK$|7P}a5tc=6LJSpYFSo3>_YxjI` zwsz3HrcR^({Cu@n<;(gKXzV{cm>-U1^jdc}k zCSCbv8O^;fJAc8$gJ0*GpAF4(FVBYP^=^NS$s6lsCR415eG>m=JTt||;(?I-XBNHj zRPSr_F^`vU)K(zD3?XW&P`%QqFt6#jiFt$!9M~NbB(EpaQ-JhI5OTw_nax#y{aF*jF|UVt8tRheD!wIu{|Gr{q5Uty;{!4`eTR`|A?^}E8s}8(m~5C z+b#Pn;xZh=;Ws76rE`*`sx>N8ix5BcP^O)%f3+_$*<#mvmWa;G*n(KbbHp-SVpKRy zESkm66s$9&T+qThR= zRsU(}_Xhv;qIhEYUYzjbxe>qqWt0VHCd0yy&O|zkxs%0Dpx{}-=t@orwj4(kutyfB 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%0A8o@068vRMo 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%0Arkf&LGs9=c}VT~FCJU*56a$ybb$d1VJ5 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 z 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

WN+(5YUfXI#?*B;0jf` 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 R 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%0A{R>vh)}_@YpOQQ|!@&ZadBsB#G|z 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

gK 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 R`+nJFX9~Y3|HiCr|H|aQPAAx>6yW#uvd2#s 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 z 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

tHB@ahnhwhdz7sLyd9-p3;& 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 z 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 z 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�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%0AAtZ;>OVn6ZroAvZ|)`_N1ik$;mA(sm*!4 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

GgJ8|D20^~ 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

#z+l48y=I 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

Z*4wX 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�PqD@ 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 z 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/@5?(B8JQQAwXp>F;tN6^4E#MMKG2Vg94i6{I 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%0Aus-u!L8 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
U#lpINy1&X^q&E*^Pc-{zmZ$l`lhXCG}~ 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%0D!RHrWY4=&7Y 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