0d1851a7a373cd2a1b4f3d68692b28471f5dabbb
[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 _0xf820=['end','json','count','offset','limit','set','Content-Range','apply','reject','update','destroy','Trunks','stack','name','send','index','map','Trunk','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','rawAttributes','length','find','clone','createdAt','updatedAt','omit','body','create','user','get','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','/etc/asterisk/sip_xcally_registers.conf','html-pdf','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','client','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','status'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xf820,0x11c));var _0x0f82=function(_0x1d449d,_0x21ae82){_0x1d449d=_0x1d449d-0x0;var _0x2430d7=_0xf820[_0x1d449d];return _0x2430d7;};'use strict';var pdf=require(_0x0f82('0x0'));var emlformat=require(_0x0f82('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x0f82('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0f82('0x3'));var moment=require(_0x0f82('0x4'));var BPromise=require(_0x0f82('0x5'));var Mustache=require(_0x0f82('0x6'));var util=require(_0x0f82('0x7'));var path=require(_0x0f82('0x8'));var sox=require(_0x0f82('0x9'));var csv=require('to-csv');var ejs=require(_0x0f82('0xa'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x0f82('0xb'));var jsforce=require(_0x0f82('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0f82('0xd'));var Redis=require(_0x0f82('0xe'));var authService=require(_0x0f82('0xf'));var qs=require(_0x0f82('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0f82('0x11'))(_0x0f82('0x12'));var utils=require('../../config/utils');var config=require(_0x0f82('0x13'));var licenseUtil=require(_0x0f82('0x14'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x0f82('0x15')][_0x0f82('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x1e086c,_0x166b8f,_0x5caadb,_0x2f4165){return new BPromise(function(_0x3885e2,_0xd988dd){var _0x1a6529=_0x2f4165||client;return _0x1a6529[_0x0f82('0x17')](_0x1e086c,_0x5caadb)[_0x0f82('0x18')](function(_0x5a795b){logger['info'](_0x0f82('0x19'),_0x166b8f,_0x0f82('0x1a'));logger[_0x0f82('0x1b')](_0x0f82('0x1c'),_0x166b8f,_0x0f82('0x1a'),JSON[_0x0f82('0x1d')](_0x5a795b));if(_0x5a795b[_0x0f82('0x1e')]){if(_0x5a795b['error'][_0x0f82('0x1f')]===0x1f4){logger[_0x0f82('0x1e')](_0x0f82('0x19'),_0x166b8f,_0x5a795b[_0x0f82('0x1e')][_0x0f82('0x20')]);return _0xd988dd(_0x5a795b[_0x0f82('0x1e')][_0x0f82('0x20')]);}logger[_0x0f82('0x1e')](_0x0f82('0x19'),_0x166b8f,_0x5a795b[_0x0f82('0x1e')][_0x0f82('0x20')]);return _0x3885e2(_0x5a795b[_0x0f82('0x1e')]['message']);}else{logger[_0x0f82('0x21')]('Trunk,\x20%s,\x20%s',_0x166b8f,_0x0f82('0x1a'));_0x3885e2(_0x5a795b['result'][_0x0f82('0x20')]);}})[_0x0f82('0x22')](function(_0x4f170e){logger[_0x0f82('0x1e')](_0x0f82('0x19'),_0x166b8f,_0x4f170e);_0xd988dd(_0x4f170e);});});}function respondWithStatusCode(_0x1e5286,_0x572cff){_0x572cff=_0x572cff||0xcc;return function(_0xdb587a){if(_0xdb587a){return _0x1e5286[_0x0f82('0x23')](_0x572cff);}return _0x1e5286[_0x0f82('0x24')](_0x572cff)[_0x0f82('0x25')]();};}function respondWithResult(_0x59b7f6,_0x15486a){_0x15486a=_0x15486a||0xc8;return function(_0xb87e74){if(_0xb87e74){return _0x59b7f6[_0x0f82('0x24')](_0x15486a)[_0x0f82('0x26')](_0xb87e74);}};}function respondWithFilteredResult(_0x36326d,_0x40c285){return function(_0x21f27d){if(_0x21f27d){var _0x1baac3=_0x21f27d[_0x0f82('0x27')],_0x34e588=_0x40c285[_0x0f82('0x28')],_0xd66118=_0x40c285['offset']+_0x40c285[_0x0f82('0x29')],_0x3c83d9;if(_0xd66118>=_0x1baac3){_0xd66118=_0x1baac3;_0x3c83d9=0xc8;}else{_0x3c83d9=0xce;}_0x36326d[_0x0f82('0x24')](_0x3c83d9);return _0x36326d[_0x0f82('0x2a')](_0x0f82('0x2b'),_0x34e588+'-'+_0xd66118+'/'+_0x1baac3)[_0x0f82('0x26')](_0x21f27d);}return null;};}function patchUpdates(_0x4bda08){return function(_0x1388c8){try{jsonpatch[_0x0f82('0x2c')](_0x1388c8,_0x4bda08,!![]);}catch(_0x5bc481){return BPromise[_0x0f82('0x2d')](_0x5bc481);}return _0x1388c8['save']();};}function saveUpdates(_0xb2f92c,_0x245ecd){return function(_0x27697d){if(_0x27697d){return _0x27697d[_0x0f82('0x2e')](_0xb2f92c)[_0x0f82('0x18')](function(_0x14124f){return _0x14124f;});}return null;};}function removeEntity(_0x23eb31,_0x50f9e7){return function(_0x46b1e0){if(_0x46b1e0){return _0x46b1e0[_0x0f82('0x2f')]()[_0x0f82('0x18')](function(){var _0x69319b=_0x46b1e0['get']({'plain':!![]});var _0x352728=_0x0f82('0x30');return db['UserProfileResource']['destroy']({'where':{'type':_0x352728,'resourceId':_0x69319b['id']}})[_0x0f82('0x18')](function(){return _0x46b1e0;});})[_0x0f82('0x18')](function(){_0x23eb31[_0x0f82('0x24')](0xcc)[_0x0f82('0x25')]();});}};}function handleEntityNotFound(_0x2a66b9,_0x46676d){return function(_0x1c21e0){if(!_0x1c21e0){_0x2a66b9['sendStatus'](0x194);}return _0x1c21e0;};}function handleError(_0x51aef8,_0x574f5e){_0x574f5e=_0x574f5e||0x1f4;return function(_0x5bb293){logger['error'](_0x5bb293[_0x0f82('0x31')]);if(_0x5bb293[_0x0f82('0x32')]){delete _0x5bb293['name'];}_0x51aef8[_0x0f82('0x24')](_0x574f5e)[_0x0f82('0x33')](_0x5bb293);};}exports[_0x0f82('0x34')]=function(_0x40903d,_0x2291ae){var _0x32d22b={},_0x111e7c={},_0x2dac1a={'count':0x0,'rows':[]};var _0xf25e3b=_[_0x0f82('0x35')](db[_0x0f82('0x36')]['rawAttributes'],function(_0x22ef36){return{'name':_0x22ef36[_0x0f82('0x37')],'type':_0x22ef36[_0x0f82('0x38')]['key']};});_0x111e7c[_0x0f82('0x39')]=_[_0x0f82('0x35')](_0xf25e3b,_0x0f82('0x32'));_0x111e7c[_0x0f82('0x3a')]=_[_0x0f82('0x3b')](_0x40903d[_0x0f82('0x3a')]);_0x111e7c[_0x0f82('0x3c')]=_[_0x0f82('0x3d')](_0x111e7c[_0x0f82('0x39')],_0x111e7c[_0x0f82('0x3a')]);_0x32d22b[_0x0f82('0x3e')]=_[_0x0f82('0x3d')](_0x111e7c['model'],qs[_0x0f82('0x3f')](_0x40903d['query'][_0x0f82('0x3f')]));_0x32d22b[_0x0f82('0x3e')]=_0x32d22b[_0x0f82('0x3e')]['length']?_0x32d22b['attributes']:_0x111e7c['model'];if(!_0x40903d[_0x0f82('0x3a')][_0x0f82('0x40')]('nolimit')){_0x32d22b['limit']=qs[_0x0f82('0x29')](_0x40903d[_0x0f82('0x3a')]['limit']);_0x32d22b[_0x0f82('0x28')]=qs[_0x0f82('0x28')](_0x40903d['query']['offset']);}_0x32d22b[_0x0f82('0x41')]=qs['sort'](_0x40903d[_0x0f82('0x3a')][_0x0f82('0x42')]);_0x32d22b[_0x0f82('0x43')]=qs[_0x0f82('0x3c')](_[_0x0f82('0x44')](_0x40903d[_0x0f82('0x3a')],_0x111e7c[_0x0f82('0x3c')]),_0xf25e3b);if(_0x40903d[_0x0f82('0x3a')][_0x0f82('0x45')]){_0x32d22b['where']=_[_0x0f82('0x46')](_0x32d22b[_0x0f82('0x43')],{'$or':_[_0x0f82('0x35')](_0xf25e3b,function(_0x7a40da){if(_0x7a40da['type']!=='VIRTUAL'){var _0x572b7f={};_0x572b7f[_0x7a40da[_0x0f82('0x32')]]={'$like':'%'+_0x40903d[_0x0f82('0x3a')][_0x0f82('0x45')]+'%'};return _0x572b7f;}})});}_0x32d22b=_[_0x0f82('0x46')]({},_0x32d22b,_0x40903d[_0x0f82('0x47')]);var _0x235183={'where':_0x32d22b[_0x0f82('0x43')]};return db[_0x0f82('0x36')][_0x0f82('0x27')](_0x235183)['then'](function(_0x35720e){_0x2dac1a[_0x0f82('0x27')]=_0x35720e;if(_0x40903d[_0x0f82('0x3a')][_0x0f82('0x48')]){_0x32d22b[_0x0f82('0x49')]=[{'all':!![]}];}return db['Trunk'][_0x0f82('0x4a')](_0x32d22b);})[_0x0f82('0x18')](function(_0x3fbc45){_0x2dac1a[_0x0f82('0x4b')]=_0x3fbc45;return _0x2dac1a;})[_0x0f82('0x18')](respondWithFilteredResult(_0x2291ae,_0x32d22b))[_0x0f82('0x22')](handleError(_0x2291ae,null));};exports['show']=function(_0x411feb,_0x27772a){var _0x49e07a={'raw':![],'where':{'id':_0x411feb[_0x0f82('0x4c')]['id']}},_0x3c5f8f={};_0x3c5f8f[_0x0f82('0x39')]=_['keys'](db[_0x0f82('0x36')][_0x0f82('0x4d')]);_0x3c5f8f['query']=_[_0x0f82('0x3b')](_0x411feb[_0x0f82('0x3a')]);_0x3c5f8f[_0x0f82('0x3c')]=_[_0x0f82('0x3d')](_0x3c5f8f['model'],_0x3c5f8f[_0x0f82('0x3a')]);_0x49e07a[_0x0f82('0x3e')]=_['intersection'](_0x3c5f8f[_0x0f82('0x39')],qs[_0x0f82('0x3f')](_0x411feb[_0x0f82('0x3a')]['fields']));_0x49e07a['attributes']=_0x49e07a[_0x0f82('0x3e')][_0x0f82('0x4e')]?_0x49e07a[_0x0f82('0x3e')]:_0x3c5f8f['model'];if(_0x411feb[_0x0f82('0x3a')][_0x0f82('0x48')]){_0x49e07a[_0x0f82('0x49')]=[{'all':!![]}];}_0x49e07a=_[_0x0f82('0x46')]({},_0x49e07a,_0x411feb[_0x0f82('0x47')]);return db[_0x0f82('0x36')][_0x0f82('0x4f')](_0x49e07a)[_0x0f82('0x18')](handleEntityNotFound(_0x27772a,null))['then'](respondWithResult(_0x27772a,null))[_0x0f82('0x22')](handleError(_0x27772a,null));};exports[_0x0f82('0x50')]=function(_0x303d6d,_0x37314b){var _0x5cb0b1={'where':{'id':_0x303d6d[_0x0f82('0x4c')]['id']}},_0x404230={};_0x404230[_0x0f82('0x39')]=_[_0x0f82('0x3b')](db[_0x0f82('0x36')][_0x0f82('0x4d')]);_0x5cb0b1[_0x0f82('0x3e')]=_['intersection'](_0x404230[_0x0f82('0x39')],qs[_0x0f82('0x3f')](_0x303d6d[_0x0f82('0x3a')][_0x0f82('0x3f')]));_0x5cb0b1[_0x0f82('0x3e')]=_0x5cb0b1[_0x0f82('0x3e')][_0x0f82('0x4e')]?_0x5cb0b1[_0x0f82('0x3e')]:_0x404230[_0x0f82('0x39')];if(_0x303d6d['query'][_0x0f82('0x48')]){_0x5cb0b1[_0x0f82('0x49')]=[{'all':!![]}];}_0x5cb0b1=_[_0x0f82('0x46')]({},_0x5cb0b1,_0x303d6d[_0x0f82('0x47')]);return db[_0x0f82('0x36')]['find'](_0x5cb0b1)[_0x0f82('0x18')](handleEntityNotFound(_0x37314b,null))[_0x0f82('0x18')](function(_0x3b4a3d){if(_0x3b4a3d){var _0x4dd407=_0x3b4a3d['get']({'plain':!![]});_0x4dd407=qs['omit'](_0x4dd407,['id',_0x0f82('0x51'),_0x0f82('0x52')]);_0x303d6d['body']=_[_0x0f82('0x53')](_0x303d6d[_0x0f82('0x54')],['id',_0x0f82('0x51'),_0x0f82('0x52')]);return db[_0x0f82('0x36')][_0x0f82('0x55')](_[_0x0f82('0x46')](_0x4dd407,_0x303d6d['body']),{'include':_0x303d6d[_0x0f82('0x3a')][_0x0f82('0x48')]?[{'all':!![]}]:undefined})[_0x0f82('0x18')](function(_0x369ead){var _0x3a5bda=_0x303d6d[_0x0f82('0x56')][_0x0f82('0x57')]({'plain':!![]});if(!_0x3a5bda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a5bda[_0x0f82('0x58')]==='user'){var _0x38d1a2=_0x369ead[_0x0f82('0x57')]({'plain':!![]});var _0x4e0d1f=_0x0f82('0x30');return db['UserProfileSection'][_0x0f82('0x4f')]({'where':{'name':_0x4e0d1f,'userProfileId':_0x3a5bda['userProfileId']},'raw':!![]})['then'](function(_0x341fab){if(_0x341fab&&_0x341fab[_0x0f82('0x59')]===0x0){return db[_0x0f82('0x5a')][_0x0f82('0x55')]({'name':_0x38d1a2[_0x0f82('0x32')],'resourceId':_0x38d1a2['id'],'type':_0x341fab[_0x0f82('0x32')],'sectionId':_0x341fab['id']},{})[_0x0f82('0x18')](function(){return _0x369ead;});}else{return _0x369ead;}})[_0x0f82('0x22')](function(_0x1f2b8b){logger[_0x0f82('0x1e')](_0x0f82('0x5b'),_0x1f2b8b);throw _0x1f2b8b;});}return _0x369ead;});}})[_0x0f82('0x18')](respondWithResult(_0x37314b,0xc9))[_0x0f82('0x22')](handleError(_0x37314b,null));};exports[_0x0f82('0x55')]=function(_0x5cc427,_0x12a33d,_0x31c1d5){var _0xf13e9d;return db[_0x0f82('0x36')][_0x0f82('0x55')](_0x5cc427[_0x0f82('0x54')],{'raw':!![]})[_0x0f82('0x18')](function(_0x5ee3ee){_0xf13e9d=_0x5ee3ee;return db[_0x0f82('0x36')][_0x0f82('0x4a')]({'raw':!![]});})[_0x0f82('0x18')](function(_0x3ec51d){var _0x582d01=fs['readFileSync'](path[_0x0f82('0x5c')](config[_0x0f82('0x5d')],_0x0f82('0x5e')),_0x0f82('0x5f'));var _0x4cf165=fs[_0x0f82('0x60')](path['join'](config[_0x0f82('0x5d')],_0x0f82('0x61')),'utf8');var _0x5d6fbf=ejs[_0x0f82('0x62')](_0x582d01,{'trunks':_0x3ec51d||[]});fs[_0x0f82('0x63')](_0x0f82('0x64'),_0x5d6fbf);if(_0xf13e9d[_0x0f82('0x65')]){var _0x54c3b6=ejs['render'](_0x4cf165,{'trunks':_0x3ec51d||[]});fs[_0x0f82('0x63')]('/etc/asterisk/sip_xcally_registers.conf',_0x54c3b6);}})[_0x0f82('0x18')](function(){return respondWithRpcPromise(_0x0f82('0x66'),_0x0f82('0x55'),{'module':_0x0f82('0x67')});})[_0x0f82('0x18')](function(){var _0x10b7af=_0x5cc427[_0x0f82('0x56')][_0x0f82('0x57')]({'plain':!![]});if(!_0x10b7af)throw new Error(_0x0f82('0x68'));if(_0x10b7af[_0x0f82('0x58')]===_0x0f82('0x56')){var _0x43f013=_0xf13e9d[_0x0f82('0x57')]({'plain':!![]});return db['UserProfileSection'][_0x0f82('0x4f')]({'where':{'name':'Trunks','userProfileId':_0x10b7af[_0x0f82('0x69')]},'raw':!![]})[_0x0f82('0x18')](function(_0x57e6a4){if(_0x57e6a4&&_0x57e6a4['autoAssociation']===0x0){return db[_0x0f82('0x5a')]['create']({'name':_0x43f013[_0x0f82('0x32')],'resourceId':_0x43f013['id'],'type':_0x57e6a4[_0x0f82('0x32')],'sectionId':_0x57e6a4['id']},{})['then'](function(){return _0xf13e9d;});}else{return _0xf13e9d;}})['catch'](function(_0x4f1c9f){logger[_0x0f82('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4f1c9f);throw _0x4f1c9f;});}return _0xf13e9d;})['then'](respondWithResult(_0x12a33d,0xc9))['catch'](handleError(_0x12a33d,null));};exports[_0x0f82('0x2e')]=function(_0x4a91bd,_0x2b6c1,_0x276584){var _0x24eb10;return db['Trunk'][_0x0f82('0x4f')]({'where':{'id':_0x4a91bd['params']['id']}})['then'](handleEntityNotFound(_0x2b6c1,null))[_0x0f82('0x18')](saveUpdates(_0x4a91bd[_0x0f82('0x54')],null))['then'](function(_0x22f977){if(_0x22f977){_0x24eb10=_0x22f977;return db['Trunk'][_0x0f82('0x4a')]({'raw':!![]});}})[_0x0f82('0x18')](function(_0x1c1156){if(_0x1c1156){var _0x245331=fs[_0x0f82('0x60')](path[_0x0f82('0x5c')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0xc624f1=fs[_0x0f82('0x60')](path['join'](config[_0x0f82('0x5d')],_0x0f82('0x61')),_0x0f82('0x5f'));var _0xadab4c=ejs[_0x0f82('0x62')](_0x245331,{'trunks':_0x1c1156||[]});fs['writeFileSync'](_0x0f82('0x64'),_0xadab4c);var _0x326090=ejs['render'](_0xc624f1,{'trunks':_0x1c1156||[]});fs[_0x0f82('0x63')](_0x0f82('0x6a'),_0x326090);return respondWithRpcPromise('Reload','update',{'module':_0x0f82('0x67')});}return null;})['then'](function(_0xf55027){if(_0xf55027){return _0x24eb10;}})[_0x0f82('0x18')](respondWithResult(_0x2b6c1,null))[_0x0f82('0x22')](handleError(_0x2b6c1,null));};exports['destroy']=function(_0x55bda8,_0x593c70,_0x5503e7){var _0x4a0348;return db[_0x0f82('0x36')][_0x0f82('0x4f')]({'where':{'id':_0x55bda8['params']['id']}})['then'](handleEntityNotFound(_0x593c70,null))[_0x0f82('0x18')](removeEntity(_0x593c70,null))[_0x0f82('0x18')](function(){return db[_0x0f82('0x36')][_0x0f82('0x4a')]({'raw':!![]});})[_0x0f82('0x18')](function(_0x1c78e4){var _0x55ab24=fs['readFileSync'](path[_0x0f82('0x5c')](config[_0x0f82('0x5d')],_0x0f82('0x5e')),'utf8');var _0x347235=fs[_0x0f82('0x60')](path[_0x0f82('0x5c')](config[_0x0f82('0x5d')],_0x0f82('0x61')),_0x0f82('0x5f'));var _0x4596c8=ejs[_0x0f82('0x62')](_0x55ab24,{'trunks':_0x1c78e4});var _0x356f66=ejs[_0x0f82('0x62')](_0x347235,{'trunks':_0x1c78e4});fs[_0x0f82('0x63')](_0x0f82('0x64'),_0x4596c8);fs[_0x0f82('0x63')](_0x0f82('0x6a'),_0x356f66);return respondWithRpcPromise(_0x0f82('0x66'),_0x0f82('0x2f'),{'module':_0x0f82('0x67')});})[_0x0f82('0x22')](handleError(_0x593c70,null));};