702e8bb1d8d847473742887d5444683a275bcf32
[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 _0xafdc=['length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','type','filter','options','includeAll','findAll','rows','show','params','keys','find','clone','include','createdAt','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','server/files/templates/registry.ejs','render','registry','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','html-pdf','eml-format','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','set','apply','save','update','destroy','get','Trunks','UserProfileResource','stack','name','map','Trunk','rawAttributes','key','model','query','filters','intersection','attributes','fields'];(function(_0x418118,_0x38550d){var _0x548dad=function(_0x20f547){while(--_0x20f547){_0x418118['push'](_0x418118['shift']());}};_0x548dad(++_0x38550d);}(_0xafdc,0x163));var _0xcafd=function(_0x382053,_0x40af67){_0x382053=_0x382053-0x0;var _0x421fe5=_0xafdc[_0x382053];return _0x421fe5;};'use strict';var pdf=require(_0xcafd('0x0'));var emlformat=require(_0xcafd('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xcafd('0x2'));var jsonpatch=require(_0xcafd('0x3'));var rp=require('request-promise');var moment=require(_0xcafd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xcafd('0x5'));var util=require('util');var path=require('path');var sox=require(_0xcafd('0x6'));var csv=require(_0xcafd('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xcafd('0x8'));var squel=require(_0xcafd('0x9'));var crypto=require('crypto');var jsforce=require(_0xcafd('0xa'));var deskjs=require(_0xcafd('0xb'));var toCsv=require(_0xcafd('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xcafd('0xc'));var authService=require(_0xcafd('0xd'));var qs=require(_0xcafd('0xe'));var as=require(_0xcafd('0xf'));var hardwareService=require(_0xcafd('0x10'));var logger=require(_0xcafd('0x11'))(_0xcafd('0x12'));var utils=require(_0xcafd('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xcafd('0x14'));var db=require('../../mysqldb')['db'];var jayson=require(_0xcafd('0x15'));var client=jayson[_0xcafd('0x16')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8eb38e,_0x2b9832,_0x4afe7d,_0x4fd525){return new BPromise(function(_0x5e247c,_0x891ac3){var _0x43165a=_0x4fd525||client;return _0x43165a[_0xcafd('0x17')](_0x8eb38e,_0x4afe7d)[_0xcafd('0x18')](function(_0x570219){logger[_0xcafd('0x19')]('Trunk,\x20%s,\x20%s',_0x2b9832,_0xcafd('0x1a'));logger[_0xcafd('0x1b')]('Trunk,\x20%s,\x20%s,\x20%s',_0x2b9832,_0xcafd('0x1a'),JSON[_0xcafd('0x1c')](_0x570219));if(_0x570219['error']){if(_0x570219[_0xcafd('0x1d')][_0xcafd('0x1e')]===0x1f4){logger[_0xcafd('0x1d')](_0xcafd('0x1f'),_0x2b9832,_0x570219[_0xcafd('0x1d')]['message']);return _0x891ac3(_0x570219[_0xcafd('0x1d')]['message']);}logger[_0xcafd('0x1d')](_0xcafd('0x1f'),_0x2b9832,_0x570219[_0xcafd('0x1d')]['message']);return _0x5e247c(_0x570219[_0xcafd('0x1d')][_0xcafd('0x20')]);}else{logger[_0xcafd('0x19')](_0xcafd('0x1f'),_0x2b9832,_0xcafd('0x1a'));_0x5e247c(_0x570219[_0xcafd('0x21')][_0xcafd('0x20')]);}})[_0xcafd('0x22')](function(_0x418b51){logger[_0xcafd('0x1d')]('Trunk,\x20%s,\x20%s',_0x2b9832,_0x418b51);_0x891ac3(_0x418b51);});});}function respondWithStatusCode(_0x463699,_0x3e7562){_0x3e7562=_0x3e7562||0xcc;return function(_0x1c18df){if(_0x1c18df){return _0x463699[_0xcafd('0x23')](_0x3e7562);}return _0x463699[_0xcafd('0x24')](_0x3e7562)[_0xcafd('0x25')]();};}function respondWithResult(_0x505c9a,_0x137db5){_0x137db5=_0x137db5||0xc8;return function(_0x3cc114){if(_0x3cc114){return _0x505c9a[_0xcafd('0x24')](_0x137db5)[_0xcafd('0x26')](_0x3cc114);}};}function respondWithFilteredResult(_0x280295,_0x412e52){return function(_0x54b295){if(_0x54b295){var _0xb590b2=_0x54b295[_0xcafd('0x27')],_0x4c5bb1=_0x412e52[_0xcafd('0x28')],_0x317670=_0x412e52[_0xcafd('0x28')]+_0x412e52['limit'],_0x14ba5a;if(_0x317670>=_0xb590b2){_0x317670=_0xb590b2;_0x14ba5a=0xc8;}else{_0x14ba5a=0xce;}_0x280295[_0xcafd('0x24')](_0x14ba5a);return _0x280295[_0xcafd('0x29')]('Content-Range',_0x4c5bb1+'-'+_0x317670+'/'+_0xb590b2)['json'](_0x54b295);}return null;};}function patchUpdates(_0x45b455){return function(_0x156216){try{jsonpatch[_0xcafd('0x2a')](_0x156216,_0x45b455,!![]);}catch(_0x38212f){return BPromise['reject'](_0x38212f);}return _0x156216[_0xcafd('0x2b')]();};}function saveUpdates(_0x1a757c,_0x21f09c){return function(_0x3c646b){if(_0x3c646b){return _0x3c646b[_0xcafd('0x2c')](_0x1a757c)[_0xcafd('0x18')](function(_0xe4d62c){return _0xe4d62c;});}return null;};}function removeEntity(_0x5eeb8d,_0x190dbb){return function(_0x2f0abf){if(_0x2f0abf){return _0x2f0abf[_0xcafd('0x2d')]()[_0xcafd('0x18')](function(){var _0x50b797=_0x2f0abf[_0xcafd('0x2e')]({'plain':!![]});var _0x5304e8=_0xcafd('0x2f');return db[_0xcafd('0x30')]['destroy']({'where':{'type':_0x5304e8,'resourceId':_0x50b797['id']}})[_0xcafd('0x18')](function(){return _0x2f0abf;});})[_0xcafd('0x18')](function(){_0x5eeb8d['status'](0xcc)[_0xcafd('0x25')]();});}};}function handleEntityNotFound(_0x381a90,_0x35486b){return function(_0x5088e7){if(!_0x5088e7){_0x381a90[_0xcafd('0x23')](0x194);}return _0x5088e7;};}function handleError(_0x55690c,_0x4e0b00){_0x4e0b00=_0x4e0b00||0x1f4;return function(_0x33f52c){logger[_0xcafd('0x1d')](_0x33f52c[_0xcafd('0x31')]);if(_0x33f52c[_0xcafd('0x32')]){delete _0x33f52c[_0xcafd('0x32')];}_0x55690c[_0xcafd('0x24')](_0x4e0b00)['send'](_0x33f52c);};}exports['index']=function(_0x91c11c,_0x3c63cf){var _0x1628c4={},_0xa35b84={},_0x22fcce={'count':0x0,'rows':[]};var _0x2fda0a=_[_0xcafd('0x33')](db[_0xcafd('0x34')][_0xcafd('0x35')],function(_0x4f3870){return{'name':_0x4f3870['fieldName'],'type':_0x4f3870['type'][_0xcafd('0x36')]};});_0xa35b84[_0xcafd('0x37')]=_[_0xcafd('0x33')](_0x2fda0a,_0xcafd('0x32'));_0xa35b84[_0xcafd('0x38')]=_['keys'](_0x91c11c[_0xcafd('0x38')]);_0xa35b84[_0xcafd('0x39')]=_[_0xcafd('0x3a')](_0xa35b84[_0xcafd('0x37')],_0xa35b84['query']);_0x1628c4[_0xcafd('0x3b')]=_[_0xcafd('0x3a')](_0xa35b84['model'],qs['fields'](_0x91c11c[_0xcafd('0x38')][_0xcafd('0x3c')]));_0x1628c4[_0xcafd('0x3b')]=_0x1628c4['attributes'][_0xcafd('0x3d')]?_0x1628c4[_0xcafd('0x3b')]:_0xa35b84[_0xcafd('0x37')];if(!_0x91c11c[_0xcafd('0x38')][_0xcafd('0x3e')](_0xcafd('0x3f'))){_0x1628c4[_0xcafd('0x40')]=qs[_0xcafd('0x40')](_0x91c11c[_0xcafd('0x38')][_0xcafd('0x40')]);_0x1628c4['offset']=qs[_0xcafd('0x28')](_0x91c11c[_0xcafd('0x38')][_0xcafd('0x28')]);}_0x1628c4['order']=qs[_0xcafd('0x41')](_0x91c11c[_0xcafd('0x38')][_0xcafd('0x41')]);_0x1628c4[_0xcafd('0x42')]=qs[_0xcafd('0x39')](_[_0xcafd('0x43')](_0x91c11c[_0xcafd('0x38')],_0xa35b84[_0xcafd('0x39')]),_0x2fda0a);if(_0x91c11c['query']['filter']){_0x1628c4['where']=_[_0xcafd('0x44')](_0x1628c4[_0xcafd('0x42')],{'$or':_[_0xcafd('0x33')](_0x2fda0a,function(_0x2be67d){if(_0x2be67d[_0xcafd('0x45')]!=='VIRTUAL'){var _0x7620a3={};_0x7620a3[_0x2be67d[_0xcafd('0x32')]]={'$like':'%'+_0x91c11c[_0xcafd('0x38')][_0xcafd('0x46')]+'%'};return _0x7620a3;}})});}_0x1628c4=_['merge']({},_0x1628c4,_0x91c11c[_0xcafd('0x47')]);var _0x304ab4={'where':_0x1628c4[_0xcafd('0x42')]};return db[_0xcafd('0x34')]['count'](_0x304ab4)['then'](function(_0x18568e){_0x22fcce[_0xcafd('0x27')]=_0x18568e;if(_0x91c11c['query'][_0xcafd('0x48')]){_0x1628c4['include']=[{'all':!![]}];}return db[_0xcafd('0x34')][_0xcafd('0x49')](_0x1628c4);})[_0xcafd('0x18')](function(_0x4e3696){_0x22fcce[_0xcafd('0x4a')]=_0x4e3696;return _0x22fcce;})['then'](respondWithFilteredResult(_0x3c63cf,_0x1628c4))['catch'](handleError(_0x3c63cf,null));};exports[_0xcafd('0x4b')]=function(_0x5a4044,_0xa6924f){var _0x55d792={'raw':![],'where':{'id':_0x5a4044[_0xcafd('0x4c')]['id']}},_0x1adc73={};_0x1adc73['model']=_[_0xcafd('0x4d')](db[_0xcafd('0x34')][_0xcafd('0x35')]);_0x1adc73[_0xcafd('0x38')]=_['keys'](_0x5a4044[_0xcafd('0x38')]);_0x1adc73[_0xcafd('0x39')]=_['intersection'](_0x1adc73['model'],_0x1adc73[_0xcafd('0x38')]);_0x55d792[_0xcafd('0x3b')]=_[_0xcafd('0x3a')](_0x1adc73['model'],qs[_0xcafd('0x3c')](_0x5a4044['query'][_0xcafd('0x3c')]));_0x55d792[_0xcafd('0x3b')]=_0x55d792[_0xcafd('0x3b')][_0xcafd('0x3d')]?_0x55d792[_0xcafd('0x3b')]:_0x1adc73['model'];if(_0x5a4044[_0xcafd('0x38')][_0xcafd('0x48')]){_0x55d792['include']=[{'all':!![]}];}_0x55d792=_['merge']({},_0x55d792,_0x5a4044[_0xcafd('0x47')]);return db[_0xcafd('0x34')][_0xcafd('0x4e')](_0x55d792)['then'](handleEntityNotFound(_0xa6924f,null))[_0xcafd('0x18')](respondWithResult(_0xa6924f,null))['catch'](handleError(_0xa6924f,null));};exports[_0xcafd('0x4f')]=function(_0x54972b,_0x450de6){var _0x2cc222={'where':{'id':_0x54972b['params']['id']}},_0x439b0d={};_0x439b0d[_0xcafd('0x37')]=_[_0xcafd('0x4d')](db[_0xcafd('0x34')][_0xcafd('0x35')]);_0x2cc222[_0xcafd('0x3b')]=_[_0xcafd('0x3a')](_0x439b0d[_0xcafd('0x37')],qs[_0xcafd('0x3c')](_0x54972b[_0xcafd('0x38')][_0xcafd('0x3c')]));_0x2cc222['attributes']=_0x2cc222[_0xcafd('0x3b')][_0xcafd('0x3d')]?_0x2cc222['attributes']:_0x439b0d['model'];if(_0x54972b[_0xcafd('0x38')][_0xcafd('0x48')]){_0x2cc222[_0xcafd('0x50')]=[{'all':!![]}];}_0x2cc222=_['merge']({},_0x2cc222,_0x54972b[_0xcafd('0x47')]);return db['Trunk']['find'](_0x2cc222)[_0xcafd('0x18')](handleEntityNotFound(_0x450de6,null))[_0xcafd('0x18')](function(_0x1419fb){if(_0x1419fb){var _0x5156d5=_0x1419fb['get']({'plain':!![]});_0x5156d5=qs['omit'](_0x5156d5,['id',_0xcafd('0x51'),'updatedAt']);_0x54972b[_0xcafd('0x52')]=_['omit'](_0x54972b['body'],['id',_0xcafd('0x51'),'updatedAt']);return db[_0xcafd('0x34')]['create'](_[_0xcafd('0x44')](_0x5156d5,_0x54972b[_0xcafd('0x52')]),{'include':_0x54972b[_0xcafd('0x38')][_0xcafd('0x48')]?[{'all':!![]}]:undefined})[_0xcafd('0x18')](function(_0x382255){var _0x44d9e4=_0x54972b[_0xcafd('0x53')][_0xcafd('0x2e')]({'plain':!![]});if(!_0x44d9e4)throw new Error(_0xcafd('0x54'));if(_0x44d9e4[_0xcafd('0x55')]===_0xcafd('0x53')){var _0x5f2f10=_0x382255['get']({'plain':!![]});var _0xa39307='Trunks';return db[_0xcafd('0x56')][_0xcafd('0x4e')]({'where':{'name':_0xa39307,'userProfileId':_0x44d9e4[_0xcafd('0x57')]},'raw':!![]})['then'](function(_0x11df14){if(_0x11df14&&_0x11df14[_0xcafd('0x58')]===0x0){return db[_0xcafd('0x30')][_0xcafd('0x59')]({'name':_0x5f2f10[_0xcafd('0x32')],'resourceId':_0x5f2f10['id'],'type':_0x11df14['name'],'sectionId':_0x11df14['id']},{})[_0xcafd('0x18')](function(){return _0x382255;});}else{return _0x382255;}})[_0xcafd('0x22')](function(_0x3bcd99){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3bcd99);throw _0x3bcd99;});}return _0x382255;});}})[_0xcafd('0x18')](respondWithResult(_0x450de6,0xc9))[_0xcafd('0x22')](handleError(_0x450de6,null));};exports[_0xcafd('0x59')]=function(_0xeca33e,_0x13b683,_0x12449d){var _0x3318bc;return db[_0xcafd('0x34')][_0xcafd('0x59')](_0xeca33e[_0xcafd('0x52')],{'raw':!![]})[_0xcafd('0x18')](function(_0x5de862){_0x3318bc=_0x5de862;return db[_0xcafd('0x34')][_0xcafd('0x49')]({'raw':!![]});})[_0xcafd('0x18')](function(_0x3234d1){var _0x278fd6=fs[_0xcafd('0x5a')](path[_0xcafd('0x5b')](config[_0xcafd('0x5c')],_0xcafd('0x5d')),_0xcafd('0x5e'));var _0xcf9762=fs['readFileSync'](path[_0xcafd('0x5b')](config[_0xcafd('0x5c')],_0xcafd('0x5f')),_0xcafd('0x5e'));var _0x24b261=ejs[_0xcafd('0x60')](_0x278fd6,{'trunks':_0x3234d1||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x24b261);if(_0x3318bc[_0xcafd('0x61')]){var _0x4c5e5e=ejs[_0xcafd('0x60')](_0xcf9762,{'trunks':_0x3234d1||[]});fs[_0xcafd('0x62')](_0xcafd('0x63'),_0x4c5e5e);}})[_0xcafd('0x18')](function(){return respondWithRpcPromise(_0xcafd('0x64'),_0xcafd('0x59'),{'module':'chan_sip.so'});})[_0xcafd('0x18')](function(){var _0x4b3242=_0xeca33e[_0xcafd('0x53')][_0xcafd('0x2e')]({'plain':!![]});if(!_0x4b3242)throw new Error(_0xcafd('0x54'));if(_0x4b3242[_0xcafd('0x55')]===_0xcafd('0x53')){var _0x11a628=_0x3318bc[_0xcafd('0x2e')]({'plain':!![]});return db['UserProfileSection'][_0xcafd('0x4e')]({'where':{'name':'Trunks','userProfileId':_0x4b3242[_0xcafd('0x57')]},'raw':!![]})['then'](function(_0x55e3f7){if(_0x55e3f7&&_0x55e3f7['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x11a628[_0xcafd('0x32')],'resourceId':_0x11a628['id'],'type':_0x55e3f7['name'],'sectionId':_0x55e3f7['id']},{})[_0xcafd('0x18')](function(){return _0x3318bc;});}else{return _0x3318bc;}})['catch'](function(_0x5f3aad){logger[_0xcafd('0x1d')](_0xcafd('0x65'),_0x5f3aad);throw _0x5f3aad;});}return _0x3318bc;})[_0xcafd('0x18')](respondWithResult(_0x13b683,0xc9))[_0xcafd('0x22')](handleError(_0x13b683,null));};exports[_0xcafd('0x2c')]=function(_0x2e330a,_0x22dc33,_0x4fc1fd){var _0x1f6d7b;return db['Trunk']['find']({'where':{'id':_0x2e330a['params']['id']}})['then'](handleEntityNotFound(_0x22dc33,null))[_0xcafd('0x18')](saveUpdates(_0x2e330a[_0xcafd('0x52')],null))[_0xcafd('0x18')](function(_0x337d98){if(_0x337d98){_0x1f6d7b=_0x337d98;return db['Trunk'][_0xcafd('0x49')]({'raw':!![]});}})[_0xcafd('0x18')](function(_0x446f93){if(_0x446f93){var _0x203cd6=fs[_0xcafd('0x5a')](path[_0xcafd('0x5b')](config[_0xcafd('0x5c')],'server/files/templates/trunk.ejs'),_0xcafd('0x5e'));var _0x255475=fs[_0xcafd('0x5a')](path['join'](config[_0xcafd('0x5c')],'server/files/templates/registry.ejs'),_0xcafd('0x5e'));var _0x214c1d=ejs[_0xcafd('0x60')](_0x203cd6,{'trunks':_0x446f93||[]});fs[_0xcafd('0x62')](_0xcafd('0x66'),_0x214c1d);var _0x16e02f=ejs[_0xcafd('0x60')](_0x255475,{'trunks':_0x446f93||[]});fs[_0xcafd('0x62')](_0xcafd('0x63'),_0x16e02f);return respondWithRpcPromise('Reload',_0xcafd('0x2c'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x1a11c3){if(_0x1a11c3){return _0x1f6d7b;}})[_0xcafd('0x18')](respondWithResult(_0x22dc33,null))['catch'](handleError(_0x22dc33,null));};exports['destroy']=function(_0x1370ed,_0x1619be,_0x417919){var _0x5e5c64;return db[_0xcafd('0x34')][_0xcafd('0x4e')]({'where':{'id':_0x1370ed[_0xcafd('0x4c')]['id']}})[_0xcafd('0x18')](handleEntityNotFound(_0x1619be,null))[_0xcafd('0x18')](removeEntity(_0x1619be,null))[_0xcafd('0x18')](function(){return db['Trunk'][_0xcafd('0x49')]({'raw':!![]});})['then'](function(_0x272f04){var _0x51fc1d=fs[_0xcafd('0x5a')](path['join'](config['root'],_0xcafd('0x5d')),_0xcafd('0x5e'));var _0xeea60a=fs['readFileSync'](path[_0xcafd('0x5b')](config[_0xcafd('0x5c')],_0xcafd('0x5f')),_0xcafd('0x5e'));var _0x4049de=ejs[_0xcafd('0x60')](_0x51fc1d,{'trunks':_0x272f04});var _0x5dc9ec=ejs[_0xcafd('0x60')](_0xeea60a,{'trunks':_0x272f04});fs[_0xcafd('0x62')](_0xcafd('0x66'),_0x4049de);fs['writeFileSync'](_0xcafd('0x63'),_0x5dc9ec);return respondWithRpcPromise('Reload',_0xcafd('0x2d'),{'module':_0xcafd('0x67')});})[_0xcafd('0x22')](handleError(_0x1619be,null));};