3f70421570542186fde61f47371dc1acefbcd612
[motion2.git] / server / api / voiceContext / voiceContext.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x37b6=['readFileSync','join','root','server/files/templates/context.ejs','render','writeFileSync','Reload','chan_sip.so','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','/etc/asterisk/extensions_xcally_contexts.conf','utf8','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','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','jayson/promise','client','http','then','info','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','status','end','json','offset','undefined','limit','count','Content-Range','reject','destroy','get','Contexts','stack','name','send','index','map','VoiceContext','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filter','merge','type','includeAll','findAll','rows','catch','show','rawAttributes','options','find','create','body'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x37b6,0x147));var _0x637b=function(_0x8b3c87,_0x5d0611){_0x8b3c87=_0x8b3c87-0x0;var _0x191e01=_0x37b6[_0x8b3c87];return _0x191e01;};'use strict';var emlformat=require(_0x637b('0x0'));var rimraf=require(_0x637b('0x1'));var zipdir=require(_0x637b('0x2'));var jsonpatch=require(_0x637b('0x3'));var rp=require(_0x637b('0x4'));var moment=require(_0x637b('0x5'));var BPromise=require(_0x637b('0x6'));var Mustache=require(_0x637b('0x7'));var util=require(_0x637b('0x8'));var path=require(_0x637b('0x9'));var sox=require(_0x637b('0xa'));var csv=require(_0x637b('0xb'));var ejs=require(_0x637b('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x637b('0xd'));var crypto=require(_0x637b('0xe'));var jsforce=require(_0x637b('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x637b('0xb'));var querystring=require(_0x637b('0x10'));var Papa=require(_0x637b('0x11'));var Redis=require(_0x637b('0x12'));var authService=require(_0x637b('0x13'));var qs=require(_0x637b('0x14'));var as=require(_0x637b('0x15'));var hardwareService=require(_0x637b('0x16'));var logger=require(_0x637b('0x17'))(_0x637b('0x18'));var utils=require(_0x637b('0x19'));var config=require(_0x637b('0x1a'));var licenseUtil=require(_0x637b('0x1b'));var db=require('../../mysqldb')['db'];var jayson=require(_0x637b('0x1c'));var client=jayson[_0x637b('0x1d')][_0x637b('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x35361f,_0x40611c,_0x39207e,_0x4486f3){return new BPromise(function(_0x3dae90,_0x391e5){var _0x4a4df0=_0x4486f3||client;return _0x4a4df0['request'](_0x35361f,_0x39207e)[_0x637b('0x1f')](function(_0x6728ec){logger[_0x637b('0x20')]('VoiceContext,\x20%s,\x20%s',_0x40611c,_0x637b('0x21'));logger['debug'](_0x637b('0x22'),_0x40611c,'request\x20sent',JSON[_0x637b('0x23')](_0x6728ec));if(_0x6728ec[_0x637b('0x24')]){if(_0x6728ec[_0x637b('0x24')][_0x637b('0x25')]===0x1f4){logger[_0x637b('0x24')](_0x637b('0x26'),_0x40611c,_0x6728ec['error']['message']);return _0x391e5(_0x6728ec[_0x637b('0x24')][_0x637b('0x27')]);}logger[_0x637b('0x24')](_0x637b('0x26'),_0x40611c,_0x6728ec[_0x637b('0x24')]['message']);return _0x3dae90(_0x6728ec[_0x637b('0x24')][_0x637b('0x27')]);}else{logger[_0x637b('0x20')](_0x637b('0x26'),_0x40611c,_0x637b('0x21'));_0x3dae90(_0x6728ec['result'][_0x637b('0x27')]);}})['catch'](function(_0x1e6085){logger[_0x637b('0x24')](_0x637b('0x26'),_0x40611c,_0x1e6085);_0x391e5(_0x1e6085);});});}function respondWithStatusCode(_0x4939b9,_0x4e093c){_0x4e093c=_0x4e093c||0xcc;return function(_0x4a7c18){if(_0x4a7c18){return _0x4939b9['sendStatus'](_0x4e093c);}return _0x4939b9[_0x637b('0x28')](_0x4e093c)[_0x637b('0x29')]();};}function respondWithResult(_0xf90a35,_0x425ec6){_0x425ec6=_0x425ec6||0xc8;return function(_0x3e99a7){if(_0x3e99a7){return _0xf90a35[_0x637b('0x28')](_0x425ec6)[_0x637b('0x2a')](_0x3e99a7);}};}function respondWithFilteredResult(_0x19af0f,_0x234458){return function(_0xde9076){if(_0xde9076){var _0x4be4c9=typeof _0x234458[_0x637b('0x2b')]===_0x637b('0x2c')&&typeof _0x234458[_0x637b('0x2d')]===_0x637b('0x2c');var _0xd56331=_0xde9076['count'];var _0x57afb4=_0x4be4c9?0x0:_0x234458[_0x637b('0x2b')];var _0x5089be=_0x4be4c9?_0xde9076[_0x637b('0x2e')]:_0x234458[_0x637b('0x2b')]+_0x234458[_0x637b('0x2d')];var _0x554def;if(_0x5089be>=_0xd56331){_0x5089be=_0xd56331;_0x554def=0xc8;}else{_0x554def=0xce;}_0x19af0f['status'](_0x554def);return _0x19af0f['set'](_0x637b('0x2f'),_0x57afb4+'-'+_0x5089be+'/'+_0xd56331)['json'](_0xde9076);}return null;};}function patchUpdates(_0x41a312){return function(_0x4d2840){try{jsonpatch['apply'](_0x4d2840,_0x41a312,!![]);}catch(_0x553bec){return BPromise[_0x637b('0x30')](_0x553bec);}return _0x4d2840['save']();};}function saveUpdates(_0x2cfec0,_0x3c23c8){return function(_0xfa698e){if(_0xfa698e){return _0xfa698e['update'](_0x2cfec0)[_0x637b('0x1f')](function(_0x38c20a){return _0x38c20a;});}return null;};}function removeEntity(_0x24d479,_0x28f4d2){return function(_0x8d1e06){if(_0x8d1e06){return _0x8d1e06[_0x637b('0x31')]()['then'](function(){var _0x42e117=_0x8d1e06[_0x637b('0x32')]({'plain':!![]});var _0x536bd7=_0x637b('0x33');return db['UserProfileResource']['destroy']({'where':{'type':_0x536bd7,'resourceId':_0x42e117['id']}})[_0x637b('0x1f')](function(){return _0x8d1e06;});})[_0x637b('0x1f')](function(){_0x24d479['status'](0xcc)[_0x637b('0x29')]();});}};}function handleEntityNotFound(_0x2b751d,_0x4e25e9){return function(_0x481f98){if(!_0x481f98){_0x2b751d['sendStatus'](0x194);}return _0x481f98;};}function handleError(_0x6ee272,_0x276e86){_0x276e86=_0x276e86||0x1f4;return function(_0x794a38){logger[_0x637b('0x24')](_0x794a38[_0x637b('0x34')]);if(_0x794a38[_0x637b('0x35')]){delete _0x794a38[_0x637b('0x35')];}_0x6ee272['status'](_0x276e86)[_0x637b('0x36')](_0x794a38);};}exports[_0x637b('0x37')]=function(_0x3d2cb5,_0x5f3027){var _0x4c6855={},_0x3d49a0={},_0x3f2139={'count':0x0,'rows':[]};var _0x5ba0e2=_[_0x637b('0x38')](db[_0x637b('0x39')]['rawAttributes'],function(_0x72f162){return{'name':_0x72f162[_0x637b('0x3a')],'type':_0x72f162['type'][_0x637b('0x3b')]};});_0x3d49a0[_0x637b('0x3c')]=_[_0x637b('0x38')](_0x5ba0e2,'name');_0x3d49a0['query']=_[_0x637b('0x3d')](_0x3d2cb5[_0x637b('0x3e')]);_0x3d49a0[_0x637b('0x3f')]=_['intersection'](_0x3d49a0[_0x637b('0x3c')],_0x3d49a0['query']);_0x4c6855[_0x637b('0x40')]=_[_0x637b('0x41')](_0x3d49a0[_0x637b('0x3c')],qs[_0x637b('0x42')](_0x3d2cb5['query'][_0x637b('0x42')]));_0x4c6855[_0x637b('0x40')]=_0x4c6855['attributes'][_0x637b('0x43')]?_0x4c6855[_0x637b('0x40')]:_0x3d49a0[_0x637b('0x3c')];if(!_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x44')]('nolimit')){_0x4c6855[_0x637b('0x2d')]=qs[_0x637b('0x2d')](_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x2d')]);_0x4c6855[_0x637b('0x2b')]=qs[_0x637b('0x2b')](_0x3d2cb5['query'][_0x637b('0x2b')]);}_0x4c6855[_0x637b('0x45')]=qs['sort'](_0x3d2cb5[_0x637b('0x3e')]['sort']);_0x4c6855[_0x637b('0x46')]=qs[_0x637b('0x3f')](_[_0x637b('0x47')](_0x3d2cb5[_0x637b('0x3e')],_0x3d49a0[_0x637b('0x3f')]),_0x5ba0e2);if(_0x3d2cb5['query'][_0x637b('0x48')]){_0x4c6855[_0x637b('0x46')]=_[_0x637b('0x49')](_0x4c6855[_0x637b('0x46')],{'$or':_[_0x637b('0x38')](_0x5ba0e2,function(_0x5eef5f){if(_0x5eef5f[_0x637b('0x4a')]!=='VIRTUAL'){var _0x2d9305={};_0x2d9305[_0x5eef5f[_0x637b('0x35')]]={'$like':'%'+_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x48')]+'%'};return _0x2d9305;}})});}_0x4c6855=_[_0x637b('0x49')]({},_0x4c6855,_0x3d2cb5['options']);var _0x3c874a={'where':_0x4c6855['where']};return db[_0x637b('0x39')][_0x637b('0x2e')](_0x3c874a)[_0x637b('0x1f')](function(_0x2029bc){_0x3f2139[_0x637b('0x2e')]=_0x2029bc;if(_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x4b')]){_0x4c6855['include']=[{'all':!![]}];}return db['VoiceContext'][_0x637b('0x4c')](_0x4c6855);})[_0x637b('0x1f')](function(_0x4ddafe){_0x3f2139[_0x637b('0x4d')]=_0x4ddafe;return _0x3f2139;})[_0x637b('0x1f')](respondWithFilteredResult(_0x5f3027,_0x4c6855))[_0x637b('0x4e')](handleError(_0x5f3027,null));};exports[_0x637b('0x4f')]=function(_0x26911f,_0xd8a6e3){var _0x5dfa8e={'raw':![],'where':{'id':_0x26911f['params']['id']}},_0x2aaf70={};_0x2aaf70['model']=_[_0x637b('0x3d')](db[_0x637b('0x39')][_0x637b('0x50')]);_0x2aaf70['query']=_[_0x637b('0x3d')](_0x26911f[_0x637b('0x3e')]);_0x2aaf70[_0x637b('0x3f')]=_[_0x637b('0x41')](_0x2aaf70[_0x637b('0x3c')],_0x2aaf70[_0x637b('0x3e')]);_0x5dfa8e[_0x637b('0x40')]=_['intersection'](_0x2aaf70[_0x637b('0x3c')],qs[_0x637b('0x42')](_0x26911f[_0x637b('0x3e')][_0x637b('0x42')]));_0x5dfa8e['attributes']=_0x5dfa8e[_0x637b('0x40')][_0x637b('0x43')]?_0x5dfa8e[_0x637b('0x40')]:_0x2aaf70['model'];if(_0x26911f[_0x637b('0x3e')]['includeAll']){_0x5dfa8e['include']=[{'all':!![]}];}_0x5dfa8e=_[_0x637b('0x49')]({},_0x5dfa8e,_0x26911f[_0x637b('0x51')]);return db['VoiceContext'][_0x637b('0x52')](_0x5dfa8e)['then'](handleEntityNotFound(_0xd8a6e3,null))[_0x637b('0x1f')](respondWithResult(_0xd8a6e3,null))[_0x637b('0x4e')](handleError(_0xd8a6e3,null));};exports['create']=function(_0xd68a5b,_0x378bae,_0x3d3e91){var _0x4132e3;return db[_0x637b('0x39')][_0x637b('0x53')](_0xd68a5b[_0x637b('0x54')],{'raw':!![]})[_0x637b('0x1f')](function(_0x54d78d){_0x4132e3=_0x54d78d;return db[_0x637b('0x39')][_0x637b('0x4c')]({'raw':!![]});})[_0x637b('0x1f')](function(_0x4ed226){var _0x37e282=fs[_0x637b('0x55')](path[_0x637b('0x56')](config[_0x637b('0x57')],_0x637b('0x58')),'utf8');var _0x435acf=ejs[_0x637b('0x59')](_0x37e282,{'contexts':_0x4ed226||[]});fs[_0x637b('0x5a')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x435acf);})[_0x637b('0x1f')](function(){return respondWithRpcPromise(_0x637b('0x5b'),'create',{'module':_0x637b('0x5c')});})['then'](function(){var _0x1fe26e=_0xd68a5b[_0x637b('0x5d')][_0x637b('0x32')]({'plain':!![]});if(!_0x1fe26e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1fe26e[_0x637b('0x5e')]===_0x637b('0x5d')){var _0x41353c=_0x4132e3['get']({'plain':!![]});return db[_0x637b('0x5f')][_0x637b('0x52')]({'where':{'name':'Contexts','userProfileId':_0x1fe26e[_0x637b('0x60')]},'raw':!![]})['then'](function(_0x4ac6c2){if(_0x4ac6c2&&_0x4ac6c2[_0x637b('0x61')]===0x0){return db['UserProfileResource']['create']({'name':_0x41353c['name'],'resourceId':_0x41353c['id'],'type':_0x4ac6c2[_0x637b('0x35')],'sectionId':_0x4ac6c2['id']},{})[_0x637b('0x1f')](function(){return _0x4132e3;});}else{return _0x4132e3;}})[_0x637b('0x4e')](function(_0x536b6b){logger[_0x637b('0x24')](_0x637b('0x62'),_0x536b6b);throw _0x536b6b;});}return _0x4132e3;})[_0x637b('0x1f')](respondWithResult(_0x378bae,0xc9))['catch'](handleError(_0x378bae,null));};exports[_0x637b('0x63')]=function(_0x5665c5,_0x17724f,_0x193e57){var _0xcc8195;return db['VoiceContext'][_0x637b('0x52')]({'where':{'id':_0x5665c5[_0x637b('0x64')]['id']}})[_0x637b('0x1f')](handleEntityNotFound(_0x17724f,null))[_0x637b('0x1f')](saveUpdates(_0x5665c5[_0x637b('0x54')],null))[_0x637b('0x1f')](function(_0x242d56){if(_0x242d56){_0xcc8195=_0x242d56;return db[_0x637b('0x39')][_0x637b('0x4c')]({'raw':!![]});}})[_0x637b('0x1f')](function(_0xdfa5db){var _0x540a12=fs[_0x637b('0x55')](path[_0x637b('0x56')](config[_0x637b('0x57')],'server/files/templates/context.ejs'),'utf8');var _0x4edc3a=ejs[_0x637b('0x59')](_0x540a12,{'contexts':_0xdfa5db||[]});fs['writeFileSync'](_0x637b('0x65'),_0x4edc3a);})[_0x637b('0x1f')](function(){return respondWithRpcPromise(_0x637b('0x5b'),_0x637b('0x63'),{'module':'chan_sip.so'});})[_0x637b('0x1f')](function(){return _0xcc8195;})['then'](respondWithResult(_0x17724f,null))[_0x637b('0x4e')](handleError(_0x17724f,null));};exports[_0x637b('0x31')]=function(_0x20407f,_0x18928d,_0x2ba882){var _0x181242;return db[_0x637b('0x39')]['find']({'where':{'id':_0x20407f[_0x637b('0x64')]['id']}})[_0x637b('0x1f')](handleEntityNotFound(_0x18928d,null))['then'](removeEntity(_0x18928d,null))[_0x637b('0x1f')](function(){return db[_0x637b('0x39')][_0x637b('0x4c')]({'raw':!![]});})[_0x637b('0x1f')](function(_0x3cd9e3){var _0xa5b9b7=fs[_0x637b('0x55')](path[_0x637b('0x56')](config['root'],_0x637b('0x58')),_0x637b('0x66'));var _0x78da3=ejs[_0x637b('0x59')](_0xa5b9b7,{'contexts':_0x3cd9e3});fs['writeFileSync'](_0x637b('0x65'),_0x78da3);return respondWithRpcPromise('Reload','destroy',{'module':_0x637b('0x5c')});})[_0x637b('0x4e')](handleError(_0x18928d,null));};