64502509e12965e165fc2df7f54bdea19dcf520e
[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 _0xeb77=['map','Trunk','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','offset','order','sort','where','filter','merge','includeAll','findAll','show','params','rawAttributes','include','options','find','get','omit','createdAt','updatedAt','body','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','name','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','writeFileSync','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','user','role','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','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','count','set','Content-Range','apply','reject','save','update','then','destroy','Trunks','UserProfileResource','stack','send'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xeb77,0x1e2));var _0x7eb7=function(_0x2bb66c,_0x36c6c6){_0x2bb66c=_0x2bb66c-0x0;var _0x1e0f98=_0xeb77[_0x2bb66c];return _0x1e0f98;};'use strict';var pdf=require(_0x7eb7('0x0'));var emlformat=require(_0x7eb7('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x7eb7('0x2'));var jsonpatch=require(_0x7eb7('0x3'));var rp=require(_0x7eb7('0x4'));var moment=require(_0x7eb7('0x5'));var BPromise=require(_0x7eb7('0x6'));var Mustache=require('mustache');var util=require(_0x7eb7('0x7'));var path=require(_0x7eb7('0x8'));var sox=require(_0x7eb7('0x9'));var csv=require(_0x7eb7('0xa'));var ejs=require(_0x7eb7('0xb'));var fs=require('fs');var _=require(_0x7eb7('0xc'));var squel=require(_0x7eb7('0xd'));var crypto=require(_0x7eb7('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7eb7('0xf'));var toCsv=require(_0x7eb7('0xa'));var querystring=require(_0x7eb7('0x10'));var Papa=require(_0x7eb7('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7eb7('0x12'));var as=require(_0x7eb7('0x13'));var hardwareService=require(_0x7eb7('0x14'));var logger=require(_0x7eb7('0x15'))(_0x7eb7('0x16'));var utils=require(_0x7eb7('0x17'));var config=require(_0x7eb7('0x18'));var licenseUtil=require(_0x7eb7('0x19'));var db=require(_0x7eb7('0x1a'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x7eb7('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc8e40f,_0x47e706,_0xff813f,_0x52432d){return new BPromise(function(_0x4b79bd,_0x182d9b){var _0x18f983=_0x52432d||client;return _0x18f983['request'](_0xc8e40f,_0xff813f)['then'](function(_0x217373){logger[_0x7eb7('0x1c')](_0x7eb7('0x1d'),_0x47e706,_0x7eb7('0x1e'));logger['debug'](_0x7eb7('0x1f'),_0x47e706,_0x7eb7('0x1e'),JSON[_0x7eb7('0x20')](_0x217373));if(_0x217373[_0x7eb7('0x21')]){if(_0x217373[_0x7eb7('0x21')]['code']===0x1f4){logger[_0x7eb7('0x21')](_0x7eb7('0x1d'),_0x47e706,_0x217373[_0x7eb7('0x21')][_0x7eb7('0x22')]);return _0x182d9b(_0x217373['error'][_0x7eb7('0x22')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x47e706,_0x217373[_0x7eb7('0x21')][_0x7eb7('0x22')]);return _0x4b79bd(_0x217373[_0x7eb7('0x21')][_0x7eb7('0x22')]);}else{logger[_0x7eb7('0x1c')](_0x7eb7('0x1d'),_0x47e706,'request\x20sent');_0x4b79bd(_0x217373['result'][_0x7eb7('0x22')]);}})[_0x7eb7('0x23')](function(_0x46bc87){logger['error'](_0x7eb7('0x1d'),_0x47e706,_0x46bc87);_0x182d9b(_0x46bc87);});});}function respondWithStatusCode(_0x52143b,_0x5b4b7c){_0x5b4b7c=_0x5b4b7c||0xcc;return function(_0x25225f){if(_0x25225f){return _0x52143b[_0x7eb7('0x24')](_0x5b4b7c);}return _0x52143b[_0x7eb7('0x25')](_0x5b4b7c)[_0x7eb7('0x26')]();};}function respondWithResult(_0x58ba7d,_0x330ede){_0x330ede=_0x330ede||0xc8;return function(_0x1eb817){if(_0x1eb817){return _0x58ba7d[_0x7eb7('0x25')](_0x330ede)[_0x7eb7('0x27')](_0x1eb817);}};}function respondWithFilteredResult(_0x3b360c,_0x881435){return function(_0x3bb965){if(_0x3bb965){var _0x57933e=_0x3bb965[_0x7eb7('0x28')],_0x276d3d=_0x881435['offset'],_0x2b37a5=_0x881435['offset']+_0x881435['limit'],_0x39c8f1;if(_0x2b37a5>=_0x57933e){_0x2b37a5=_0x57933e;_0x39c8f1=0xc8;}else{_0x39c8f1=0xce;}_0x3b360c['status'](_0x39c8f1);return _0x3b360c[_0x7eb7('0x29')](_0x7eb7('0x2a'),_0x276d3d+'-'+_0x2b37a5+'/'+_0x57933e)[_0x7eb7('0x27')](_0x3bb965);}return null;};}function patchUpdates(_0x53c37a){return function(_0x242bcc){try{jsonpatch[_0x7eb7('0x2b')](_0x242bcc,_0x53c37a,!![]);}catch(_0x4e0a6a){return BPromise[_0x7eb7('0x2c')](_0x4e0a6a);}return _0x242bcc[_0x7eb7('0x2d')]();};}function saveUpdates(_0xeb1634,_0x2eacd7){return function(_0x23ab61){if(_0x23ab61){return _0x23ab61[_0x7eb7('0x2e')](_0xeb1634)[_0x7eb7('0x2f')](function(_0x27e7a6){return _0x27e7a6;});}return null;};}function removeEntity(_0x139320,_0x4eb2e5){return function(_0x5c9377){if(_0x5c9377){return _0x5c9377[_0x7eb7('0x30')]()[_0x7eb7('0x2f')](function(){var _0x2135fd=_0x5c9377['get']({'plain':!![]});var _0x54f233=_0x7eb7('0x31');return db[_0x7eb7('0x32')]['destroy']({'where':{'type':_0x54f233,'resourceId':_0x2135fd['id']}})[_0x7eb7('0x2f')](function(){return _0x5c9377;});})['then'](function(){_0x139320[_0x7eb7('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x592129,_0x33b03c){return function(_0x25adcf){if(!_0x25adcf){_0x592129[_0x7eb7('0x24')](0x194);}return _0x25adcf;};}function handleError(_0x209d12,_0x2477c2){_0x2477c2=_0x2477c2||0x1f4;return function(_0x323247){logger[_0x7eb7('0x21')](_0x323247[_0x7eb7('0x33')]);if(_0x323247['name']){delete _0x323247['name'];}_0x209d12['status'](_0x2477c2)[_0x7eb7('0x34')](_0x323247);};}exports['index']=function(_0x33ecc4,_0x950c2c){var _0x2d7384={},_0xffff2b={},_0x4fcf50={'count':0x0,'rows':[]};var _0x439857=_[_0x7eb7('0x35')](db[_0x7eb7('0x36')]['rawAttributes'],function(_0x2a53ba){return{'name':_0x2a53ba[_0x7eb7('0x37')],'type':_0x2a53ba['type']['key']};});_0xffff2b[_0x7eb7('0x38')]=_[_0x7eb7('0x35')](_0x439857,'name');_0xffff2b[_0x7eb7('0x39')]=_[_0x7eb7('0x3a')](_0x33ecc4[_0x7eb7('0x39')]);_0xffff2b[_0x7eb7('0x3b')]=_[_0x7eb7('0x3c')](_0xffff2b[_0x7eb7('0x38')],_0xffff2b[_0x7eb7('0x39')]);_0x2d7384[_0x7eb7('0x3d')]=_[_0x7eb7('0x3c')](_0xffff2b[_0x7eb7('0x38')],qs[_0x7eb7('0x3e')](_0x33ecc4[_0x7eb7('0x39')]['fields']));_0x2d7384[_0x7eb7('0x3d')]=_0x2d7384[_0x7eb7('0x3d')][_0x7eb7('0x3f')]?_0x2d7384[_0x7eb7('0x3d')]:_0xffff2b['model'];if(!_0x33ecc4[_0x7eb7('0x39')][_0x7eb7('0x40')](_0x7eb7('0x41'))){_0x2d7384[_0x7eb7('0x42')]=qs['limit'](_0x33ecc4[_0x7eb7('0x39')][_0x7eb7('0x42')]);_0x2d7384['offset']=qs[_0x7eb7('0x43')](_0x33ecc4['query'][_0x7eb7('0x43')]);}_0x2d7384[_0x7eb7('0x44')]=qs[_0x7eb7('0x45')](_0x33ecc4[_0x7eb7('0x39')][_0x7eb7('0x45')]);_0x2d7384[_0x7eb7('0x46')]=qs['filters'](_['pick'](_0x33ecc4[_0x7eb7('0x39')],_0xffff2b[_0x7eb7('0x3b')]),_0x439857);if(_0x33ecc4['query'][_0x7eb7('0x47')]){_0x2d7384['where']=_[_0x7eb7('0x48')](_0x2d7384[_0x7eb7('0x46')],{'$or':_[_0x7eb7('0x35')](_0x439857,function(_0x824989){if(_0x824989['type']!=='VIRTUAL'){var _0x32b2e5={};_0x32b2e5[_0x824989['name']]={'$like':'%'+_0x33ecc4[_0x7eb7('0x39')][_0x7eb7('0x47')]+'%'};return _0x32b2e5;}})});}_0x2d7384=_['merge']({},_0x2d7384,_0x33ecc4['options']);var _0x9e9686={'where':_0x2d7384[_0x7eb7('0x46')]};return db[_0x7eb7('0x36')][_0x7eb7('0x28')](_0x9e9686)[_0x7eb7('0x2f')](function(_0x45e993){_0x4fcf50['count']=_0x45e993;if(_0x33ecc4[_0x7eb7('0x39')][_0x7eb7('0x49')]){_0x2d7384['include']=[{'all':!![]}];}return db[_0x7eb7('0x36')][_0x7eb7('0x4a')](_0x2d7384);})[_0x7eb7('0x2f')](function(_0x1a5e11){_0x4fcf50['rows']=_0x1a5e11;return _0x4fcf50;})[_0x7eb7('0x2f')](respondWithFilteredResult(_0x950c2c,_0x2d7384))[_0x7eb7('0x23')](handleError(_0x950c2c,null));};exports[_0x7eb7('0x4b')]=function(_0x287118,_0x431f28){var _0x341082={'raw':![],'where':{'id':_0x287118[_0x7eb7('0x4c')]['id']}},_0x4b20c3={};_0x4b20c3[_0x7eb7('0x38')]=_[_0x7eb7('0x3a')](db[_0x7eb7('0x36')][_0x7eb7('0x4d')]);_0x4b20c3[_0x7eb7('0x39')]=_['keys'](_0x287118['query']);_0x4b20c3[_0x7eb7('0x3b')]=_['intersection'](_0x4b20c3[_0x7eb7('0x38')],_0x4b20c3[_0x7eb7('0x39')]);_0x341082[_0x7eb7('0x3d')]=_[_0x7eb7('0x3c')](_0x4b20c3[_0x7eb7('0x38')],qs[_0x7eb7('0x3e')](_0x287118[_0x7eb7('0x39')]['fields']));_0x341082[_0x7eb7('0x3d')]=_0x341082[_0x7eb7('0x3d')][_0x7eb7('0x3f')]?_0x341082[_0x7eb7('0x3d')]:_0x4b20c3[_0x7eb7('0x38')];if(_0x287118['query']['includeAll']){_0x341082[_0x7eb7('0x4e')]=[{'all':!![]}];}_0x341082=_[_0x7eb7('0x48')]({},_0x341082,_0x287118[_0x7eb7('0x4f')]);return db['Trunk'][_0x7eb7('0x50')](_0x341082)[_0x7eb7('0x2f')](handleEntityNotFound(_0x431f28,null))[_0x7eb7('0x2f')](respondWithResult(_0x431f28,null))[_0x7eb7('0x23')](handleError(_0x431f28,null));};exports['clone']=function(_0x2bb93b,_0x2694a3){var _0x4217db={'where':{'id':_0x2bb93b[_0x7eb7('0x4c')]['id']}},_0x20a546={};_0x20a546[_0x7eb7('0x38')]=_[_0x7eb7('0x3a')](db['Trunk'][_0x7eb7('0x4d')]);_0x4217db[_0x7eb7('0x3d')]=_[_0x7eb7('0x3c')](_0x20a546['model'],qs[_0x7eb7('0x3e')](_0x2bb93b[_0x7eb7('0x39')][_0x7eb7('0x3e')]));_0x4217db['attributes']=_0x4217db['attributes']['length']?_0x4217db['attributes']:_0x20a546[_0x7eb7('0x38')];if(_0x2bb93b['query'][_0x7eb7('0x49')]){_0x4217db[_0x7eb7('0x4e')]=[{'all':!![]}];}_0x4217db=_[_0x7eb7('0x48')]({},_0x4217db,_0x2bb93b['options']);return db[_0x7eb7('0x36')]['find'](_0x4217db)[_0x7eb7('0x2f')](handleEntityNotFound(_0x2694a3,null))[_0x7eb7('0x2f')](function(_0x316dc4){if(_0x316dc4){var _0x3ba1dc=_0x316dc4[_0x7eb7('0x51')]({'plain':!![]});_0x3ba1dc=qs[_0x7eb7('0x52')](_0x3ba1dc,['id',_0x7eb7('0x53'),_0x7eb7('0x54')]);_0x2bb93b[_0x7eb7('0x55')]=_['omit'](_0x2bb93b[_0x7eb7('0x55')],['id',_0x7eb7('0x53'),_0x7eb7('0x54')]);return db[_0x7eb7('0x36')][_0x7eb7('0x56')](_['merge'](_0x3ba1dc,_0x2bb93b['body']),{'include':_0x2bb93b[_0x7eb7('0x39')][_0x7eb7('0x49')]?[{'all':!![]}]:undefined})[_0x7eb7('0x2f')](function(_0x45480d){var _0x57b715=_0x2bb93b['user'][_0x7eb7('0x51')]({'plain':!![]});if(!_0x57b715)throw new Error(_0x7eb7('0x57'));if(_0x57b715['role']==='user'){var _0x518b11=_0x45480d[_0x7eb7('0x51')]({'plain':!![]});var _0x102f99=_0x7eb7('0x31');return db[_0x7eb7('0x58')][_0x7eb7('0x50')]({'where':{'name':_0x102f99,'userProfileId':_0x57b715['userProfileId']},'raw':!![]})[_0x7eb7('0x2f')](function(_0x5f2aed){if(_0x5f2aed&&_0x5f2aed[_0x7eb7('0x59')]===0x0){return db[_0x7eb7('0x32')][_0x7eb7('0x56')]({'name':_0x518b11[_0x7eb7('0x5a')],'resourceId':_0x518b11['id'],'type':_0x5f2aed[_0x7eb7('0x5a')],'sectionId':_0x5f2aed['id']},{})[_0x7eb7('0x2f')](function(){return _0x45480d;});}else{return _0x45480d;}})[_0x7eb7('0x23')](function(_0x47e371){logger[_0x7eb7('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47e371);throw _0x47e371;});}return _0x45480d;});}})['then'](respondWithResult(_0x2694a3,0xc9))[_0x7eb7('0x23')](handleError(_0x2694a3,null));};exports[_0x7eb7('0x56')]=function(_0x3e94a4,_0x2db153,_0x3acf38){var _0x3181ab;return db[_0x7eb7('0x36')][_0x7eb7('0x56')](_0x3e94a4[_0x7eb7('0x55')],{'raw':!![]})[_0x7eb7('0x2f')](function(_0x4f6ee6){_0x3181ab=_0x4f6ee6;return db[_0x7eb7('0x36')][_0x7eb7('0x4a')]({'raw':!![]});})[_0x7eb7('0x2f')](function(_0xdab78b){var _0x48de40=fs['readFileSync'](path[_0x7eb7('0x5b')](config[_0x7eb7('0x5c')],_0x7eb7('0x5d')),_0x7eb7('0x5e'));var _0x7ed33d=fs[_0x7eb7('0x5f')](path[_0x7eb7('0x5b')](config['root'],_0x7eb7('0x60')),_0x7eb7('0x5e'));var _0x310fe5=ejs[_0x7eb7('0x61')](_0x48de40,{'trunks':_0xdab78b||[]});fs[_0x7eb7('0x62')]('/etc/asterisk/sip_xcally_trunks.conf',_0x310fe5);if(_0x3181ab[_0x7eb7('0x63')]){var _0x325268=ejs[_0x7eb7('0x61')](_0x7ed33d,{'trunks':_0xdab78b||[]});fs['writeFileSync'](_0x7eb7('0x64'),_0x325268);}})[_0x7eb7('0x2f')](function(){return respondWithRpcPromise(_0x7eb7('0x65'),'create',{'module':'chan_sip.so'});})[_0x7eb7('0x2f')](function(){var _0x4fc035=_0x3e94a4[_0x7eb7('0x66')][_0x7eb7('0x51')]({'plain':!![]});if(!_0x4fc035)throw new Error(_0x7eb7('0x57'));if(_0x4fc035[_0x7eb7('0x67')]==='user'){var _0x11ff92=_0x3181ab['get']({'plain':!![]});return db[_0x7eb7('0x58')][_0x7eb7('0x50')]({'where':{'name':_0x7eb7('0x31'),'userProfileId':_0x4fc035['userProfileId']},'raw':!![]})[_0x7eb7('0x2f')](function(_0x3b0526){if(_0x3b0526&&_0x3b0526[_0x7eb7('0x59')]===0x0){return db[_0x7eb7('0x32')][_0x7eb7('0x56')]({'name':_0x11ff92['name'],'resourceId':_0x11ff92['id'],'type':_0x3b0526[_0x7eb7('0x5a')],'sectionId':_0x3b0526['id']},{})[_0x7eb7('0x2f')](function(){return _0x3181ab;});}else{return _0x3181ab;}})['catch'](function(_0x133d9d){logger[_0x7eb7('0x21')](_0x7eb7('0x68'),_0x133d9d);throw _0x133d9d;});}return _0x3181ab;})[_0x7eb7('0x2f')](respondWithResult(_0x2db153,0xc9))['catch'](handleError(_0x2db153,null));};exports[_0x7eb7('0x2e')]=function(_0x130944,_0x2b41a0,_0x4452d4){var _0x48f752;return db[_0x7eb7('0x36')]['find']({'where':{'id':_0x130944[_0x7eb7('0x4c')]['id']}})[_0x7eb7('0x2f')](handleEntityNotFound(_0x2b41a0,null))[_0x7eb7('0x2f')](saveUpdates(_0x130944[_0x7eb7('0x55')],null))[_0x7eb7('0x2f')](function(_0x4c7d23){if(_0x4c7d23){_0x48f752=_0x4c7d23;return db['Trunk'][_0x7eb7('0x4a')]({'raw':!![]});}})['then'](function(_0x3ca4da){if(_0x3ca4da){var _0x604754=fs[_0x7eb7('0x5f')](path['join'](config[_0x7eb7('0x5c')],_0x7eb7('0x5d')),'utf8');var _0x435d0a=fs[_0x7eb7('0x5f')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0x7eb7('0x5e'));var _0x798961=ejs[_0x7eb7('0x61')](_0x604754,{'trunks':_0x3ca4da||[]});fs[_0x7eb7('0x62')](_0x7eb7('0x69'),_0x798961);var _0x4405c1=ejs[_0x7eb7('0x61')](_0x435d0a,{'trunks':_0x3ca4da||[]});fs[_0x7eb7('0x62')]('/etc/asterisk/sip_xcally_registers.conf',_0x4405c1);return respondWithRpcPromise(_0x7eb7('0x65'),_0x7eb7('0x2e'),{'module':_0x7eb7('0x6a')});}return null;})[_0x7eb7('0x2f')](function(_0x57ab0b){if(_0x57ab0b){return _0x48f752;}})[_0x7eb7('0x2f')](respondWithResult(_0x2b41a0,null))[_0x7eb7('0x23')](handleError(_0x2b41a0,null));};exports['destroy']=function(_0xe97b0e,_0x45082a,_0x5df09e){var _0x1010a1;return db[_0x7eb7('0x36')][_0x7eb7('0x50')]({'where':{'id':_0xe97b0e[_0x7eb7('0x4c')]['id']}})[_0x7eb7('0x2f')](handleEntityNotFound(_0x45082a,null))[_0x7eb7('0x2f')](removeEntity(_0x45082a,null))['then'](function(){return db['Trunk'][_0x7eb7('0x4a')]({'raw':!![]});})[_0x7eb7('0x2f')](function(_0x14fa0){var _0x407bb4=fs[_0x7eb7('0x5f')](path[_0x7eb7('0x5b')](config[_0x7eb7('0x5c')],_0x7eb7('0x5d')),_0x7eb7('0x5e'));var _0xd4ff25=fs[_0x7eb7('0x5f')](path['join'](config[_0x7eb7('0x5c')],_0x7eb7('0x60')),_0x7eb7('0x5e'));var _0x55ea66=ejs[_0x7eb7('0x61')](_0x407bb4,{'trunks':_0x14fa0});var _0x3c3f4c=ejs['render'](_0xd4ff25,{'trunks':_0x14fa0});fs[_0x7eb7('0x62')](_0x7eb7('0x69'),_0x55ea66);fs[_0x7eb7('0x62')](_0x7eb7('0x64'),_0x3c3f4c);return respondWithRpcPromise(_0x7eb7('0x65'),_0x7eb7('0x30'),{'module':_0x7eb7('0x6a')});})[_0x7eb7('0x23')](handleError(_0x45082a,null));};