f3c4a74051423d37a2f4e85dff5345df421bae2d
[motion2.git] / server / api / trunk / trunk.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 _0x50e9=['keys','merge','omit','createdAt','body','updatedAt','create','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','update','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_registers.conf','destroy','html-pdf','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','client','http','request','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','end','status','json','count','offset','set','Content-Range','save','then','get','Trunks','sendStatus','stack','name','send','index','map','Trunk','rawAttributes','fieldName','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params'];(function(_0xbda849,_0x2dcb1a){var _0x2d3e9d=function(_0x2c8f10){while(--_0x2c8f10){_0xbda849['push'](_0xbda849['shift']());}};_0x2d3e9d(++_0x2dcb1a);}(_0x50e9,0x17b));var _0x950e=function(_0x25187c,_0x17f8dd){_0x25187c=_0x25187c-0x0;var _0x2abdbc=_0x50e9[_0x25187c];return _0x2abdbc;};'use strict';var pdf=require(_0x950e('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x950e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x950e('0x2'));var rp=require(_0x950e('0x3'));var moment=require(_0x950e('0x4'));var BPromise=require(_0x950e('0x5'));var Mustache=require(_0x950e('0x6'));var util=require(_0x950e('0x7'));var path=require(_0x950e('0x8'));var sox=require(_0x950e('0x9'));var csv=require(_0x950e('0xa'));var ejs=require(_0x950e('0xb'));var fs=require('fs');var _=require(_0x950e('0xc'));var squel=require(_0x950e('0xd'));var crypto=require(_0x950e('0xe'));var jsforce=require(_0x950e('0xf'));var deskjs=require(_0x950e('0x10'));var toCsv=require(_0x950e('0xa'));var querystring=require(_0x950e('0x11'));var Papa=require(_0x950e('0x12'));var Redis=require(_0x950e('0x13'));var authService=require(_0x950e('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x950e('0x15'));var hardwareService=require(_0x950e('0x16'));var logger=require(_0x950e('0x17'))(_0x950e('0x18'));var utils=require(_0x950e('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x950e('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x950e('0x1b')][_0x950e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1c6509,_0x6cbc15,_0x51475b,_0x910ae3){return new BPromise(function(_0x114e9b,_0xac597){var _0xceb1e0=_0x910ae3||client;return _0xceb1e0[_0x950e('0x1d')](_0x1c6509,_0x51475b)['then'](function(_0x50f17c){logger[_0x950e('0x1e')]('Trunk,\x20%s,\x20%s',_0x6cbc15,_0x950e('0x1f'));logger[_0x950e('0x20')](_0x950e('0x21'),_0x6cbc15,_0x950e('0x1f'),JSON[_0x950e('0x22')](_0x50f17c));if(_0x50f17c[_0x950e('0x23')]){if(_0x50f17c[_0x950e('0x23')][_0x950e('0x24')]===0x1f4){logger[_0x950e('0x23')](_0x950e('0x25'),_0x6cbc15,_0x50f17c[_0x950e('0x23')]['message']);return _0xac597(_0x50f17c[_0x950e('0x23')][_0x950e('0x26')]);}logger[_0x950e('0x23')](_0x950e('0x25'),_0x6cbc15,_0x50f17c[_0x950e('0x23')][_0x950e('0x26')]);return _0x114e9b(_0x50f17c[_0x950e('0x23')]['message']);}else{logger['info'](_0x950e('0x25'),_0x6cbc15,_0x950e('0x1f'));_0x114e9b(_0x50f17c[_0x950e('0x27')][_0x950e('0x26')]);}})[_0x950e('0x28')](function(_0x12f298){logger['error'](_0x950e('0x25'),_0x6cbc15,_0x12f298);_0xac597(_0x12f298);});});}function respondWithStatusCode(_0x1d5b4a,_0x24f02e){_0x24f02e=_0x24f02e||0xcc;return function(_0x43c1f8){if(_0x43c1f8){return _0x1d5b4a['sendStatus'](_0x24f02e);}return _0x1d5b4a['status'](_0x24f02e)[_0x950e('0x29')]();};}function respondWithResult(_0x1a79ad,_0x28131f){_0x28131f=_0x28131f||0xc8;return function(_0x3903a7){if(_0x3903a7){return _0x1a79ad[_0x950e('0x2a')](_0x28131f)[_0x950e('0x2b')](_0x3903a7);}};}function respondWithFilteredResult(_0x3f341c,_0x3be2b1){return function(_0x570b53){if(_0x570b53){var _0x56b225=_0x570b53[_0x950e('0x2c')],_0x40df27=_0x3be2b1[_0x950e('0x2d')],_0x2b7efa=_0x3be2b1['offset']+_0x3be2b1['limit'],_0x3396d1;if(_0x2b7efa>=_0x56b225){_0x2b7efa=_0x56b225;_0x3396d1=0xc8;}else{_0x3396d1=0xce;}_0x3f341c[_0x950e('0x2a')](_0x3396d1);return _0x3f341c[_0x950e('0x2e')](_0x950e('0x2f'),_0x40df27+'-'+_0x2b7efa+'/'+_0x56b225)[_0x950e('0x2b')](_0x570b53);}return null;};}function patchUpdates(_0x1a5a38){return function(_0x8861fb){try{jsonpatch['apply'](_0x8861fb,_0x1a5a38,!![]);}catch(_0xdab127){return BPromise['reject'](_0xdab127);}return _0x8861fb[_0x950e('0x30')]();};}function saveUpdates(_0x5a32c9,_0x53c998){return function(_0x11851b){if(_0x11851b){return _0x11851b['update'](_0x5a32c9)[_0x950e('0x31')](function(_0x18139e){return _0x18139e;});}return null;};}function removeEntity(_0xa89207,_0x389a73){return function(_0x95ffa5){if(_0x95ffa5){return _0x95ffa5['destroy']()[_0x950e('0x31')](function(){var _0x54b779=_0x95ffa5[_0x950e('0x32')]({'plain':!![]});var _0x4142c9=_0x950e('0x33');return db['UserProfileResource']['destroy']({'where':{'type':_0x4142c9,'resourceId':_0x54b779['id']}})['then'](function(){return _0x95ffa5;});})[_0x950e('0x31')](function(){_0xa89207[_0x950e('0x2a')](0xcc)[_0x950e('0x29')]();});}};}function handleEntityNotFound(_0x3dd04c,_0x299b16){return function(_0x2bf991){if(!_0x2bf991){_0x3dd04c[_0x950e('0x34')](0x194);}return _0x2bf991;};}function handleError(_0x3680fe,_0x208383){_0x208383=_0x208383||0x1f4;return function(_0x473d2c){logger[_0x950e('0x23')](_0x473d2c[_0x950e('0x35')]);if(_0x473d2c[_0x950e('0x36')]){delete _0x473d2c[_0x950e('0x36')];}_0x3680fe[_0x950e('0x2a')](_0x208383)[_0x950e('0x37')](_0x473d2c);};}exports[_0x950e('0x38')]=function(_0x24953a,_0x7f515c){var _0x26e771={},_0x45b60d={},_0x484fe0={'count':0x0,'rows':[]};var _0xbdf202=_[_0x950e('0x39')](db[_0x950e('0x3a')][_0x950e('0x3b')],function(_0x200a6c){return{'name':_0x200a6c[_0x950e('0x3c')],'type':_0x200a6c['type'][_0x950e('0x3d')]};});_0x45b60d['model']=_[_0x950e('0x39')](_0xbdf202,_0x950e('0x36'));_0x45b60d[_0x950e('0x3e')]=_['keys'](_0x24953a[_0x950e('0x3e')]);_0x45b60d[_0x950e('0x3f')]=_['intersection'](_0x45b60d[_0x950e('0x40')],_0x45b60d[_0x950e('0x3e')]);_0x26e771[_0x950e('0x41')]=_[_0x950e('0x42')](_0x45b60d[_0x950e('0x40')],qs[_0x950e('0x43')](_0x24953a[_0x950e('0x3e')][_0x950e('0x43')]));_0x26e771['attributes']=_0x26e771['attributes'][_0x950e('0x44')]?_0x26e771[_0x950e('0x41')]:_0x45b60d[_0x950e('0x40')];if(!_0x24953a[_0x950e('0x3e')][_0x950e('0x45')](_0x950e('0x46'))){_0x26e771[_0x950e('0x47')]=qs[_0x950e('0x47')](_0x24953a[_0x950e('0x3e')][_0x950e('0x47')]);_0x26e771[_0x950e('0x2d')]=qs[_0x950e('0x2d')](_0x24953a['query'][_0x950e('0x2d')]);}_0x26e771[_0x950e('0x48')]=qs['sort'](_0x24953a['query']['sort']);_0x26e771[_0x950e('0x49')]=qs[_0x950e('0x3f')](_[_0x950e('0x4a')](_0x24953a[_0x950e('0x3e')],_0x45b60d[_0x950e('0x3f')]),_0xbdf202);if(_0x24953a['query'][_0x950e('0x4b')]){_0x26e771[_0x950e('0x49')]=_['merge'](_0x26e771['where'],{'$or':_['map'](_0xbdf202,function(_0x43725d){if(_0x43725d[_0x950e('0x4c')]!==_0x950e('0x4d')){var _0x112659={};_0x112659[_0x43725d[_0x950e('0x36')]]={'$like':'%'+_0x24953a[_0x950e('0x3e')][_0x950e('0x4b')]+'%'};return _0x112659;}})});}_0x26e771=_['merge']({},_0x26e771,_0x24953a[_0x950e('0x4e')]);var _0x54bc82={'where':_0x26e771[_0x950e('0x49')]};return db[_0x950e('0x3a')]['count'](_0x54bc82)[_0x950e('0x31')](function(_0x26e921){_0x484fe0['count']=_0x26e921;if(_0x24953a[_0x950e('0x3e')][_0x950e('0x4f')]){_0x26e771[_0x950e('0x50')]=[{'all':!![]}];}return db[_0x950e('0x3a')][_0x950e('0x51')](_0x26e771);})[_0x950e('0x31')](function(_0x2388a7){_0x484fe0[_0x950e('0x52')]=_0x2388a7;return _0x484fe0;})[_0x950e('0x31')](respondWithFilteredResult(_0x7f515c,_0x26e771))[_0x950e('0x28')](handleError(_0x7f515c,null));};exports[_0x950e('0x53')]=function(_0x5d7621,_0x3ecc02){var _0x2aefc5={'raw':![],'where':{'id':_0x5d7621[_0x950e('0x54')]['id']}},_0xa387f6={};_0xa387f6['model']=_[_0x950e('0x55')](db[_0x950e('0x3a')][_0x950e('0x3b')]);_0xa387f6[_0x950e('0x3e')]=_[_0x950e('0x55')](_0x5d7621[_0x950e('0x3e')]);_0xa387f6[_0x950e('0x3f')]=_[_0x950e('0x42')](_0xa387f6[_0x950e('0x40')],_0xa387f6[_0x950e('0x3e')]);_0x2aefc5[_0x950e('0x41')]=_[_0x950e('0x42')](_0xa387f6[_0x950e('0x40')],qs[_0x950e('0x43')](_0x5d7621[_0x950e('0x3e')]['fields']));_0x2aefc5['attributes']=_0x2aefc5[_0x950e('0x41')][_0x950e('0x44')]?_0x2aefc5[_0x950e('0x41')]:_0xa387f6[_0x950e('0x40')];if(_0x5d7621[_0x950e('0x3e')][_0x950e('0x4f')]){_0x2aefc5['include']=[{'all':!![]}];}_0x2aefc5=_[_0x950e('0x56')]({},_0x2aefc5,_0x5d7621[_0x950e('0x4e')]);return db[_0x950e('0x3a')]['find'](_0x2aefc5)[_0x950e('0x31')](handleEntityNotFound(_0x3ecc02,null))[_0x950e('0x31')](respondWithResult(_0x3ecc02,null))[_0x950e('0x28')](handleError(_0x3ecc02,null));};exports['clone']=function(_0x3f610e,_0x276891){var _0x2c5dda={'where':{'id':_0x3f610e['params']['id']}},_0x5ad815={};_0x5ad815[_0x950e('0x40')]=_[_0x950e('0x55')](db[_0x950e('0x3a')][_0x950e('0x3b')]);_0x2c5dda['attributes']=_[_0x950e('0x42')](_0x5ad815[_0x950e('0x40')],qs[_0x950e('0x43')](_0x3f610e[_0x950e('0x3e')][_0x950e('0x43')]));_0x2c5dda['attributes']=_0x2c5dda['attributes'][_0x950e('0x44')]?_0x2c5dda['attributes']:_0x5ad815['model'];if(_0x3f610e[_0x950e('0x3e')][_0x950e('0x4f')]){_0x2c5dda[_0x950e('0x50')]=[{'all':!![]}];}_0x2c5dda=_['merge']({},_0x2c5dda,_0x3f610e['options']);return db[_0x950e('0x3a')]['find'](_0x2c5dda)[_0x950e('0x31')](handleEntityNotFound(_0x276891,null))[_0x950e('0x31')](function(_0x50a068){if(_0x50a068){var _0x2a1ef1=_0x50a068[_0x950e('0x32')]({'plain':!![]});_0x2a1ef1=qs[_0x950e('0x57')](_0x2a1ef1,['id',_0x950e('0x58'),'updatedAt']);_0x3f610e[_0x950e('0x59')]=_[_0x950e('0x57')](_0x3f610e['body'],['id',_0x950e('0x58'),_0x950e('0x5a')]);return db[_0x950e('0x3a')][_0x950e('0x5b')](_[_0x950e('0x56')](_0x2a1ef1,_0x3f610e[_0x950e('0x59')]),{'include':_0x3f610e[_0x950e('0x3e')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x51d0b8){var _0x272f50=_0x3f610e[_0x950e('0x5c')][_0x950e('0x32')]({'plain':!![]});if(!_0x272f50)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x272f50['role']===_0x950e('0x5c')){var _0x14ecc3=_0x51d0b8[_0x950e('0x32')]({'plain':!![]});var _0x274df=_0x950e('0x33');return db[_0x950e('0x5d')]['find']({'where':{'name':_0x274df,'userProfileId':_0x272f50[_0x950e('0x5e')]},'raw':!![]})[_0x950e('0x31')](function(_0x3b95cd){if(_0x3b95cd&&_0x3b95cd[_0x950e('0x5f')]===0x0){return db[_0x950e('0x60')][_0x950e('0x5b')]({'name':_0x14ecc3[_0x950e('0x36')],'resourceId':_0x14ecc3['id'],'type':_0x3b95cd['name'],'sectionId':_0x3b95cd['id']},{})[_0x950e('0x31')](function(){return _0x51d0b8;});}else{return _0x51d0b8;}})[_0x950e('0x28')](function(_0x5a2cc8){logger[_0x950e('0x23')](_0x950e('0x61'),_0x5a2cc8);throw _0x5a2cc8;});}return _0x51d0b8;});}})[_0x950e('0x31')](respondWithResult(_0x276891,0xc9))['catch'](handleError(_0x276891,null));};exports[_0x950e('0x5b')]=function(_0x204c23,_0xe45c44,_0x3885e0){var _0x1a7766;return db[_0x950e('0x3a')][_0x950e('0x5b')](_0x204c23['body'],{'raw':!![]})['then'](function(_0x19789e){_0x1a7766=_0x19789e;return db['Trunk'][_0x950e('0x51')]({'raw':!![]});})['then'](function(_0x309945){var _0x7fe491=fs[_0x950e('0x62')](path[_0x950e('0x63')](config[_0x950e('0x64')],_0x950e('0x65')),_0x950e('0x66'));var _0x2264c6=fs[_0x950e('0x62')](path[_0x950e('0x63')](config[_0x950e('0x64')],'server/files/templates/registry.ejs'),_0x950e('0x66'));var _0x147a84=ejs[_0x950e('0x67')](_0x7fe491,{'trunks':_0x309945||[]});fs[_0x950e('0x68')](_0x950e('0x69'),_0x147a84);if(_0x1a7766[_0x950e('0x6a')]){var _0x2aa0e9=ejs[_0x950e('0x67')](_0x2264c6,{'trunks':_0x309945||[]});fs[_0x950e('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x2aa0e9);}})[_0x950e('0x31')](function(){return respondWithRpcPromise(_0x950e('0x6b'),_0x950e('0x5b'),{'module':_0x950e('0x6c')});})[_0x950e('0x31')](function(){var _0x5876f3=_0x204c23[_0x950e('0x5c')]['get']({'plain':!![]});if(!_0x5876f3)throw new Error(_0x950e('0x6d'));if(_0x5876f3[_0x950e('0x6e')]==='user'){var _0x1b6d4a=_0x1a7766['get']({'plain':!![]});return db[_0x950e('0x5d')][_0x950e('0x6f')]({'where':{'name':'Trunks','userProfileId':_0x5876f3[_0x950e('0x5e')]},'raw':!![]})[_0x950e('0x31')](function(_0x46668d){if(_0x46668d&&_0x46668d[_0x950e('0x5f')]===0x0){return db['UserProfileResource'][_0x950e('0x5b')]({'name':_0x1b6d4a[_0x950e('0x36')],'resourceId':_0x1b6d4a['id'],'type':_0x46668d[_0x950e('0x36')],'sectionId':_0x46668d['id']},{})[_0x950e('0x31')](function(){return _0x1a7766;});}else{return _0x1a7766;}})[_0x950e('0x28')](function(_0x4f8a29){logger[_0x950e('0x23')](_0x950e('0x61'),_0x4f8a29);throw _0x4f8a29;});}return _0x1a7766;})['then'](respondWithResult(_0xe45c44,0xc9))['catch'](handleError(_0xe45c44,null));};exports[_0x950e('0x70')]=function(_0x587670,_0x45465a,_0x3ac3f8){var _0x33c3ff;return db[_0x950e('0x3a')][_0x950e('0x6f')]({'where':{'id':_0x587670[_0x950e('0x54')]['id']}})[_0x950e('0x31')](handleEntityNotFound(_0x45465a,null))['then'](saveUpdates(_0x587670[_0x950e('0x59')],null))[_0x950e('0x31')](function(_0x25ee02){if(_0x25ee02){_0x33c3ff=_0x25ee02;return db[_0x950e('0x3a')][_0x950e('0x51')]({'raw':!![]});}})['then'](function(_0x245ac0){if(_0x245ac0){var _0x5861ad=fs['readFileSync'](path[_0x950e('0x63')](config['root'],_0x950e('0x65')),'utf8');var _0x3a5a3d=fs['readFileSync'](path['join'](config[_0x950e('0x64')],_0x950e('0x71')),_0x950e('0x66'));var _0x35d9a8=ejs[_0x950e('0x67')](_0x5861ad,{'trunks':_0x245ac0||[]});fs[_0x950e('0x68')]('/etc/asterisk/sip_xcally_trunks.conf',_0x35d9a8);var _0x20d96b=ejs[_0x950e('0x67')](_0x3a5a3d,{'trunks':_0x245ac0||[]});fs[_0x950e('0x68')](_0x950e('0x72'),_0x20d96b);return respondWithRpcPromise('Reload',_0x950e('0x70'),{'module':_0x950e('0x6c')});}return null;})[_0x950e('0x31')](function(_0x4824aa){if(_0x4824aa){return _0x33c3ff;}})['then'](respondWithResult(_0x45465a,null))[_0x950e('0x28')](handleError(_0x45465a,null));};exports[_0x950e('0x73')]=function(_0x280db6,_0x1cfbf2,_0x40910d){var _0x423dfe;return db[_0x950e('0x3a')]['find']({'where':{'id':_0x280db6[_0x950e('0x54')]['id']}})[_0x950e('0x31')](handleEntityNotFound(_0x1cfbf2,null))[_0x950e('0x31')](removeEntity(_0x1cfbf2,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})[_0x950e('0x31')](function(_0x3027e8){var _0x414d7c=fs[_0x950e('0x62')](path[_0x950e('0x63')](config[_0x950e('0x64')],_0x950e('0x65')),'utf8');var _0x815c41=fs['readFileSync'](path['join'](config['root'],_0x950e('0x71')),_0x950e('0x66'));var _0x4ee024=ejs['render'](_0x414d7c,{'trunks':_0x3027e8});var _0x244314=ejs[_0x950e('0x67')](_0x815c41,{'trunks':_0x3027e8});fs[_0x950e('0x68')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4ee024);fs[_0x950e('0x68')](_0x950e('0x72'),_0x244314);return respondWithRpcPromise(_0x950e('0x6b'),'destroy',{'module':_0x950e('0x6c')});})['catch'](handleError(_0x1cfbf2,null));};