Built motion from commit b5996064.|2.6.21
[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 _0xe6c0=['request\x20sent','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','get','UserProfileResource','destroy','name','index','map','VoiceContext','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','length','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','writeFileSync','Reload','chan_sip.so','user','role','UserProfileSection','Contexts','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','render','/etc/asterisk/extensions_xcally_contexts.conf','eml-format','rimraf','fast-json-patch','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','client','request','then','info','debug','VoiceContext,\x20%s,\x20%s,\x20%s'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xe6c0,0xb0));var _0x0e6c=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0xe6c0[_0x2ec461];return _0x28603d;};'use strict';var emlformat=require(_0x0e6c('0x0'));var rimraf=require(_0x0e6c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e6c('0x2'));var rp=require('request-promise');var moment=require(_0x0e6c('0x3'));var BPromise=require(_0x0e6c('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0e6c('0x5'));var sox=require('sox');var csv=require(_0x0e6c('0x6'));var ejs=require(_0x0e6c('0x7'));var fs=require('fs');var fs_extra=require(_0x0e6c('0x8'));var _=require(_0x0e6c('0x9'));var squel=require(_0x0e6c('0xa'));var crypto=require(_0x0e6c('0xb'));var jsforce=require(_0x0e6c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x0e6c('0x6'));var querystring=require('querystring');var Papa=require(_0x0e6c('0xd'));var Redis=require('ioredis');var authService=require(_0x0e6c('0xe'));var qs=require(_0x0e6c('0xf'));var as=require(_0x0e6c('0x10'));var hardwareService=require(_0x0e6c('0x11'));var logger=require(_0x0e6c('0x12'))(_0x0e6c('0x13'));var utils=require(_0x0e6c('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0e6c('0x15'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x0e6c('0x16')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51dece,_0x306890,_0x5f270d,_0x40d2bc){return new BPromise(function(_0xb9f5c5,_0x3f7195){var _0x2a2afc=_0x40d2bc||client;return _0x2a2afc[_0x0e6c('0x17')](_0x51dece,_0x5f270d)[_0x0e6c('0x18')](function(_0x4146ae){logger[_0x0e6c('0x19')]('VoiceContext,\x20%s,\x20%s',_0x306890,'request\x20sent');logger[_0x0e6c('0x1a')](_0x0e6c('0x1b'),_0x306890,_0x0e6c('0x1c'),JSON['stringify'](_0x4146ae));if(_0x4146ae['error']){if(_0x4146ae[_0x0e6c('0x1d')][_0x0e6c('0x1e')]===0x1f4){logger[_0x0e6c('0x1d')](_0x0e6c('0x1f'),_0x306890,_0x4146ae[_0x0e6c('0x1d')][_0x0e6c('0x20')]);return _0x3f7195(_0x4146ae[_0x0e6c('0x1d')]['message']);}logger[_0x0e6c('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x306890,_0x4146ae['error']['message']);return _0xb9f5c5(_0x4146ae[_0x0e6c('0x1d')][_0x0e6c('0x20')]);}else{logger[_0x0e6c('0x19')](_0x0e6c('0x1f'),_0x306890,_0x0e6c('0x1c'));_0xb9f5c5(_0x4146ae[_0x0e6c('0x21')][_0x0e6c('0x20')]);}})[_0x0e6c('0x22')](function(_0x1d1238){logger[_0x0e6c('0x1d')](_0x0e6c('0x1f'),_0x306890,_0x1d1238);_0x3f7195(_0x1d1238);});});}function respondWithStatusCode(_0x60bfbf,_0x2872c5){_0x2872c5=_0x2872c5||0xcc;return function(_0x34f78d){if(_0x34f78d){return _0x60bfbf[_0x0e6c('0x23')](_0x2872c5);}return _0x60bfbf[_0x0e6c('0x24')](_0x2872c5)[_0x0e6c('0x25')]();};}function respondWithResult(_0x209d71,_0xfabe3c){_0xfabe3c=_0xfabe3c||0xc8;return function(_0x11c642){if(_0x11c642){return _0x209d71[_0x0e6c('0x24')](_0xfabe3c)['json'](_0x11c642);}};}function respondWithFilteredResult(_0x380943,_0x344508){return function(_0xd35a9b){if(_0xd35a9b){var _0x52c055=typeof _0x344508[_0x0e6c('0x26')]===_0x0e6c('0x27')&&typeof _0x344508[_0x0e6c('0x28')]===_0x0e6c('0x27');var _0x3a8a1b=_0xd35a9b[_0x0e6c('0x29')];var _0x25e9a1=_0x52c055?0x0:_0x344508[_0x0e6c('0x26')];var _0x3385ab=_0x52c055?_0xd35a9b[_0x0e6c('0x29')]:_0x344508[_0x0e6c('0x26')]+_0x344508[_0x0e6c('0x28')];var _0x5725b8;if(_0x3385ab>=_0x3a8a1b){_0x3385ab=_0x3a8a1b;_0x5725b8=0xc8;}else{_0x5725b8=0xce;}_0x380943[_0x0e6c('0x24')](_0x5725b8);return _0x380943[_0x0e6c('0x2a')](_0x0e6c('0x2b'),_0x25e9a1+'-'+_0x3385ab+'/'+_0x3a8a1b)[_0x0e6c('0x2c')](_0xd35a9b);}return null;};}function patchUpdates(_0x32be33){return function(_0x2c2311){try{jsonpatch[_0x0e6c('0x2d')](_0x2c2311,_0x32be33,!![]);}catch(_0x3feb53){return BPromise[_0x0e6c('0x2e')](_0x3feb53);}return _0x2c2311['save']();};}function saveUpdates(_0x530eec,_0x42670a){return function(_0x1f92e4){if(_0x1f92e4){return _0x1f92e4[_0x0e6c('0x2f')](_0x530eec)[_0x0e6c('0x18')](function(_0x5a00b6){return _0x5a00b6;});}return null;};}function removeEntity(_0x4db451,_0x5b119e){return function(_0x50c20c){if(_0x50c20c){return _0x50c20c['destroy']()['then'](function(){var _0x570453=_0x50c20c[_0x0e6c('0x30')]({'plain':!![]});var _0x449358='Contexts';return db[_0x0e6c('0x31')][_0x0e6c('0x32')]({'where':{'type':_0x449358,'resourceId':_0x570453['id']}})['then'](function(){return _0x50c20c;});})[_0x0e6c('0x18')](function(){_0x4db451[_0x0e6c('0x24')](0xcc)[_0x0e6c('0x25')]();});}};}function handleEntityNotFound(_0x58a98f,_0x4bd93a){return function(_0x36cdf8){if(!_0x36cdf8){_0x58a98f[_0x0e6c('0x23')](0x194);}return _0x36cdf8;};}function handleError(_0x54b00d,_0x2676ca){_0x2676ca=_0x2676ca||0x1f4;return function(_0x1bf5bd){logger['error'](_0x1bf5bd['stack']);if(_0x1bf5bd[_0x0e6c('0x33')]){delete _0x1bf5bd['name'];}_0x54b00d[_0x0e6c('0x24')](_0x2676ca)['send'](_0x1bf5bd);};}exports[_0x0e6c('0x34')]=function(_0x10f00b,_0x2be623){var _0x49e741={},_0x3053c7={},_0x37689f={'count':0x0,'rows':[]};var _0x531bdd=_[_0x0e6c('0x35')](db[_0x0e6c('0x36')][_0x0e6c('0x37')],function(_0x462976){return{'name':_0x462976[_0x0e6c('0x38')],'type':_0x462976['type'][_0x0e6c('0x39')]};});_0x3053c7[_0x0e6c('0x3a')]=_[_0x0e6c('0x35')](_0x531bdd,'name');_0x3053c7['query']=_[_0x0e6c('0x3b')](_0x10f00b[_0x0e6c('0x3c')]);_0x3053c7[_0x0e6c('0x3d')]=_[_0x0e6c('0x3e')](_0x3053c7[_0x0e6c('0x3a')],_0x3053c7[_0x0e6c('0x3c')]);_0x49e741['attributes']=_[_0x0e6c('0x3e')](_0x3053c7[_0x0e6c('0x3a')],qs['fields'](_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x3f')]));_0x49e741[_0x0e6c('0x40')]=_0x49e741['attributes']['length']?_0x49e741[_0x0e6c('0x40')]:_0x3053c7['model'];if(!_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x41')](_0x0e6c('0x42'))){_0x49e741[_0x0e6c('0x28')]=qs[_0x0e6c('0x28')](_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x28')]);_0x49e741[_0x0e6c('0x26')]=qs['offset'](_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x26')]);}_0x49e741[_0x0e6c('0x43')]=qs[_0x0e6c('0x44')](_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x44')]);_0x49e741[_0x0e6c('0x45')]=qs[_0x0e6c('0x3d')](_[_0x0e6c('0x46')](_0x10f00b[_0x0e6c('0x3c')],_0x3053c7[_0x0e6c('0x3d')]),_0x531bdd);if(_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x47')]){_0x49e741[_0x0e6c('0x45')]=_['merge'](_0x49e741[_0x0e6c('0x45')],{'$or':_[_0x0e6c('0x35')](_0x531bdd,function(_0xd126c9){if(_0xd126c9[_0x0e6c('0x48')]!==_0x0e6c('0x49')){var _0x772db1={};_0x772db1[_0xd126c9[_0x0e6c('0x33')]]={'$like':'%'+_0x10f00b['query'][_0x0e6c('0x47')]+'%'};return _0x772db1;}})});}_0x49e741=_[_0x0e6c('0x4a')]({},_0x49e741,_0x10f00b[_0x0e6c('0x4b')]);var _0x3607ec={'where':_0x49e741[_0x0e6c('0x45')]};return db['VoiceContext'][_0x0e6c('0x29')](_0x3607ec)[_0x0e6c('0x18')](function(_0x3668f1){_0x37689f[_0x0e6c('0x29')]=_0x3668f1;if(_0x10f00b[_0x0e6c('0x3c')][_0x0e6c('0x4c')]){_0x49e741[_0x0e6c('0x4d')]=[{'all':!![]}];}return db['VoiceContext'][_0x0e6c('0x4e')](_0x49e741);})[_0x0e6c('0x18')](function(_0x14022f){_0x37689f[_0x0e6c('0x4f')]=_0x14022f;return _0x37689f;})[_0x0e6c('0x18')](respondWithFilteredResult(_0x2be623,_0x49e741))[_0x0e6c('0x22')](handleError(_0x2be623,null));};exports[_0x0e6c('0x50')]=function(_0x2d0c8a,_0x289660){var _0x21abe5={'raw':![],'where':{'id':_0x2d0c8a[_0x0e6c('0x51')]['id']}},_0x8a755e={};_0x8a755e[_0x0e6c('0x3a')]=_[_0x0e6c('0x3b')](db['VoiceContext'][_0x0e6c('0x37')]);_0x8a755e[_0x0e6c('0x3c')]=_[_0x0e6c('0x3b')](_0x2d0c8a[_0x0e6c('0x3c')]);_0x8a755e['filters']=_['intersection'](_0x8a755e[_0x0e6c('0x3a')],_0x8a755e[_0x0e6c('0x3c')]);_0x21abe5[_0x0e6c('0x40')]=_[_0x0e6c('0x3e')](_0x8a755e[_0x0e6c('0x3a')],qs['fields'](_0x2d0c8a[_0x0e6c('0x3c')][_0x0e6c('0x3f')]));_0x21abe5[_0x0e6c('0x40')]=_0x21abe5['attributes'][_0x0e6c('0x52')]?_0x21abe5['attributes']:_0x8a755e[_0x0e6c('0x3a')];if(_0x2d0c8a[_0x0e6c('0x3c')]['includeAll']){_0x21abe5[_0x0e6c('0x4d')]=[{'all':!![]}];}_0x21abe5=_[_0x0e6c('0x4a')]({},_0x21abe5,_0x2d0c8a[_0x0e6c('0x4b')]);return db[_0x0e6c('0x36')][_0x0e6c('0x53')](_0x21abe5)[_0x0e6c('0x18')](handleEntityNotFound(_0x289660,null))[_0x0e6c('0x18')](respondWithResult(_0x289660,null))[_0x0e6c('0x22')](handleError(_0x289660,null));};exports[_0x0e6c('0x54')]=function(_0x338fd1,_0x59ff6e,_0x1c7c17){var _0xe238fa;return db[_0x0e6c('0x36')][_0x0e6c('0x54')](_0x338fd1[_0x0e6c('0x55')],{'raw':!![]})[_0x0e6c('0x18')](function(_0x5bcfad){_0xe238fa=_0x5bcfad;return db[_0x0e6c('0x36')][_0x0e6c('0x4e')]({'raw':!![]});})[_0x0e6c('0x18')](function(_0x4740b9){var _0x229485=fs[_0x0e6c('0x56')](path[_0x0e6c('0x57')](config[_0x0e6c('0x58')],_0x0e6c('0x59')),_0x0e6c('0x5a'));var _0x2d63da=ejs['render'](_0x229485,{'contexts':_0x4740b9||[]});fs[_0x0e6c('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x2d63da);})[_0x0e6c('0x18')](function(){return respondWithRpcPromise(_0x0e6c('0x5c'),'create',{'module':_0x0e6c('0x5d')});})[_0x0e6c('0x18')](function(){var _0x1b23c3=_0x338fd1[_0x0e6c('0x5e')][_0x0e6c('0x30')]({'plain':!![]});if(!_0x1b23c3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b23c3[_0x0e6c('0x5f')]===_0x0e6c('0x5e')){var _0x5cb2e5=_0xe238fa[_0x0e6c('0x30')]({'plain':!![]});return db[_0x0e6c('0x60')][_0x0e6c('0x53')]({'where':{'name':_0x0e6c('0x61'),'userProfileId':_0x1b23c3[_0x0e6c('0x62')]},'raw':!![]})['then'](function(_0x2a4a40){if(_0x2a4a40&&_0x2a4a40['autoAssociation']===0x0){return db[_0x0e6c('0x31')][_0x0e6c('0x54')]({'name':_0x5cb2e5[_0x0e6c('0x33')],'resourceId':_0x5cb2e5['id'],'type':_0x2a4a40[_0x0e6c('0x33')],'sectionId':_0x2a4a40['id']},{})[_0x0e6c('0x18')](function(){return _0xe238fa;});}else{return _0xe238fa;}})[_0x0e6c('0x22')](function(_0x3d709f){logger[_0x0e6c('0x1d')](_0x0e6c('0x63'),_0x3d709f);throw _0x3d709f;});}return _0xe238fa;})[_0x0e6c('0x18')](respondWithResult(_0x59ff6e,0xc9))[_0x0e6c('0x22')](handleError(_0x59ff6e,null));};exports[_0x0e6c('0x2f')]=function(_0x21d2bb,_0x4c7750,_0x336fbd){var _0x16f91e;return db[_0x0e6c('0x36')][_0x0e6c('0x53')]({'where':{'id':_0x21d2bb[_0x0e6c('0x51')]['id']}})[_0x0e6c('0x18')](handleEntityNotFound(_0x4c7750,null))[_0x0e6c('0x18')](saveUpdates(_0x21d2bb[_0x0e6c('0x55')],null))[_0x0e6c('0x18')](function(_0x492c0c){if(_0x492c0c){_0x16f91e=_0x492c0c;return db[_0x0e6c('0x36')][_0x0e6c('0x4e')]({'raw':!![]});}})[_0x0e6c('0x18')](function(_0x33e60d){var _0x4b3980=fs[_0x0e6c('0x56')](path[_0x0e6c('0x57')](config[_0x0e6c('0x58')],'server/files/templates/context.ejs'),_0x0e6c('0x5a'));var _0x4a2561=ejs[_0x0e6c('0x64')](_0x4b3980,{'contexts':_0x33e60d||[]});fs[_0x0e6c('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x4a2561);})[_0x0e6c('0x18')](function(){return respondWithRpcPromise(_0x0e6c('0x5c'),'update',{'module':'chan_sip.so'});})[_0x0e6c('0x18')](function(){return _0x16f91e;})[_0x0e6c('0x18')](respondWithResult(_0x4c7750,null))[_0x0e6c('0x22')](handleError(_0x4c7750,null));};exports[_0x0e6c('0x32')]=function(_0x3c6c92,_0xd0d102,_0x3bebde){var _0x333f9d;return db[_0x0e6c('0x36')][_0x0e6c('0x53')]({'where':{'id':_0x3c6c92['params']['id']}})[_0x0e6c('0x18')](handleEntityNotFound(_0xd0d102,null))[_0x0e6c('0x18')](removeEntity(_0xd0d102,null))[_0x0e6c('0x18')](function(){return db['VoiceContext']['findAll']({'raw':!![]});})['then'](function(_0x3c747d){var _0x58d01f=fs['readFileSync'](path[_0x0e6c('0x57')](config[_0x0e6c('0x58')],_0x0e6c('0x59')),_0x0e6c('0x5a'));var _0x19dd86=ejs['render'](_0x58d01f,{'contexts':_0x3c747d});fs[_0x0e6c('0x5b')](_0x0e6c('0x65'),_0x19dd86);return respondWithRpcPromise(_0x0e6c('0x5c'),_0x0e6c('0x32'),{'module':'chan_sip.so'});})['catch'](handleError(_0xd0d102,null));};