Built motion from commit ab870f9e.|2.5.44
[motion2.git] / server / api / voiceContext / voiceContext.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 _0x673b=['update','Contexts','destroy','name','send','index','VoiceContext','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','includeAll','create','body','root','server/files/templates/context.ejs','render','writeFileSync','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','readFileSync','join','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject'];(function(_0x33bd52,_0x9304d2){var _0x3e31e2=function(_0x144494){while(--_0x144494){_0x33bd52['push'](_0x33bd52['shift']());}};_0x3e31e2(++_0x9304d2);}(_0x673b,0x1db));var _0xb673=function(_0x7d653b,_0x3f3341){_0x7d653b=_0x7d653b-0x0;var _0x3a30e7=_0x673b[_0x7d653b];return _0x3a30e7;};'use strict';var emlformat=require(_0xb673('0x0'));var rimraf=require(_0xb673('0x1'));var zipdir=require(_0xb673('0x2'));var jsonpatch=require(_0xb673('0x3'));var rp=require('request-promise');var moment=require(_0xb673('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb673('0x5'));var util=require('util');var path=require(_0xb673('0x6'));var sox=require(_0xb673('0x7'));var csv=require(_0xb673('0x8'));var ejs=require(_0xb673('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb673('0xa'));var squel=require(_0xb673('0xb'));var crypto=require(_0xb673('0xc'));var jsforce=require(_0xb673('0xd'));var deskjs=require(_0xb673('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb673('0xf'));var Redis=require(_0xb673('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb673('0x11'));var as=require(_0xb673('0x12'));var hardwareService=require(_0xb673('0x13'));var logger=require('../../config/logger')(_0xb673('0x14'));var utils=require(_0xb673('0x15'));var config=require(_0xb673('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb673('0x17'))['db'];var jayson=require(_0xb673('0x18'));var client=jayson[_0xb673('0x19')][_0xb673('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x56930c,_0x169722,_0x146547,_0x449b77){return new BPromise(function(_0x246643,_0x47c29e){var _0x43b759=_0x449b77||client;return _0x43b759[_0xb673('0x1b')](_0x56930c,_0x146547)[_0xb673('0x1c')](function(_0x4214f2){logger[_0xb673('0x1d')](_0xb673('0x1e'),_0x169722,_0xb673('0x1f'));logger[_0xb673('0x20')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x169722,_0xb673('0x1f'),JSON[_0xb673('0x21')](_0x4214f2));if(_0x4214f2[_0xb673('0x22')]){if(_0x4214f2['error'][_0xb673('0x23')]===0x1f4){logger[_0xb673('0x22')](_0xb673('0x1e'),_0x169722,_0x4214f2['error']['message']);return _0x47c29e(_0x4214f2[_0xb673('0x22')]['message']);}logger[_0xb673('0x22')]('VoiceContext,\x20%s,\x20%s',_0x169722,_0x4214f2[_0xb673('0x22')][_0xb673('0x24')]);return _0x246643(_0x4214f2['error'][_0xb673('0x24')]);}else{logger[_0xb673('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x169722,_0xb673('0x1f'));_0x246643(_0x4214f2['result']['message']);}})[_0xb673('0x25')](function(_0x215be6){logger[_0xb673('0x22')]('VoiceContext,\x20%s,\x20%s',_0x169722,_0x215be6);_0x47c29e(_0x215be6);});});}function respondWithStatusCode(_0x260ca9,_0x57dc79){_0x57dc79=_0x57dc79||0xcc;return function(_0x52f035){if(_0x52f035){return _0x260ca9[_0xb673('0x26')](_0x57dc79);}return _0x260ca9[_0xb673('0x27')](_0x57dc79)[_0xb673('0x28')]();};}function respondWithResult(_0x503a57,_0x39030b){_0x39030b=_0x39030b||0xc8;return function(_0x3597e7){if(_0x3597e7){return _0x503a57[_0xb673('0x27')](_0x39030b)[_0xb673('0x29')](_0x3597e7);}};}function respondWithFilteredResult(_0x56e739,_0xaf20b1){return function(_0x2199fb){if(_0x2199fb){var _0x21d24a=typeof _0xaf20b1['offset']===_0xb673('0x2a')&&typeof _0xaf20b1['limit']==='undefined';var _0x27050a=_0x2199fb[_0xb673('0x2b')];var _0xbc01e7=_0x21d24a?0x0:_0xaf20b1[_0xb673('0x2c')];var _0x4f9126=_0x21d24a?_0x2199fb[_0xb673('0x2b')]:_0xaf20b1[_0xb673('0x2c')]+_0xaf20b1[_0xb673('0x2d')];var _0x2bebfc;if(_0x4f9126>=_0x27050a){_0x4f9126=_0x27050a;_0x2bebfc=0xc8;}else{_0x2bebfc=0xce;}_0x56e739[_0xb673('0x27')](_0x2bebfc);return _0x56e739[_0xb673('0x2e')](_0xb673('0x2f'),_0xbc01e7+'-'+_0x4f9126+'/'+_0x27050a)[_0xb673('0x29')](_0x2199fb);}return null;};}function patchUpdates(_0x38ae25){return function(_0x3b7fe2){try{jsonpatch[_0xb673('0x30')](_0x3b7fe2,_0x38ae25,!![]);}catch(_0x4bddce){return BPromise[_0xb673('0x31')](_0x4bddce);}return _0x3b7fe2['save']();};}function saveUpdates(_0x11e800,_0x73c18d){return function(_0x29e728){if(_0x29e728){return _0x29e728[_0xb673('0x32')](_0x11e800)[_0xb673('0x1c')](function(_0x2fb65b){return _0x2fb65b;});}return null;};}function removeEntity(_0x3fa742,_0x3f5fc5){return function(_0x559ca2){if(_0x559ca2){return _0x559ca2['destroy']()[_0xb673('0x1c')](function(){var _0x5ec190=_0x559ca2['get']({'plain':!![]});var _0x534df9=_0xb673('0x33');return db['UserProfileResource'][_0xb673('0x34')]({'where':{'type':_0x534df9,'resourceId':_0x5ec190['id']}})[_0xb673('0x1c')](function(){return _0x559ca2;});})[_0xb673('0x1c')](function(){_0x3fa742[_0xb673('0x27')](0xcc)[_0xb673('0x28')]();});}};}function handleEntityNotFound(_0x46eb9d,_0x2c9439){return function(_0x3dad64){if(!_0x3dad64){_0x46eb9d[_0xb673('0x26')](0x194);}return _0x3dad64;};}function handleError(_0x5f137f,_0x3e8aec){_0x3e8aec=_0x3e8aec||0x1f4;return function(_0x1de0a4){logger['error'](_0x1de0a4['stack']);if(_0x1de0a4[_0xb673('0x35')]){delete _0x1de0a4[_0xb673('0x35')];}_0x5f137f[_0xb673('0x27')](_0x3e8aec)[_0xb673('0x36')](_0x1de0a4);};}exports[_0xb673('0x37')]=function(_0x5df446,_0x4bc370){var _0x74749={},_0x505ea8={},_0x5d68a4={'count':0x0,'rows':[]};var _0x1b4af0=_['map'](db[_0xb673('0x38')][_0xb673('0x39')],function(_0x3ffbad){return{'name':_0x3ffbad['fieldName'],'type':_0x3ffbad[_0xb673('0x3a')][_0xb673('0x3b')]};});_0x505ea8[_0xb673('0x3c')]=_[_0xb673('0x3d')](_0x1b4af0,'name');_0x505ea8[_0xb673('0x3e')]=_[_0xb673('0x3f')](_0x5df446[_0xb673('0x3e')]);_0x505ea8[_0xb673('0x40')]=_['intersection'](_0x505ea8[_0xb673('0x3c')],_0x505ea8[_0xb673('0x3e')]);_0x74749[_0xb673('0x41')]=_[_0xb673('0x42')](_0x505ea8[_0xb673('0x3c')],qs[_0xb673('0x43')](_0x5df446[_0xb673('0x3e')][_0xb673('0x43')]));_0x74749[_0xb673('0x41')]=_0x74749[_0xb673('0x41')][_0xb673('0x44')]?_0x74749[_0xb673('0x41')]:_0x505ea8[_0xb673('0x3c')];if(!_0x5df446[_0xb673('0x3e')]['hasOwnProperty'](_0xb673('0x45'))){_0x74749[_0xb673('0x2d')]=qs[_0xb673('0x2d')](_0x5df446['query'][_0xb673('0x2d')]);_0x74749[_0xb673('0x2c')]=qs[_0xb673('0x2c')](_0x5df446[_0xb673('0x3e')]['offset']);}_0x74749[_0xb673('0x46')]=qs[_0xb673('0x47')](_0x5df446[_0xb673('0x3e')]['sort']);_0x74749[_0xb673('0x48')]=qs[_0xb673('0x40')](_[_0xb673('0x49')](_0x5df446[_0xb673('0x3e')],_0x505ea8[_0xb673('0x40')]),_0x1b4af0);if(_0x5df446[_0xb673('0x3e')][_0xb673('0x4a')]){_0x74749['where']=_['merge'](_0x74749['where'],{'$or':_['map'](_0x1b4af0,function(_0x2dc541){if(_0x2dc541['type']!==_0xb673('0x4b')){var _0x3c918d={};_0x3c918d[_0x2dc541[_0xb673('0x35')]]={'$like':'%'+_0x5df446[_0xb673('0x3e')][_0xb673('0x4a')]+'%'};return _0x3c918d;}})});}_0x74749=_[_0xb673('0x4c')]({},_0x74749,_0x5df446[_0xb673('0x4d')]);var _0x33180b={'where':_0x74749[_0xb673('0x48')]};return db[_0xb673('0x38')]['count'](_0x33180b)[_0xb673('0x1c')](function(_0x5b07bb){_0x5d68a4[_0xb673('0x2b')]=_0x5b07bb;if(_0x5df446[_0xb673('0x3e')]['includeAll']){_0x74749[_0xb673('0x4e')]=[{'all':!![]}];}return db[_0xb673('0x38')][_0xb673('0x4f')](_0x74749);})[_0xb673('0x1c')](function(_0x664500){_0x5d68a4[_0xb673('0x50')]=_0x664500;return _0x5d68a4;})[_0xb673('0x1c')](respondWithFilteredResult(_0x4bc370,_0x74749))[_0xb673('0x25')](handleError(_0x4bc370,null));};exports[_0xb673('0x51')]=function(_0x5cf289,_0x141bdb){var _0x20c0ff={'raw':![],'where':{'id':_0x5cf289[_0xb673('0x52')]['id']}},_0x5d08b2={};_0x5d08b2[_0xb673('0x3c')]=_[_0xb673('0x3f')](db[_0xb673('0x38')]['rawAttributes']);_0x5d08b2[_0xb673('0x3e')]=_[_0xb673('0x3f')](_0x5cf289[_0xb673('0x3e')]);_0x5d08b2['filters']=_[_0xb673('0x42')](_0x5d08b2[_0xb673('0x3c')],_0x5d08b2[_0xb673('0x3e')]);_0x20c0ff['attributes']=_[_0xb673('0x42')](_0x5d08b2['model'],qs[_0xb673('0x43')](_0x5cf289[_0xb673('0x3e')][_0xb673('0x43')]));_0x20c0ff[_0xb673('0x41')]=_0x20c0ff[_0xb673('0x41')][_0xb673('0x44')]?_0x20c0ff['attributes']:_0x5d08b2[_0xb673('0x3c')];if(_0x5cf289[_0xb673('0x3e')][_0xb673('0x53')]){_0x20c0ff[_0xb673('0x4e')]=[{'all':!![]}];}_0x20c0ff=_[_0xb673('0x4c')]({},_0x20c0ff,_0x5cf289[_0xb673('0x4d')]);return db[_0xb673('0x38')]['find'](_0x20c0ff)[_0xb673('0x1c')](handleEntityNotFound(_0x141bdb,null))[_0xb673('0x1c')](respondWithResult(_0x141bdb,null))[_0xb673('0x25')](handleError(_0x141bdb,null));};exports[_0xb673('0x54')]=function(_0x531ded,_0x2fe99f,_0x39be92){var _0x1a9699;return db[_0xb673('0x38')]['create'](_0x531ded[_0xb673('0x55')],{'raw':!![]})[_0xb673('0x1c')](function(_0x423f0b){_0x1a9699=_0x423f0b;return db[_0xb673('0x38')][_0xb673('0x4f')]({'raw':!![]});})[_0xb673('0x1c')](function(_0x34df87){var _0xdf461b=fs['readFileSync'](path['join'](config[_0xb673('0x56')],_0xb673('0x57')),'utf8');var _0x285b4d=ejs[_0xb673('0x58')](_0xdf461b,{'contexts':_0x34df87||[]});fs[_0xb673('0x59')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x285b4d);})[_0xb673('0x1c')](function(){return respondWithRpcPromise('Reload','create',{'module':_0xb673('0x5a')});})['then'](function(){var _0x588e1d=_0x531ded[_0xb673('0x5b')][_0xb673('0x5c')]({'plain':!![]});if(!_0x588e1d)throw new Error(_0xb673('0x5d'));if(_0x588e1d[_0xb673('0x5e')]===_0xb673('0x5b')){var _0x1f5fc9=_0x1a9699[_0xb673('0x5c')]({'plain':!![]});return db[_0xb673('0x5f')][_0xb673('0x60')]({'where':{'name':'Contexts','userProfileId':_0x588e1d[_0xb673('0x61')]},'raw':!![]})[_0xb673('0x1c')](function(_0x361951){if(_0x361951&&_0x361951[_0xb673('0x62')]===0x0){return db[_0xb673('0x63')]['create']({'name':_0x1f5fc9[_0xb673('0x35')],'resourceId':_0x1f5fc9['id'],'type':_0x361951[_0xb673('0x35')],'sectionId':_0x361951['id']},{})['then'](function(){return _0x1a9699;});}else{return _0x1a9699;}})[_0xb673('0x25')](function(_0x393bd4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x393bd4);throw _0x393bd4;});}return _0x1a9699;})[_0xb673('0x1c')](respondWithResult(_0x2fe99f,0xc9))[_0xb673('0x25')](handleError(_0x2fe99f,null));};exports['update']=function(_0x3c145c,_0x29e7a3,_0x5ab467){var _0x2c2567;return db[_0xb673('0x38')][_0xb673('0x60')]({'where':{'id':_0x3c145c[_0xb673('0x52')]['id']}})[_0xb673('0x1c')](handleEntityNotFound(_0x29e7a3,null))[_0xb673('0x1c')](saveUpdates(_0x3c145c[_0xb673('0x55')],null))[_0xb673('0x1c')](function(_0x363494){if(_0x363494){_0x2c2567=_0x363494;return db['VoiceContext'][_0xb673('0x4f')]({'raw':!![]});}})[_0xb673('0x1c')](function(_0x5115c7){var _0x7c5712=fs[_0xb673('0x64')](path[_0xb673('0x65')](config[_0xb673('0x56')],_0xb673('0x57')),_0xb673('0x66'));var _0x5c8260=ejs[_0xb673('0x58')](_0x7c5712,{'contexts':_0x5115c7||[]});fs[_0xb673('0x59')](_0xb673('0x67'),_0x5c8260);})['then'](function(){return respondWithRpcPromise(_0xb673('0x68'),_0xb673('0x32'),{'module':_0xb673('0x5a')});})[_0xb673('0x1c')](function(){return _0x2c2567;})[_0xb673('0x1c')](respondWithResult(_0x29e7a3,null))[_0xb673('0x25')](handleError(_0x29e7a3,null));};exports[_0xb673('0x34')]=function(_0x4bd9ae,_0x4529f3,_0x56f9a8){var _0xa20f57;return db[_0xb673('0x38')]['find']({'where':{'id':_0x4bd9ae['params']['id']}})['then'](handleEntityNotFound(_0x4529f3,null))[_0xb673('0x1c')](removeEntity(_0x4529f3,null))['then'](function(){return db[_0xb673('0x38')][_0xb673('0x4f')]({'raw':!![]});})['then'](function(_0x2b3d99){var _0x50527c=fs[_0xb673('0x64')](path[_0xb673('0x65')](config['root'],'server/files/templates/context.ejs'),_0xb673('0x66'));var _0x4d793c=ejs[_0xb673('0x58')](_0x50527c,{'contexts':_0x2b3d99});fs[_0xb673('0x59')](_0xb673('0x67'),_0x4d793c);return respondWithRpcPromise('Reload','destroy',{'module':'chan_sip.so'});})[_0xb673('0x25')](handleError(_0x4529f3,null));};