d85af1133a6121693022559af4e5904801597620
[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 _0x44c3=['pick','VIRTUAL','options','includeAll','findAll','show','params','include','merge','find','create','body','readFileSync','root','server/files/templates/context.ejs','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','render','writeFileSync','join','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','get','Contexts','destroy','stack','name','send','index','VoiceContext','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where'];(function(_0x5bd332,_0x2a930a){var _0x54079b=function(_0x4d510b){while(--_0x4d510b){_0x5bd332['push'](_0x5bd332['shift']());}};_0x54079b(++_0x2a930a);}(_0x44c3,0xea));var _0x344c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x44c3[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x344c('0x0'));var rimraf=require(_0x344c('0x1'));var zipdir=require(_0x344c('0x2'));var jsonpatch=require(_0x344c('0x3'));var rp=require('request-promise');var moment=require(_0x344c('0x4'));var BPromise=require(_0x344c('0x5'));var Mustache=require(_0x344c('0x6'));var util=require(_0x344c('0x7'));var path=require(_0x344c('0x8'));var sox=require('sox');var csv=require(_0x344c('0x9'));var ejs=require(_0x344c('0xa'));var fs=require('fs');var fs_extra=require(_0x344c('0xb'));var _=require(_0x344c('0xc'));var squel=require(_0x344c('0xd'));var crypto=require('crypto');var jsforce=require(_0x344c('0xe'));var deskjs=require(_0x344c('0xf'));var toCsv=require(_0x344c('0x9'));var querystring=require('querystring');var Papa=require(_0x344c('0x10'));var Redis=require(_0x344c('0x11'));var authService=require(_0x344c('0x12'));var qs=require(_0x344c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x344c('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x344c('0x15'));var config=require(_0x344c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x344c('0x17'))['db'];var jayson=require(_0x344c('0x18'));var client=jayson[_0x344c('0x19')][_0x344c('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x31dbae,_0x127f96,_0xeb2696,_0x51c5a9){return new BPromise(function(_0x4dd746,_0x497437){var _0x4e563c=_0x51c5a9||client;return _0x4e563c[_0x344c('0x1b')](_0x31dbae,_0xeb2696)[_0x344c('0x1c')](function(_0x54374a){logger[_0x344c('0x1d')](_0x344c('0x1e'),_0x127f96,_0x344c('0x1f'));logger[_0x344c('0x20')](_0x344c('0x21'),_0x127f96,_0x344c('0x1f'),JSON[_0x344c('0x22')](_0x54374a));if(_0x54374a[_0x344c('0x23')]){if(_0x54374a['error'][_0x344c('0x24')]===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x127f96,_0x54374a['error']['message']);return _0x497437(_0x54374a[_0x344c('0x23')][_0x344c('0x25')]);}logger[_0x344c('0x23')](_0x344c('0x1e'),_0x127f96,_0x54374a[_0x344c('0x23')]['message']);return _0x4dd746(_0x54374a['error'][_0x344c('0x25')]);}else{logger['info']('VoiceContext,\x20%s,\x20%s',_0x127f96,_0x344c('0x1f'));_0x4dd746(_0x54374a[_0x344c('0x26')][_0x344c('0x25')]);}})[_0x344c('0x27')](function(_0x5c646c){logger[_0x344c('0x23')](_0x344c('0x1e'),_0x127f96,_0x5c646c);_0x497437(_0x5c646c);});});}function respondWithStatusCode(_0x17aa44,_0x43950f){_0x43950f=_0x43950f||0xcc;return function(_0xb35a6b){if(_0xb35a6b){return _0x17aa44[_0x344c('0x28')](_0x43950f);}return _0x17aa44[_0x344c('0x29')](_0x43950f)['end']();};}function respondWithResult(_0xd68136,_0x127e85){_0x127e85=_0x127e85||0xc8;return function(_0x4db917){if(_0x4db917){return _0xd68136['status'](_0x127e85)[_0x344c('0x2a')](_0x4db917);}};}function respondWithFilteredResult(_0x2d566a,_0x532b37){return function(_0x137dce){if(_0x137dce){var _0x15ccdb=typeof _0x532b37[_0x344c('0x2b')]===_0x344c('0x2c')&&typeof _0x532b37[_0x344c('0x2d')]===_0x344c('0x2c');var _0xdec8f0=_0x137dce['count'];var _0x4b8a7c=_0x15ccdb?0x0:_0x532b37[_0x344c('0x2b')];var _0x38c8b1=_0x15ccdb?_0x137dce[_0x344c('0x2e')]:_0x532b37[_0x344c('0x2b')]+_0x532b37[_0x344c('0x2d')];var _0x348ce6;if(_0x38c8b1>=_0xdec8f0){_0x38c8b1=_0xdec8f0;_0x348ce6=0xc8;}else{_0x348ce6=0xce;}_0x2d566a[_0x344c('0x29')](_0x348ce6);return _0x2d566a['set'](_0x344c('0x2f'),_0x4b8a7c+'-'+_0x38c8b1+'/'+_0xdec8f0)[_0x344c('0x2a')](_0x137dce);}return null;};}function patchUpdates(_0x7cd92c){return function(_0x360be1){try{jsonpatch[_0x344c('0x30')](_0x360be1,_0x7cd92c,!![]);}catch(_0x23e9b9){return BPromise['reject'](_0x23e9b9);}return _0x360be1[_0x344c('0x31')]();};}function saveUpdates(_0x3adcf3,_0x50c430){return function(_0x19b681){if(_0x19b681){return _0x19b681[_0x344c('0x32')](_0x3adcf3)['then'](function(_0x25027a){return _0x25027a;});}return null;};}function removeEntity(_0x479b73,_0x2bc822){return function(_0x4af28b){if(_0x4af28b){return _0x4af28b['destroy']()[_0x344c('0x1c')](function(){var _0x25583b=_0x4af28b[_0x344c('0x33')]({'plain':!![]});var _0x441e93=_0x344c('0x34');return db['UserProfileResource'][_0x344c('0x35')]({'where':{'type':_0x441e93,'resourceId':_0x25583b['id']}})[_0x344c('0x1c')](function(){return _0x4af28b;});})[_0x344c('0x1c')](function(){_0x479b73['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c43d6,_0x5de4a5){return function(_0x488604){if(!_0x488604){_0x1c43d6['sendStatus'](0x194);}return _0x488604;};}function handleError(_0x3c3ed7,_0x218882){_0x218882=_0x218882||0x1f4;return function(_0x265f19){logger['error'](_0x265f19[_0x344c('0x36')]);if(_0x265f19[_0x344c('0x37')]){delete _0x265f19[_0x344c('0x37')];}_0x3c3ed7[_0x344c('0x29')](_0x218882)[_0x344c('0x38')](_0x265f19);};}exports[_0x344c('0x39')]=function(_0x11c2a3,_0x5706fc){var _0x4b9c9a={},_0x54ec8d={},_0x28720a={'count':0x0,'rows':[]};var _0x5c055b=_['map'](db[_0x344c('0x3a')][_0x344c('0x3b')],function(_0x57ba9a){return{'name':_0x57ba9a[_0x344c('0x3c')],'type':_0x57ba9a[_0x344c('0x3d')][_0x344c('0x3e')]};});_0x54ec8d[_0x344c('0x3f')]=_[_0x344c('0x40')](_0x5c055b,_0x344c('0x37'));_0x54ec8d[_0x344c('0x41')]=_[_0x344c('0x42')](_0x11c2a3['query']);_0x54ec8d[_0x344c('0x43')]=_[_0x344c('0x44')](_0x54ec8d['model'],_0x54ec8d[_0x344c('0x41')]);_0x4b9c9a[_0x344c('0x45')]=_['intersection'](_0x54ec8d[_0x344c('0x3f')],qs[_0x344c('0x46')](_0x11c2a3[_0x344c('0x41')]['fields']));_0x4b9c9a[_0x344c('0x45')]=_0x4b9c9a['attributes']['length']?_0x4b9c9a['attributes']:_0x54ec8d[_0x344c('0x3f')];if(!_0x11c2a3[_0x344c('0x41')]['hasOwnProperty'](_0x344c('0x47'))){_0x4b9c9a[_0x344c('0x2d')]=qs[_0x344c('0x2d')](_0x11c2a3['query'][_0x344c('0x2d')]);_0x4b9c9a[_0x344c('0x2b')]=qs[_0x344c('0x2b')](_0x11c2a3['query'][_0x344c('0x2b')]);}_0x4b9c9a[_0x344c('0x48')]=qs[_0x344c('0x49')](_0x11c2a3[_0x344c('0x41')][_0x344c('0x49')]);_0x4b9c9a[_0x344c('0x4a')]=qs[_0x344c('0x43')](_[_0x344c('0x4b')](_0x11c2a3[_0x344c('0x41')],_0x54ec8d[_0x344c('0x43')]),_0x5c055b);if(_0x11c2a3['query']['filter']){_0x4b9c9a[_0x344c('0x4a')]=_['merge'](_0x4b9c9a['where'],{'$or':_['map'](_0x5c055b,function(_0x2e75b7){if(_0x2e75b7[_0x344c('0x3d')]!==_0x344c('0x4c')){var _0x149f58={};_0x149f58[_0x2e75b7[_0x344c('0x37')]]={'$like':'%'+_0x11c2a3[_0x344c('0x41')]['filter']+'%'};return _0x149f58;}})});}_0x4b9c9a=_['merge']({},_0x4b9c9a,_0x11c2a3[_0x344c('0x4d')]);var _0xbda49c={'where':_0x4b9c9a['where']};return db[_0x344c('0x3a')][_0x344c('0x2e')](_0xbda49c)[_0x344c('0x1c')](function(_0x26ce11){_0x28720a[_0x344c('0x2e')]=_0x26ce11;if(_0x11c2a3[_0x344c('0x41')][_0x344c('0x4e')]){_0x4b9c9a['include']=[{'all':!![]}];}return db[_0x344c('0x3a')][_0x344c('0x4f')](_0x4b9c9a);})['then'](function(_0x51c05d){_0x28720a['rows']=_0x51c05d;return _0x28720a;})[_0x344c('0x1c')](respondWithFilteredResult(_0x5706fc,_0x4b9c9a))['catch'](handleError(_0x5706fc,null));};exports[_0x344c('0x50')]=function(_0x1ddf2f,_0x5df9de){var _0x52c105={'raw':![],'where':{'id':_0x1ddf2f[_0x344c('0x51')]['id']}},_0x47dff5={};_0x47dff5['model']=_['keys'](db[_0x344c('0x3a')][_0x344c('0x3b')]);_0x47dff5[_0x344c('0x41')]=_[_0x344c('0x42')](_0x1ddf2f['query']);_0x47dff5['filters']=_[_0x344c('0x44')](_0x47dff5[_0x344c('0x3f')],_0x47dff5[_0x344c('0x41')]);_0x52c105['attributes']=_[_0x344c('0x44')](_0x47dff5[_0x344c('0x3f')],qs[_0x344c('0x46')](_0x1ddf2f[_0x344c('0x41')][_0x344c('0x46')]));_0x52c105[_0x344c('0x45')]=_0x52c105[_0x344c('0x45')]['length']?_0x52c105['attributes']:_0x47dff5[_0x344c('0x3f')];if(_0x1ddf2f['query']['includeAll']){_0x52c105[_0x344c('0x52')]=[{'all':!![]}];}_0x52c105=_[_0x344c('0x53')]({},_0x52c105,_0x1ddf2f[_0x344c('0x4d')]);return db[_0x344c('0x3a')][_0x344c('0x54')](_0x52c105)[_0x344c('0x1c')](handleEntityNotFound(_0x5df9de,null))[_0x344c('0x1c')](respondWithResult(_0x5df9de,null))['catch'](handleError(_0x5df9de,null));};exports[_0x344c('0x55')]=function(_0xe4cc67,_0x5a2bbb,_0xcb1a94){var _0x2c2fce;return db[_0x344c('0x3a')][_0x344c('0x55')](_0xe4cc67[_0x344c('0x56')],{'raw':!![]})['then'](function(_0x497f8b){_0x2c2fce=_0x497f8b;return db['VoiceContext'][_0x344c('0x4f')]({'raw':!![]});})[_0x344c('0x1c')](function(_0x4246f8){var _0x3bac10=fs[_0x344c('0x57')](path['join'](config[_0x344c('0x58')],_0x344c('0x59')),_0x344c('0x5a'));var _0x397b64=ejs['render'](_0x3bac10,{'contexts':_0x4246f8||[]});fs['writeFileSync'](_0x344c('0x5b'),_0x397b64);})[_0x344c('0x1c')](function(){return respondWithRpcPromise(_0x344c('0x5c'),_0x344c('0x55'),{'module':_0x344c('0x5d')});})[_0x344c('0x1c')](function(){var _0x36a13d=_0xe4cc67[_0x344c('0x5e')][_0x344c('0x33')]({'plain':!![]});if(!_0x36a13d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36a13d[_0x344c('0x5f')]==='user'){var _0x958cb9=_0x2c2fce[_0x344c('0x33')]({'plain':!![]});return db[_0x344c('0x60')][_0x344c('0x54')]({'where':{'name':_0x344c('0x34'),'userProfileId':_0x36a13d[_0x344c('0x61')]},'raw':!![]})[_0x344c('0x1c')](function(_0x26f07b){if(_0x26f07b&&_0x26f07b[_0x344c('0x62')]===0x0){return db[_0x344c('0x63')][_0x344c('0x55')]({'name':_0x958cb9['name'],'resourceId':_0x958cb9['id'],'type':_0x26f07b[_0x344c('0x37')],'sectionId':_0x26f07b['id']},{})[_0x344c('0x1c')](function(){return _0x2c2fce;});}else{return _0x2c2fce;}})[_0x344c('0x27')](function(_0xe88143){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe88143);throw _0xe88143;});}return _0x2c2fce;})[_0x344c('0x1c')](respondWithResult(_0x5a2bbb,0xc9))[_0x344c('0x27')](handleError(_0x5a2bbb,null));};exports['update']=function(_0x1a0986,_0x3e125d,_0x59a069){var _0x4b68c6;return db[_0x344c('0x3a')][_0x344c('0x54')]({'where':{'id':_0x1a0986['params']['id']}})[_0x344c('0x1c')](handleEntityNotFound(_0x3e125d,null))[_0x344c('0x1c')](saveUpdates(_0x1a0986[_0x344c('0x56')],null))[_0x344c('0x1c')](function(_0x26e548){if(_0x26e548){_0x4b68c6=_0x26e548;return db['VoiceContext']['findAll']({'raw':!![]});}})[_0x344c('0x1c')](function(_0x567179){var _0x3a158a=fs['readFileSync'](path['join'](config[_0x344c('0x58')],_0x344c('0x59')),'utf8');var _0x12191c=ejs[_0x344c('0x64')](_0x3a158a,{'contexts':_0x567179||[]});fs[_0x344c('0x65')](_0x344c('0x5b'),_0x12191c);})[_0x344c('0x1c')](function(){return respondWithRpcPromise(_0x344c('0x5c'),_0x344c('0x32'),{'module':'chan_sip.so'});})['then'](function(){return _0x4b68c6;})[_0x344c('0x1c')](respondWithResult(_0x3e125d,null))[_0x344c('0x27')](handleError(_0x3e125d,null));};exports[_0x344c('0x35')]=function(_0xb46ba8,_0x41ac8d,_0x34802f){var _0x5214c3;return db['VoiceContext'][_0x344c('0x54')]({'where':{'id':_0xb46ba8['params']['id']}})[_0x344c('0x1c')](handleEntityNotFound(_0x41ac8d,null))[_0x344c('0x1c')](removeEntity(_0x41ac8d,null))['then'](function(){return db['VoiceContext']['findAll']({'raw':!![]});})['then'](function(_0x305e07){var _0x478afc=fs[_0x344c('0x57')](path[_0x344c('0x66')](config[_0x344c('0x58')],'server/files/templates/context.ejs'),_0x344c('0x5a'));var _0x4f0088=ejs[_0x344c('0x64')](_0x478afc,{'contexts':_0x305e07});fs[_0x344c('0x65')](_0x344c('0x5b'),_0x4f0088);return respondWithRpcPromise(_0x344c('0x5c'),_0x344c('0x35'),{'module':_0x344c('0x5d')});})[_0x344c('0x27')](handleError(_0x41ac8d,null));};