692a0232d08213e073c78da502a30be8ee1966b8
[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 _0x1a24=['moment','bluebird','util','path','ejs','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','http','request','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','status','end','json','offset','limit','set','Content-Range','apply','reject','update','destroy','then','get','Trunks','UserProfileResource','sendStatus','stack','name','map','Trunk','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','rows','show','params','rawAttributes','filtears','include','find','options','omit','createdAt','body','updatedAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','root','utf8','readFileSync','join','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','userProfileId','autoAssociation','Reload','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x5a1f74,_0x181926){var _0x355828=function(_0x654a86){while(--_0x654a86){_0x5a1f74['push'](_0x5a1f74['shift']());}};_0x355828(++_0x181926);}(_0x1a24,0xd4));var _0x41a2=function(_0xee9d89,_0x5519ce){_0xee9d89=_0xee9d89-0x0;var _0xeff739=_0x1a24[_0xee9d89];return _0xeff739;};'use strict';var pdf=require(_0x41a2('0x0'));var emlformat=require(_0x41a2('0x1'));var rimraf=require(_0x41a2('0x2'));var zipdir=require(_0x41a2('0x3'));var jsonpatch=require(_0x41a2('0x4'));var rp=require(_0x41a2('0x5'));var moment=require(_0x41a2('0x6'));var BPromise=require(_0x41a2('0x7'));var Mustache=require('mustache');var util=require(_0x41a2('0x8'));var path=require(_0x41a2('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x41a2('0xa'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x41a2('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x41a2('0xc'));var toCsv=require(_0x41a2('0xd'));var querystring=require('querystring');var Papa=require(_0x41a2('0xe'));var Redis=require(_0x41a2('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x41a2('0x10'));var as=require(_0x41a2('0x11'));var hardwareService=require(_0x41a2('0x12'));var logger=require(_0x41a2('0x13'))(_0x41a2('0x14'));var utils=require(_0x41a2('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x41a2('0x16'))['db'];var jayson=require(_0x41a2('0x17'));var client=jayson['client'][_0x41a2('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x3c19eb,_0x5d6a84,_0x57ce38,_0x4f0590){return new BPromise(function(_0x23aafd,_0x591c5f){var _0x2c62b8=_0x4f0590||client;return _0x2c62b8[_0x41a2('0x19')](_0x3c19eb,_0x57ce38)['then'](function(_0x599e07){logger[_0x41a2('0x1a')](_0x41a2('0x1b'),_0x5d6a84,'request\x20sent');logger['debug'](_0x41a2('0x1c'),_0x5d6a84,'request\x20sent',JSON[_0x41a2('0x1d')](_0x599e07));if(_0x599e07[_0x41a2('0x1e')]){if(_0x599e07['error'][_0x41a2('0x1f')]===0x1f4){logger['error'](_0x41a2('0x1b'),_0x5d6a84,_0x599e07[_0x41a2('0x1e')][_0x41a2('0x20')]);return _0x591c5f(_0x599e07['error'][_0x41a2('0x20')]);}logger[_0x41a2('0x1e')]('Trunk,\x20%s,\x20%s',_0x5d6a84,_0x599e07['error'][_0x41a2('0x20')]);return _0x23aafd(_0x599e07[_0x41a2('0x1e')][_0x41a2('0x20')]);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x5d6a84,_0x41a2('0x21'));_0x23aafd(_0x599e07[_0x41a2('0x22')][_0x41a2('0x20')]);}})[_0x41a2('0x23')](function(_0x21c22a){logger[_0x41a2('0x1e')](_0x41a2('0x1b'),_0x5d6a84,_0x21c22a);_0x591c5f(_0x21c22a);});});}function respondWithStatusCode(_0x4a8461,_0x53639a){_0x53639a=_0x53639a||0xcc;return function(_0x2b188f){if(_0x2b188f){return _0x4a8461['sendStatus'](_0x53639a);}return _0x4a8461[_0x41a2('0x24')](_0x53639a)[_0x41a2('0x25')]();};}function respondWithResult(_0x398990,_0x683035){_0x683035=_0x683035||0xc8;return function(_0x1392d7){if(_0x1392d7){return _0x398990[_0x41a2('0x24')](_0x683035)[_0x41a2('0x26')](_0x1392d7);}};}function respondWithFilteredResult(_0x48a27e,_0x48c0c4){return function(_0x5e0465){if(_0x5e0465){var _0x93390d=_0x5e0465['count'],_0x4a366f=_0x48c0c4['offset'],_0x21002a=_0x48c0c4[_0x41a2('0x27')]+_0x48c0c4[_0x41a2('0x28')],_0x410f34;if(_0x21002a>=_0x93390d){_0x21002a=_0x93390d;_0x410f34=0xc8;}else{_0x410f34=0xce;}_0x48a27e[_0x41a2('0x24')](_0x410f34);return _0x48a27e[_0x41a2('0x29')](_0x41a2('0x2a'),_0x4a366f+'-'+_0x21002a+'/'+_0x93390d)[_0x41a2('0x26')](_0x5e0465);}return null;};}function patchUpdates(_0x41de84){return function(_0x4c7720){try{jsonpatch[_0x41a2('0x2b')](_0x4c7720,_0x41de84,!![]);}catch(_0x2687c3){return BPromise[_0x41a2('0x2c')](_0x2687c3);}return _0x4c7720['save']();};}function saveUpdates(_0x407518,_0x3becbb){return function(_0x46fec5){if(_0x46fec5){return _0x46fec5[_0x41a2('0x2d')](_0x407518)['then'](function(_0x56adcd){return _0x56adcd;});}return null;};}function removeEntity(_0x3e338c,_0x54dd45){return function(_0x1ac56b){if(_0x1ac56b){return _0x1ac56b[_0x41a2('0x2e')]()[_0x41a2('0x2f')](function(){var _0x5eda45=_0x1ac56b[_0x41a2('0x30')]({'plain':!![]});var _0x5e362b=_0x41a2('0x31');return db[_0x41a2('0x32')][_0x41a2('0x2e')]({'where':{'type':_0x5e362b,'resourceId':_0x5eda45['id']}})['then'](function(){return _0x1ac56b;});})[_0x41a2('0x2f')](function(){_0x3e338c[_0x41a2('0x24')](0xcc)[_0x41a2('0x25')]();});}};}function handleEntityNotFound(_0x4f85dc,_0x36f0aa){return function(_0x23e9c2){if(!_0x23e9c2){_0x4f85dc[_0x41a2('0x33')](0x194);}return _0x23e9c2;};}function handleError(_0x169686,_0x1a56f5){_0x1a56f5=_0x1a56f5||0x1f4;return function(_0x471d58){logger['error'](_0x471d58[_0x41a2('0x34')]);if(_0x471d58[_0x41a2('0x35')]){delete _0x471d58[_0x41a2('0x35')];}_0x169686[_0x41a2('0x24')](_0x1a56f5)['send'](_0x471d58);};}exports['index']=function(_0x38e165,_0x4ebbee){var _0x3f7e99={},_0x2e2a89={},_0x505ac5={'count':0x0,'rows':[]};var _0x2ea3f3=_[_0x41a2('0x36')](db[_0x41a2('0x37')]['rawAttributes'],function(_0x2ac19f){return{'name':_0x2ac19f[_0x41a2('0x38')],'type':_0x2ac19f[_0x41a2('0x39')][_0x41a2('0x3a')]};});_0x2e2a89[_0x41a2('0x3b')]=_[_0x41a2('0x36')](_0x2ea3f3,_0x41a2('0x35'));_0x2e2a89['query']=_[_0x41a2('0x3c')](_0x38e165[_0x41a2('0x3d')]);_0x2e2a89[_0x41a2('0x3e')]=_[_0x41a2('0x3f')](_0x2e2a89[_0x41a2('0x3b')],_0x2e2a89[_0x41a2('0x3d')]);_0x3f7e99[_0x41a2('0x40')]=_[_0x41a2('0x3f')](_0x2e2a89[_0x41a2('0x3b')],qs[_0x41a2('0x41')](_0x38e165[_0x41a2('0x3d')]['fields']));_0x3f7e99[_0x41a2('0x40')]=_0x3f7e99[_0x41a2('0x40')][_0x41a2('0x42')]?_0x3f7e99[_0x41a2('0x40')]:_0x2e2a89[_0x41a2('0x3b')];if(!_0x38e165['query']['hasOwnProperty'](_0x41a2('0x43'))){_0x3f7e99[_0x41a2('0x28')]=qs[_0x41a2('0x28')](_0x38e165['query'][_0x41a2('0x28')]);_0x3f7e99['offset']=qs[_0x41a2('0x27')](_0x38e165[_0x41a2('0x3d')][_0x41a2('0x27')]);}_0x3f7e99[_0x41a2('0x44')]=qs[_0x41a2('0x45')](_0x38e165[_0x41a2('0x3d')][_0x41a2('0x45')]);_0x3f7e99[_0x41a2('0x46')]=qs[_0x41a2('0x3e')](_[_0x41a2('0x47')](_0x38e165[_0x41a2('0x3d')],_0x2e2a89[_0x41a2('0x3e')]),_0x2ea3f3);if(_0x38e165[_0x41a2('0x3d')][_0x41a2('0x48')]){_0x3f7e99[_0x41a2('0x46')]=_[_0x41a2('0x49')](_0x3f7e99[_0x41a2('0x46')],{'$or':_[_0x41a2('0x36')](_0x2ea3f3,function(_0x48a818){if(_0x48a818[_0x41a2('0x39')]!==_0x41a2('0x4a')){var _0x458be5={};_0x458be5[_0x48a818['name']]={'$like':'%'+_0x38e165['query'][_0x41a2('0x48')]+'%'};return _0x458be5;}})});}_0x3f7e99=_[_0x41a2('0x49')]({},_0x3f7e99,_0x38e165['options']);var _0x194e47={'where':_0x3f7e99[_0x41a2('0x46')]};return db['Trunk'][_0x41a2('0x4b')](_0x194e47)[_0x41a2('0x2f')](function(_0x19f4f2){_0x505ac5[_0x41a2('0x4b')]=_0x19f4f2;if(_0x38e165['query'][_0x41a2('0x4c')]){_0x3f7e99['include']=[{'all':!![]}];}return db[_0x41a2('0x37')]['findAll'](_0x3f7e99);})[_0x41a2('0x2f')](function(_0x174896){_0x505ac5[_0x41a2('0x4d')]=_0x174896;return _0x505ac5;})[_0x41a2('0x2f')](respondWithFilteredResult(_0x4ebbee,_0x3f7e99))[_0x41a2('0x23')](handleError(_0x4ebbee,null));};exports[_0x41a2('0x4e')]=function(_0xd5fd27,_0x3cd34d){var _0x3e74be={'raw':![],'where':{'id':_0xd5fd27[_0x41a2('0x4f')]['id']}},_0x4c7341={};_0x4c7341[_0x41a2('0x3b')]=_[_0x41a2('0x3c')](db['Trunk'][_0x41a2('0x50')]);_0x4c7341[_0x41a2('0x3d')]=_[_0x41a2('0x3c')](_0xd5fd27[_0x41a2('0x3d')]);_0x4c7341[_0x41a2('0x51')]=_[_0x41a2('0x3f')](_0x4c7341[_0x41a2('0x3b')],_0x4c7341[_0x41a2('0x3d')]);_0x3e74be[_0x41a2('0x40')]=_[_0x41a2('0x3f')](_0x4c7341[_0x41a2('0x3b')],qs['fields'](_0xd5fd27[_0x41a2('0x3d')][_0x41a2('0x41')]));_0x3e74be['attributes']=_0x3e74be['attributes'][_0x41a2('0x42')]?_0x3e74be[_0x41a2('0x40')]:_0x4c7341[_0x41a2('0x3b')];if(_0xd5fd27[_0x41a2('0x3d')][_0x41a2('0x4c')]){_0x3e74be[_0x41a2('0x52')]=[{'all':!![]}];}_0x3e74be=_[_0x41a2('0x49')]({},_0x3e74be,_0xd5fd27['options']);return db[_0x41a2('0x37')][_0x41a2('0x53')](_0x3e74be)[_0x41a2('0x2f')](handleEntityNotFound(_0x3cd34d,null))[_0x41a2('0x2f')](respondWithResult(_0x3cd34d,null))[_0x41a2('0x23')](handleError(_0x3cd34d,null));};exports['clone']=function(_0x5aee25,_0x9574de){var _0x1a1e9c={'where':{'id':_0x5aee25[_0x41a2('0x4f')]['id']}},_0x238a67={};_0x238a67[_0x41a2('0x3b')]=_[_0x41a2('0x3c')](db['Trunk']['rawAttributes']);_0x1a1e9c[_0x41a2('0x40')]=_['intersection'](_0x238a67[_0x41a2('0x3b')],qs[_0x41a2('0x41')](_0x5aee25[_0x41a2('0x3d')][_0x41a2('0x41')]));_0x1a1e9c['attributes']=_0x1a1e9c[_0x41a2('0x40')]['length']?_0x1a1e9c['attributes']:_0x238a67[_0x41a2('0x3b')];if(_0x5aee25['query']['includeAll']){_0x1a1e9c[_0x41a2('0x52')]=[{'all':!![]}];}_0x1a1e9c=_[_0x41a2('0x49')]({},_0x1a1e9c,_0x5aee25[_0x41a2('0x54')]);return db[_0x41a2('0x37')][_0x41a2('0x53')](_0x1a1e9c)[_0x41a2('0x2f')](handleEntityNotFound(_0x9574de,null))['then'](function(_0x8da2eb){if(_0x8da2eb){var _0x3acccd=_0x8da2eb[_0x41a2('0x30')]({'plain':!![]});_0x3acccd=qs[_0x41a2('0x55')](_0x3acccd,['id',_0x41a2('0x56'),'updatedAt']);_0x5aee25[_0x41a2('0x57')]=_[_0x41a2('0x55')](_0x5aee25[_0x41a2('0x57')],['id',_0x41a2('0x56'),_0x41a2('0x58')]);return db[_0x41a2('0x37')][_0x41a2('0x59')](_['merge'](_0x3acccd,_0x5aee25['body']),{'include':_0x5aee25[_0x41a2('0x3d')][_0x41a2('0x4c')]?[{'all':!![]}]:undefined})[_0x41a2('0x2f')](function(_0xec03ae){var _0x88cf06=_0x5aee25['user'][_0x41a2('0x30')]({'plain':!![]});if(!_0x88cf06)throw new Error(_0x41a2('0x5a'));if(_0x88cf06[_0x41a2('0x5b')]===_0x41a2('0x5c')){var _0x1ad928=_0xec03ae[_0x41a2('0x30')]({'plain':!![]});var _0x41274c=_0x41a2('0x31');return db['UserProfileSection'][_0x41a2('0x53')]({'where':{'name':_0x41274c,'userProfileId':_0x88cf06['userProfileId']},'raw':!![]})['then'](function(_0x3fc6ad){if(_0x3fc6ad&&_0x3fc6ad['autoAssociation']===0x0){return db['UserProfileResource'][_0x41a2('0x59')]({'name':_0x1ad928[_0x41a2('0x35')],'resourceId':_0x1ad928['id'],'type':_0x3fc6ad[_0x41a2('0x35')],'sectionId':_0x3fc6ad['id']},{})['then'](function(){return _0xec03ae;});}else{return _0xec03ae;}})[_0x41a2('0x23')](function(_0x52590e){logger['error'](_0x41a2('0x5d'),_0x52590e);throw _0x52590e;});}return _0xec03ae;});}})['then'](respondWithResult(_0x9574de,0xc9))[_0x41a2('0x23')](handleError(_0x9574de,null));};exports['create']=function(_0x354d5b,_0x41e9da,_0x348f9f){var _0x5e030b;return db['Trunk']['create'](_0x354d5b[_0x41a2('0x57')],{'raw':!![]})[_0x41a2('0x2f')](function(_0x3a96b2){_0x5e030b=_0x3a96b2;return db['Trunk'][_0x41a2('0x5e')]({'raw':!![]});})[_0x41a2('0x2f')](function(_0x115fc6){var _0x490c10=fs['readFileSync'](path['join'](config[_0x41a2('0x5f')],'server/files/templates/trunk.ejs'),_0x41a2('0x60'));var _0x1c37bd=fs[_0x41a2('0x61')](path[_0x41a2('0x62')](config[_0x41a2('0x5f')],_0x41a2('0x63')),'utf8');var _0x4bd0d7=ejs[_0x41a2('0x64')](_0x490c10,{'trunks':_0x115fc6||[]});fs[_0x41a2('0x65')](_0x41a2('0x66'),_0x4bd0d7);if(_0x5e030b[_0x41a2('0x67')]){var _0x52093b=ejs[_0x41a2('0x64')](_0x1c37bd,{'trunks':_0x115fc6||[]});fs['writeFileSync'](_0x41a2('0x68'),_0x52093b);}})[_0x41a2('0x2f')](function(){return respondWithRpcPromise('Reload',_0x41a2('0x59'),{'module':_0x41a2('0x69')});})['then'](function(){var _0x207f07=_0x354d5b[_0x41a2('0x5c')][_0x41a2('0x30')]({'plain':!![]});if(!_0x207f07)throw new Error(_0x41a2('0x5a'));if(_0x207f07[_0x41a2('0x5b')]===_0x41a2('0x5c')){var _0x2af7c5=_0x5e030b[_0x41a2('0x30')]({'plain':!![]});return db['UserProfileSection'][_0x41a2('0x53')]({'where':{'name':_0x41a2('0x31'),'userProfileId':_0x207f07[_0x41a2('0x6a')]},'raw':!![]})[_0x41a2('0x2f')](function(_0x92e376){if(_0x92e376&&_0x92e376[_0x41a2('0x6b')]===0x0){return db[_0x41a2('0x32')][_0x41a2('0x59')]({'name':_0x2af7c5[_0x41a2('0x35')],'resourceId':_0x2af7c5['id'],'type':_0x92e376[_0x41a2('0x35')],'sectionId':_0x92e376['id']},{})[_0x41a2('0x2f')](function(){return _0x5e030b;});}else{return _0x5e030b;}})['catch'](function(_0x437b9a){logger['error'](_0x41a2('0x5d'),_0x437b9a);throw _0x437b9a;});}return _0x5e030b;})[_0x41a2('0x2f')](respondWithResult(_0x41e9da,0xc9))[_0x41a2('0x23')](handleError(_0x41e9da,null));};exports[_0x41a2('0x2d')]=function(_0xcfe848,_0x59f04d,_0x53150c){var _0x5a21be;return db['Trunk'][_0x41a2('0x53')]({'where':{'id':_0xcfe848['params']['id']}})[_0x41a2('0x2f')](handleEntityNotFound(_0x59f04d,null))[_0x41a2('0x2f')](saveUpdates(_0xcfe848[_0x41a2('0x57')],null))['then'](function(_0xdddb1){if(_0xdddb1){_0x5a21be=_0xdddb1;return db[_0x41a2('0x37')][_0x41a2('0x5e')]({'raw':!![]});}})[_0x41a2('0x2f')](function(_0x16020a){if(_0x16020a){var _0x1a66e3=fs[_0x41a2('0x61')](path[_0x41a2('0x62')](config[_0x41a2('0x5f')],'server/files/templates/trunk.ejs'),_0x41a2('0x60'));var _0xfe05a=fs[_0x41a2('0x61')](path[_0x41a2('0x62')](config[_0x41a2('0x5f')],_0x41a2('0x63')),'utf8');var _0x844b79=ejs[_0x41a2('0x64')](_0x1a66e3,{'trunks':_0x16020a||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x844b79);var _0x925312=ejs[_0x41a2('0x64')](_0xfe05a,{'trunks':_0x16020a||[]});fs[_0x41a2('0x65')](_0x41a2('0x68'),_0x925312);return respondWithRpcPromise(_0x41a2('0x6c'),_0x41a2('0x2d'),{'module':'chan_sip.so'});}return null;})[_0x41a2('0x2f')](function(_0x3e027a){if(_0x3e027a){return _0x5a21be;}})['then'](respondWithResult(_0x59f04d,null))['catch'](handleError(_0x59f04d,null));};exports[_0x41a2('0x2e')]=function(_0x58d74d,_0x235922,_0xc3d75b){var _0x38bdca;return db[_0x41a2('0x37')]['find']({'where':{'id':_0x58d74d['params']['id']}})[_0x41a2('0x2f')](handleEntityNotFound(_0x235922,null))[_0x41a2('0x2f')](removeEntity(_0x235922,null))['then'](function(){return db[_0x41a2('0x37')][_0x41a2('0x5e')]({'raw':!![]});})[_0x41a2('0x2f')](function(_0xfff23c){var _0x184058=fs['readFileSync'](path[_0x41a2('0x62')](config[_0x41a2('0x5f')],'server/files/templates/trunk.ejs'),_0x41a2('0x60'));var _0x165d6a=fs['readFileSync'](path[_0x41a2('0x62')](config[_0x41a2('0x5f')],'server/files/templates/registry.ejs'),_0x41a2('0x60'));var _0xc0df1f=ejs[_0x41a2('0x64')](_0x184058,{'trunks':_0xfff23c});var _0x5162e7=ejs[_0x41a2('0x64')](_0x165d6a,{'trunks':_0xfff23c});fs[_0x41a2('0x65')](_0x41a2('0x66'),_0xc0df1f);fs['writeFileSync'](_0x41a2('0x68'),_0x5162e7);return respondWithRpcPromise(_0x41a2('0x6c'),_0x41a2('0x2e'),{'module':_0x41a2('0x69')});})[_0x41a2('0x23')](handleError(_0x235922,null));};