Built motion from commit e38a297d.|2.6.18
[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 _0x2ccf=['error','VoiceContext,\x20%s,\x20%s','message','request\x20sent','result','sendStatus','status','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','stack','name','send','index','map','VoiceContext','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','rawAttributes','catch','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','Reload','role','UserProfileSection','find','Contexts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','chan_sip.so','/etc/asterisk/extensions_xcally_contexts.conf','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','info','debug','VoiceContext,\x20%s,\x20%s,\x20%s'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2ccf,0x16b));var _0xf2cc=function(_0x3fbda5,_0xe519b0){_0x3fbda5=_0x3fbda5-0x0;var _0x4934d2=_0x2ccf[_0x3fbda5];return _0x4934d2;};'use strict';var emlformat=require(_0xf2cc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf2cc('0x1'));var jsonpatch=require(_0xf2cc('0x2'));var rp=require(_0xf2cc('0x3'));var moment=require(_0xf2cc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf2cc('0x5'));var path=require(_0xf2cc('0x6'));var sox=require(_0xf2cc('0x7'));var csv=require(_0xf2cc('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2cc('0x9'));var squel=require(_0xf2cc('0xa'));var crypto=require(_0xf2cc('0xb'));var jsforce=require(_0xf2cc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf2cc('0x8'));var querystring=require(_0xf2cc('0xd'));var Papa=require(_0xf2cc('0xe'));var Redis=require(_0xf2cc('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf2cc('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf2cc('0x11'));var logger=require('../../config/logger')(_0xf2cc('0x12'));var utils=require(_0xf2cc('0x13'));var config=require(_0xf2cc('0x14'));var licenseUtil=require(_0xf2cc('0x15'));var db=require(_0xf2cc('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xf2cc('0x17')][_0xf2cc('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x213a0d,_0x535f48,_0x4a5a6c,_0x206177){return new BPromise(function(_0x42dd29,_0x5c225d){var _0x542536=_0x206177||client;return _0x542536[_0xf2cc('0x19')](_0x213a0d,_0x4a5a6c)['then'](function(_0x5a988c){logger[_0xf2cc('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x535f48,'request\x20sent');logger[_0xf2cc('0x1b')](_0xf2cc('0x1c'),_0x535f48,'request\x20sent',JSON['stringify'](_0x5a988c));if(_0x5a988c[_0xf2cc('0x1d')]){if(_0x5a988c[_0xf2cc('0x1d')]['code']===0x1f4){logger[_0xf2cc('0x1d')](_0xf2cc('0x1e'),_0x535f48,_0x5a988c[_0xf2cc('0x1d')][_0xf2cc('0x1f')]);return _0x5c225d(_0x5a988c[_0xf2cc('0x1d')][_0xf2cc('0x1f')]);}logger['error'](_0xf2cc('0x1e'),_0x535f48,_0x5a988c[_0xf2cc('0x1d')][_0xf2cc('0x1f')]);return _0x42dd29(_0x5a988c[_0xf2cc('0x1d')][_0xf2cc('0x1f')]);}else{logger[_0xf2cc('0x1a')](_0xf2cc('0x1e'),_0x535f48,_0xf2cc('0x20'));_0x42dd29(_0x5a988c[_0xf2cc('0x21')][_0xf2cc('0x1f')]);}})['catch'](function(_0x501704){logger['error']('VoiceContext,\x20%s,\x20%s',_0x535f48,_0x501704);_0x5c225d(_0x501704);});});}function respondWithStatusCode(_0x4be715,_0x2db6d5){_0x2db6d5=_0x2db6d5||0xcc;return function(_0x1bf03d){if(_0x1bf03d){return _0x4be715[_0xf2cc('0x22')](_0x2db6d5);}return _0x4be715[_0xf2cc('0x23')](_0x2db6d5)['end']();};}function respondWithResult(_0xe865b8,_0x57f47c){_0x57f47c=_0x57f47c||0xc8;return function(_0xb2ef9f){if(_0xb2ef9f){return _0xe865b8[_0xf2cc('0x23')](_0x57f47c)[_0xf2cc('0x24')](_0xb2ef9f);}};}function respondWithFilteredResult(_0x7770dc,_0x48c0a3){return function(_0xae7391){if(_0xae7391){var _0x4f15e4=typeof _0x48c0a3['offset']==='undefined'&&typeof _0x48c0a3[_0xf2cc('0x25')]===_0xf2cc('0x26');var _0xa0c296=_0xae7391[_0xf2cc('0x27')];var _0x3734ea=_0x4f15e4?0x0:_0x48c0a3[_0xf2cc('0x28')];var _0x2d5ea4=_0x4f15e4?_0xae7391[_0xf2cc('0x27')]:_0x48c0a3[_0xf2cc('0x28')]+_0x48c0a3[_0xf2cc('0x25')];var _0x308228;if(_0x2d5ea4>=_0xa0c296){_0x2d5ea4=_0xa0c296;_0x308228=0xc8;}else{_0x308228=0xce;}_0x7770dc[_0xf2cc('0x23')](_0x308228);return _0x7770dc['set'](_0xf2cc('0x29'),_0x3734ea+'-'+_0x2d5ea4+'/'+_0xa0c296)[_0xf2cc('0x24')](_0xae7391);}return null;};}function patchUpdates(_0x2a5e29){return function(_0x7bfd83){try{jsonpatch[_0xf2cc('0x2a')](_0x7bfd83,_0x2a5e29,!![]);}catch(_0x28ac04){return BPromise[_0xf2cc('0x2b')](_0x28ac04);}return _0x7bfd83[_0xf2cc('0x2c')]();};}function saveUpdates(_0x5eb49a,_0x431746){return function(_0x47bea3){if(_0x47bea3){return _0x47bea3[_0xf2cc('0x2d')](_0x5eb49a)[_0xf2cc('0x2e')](function(_0x17d78c){return _0x17d78c;});}return null;};}function removeEntity(_0x3c998c,_0x567728){return function(_0x2dda0b){if(_0x2dda0b){return _0x2dda0b['destroy']()['then'](function(){var _0x497b50=_0x2dda0b[_0xf2cc('0x2f')]({'plain':!![]});var _0x550cba='Contexts';return db[_0xf2cc('0x30')][_0xf2cc('0x31')]({'where':{'type':_0x550cba,'resourceId':_0x497b50['id']}})[_0xf2cc('0x2e')](function(){return _0x2dda0b;});})[_0xf2cc('0x2e')](function(){_0x3c998c[_0xf2cc('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x65da04,_0x2401f8){return function(_0x75d50d){if(!_0x75d50d){_0x65da04['sendStatus'](0x194);}return _0x75d50d;};}function handleError(_0x57266c,_0x595cd6){_0x595cd6=_0x595cd6||0x1f4;return function(_0x49bf95){logger['error'](_0x49bf95[_0xf2cc('0x32')]);if(_0x49bf95[_0xf2cc('0x33')]){delete _0x49bf95[_0xf2cc('0x33')];}_0x57266c[_0xf2cc('0x23')](_0x595cd6)[_0xf2cc('0x34')](_0x49bf95);};}exports[_0xf2cc('0x35')]=function(_0x35f2b4,_0x1deb39){var _0x32787d={},_0x1d2f31={},_0x1b4ac8={'count':0x0,'rows':[]};var _0x424245=_[_0xf2cc('0x36')](db[_0xf2cc('0x37')]['rawAttributes'],function(_0x195646){return{'name':_0x195646[_0xf2cc('0x38')],'type':_0x195646[_0xf2cc('0x39')]['key']};});_0x1d2f31[_0xf2cc('0x3a')]=_[_0xf2cc('0x36')](_0x424245,'name');_0x1d2f31[_0xf2cc('0x3b')]=_[_0xf2cc('0x3c')](_0x35f2b4[_0xf2cc('0x3b')]);_0x1d2f31[_0xf2cc('0x3d')]=_['intersection'](_0x1d2f31[_0xf2cc('0x3a')],_0x1d2f31['query']);_0x32787d['attributes']=_[_0xf2cc('0x3e')](_0x1d2f31['model'],qs[_0xf2cc('0x3f')](_0x35f2b4[_0xf2cc('0x3b')][_0xf2cc('0x3f')]));_0x32787d[_0xf2cc('0x40')]=_0x32787d[_0xf2cc('0x40')][_0xf2cc('0x41')]?_0x32787d[_0xf2cc('0x40')]:_0x1d2f31[_0xf2cc('0x3a')];if(!_0x35f2b4[_0xf2cc('0x3b')]['hasOwnProperty']('nolimit')){_0x32787d['limit']=qs[_0xf2cc('0x25')](_0x35f2b4[_0xf2cc('0x3b')]['limit']);_0x32787d[_0xf2cc('0x28')]=qs[_0xf2cc('0x28')](_0x35f2b4['query'][_0xf2cc('0x28')]);}_0x32787d['order']=qs[_0xf2cc('0x42')](_0x35f2b4[_0xf2cc('0x3b')]['sort']);_0x32787d[_0xf2cc('0x43')]=qs[_0xf2cc('0x3d')](_[_0xf2cc('0x44')](_0x35f2b4[_0xf2cc('0x3b')],_0x1d2f31[_0xf2cc('0x3d')]),_0x424245);if(_0x35f2b4[_0xf2cc('0x3b')]['filter']){_0x32787d[_0xf2cc('0x43')]=_[_0xf2cc('0x45')](_0x32787d['where'],{'$or':_[_0xf2cc('0x36')](_0x424245,function(_0x20c081){if(_0x20c081[_0xf2cc('0x39')]!==_0xf2cc('0x46')){var _0x17e8d5={};_0x17e8d5[_0x20c081[_0xf2cc('0x33')]]={'$like':'%'+_0x35f2b4[_0xf2cc('0x3b')][_0xf2cc('0x47')]+'%'};return _0x17e8d5;}})});}_0x32787d=_['merge']({},_0x32787d,_0x35f2b4[_0xf2cc('0x48')]);var _0x21e193={'where':_0x32787d[_0xf2cc('0x43')]};return db[_0xf2cc('0x37')]['count'](_0x21e193)['then'](function(_0xe49edf){_0x1b4ac8[_0xf2cc('0x27')]=_0xe49edf;if(_0x35f2b4['query'][_0xf2cc('0x49')]){_0x32787d[_0xf2cc('0x4a')]=[{'all':!![]}];}return db['VoiceContext'][_0xf2cc('0x4b')](_0x32787d);})[_0xf2cc('0x2e')](function(_0x21b6e6){_0x1b4ac8['rows']=_0x21b6e6;return _0x1b4ac8;})[_0xf2cc('0x2e')](respondWithFilteredResult(_0x1deb39,_0x32787d))['catch'](handleError(_0x1deb39,null));};exports[_0xf2cc('0x4c')]=function(_0x1db089,_0x174a2e){var _0x5bc426={'raw':![],'where':{'id':_0x1db089[_0xf2cc('0x4d')]['id']}},_0x58bc64={};_0x58bc64['model']=_['keys'](db[_0xf2cc('0x37')][_0xf2cc('0x4e')]);_0x58bc64['query']=_['keys'](_0x1db089['query']);_0x58bc64['filters']=_[_0xf2cc('0x3e')](_0x58bc64[_0xf2cc('0x3a')],_0x58bc64[_0xf2cc('0x3b')]);_0x5bc426[_0xf2cc('0x40')]=_['intersection'](_0x58bc64[_0xf2cc('0x3a')],qs['fields'](_0x1db089[_0xf2cc('0x3b')][_0xf2cc('0x3f')]));_0x5bc426[_0xf2cc('0x40')]=_0x5bc426[_0xf2cc('0x40')]['length']?_0x5bc426[_0xf2cc('0x40')]:_0x58bc64[_0xf2cc('0x3a')];if(_0x1db089[_0xf2cc('0x3b')][_0xf2cc('0x49')]){_0x5bc426[_0xf2cc('0x4a')]=[{'all':!![]}];}_0x5bc426=_[_0xf2cc('0x45')]({},_0x5bc426,_0x1db089[_0xf2cc('0x48')]);return db[_0xf2cc('0x37')]['find'](_0x5bc426)[_0xf2cc('0x2e')](handleEntityNotFound(_0x174a2e,null))[_0xf2cc('0x2e')](respondWithResult(_0x174a2e,null))[_0xf2cc('0x4f')](handleError(_0x174a2e,null));};exports['create']=function(_0xa45f5e,_0x1fde23,_0x54a5ff){var _0x3047de;return db[_0xf2cc('0x37')][_0xf2cc('0x50')](_0xa45f5e[_0xf2cc('0x51')],{'raw':!![]})[_0xf2cc('0x2e')](function(_0x6f94ae){_0x3047de=_0x6f94ae;return db[_0xf2cc('0x37')][_0xf2cc('0x4b')]({'raw':!![]});})[_0xf2cc('0x2e')](function(_0x2b8465){var _0x2028b2=fs[_0xf2cc('0x52')](path[_0xf2cc('0x53')](config[_0xf2cc('0x54')],_0xf2cc('0x55')),_0xf2cc('0x56'));var _0x3fcddc=ejs[_0xf2cc('0x57')](_0x2028b2,{'contexts':_0x2b8465||[]});fs[_0xf2cc('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x3fcddc);})['then'](function(){return respondWithRpcPromise(_0xf2cc('0x59'),'create',{'module':'chan_sip.so'});})[_0xf2cc('0x2e')](function(){var _0x2d3967=_0xa45f5e['user'][_0xf2cc('0x2f')]({'plain':!![]});if(!_0x2d3967)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2d3967[_0xf2cc('0x5a')]==='user'){var _0x4be777=_0x3047de[_0xf2cc('0x2f')]({'plain':!![]});return db[_0xf2cc('0x5b')][_0xf2cc('0x5c')]({'where':{'name':_0xf2cc('0x5d'),'userProfileId':_0x2d3967['userProfileId']},'raw':!![]})['then'](function(_0x2100c6){if(_0x2100c6&&_0x2100c6[_0xf2cc('0x5e')]===0x0){return db['UserProfileResource']['create']({'name':_0x4be777['name'],'resourceId':_0x4be777['id'],'type':_0x2100c6[_0xf2cc('0x33')],'sectionId':_0x2100c6['id']},{})[_0xf2cc('0x2e')](function(){return _0x3047de;});}else{return _0x3047de;}})[_0xf2cc('0x4f')](function(_0xfdc1c){logger[_0xf2cc('0x1d')](_0xf2cc('0x5f'),_0xfdc1c);throw _0xfdc1c;});}return _0x3047de;})['then'](respondWithResult(_0x1fde23,0xc9))['catch'](handleError(_0x1fde23,null));};exports['update']=function(_0x4fc2e3,_0x12a07f,_0x1f0515){var _0x351b38;return db['VoiceContext'][_0xf2cc('0x5c')]({'where':{'id':_0x4fc2e3['params']['id']}})[_0xf2cc('0x2e')](handleEntityNotFound(_0x12a07f,null))[_0xf2cc('0x2e')](saveUpdates(_0x4fc2e3[_0xf2cc('0x51')],null))[_0xf2cc('0x2e')](function(_0x168d42){if(_0x168d42){_0x351b38=_0x168d42;return db[_0xf2cc('0x37')][_0xf2cc('0x4b')]({'raw':!![]});}})[_0xf2cc('0x2e')](function(_0x19c626){var _0x3c585c=fs['readFileSync'](path[_0xf2cc('0x53')](config[_0xf2cc('0x54')],_0xf2cc('0x55')),'utf8');var _0x36c2ff=ejs[_0xf2cc('0x57')](_0x3c585c,{'contexts':_0x19c626||[]});fs[_0xf2cc('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x36c2ff);})[_0xf2cc('0x2e')](function(){return respondWithRpcPromise(_0xf2cc('0x59'),_0xf2cc('0x2d'),{'module':_0xf2cc('0x60')});})[_0xf2cc('0x2e')](function(){return _0x351b38;})[_0xf2cc('0x2e')](respondWithResult(_0x12a07f,null))['catch'](handleError(_0x12a07f,null));};exports[_0xf2cc('0x31')]=function(_0x3c1f77,_0x95783c,_0x1e9fd9){var _0x269392;return db[_0xf2cc('0x37')]['find']({'where':{'id':_0x3c1f77[_0xf2cc('0x4d')]['id']}})[_0xf2cc('0x2e')](handleEntityNotFound(_0x95783c,null))['then'](removeEntity(_0x95783c,null))[_0xf2cc('0x2e')](function(){return db['VoiceContext'][_0xf2cc('0x4b')]({'raw':!![]});})['then'](function(_0xcb5894){var _0xfc638c=fs['readFileSync'](path[_0xf2cc('0x53')](config['root'],_0xf2cc('0x55')),_0xf2cc('0x56'));var _0x1e27c2=ejs[_0xf2cc('0x57')](_0xfc638c,{'contexts':_0xcb5894});fs[_0xf2cc('0x58')](_0xf2cc('0x61'),_0x1e27c2);return respondWithRpcPromise(_0xf2cc('0x59'),_0xf2cc('0x31'),{'module':'chan_sip.so'});})['catch'](handleError(_0x95783c,null));};