8e8df836a47f5a46a612446b25598e9baa68c555
[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 _0xfa35=['debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','stack','name','send','index','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','map','type','options','VoiceContext','includeAll','rows','show','params','include','find','create','body','findAll','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','UserProfileSection','Contexts','userProfileId','autoAssociation','UserProfileResource','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','jayson/promise','client','http','request','request\x20sent'];(function(_0xda923,_0x50b57b){var _0x3b2afb=function(_0x469da1){while(--_0x469da1){_0xda923['push'](_0xda923['shift']());}};_0x3b2afb(++_0x50b57b);}(_0xfa35,0x188));var _0x5fa3=function(_0xa38daf,_0x30406b){_0xa38daf=_0xa38daf-0x0;var _0x1b786a=_0xfa35[_0xa38daf];return _0x1b786a;};'use strict';var emlformat=require(_0x5fa3('0x0'));var rimraf=require(_0x5fa3('0x1'));var zipdir=require(_0x5fa3('0x2'));var jsonpatch=require(_0x5fa3('0x3'));var rp=require(_0x5fa3('0x4'));var moment=require('moment');var BPromise=require(_0x5fa3('0x5'));var Mustache=require(_0x5fa3('0x6'));var util=require(_0x5fa3('0x7'));var path=require('path');var sox=require(_0x5fa3('0x8'));var csv=require('to-csv');var ejs=require(_0x5fa3('0x9'));var fs=require('fs');var fs_extra=require(_0x5fa3('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5fa3('0xb'));var jsforce=require(_0x5fa3('0xc'));var deskjs=require(_0x5fa3('0xd'));var toCsv=require(_0x5fa3('0xe'));var querystring=require('querystring');var Papa=require(_0x5fa3('0xf'));var Redis=require(_0x5fa3('0x10'));var authService=require(_0x5fa3('0x11'));var qs=require(_0x5fa3('0x12'));var as=require(_0x5fa3('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5fa3('0x14'))('api');var utils=require(_0x5fa3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x5fa3('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x5fa3('0x17'));var client=jayson[_0x5fa3('0x18')][_0x5fa3('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x34f7d4,_0x744fb6,_0x1abadc,_0x3fa422){return new BPromise(function(_0x37722f,_0x461dfd){var _0x24e920=_0x3fa422||client;return _0x24e920[_0x5fa3('0x1a')](_0x34f7d4,_0x1abadc)['then'](function(_0x2bb347){logger['info']('VoiceContext,\x20%s,\x20%s',_0x744fb6,_0x5fa3('0x1b'));logger[_0x5fa3('0x1c')](_0x5fa3('0x1d'),_0x744fb6,_0x5fa3('0x1b'),JSON[_0x5fa3('0x1e')](_0x2bb347));if(_0x2bb347[_0x5fa3('0x1f')]){if(_0x2bb347['error']['code']===0x1f4){logger[_0x5fa3('0x1f')](_0x5fa3('0x20'),_0x744fb6,_0x2bb347[_0x5fa3('0x1f')][_0x5fa3('0x21')]);return _0x461dfd(_0x2bb347['error'][_0x5fa3('0x21')]);}logger[_0x5fa3('0x1f')](_0x5fa3('0x20'),_0x744fb6,_0x2bb347[_0x5fa3('0x1f')][_0x5fa3('0x21')]);return _0x37722f(_0x2bb347[_0x5fa3('0x1f')][_0x5fa3('0x21')]);}else{logger['info'](_0x5fa3('0x20'),_0x744fb6,'request\x20sent');_0x37722f(_0x2bb347[_0x5fa3('0x22')][_0x5fa3('0x21')]);}})[_0x5fa3('0x23')](function(_0x4ad942){logger[_0x5fa3('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x744fb6,_0x4ad942);_0x461dfd(_0x4ad942);});});}function respondWithStatusCode(_0x4e1bdf,_0x342af5){_0x342af5=_0x342af5||0xcc;return function(_0x3f4a11){if(_0x3f4a11){return _0x4e1bdf[_0x5fa3('0x24')](_0x342af5);}return _0x4e1bdf[_0x5fa3('0x25')](_0x342af5)[_0x5fa3('0x26')]();};}function respondWithResult(_0x3ec7a8,_0x2978c7){_0x2978c7=_0x2978c7||0xc8;return function(_0x12eeb1){if(_0x12eeb1){return _0x3ec7a8['status'](_0x2978c7)[_0x5fa3('0x27')](_0x12eeb1);}};}function respondWithFilteredResult(_0x5b963d,_0x56796f){return function(_0xab9efa){if(_0xab9efa){var _0x5dd1df=typeof _0x56796f['offset']===_0x5fa3('0x28')&&typeof _0x56796f[_0x5fa3('0x29')]===_0x5fa3('0x28');var _0x514892=_0xab9efa[_0x5fa3('0x2a')];var _0x3c4c61=_0x5dd1df?0x0:_0x56796f[_0x5fa3('0x2b')];var _0x1664b8=_0x5dd1df?_0xab9efa[_0x5fa3('0x2a')]:_0x56796f[_0x5fa3('0x2b')]+_0x56796f[_0x5fa3('0x29')];var _0x75321c;if(_0x1664b8>=_0x514892){_0x1664b8=_0x514892;_0x75321c=0xc8;}else{_0x75321c=0xce;}_0x5b963d[_0x5fa3('0x25')](_0x75321c);return _0x5b963d[_0x5fa3('0x2c')](_0x5fa3('0x2d'),_0x3c4c61+'-'+_0x1664b8+'/'+_0x514892)[_0x5fa3('0x27')](_0xab9efa);}return null;};}function patchUpdates(_0x39e8d3){return function(_0x40e3fe){try{jsonpatch[_0x5fa3('0x2e')](_0x40e3fe,_0x39e8d3,!![]);}catch(_0x5e935b){return BPromise[_0x5fa3('0x2f')](_0x5e935b);}return _0x40e3fe[_0x5fa3('0x30')]();};}function saveUpdates(_0x3e35e7,_0x4cbc65){return function(_0x9ccc6b){if(_0x9ccc6b){return _0x9ccc6b[_0x5fa3('0x31')](_0x3e35e7)[_0x5fa3('0x32')](function(_0x4d0b23){return _0x4d0b23;});}return null;};}function removeEntity(_0x2463f2,_0x595922){return function(_0x420336){if(_0x420336){return _0x420336[_0x5fa3('0x33')]()[_0x5fa3('0x32')](function(){var _0x25db71=_0x420336[_0x5fa3('0x34')]({'plain':!![]});var _0x34af4c='Contexts';return db['UserProfileResource'][_0x5fa3('0x33')]({'where':{'type':_0x34af4c,'resourceId':_0x25db71['id']}})[_0x5fa3('0x32')](function(){return _0x420336;});})[_0x5fa3('0x32')](function(){_0x2463f2['status'](0xcc)[_0x5fa3('0x26')]();});}};}function handleEntityNotFound(_0x38bbd2,_0x3df959){return function(_0x3f2f78){if(!_0x3f2f78){_0x38bbd2[_0x5fa3('0x24')](0x194);}return _0x3f2f78;};}function handleError(_0x5b1665,_0x596f20){_0x596f20=_0x596f20||0x1f4;return function(_0x283fc9){logger['error'](_0x283fc9[_0x5fa3('0x35')]);if(_0x283fc9[_0x5fa3('0x36')]){delete _0x283fc9[_0x5fa3('0x36')];}_0x5b1665[_0x5fa3('0x25')](_0x596f20)[_0x5fa3('0x37')](_0x283fc9);};}exports[_0x5fa3('0x38')]=function(_0x538356,_0x36d1a0){var _0x17b41e={},_0x525972={},_0x4b301d={'count':0x0,'rows':[]};var _0x32c64f=_['map'](db['VoiceContext'][_0x5fa3('0x39')],function(_0x4aff9f){return{'name':_0x4aff9f[_0x5fa3('0x3a')],'type':_0x4aff9f['type'][_0x5fa3('0x3b')]};});_0x525972[_0x5fa3('0x3c')]=_['map'](_0x32c64f,'name');_0x525972[_0x5fa3('0x3d')]=_[_0x5fa3('0x3e')](_0x538356[_0x5fa3('0x3d')]);_0x525972['filters']=_['intersection'](_0x525972[_0x5fa3('0x3c')],_0x525972['query']);_0x17b41e[_0x5fa3('0x3f')]=_[_0x5fa3('0x40')](_0x525972[_0x5fa3('0x3c')],qs['fields'](_0x538356[_0x5fa3('0x3d')][_0x5fa3('0x41')]));_0x17b41e['attributes']=_0x17b41e[_0x5fa3('0x3f')][_0x5fa3('0x42')]?_0x17b41e[_0x5fa3('0x3f')]:_0x525972['model'];if(!_0x538356[_0x5fa3('0x3d')][_0x5fa3('0x43')](_0x5fa3('0x44'))){_0x17b41e[_0x5fa3('0x29')]=qs[_0x5fa3('0x29')](_0x538356['query'][_0x5fa3('0x29')]);_0x17b41e['offset']=qs[_0x5fa3('0x2b')](_0x538356[_0x5fa3('0x3d')][_0x5fa3('0x2b')]);}_0x17b41e[_0x5fa3('0x45')]=qs[_0x5fa3('0x46')](_0x538356[_0x5fa3('0x3d')][_0x5fa3('0x46')]);_0x17b41e['where']=qs['filters'](_[_0x5fa3('0x47')](_0x538356['query'],_0x525972[_0x5fa3('0x48')]),_0x32c64f);if(_0x538356[_0x5fa3('0x3d')][_0x5fa3('0x49')]){_0x17b41e[_0x5fa3('0x4a')]=_[_0x5fa3('0x4b')](_0x17b41e['where'],{'$or':_[_0x5fa3('0x4c')](_0x32c64f,function(_0x573e28){if(_0x573e28[_0x5fa3('0x4d')]!=='VIRTUAL'){var _0x2cfb3c={};_0x2cfb3c[_0x573e28[_0x5fa3('0x36')]]={'$like':'%'+_0x538356[_0x5fa3('0x3d')][_0x5fa3('0x49')]+'%'};return _0x2cfb3c;}})});}_0x17b41e=_['merge']({},_0x17b41e,_0x538356[_0x5fa3('0x4e')]);var _0x179ca5={'where':_0x17b41e[_0x5fa3('0x4a')]};return db[_0x5fa3('0x4f')]['count'](_0x179ca5)[_0x5fa3('0x32')](function(_0xd79524){_0x4b301d['count']=_0xd79524;if(_0x538356['query'][_0x5fa3('0x50')]){_0x17b41e['include']=[{'all':!![]}];}return db[_0x5fa3('0x4f')]['findAll'](_0x17b41e);})[_0x5fa3('0x32')](function(_0x2dea41){_0x4b301d[_0x5fa3('0x51')]=_0x2dea41;return _0x4b301d;})[_0x5fa3('0x32')](respondWithFilteredResult(_0x36d1a0,_0x17b41e))[_0x5fa3('0x23')](handleError(_0x36d1a0,null));};exports[_0x5fa3('0x52')]=function(_0x4b9b8d,_0x19052e){var _0x3c58ac={'raw':![],'where':{'id':_0x4b9b8d[_0x5fa3('0x53')]['id']}},_0x3b0ce1={};_0x3b0ce1[_0x5fa3('0x3c')]=_['keys'](db[_0x5fa3('0x4f')][_0x5fa3('0x39')]);_0x3b0ce1['query']=_[_0x5fa3('0x3e')](_0x4b9b8d[_0x5fa3('0x3d')]);_0x3b0ce1[_0x5fa3('0x48')]=_[_0x5fa3('0x40')](_0x3b0ce1[_0x5fa3('0x3c')],_0x3b0ce1['query']);_0x3c58ac[_0x5fa3('0x3f')]=_['intersection'](_0x3b0ce1[_0x5fa3('0x3c')],qs['fields'](_0x4b9b8d[_0x5fa3('0x3d')][_0x5fa3('0x41')]));_0x3c58ac[_0x5fa3('0x3f')]=_0x3c58ac[_0x5fa3('0x3f')][_0x5fa3('0x42')]?_0x3c58ac[_0x5fa3('0x3f')]:_0x3b0ce1[_0x5fa3('0x3c')];if(_0x4b9b8d[_0x5fa3('0x3d')][_0x5fa3('0x50')]){_0x3c58ac[_0x5fa3('0x54')]=[{'all':!![]}];}_0x3c58ac=_[_0x5fa3('0x4b')]({},_0x3c58ac,_0x4b9b8d[_0x5fa3('0x4e')]);return db[_0x5fa3('0x4f')][_0x5fa3('0x55')](_0x3c58ac)[_0x5fa3('0x32')](handleEntityNotFound(_0x19052e,null))[_0x5fa3('0x32')](respondWithResult(_0x19052e,null))[_0x5fa3('0x23')](handleError(_0x19052e,null));};exports[_0x5fa3('0x56')]=function(_0x336161,_0x5f1fea,_0x2e6c7f){var _0x4a3593;return db[_0x5fa3('0x4f')][_0x5fa3('0x56')](_0x336161[_0x5fa3('0x57')],{'raw':!![]})[_0x5fa3('0x32')](function(_0x240aff){_0x4a3593=_0x240aff;return db[_0x5fa3('0x4f')][_0x5fa3('0x58')]({'raw':!![]});})['then'](function(_0x523eef){var _0x1767d1=fs[_0x5fa3('0x59')](path[_0x5fa3('0x5a')](config[_0x5fa3('0x5b')],_0x5fa3('0x5c')),_0x5fa3('0x5d'));var _0xa1e58c=ejs[_0x5fa3('0x5e')](_0x1767d1,{'contexts':_0x523eef||[]});fs[_0x5fa3('0x5f')](_0x5fa3('0x60'),_0xa1e58c);})[_0x5fa3('0x32')](function(){return respondWithRpcPromise(_0x5fa3('0x61'),_0x5fa3('0x56'),{'module':_0x5fa3('0x62')});})[_0x5fa3('0x32')](function(){var _0x25d46c=_0x336161[_0x5fa3('0x63')][_0x5fa3('0x34')]({'plain':!![]});if(!_0x25d46c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x25d46c['role']===_0x5fa3('0x63')){var _0x1ca8fe=_0x4a3593[_0x5fa3('0x34')]({'plain':!![]});return db[_0x5fa3('0x64')][_0x5fa3('0x55')]({'where':{'name':_0x5fa3('0x65'),'userProfileId':_0x25d46c[_0x5fa3('0x66')]},'raw':!![]})['then'](function(_0xa1a49a){if(_0xa1a49a&&_0xa1a49a[_0x5fa3('0x67')]===0x0){return db[_0x5fa3('0x68')]['create']({'name':_0x1ca8fe[_0x5fa3('0x36')],'resourceId':_0x1ca8fe['id'],'type':_0xa1a49a[_0x5fa3('0x36')],'sectionId':_0xa1a49a['id']},{})[_0x5fa3('0x32')](function(){return _0x4a3593;});}else{return _0x4a3593;}})[_0x5fa3('0x23')](function(_0x25e887){logger[_0x5fa3('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x25e887);throw _0x25e887;});}return _0x4a3593;})['then'](respondWithResult(_0x5f1fea,0xc9))[_0x5fa3('0x23')](handleError(_0x5f1fea,null));};exports[_0x5fa3('0x31')]=function(_0x43e733,_0x1139c8,_0x3a9ec3){var _0x533766;return db[_0x5fa3('0x4f')][_0x5fa3('0x55')]({'where':{'id':_0x43e733['params']['id']}})['then'](handleEntityNotFound(_0x1139c8,null))[_0x5fa3('0x32')](saveUpdates(_0x43e733['body'],null))[_0x5fa3('0x32')](function(_0x43e2cc){if(_0x43e2cc){_0x533766=_0x43e2cc;return db[_0x5fa3('0x4f')][_0x5fa3('0x58')]({'raw':!![]});}})[_0x5fa3('0x32')](function(_0x4ac1bb){var _0xea4d4=fs[_0x5fa3('0x59')](path['join'](config['root'],_0x5fa3('0x5c')),_0x5fa3('0x5d'));var _0x3d4443=ejs['render'](_0xea4d4,{'contexts':_0x4ac1bb||[]});fs['writeFileSync'](_0x5fa3('0x60'),_0x3d4443);})['then'](function(){return respondWithRpcPromise(_0x5fa3('0x61'),'update',{'module':_0x5fa3('0x62')});})[_0x5fa3('0x32')](function(){return _0x533766;})[_0x5fa3('0x32')](respondWithResult(_0x1139c8,null))[_0x5fa3('0x23')](handleError(_0x1139c8,null));};exports[_0x5fa3('0x33')]=function(_0x35fa42,_0x10367c,_0x1db273){var _0x3536fe;return db[_0x5fa3('0x4f')][_0x5fa3('0x55')]({'where':{'id':_0x35fa42[_0x5fa3('0x53')]['id']}})[_0x5fa3('0x32')](handleEntityNotFound(_0x10367c,null))['then'](removeEntity(_0x10367c,null))[_0x5fa3('0x32')](function(){return db['VoiceContext'][_0x5fa3('0x58')]({'raw':!![]});})[_0x5fa3('0x32')](function(_0x2cf090){var _0x5c92c5=fs[_0x5fa3('0x59')](path[_0x5fa3('0x5a')](config[_0x5fa3('0x5b')],_0x5fa3('0x5c')),'utf8');var _0xde628f=ejs['render'](_0x5c92c5,{'contexts':_0x2cf090});fs[_0x5fa3('0x5f')](_0x5fa3('0x60'),_0xde628f);return respondWithRpcPromise(_0x5fa3('0x61'),_0x5fa3('0x33'),{'module':_0x5fa3('0x62')});})[_0x5fa3('0x23')](handleError(_0x10367c,null));};