072fa607fa416845e5f26f9804699ff69f2a8ef8
[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 _0x274d=['autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','utf8','join','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','Reload','chan_sip.so','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','/etc/asterisk/sip_xcally_registers.conf','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','jayson/promise','client','http','test','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','destroy','get','Trunks','UserProfileResource','stack','name','send','index','Trunk','rawAttributes','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','key','VIRTUAL','field','includeAll','include','rows','show','params','options','find','clone','omit','createdAt','body','updatedAt','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x583771,_0x3778c5){var _0x2d7251=function(_0x2052d4){while(--_0x2052d4){_0x583771['push'](_0x583771['shift']());}};_0x2d7251(++_0x3778c5);}(_0x274d,0x1e4));var _0xd274=function(_0x1d46f7,_0x2dc752){_0x1d46f7=_0x1d46f7-0x0;var _0x51118f=_0x274d[_0x1d46f7];return _0x51118f;};'use strict';var pdf=require(_0xd274('0x0'));var emlformat=require(_0xd274('0x1'));var rimraf=require(_0xd274('0x2'));var zipdir=require(_0xd274('0x3'));var jsonpatch=require(_0xd274('0x4'));var rp=require(_0xd274('0x5'));var moment=require(_0xd274('0x6'));var BPromise=require(_0xd274('0x7'));var Mustache=require(_0xd274('0x8'));var util=require(_0xd274('0x9'));var path=require(_0xd274('0xa'));var sox=require('sox');var csv=require(_0xd274('0xb'));var ejs=require(_0xd274('0xc'));var fs=require('fs');var _=require('lodash');var squel=require(_0xd274('0xd'));var crypto=require(_0xd274('0xe'));var jsforce=require(_0xd274('0xf'));var deskjs=require(_0xd274('0x10'));var toCsv=require(_0xd274('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd274('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xd274('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd274('0x13'))('api');var utils=require(_0xd274('0x14'));var config=require('../../config/environment');var db=require(_0xd274('0x15'))['db'];var jayson=require(_0xd274('0x16'));var client=jayson[_0xd274('0x17')][_0xd274('0x18')]({'port':0x232a});function checkPasswordPattern(_0x157c25,_0x146812,_0x492f7f){if(_0x492f7f){var _0x55316e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x55316e[_0xd274('0x19')](_0x146812)){return _0x157c25;}else{throw new Error(_0xd274('0x1a'));}}else{return _0x157c25;}}function respondWithRpcPromise(_0x5a39c1,_0x322e1c,_0xb1ac20,_0x41dd81){return new BPromise(function(_0x5a6d5e,_0xe64505){var _0x3e9eac=_0x41dd81||client;return _0x3e9eac[_0xd274('0x1b')](_0x5a39c1,_0xb1ac20)[_0xd274('0x1c')](function(_0x2ca6d4){logger[_0xd274('0x1d')](_0xd274('0x1e'),_0x322e1c,'request\x20sent');logger[_0xd274('0x1f')](_0xd274('0x20'),_0x322e1c,_0xd274('0x21'),JSON[_0xd274('0x22')](_0x2ca6d4));if(_0x2ca6d4['error']){if(_0x2ca6d4[_0xd274('0x23')][_0xd274('0x24')]===0x1f4){logger[_0xd274('0x23')](_0xd274('0x1e'),_0x322e1c,_0x2ca6d4['error'][_0xd274('0x25')]);return _0xe64505(_0x2ca6d4[_0xd274('0x23')]['message']);}logger[_0xd274('0x23')](_0xd274('0x1e'),_0x322e1c,_0x2ca6d4[_0xd274('0x23')][_0xd274('0x25')]);return _0x5a6d5e(_0x2ca6d4['error'][_0xd274('0x25')]);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x322e1c,'request\x20sent');_0x5a6d5e(_0x2ca6d4[_0xd274('0x26')]['message']);}})[_0xd274('0x27')](function(_0x3de6c5){logger[_0xd274('0x23')](_0xd274('0x1e'),_0x322e1c,_0x3de6c5);_0xe64505(_0x3de6c5);});});}function respondWithStatusCode(_0x5b6fd6,_0x3697ea){_0x3697ea=_0x3697ea||0xcc;return function(_0x667bbb){if(_0x667bbb){return _0x5b6fd6[_0xd274('0x28')](_0x3697ea);}return _0x5b6fd6[_0xd274('0x29')](_0x3697ea)[_0xd274('0x2a')]();};}function respondWithResult(_0x36fb36,_0x2467c8){_0x2467c8=_0x2467c8||0xc8;return function(_0x41cf20){if(_0x41cf20){return _0x36fb36[_0xd274('0x29')](_0x2467c8)['json'](_0x41cf20);}};}function respondWithFilteredResult(_0x430201,_0x91506){return function(_0xf6e73f){if(_0xf6e73f){var _0x10303a=_0xf6e73f[_0xd274('0x2b')],_0x341231=_0x91506[_0xd274('0x2c')],_0x5e21e9=_0x91506['offset']+_0x91506[_0xd274('0x2d')],_0x2a5e67;if(_0x5e21e9>=_0x10303a){_0x5e21e9=_0x10303a;_0x2a5e67=0xc8;}else{_0x2a5e67=0xce;}_0x430201[_0xd274('0x29')](_0x2a5e67);return _0x430201[_0xd274('0x2e')](_0xd274('0x2f'),_0x341231+'-'+_0x5e21e9+'/'+_0x10303a)[_0xd274('0x30')](_0xf6e73f);}return null;};}function patchUpdates(_0x4ebfcd){return function(_0xf9bc93){try{jsonpatch[_0xd274('0x31')](_0xf9bc93,_0x4ebfcd,!![]);}catch(_0x95e109){return BPromise[_0xd274('0x32')](_0x95e109);}return _0xf9bc93[_0xd274('0x33')]();};}function saveUpdates(_0x3f741f,_0x19bbd3){return function(_0x4cb96b){if(_0x4cb96b){return _0x4cb96b[_0xd274('0x34')](_0x3f741f)[_0xd274('0x1c')](function(_0x2957a1){return _0x2957a1;});}return null;};}function removeEntity(_0x2acdff,_0x157036){return function(_0x48ea02){if(_0x48ea02){return _0x48ea02[_0xd274('0x35')]()[_0xd274('0x1c')](function(){var _0xd105e1=_0x48ea02[_0xd274('0x36')]({'plain':!![]});var _0x54b387=_0xd274('0x37');return db[_0xd274('0x38')][_0xd274('0x35')]({'where':{'type':_0x54b387,'resourceId':_0xd105e1['id']}})['then'](function(){return _0x48ea02;});})[_0xd274('0x1c')](function(){_0x2acdff[_0xd274('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28bf9a,_0xa9a6eb){return function(_0x34247e){if(!_0x34247e){_0x28bf9a[_0xd274('0x28')](0x194);}return _0x34247e;};}function handleError(_0x35a6ea,_0xa1a1b1){_0xa1a1b1=_0xa1a1b1||0x1f4;return function(_0x5ec484){logger['error'](_0x5ec484[_0xd274('0x39')]);if(_0x5ec484[_0xd274('0x3a')]){delete _0x5ec484[_0xd274('0x3a')];}_0x35a6ea[_0xd274('0x29')](_0xa1a1b1)[_0xd274('0x3b')](_0x5ec484);};}exports[_0xd274('0x3c')]=function(_0x4cbeb4,_0x5f5cd0){var _0x1fbce2={},_0x4c1ca0={},_0x448891={'count':0x0,'rows':[]};var _0xb746a=db[_0xd274('0x3d')][_0xd274('0x3e')];_0x4c1ca0[_0xd274('0x3f')]=_[_0xd274('0x40')](_0xb746a);_0x4c1ca0[_0xd274('0x41')]=_[_0xd274('0x40')](_0x4cbeb4[_0xd274('0x41')]);_0x4c1ca0['filters']=_[_0xd274('0x42')](_0x4c1ca0['model'],_0x4c1ca0[_0xd274('0x41')]);_0x1fbce2[_0xd274('0x43')]=_['intersection'](_0x4c1ca0[_0xd274('0x3f')],qs[_0xd274('0x44')](_0x4cbeb4[_0xd274('0x41')][_0xd274('0x44')]));_0x1fbce2[_0xd274('0x43')]=_0x1fbce2[_0xd274('0x43')][_0xd274('0x45')]?_0x1fbce2[_0xd274('0x43')]:_0x4c1ca0[_0xd274('0x3f')];if(!_0x4cbeb4[_0xd274('0x41')][_0xd274('0x46')](_0xd274('0x47'))){_0x1fbce2['limit']=qs[_0xd274('0x2d')](_0x4cbeb4[_0xd274('0x41')][_0xd274('0x2d')]);_0x1fbce2[_0xd274('0x2c')]=qs[_0xd274('0x2c')](_0x4cbeb4['query'][_0xd274('0x2c')]);}_0x1fbce2[_0xd274('0x48')]=qs['sort'](_0x4cbeb4[_0xd274('0x41')][_0xd274('0x49')]);_0x1fbce2[_0xd274('0x4a')]=qs[_0xd274('0x4b')](_[_0xd274('0x4c')](_0x4cbeb4[_0xd274('0x41')],_0x4c1ca0['filters']));if(_0x4cbeb4[_0xd274('0x41')][_0xd274('0x4d')]){_0x1fbce2[_0xd274('0x4a')]=_[_0xd274('0x4e')](_0x1fbce2['where'],{'$or':_['map'](_0xb746a,function(_0x4759a2){if(_0x4759a2[_0xd274('0x4f')][_0xd274('0x50')]!==_0xd274('0x51')){var _0x2d9a2f={};_0x2d9a2f[_0x4759a2[_0xd274('0x52')]]={'$like':'%'+_0x4cbeb4['query'][_0xd274('0x4d')]+'%'};return _0x2d9a2f;}})});}_0x1fbce2=_[_0xd274('0x4e')]({},_0x1fbce2,_0x4cbeb4['options']);var _0x49da0a={'where':_0x1fbce2[_0xd274('0x4a')]};return db[_0xd274('0x3d')][_0xd274('0x2b')](_0x49da0a)[_0xd274('0x1c')](function(_0x66a4d1){_0x448891[_0xd274('0x2b')]=_0x66a4d1;if(_0x4cbeb4[_0xd274('0x41')][_0xd274('0x53')]){_0x1fbce2[_0xd274('0x54')]=[{'all':!![]}];}return db[_0xd274('0x3d')]['findAll'](_0x1fbce2);})['then'](function(_0x157f20){_0x448891[_0xd274('0x55')]=_0x157f20;return _0x448891;})[_0xd274('0x1c')](respondWithFilteredResult(_0x5f5cd0,_0x1fbce2))[_0xd274('0x27')](handleError(_0x5f5cd0,null));};exports[_0xd274('0x56')]=function(_0x5086ff,_0xad5ced){var _0x40681e={'raw':![],'where':{'id':_0x5086ff[_0xd274('0x57')]['id']}},_0x5d5764={};_0x5d5764[_0xd274('0x3f')]=_[_0xd274('0x40')](db[_0xd274('0x3d')]['rawAttributes']);_0x5d5764[_0xd274('0x41')]=_[_0xd274('0x40')](_0x5086ff[_0xd274('0x41')]);_0x5d5764[_0xd274('0x4b')]=_['intersection'](_0x5d5764[_0xd274('0x3f')],_0x5d5764[_0xd274('0x41')]);_0x40681e[_0xd274('0x43')]=_[_0xd274('0x42')](_0x5d5764['model'],qs['fields'](_0x5086ff['query'][_0xd274('0x44')]));_0x40681e[_0xd274('0x43')]=_0x40681e[_0xd274('0x43')][_0xd274('0x45')]?_0x40681e[_0xd274('0x43')]:_0x5d5764[_0xd274('0x3f')];if(_0x5086ff[_0xd274('0x41')][_0xd274('0x53')]){_0x40681e['include']=[{'all':!![]}];}_0x40681e=_['merge']({},_0x40681e,_0x5086ff[_0xd274('0x58')]);return db['Trunk'][_0xd274('0x59')](_0x40681e)['then'](handleEntityNotFound(_0xad5ced,null))[_0xd274('0x1c')](respondWithResult(_0xad5ced,null))[_0xd274('0x27')](handleError(_0xad5ced,null));};exports[_0xd274('0x5a')]=function(_0x2ab3cb,_0x58f9cd){var _0x2323bd={'raw':![],'where':{'id':_0x2ab3cb[_0xd274('0x57')]['id']}},_0x47d4b6={};_0x47d4b6[_0xd274('0x3f')]=_[_0xd274('0x40')](db[_0xd274('0x3d')][_0xd274('0x3e')]);_0x2323bd[_0xd274('0x43')]=_[_0xd274('0x42')](_0x47d4b6[_0xd274('0x3f')],qs[_0xd274('0x44')](_0x2ab3cb['query'][_0xd274('0x44')]));_0x2323bd[_0xd274('0x43')]=_0x2323bd[_0xd274('0x43')]['length']?_0x2323bd[_0xd274('0x43')]:_0x47d4b6[_0xd274('0x3f')];if(_0x2ab3cb['query'][_0xd274('0x53')]){_0x2323bd[_0xd274('0x54')]=[{'all':!![]}];}_0x2323bd=_['merge']({},_0x2323bd,_0x2ab3cb['options']);return db[_0xd274('0x3d')][_0xd274('0x59')](_0x2323bd)[_0xd274('0x1c')](handleEntityNotFound(_0x58f9cd,null))[_0xd274('0x1c')](function(_0x1f1f56){if(_0x1f1f56){var _0xd75e53=_0x1f1f56[_0xd274('0x36')]({'plain':!![]});_0xd75e53=qs[_0xd274('0x5b')](_0xd75e53,['id',_0xd274('0x5c'),'updatedAt']);_0x2ab3cb[_0xd274('0x5d')]=_[_0xd274('0x5b')](_0x2ab3cb[_0xd274('0x5d')],['id',_0xd274('0x5c'),_0xd274('0x5e')]);return db[_0xd274('0x3d')][_0xd274('0x5f')](_['merge'](_0xd75e53,_0x2ab3cb[_0xd274('0x5d')]),{'include':_0x2ab3cb['query']['includeAll']?[{'all':!![]}]:undefined})[_0xd274('0x1c')](function(_0x313925){var _0x425210=_0x2ab3cb[_0xd274('0x60')][_0xd274('0x36')]({'plain':!![]});if(!_0x425210)throw new Error(_0xd274('0x61'));if(_0x425210[_0xd274('0x62')]===_0xd274('0x60')){var _0x216d68=_0x313925[_0xd274('0x36')]({'plain':!![]});var _0x382387='Trunks';return db[_0xd274('0x63')][_0xd274('0x59')]({'where':{'name':_0x382387,'userProfileId':_0x425210[_0xd274('0x64')]},'raw':!![]})[_0xd274('0x1c')](function(_0x4c2c48){if(_0x4c2c48&&_0x4c2c48[_0xd274('0x65')]===0x0){return db[_0xd274('0x38')][_0xd274('0x5f')]({'name':_0x216d68['name'],'resourceId':_0x216d68['id'],'type':_0x4c2c48[_0xd274('0x3a')],'sectionId':_0x4c2c48['id']},{})['then'](function(){return _0x313925;});}else{return _0x313925;}})[_0xd274('0x27')](function(_0x547694){logger[_0xd274('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x547694);throw _0x547694;});}return _0x313925;});}})[_0xd274('0x1c')](respondWithResult(_0x58f9cd,0xc9))[_0xd274('0x27')](handleError(_0x58f9cd,null));};exports['create']=function(_0xf1c756,_0x11ba6a,_0x52dcf9){var _0x590135;return db['Trunk'][_0xd274('0x5f')](_0xf1c756[_0xd274('0x5d')],{'raw':!![]})[_0xd274('0x1c')](function(_0x23426b){_0x590135=_0x23426b;return db[_0xd274('0x3d')][_0xd274('0x66')]({'raw':!![]});})['then'](function(_0x93f8ad){var _0x3df0b3=fs[_0xd274('0x67')](path['join'](config[_0xd274('0x68')],_0xd274('0x69')),_0xd274('0x6a'));var _0x2da0f8=fs[_0xd274('0x67')](path[_0xd274('0x6b')](config['root'],_0xd274('0x6c')),_0xd274('0x6a'));var _0x15dd4a=ejs[_0xd274('0x6d')](_0x3df0b3,{'trunks':_0x93f8ad||[]});fs['writeFileSync'](_0xd274('0x6e'),_0x15dd4a);if(_0x590135[_0xd274('0x6f')]){var _0x1ad8f2=ejs[_0xd274('0x6d')](_0x2da0f8,{'trunks':_0x93f8ad||[]});fs[_0xd274('0x70')]('/etc/asterisk/sip_xcally_registers.conf',_0x1ad8f2);}})[_0xd274('0x1c')](function(){return respondWithRpcPromise(_0xd274('0x71'),'create',{'module':_0xd274('0x72')});})[_0xd274('0x1c')](function(){var _0x35a413=_0xf1c756['user'][_0xd274('0x36')]({'plain':!![]});if(!_0x35a413)throw new Error(_0xd274('0x61'));if(_0x35a413[_0xd274('0x62')]===_0xd274('0x60')){var _0x1d0e49=_0x590135['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xd274('0x37'),'userProfileId':_0x35a413[_0xd274('0x64')]},'raw':!![]})['then'](function(_0xdce3d1){if(_0xdce3d1&&_0xdce3d1[_0xd274('0x65')]===0x0){return db[_0xd274('0x38')][_0xd274('0x5f')]({'name':_0x1d0e49[_0xd274('0x3a')],'resourceId':_0x1d0e49['id'],'type':_0xdce3d1[_0xd274('0x3a')],'sectionId':_0xdce3d1['id']},{})['then'](function(){return _0x590135;});}else{return _0x590135;}})[_0xd274('0x27')](function(_0x5d7e33){logger[_0xd274('0x23')](_0xd274('0x73'),_0x5d7e33);throw _0x5d7e33;});}return _0x590135;})[_0xd274('0x1c')](respondWithResult(_0x11ba6a,0xc9))[_0xd274('0x27')](handleError(_0x11ba6a,null));};exports[_0xd274('0x34')]=function(_0x2e4148,_0x13a628,_0x3c513d){var _0x1cd540;return db[_0xd274('0x3d')][_0xd274('0x59')]({'where':{'id':_0x2e4148['params']['id']}})[_0xd274('0x1c')](handleEntityNotFound(_0x13a628,null))[_0xd274('0x1c')](saveUpdates(_0x2e4148[_0xd274('0x5d')],null))['then'](function(_0x15a47d){if(_0x15a47d){_0x1cd540=_0x15a47d;return db['Trunk'][_0xd274('0x66')]({'raw':!![]});}})[_0xd274('0x1c')](function(_0x5866dd){if(_0x5866dd){var _0x3c30e4=fs[_0xd274('0x67')](path[_0xd274('0x6b')](config['root'],_0xd274('0x69')),_0xd274('0x6a'));var _0x40fef3=fs[_0xd274('0x67')](path[_0xd274('0x6b')](config[_0xd274('0x68')],'server/files/templates/registry.ejs'),'utf8');var _0x16f81b=ejs[_0xd274('0x6d')](_0x3c30e4,{'trunks':_0x5866dd||[]});fs[_0xd274('0x70')](_0xd274('0x6e'),_0x16f81b);var _0x3fa6dd=ejs[_0xd274('0x6d')](_0x40fef3,{'trunks':_0x5866dd||[]});fs['writeFileSync'](_0xd274('0x74'),_0x3fa6dd);return respondWithRpcPromise(_0xd274('0x71'),_0xd274('0x34'),{'module':_0xd274('0x72')});}return null;})[_0xd274('0x1c')](function(_0x5ec3f1){if(_0x5ec3f1){return _0x1cd540;}})['then'](respondWithResult(_0x13a628,null))[_0xd274('0x27')](handleError(_0x13a628,null));};exports[_0xd274('0x35')]=function(_0xde7baf,_0x34e4d8,_0x29b8cc){var _0x167a4d;return db['Trunk'][_0xd274('0x59')]({'where':{'id':_0xde7baf[_0xd274('0x57')]['id']}})['then'](handleEntityNotFound(_0x34e4d8,null))[_0xd274('0x1c')](removeEntity(_0x34e4d8,null))[_0xd274('0x1c')](function(){return db['Trunk'][_0xd274('0x66')]({'raw':!![]});})[_0xd274('0x1c')](function(_0x29fe8e){var _0x185709=fs[_0xd274('0x67')](path['join'](config[_0xd274('0x68')],'server/files/templates/trunk.ejs'),'utf8');var _0x55fc52=fs[_0xd274('0x67')](path['join'](config['root'],_0xd274('0x6c')),'utf8');var _0x262b87=ejs[_0xd274('0x6d')](_0x185709,{'trunks':_0x29fe8e});var _0x1ffeb6=ejs[_0xd274('0x6d')](_0x55fc52,{'trunks':_0x29fe8e});fs[_0xd274('0x70')](_0xd274('0x6e'),_0x262b87);fs[_0xd274('0x70')](_0xd274('0x74'),_0x1ffeb6);return respondWithRpcPromise(_0xd274('0x71'),'destroy',{'module':_0xd274('0x72')});})['catch'](handleError(_0x34e4d8,null));};