21165495267df0cf0b15553e0efc259c4e0c269f
[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 _0xee57=['rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','jayson/promise','client','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','error','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','Contexts','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','VoiceContext','includeAll','findAll','rows','catch','show','keys','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','writeFileSync','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','params','utf8','chan_sip.so','render','/etc/asterisk/extensions_xcally_contexts.conf'];(function(_0x330fc3,_0x312c1c){var _0x31acd7=function(_0x18cb03){while(--_0x18cb03){_0x330fc3['push'](_0x330fc3['shift']());}};_0x31acd7(++_0x312c1c);}(_0xee57,0x1ea));var _0x7ee5=function(_0x45b51a,_0x402c5e){_0x45b51a=_0x45b51a-0x0;var _0x1f63e1=_0xee57[_0x45b51a];return _0x1f63e1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7ee5('0x0'));var zipdir=require(_0x7ee5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7ee5('0x2'));var Mustache=require(_0x7ee5('0x3'));var util=require(_0x7ee5('0x4'));var path=require(_0x7ee5('0x5'));var sox=require(_0x7ee5('0x6'));var csv=require(_0x7ee5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7ee5('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7ee5('0x9'));var deskjs=require(_0x7ee5('0xa'));var toCsv=require(_0x7ee5('0x7'));var querystring=require(_0x7ee5('0xb'));var Papa=require(_0x7ee5('0xc'));var Redis=require(_0x7ee5('0xd'));var authService=require(_0x7ee5('0xe'));var qs=require(_0x7ee5('0xf'));var as=require(_0x7ee5('0x10'));var hardwareService=require(_0x7ee5('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x7ee5('0x12'));var config=require(_0x7ee5('0x13'));var licenseUtil=require(_0x7ee5('0x14'));var db=require(_0x7ee5('0x15'))['db'];var jayson=require(_0x7ee5('0x16'));var client=jayson[_0x7ee5('0x17')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2015f9,_0x47c8f4,_0x40cbb0,_0x1e5152){return new BPromise(function(_0x1a56d7,_0x4dcaa2){var _0x205d9d=_0x1e5152||client;return _0x205d9d[_0x7ee5('0x18')](_0x2015f9,_0x40cbb0)['then'](function(_0x31a5e0){logger[_0x7ee5('0x19')](_0x7ee5('0x1a'),_0x47c8f4,_0x7ee5('0x1b'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x47c8f4,_0x7ee5('0x1b'),JSON['stringify'](_0x31a5e0));if(_0x31a5e0['error']){if(_0x31a5e0[_0x7ee5('0x1c')]['code']===0x1f4){logger['error'](_0x7ee5('0x1a'),_0x47c8f4,_0x31a5e0[_0x7ee5('0x1c')][_0x7ee5('0x1d')]);return _0x4dcaa2(_0x31a5e0[_0x7ee5('0x1c')][_0x7ee5('0x1d')]);}logger[_0x7ee5('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x47c8f4,_0x31a5e0[_0x7ee5('0x1c')][_0x7ee5('0x1d')]);return _0x1a56d7(_0x31a5e0[_0x7ee5('0x1c')]['message']);}else{logger[_0x7ee5('0x19')](_0x7ee5('0x1a'),_0x47c8f4,'request\x20sent');_0x1a56d7(_0x31a5e0[_0x7ee5('0x1e')][_0x7ee5('0x1d')]);}})['catch'](function(_0xb831e3){logger[_0x7ee5('0x1c')](_0x7ee5('0x1a'),_0x47c8f4,_0xb831e3);_0x4dcaa2(_0xb831e3);});});}function respondWithStatusCode(_0xbf763f,_0x3d9fec){_0x3d9fec=_0x3d9fec||0xcc;return function(_0x225e89){if(_0x225e89){return _0xbf763f[_0x7ee5('0x1f')](_0x3d9fec);}return _0xbf763f[_0x7ee5('0x20')](_0x3d9fec)[_0x7ee5('0x21')]();};}function respondWithResult(_0x2eaff7,_0x2ed514){_0x2ed514=_0x2ed514||0xc8;return function(_0x544ef5){if(_0x544ef5){return _0x2eaff7[_0x7ee5('0x20')](_0x2ed514)[_0x7ee5('0x22')](_0x544ef5);}};}function respondWithFilteredResult(_0x1174b6,_0x57987c){return function(_0x48da85){if(_0x48da85){var _0x1b2563=typeof _0x57987c[_0x7ee5('0x23')]===_0x7ee5('0x24')&&typeof _0x57987c[_0x7ee5('0x25')]===_0x7ee5('0x24');var _0x425618=_0x48da85['count'];var _0x492fc7=_0x1b2563?0x0:_0x57987c['offset'];var _0x42a347=_0x1b2563?_0x48da85[_0x7ee5('0x26')]:_0x57987c['offset']+_0x57987c[_0x7ee5('0x25')];var _0x70083a;if(_0x42a347>=_0x425618){_0x42a347=_0x425618;_0x70083a=0xc8;}else{_0x70083a=0xce;}_0x1174b6[_0x7ee5('0x20')](_0x70083a);return _0x1174b6[_0x7ee5('0x27')](_0x7ee5('0x28'),_0x492fc7+'-'+_0x42a347+'/'+_0x425618)[_0x7ee5('0x22')](_0x48da85);}return null;};}function patchUpdates(_0xeae5dc){return function(_0x25b46f){try{jsonpatch[_0x7ee5('0x29')](_0x25b46f,_0xeae5dc,!![]);}catch(_0x297d7f){return BPromise['reject'](_0x297d7f);}return _0x25b46f[_0x7ee5('0x2a')]();};}function saveUpdates(_0x39c449,_0x35ebb3){return function(_0x514896){if(_0x514896){return _0x514896[_0x7ee5('0x2b')](_0x39c449)[_0x7ee5('0x2c')](function(_0x5b2d49){return _0x5b2d49;});}return null;};}function removeEntity(_0x5062cd,_0x2b5be2){return function(_0x56d2a7){if(_0x56d2a7){return _0x56d2a7[_0x7ee5('0x2d')]()[_0x7ee5('0x2c')](function(){var _0x1655e7=_0x56d2a7['get']({'plain':!![]});var _0x3adc7f=_0x7ee5('0x2e');return db[_0x7ee5('0x2f')][_0x7ee5('0x2d')]({'where':{'type':_0x3adc7f,'resourceId':_0x1655e7['id']}})['then'](function(){return _0x56d2a7;});})['then'](function(){_0x5062cd[_0x7ee5('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53519a,_0x1215a2){return function(_0x12d748){if(!_0x12d748){_0x53519a[_0x7ee5('0x1f')](0x194);}return _0x12d748;};}function handleError(_0x405900,_0x5d61f6){_0x5d61f6=_0x5d61f6||0x1f4;return function(_0x36d10a){logger['error'](_0x36d10a[_0x7ee5('0x30')]);if(_0x36d10a[_0x7ee5('0x31')]){delete _0x36d10a[_0x7ee5('0x31')];}_0x405900[_0x7ee5('0x20')](_0x5d61f6)[_0x7ee5('0x32')](_0x36d10a);};}exports[_0x7ee5('0x33')]=function(_0x31afe4,_0x3adf58){var _0x47f6a0={},_0x319989={},_0x144f06={'count':0x0,'rows':[]};var _0x4968ae=_[_0x7ee5('0x34')](db['VoiceContext'][_0x7ee5('0x35')],function(_0x138f65){return{'name':_0x138f65[_0x7ee5('0x36')],'type':_0x138f65['type']['key']};});_0x319989[_0x7ee5('0x37')]=_[_0x7ee5('0x34')](_0x4968ae,_0x7ee5('0x31'));_0x319989['query']=_['keys'](_0x31afe4[_0x7ee5('0x38')]);_0x319989['filters']=_[_0x7ee5('0x39')](_0x319989[_0x7ee5('0x37')],_0x319989[_0x7ee5('0x38')]);_0x47f6a0['attributes']=_[_0x7ee5('0x39')](_0x319989[_0x7ee5('0x37')],qs[_0x7ee5('0x3a')](_0x31afe4[_0x7ee5('0x38')][_0x7ee5('0x3a')]));_0x47f6a0[_0x7ee5('0x3b')]=_0x47f6a0[_0x7ee5('0x3b')][_0x7ee5('0x3c')]?_0x47f6a0['attributes']:_0x319989[_0x7ee5('0x37')];if(!_0x31afe4['query']['hasOwnProperty'](_0x7ee5('0x3d'))){_0x47f6a0[_0x7ee5('0x25')]=qs['limit'](_0x31afe4['query'][_0x7ee5('0x25')]);_0x47f6a0[_0x7ee5('0x23')]=qs[_0x7ee5('0x23')](_0x31afe4['query'][_0x7ee5('0x23')]);}_0x47f6a0[_0x7ee5('0x3e')]=qs[_0x7ee5('0x3f')](_0x31afe4[_0x7ee5('0x38')][_0x7ee5('0x3f')]);_0x47f6a0[_0x7ee5('0x40')]=qs['filters'](_[_0x7ee5('0x41')](_0x31afe4['query'],_0x319989[_0x7ee5('0x42')]),_0x4968ae);if(_0x31afe4[_0x7ee5('0x38')][_0x7ee5('0x43')]){_0x47f6a0[_0x7ee5('0x40')]=_[_0x7ee5('0x44')](_0x47f6a0[_0x7ee5('0x40')],{'$or':_[_0x7ee5('0x34')](_0x4968ae,function(_0x42109e){if(_0x42109e[_0x7ee5('0x45')]!==_0x7ee5('0x46')){var _0x3e3d74={};_0x3e3d74[_0x42109e[_0x7ee5('0x31')]]={'$like':'%'+_0x31afe4['query'][_0x7ee5('0x43')]+'%'};return _0x3e3d74;}})});}_0x47f6a0=_[_0x7ee5('0x44')]({},_0x47f6a0,_0x31afe4[_0x7ee5('0x47')]);var _0x1c2aed={'where':_0x47f6a0[_0x7ee5('0x40')]};return db[_0x7ee5('0x48')]['count'](_0x1c2aed)[_0x7ee5('0x2c')](function(_0x444d76){_0x144f06[_0x7ee5('0x26')]=_0x444d76;if(_0x31afe4[_0x7ee5('0x38')][_0x7ee5('0x49')]){_0x47f6a0['include']=[{'all':!![]}];}return db[_0x7ee5('0x48')][_0x7ee5('0x4a')](_0x47f6a0);})[_0x7ee5('0x2c')](function(_0x408b09){_0x144f06[_0x7ee5('0x4b')]=_0x408b09;return _0x144f06;})['then'](respondWithFilteredResult(_0x3adf58,_0x47f6a0))[_0x7ee5('0x4c')](handleError(_0x3adf58,null));};exports[_0x7ee5('0x4d')]=function(_0x486462,_0x398d4c){var _0x2f707e={'raw':![],'where':{'id':_0x486462['params']['id']}},_0x1c8986={};_0x1c8986['model']=_['keys'](db[_0x7ee5('0x48')][_0x7ee5('0x35')]);_0x1c8986['query']=_[_0x7ee5('0x4e')](_0x486462[_0x7ee5('0x38')]);_0x1c8986['filters']=_[_0x7ee5('0x39')](_0x1c8986[_0x7ee5('0x37')],_0x1c8986['query']);_0x2f707e[_0x7ee5('0x3b')]=_[_0x7ee5('0x39')](_0x1c8986[_0x7ee5('0x37')],qs['fields'](_0x486462[_0x7ee5('0x38')][_0x7ee5('0x3a')]));_0x2f707e['attributes']=_0x2f707e[_0x7ee5('0x3b')][_0x7ee5('0x3c')]?_0x2f707e['attributes']:_0x1c8986[_0x7ee5('0x37')];if(_0x486462[_0x7ee5('0x38')]['includeAll']){_0x2f707e['include']=[{'all':!![]}];}_0x2f707e=_[_0x7ee5('0x44')]({},_0x2f707e,_0x486462[_0x7ee5('0x47')]);return db[_0x7ee5('0x48')][_0x7ee5('0x4f')](_0x2f707e)['then'](handleEntityNotFound(_0x398d4c,null))[_0x7ee5('0x2c')](respondWithResult(_0x398d4c,null))['catch'](handleError(_0x398d4c,null));};exports[_0x7ee5('0x50')]=function(_0x277dd7,_0xe2b9b7,_0x277738){var _0x461fa0;return db[_0x7ee5('0x48')][_0x7ee5('0x50')](_0x277dd7[_0x7ee5('0x51')],{'raw':!![]})[_0x7ee5('0x2c')](function(_0x114d4e){_0x461fa0=_0x114d4e;return db[_0x7ee5('0x48')][_0x7ee5('0x4a')]({'raw':!![]});})[_0x7ee5('0x2c')](function(_0x51c66a){var _0x3bc496=fs[_0x7ee5('0x52')](path[_0x7ee5('0x53')](config[_0x7ee5('0x54')],_0x7ee5('0x55')),'utf8');var _0x39d902=ejs['render'](_0x3bc496,{'contexts':_0x51c66a||[]});fs[_0x7ee5('0x56')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x39d902);})[_0x7ee5('0x2c')](function(){return respondWithRpcPromise(_0x7ee5('0x57'),'create',{'module':'chan_sip.so'});})[_0x7ee5('0x2c')](function(){var _0x367fe4=_0x277dd7['user']['get']({'plain':!![]});if(!_0x367fe4)throw new Error(_0x7ee5('0x58'));if(_0x367fe4['role']==='user'){var _0x45b9cb=_0x461fa0[_0x7ee5('0x59')]({'plain':!![]});return db[_0x7ee5('0x5a')]['find']({'where':{'name':_0x7ee5('0x2e'),'userProfileId':_0x367fe4[_0x7ee5('0x5b')]},'raw':!![]})[_0x7ee5('0x2c')](function(_0x3110da){if(_0x3110da&&_0x3110da[_0x7ee5('0x5c')]===0x0){return db[_0x7ee5('0x2f')][_0x7ee5('0x50')]({'name':_0x45b9cb[_0x7ee5('0x31')],'resourceId':_0x45b9cb['id'],'type':_0x3110da['name'],'sectionId':_0x3110da['id']},{})[_0x7ee5('0x2c')](function(){return _0x461fa0;});}else{return _0x461fa0;}})[_0x7ee5('0x4c')](function(_0x4465f4){logger[_0x7ee5('0x1c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4465f4);throw _0x4465f4;});}return _0x461fa0;})['then'](respondWithResult(_0xe2b9b7,0xc9))[_0x7ee5('0x4c')](handleError(_0xe2b9b7,null));};exports[_0x7ee5('0x2b')]=function(_0x975b24,_0x34773c,_0x50a467){var _0x442a5f;return db['VoiceContext'][_0x7ee5('0x4f')]({'where':{'id':_0x975b24[_0x7ee5('0x5d')]['id']}})[_0x7ee5('0x2c')](handleEntityNotFound(_0x34773c,null))[_0x7ee5('0x2c')](saveUpdates(_0x975b24[_0x7ee5('0x51')],null))[_0x7ee5('0x2c')](function(_0x3ed178){if(_0x3ed178){_0x442a5f=_0x3ed178;return db['VoiceContext'][_0x7ee5('0x4a')]({'raw':!![]});}})[_0x7ee5('0x2c')](function(_0x21f04b){var _0x49de7b=fs['readFileSync'](path[_0x7ee5('0x53')](config[_0x7ee5('0x54')],_0x7ee5('0x55')),_0x7ee5('0x5e'));var _0x173687=ejs['render'](_0x49de7b,{'contexts':_0x21f04b||[]});fs[_0x7ee5('0x56')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x173687);})[_0x7ee5('0x2c')](function(){return respondWithRpcPromise('Reload',_0x7ee5('0x2b'),{'module':_0x7ee5('0x5f')});})['then'](function(){return _0x442a5f;})[_0x7ee5('0x2c')](respondWithResult(_0x34773c,null))[_0x7ee5('0x4c')](handleError(_0x34773c,null));};exports[_0x7ee5('0x2d')]=function(_0x1e6c16,_0x36a32b,_0x4395fc){var _0x128a4f;return db['VoiceContext'][_0x7ee5('0x4f')]({'where':{'id':_0x1e6c16[_0x7ee5('0x5d')]['id']}})[_0x7ee5('0x2c')](handleEntityNotFound(_0x36a32b,null))[_0x7ee5('0x2c')](removeEntity(_0x36a32b,null))[_0x7ee5('0x2c')](function(){return db[_0x7ee5('0x48')][_0x7ee5('0x4a')]({'raw':!![]});})[_0x7ee5('0x2c')](function(_0x2f824c){var _0x48605=fs[_0x7ee5('0x52')](path[_0x7ee5('0x53')](config['root'],_0x7ee5('0x55')),_0x7ee5('0x5e'));var _0x59e8c4=ejs[_0x7ee5('0x60')](_0x48605,{'contexts':_0x2f824c});fs['writeFileSync'](_0x7ee5('0x61'),_0x59e8c4);return respondWithRpcPromise(_0x7ee5('0x57'),_0x7ee5('0x2d'),{'module':'chan_sip.so'});})[_0x7ee5('0x4c')](handleError(_0x36a32b,null));};