ca4a1cbccf7b6d046d6ebce864d156b943f33ab5
[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 _0x1699=['destroy','then','get','UserProfileResource','end','sendStatus','name','send','index','map','VoiceContext','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','include','findAll','rows','catch','show','includeAll','find','create','body','readFileSync','root','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Contexts','userProfileId','autoAssociation','update','params','join','render','Reload','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','status','json','undefined','limit','offset','count','Content-Range'];(function(_0x4507c1,_0xa8d71a){var _0x3d3b03=function(_0x438bca){while(--_0x438bca){_0x4507c1['push'](_0x4507c1['shift']());}};_0x3d3b03(++_0xa8d71a);}(_0x1699,0xfd));var _0x9169=function(_0x4663cf,_0x4045b2){_0x4663cf=_0x4663cf-0x0;var _0x5e7f76=_0x1699[_0x4663cf];return _0x5e7f76;};'use strict';var emlformat=require(_0x9169('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9169('0x1'));var jsonpatch=require(_0x9169('0x2'));var rp=require(_0x9169('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9169('0x4'));var util=require(_0x9169('0x5'));var path=require('path');var sox=require(_0x9169('0x6'));var csv=require(_0x9169('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9169('0x8'));var squel=require(_0x9169('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9169('0xa'));var toCsv=require(_0x9169('0x7'));var querystring=require('querystring');var Papa=require(_0x9169('0xb'));var Redis=require(_0x9169('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x9169('0xd'));var as=require(_0x9169('0xe'));var hardwareService=require(_0x9169('0xf'));var logger=require(_0x9169('0x10'))('api');var utils=require(_0x9169('0x11'));var config=require(_0x9169('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x9169('0x13'))['db'];var jayson=require(_0x9169('0x14'));var client=jayson[_0x9169('0x15')][_0x9169('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x2440dd,_0x4ae0ec,_0x1a583d,_0x4dda35){return new BPromise(function(_0x400fa2,_0x2f07cb){var _0x534a31=_0x4dda35||client;return _0x534a31[_0x9169('0x17')](_0x2440dd,_0x1a583d)['then'](function(_0x2e0ddc){logger[_0x9169('0x18')](_0x9169('0x19'),_0x4ae0ec,'request\x20sent');logger[_0x9169('0x1a')](_0x9169('0x1b'),_0x4ae0ec,_0x9169('0x1c'),JSON[_0x9169('0x1d')](_0x2e0ddc));if(_0x2e0ddc[_0x9169('0x1e')]){if(_0x2e0ddc[_0x9169('0x1e')][_0x9169('0x1f')]===0x1f4){logger[_0x9169('0x1e')]('VoiceContext,\x20%s,\x20%s',_0x4ae0ec,_0x2e0ddc[_0x9169('0x1e')][_0x9169('0x20')]);return _0x2f07cb(_0x2e0ddc[_0x9169('0x1e')][_0x9169('0x20')]);}logger[_0x9169('0x1e')](_0x9169('0x19'),_0x4ae0ec,_0x2e0ddc['error'][_0x9169('0x20')]);return _0x400fa2(_0x2e0ddc[_0x9169('0x1e')]['message']);}else{logger[_0x9169('0x18')](_0x9169('0x19'),_0x4ae0ec,_0x9169('0x1c'));_0x400fa2(_0x2e0ddc[_0x9169('0x21')][_0x9169('0x20')]);}})['catch'](function(_0x580800){logger[_0x9169('0x1e')](_0x9169('0x19'),_0x4ae0ec,_0x580800);_0x2f07cb(_0x580800);});});}function respondWithStatusCode(_0x2c3081,_0xbb69e2){_0xbb69e2=_0xbb69e2||0xcc;return function(_0xcd28d6){if(_0xcd28d6){return _0x2c3081['sendStatus'](_0xbb69e2);}return _0x2c3081[_0x9169('0x22')](_0xbb69e2)['end']();};}function respondWithResult(_0x32ec93,_0x1930a0){_0x1930a0=_0x1930a0||0xc8;return function(_0x501802){if(_0x501802){return _0x32ec93[_0x9169('0x22')](_0x1930a0)[_0x9169('0x23')](_0x501802);}};}function respondWithFilteredResult(_0x5c1bf1,_0x33a533){return function(_0x4bc3a4){if(_0x4bc3a4){var _0x123d64=typeof _0x33a533['offset']===_0x9169('0x24')&&typeof _0x33a533[_0x9169('0x25')]===_0x9169('0x24');var _0x14b287=_0x4bc3a4['count'];var _0x18ae69=_0x123d64?0x0:_0x33a533[_0x9169('0x26')];var _0x575b14=_0x123d64?_0x4bc3a4[_0x9169('0x27')]:_0x33a533[_0x9169('0x26')]+_0x33a533['limit'];var _0x36b59d;if(_0x575b14>=_0x14b287){_0x575b14=_0x14b287;_0x36b59d=0xc8;}else{_0x36b59d=0xce;}_0x5c1bf1[_0x9169('0x22')](_0x36b59d);return _0x5c1bf1['set'](_0x9169('0x28'),_0x18ae69+'-'+_0x575b14+'/'+_0x14b287)[_0x9169('0x23')](_0x4bc3a4);}return null;};}function patchUpdates(_0xa565f5){return function(_0xdf5a48){try{jsonpatch['apply'](_0xdf5a48,_0xa565f5,!![]);}catch(_0xdaebfe){return BPromise['reject'](_0xdaebfe);}return _0xdf5a48['save']();};}function saveUpdates(_0x3592f3,_0x43615a){return function(_0x5ced58){if(_0x5ced58){return _0x5ced58['update'](_0x3592f3)['then'](function(_0x133661){return _0x133661;});}return null;};}function removeEntity(_0x411d5d,_0x3ff148){return function(_0x1644cd){if(_0x1644cd){return _0x1644cd[_0x9169('0x29')]()[_0x9169('0x2a')](function(){var _0x3225ad=_0x1644cd[_0x9169('0x2b')]({'plain':!![]});var _0x3e420e='Contexts';return db[_0x9169('0x2c')][_0x9169('0x29')]({'where':{'type':_0x3e420e,'resourceId':_0x3225ad['id']}})['then'](function(){return _0x1644cd;});})[_0x9169('0x2a')](function(){_0x411d5d[_0x9169('0x22')](0xcc)[_0x9169('0x2d')]();});}};}function handleEntityNotFound(_0x219ff8,_0x47249e){return function(_0x4a7594){if(!_0x4a7594){_0x219ff8[_0x9169('0x2e')](0x194);}return _0x4a7594;};}function handleError(_0x47871a,_0x438331){_0x438331=_0x438331||0x1f4;return function(_0x5c8176){logger[_0x9169('0x1e')](_0x5c8176['stack']);if(_0x5c8176[_0x9169('0x2f')]){delete _0x5c8176['name'];}_0x47871a[_0x9169('0x22')](_0x438331)[_0x9169('0x30')](_0x5c8176);};}exports[_0x9169('0x31')]=function(_0x14e27f,_0x531208){var _0x35dda5={},_0x436b65={},_0x535a99={'count':0x0,'rows':[]};var _0x275b34=_[_0x9169('0x32')](db[_0x9169('0x33')][_0x9169('0x34')],function(_0x1934cc){return{'name':_0x1934cc[_0x9169('0x35')],'type':_0x1934cc['type']['key']};});_0x436b65[_0x9169('0x36')]=_[_0x9169('0x32')](_0x275b34,_0x9169('0x2f'));_0x436b65[_0x9169('0x37')]=_[_0x9169('0x38')](_0x14e27f[_0x9169('0x37')]);_0x436b65[_0x9169('0x39')]=_['intersection'](_0x436b65[_0x9169('0x36')],_0x436b65[_0x9169('0x37')]);_0x35dda5[_0x9169('0x3a')]=_[_0x9169('0x3b')](_0x436b65['model'],qs[_0x9169('0x3c')](_0x14e27f[_0x9169('0x37')][_0x9169('0x3c')]));_0x35dda5[_0x9169('0x3a')]=_0x35dda5[_0x9169('0x3a')]['length']?_0x35dda5[_0x9169('0x3a')]:_0x436b65[_0x9169('0x36')];if(!_0x14e27f[_0x9169('0x37')][_0x9169('0x3d')]('nolimit')){_0x35dda5['limit']=qs[_0x9169('0x25')](_0x14e27f[_0x9169('0x37')][_0x9169('0x25')]);_0x35dda5[_0x9169('0x26')]=qs[_0x9169('0x26')](_0x14e27f['query'][_0x9169('0x26')]);}_0x35dda5[_0x9169('0x3e')]=qs[_0x9169('0x3f')](_0x14e27f[_0x9169('0x37')][_0x9169('0x3f')]);_0x35dda5[_0x9169('0x40')]=qs[_0x9169('0x39')](_[_0x9169('0x41')](_0x14e27f[_0x9169('0x37')],_0x436b65[_0x9169('0x39')]),_0x275b34);if(_0x14e27f[_0x9169('0x37')][_0x9169('0x42')]){_0x35dda5[_0x9169('0x40')]=_[_0x9169('0x43')](_0x35dda5[_0x9169('0x40')],{'$or':_[_0x9169('0x32')](_0x275b34,function(_0x1a8fe1){if(_0x1a8fe1[_0x9169('0x44')]!=='VIRTUAL'){var _0x4a7dde={};_0x4a7dde[_0x1a8fe1[_0x9169('0x2f')]]={'$like':'%'+_0x14e27f['query'][_0x9169('0x42')]+'%'};return _0x4a7dde;}})});}_0x35dda5=_['merge']({},_0x35dda5,_0x14e27f[_0x9169('0x45')]);var _0x34c130={'where':_0x35dda5[_0x9169('0x40')]};return db[_0x9169('0x33')][_0x9169('0x27')](_0x34c130)[_0x9169('0x2a')](function(_0x514524){_0x535a99[_0x9169('0x27')]=_0x514524;if(_0x14e27f[_0x9169('0x37')]['includeAll']){_0x35dda5[_0x9169('0x46')]=[{'all':!![]}];}return db[_0x9169('0x33')][_0x9169('0x47')](_0x35dda5);})[_0x9169('0x2a')](function(_0x692411){_0x535a99[_0x9169('0x48')]=_0x692411;return _0x535a99;})['then'](respondWithFilteredResult(_0x531208,_0x35dda5))[_0x9169('0x49')](handleError(_0x531208,null));};exports[_0x9169('0x4a')]=function(_0x447777,_0xa4ca4e){var _0x1330fa={'raw':![],'where':{'id':_0x447777['params']['id']}},_0x1e7fa9={};_0x1e7fa9['model']=_[_0x9169('0x38')](db[_0x9169('0x33')][_0x9169('0x34')]);_0x1e7fa9['query']=_[_0x9169('0x38')](_0x447777[_0x9169('0x37')]);_0x1e7fa9[_0x9169('0x39')]=_[_0x9169('0x3b')](_0x1e7fa9[_0x9169('0x36')],_0x1e7fa9['query']);_0x1330fa[_0x9169('0x3a')]=_[_0x9169('0x3b')](_0x1e7fa9[_0x9169('0x36')],qs[_0x9169('0x3c')](_0x447777[_0x9169('0x37')][_0x9169('0x3c')]));_0x1330fa[_0x9169('0x3a')]=_0x1330fa[_0x9169('0x3a')]['length']?_0x1330fa[_0x9169('0x3a')]:_0x1e7fa9[_0x9169('0x36')];if(_0x447777[_0x9169('0x37')][_0x9169('0x4b')]){_0x1330fa[_0x9169('0x46')]=[{'all':!![]}];}_0x1330fa=_[_0x9169('0x43')]({},_0x1330fa,_0x447777[_0x9169('0x45')]);return db[_0x9169('0x33')][_0x9169('0x4c')](_0x1330fa)[_0x9169('0x2a')](handleEntityNotFound(_0xa4ca4e,null))['then'](respondWithResult(_0xa4ca4e,null))['catch'](handleError(_0xa4ca4e,null));};exports[_0x9169('0x4d')]=function(_0x33a6c9,_0x2f5187,_0x5464de){var _0x6df7e0;return db[_0x9169('0x33')][_0x9169('0x4d')](_0x33a6c9[_0x9169('0x4e')],{'raw':!![]})[_0x9169('0x2a')](function(_0x2eb533){_0x6df7e0=_0x2eb533;return db['VoiceContext'][_0x9169('0x47')]({'raw':!![]});})[_0x9169('0x2a')](function(_0x3a2efc){var _0x4e07cc=fs[_0x9169('0x4f')](path['join'](config[_0x9169('0x50')],_0x9169('0x51')),_0x9169('0x52'));var _0xf13431=ejs['render'](_0x4e07cc,{'contexts':_0x3a2efc||[]});fs[_0x9169('0x53')](_0x9169('0x54'),_0xf13431);})[_0x9169('0x2a')](function(){return respondWithRpcPromise('Reload',_0x9169('0x4d'),{'module':_0x9169('0x55')});})[_0x9169('0x2a')](function(){var _0x27f226=_0x33a6c9['user'][_0x9169('0x2b')]({'plain':!![]});if(!_0x27f226)throw new Error(_0x9169('0x56'));if(_0x27f226[_0x9169('0x57')]===_0x9169('0x58')){var _0x3315c9=_0x6df7e0[_0x9169('0x2b')]({'plain':!![]});return db[_0x9169('0x59')][_0x9169('0x4c')]({'where':{'name':_0x9169('0x5a'),'userProfileId':_0x27f226[_0x9169('0x5b')]},'raw':!![]})[_0x9169('0x2a')](function(_0x5127e3){if(_0x5127e3&&_0x5127e3[_0x9169('0x5c')]===0x0){return db[_0x9169('0x2c')][_0x9169('0x4d')]({'name':_0x3315c9[_0x9169('0x2f')],'resourceId':_0x3315c9['id'],'type':_0x5127e3[_0x9169('0x2f')],'sectionId':_0x5127e3['id']},{})[_0x9169('0x2a')](function(){return _0x6df7e0;});}else{return _0x6df7e0;}})['catch'](function(_0x2314ee){logger[_0x9169('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2314ee);throw _0x2314ee;});}return _0x6df7e0;})['then'](respondWithResult(_0x2f5187,0xc9))[_0x9169('0x49')](handleError(_0x2f5187,null));};exports[_0x9169('0x5d')]=function(_0x250bc8,_0x38aa47,_0x352b95){var _0x444de1;return db['VoiceContext'][_0x9169('0x4c')]({'where':{'id':_0x250bc8[_0x9169('0x5e')]['id']}})['then'](handleEntityNotFound(_0x38aa47,null))[_0x9169('0x2a')](saveUpdates(_0x250bc8[_0x9169('0x4e')],null))[_0x9169('0x2a')](function(_0x29b22e){if(_0x29b22e){_0x444de1=_0x29b22e;return db[_0x9169('0x33')][_0x9169('0x47')]({'raw':!![]});}})[_0x9169('0x2a')](function(_0x4eb79f){var _0x1e3d6d=fs[_0x9169('0x4f')](path[_0x9169('0x5f')](config[_0x9169('0x50')],_0x9169('0x51')),_0x9169('0x52'));var _0x114619=ejs[_0x9169('0x60')](_0x1e3d6d,{'contexts':_0x4eb79f||[]});fs[_0x9169('0x53')](_0x9169('0x54'),_0x114619);})['then'](function(){return respondWithRpcPromise(_0x9169('0x61'),_0x9169('0x5d'),{'module':_0x9169('0x55')});})[_0x9169('0x2a')](function(){return _0x444de1;})[_0x9169('0x2a')](respondWithResult(_0x38aa47,null))[_0x9169('0x49')](handleError(_0x38aa47,null));};exports[_0x9169('0x29')]=function(_0x51076f,_0x2f09fe,_0x51b424){var _0x246a91;return db[_0x9169('0x33')][_0x9169('0x4c')]({'where':{'id':_0x51076f['params']['id']}})['then'](handleEntityNotFound(_0x2f09fe,null))['then'](removeEntity(_0x2f09fe,null))['then'](function(){return db['VoiceContext'][_0x9169('0x47')]({'raw':!![]});})['then'](function(_0xf25d58){var _0x49e4e1=fs[_0x9169('0x4f')](path[_0x9169('0x5f')](config[_0x9169('0x50')],_0x9169('0x51')),_0x9169('0x52'));var _0x5014ed=ejs['render'](_0x49e4e1,{'contexts':_0xf25d58});fs[_0x9169('0x53')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x5014ed);return respondWithRpcPromise(_0x9169('0x61'),_0x9169('0x29'),{'module':_0x9169('0x55')});})['catch'](handleError(_0x2f09fe,null));};