269cf88fed4d7c5a333924dc501bffd0f712151f
[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 _0x8a1a=['Trunk,\x20%s,\x20%s','result','sendStatus','end','status','json','count','offset','limit','set','Content-Range','apply','reject','get','Trunks','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','pick','where','merge','VIRTUAL','options','Trunk','includeAll','include','findAll','rows','catch','length','find','params','omit','updatedAt','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','utf8','readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','autoAssociation','server/files/templates/trunk.ejs','Reload','update','destroy','/etc/asterisk/sip_xcally_registers.conf','html-pdf','eml-format','rimraf','request-promise','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','code','message'];(function(_0x4ed4d2,_0x47acf7){var _0x15ae2e=function(_0x3199f0){while(--_0x3199f0){_0x4ed4d2['push'](_0x4ed4d2['shift']());}};_0x15ae2e(++_0x47acf7);}(_0x8a1a,0xb4));var _0xa8a1=function(_0x1e2321,_0x3ae1c5){_0x1e2321=_0x1e2321-0x0;var _0x1d346d=_0x8a1a[_0x1e2321];return _0x1d346d;};'use strict';var pdf=require(_0xa8a1('0x0'));var emlformat=require(_0xa8a1('0x1'));var rimraf=require(_0xa8a1('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa8a1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa8a1('0x4'));var path=require(_0xa8a1('0x5'));var sox=require('sox');var csv=require(_0xa8a1('0x6'));var ejs=require(_0xa8a1('0x7'));var fs=require('fs');var _=require(_0xa8a1('0x8'));var squel=require(_0xa8a1('0x9'));var crypto=require(_0xa8a1('0xa'));var jsforce=require(_0xa8a1('0xb'));var deskjs=require(_0xa8a1('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa8a1('0xd'));var Redis=require('ioredis');var authService=require(_0xa8a1('0xe'));var qs=require(_0xa8a1('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8a1('0x10'));var logger=require(_0xa8a1('0x11'))(_0xa8a1('0x12'));var utils=require(_0xa8a1('0x13'));var config=require(_0xa8a1('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0xa8a1('0x15'));var client=jayson[_0xa8a1('0x16')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58c9f7,_0xa266f3,_0x92bbe1,_0x5b25da){return new BPromise(function(_0x5a85f2,_0x3d0008){var _0x4f3497=_0x5b25da||client;return _0x4f3497[_0xa8a1('0x17')](_0x58c9f7,_0x92bbe1)[_0xa8a1('0x18')](function(_0x4ffd0c){logger[_0xa8a1('0x19')]('Trunk,\x20%s,\x20%s',_0xa266f3,_0xa8a1('0x1a'));logger[_0xa8a1('0x1b')]('Trunk,\x20%s,\x20%s,\x20%s',_0xa266f3,_0xa8a1('0x1a'),JSON[_0xa8a1('0x1c')](_0x4ffd0c));if(_0x4ffd0c[_0xa8a1('0x1d')]){if(_0x4ffd0c['error'][_0xa8a1('0x1e')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0xa266f3,_0x4ffd0c['error'][_0xa8a1('0x1f')]);return _0x3d0008(_0x4ffd0c['error'][_0xa8a1('0x1f')]);}logger[_0xa8a1('0x1d')](_0xa8a1('0x20'),_0xa266f3,_0x4ffd0c[_0xa8a1('0x1d')]['message']);return _0x5a85f2(_0x4ffd0c[_0xa8a1('0x1d')][_0xa8a1('0x1f')]);}else{logger[_0xa8a1('0x19')](_0xa8a1('0x20'),_0xa266f3,'request\x20sent');_0x5a85f2(_0x4ffd0c[_0xa8a1('0x21')][_0xa8a1('0x1f')]);}})['catch'](function(_0x419772){logger[_0xa8a1('0x1d')]('Trunk,\x20%s,\x20%s',_0xa266f3,_0x419772);_0x3d0008(_0x419772);});});}function respondWithStatusCode(_0x54d2d7,_0x11c3f1){_0x11c3f1=_0x11c3f1||0xcc;return function(_0x54433a){if(_0x54433a){return _0x54d2d7[_0xa8a1('0x22')](_0x11c3f1);}return _0x54d2d7['status'](_0x11c3f1)[_0xa8a1('0x23')]();};}function respondWithResult(_0x327506,_0x2610df){_0x2610df=_0x2610df||0xc8;return function(_0x1e840f){if(_0x1e840f){return _0x327506[_0xa8a1('0x24')](_0x2610df)[_0xa8a1('0x25')](_0x1e840f);}};}function respondWithFilteredResult(_0x2f0425,_0x31904b){return function(_0x2e4d20){if(_0x2e4d20){var _0x1d9322=_0x2e4d20[_0xa8a1('0x26')],_0x5d273e=_0x31904b[_0xa8a1('0x27')],_0x1c248c=_0x31904b['offset']+_0x31904b[_0xa8a1('0x28')],_0x46288f;if(_0x1c248c>=_0x1d9322){_0x1c248c=_0x1d9322;_0x46288f=0xc8;}else{_0x46288f=0xce;}_0x2f0425[_0xa8a1('0x24')](_0x46288f);return _0x2f0425[_0xa8a1('0x29')](_0xa8a1('0x2a'),_0x5d273e+'-'+_0x1c248c+'/'+_0x1d9322)[_0xa8a1('0x25')](_0x2e4d20);}return null;};}function patchUpdates(_0x5ecc05){return function(_0x3d2c7c){try{jsonpatch[_0xa8a1('0x2b')](_0x3d2c7c,_0x5ecc05,!![]);}catch(_0x19ab52){return BPromise[_0xa8a1('0x2c')](_0x19ab52);}return _0x3d2c7c['save']();};}function saveUpdates(_0x3ee598,_0x38b966){return function(_0xf34631){if(_0xf34631){return _0xf34631['update'](_0x3ee598)['then'](function(_0x42b8f5){return _0x42b8f5;});}return null;};}function removeEntity(_0x4db1b6,_0x4b0a57){return function(_0x3e12c3){if(_0x3e12c3){return _0x3e12c3['destroy']()['then'](function(){var _0x1e2bd5=_0x3e12c3[_0xa8a1('0x2d')]({'plain':!![]});var _0x5f16d0=_0xa8a1('0x2e');return db[_0xa8a1('0x2f')]['destroy']({'where':{'type':_0x5f16d0,'resourceId':_0x1e2bd5['id']}})[_0xa8a1('0x18')](function(){return _0x3e12c3;});})[_0xa8a1('0x18')](function(){_0x4db1b6['status'](0xcc)[_0xa8a1('0x23')]();});}};}function handleEntityNotFound(_0x23dca5,_0x485772){return function(_0x452b31){if(!_0x452b31){_0x23dca5[_0xa8a1('0x22')](0x194);}return _0x452b31;};}function handleError(_0x530188,_0x3bfc35){_0x3bfc35=_0x3bfc35||0x1f4;return function(_0x2b8233){logger[_0xa8a1('0x1d')](_0x2b8233[_0xa8a1('0x30')]);if(_0x2b8233['name']){delete _0x2b8233[_0xa8a1('0x31')];}_0x530188[_0xa8a1('0x24')](_0x3bfc35)[_0xa8a1('0x32')](_0x2b8233);};}exports[_0xa8a1('0x33')]=function(_0x471c5f,_0x58eae2){var _0x369afd={},_0x1b8951={},_0x49395e={'count':0x0,'rows':[]};var _0x270ed5=_[_0xa8a1('0x34')](db['Trunk'][_0xa8a1('0x35')],function(_0x4b8334){return{'name':_0x4b8334[_0xa8a1('0x36')],'type':_0x4b8334[_0xa8a1('0x37')][_0xa8a1('0x38')]};});_0x1b8951[_0xa8a1('0x39')]=_[_0xa8a1('0x34')](_0x270ed5,_0xa8a1('0x31'));_0x1b8951[_0xa8a1('0x3a')]=_[_0xa8a1('0x3b')](_0x471c5f[_0xa8a1('0x3a')]);_0x1b8951[_0xa8a1('0x3c')]=_[_0xa8a1('0x3d')](_0x1b8951['model'],_0x1b8951['query']);_0x369afd[_0xa8a1('0x3e')]=_[_0xa8a1('0x3d')](_0x1b8951['model'],qs['fields'](_0x471c5f[_0xa8a1('0x3a')][_0xa8a1('0x3f')]));_0x369afd[_0xa8a1('0x3e')]=_0x369afd[_0xa8a1('0x3e')]['length']?_0x369afd[_0xa8a1('0x3e')]:_0x1b8951['model'];if(!_0x471c5f[_0xa8a1('0x3a')][_0xa8a1('0x40')](_0xa8a1('0x41'))){_0x369afd[_0xa8a1('0x28')]=qs[_0xa8a1('0x28')](_0x471c5f[_0xa8a1('0x3a')][_0xa8a1('0x28')]);_0x369afd['offset']=qs[_0xa8a1('0x27')](_0x471c5f[_0xa8a1('0x3a')][_0xa8a1('0x27')]);}_0x369afd[_0xa8a1('0x42')]=qs['sort'](_0x471c5f[_0xa8a1('0x3a')]['sort']);_0x369afd['where']=qs[_0xa8a1('0x3c')](_[_0xa8a1('0x43')](_0x471c5f[_0xa8a1('0x3a')],_0x1b8951[_0xa8a1('0x3c')]),_0x270ed5);if(_0x471c5f[_0xa8a1('0x3a')]['filter']){_0x369afd[_0xa8a1('0x44')]=_[_0xa8a1('0x45')](_0x369afd[_0xa8a1('0x44')],{'$or':_['map'](_0x270ed5,function(_0x2f18f4){if(_0x2f18f4['type']!==_0xa8a1('0x46')){var _0x1be9ee={};_0x1be9ee[_0x2f18f4[_0xa8a1('0x31')]]={'$like':'%'+_0x471c5f[_0xa8a1('0x3a')]['filter']+'%'};return _0x1be9ee;}})});}_0x369afd=_[_0xa8a1('0x45')]({},_0x369afd,_0x471c5f[_0xa8a1('0x47')]);var _0x16dbf1={'where':_0x369afd['where']};return db[_0xa8a1('0x48')][_0xa8a1('0x26')](_0x16dbf1)[_0xa8a1('0x18')](function(_0x1e12b7){_0x49395e[_0xa8a1('0x26')]=_0x1e12b7;if(_0x471c5f[_0xa8a1('0x3a')][_0xa8a1('0x49')]){_0x369afd[_0xa8a1('0x4a')]=[{'all':!![]}];}return db[_0xa8a1('0x48')][_0xa8a1('0x4b')](_0x369afd);})[_0xa8a1('0x18')](function(_0x457782){_0x49395e[_0xa8a1('0x4c')]=_0x457782;return _0x49395e;})[_0xa8a1('0x18')](respondWithFilteredResult(_0x58eae2,_0x369afd))[_0xa8a1('0x4d')](handleError(_0x58eae2,null));};exports['show']=function(_0x5bd159,_0x193bbf){var _0x4b6bf4={'raw':![],'where':{'id':_0x5bd159['params']['id']}},_0x58a44b={};_0x58a44b['model']=_[_0xa8a1('0x3b')](db[_0xa8a1('0x48')][_0xa8a1('0x35')]);_0x58a44b['query']=_[_0xa8a1('0x3b')](_0x5bd159[_0xa8a1('0x3a')]);_0x58a44b['filters']=_[_0xa8a1('0x3d')](_0x58a44b['model'],_0x58a44b[_0xa8a1('0x3a')]);_0x4b6bf4['attributes']=_['intersection'](_0x58a44b[_0xa8a1('0x39')],qs['fields'](_0x5bd159['query']['fields']));_0x4b6bf4[_0xa8a1('0x3e')]=_0x4b6bf4[_0xa8a1('0x3e')][_0xa8a1('0x4e')]?_0x4b6bf4[_0xa8a1('0x3e')]:_0x58a44b['model'];if(_0x5bd159[_0xa8a1('0x3a')]['includeAll']){_0x4b6bf4[_0xa8a1('0x4a')]=[{'all':!![]}];}_0x4b6bf4=_[_0xa8a1('0x45')]({},_0x4b6bf4,_0x5bd159[_0xa8a1('0x47')]);return db[_0xa8a1('0x48')][_0xa8a1('0x4f')](_0x4b6bf4)[_0xa8a1('0x18')](handleEntityNotFound(_0x193bbf,null))['then'](respondWithResult(_0x193bbf,null))['catch'](handleError(_0x193bbf,null));};exports['clone']=function(_0x2c7c92,_0x1ace7a){var _0x5ef23f={'where':{'id':_0x2c7c92[_0xa8a1('0x50')]['id']}},_0x577d9e={};_0x577d9e['model']=_['keys'](db[_0xa8a1('0x48')][_0xa8a1('0x35')]);_0x5ef23f[_0xa8a1('0x3e')]=_['intersection'](_0x577d9e['model'],qs['fields'](_0x2c7c92[_0xa8a1('0x3a')]['fields']));_0x5ef23f[_0xa8a1('0x3e')]=_0x5ef23f[_0xa8a1('0x3e')][_0xa8a1('0x4e')]?_0x5ef23f[_0xa8a1('0x3e')]:_0x577d9e[_0xa8a1('0x39')];if(_0x2c7c92[_0xa8a1('0x3a')][_0xa8a1('0x49')]){_0x5ef23f[_0xa8a1('0x4a')]=[{'all':!![]}];}_0x5ef23f=_['merge']({},_0x5ef23f,_0x2c7c92[_0xa8a1('0x47')]);return db[_0xa8a1('0x48')]['find'](_0x5ef23f)[_0xa8a1('0x18')](handleEntityNotFound(_0x1ace7a,null))[_0xa8a1('0x18')](function(_0x272b81){if(_0x272b81){var _0x37f06d=_0x272b81[_0xa8a1('0x2d')]({'plain':!![]});_0x37f06d=qs[_0xa8a1('0x51')](_0x37f06d,['id','createdAt',_0xa8a1('0x52')]);_0x2c7c92[_0xa8a1('0x53')]=_['omit'](_0x2c7c92['body'],['id','createdAt','updatedAt']);return db['Trunk']['create'](_[_0xa8a1('0x45')](_0x37f06d,_0x2c7c92[_0xa8a1('0x53')]),{'include':_0x2c7c92[_0xa8a1('0x3a')][_0xa8a1('0x49')]?[{'all':!![]}]:undefined})[_0xa8a1('0x18')](function(_0x55c499){var _0x2d3bf1=_0x2c7c92[_0xa8a1('0x54')]['get']({'plain':!![]});if(!_0x2d3bf1)throw new Error(_0xa8a1('0x55'));if(_0x2d3bf1[_0xa8a1('0x56')]===_0xa8a1('0x54')){var _0x409068=_0x55c499[_0xa8a1('0x2d')]({'plain':!![]});var _0x2d9526=_0xa8a1('0x2e');return db[_0xa8a1('0x57')][_0xa8a1('0x4f')]({'where':{'name':_0x2d9526,'userProfileId':_0x2d3bf1[_0xa8a1('0x58')]},'raw':!![]})['then'](function(_0x334bed){if(_0x334bed&&_0x334bed['autoAssociation']===0x0){return db[_0xa8a1('0x2f')][_0xa8a1('0x59')]({'name':_0x409068[_0xa8a1('0x31')],'resourceId':_0x409068['id'],'type':_0x334bed[_0xa8a1('0x31')],'sectionId':_0x334bed['id']},{})[_0xa8a1('0x18')](function(){return _0x55c499;});}else{return _0x55c499;}})[_0xa8a1('0x4d')](function(_0x25a481){logger[_0xa8a1('0x1d')](_0xa8a1('0x5a'),_0x25a481);throw _0x25a481;});}return _0x55c499;});}})['then'](respondWithResult(_0x1ace7a,0xc9))[_0xa8a1('0x4d')](handleError(_0x1ace7a,null));};exports['create']=function(_0x4f4407,_0x19e15a,_0x8cc580){var _0x4dec80;return db[_0xa8a1('0x48')][_0xa8a1('0x59')](_0x4f4407[_0xa8a1('0x53')],{'raw':!![]})[_0xa8a1('0x18')](function(_0x3598c4){_0x4dec80=_0x3598c4;return db[_0xa8a1('0x48')][_0xa8a1('0x4b')]({'raw':!![]});})[_0xa8a1('0x18')](function(_0x4a5b03){var _0xd6ab3=fs['readFileSync'](path[_0xa8a1('0x5b')](config['root'],'server/files/templates/trunk.ejs'),_0xa8a1('0x5c'));var _0x223fe6=fs[_0xa8a1('0x5d')](path[_0xa8a1('0x5b')](config[_0xa8a1('0x5e')],_0xa8a1('0x5f')),_0xa8a1('0x5c'));var _0x156f07=ejs[_0xa8a1('0x60')](_0xd6ab3,{'trunks':_0x4a5b03||[]});fs[_0xa8a1('0x61')](_0xa8a1('0x62'),_0x156f07);if(_0x4dec80['registry']){var _0x79a6f4=ejs[_0xa8a1('0x60')](_0x223fe6,{'trunks':_0x4a5b03||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x79a6f4);}})['then'](function(){return respondWithRpcPromise('Reload',_0xa8a1('0x59'),{'module':_0xa8a1('0x63')});})[_0xa8a1('0x18')](function(){var _0x39ae3a=_0x4f4407[_0xa8a1('0x54')][_0xa8a1('0x2d')]({'plain':!![]});if(!_0x39ae3a)throw new Error(_0xa8a1('0x55'));if(_0x39ae3a[_0xa8a1('0x56')]===_0xa8a1('0x54')){var _0x42344e=_0x4dec80['get']({'plain':!![]});return db['UserProfileSection'][_0xa8a1('0x4f')]({'where':{'name':_0xa8a1('0x2e'),'userProfileId':_0x39ae3a[_0xa8a1('0x58')]},'raw':!![]})[_0xa8a1('0x18')](function(_0x2306a6){if(_0x2306a6&&_0x2306a6[_0xa8a1('0x64')]===0x0){return db[_0xa8a1('0x2f')][_0xa8a1('0x59')]({'name':_0x42344e[_0xa8a1('0x31')],'resourceId':_0x42344e['id'],'type':_0x2306a6[_0xa8a1('0x31')],'sectionId':_0x2306a6['id']},{})[_0xa8a1('0x18')](function(){return _0x4dec80;});}else{return _0x4dec80;}})[_0xa8a1('0x4d')](function(_0x42dff8){logger[_0xa8a1('0x1d')](_0xa8a1('0x5a'),_0x42dff8);throw _0x42dff8;});}return _0x4dec80;})[_0xa8a1('0x18')](respondWithResult(_0x19e15a,0xc9))[_0xa8a1('0x4d')](handleError(_0x19e15a,null));};exports['update']=function(_0x43ee0a,_0xde0aa6,_0x3639ed){var _0x138f5f;return db[_0xa8a1('0x48')][_0xa8a1('0x4f')]({'where':{'id':_0x43ee0a[_0xa8a1('0x50')]['id']}})[_0xa8a1('0x18')](handleEntityNotFound(_0xde0aa6,null))[_0xa8a1('0x18')](saveUpdates(_0x43ee0a[_0xa8a1('0x53')],null))[_0xa8a1('0x18')](function(_0x5d162d){if(_0x5d162d){_0x138f5f=_0x5d162d;return db['Trunk'][_0xa8a1('0x4b')]({'raw':!![]});}})['then'](function(_0x171183){if(_0x171183){var _0x42d21b=fs[_0xa8a1('0x5d')](path[_0xa8a1('0x5b')](config[_0xa8a1('0x5e')],_0xa8a1('0x65')),_0xa8a1('0x5c'));var _0x3fc6b2=fs['readFileSync'](path['join'](config['root'],_0xa8a1('0x5f')),_0xa8a1('0x5c'));var _0x191611=ejs['render'](_0x42d21b,{'trunks':_0x171183||[]});fs[_0xa8a1('0x61')](_0xa8a1('0x62'),_0x191611);var _0x159c09=ejs[_0xa8a1('0x60')](_0x3fc6b2,{'trunks':_0x171183||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x159c09);return respondWithRpcPromise(_0xa8a1('0x66'),_0xa8a1('0x67'),{'module':'chan_sip.so'});}return null;})[_0xa8a1('0x18')](function(_0x39bfbe){if(_0x39bfbe){return _0x138f5f;}})['then'](respondWithResult(_0xde0aa6,null))['catch'](handleError(_0xde0aa6,null));};exports[_0xa8a1('0x68')]=function(_0x2a226d,_0x4659ef,_0xbec1ba){var _0x52008b;return db['Trunk'][_0xa8a1('0x4f')]({'where':{'id':_0x2a226d[_0xa8a1('0x50')]['id']}})['then'](handleEntityNotFound(_0x4659ef,null))[_0xa8a1('0x18')](removeEntity(_0x4659ef,null))[_0xa8a1('0x18')](function(){return db[_0xa8a1('0x48')]['findAll']({'raw':!![]});})[_0xa8a1('0x18')](function(_0x3c2d37){var _0x479bda=fs['readFileSync'](path[_0xa8a1('0x5b')](config[_0xa8a1('0x5e')],_0xa8a1('0x65')),_0xa8a1('0x5c'));var _0x25f63b=fs[_0xa8a1('0x5d')](path[_0xa8a1('0x5b')](config['root'],_0xa8a1('0x5f')),_0xa8a1('0x5c'));var _0x802984=ejs[_0xa8a1('0x60')](_0x479bda,{'trunks':_0x3c2d37});var _0x9a368d=ejs[_0xa8a1('0x60')](_0x25f63b,{'trunks':_0x3c2d37});fs[_0xa8a1('0x61')](_0xa8a1('0x62'),_0x802984);fs[_0xa8a1('0x61')](_0xa8a1('0x69'),_0x9a368d);return respondWithRpcPromise(_0xa8a1('0x66'),_0xa8a1('0x68'),{'module':'chan_sip.so'});})['catch'](handleError(_0x4659ef,null));};