2c3389ae599f32feba6ae199e70899cde5bd960e
[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 _0xa556=['include','findAll','catch','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/registry.ejs','utf8','render','writeFileSync','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','role','UserProfileSection','server/files/templates/trunk.ejs','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','count','offset','set','Content-Range','json','destroy','get','Trunks','UserProfileResource','stack','name','send','index','map','Trunk','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xa556,0x89));var _0x6a55=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0xa556[_0x616290];return _0x453879;};'use strict';var pdf=require(_0x6a55('0x0'));var emlformat=require(_0x6a55('0x1'));var rimraf=require(_0x6a55('0x2'));var zipdir=require(_0x6a55('0x3'));var jsonpatch=require(_0x6a55('0x4'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6a55('0x5'));var Mustache=require('mustache');var util=require(_0x6a55('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6a55('0x7'));var ejs=require(_0x6a55('0x8'));var fs=require('fs');var _=require('lodash');var squel=require(_0x6a55('0x9'));var crypto=require(_0x6a55('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x6a55('0xb'));var toCsv=require(_0x6a55('0x7'));var querystring=require(_0x6a55('0xc'));var Papa=require(_0x6a55('0xd'));var Redis=require('ioredis');var authService=require(_0x6a55('0xe'));var qs=require(_0x6a55('0xf'));var as=require(_0x6a55('0x10'));var hardwareService=require(_0x6a55('0x11'));var logger=require(_0x6a55('0x12'))(_0x6a55('0x13'));var utils=require(_0x6a55('0x14'));var config=require(_0x6a55('0x15'));var licenseUtil=require(_0x6a55('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x6a55('0x17'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d1afb,_0x5a594e,_0x57ed04,_0x2fd172){return new BPromise(function(_0x4e5500,_0x23e3cc){var _0x3af587=_0x2fd172||client;return _0x3af587[_0x6a55('0x18')](_0x2d1afb,_0x57ed04)[_0x6a55('0x19')](function(_0x326e79){logger[_0x6a55('0x1a')](_0x6a55('0x1b'),_0x5a594e,_0x6a55('0x1c'));logger[_0x6a55('0x1d')](_0x6a55('0x1e'),_0x5a594e,_0x6a55('0x1c'),JSON[_0x6a55('0x1f')](_0x326e79));if(_0x326e79[_0x6a55('0x20')]){if(_0x326e79['error'][_0x6a55('0x21')]===0x1f4){logger[_0x6a55('0x20')]('Trunk,\x20%s,\x20%s',_0x5a594e,_0x326e79[_0x6a55('0x20')][_0x6a55('0x22')]);return _0x23e3cc(_0x326e79[_0x6a55('0x20')][_0x6a55('0x22')]);}logger[_0x6a55('0x20')](_0x6a55('0x1b'),_0x5a594e,_0x326e79[_0x6a55('0x20')][_0x6a55('0x22')]);return _0x4e5500(_0x326e79[_0x6a55('0x20')][_0x6a55('0x22')]);}else{logger['info'](_0x6a55('0x1b'),_0x5a594e,'request\x20sent');_0x4e5500(_0x326e79[_0x6a55('0x23')][_0x6a55('0x22')]);}})['catch'](function(_0x1969e3){logger['error'](_0x6a55('0x1b'),_0x5a594e,_0x1969e3);_0x23e3cc(_0x1969e3);});});}function respondWithStatusCode(_0x3e4b2b,_0x5b22c1){_0x5b22c1=_0x5b22c1||0xcc;return function(_0x2f6b60){if(_0x2f6b60){return _0x3e4b2b[_0x6a55('0x24')](_0x5b22c1);}return _0x3e4b2b[_0x6a55('0x25')](_0x5b22c1)[_0x6a55('0x26')]();};}function respondWithResult(_0x554f36,_0x5d6ab){_0x5d6ab=_0x5d6ab||0xc8;return function(_0x3ef813){if(_0x3ef813){return _0x554f36[_0x6a55('0x25')](_0x5d6ab)['json'](_0x3ef813);}};}function respondWithFilteredResult(_0x1cc039,_0x15e988){return function(_0x45e66f){if(_0x45e66f){var _0x4e0c0e=_0x45e66f[_0x6a55('0x27')],_0x43d2ad=_0x15e988[_0x6a55('0x28')],_0x3c0989=_0x15e988[_0x6a55('0x28')]+_0x15e988['limit'],_0x83d515;if(_0x3c0989>=_0x4e0c0e){_0x3c0989=_0x4e0c0e;_0x83d515=0xc8;}else{_0x83d515=0xce;}_0x1cc039[_0x6a55('0x25')](_0x83d515);return _0x1cc039[_0x6a55('0x29')](_0x6a55('0x2a'),_0x43d2ad+'-'+_0x3c0989+'/'+_0x4e0c0e)[_0x6a55('0x2b')](_0x45e66f);}return null;};}function patchUpdates(_0x2e8c83){return function(_0x1e4ba9){try{jsonpatch['apply'](_0x1e4ba9,_0x2e8c83,!![]);}catch(_0x227f6c){return BPromise['reject'](_0x227f6c);}return _0x1e4ba9['save']();};}function saveUpdates(_0x5e489d,_0x2284b8){return function(_0x5ec366){if(_0x5ec366){return _0x5ec366['update'](_0x5e489d)[_0x6a55('0x19')](function(_0x30f084){return _0x30f084;});}return null;};}function removeEntity(_0x8aabbe,_0x11b6df){return function(_0x2c82c0){if(_0x2c82c0){return _0x2c82c0[_0x6a55('0x2c')]()[_0x6a55('0x19')](function(){var _0x1d3ba7=_0x2c82c0[_0x6a55('0x2d')]({'plain':!![]});var _0x2063b2=_0x6a55('0x2e');return db[_0x6a55('0x2f')][_0x6a55('0x2c')]({'where':{'type':_0x2063b2,'resourceId':_0x1d3ba7['id']}})[_0x6a55('0x19')](function(){return _0x2c82c0;});})[_0x6a55('0x19')](function(){_0x8aabbe[_0x6a55('0x25')](0xcc)[_0x6a55('0x26')]();});}};}function handleEntityNotFound(_0x3eb4cb,_0x58d52e){return function(_0x31752c){if(!_0x31752c){_0x3eb4cb['sendStatus'](0x194);}return _0x31752c;};}function handleError(_0x31f1a8,_0x113106){_0x113106=_0x113106||0x1f4;return function(_0xfe1c99){logger[_0x6a55('0x20')](_0xfe1c99[_0x6a55('0x30')]);if(_0xfe1c99[_0x6a55('0x31')]){delete _0xfe1c99[_0x6a55('0x31')];}_0x31f1a8[_0x6a55('0x25')](_0x113106)[_0x6a55('0x32')](_0xfe1c99);};}exports[_0x6a55('0x33')]=function(_0x2add53,_0x3498c3){var _0x11e1ec={},_0x161c9c={},_0x32b131={'count':0x0,'rows':[]};var _0x29ef4a=_[_0x6a55('0x34')](db[_0x6a55('0x35')][_0x6a55('0x36')],function(_0x558826){return{'name':_0x558826[_0x6a55('0x37')],'type':_0x558826[_0x6a55('0x38')][_0x6a55('0x39')]};});_0x161c9c[_0x6a55('0x3a')]=_[_0x6a55('0x34')](_0x29ef4a,_0x6a55('0x31'));_0x161c9c[_0x6a55('0x3b')]=_[_0x6a55('0x3c')](_0x2add53[_0x6a55('0x3b')]);_0x161c9c[_0x6a55('0x3d')]=_['intersection'](_0x161c9c['model'],_0x161c9c[_0x6a55('0x3b')]);_0x11e1ec[_0x6a55('0x3e')]=_[_0x6a55('0x3f')](_0x161c9c[_0x6a55('0x3a')],qs[_0x6a55('0x40')](_0x2add53[_0x6a55('0x3b')][_0x6a55('0x40')]));_0x11e1ec[_0x6a55('0x3e')]=_0x11e1ec['attributes'][_0x6a55('0x41')]?_0x11e1ec[_0x6a55('0x3e')]:_0x161c9c[_0x6a55('0x3a')];if(!_0x2add53[_0x6a55('0x3b')]['hasOwnProperty']('nolimit')){_0x11e1ec[_0x6a55('0x42')]=qs[_0x6a55('0x42')](_0x2add53[_0x6a55('0x3b')][_0x6a55('0x42')]);_0x11e1ec[_0x6a55('0x28')]=qs['offset'](_0x2add53['query'][_0x6a55('0x28')]);}_0x11e1ec[_0x6a55('0x43')]=qs['sort'](_0x2add53[_0x6a55('0x3b')][_0x6a55('0x44')]);_0x11e1ec[_0x6a55('0x45')]=qs[_0x6a55('0x3d')](_[_0x6a55('0x46')](_0x2add53['query'],_0x161c9c['filters']),_0x29ef4a);if(_0x2add53['query'][_0x6a55('0x47')]){_0x11e1ec[_0x6a55('0x45')]=_[_0x6a55('0x48')](_0x11e1ec['where'],{'$or':_[_0x6a55('0x34')](_0x29ef4a,function(_0x41d2e4){if(_0x41d2e4[_0x6a55('0x38')]!==_0x6a55('0x49')){var _0xc49ef3={};_0xc49ef3[_0x41d2e4[_0x6a55('0x31')]]={'$like':'%'+_0x2add53[_0x6a55('0x3b')][_0x6a55('0x47')]+'%'};return _0xc49ef3;}})});}_0x11e1ec=_['merge']({},_0x11e1ec,_0x2add53['options']);var _0x88b016={'where':_0x11e1ec[_0x6a55('0x45')]};return db[_0x6a55('0x35')][_0x6a55('0x27')](_0x88b016)[_0x6a55('0x19')](function(_0x19dda0){_0x32b131[_0x6a55('0x27')]=_0x19dda0;if(_0x2add53['query'][_0x6a55('0x4a')]){_0x11e1ec[_0x6a55('0x4b')]=[{'all':!![]}];}return db[_0x6a55('0x35')][_0x6a55('0x4c')](_0x11e1ec);})[_0x6a55('0x19')](function(_0x1d368c){_0x32b131['rows']=_0x1d368c;return _0x32b131;})[_0x6a55('0x19')](respondWithFilteredResult(_0x3498c3,_0x11e1ec))[_0x6a55('0x4d')](handleError(_0x3498c3,null));};exports['show']=function(_0x2d321a,_0x2fe726){var _0x48043c={'raw':![],'where':{'id':_0x2d321a['params']['id']}},_0x16739f={};_0x16739f['model']=_['keys'](db[_0x6a55('0x35')][_0x6a55('0x36')]);_0x16739f[_0x6a55('0x3b')]=_[_0x6a55('0x3c')](_0x2d321a[_0x6a55('0x3b')]);_0x16739f['filters']=_[_0x6a55('0x3f')](_0x16739f[_0x6a55('0x3a')],_0x16739f[_0x6a55('0x3b')]);_0x48043c[_0x6a55('0x3e')]=_[_0x6a55('0x3f')](_0x16739f[_0x6a55('0x3a')],qs[_0x6a55('0x40')](_0x2d321a['query'][_0x6a55('0x40')]));_0x48043c['attributes']=_0x48043c[_0x6a55('0x3e')][_0x6a55('0x41')]?_0x48043c[_0x6a55('0x3e')]:_0x16739f['model'];if(_0x2d321a[_0x6a55('0x3b')][_0x6a55('0x4a')]){_0x48043c[_0x6a55('0x4b')]=[{'all':!![]}];}_0x48043c=_[_0x6a55('0x48')]({},_0x48043c,_0x2d321a['options']);return db[_0x6a55('0x35')][_0x6a55('0x4e')](_0x48043c)['then'](handleEntityNotFound(_0x2fe726,null))['then'](respondWithResult(_0x2fe726,null))['catch'](handleError(_0x2fe726,null));};exports[_0x6a55('0x4f')]=function(_0x3589fa,_0xbd8d93){var _0x4a812d={'where':{'id':_0x3589fa[_0x6a55('0x50')]['id']}},_0x58400e={};_0x58400e[_0x6a55('0x3a')]=_[_0x6a55('0x3c')](db[_0x6a55('0x35')]['rawAttributes']);_0x4a812d[_0x6a55('0x3e')]=_[_0x6a55('0x3f')](_0x58400e[_0x6a55('0x3a')],qs[_0x6a55('0x40')](_0x3589fa[_0x6a55('0x3b')][_0x6a55('0x40')]));_0x4a812d[_0x6a55('0x3e')]=_0x4a812d[_0x6a55('0x3e')][_0x6a55('0x41')]?_0x4a812d['attributes']:_0x58400e[_0x6a55('0x3a')];if(_0x3589fa[_0x6a55('0x3b')][_0x6a55('0x4a')]){_0x4a812d[_0x6a55('0x4b')]=[{'all':!![]}];}_0x4a812d=_[_0x6a55('0x48')]({},_0x4a812d,_0x3589fa['options']);return db[_0x6a55('0x35')][_0x6a55('0x4e')](_0x4a812d)['then'](handleEntityNotFound(_0xbd8d93,null))['then'](function(_0x308694){if(_0x308694){var _0x360a4b=_0x308694[_0x6a55('0x2d')]({'plain':!![]});_0x360a4b=qs[_0x6a55('0x51')](_0x360a4b,['id','createdAt',_0x6a55('0x52')]);_0x3589fa[_0x6a55('0x53')]=_[_0x6a55('0x51')](_0x3589fa[_0x6a55('0x53')],['id',_0x6a55('0x54'),_0x6a55('0x52')]);return db[_0x6a55('0x35')][_0x6a55('0x55')](_['merge'](_0x360a4b,_0x3589fa[_0x6a55('0x53')]),{'include':_0x3589fa['query'][_0x6a55('0x4a')]?[{'all':!![]}]:undefined})[_0x6a55('0x19')](function(_0x575655){var _0x1a25a5=_0x3589fa['user'][_0x6a55('0x2d')]({'plain':!![]});if(!_0x1a25a5)throw new Error(_0x6a55('0x56'));if(_0x1a25a5['role']===_0x6a55('0x57')){var _0x82ed64=_0x575655[_0x6a55('0x2d')]({'plain':!![]});var _0x56f6e5=_0x6a55('0x2e');return db['UserProfileSection'][_0x6a55('0x4e')]({'where':{'name':_0x56f6e5,'userProfileId':_0x1a25a5[_0x6a55('0x58')]},'raw':!![]})[_0x6a55('0x19')](function(_0x44c9eb){if(_0x44c9eb&&_0x44c9eb[_0x6a55('0x59')]===0x0){return db[_0x6a55('0x2f')][_0x6a55('0x55')]({'name':_0x82ed64[_0x6a55('0x31')],'resourceId':_0x82ed64['id'],'type':_0x44c9eb[_0x6a55('0x31')],'sectionId':_0x44c9eb['id']},{})[_0x6a55('0x19')](function(){return _0x575655;});}else{return _0x575655;}})['catch'](function(_0x31b5b2){logger[_0x6a55('0x20')](_0x6a55('0x5a'),_0x31b5b2);throw _0x31b5b2;});}return _0x575655;});}})[_0x6a55('0x19')](respondWithResult(_0xbd8d93,0xc9))['catch'](handleError(_0xbd8d93,null));};exports[_0x6a55('0x55')]=function(_0xba6cd0,_0x57834e,_0xf00a32){var _0x5d31f0;return db['Trunk'][_0x6a55('0x55')](_0xba6cd0[_0x6a55('0x53')],{'raw':!![]})[_0x6a55('0x19')](function(_0x34394c){_0x5d31f0=_0x34394c;return db[_0x6a55('0x35')]['findAll']({'raw':!![]});})['then'](function(_0xe23eaf){var _0x164634=fs[_0x6a55('0x5b')](path[_0x6a55('0x5c')](config[_0x6a55('0x5d')],'server/files/templates/trunk.ejs'),'utf8');var _0x57d77a=fs['readFileSync'](path['join'](config[_0x6a55('0x5d')],_0x6a55('0x5e')),_0x6a55('0x5f'));var _0x4a0ee0=ejs[_0x6a55('0x60')](_0x164634,{'trunks':_0xe23eaf||[]});fs[_0x6a55('0x61')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a0ee0);if(_0x5d31f0[_0x6a55('0x62')]){var _0x3c8f5b=ejs[_0x6a55('0x60')](_0x57d77a,{'trunks':_0xe23eaf||[]});fs['writeFileSync'](_0x6a55('0x63'),_0x3c8f5b);}})['then'](function(){return respondWithRpcPromise(_0x6a55('0x64'),_0x6a55('0x55'),{'module':'chan_sip.so'});})[_0x6a55('0x19')](function(){var _0x182c20=_0xba6cd0[_0x6a55('0x57')][_0x6a55('0x2d')]({'plain':!![]});if(!_0x182c20)throw new Error(_0x6a55('0x56'));if(_0x182c20[_0x6a55('0x65')]===_0x6a55('0x57')){var _0x15035f=_0x5d31f0[_0x6a55('0x2d')]({'plain':!![]});return db[_0x6a55('0x66')][_0x6a55('0x4e')]({'where':{'name':_0x6a55('0x2e'),'userProfileId':_0x182c20[_0x6a55('0x58')]},'raw':!![]})[_0x6a55('0x19')](function(_0x4dcde9){if(_0x4dcde9&&_0x4dcde9['autoAssociation']===0x0){return db['UserProfileResource'][_0x6a55('0x55')]({'name':_0x15035f[_0x6a55('0x31')],'resourceId':_0x15035f['id'],'type':_0x4dcde9[_0x6a55('0x31')],'sectionId':_0x4dcde9['id']},{})[_0x6a55('0x19')](function(){return _0x5d31f0;});}else{return _0x5d31f0;}})['catch'](function(_0xca10f9){logger[_0x6a55('0x20')](_0x6a55('0x5a'),_0xca10f9);throw _0xca10f9;});}return _0x5d31f0;})[_0x6a55('0x19')](respondWithResult(_0x57834e,0xc9))['catch'](handleError(_0x57834e,null));};exports['update']=function(_0x2dc040,_0x554a9c,_0x564345){var _0x5110f6;return db['Trunk'][_0x6a55('0x4e')]({'where':{'id':_0x2dc040[_0x6a55('0x50')]['id']}})[_0x6a55('0x19')](handleEntityNotFound(_0x554a9c,null))['then'](saveUpdates(_0x2dc040[_0x6a55('0x53')],null))[_0x6a55('0x19')](function(_0x101e28){if(_0x101e28){_0x5110f6=_0x101e28;return db[_0x6a55('0x35')]['findAll']({'raw':!![]});}})[_0x6a55('0x19')](function(_0x59ba1a){if(_0x59ba1a){var _0xe23af5=fs[_0x6a55('0x5b')](path[_0x6a55('0x5c')](config[_0x6a55('0x5d')],_0x6a55('0x67')),'utf8');var _0x2358da=fs[_0x6a55('0x5b')](path['join'](config[_0x6a55('0x5d')],_0x6a55('0x5e')),_0x6a55('0x5f'));var _0x2302ac=ejs[_0x6a55('0x60')](_0xe23af5,{'trunks':_0x59ba1a||[]});fs[_0x6a55('0x61')](_0x6a55('0x68'),_0x2302ac);var _0x47e53b=ejs[_0x6a55('0x60')](_0x2358da,{'trunks':_0x59ba1a||[]});fs[_0x6a55('0x61')](_0x6a55('0x63'),_0x47e53b);return respondWithRpcPromise(_0x6a55('0x64'),'update',{'module':'chan_sip.so'});}return null;})[_0x6a55('0x19')](function(_0x1e1ff9){if(_0x1e1ff9){return _0x5110f6;}})[_0x6a55('0x19')](respondWithResult(_0x554a9c,null))['catch'](handleError(_0x554a9c,null));};exports[_0x6a55('0x2c')]=function(_0x3ab7c4,_0x57d5e5,_0x5536f2){var _0x39c3f0;return db['Trunk'][_0x6a55('0x4e')]({'where':{'id':_0x3ab7c4[_0x6a55('0x50')]['id']}})['then'](handleEntityNotFound(_0x57d5e5,null))[_0x6a55('0x19')](removeEntity(_0x57d5e5,null))['then'](function(){return db[_0x6a55('0x35')][_0x6a55('0x4c')]({'raw':!![]});})[_0x6a55('0x19')](function(_0x2c4323){var _0x4534c1=fs['readFileSync'](path[_0x6a55('0x5c')](config['root'],_0x6a55('0x67')),_0x6a55('0x5f'));var _0x24f3c2=fs[_0x6a55('0x5b')](path['join'](config[_0x6a55('0x5d')],'server/files/templates/registry.ejs'),_0x6a55('0x5f'));var _0x5390a8=ejs[_0x6a55('0x60')](_0x4534c1,{'trunks':_0x2c4323});var _0x3c0f98=ejs['render'](_0x24f3c2,{'trunks':_0x2c4323});fs[_0x6a55('0x61')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5390a8);fs[_0x6a55('0x61')](_0x6a55('0x63'),_0x3c0f98);return respondWithRpcPromise(_0x6a55('0x64'),_0x6a55('0x2c'),{'module':_0x6a55('0x69')});})[_0x6a55('0x4d')](handleError(_0x57d5e5,null));};