Built motion from commit da617fac.|2.6.6
[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 _0x86c0=['crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','status','end','json','limit','count','offset','set','Content-Range','apply','save','then','destroy','sendStatus','name','send','index','map','VoiceContext','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','filters','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','find','create','readFileSync','join','root','server/files/templates/context.ejs','render','writeFileSync','Reload','chan_sip.so','user','get','role','UserProfileSection','autoAssociation','update','/etc/asterisk/extensions_xcally_contexts.conf','utf8','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash'];(function(_0xdcdb81,_0x44da57){var _0x26d3a5=function(_0x5dd20d){while(--_0x5dd20d){_0xdcdb81['push'](_0xdcdb81['shift']());}};_0x26d3a5(++_0x44da57);}(_0x86c0,0x175));var _0x086c=function(_0x5bd049,_0x43d163){_0x5bd049=_0x5bd049-0x0;var _0xc980fa=_0x86c0[_0x5bd049];return _0xc980fa;};'use strict';var emlformat=require(_0x086c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x086c('0x1'));var jsonpatch=require(_0x086c('0x2'));var rp=require(_0x086c('0x3'));var moment=require(_0x086c('0x4'));var BPromise=require(_0x086c('0x5'));var Mustache=require(_0x086c('0x6'));var util=require(_0x086c('0x7'));var path=require(_0x086c('0x8'));var sox=require(_0x086c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x086c('0xa'));var squel=require('squel');var crypto=require(_0x086c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x086c('0xc'));var toCsv=require(_0x086c('0xd'));var querystring=require('querystring');var Papa=require(_0x086c('0xe'));var Redis=require(_0x086c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x086c('0x10'));var as=require(_0x086c('0x11'));var hardwareService=require(_0x086c('0x12'));var logger=require(_0x086c('0x13'))(_0x086c('0x14'));var utils=require(_0x086c('0x15'));var config=require(_0x086c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x086c('0x17'))['db'];var jayson=require(_0x086c('0x18'));var client=jayson[_0x086c('0x19')][_0x086c('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x37a10e,_0x33ec81,_0xcb8f1,_0x2d3027){return new BPromise(function(_0x52cfc7,_0x131ce3){var _0x4ebcce=_0x2d3027||client;return _0x4ebcce[_0x086c('0x1b')](_0x37a10e,_0xcb8f1)['then'](function(_0x411178){logger[_0x086c('0x1c')](_0x086c('0x1d'),_0x33ec81,'request\x20sent');logger['debug'](_0x086c('0x1e'),_0x33ec81,_0x086c('0x1f'),JSON[_0x086c('0x20')](_0x411178));if(_0x411178[_0x086c('0x21')]){if(_0x411178['error']['code']===0x1f4){logger['error'](_0x086c('0x1d'),_0x33ec81,_0x411178['error'][_0x086c('0x22')]);return _0x131ce3(_0x411178['error']['message']);}logger[_0x086c('0x21')]('VoiceContext,\x20%s,\x20%s',_0x33ec81,_0x411178[_0x086c('0x21')][_0x086c('0x22')]);return _0x52cfc7(_0x411178[_0x086c('0x21')][_0x086c('0x22')]);}else{logger[_0x086c('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x33ec81,_0x086c('0x1f'));_0x52cfc7(_0x411178['result'][_0x086c('0x22')]);}})['catch'](function(_0x45643a){logger['error'](_0x086c('0x1d'),_0x33ec81,_0x45643a);_0x131ce3(_0x45643a);});});}function respondWithStatusCode(_0x67de9,_0x300cb9){_0x300cb9=_0x300cb9||0xcc;return function(_0x49ed56){if(_0x49ed56){return _0x67de9['sendStatus'](_0x300cb9);}return _0x67de9[_0x086c('0x23')](_0x300cb9)[_0x086c('0x24')]();};}function respondWithResult(_0x30ade0,_0x4ac79f){_0x4ac79f=_0x4ac79f||0xc8;return function(_0x36462a){if(_0x36462a){return _0x30ade0[_0x086c('0x23')](_0x4ac79f)[_0x086c('0x25')](_0x36462a);}};}function respondWithFilteredResult(_0x298b5e,_0xbe365a){return function(_0x4fc64a){if(_0x4fc64a){var _0x27708a=typeof _0xbe365a['offset']==='undefined'&&typeof _0xbe365a[_0x086c('0x26')]==='undefined';var _0x486126=_0x4fc64a[_0x086c('0x27')];var _0x40fe12=_0x27708a?0x0:_0xbe365a[_0x086c('0x28')];var _0x2885b6=_0x27708a?_0x4fc64a[_0x086c('0x27')]:_0xbe365a[_0x086c('0x28')]+_0xbe365a[_0x086c('0x26')];var _0x555707;if(_0x2885b6>=_0x486126){_0x2885b6=_0x486126;_0x555707=0xc8;}else{_0x555707=0xce;}_0x298b5e[_0x086c('0x23')](_0x555707);return _0x298b5e[_0x086c('0x29')](_0x086c('0x2a'),_0x40fe12+'-'+_0x2885b6+'/'+_0x486126)[_0x086c('0x25')](_0x4fc64a);}return null;};}function patchUpdates(_0xeb0189){return function(_0x244951){try{jsonpatch[_0x086c('0x2b')](_0x244951,_0xeb0189,!![]);}catch(_0xffced){return BPromise['reject'](_0xffced);}return _0x244951[_0x086c('0x2c')]();};}function saveUpdates(_0x2fe3ba,_0x14231b){return function(_0x1a7f34){if(_0x1a7f34){return _0x1a7f34['update'](_0x2fe3ba)[_0x086c('0x2d')](function(_0x50e5f2){return _0x50e5f2;});}return null;};}function removeEntity(_0x106439,_0x543320){return function(_0x3f6739){if(_0x3f6739){return _0x3f6739[_0x086c('0x2e')]()[_0x086c('0x2d')](function(){var _0x32a703=_0x3f6739['get']({'plain':!![]});var _0x51d5f5='Contexts';return db['UserProfileResource']['destroy']({'where':{'type':_0x51d5f5,'resourceId':_0x32a703['id']}})['then'](function(){return _0x3f6739;});})[_0x086c('0x2d')](function(){_0x106439['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa03dd0,_0x23908c){return function(_0x360488){if(!_0x360488){_0xa03dd0[_0x086c('0x2f')](0x194);}return _0x360488;};}function handleError(_0x542038,_0x17ad94){_0x17ad94=_0x17ad94||0x1f4;return function(_0x5ba711){logger[_0x086c('0x21')](_0x5ba711['stack']);if(_0x5ba711[_0x086c('0x30')]){delete _0x5ba711['name'];}_0x542038[_0x086c('0x23')](_0x17ad94)[_0x086c('0x31')](_0x5ba711);};}exports[_0x086c('0x32')]=function(_0x3e0fac,_0x489ac8){var _0x7a24f5={},_0x131929={},_0x555c15={'count':0x0,'rows':[]};var _0x28f777=_[_0x086c('0x33')](db[_0x086c('0x34')][_0x086c('0x35')],function(_0x5d7923){return{'name':_0x5d7923[_0x086c('0x36')],'type':_0x5d7923['type'][_0x086c('0x37')]};});_0x131929['model']=_['map'](_0x28f777,_0x086c('0x30'));_0x131929[_0x086c('0x38')]=_[_0x086c('0x39')](_0x3e0fac[_0x086c('0x38')]);_0x131929['filters']=_[_0x086c('0x3a')](_0x131929[_0x086c('0x3b')],_0x131929[_0x086c('0x38')]);_0x7a24f5['attributes']=_[_0x086c('0x3a')](_0x131929[_0x086c('0x3b')],qs['fields'](_0x3e0fac[_0x086c('0x38')][_0x086c('0x3c')]));_0x7a24f5[_0x086c('0x3d')]=_0x7a24f5[_0x086c('0x3d')][_0x086c('0x3e')]?_0x7a24f5['attributes']:_0x131929['model'];if(!_0x3e0fac[_0x086c('0x38')][_0x086c('0x3f')]('nolimit')){_0x7a24f5[_0x086c('0x26')]=qs[_0x086c('0x26')](_0x3e0fac[_0x086c('0x38')][_0x086c('0x26')]);_0x7a24f5[_0x086c('0x28')]=qs[_0x086c('0x28')](_0x3e0fac[_0x086c('0x38')][_0x086c('0x28')]);}_0x7a24f5['order']=qs[_0x086c('0x40')](_0x3e0fac[_0x086c('0x38')][_0x086c('0x40')]);_0x7a24f5[_0x086c('0x41')]=qs[_0x086c('0x42')](_['pick'](_0x3e0fac['query'],_0x131929[_0x086c('0x42')]),_0x28f777);if(_0x3e0fac[_0x086c('0x38')]['filter']){_0x7a24f5[_0x086c('0x41')]=_[_0x086c('0x43')](_0x7a24f5[_0x086c('0x41')],{'$or':_['map'](_0x28f777,function(_0x5f8a7){if(_0x5f8a7[_0x086c('0x44')]!==_0x086c('0x45')){var _0x1fe448={};_0x1fe448[_0x5f8a7[_0x086c('0x30')]]={'$like':'%'+_0x3e0fac[_0x086c('0x38')][_0x086c('0x46')]+'%'};return _0x1fe448;}})});}_0x7a24f5=_[_0x086c('0x43')]({},_0x7a24f5,_0x3e0fac[_0x086c('0x47')]);var _0x4f6355={'where':_0x7a24f5[_0x086c('0x41')]};return db['VoiceContext']['count'](_0x4f6355)['then'](function(_0x5756ce){_0x555c15[_0x086c('0x27')]=_0x5756ce;if(_0x3e0fac[_0x086c('0x38')][_0x086c('0x48')]){_0x7a24f5[_0x086c('0x49')]=[{'all':!![]}];}return db['VoiceContext'][_0x086c('0x4a')](_0x7a24f5);})[_0x086c('0x2d')](function(_0x3e8fc9){_0x555c15['rows']=_0x3e8fc9;return _0x555c15;})[_0x086c('0x2d')](respondWithFilteredResult(_0x489ac8,_0x7a24f5))[_0x086c('0x4b')](handleError(_0x489ac8,null));};exports[_0x086c('0x4c')]=function(_0x240376,_0x4bb31b){var _0x5d7c6a={'raw':![],'where':{'id':_0x240376[_0x086c('0x4d')]['id']}},_0x2f589c={};_0x2f589c[_0x086c('0x3b')]=_['keys'](db[_0x086c('0x34')][_0x086c('0x35')]);_0x2f589c['query']=_[_0x086c('0x39')](_0x240376[_0x086c('0x38')]);_0x2f589c[_0x086c('0x42')]=_[_0x086c('0x3a')](_0x2f589c[_0x086c('0x3b')],_0x2f589c[_0x086c('0x38')]);_0x5d7c6a[_0x086c('0x3d')]=_[_0x086c('0x3a')](_0x2f589c[_0x086c('0x3b')],qs[_0x086c('0x3c')](_0x240376[_0x086c('0x38')]['fields']));_0x5d7c6a['attributes']=_0x5d7c6a['attributes'][_0x086c('0x3e')]?_0x5d7c6a[_0x086c('0x3d')]:_0x2f589c['model'];if(_0x240376[_0x086c('0x38')][_0x086c('0x48')]){_0x5d7c6a[_0x086c('0x49')]=[{'all':!![]}];}_0x5d7c6a=_[_0x086c('0x43')]({},_0x5d7c6a,_0x240376[_0x086c('0x47')]);return db['VoiceContext'][_0x086c('0x4e')](_0x5d7c6a)['then'](handleEntityNotFound(_0x4bb31b,null))['then'](respondWithResult(_0x4bb31b,null))[_0x086c('0x4b')](handleError(_0x4bb31b,null));};exports[_0x086c('0x4f')]=function(_0x472a8e,_0x1df3c0,_0x2aa82b){var _0x49f820;return db[_0x086c('0x34')][_0x086c('0x4f')](_0x472a8e['body'],{'raw':!![]})[_0x086c('0x2d')](function(_0x3a8a5b){_0x49f820=_0x3a8a5b;return db[_0x086c('0x34')][_0x086c('0x4a')]({'raw':!![]});})[_0x086c('0x2d')](function(_0x1241b8){var _0x3e8601=fs[_0x086c('0x50')](path[_0x086c('0x51')](config[_0x086c('0x52')],_0x086c('0x53')),'utf8');var _0x2956c3=ejs[_0x086c('0x54')](_0x3e8601,{'contexts':_0x1241b8||[]});fs[_0x086c('0x55')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x2956c3);})['then'](function(){return respondWithRpcPromise(_0x086c('0x56'),'create',{'module':_0x086c('0x57')});})['then'](function(){var _0x5429b4=_0x472a8e[_0x086c('0x58')][_0x086c('0x59')]({'plain':!![]});if(!_0x5429b4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5429b4[_0x086c('0x5a')]==='user'){var _0x39da5c=_0x49f820[_0x086c('0x59')]({'plain':!![]});return db[_0x086c('0x5b')][_0x086c('0x4e')]({'where':{'name':'Contexts','userProfileId':_0x5429b4['userProfileId']},'raw':!![]})[_0x086c('0x2d')](function(_0x2a79b5){if(_0x2a79b5&&_0x2a79b5[_0x086c('0x5c')]===0x0){return db['UserProfileResource'][_0x086c('0x4f')]({'name':_0x39da5c[_0x086c('0x30')],'resourceId':_0x39da5c['id'],'type':_0x2a79b5[_0x086c('0x30')],'sectionId':_0x2a79b5['id']},{})[_0x086c('0x2d')](function(){return _0x49f820;});}else{return _0x49f820;}})[_0x086c('0x4b')](function(_0x15dfe0){logger[_0x086c('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x15dfe0);throw _0x15dfe0;});}return _0x49f820;})[_0x086c('0x2d')](respondWithResult(_0x1df3c0,0xc9))[_0x086c('0x4b')](handleError(_0x1df3c0,null));};exports[_0x086c('0x5d')]=function(_0x13e4c4,_0x3155cd,_0x214779){var _0x2296cd;return db[_0x086c('0x34')][_0x086c('0x4e')]({'where':{'id':_0x13e4c4['params']['id']}})[_0x086c('0x2d')](handleEntityNotFound(_0x3155cd,null))['then'](saveUpdates(_0x13e4c4['body'],null))[_0x086c('0x2d')](function(_0xa888b3){if(_0xa888b3){_0x2296cd=_0xa888b3;return db[_0x086c('0x34')]['findAll']({'raw':!![]});}})['then'](function(_0x3865aa){var _0x1fe298=fs[_0x086c('0x50')](path['join'](config['root'],_0x086c('0x53')),'utf8');var _0x3d048e=ejs[_0x086c('0x54')](_0x1fe298,{'contexts':_0x3865aa||[]});fs[_0x086c('0x55')](_0x086c('0x5e'),_0x3d048e);})[_0x086c('0x2d')](function(){return respondWithRpcPromise(_0x086c('0x56'),_0x086c('0x5d'),{'module':_0x086c('0x57')});})[_0x086c('0x2d')](function(){return _0x2296cd;})[_0x086c('0x2d')](respondWithResult(_0x3155cd,null))[_0x086c('0x4b')](handleError(_0x3155cd,null));};exports[_0x086c('0x2e')]=function(_0x84c51b,_0x2701d0,_0x524b1a){var _0x5c2865;return db[_0x086c('0x34')]['find']({'where':{'id':_0x84c51b[_0x086c('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2701d0,null))[_0x086c('0x2d')](removeEntity(_0x2701d0,null))[_0x086c('0x2d')](function(){return db['VoiceContext'][_0x086c('0x4a')]({'raw':!![]});})[_0x086c('0x2d')](function(_0x1e6e9f){var _0x174316=fs[_0x086c('0x50')](path[_0x086c('0x51')](config[_0x086c('0x52')],_0x086c('0x53')),_0x086c('0x5f'));var _0x1e1685=ejs[_0x086c('0x54')](_0x174316,{'contexts':_0x1e6e9f});fs['writeFileSync'](_0x086c('0x5e'),_0x1e1685);return respondWithRpcPromise('Reload',_0x086c('0x2e'),{'module':_0x086c('0x57')});})[_0x086c('0x4b')](handleError(_0x2701d0,null));};