d37be6f15b649b12072e46b9c010047f79ff9405
[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 _0x4c4a=['hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','keys','find','create','body','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','Reload','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','jayson/promise','client','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','limit','count','set','reject','update','then','destroy','get','stack','name','index','map','VoiceContext','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length'];(function(_0x3330b8,_0x19b32a){var _0x191799=function(_0xb95e53){while(--_0xb95e53){_0x3330b8['push'](_0x3330b8['shift']());}};_0x191799(++_0x19b32a);}(_0x4c4a,0x1b8));var _0xa4c4=function(_0x218ca2,_0xeadcaf){_0x218ca2=_0x218ca2-0x0;var _0x2b5d42=_0x4c4a[_0x218ca2];return _0x2b5d42;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa4c4('0x0'));var zipdir=require(_0xa4c4('0x1'));var jsonpatch=require(_0xa4c4('0x2'));var rp=require(_0xa4c4('0x3'));var moment=require(_0xa4c4('0x4'));var BPromise=require(_0xa4c4('0x5'));var Mustache=require(_0xa4c4('0x6'));var util=require(_0xa4c4('0x7'));var path=require(_0xa4c4('0x8'));var sox=require(_0xa4c4('0x9'));var csv=require(_0xa4c4('0xa'));var ejs=require(_0xa4c4('0xb'));var fs=require('fs');var fs_extra=require(_0xa4c4('0xc'));var _=require(_0xa4c4('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa4c4('0xe'));var deskjs=require(_0xa4c4('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa4c4('0x10'));var authService=require(_0xa4c4('0x11'));var qs=require(_0xa4c4('0x12'));var as=require(_0xa4c4('0x13'));var hardwareService=require(_0xa4c4('0x14'));var logger=require(_0xa4c4('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa4c4('0x16'));var db=require(_0xa4c4('0x17'))['db'];var jayson=require(_0xa4c4('0x18'));var client=jayson[_0xa4c4('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x245900,_0x14a90c,_0x4fc146,_0x5e4912){return new BPromise(function(_0x165317,_0x171d1a){var _0x207298=_0x5e4912||client;return _0x207298[_0xa4c4('0x1a')](_0x245900,_0x4fc146)['then'](function(_0x4afa90){logger[_0xa4c4('0x1b')](_0xa4c4('0x1c'),_0x14a90c,_0xa4c4('0x1d'));logger[_0xa4c4('0x1e')](_0xa4c4('0x1f'),_0x14a90c,'request\x20sent',JSON[_0xa4c4('0x20')](_0x4afa90));if(_0x4afa90[_0xa4c4('0x21')]){if(_0x4afa90[_0xa4c4('0x21')]['code']===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x14a90c,_0x4afa90[_0xa4c4('0x21')][_0xa4c4('0x22')]);return _0x171d1a(_0x4afa90[_0xa4c4('0x21')][_0xa4c4('0x22')]);}logger[_0xa4c4('0x21')](_0xa4c4('0x1c'),_0x14a90c,_0x4afa90[_0xa4c4('0x21')][_0xa4c4('0x22')]);return _0x165317(_0x4afa90[_0xa4c4('0x21')][_0xa4c4('0x22')]);}else{logger[_0xa4c4('0x1b')](_0xa4c4('0x1c'),_0x14a90c,'request\x20sent');_0x165317(_0x4afa90[_0xa4c4('0x23')][_0xa4c4('0x22')]);}})[_0xa4c4('0x24')](function(_0x105b48){logger[_0xa4c4('0x21')](_0xa4c4('0x1c'),_0x14a90c,_0x105b48);_0x171d1a(_0x105b48);});});}function respondWithStatusCode(_0x2066cc,_0x33968e){_0x33968e=_0x33968e||0xcc;return function(_0xd9a672){if(_0xd9a672){return _0x2066cc[_0xa4c4('0x25')](_0x33968e);}return _0x2066cc[_0xa4c4('0x26')](_0x33968e)[_0xa4c4('0x27')]();};}function respondWithResult(_0x5bdfab,_0x805cc7){_0x805cc7=_0x805cc7||0xc8;return function(_0x47d8e2){if(_0x47d8e2){return _0x5bdfab[_0xa4c4('0x26')](_0x805cc7)[_0xa4c4('0x28')](_0x47d8e2);}};}function respondWithFilteredResult(_0x2af00c,_0x43e6db){return function(_0x458c39){if(_0x458c39){var _0x58db0a=typeof _0x43e6db[_0xa4c4('0x29')]==='undefined'&&typeof _0x43e6db[_0xa4c4('0x2a')]==='undefined';var _0x45531f=_0x458c39[_0xa4c4('0x2b')];var _0x455599=_0x58db0a?0x0:_0x43e6db['offset'];var _0x12f728=_0x58db0a?_0x458c39[_0xa4c4('0x2b')]:_0x43e6db['offset']+_0x43e6db[_0xa4c4('0x2a')];var _0x3cd023;if(_0x12f728>=_0x45531f){_0x12f728=_0x45531f;_0x3cd023=0xc8;}else{_0x3cd023=0xce;}_0x2af00c[_0xa4c4('0x26')](_0x3cd023);return _0x2af00c[_0xa4c4('0x2c')]('Content-Range',_0x455599+'-'+_0x12f728+'/'+_0x45531f)['json'](_0x458c39);}return null;};}function patchUpdates(_0x58d343){return function(_0x8c828e){try{jsonpatch['apply'](_0x8c828e,_0x58d343,!![]);}catch(_0x412dc1){return BPromise[_0xa4c4('0x2d')](_0x412dc1);}return _0x8c828e['save']();};}function saveUpdates(_0x5c27e0,_0xb26d5f){return function(_0x513a89){if(_0x513a89){return _0x513a89[_0xa4c4('0x2e')](_0x5c27e0)[_0xa4c4('0x2f')](function(_0x3e0cfe){return _0x3e0cfe;});}return null;};}function removeEntity(_0x2c34be,_0x5b27d0){return function(_0x231c27){if(_0x231c27){return _0x231c27[_0xa4c4('0x30')]()[_0xa4c4('0x2f')](function(){var _0x4e4ec8=_0x231c27[_0xa4c4('0x31')]({'plain':!![]});var _0x4647bd='Contexts';return db['UserProfileResource'][_0xa4c4('0x30')]({'where':{'type':_0x4647bd,'resourceId':_0x4e4ec8['id']}})[_0xa4c4('0x2f')](function(){return _0x231c27;});})[_0xa4c4('0x2f')](function(){_0x2c34be['status'](0xcc)[_0xa4c4('0x27')]();});}};}function handleEntityNotFound(_0x430240,_0x227fce){return function(_0x2a8d38){if(!_0x2a8d38){_0x430240['sendStatus'](0x194);}return _0x2a8d38;};}function handleError(_0x233dfe,_0xb6d61b){_0xb6d61b=_0xb6d61b||0x1f4;return function(_0x1e19de){logger[_0xa4c4('0x21')](_0x1e19de[_0xa4c4('0x32')]);if(_0x1e19de[_0xa4c4('0x33')]){delete _0x1e19de[_0xa4c4('0x33')];}_0x233dfe[_0xa4c4('0x26')](_0xb6d61b)['send'](_0x1e19de);};}exports[_0xa4c4('0x34')]=function(_0x138fcf,_0x398d6e){var _0x2c838f={},_0x5e67e8={},_0x33ec37={'count':0x0,'rows':[]};var _0x15d2ee=_[_0xa4c4('0x35')](db[_0xa4c4('0x36')][_0xa4c4('0x37')],function(_0xdb5eeb){return{'name':_0xdb5eeb[_0xa4c4('0x38')],'type':_0xdb5eeb[_0xa4c4('0x39')]['key']};});_0x5e67e8[_0xa4c4('0x3a')]=_[_0xa4c4('0x35')](_0x15d2ee,_0xa4c4('0x33'));_0x5e67e8[_0xa4c4('0x3b')]=_['keys'](_0x138fcf[_0xa4c4('0x3b')]);_0x5e67e8[_0xa4c4('0x3c')]=_[_0xa4c4('0x3d')](_0x5e67e8[_0xa4c4('0x3a')],_0x5e67e8[_0xa4c4('0x3b')]);_0x2c838f['attributes']=_[_0xa4c4('0x3d')](_0x5e67e8['model'],qs[_0xa4c4('0x3e')](_0x138fcf[_0xa4c4('0x3b')][_0xa4c4('0x3e')]));_0x2c838f[_0xa4c4('0x3f')]=_0x2c838f[_0xa4c4('0x3f')][_0xa4c4('0x40')]?_0x2c838f['attributes']:_0x5e67e8['model'];if(!_0x138fcf[_0xa4c4('0x3b')][_0xa4c4('0x41')](_0xa4c4('0x42'))){_0x2c838f['limit']=qs[_0xa4c4('0x2a')](_0x138fcf[_0xa4c4('0x3b')]['limit']);_0x2c838f[_0xa4c4('0x29')]=qs[_0xa4c4('0x29')](_0x138fcf[_0xa4c4('0x3b')][_0xa4c4('0x29')]);}_0x2c838f[_0xa4c4('0x43')]=qs[_0xa4c4('0x44')](_0x138fcf[_0xa4c4('0x3b')][_0xa4c4('0x44')]);_0x2c838f[_0xa4c4('0x45')]=qs[_0xa4c4('0x3c')](_[_0xa4c4('0x46')](_0x138fcf[_0xa4c4('0x3b')],_0x5e67e8['filters']),_0x15d2ee);if(_0x138fcf[_0xa4c4('0x3b')][_0xa4c4('0x47')]){_0x2c838f[_0xa4c4('0x45')]=_['merge'](_0x2c838f[_0xa4c4('0x45')],{'$or':_[_0xa4c4('0x35')](_0x15d2ee,function(_0x5e8b46){if(_0x5e8b46[_0xa4c4('0x39')]!==_0xa4c4('0x48')){var _0x42c551={};_0x42c551[_0x5e8b46['name']]={'$like':'%'+_0x138fcf['query'][_0xa4c4('0x47')]+'%'};return _0x42c551;}})});}_0x2c838f=_[_0xa4c4('0x49')]({},_0x2c838f,_0x138fcf[_0xa4c4('0x4a')]);var _0x4d0030={'where':_0x2c838f[_0xa4c4('0x45')]};return db[_0xa4c4('0x36')][_0xa4c4('0x2b')](_0x4d0030)[_0xa4c4('0x2f')](function(_0x17d05c){_0x33ec37['count']=_0x17d05c;if(_0x138fcf[_0xa4c4('0x3b')][_0xa4c4('0x4b')]){_0x2c838f['include']=[{'all':!![]}];}return db[_0xa4c4('0x36')][_0xa4c4('0x4c')](_0x2c838f);})['then'](function(_0x1bde6e){_0x33ec37[_0xa4c4('0x4d')]=_0x1bde6e;return _0x33ec37;})['then'](respondWithFilteredResult(_0x398d6e,_0x2c838f))[_0xa4c4('0x24')](handleError(_0x398d6e,null));};exports[_0xa4c4('0x4e')]=function(_0x45a019,_0x1c79a6){var _0x41ddc1={'raw':![],'where':{'id':_0x45a019[_0xa4c4('0x4f')]['id']}},_0x94ca53={};_0x94ca53[_0xa4c4('0x3a')]=_[_0xa4c4('0x50')](db[_0xa4c4('0x36')]['rawAttributes']);_0x94ca53[_0xa4c4('0x3b')]=_[_0xa4c4('0x50')](_0x45a019[_0xa4c4('0x3b')]);_0x94ca53[_0xa4c4('0x3c')]=_[_0xa4c4('0x3d')](_0x94ca53[_0xa4c4('0x3a')],_0x94ca53[_0xa4c4('0x3b')]);_0x41ddc1[_0xa4c4('0x3f')]=_[_0xa4c4('0x3d')](_0x94ca53['model'],qs[_0xa4c4('0x3e')](_0x45a019[_0xa4c4('0x3b')][_0xa4c4('0x3e')]));_0x41ddc1['attributes']=_0x41ddc1[_0xa4c4('0x3f')]['length']?_0x41ddc1[_0xa4c4('0x3f')]:_0x94ca53[_0xa4c4('0x3a')];if(_0x45a019['query'][_0xa4c4('0x4b')]){_0x41ddc1['include']=[{'all':!![]}];}_0x41ddc1=_[_0xa4c4('0x49')]({},_0x41ddc1,_0x45a019[_0xa4c4('0x4a')]);return db[_0xa4c4('0x36')][_0xa4c4('0x51')](_0x41ddc1)[_0xa4c4('0x2f')](handleEntityNotFound(_0x1c79a6,null))['then'](respondWithResult(_0x1c79a6,null))['catch'](handleError(_0x1c79a6,null));};exports[_0xa4c4('0x52')]=function(_0x32bc39,_0x4b7a57,_0x1431f8){var _0x50f08e;return db[_0xa4c4('0x36')]['create'](_0x32bc39[_0xa4c4('0x53')],{'raw':!![]})[_0xa4c4('0x2f')](function(_0x5958ab){_0x50f08e=_0x5958ab;return db[_0xa4c4('0x36')][_0xa4c4('0x4c')]({'raw':!![]});})[_0xa4c4('0x2f')](function(_0x286031){var _0x28bf9=fs['readFileSync'](path['join'](config[_0xa4c4('0x54')],_0xa4c4('0x55')),_0xa4c4('0x56'));var _0x197ab5=ejs[_0xa4c4('0x57')](_0x28bf9,{'contexts':_0x286031||[]});fs[_0xa4c4('0x58')](_0xa4c4('0x59'),_0x197ab5);})[_0xa4c4('0x2f')](function(){return respondWithRpcPromise('Reload','create',{'module':_0xa4c4('0x5a')});})[_0xa4c4('0x2f')](function(){var _0x1e6a2e=_0x32bc39['user'][_0xa4c4('0x31')]({'plain':!![]});if(!_0x1e6a2e)throw new Error(_0xa4c4('0x5b'));if(_0x1e6a2e[_0xa4c4('0x5c')]===_0xa4c4('0x5d')){var _0x1b035=_0x50f08e[_0xa4c4('0x31')]({'plain':!![]});return db[_0xa4c4('0x5e')][_0xa4c4('0x51')]({'where':{'name':'Contexts','userProfileId':_0x1e6a2e[_0xa4c4('0x5f')]},'raw':!![]})['then'](function(_0x1ef671){if(_0x1ef671&&_0x1ef671['autoAssociation']===0x0){return db[_0xa4c4('0x60')][_0xa4c4('0x52')]({'name':_0x1b035[_0xa4c4('0x33')],'resourceId':_0x1b035['id'],'type':_0x1ef671[_0xa4c4('0x33')],'sectionId':_0x1ef671['id']},{})[_0xa4c4('0x2f')](function(){return _0x50f08e;});}else{return _0x50f08e;}})[_0xa4c4('0x24')](function(_0x1b3965){logger[_0xa4c4('0x21')](_0xa4c4('0x61'),_0x1b3965);throw _0x1b3965;});}return _0x50f08e;})[_0xa4c4('0x2f')](respondWithResult(_0x4b7a57,0xc9))[_0xa4c4('0x24')](handleError(_0x4b7a57,null));};exports[_0xa4c4('0x2e')]=function(_0x4a3a50,_0x51f142,_0x220706){var _0x1dea59;return db[_0xa4c4('0x36')]['find']({'where':{'id':_0x4a3a50['params']['id']}})[_0xa4c4('0x2f')](handleEntityNotFound(_0x51f142,null))[_0xa4c4('0x2f')](saveUpdates(_0x4a3a50[_0xa4c4('0x53')],null))[_0xa4c4('0x2f')](function(_0x18e566){if(_0x18e566){_0x1dea59=_0x18e566;return db[_0xa4c4('0x36')][_0xa4c4('0x4c')]({'raw':!![]});}})['then'](function(_0x58273d){var _0x45705f=fs[_0xa4c4('0x62')](path[_0xa4c4('0x63')](config[_0xa4c4('0x54')],_0xa4c4('0x55')),_0xa4c4('0x56'));var _0x3e25f0=ejs['render'](_0x45705f,{'contexts':_0x58273d||[]});fs[_0xa4c4('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x3e25f0);})[_0xa4c4('0x2f')](function(){return respondWithRpcPromise(_0xa4c4('0x64'),_0xa4c4('0x2e'),{'module':'chan_sip.so'});})[_0xa4c4('0x2f')](function(){return _0x1dea59;})[_0xa4c4('0x2f')](respondWithResult(_0x51f142,null))[_0xa4c4('0x24')](handleError(_0x51f142,null));};exports[_0xa4c4('0x30')]=function(_0x2ad443,_0x45f0fd,_0x22b1f2){var _0xe3b6fa;return db['VoiceContext'][_0xa4c4('0x51')]({'where':{'id':_0x2ad443[_0xa4c4('0x4f')]['id']}})['then'](handleEntityNotFound(_0x45f0fd,null))[_0xa4c4('0x2f')](removeEntity(_0x45f0fd,null))[_0xa4c4('0x2f')](function(){return db[_0xa4c4('0x36')]['findAll']({'raw':!![]});})['then'](function(_0x1bdaa4){var _0x259347=fs[_0xa4c4('0x62')](path[_0xa4c4('0x63')](config[_0xa4c4('0x54')],_0xa4c4('0x55')),'utf8');var _0x42db1d=ejs['render'](_0x259347,{'contexts':_0x1bdaa4});fs[_0xa4c4('0x58')](_0xa4c4('0x59'),_0x42db1d);return respondWithRpcPromise(_0xa4c4('0x64'),_0xa4c4('0x30'),{'module':_0xa4c4('0x5a')});})['catch'](handleError(_0x45f0fd,null));};