defa3e2a140040c953f9c3bf7278d57c29c8a896
[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 _0x4339=['order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','fields','include','find','omit','createdAt','body','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','chan_sip.so','server/files/templates/registry.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','client','http','request','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','destroy','then','get','Trunks','sendStatus','stack','name','send','index','map','Trunk','fieldName','key','query','filters','model','attributes','intersection','length','hasOwnProperty','nolimit'];(function(_0x50a004,_0x193d84){var _0x5e9992=function(_0x3c8c37){while(--_0x3c8c37){_0x50a004['push'](_0x50a004['shift']());}};_0x5e9992(++_0x193d84);}(_0x4339,0x186));var _0x9433=function(_0x5aca4c,_0x4add68){_0x5aca4c=_0x5aca4c-0x0;var _0x496604=_0x4339[_0x5aca4c];return _0x496604;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x9433('0x0'));var rimraf=require(_0x9433('0x1'));var zipdir=require(_0x9433('0x2'));var jsonpatch=require(_0x9433('0x3'));var rp=require(_0x9433('0x4'));var moment=require(_0x9433('0x5'));var BPromise=require(_0x9433('0x6'));var Mustache=require(_0x9433('0x7'));var util=require(_0x9433('0x8'));var path=require(_0x9433('0x9'));var sox=require(_0x9433('0xa'));var csv=require('to-csv');var ejs=require(_0x9433('0xb'));var fs=require('fs');var _=require(_0x9433('0xc'));var squel=require(_0x9433('0xd'));var crypto=require(_0x9433('0xe'));var jsforce=require(_0x9433('0xf'));var deskjs=require(_0x9433('0x10'));var toCsv=require(_0x9433('0x11'));var querystring=require(_0x9433('0x12'));var Papa=require(_0x9433('0x13'));var Redis=require(_0x9433('0x14'));var authService=require(_0x9433('0x15'));var qs=require(_0x9433('0x16'));var as=require(_0x9433('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9433('0x18'))(_0x9433('0x19'));var utils=require(_0x9433('0x1a'));var config=require(_0x9433('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x9433('0x1c'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x9433('0x1d')][_0x9433('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x396c15,_0x3afa7f,_0x17ff9b,_0x5aff68){return new BPromise(function(_0x3034ad,_0x146520){var _0xd3ad63=_0x5aff68||client;return _0xd3ad63[_0x9433('0x1f')](_0x396c15,_0x17ff9b)['then'](function(_0x309260){logger[_0x9433('0x20')](_0x9433('0x21'),_0x3afa7f,_0x9433('0x22'));logger[_0x9433('0x23')](_0x9433('0x24'),_0x3afa7f,'request\x20sent',JSON[_0x9433('0x25')](_0x309260));if(_0x309260[_0x9433('0x26')]){if(_0x309260['error'][_0x9433('0x27')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x3afa7f,_0x309260['error'][_0x9433('0x28')]);return _0x146520(_0x309260[_0x9433('0x26')][_0x9433('0x28')]);}logger[_0x9433('0x26')](_0x9433('0x21'),_0x3afa7f,_0x309260[_0x9433('0x26')][_0x9433('0x28')]);return _0x3034ad(_0x309260[_0x9433('0x26')][_0x9433('0x28')]);}else{logger[_0x9433('0x20')](_0x9433('0x21'),_0x3afa7f,_0x9433('0x22'));_0x3034ad(_0x309260[_0x9433('0x29')][_0x9433('0x28')]);}})['catch'](function(_0x81316e){logger[_0x9433('0x26')](_0x9433('0x21'),_0x3afa7f,_0x81316e);_0x146520(_0x81316e);});});}function respondWithStatusCode(_0x17dea0,_0x357a02){_0x357a02=_0x357a02||0xcc;return function(_0x549b77){if(_0x549b77){return _0x17dea0['sendStatus'](_0x357a02);}return _0x17dea0[_0x9433('0x2a')](_0x357a02)[_0x9433('0x2b')]();};}function respondWithResult(_0x1798fd,_0x62963b){_0x62963b=_0x62963b||0xc8;return function(_0xbcc2c6){if(_0xbcc2c6){return _0x1798fd[_0x9433('0x2a')](_0x62963b)[_0x9433('0x2c')](_0xbcc2c6);}};}function respondWithFilteredResult(_0x5243b6,_0x5bb4b6){return function(_0x3fc7c9){if(_0x3fc7c9){var _0x2ac8bb=_0x3fc7c9[_0x9433('0x2d')],_0x1c1688=_0x5bb4b6[_0x9433('0x2e')],_0x388afd=_0x5bb4b6[_0x9433('0x2e')]+_0x5bb4b6[_0x9433('0x2f')],_0x560cbd;if(_0x388afd>=_0x2ac8bb){_0x388afd=_0x2ac8bb;_0x560cbd=0xc8;}else{_0x560cbd=0xce;}_0x5243b6['status'](_0x560cbd);return _0x5243b6['set'](_0x9433('0x30'),_0x1c1688+'-'+_0x388afd+'/'+_0x2ac8bb)[_0x9433('0x2c')](_0x3fc7c9);}return null;};}function patchUpdates(_0x452363){return function(_0x22c994){try{jsonpatch[_0x9433('0x31')](_0x22c994,_0x452363,!![]);}catch(_0x35743b){return BPromise[_0x9433('0x32')](_0x35743b);}return _0x22c994[_0x9433('0x33')]();};}function saveUpdates(_0xddefeb,_0x461e68){return function(_0x417fc6){if(_0x417fc6){return _0x417fc6[_0x9433('0x34')](_0xddefeb)['then'](function(_0x55ad47){return _0x55ad47;});}return null;};}function removeEntity(_0x2cdc05,_0x569b8c){return function(_0x41cd07){if(_0x41cd07){return _0x41cd07[_0x9433('0x35')]()[_0x9433('0x36')](function(){var _0x460ea3=_0x41cd07[_0x9433('0x37')]({'plain':!![]});var _0x34ad87=_0x9433('0x38');return db['UserProfileResource'][_0x9433('0x35')]({'where':{'type':_0x34ad87,'resourceId':_0x460ea3['id']}})['then'](function(){return _0x41cd07;});})[_0x9433('0x36')](function(){_0x2cdc05[_0x9433('0x2a')](0xcc)[_0x9433('0x2b')]();});}};}function handleEntityNotFound(_0x2c9a31,_0x225f74){return function(_0x435470){if(!_0x435470){_0x2c9a31[_0x9433('0x39')](0x194);}return _0x435470;};}function handleError(_0x552432,_0x9ac48d){_0x9ac48d=_0x9ac48d||0x1f4;return function(_0x2cd12b){logger[_0x9433('0x26')](_0x2cd12b[_0x9433('0x3a')]);if(_0x2cd12b[_0x9433('0x3b')]){delete _0x2cd12b[_0x9433('0x3b')];}_0x552432['status'](_0x9ac48d)[_0x9433('0x3c')](_0x2cd12b);};}exports[_0x9433('0x3d')]=function(_0x45c768,_0x479398){var _0x2ad9c9={},_0x3c7cee={},_0x6a82ae={'count':0x0,'rows':[]};var _0x487b76=_[_0x9433('0x3e')](db[_0x9433('0x3f')]['rawAttributes'],function(_0x13fb3d){return{'name':_0x13fb3d[_0x9433('0x40')],'type':_0x13fb3d['type'][_0x9433('0x41')]};});_0x3c7cee['model']=_[_0x9433('0x3e')](_0x487b76,_0x9433('0x3b'));_0x3c7cee[_0x9433('0x42')]=_['keys'](_0x45c768['query']);_0x3c7cee[_0x9433('0x43')]=_['intersection'](_0x3c7cee[_0x9433('0x44')],_0x3c7cee['query']);_0x2ad9c9[_0x9433('0x45')]=_[_0x9433('0x46')](_0x3c7cee[_0x9433('0x44')],qs['fields'](_0x45c768['query']['fields']));_0x2ad9c9[_0x9433('0x45')]=_0x2ad9c9['attributes'][_0x9433('0x47')]?_0x2ad9c9[_0x9433('0x45')]:_0x3c7cee[_0x9433('0x44')];if(!_0x45c768['query'][_0x9433('0x48')](_0x9433('0x49'))){_0x2ad9c9[_0x9433('0x2f')]=qs[_0x9433('0x2f')](_0x45c768[_0x9433('0x42')][_0x9433('0x2f')]);_0x2ad9c9[_0x9433('0x2e')]=qs['offset'](_0x45c768[_0x9433('0x42')][_0x9433('0x2e')]);}_0x2ad9c9[_0x9433('0x4a')]=qs['sort'](_0x45c768[_0x9433('0x42')][_0x9433('0x4b')]);_0x2ad9c9[_0x9433('0x4c')]=qs['filters'](_['pick'](_0x45c768['query'],_0x3c7cee['filters']),_0x487b76);if(_0x45c768[_0x9433('0x42')][_0x9433('0x4d')]){_0x2ad9c9[_0x9433('0x4c')]=_[_0x9433('0x4e')](_0x2ad9c9[_0x9433('0x4c')],{'$or':_[_0x9433('0x3e')](_0x487b76,function(_0x346cb5){if(_0x346cb5[_0x9433('0x4f')]!==_0x9433('0x50')){var _0x4e93b6={};_0x4e93b6[_0x346cb5['name']]={'$like':'%'+_0x45c768[_0x9433('0x42')][_0x9433('0x4d')]+'%'};return _0x4e93b6;}})});}_0x2ad9c9=_['merge']({},_0x2ad9c9,_0x45c768[_0x9433('0x51')]);var _0x4e9d0d={'where':_0x2ad9c9[_0x9433('0x4c')]};return db[_0x9433('0x3f')][_0x9433('0x2d')](_0x4e9d0d)[_0x9433('0x36')](function(_0x19e761){_0x6a82ae[_0x9433('0x2d')]=_0x19e761;if(_0x45c768[_0x9433('0x42')][_0x9433('0x52')]){_0x2ad9c9['include']=[{'all':!![]}];}return db['Trunk'][_0x9433('0x53')](_0x2ad9c9);})['then'](function(_0x1f773b){_0x6a82ae[_0x9433('0x54')]=_0x1f773b;return _0x6a82ae;})[_0x9433('0x36')](respondWithFilteredResult(_0x479398,_0x2ad9c9))[_0x9433('0x55')](handleError(_0x479398,null));};exports['show']=function(_0x35f93b,_0x5c3440){var _0x2aa40f={'raw':![],'where':{'id':_0x35f93b[_0x9433('0x56')]['id']}},_0x35f8c6={};_0x35f8c6[_0x9433('0x44')]=_[_0x9433('0x57')](db['Trunk'][_0x9433('0x58')]);_0x35f8c6[_0x9433('0x42')]=_[_0x9433('0x57')](_0x35f93b[_0x9433('0x42')]);_0x35f8c6[_0x9433('0x43')]=_[_0x9433('0x46')](_0x35f8c6['model'],_0x35f8c6[_0x9433('0x42')]);_0x2aa40f[_0x9433('0x45')]=_[_0x9433('0x46')](_0x35f8c6[_0x9433('0x44')],qs[_0x9433('0x59')](_0x35f93b[_0x9433('0x42')][_0x9433('0x59')]));_0x2aa40f[_0x9433('0x45')]=_0x2aa40f[_0x9433('0x45')][_0x9433('0x47')]?_0x2aa40f['attributes']:_0x35f8c6['model'];if(_0x35f93b[_0x9433('0x42')][_0x9433('0x52')]){_0x2aa40f[_0x9433('0x5a')]=[{'all':!![]}];}_0x2aa40f=_[_0x9433('0x4e')]({},_0x2aa40f,_0x35f93b[_0x9433('0x51')]);return db[_0x9433('0x3f')]['find'](_0x2aa40f)[_0x9433('0x36')](handleEntityNotFound(_0x5c3440,null))[_0x9433('0x36')](respondWithResult(_0x5c3440,null))[_0x9433('0x55')](handleError(_0x5c3440,null));};exports['clone']=function(_0xe67a10,_0x3031c5){var _0x3a71a5={'where':{'id':_0xe67a10[_0x9433('0x56')]['id']}},_0x255091={};_0x255091[_0x9433('0x44')]=_['keys'](db['Trunk'][_0x9433('0x58')]);_0x3a71a5[_0x9433('0x45')]=_[_0x9433('0x46')](_0x255091['model'],qs['fields'](_0xe67a10['query']['fields']));_0x3a71a5[_0x9433('0x45')]=_0x3a71a5[_0x9433('0x45')][_0x9433('0x47')]?_0x3a71a5[_0x9433('0x45')]:_0x255091['model'];if(_0xe67a10[_0x9433('0x42')][_0x9433('0x52')]){_0x3a71a5[_0x9433('0x5a')]=[{'all':!![]}];}_0x3a71a5=_['merge']({},_0x3a71a5,_0xe67a10[_0x9433('0x51')]);return db['Trunk'][_0x9433('0x5b')](_0x3a71a5)[_0x9433('0x36')](handleEntityNotFound(_0x3031c5,null))[_0x9433('0x36')](function(_0x3aa803){if(_0x3aa803){var _0x92421c=_0x3aa803[_0x9433('0x37')]({'plain':!![]});_0x92421c=qs[_0x9433('0x5c')](_0x92421c,['id',_0x9433('0x5d'),'updatedAt']);_0xe67a10[_0x9433('0x5e')]=_[_0x9433('0x5c')](_0xe67a10['body'],['id','createdAt','updatedAt']);return db['Trunk'][_0x9433('0x5f')](_[_0x9433('0x4e')](_0x92421c,_0xe67a10[_0x9433('0x5e')]),{'include':_0xe67a10[_0x9433('0x42')][_0x9433('0x52')]?[{'all':!![]}]:undefined})[_0x9433('0x36')](function(_0x2043ec){var _0x4724a5=_0xe67a10['user'][_0x9433('0x37')]({'plain':!![]});if(!_0x4724a5)throw new Error(_0x9433('0x60'));if(_0x4724a5['role']===_0x9433('0x61')){var _0x4b9ae4=_0x2043ec['get']({'plain':!![]});var _0x52fb93=_0x9433('0x38');return db[_0x9433('0x62')]['find']({'where':{'name':_0x52fb93,'userProfileId':_0x4724a5[_0x9433('0x63')]},'raw':!![]})[_0x9433('0x36')](function(_0x308c26){if(_0x308c26&&_0x308c26[_0x9433('0x64')]===0x0){return db[_0x9433('0x65')][_0x9433('0x5f')]({'name':_0x4b9ae4['name'],'resourceId':_0x4b9ae4['id'],'type':_0x308c26[_0x9433('0x3b')],'sectionId':_0x308c26['id']},{})[_0x9433('0x36')](function(){return _0x2043ec;});}else{return _0x2043ec;}})[_0x9433('0x55')](function(_0x26a844){logger[_0x9433('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x26a844);throw _0x26a844;});}return _0x2043ec;});}})['then'](respondWithResult(_0x3031c5,0xc9))[_0x9433('0x55')](handleError(_0x3031c5,null));};exports[_0x9433('0x5f')]=function(_0x5a5408,_0xabb804,_0x4a1416){var _0x10aae6;return db[_0x9433('0x3f')][_0x9433('0x5f')](_0x5a5408[_0x9433('0x5e')],{'raw':!![]})[_0x9433('0x36')](function(_0x4d1db3){_0x10aae6=_0x4d1db3;return db[_0x9433('0x3f')][_0x9433('0x53')]({'raw':!![]});})[_0x9433('0x36')](function(_0x4e4445){var _0x2c9078=fs[_0x9433('0x66')](path[_0x9433('0x67')](config[_0x9433('0x68')],_0x9433('0x69')),_0x9433('0x6a'));var _0x24d2af=fs[_0x9433('0x66')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0x9433('0x6a'));var _0x1e5630=ejs[_0x9433('0x6b')](_0x2c9078,{'trunks':_0x4e4445||[]});fs[_0x9433('0x6c')](_0x9433('0x6d'),_0x1e5630);if(_0x10aae6[_0x9433('0x6e')]){var _0x18aec7=ejs[_0x9433('0x6b')](_0x24d2af,{'trunks':_0x4e4445||[]});fs[_0x9433('0x6c')](_0x9433('0x6f'),_0x18aec7);}})[_0x9433('0x36')](function(){return respondWithRpcPromise(_0x9433('0x70'),_0x9433('0x5f'),{'module':'chan_sip.so'});})['then'](function(){var _0x4b9706=_0x5a5408[_0x9433('0x61')]['get']({'plain':!![]});if(!_0x4b9706)throw new Error(_0x9433('0x60'));if(_0x4b9706['role']===_0x9433('0x61')){var _0x2be0ca=_0x10aae6[_0x9433('0x37')]({'plain':!![]});return db[_0x9433('0x62')][_0x9433('0x5b')]({'where':{'name':'Trunks','userProfileId':_0x4b9706[_0x9433('0x63')]},'raw':!![]})[_0x9433('0x36')](function(_0x4b3513){if(_0x4b3513&&_0x4b3513[_0x9433('0x64')]===0x0){return db[_0x9433('0x65')][_0x9433('0x5f')]({'name':_0x2be0ca[_0x9433('0x3b')],'resourceId':_0x2be0ca['id'],'type':_0x4b3513[_0x9433('0x3b')],'sectionId':_0x4b3513['id']},{})[_0x9433('0x36')](function(){return _0x10aae6;});}else{return _0x10aae6;}})[_0x9433('0x55')](function(_0x2fa927){logger['error'](_0x9433('0x71'),_0x2fa927);throw _0x2fa927;});}return _0x10aae6;})[_0x9433('0x36')](respondWithResult(_0xabb804,0xc9))[_0x9433('0x55')](handleError(_0xabb804,null));};exports[_0x9433('0x34')]=function(_0x2c66f6,_0x2bd0b2,_0x50498c){var _0x33ed26;return db[_0x9433('0x3f')]['find']({'where':{'id':_0x2c66f6[_0x9433('0x56')]['id']}})[_0x9433('0x36')](handleEntityNotFound(_0x2bd0b2,null))[_0x9433('0x36')](saveUpdates(_0x2c66f6[_0x9433('0x5e')],null))['then'](function(_0x294d21){if(_0x294d21){_0x33ed26=_0x294d21;return db[_0x9433('0x3f')][_0x9433('0x53')]({'raw':!![]});}})[_0x9433('0x36')](function(_0x1bb596){if(_0x1bb596){var _0x4508ea=fs[_0x9433('0x66')](path['join'](config[_0x9433('0x68')],_0x9433('0x69')),'utf8');var _0x4e5f07=fs['readFileSync'](path['join'](config[_0x9433('0x68')],'server/files/templates/registry.ejs'),'utf8');var _0x3d7a46=ejs[_0x9433('0x6b')](_0x4508ea,{'trunks':_0x1bb596||[]});fs[_0x9433('0x6c')]('/etc/asterisk/sip_xcally_trunks.conf',_0x3d7a46);var _0x44563a=ejs[_0x9433('0x6b')](_0x4e5f07,{'trunks':_0x1bb596||[]});fs[_0x9433('0x6c')](_0x9433('0x6f'),_0x44563a);return respondWithRpcPromise(_0x9433('0x70'),_0x9433('0x34'),{'module':_0x9433('0x72')});}return null;})[_0x9433('0x36')](function(_0x1f583d){if(_0x1f583d){return _0x33ed26;}})['then'](respondWithResult(_0x2bd0b2,null))[_0x9433('0x55')](handleError(_0x2bd0b2,null));};exports['destroy']=function(_0x104ade,_0x5ca96e,_0x5343bd){var _0x4b2420;return db[_0x9433('0x3f')]['find']({'where':{'id':_0x104ade['params']['id']}})['then'](handleEntityNotFound(_0x5ca96e,null))[_0x9433('0x36')](removeEntity(_0x5ca96e,null))[_0x9433('0x36')](function(){return db[_0x9433('0x3f')][_0x9433('0x53')]({'raw':!![]});})[_0x9433('0x36')](function(_0x4838c2){var _0x4d1035=fs[_0x9433('0x66')](path[_0x9433('0x67')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0xcfb498=fs[_0x9433('0x66')](path['join'](config[_0x9433('0x68')],_0x9433('0x73')),_0x9433('0x6a'));var _0x34ff7f=ejs[_0x9433('0x6b')](_0x4d1035,{'trunks':_0x4838c2});var _0x3da0bf=ejs[_0x9433('0x6b')](_0xcfb498,{'trunks':_0x4838c2});fs[_0x9433('0x6c')](_0x9433('0x6d'),_0x34ff7f);fs[_0x9433('0x6c')]('/etc/asterisk/sip_xcally_registers.conf',_0x3da0bf);return respondWithRpcPromise(_0x9433('0x70'),_0x9433('0x35'),{'module':'chan_sip.so'});})[_0x9433('0x55')](handleError(_0x5ca96e,null));};