Built motion from commit 994c64e1.|2.6.1
[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 _0x5370=['VoiceContext','includeAll','findAll','show','params','rawAttributes','include','find','create','join','root','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','readFileSync','writeFileSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','client','http','then','info','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','get','Contexts','UserProfileResource','end','stack','name','send','index','type','key','model','map','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','options'];(function(_0x2c5340,_0x5c86e5){var _0x3c505e=function(_0x1089d9){while(--_0x1089d9){_0x2c5340['push'](_0x2c5340['shift']());}};_0x3c505e(++_0x5c86e5);}(_0x5370,0x140));var _0x0537=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x5370[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0x0537('0x0'));var rimraf=require(_0x0537('0x1'));var zipdir=require(_0x0537('0x2'));var jsonpatch=require(_0x0537('0x3'));var rp=require(_0x0537('0x4'));var moment=require('moment');var BPromise=require(_0x0537('0x5'));var Mustache=require(_0x0537('0x6'));var util=require(_0x0537('0x7'));var path=require(_0x0537('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0537('0x9'));var _=require(_0x0537('0xa'));var squel=require(_0x0537('0xb'));var crypto=require(_0x0537('0xc'));var jsforce=require(_0x0537('0xd'));var deskjs=require(_0x0537('0xe'));var toCsv=require(_0x0537('0xf'));var querystring=require('querystring');var Papa=require(_0x0537('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0537('0x11'));var as=require(_0x0537('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0537('0x13'))('api');var utils=require(_0x0537('0x14'));var config=require(_0x0537('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x0537('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x0537('0x17')][_0x0537('0x18')]({'port':0x232a});function respondWithRpcPromise(_0xe658b9,_0x13511d,_0x5dca21,_0x5be12e){return new BPromise(function(_0x341881,_0x522c3d){var _0x15e9e3=_0x5be12e||client;return _0x15e9e3['request'](_0xe658b9,_0x5dca21)[_0x0537('0x19')](function(_0x26cd7b){logger[_0x0537('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x13511d,'request\x20sent');logger['debug'](_0x0537('0x1b'),_0x13511d,_0x0537('0x1c'),JSON['stringify'](_0x26cd7b));if(_0x26cd7b[_0x0537('0x1d')]){if(_0x26cd7b['error'][_0x0537('0x1e')]===0x1f4){logger['error'](_0x0537('0x1f'),_0x13511d,_0x26cd7b[_0x0537('0x1d')][_0x0537('0x20')]);return _0x522c3d(_0x26cd7b[_0x0537('0x1d')][_0x0537('0x20')]);}logger[_0x0537('0x1d')](_0x0537('0x1f'),_0x13511d,_0x26cd7b[_0x0537('0x1d')]['message']);return _0x341881(_0x26cd7b['error'][_0x0537('0x20')]);}else{logger[_0x0537('0x1a')](_0x0537('0x1f'),_0x13511d,'request\x20sent');_0x341881(_0x26cd7b[_0x0537('0x21')][_0x0537('0x20')]);}})[_0x0537('0x22')](function(_0x33a40a){logger['error']('VoiceContext,\x20%s,\x20%s',_0x13511d,_0x33a40a);_0x522c3d(_0x33a40a);});});}function respondWithStatusCode(_0x17a49c,_0x541237){_0x541237=_0x541237||0xcc;return function(_0x43a1ed){if(_0x43a1ed){return _0x17a49c[_0x0537('0x23')](_0x541237);}return _0x17a49c[_0x0537('0x24')](_0x541237)['end']();};}function respondWithResult(_0x347860,_0x5c5439){_0x5c5439=_0x5c5439||0xc8;return function(_0x330da5){if(_0x330da5){return _0x347860['status'](_0x5c5439)['json'](_0x330da5);}};}function respondWithFilteredResult(_0x5a23e4,_0x3b2ac0){return function(_0x2206b4){if(_0x2206b4){var _0x479989=typeof _0x3b2ac0[_0x0537('0x25')]==='undefined'&&typeof _0x3b2ac0[_0x0537('0x26')]===_0x0537('0x27');var _0x8157fa=_0x2206b4[_0x0537('0x28')];var _0x42da81=_0x479989?0x0:_0x3b2ac0[_0x0537('0x25')];var _0x4d1187=_0x479989?_0x2206b4[_0x0537('0x28')]:_0x3b2ac0[_0x0537('0x25')]+_0x3b2ac0['limit'];var _0x1df579;if(_0x4d1187>=_0x8157fa){_0x4d1187=_0x8157fa;_0x1df579=0xc8;}else{_0x1df579=0xce;}_0x5a23e4['status'](_0x1df579);return _0x5a23e4[_0x0537('0x29')](_0x0537('0x2a'),_0x42da81+'-'+_0x4d1187+'/'+_0x8157fa)['json'](_0x2206b4);}return null;};}function patchUpdates(_0xd62724){return function(_0xa217b2){try{jsonpatch[_0x0537('0x2b')](_0xa217b2,_0xd62724,!![]);}catch(_0x34b8fc){return BPromise[_0x0537('0x2c')](_0x34b8fc);}return _0xa217b2['save']();};}function saveUpdates(_0x36d230,_0x4744c3){return function(_0x5b8c08){if(_0x5b8c08){return _0x5b8c08[_0x0537('0x2d')](_0x36d230)['then'](function(_0x135ba1){return _0x135ba1;});}return null;};}function removeEntity(_0x1bb1cf,_0x4f3030){return function(_0x304a15){if(_0x304a15){return _0x304a15[_0x0537('0x2e')]()[_0x0537('0x19')](function(){var _0xddd0da=_0x304a15[_0x0537('0x2f')]({'plain':!![]});var _0x5a079c=_0x0537('0x30');return db[_0x0537('0x31')][_0x0537('0x2e')]({'where':{'type':_0x5a079c,'resourceId':_0xddd0da['id']}})[_0x0537('0x19')](function(){return _0x304a15;});})[_0x0537('0x19')](function(){_0x1bb1cf[_0x0537('0x24')](0xcc)[_0x0537('0x32')]();});}};}function handleEntityNotFound(_0x168311,_0x2a7e6f){return function(_0x506d81){if(!_0x506d81){_0x168311[_0x0537('0x23')](0x194);}return _0x506d81;};}function handleError(_0x8b3a22,_0x5bb802){_0x5bb802=_0x5bb802||0x1f4;return function(_0x1fd227){logger[_0x0537('0x1d')](_0x1fd227[_0x0537('0x33')]);if(_0x1fd227[_0x0537('0x34')]){delete _0x1fd227[_0x0537('0x34')];}_0x8b3a22[_0x0537('0x24')](_0x5bb802)[_0x0537('0x35')](_0x1fd227);};}exports[_0x0537('0x36')]=function(_0x31deb0,_0x5bbe28){var _0x54e0f8={},_0x2f01ec={},_0x401c6b={'count':0x0,'rows':[]};var _0x1cc380=_['map'](db['VoiceContext']['rawAttributes'],function(_0x5553d5){return{'name':_0x5553d5['fieldName'],'type':_0x5553d5[_0x0537('0x37')][_0x0537('0x38')]};});_0x2f01ec[_0x0537('0x39')]=_[_0x0537('0x3a')](_0x1cc380,_0x0537('0x34'));_0x2f01ec[_0x0537('0x3b')]=_['keys'](_0x31deb0[_0x0537('0x3b')]);_0x2f01ec[_0x0537('0x3c')]=_[_0x0537('0x3d')](_0x2f01ec['model'],_0x2f01ec['query']);_0x54e0f8[_0x0537('0x3e')]=_[_0x0537('0x3d')](_0x2f01ec['model'],qs[_0x0537('0x3f')](_0x31deb0[_0x0537('0x3b')][_0x0537('0x3f')]));_0x54e0f8[_0x0537('0x3e')]=_0x54e0f8[_0x0537('0x3e')][_0x0537('0x40')]?_0x54e0f8[_0x0537('0x3e')]:_0x2f01ec[_0x0537('0x39')];if(!_0x31deb0[_0x0537('0x3b')]['hasOwnProperty'](_0x0537('0x41'))){_0x54e0f8[_0x0537('0x26')]=qs[_0x0537('0x26')](_0x31deb0[_0x0537('0x3b')][_0x0537('0x26')]);_0x54e0f8[_0x0537('0x25')]=qs['offset'](_0x31deb0[_0x0537('0x3b')][_0x0537('0x25')]);}_0x54e0f8[_0x0537('0x42')]=qs[_0x0537('0x43')](_0x31deb0[_0x0537('0x3b')][_0x0537('0x43')]);_0x54e0f8[_0x0537('0x44')]=qs['filters'](_[_0x0537('0x45')](_0x31deb0[_0x0537('0x3b')],_0x2f01ec[_0x0537('0x3c')]),_0x1cc380);if(_0x31deb0[_0x0537('0x3b')]['filter']){_0x54e0f8['where']=_['merge'](_0x54e0f8[_0x0537('0x44')],{'$or':_['map'](_0x1cc380,function(_0x205015){if(_0x205015['type']!=='VIRTUAL'){var _0x1bc288={};_0x1bc288[_0x205015['name']]={'$like':'%'+_0x31deb0[_0x0537('0x3b')][_0x0537('0x46')]+'%'};return _0x1bc288;}})});}_0x54e0f8=_['merge']({},_0x54e0f8,_0x31deb0[_0x0537('0x47')]);var _0x4ca27={'where':_0x54e0f8[_0x0537('0x44')]};return db[_0x0537('0x48')][_0x0537('0x28')](_0x4ca27)['then'](function(_0xe2eafc){_0x401c6b['count']=_0xe2eafc;if(_0x31deb0[_0x0537('0x3b')][_0x0537('0x49')]){_0x54e0f8['include']=[{'all':!![]}];}return db[_0x0537('0x48')][_0x0537('0x4a')](_0x54e0f8);})['then'](function(_0x39d204){_0x401c6b['rows']=_0x39d204;return _0x401c6b;})['then'](respondWithFilteredResult(_0x5bbe28,_0x54e0f8))[_0x0537('0x22')](handleError(_0x5bbe28,null));};exports[_0x0537('0x4b')]=function(_0x4d46fb,_0x487cc6){var _0x3567e2={'raw':![],'where':{'id':_0x4d46fb[_0x0537('0x4c')]['id']}},_0x7ce4ba={};_0x7ce4ba['model']=_['keys'](db[_0x0537('0x48')][_0x0537('0x4d')]);_0x7ce4ba[_0x0537('0x3b')]=_['keys'](_0x4d46fb[_0x0537('0x3b')]);_0x7ce4ba[_0x0537('0x3c')]=_['intersection'](_0x7ce4ba[_0x0537('0x39')],_0x7ce4ba[_0x0537('0x3b')]);_0x3567e2[_0x0537('0x3e')]=_[_0x0537('0x3d')](_0x7ce4ba[_0x0537('0x39')],qs[_0x0537('0x3f')](_0x4d46fb[_0x0537('0x3b')]['fields']));_0x3567e2[_0x0537('0x3e')]=_0x3567e2['attributes'][_0x0537('0x40')]?_0x3567e2[_0x0537('0x3e')]:_0x7ce4ba['model'];if(_0x4d46fb['query'][_0x0537('0x49')]){_0x3567e2[_0x0537('0x4e')]=[{'all':!![]}];}_0x3567e2=_['merge']({},_0x3567e2,_0x4d46fb[_0x0537('0x47')]);return db[_0x0537('0x48')][_0x0537('0x4f')](_0x3567e2)[_0x0537('0x19')](handleEntityNotFound(_0x487cc6,null))[_0x0537('0x19')](respondWithResult(_0x487cc6,null))['catch'](handleError(_0x487cc6,null));};exports[_0x0537('0x50')]=function(_0x2f09fa,_0x3d6bc3,_0xf36829){var _0x220e90;return db[_0x0537('0x48')][_0x0537('0x50')](_0x2f09fa['body'],{'raw':!![]})[_0x0537('0x19')](function(_0xb0c926){_0x220e90=_0xb0c926;return db[_0x0537('0x48')][_0x0537('0x4a')]({'raw':!![]});})['then'](function(_0xc85fa6){var _0xc622a0=fs['readFileSync'](path[_0x0537('0x51')](config[_0x0537('0x52')],_0x0537('0x53')),_0x0537('0x54'));var _0x32a6bf=ejs[_0x0537('0x55')](_0xc622a0,{'contexts':_0xc85fa6||[]});fs['writeFileSync'](_0x0537('0x56'),_0x32a6bf);})['then'](function(){return respondWithRpcPromise(_0x0537('0x57'),'create',{'module':_0x0537('0x58')});})[_0x0537('0x19')](function(){var _0x57d02f=_0x2f09fa[_0x0537('0x59')][_0x0537('0x2f')]({'plain':!![]});if(!_0x57d02f)throw new Error(_0x0537('0x5a'));if(_0x57d02f['role']==='user'){var _0x1af2eb=_0x220e90[_0x0537('0x2f')]({'plain':!![]});return db[_0x0537('0x5b')][_0x0537('0x4f')]({'where':{'name':'Contexts','userProfileId':_0x57d02f[_0x0537('0x5c')]},'raw':!![]})[_0x0537('0x19')](function(_0x53a4e5){if(_0x53a4e5&&_0x53a4e5[_0x0537('0x5d')]===0x0){return db[_0x0537('0x31')][_0x0537('0x50')]({'name':_0x1af2eb[_0x0537('0x34')],'resourceId':_0x1af2eb['id'],'type':_0x53a4e5[_0x0537('0x34')],'sectionId':_0x53a4e5['id']},{})[_0x0537('0x19')](function(){return _0x220e90;});}else{return _0x220e90;}})['catch'](function(_0x16d57d){logger['error'](_0x0537('0x5e'),_0x16d57d);throw _0x16d57d;});}return _0x220e90;})[_0x0537('0x19')](respondWithResult(_0x3d6bc3,0xc9))[_0x0537('0x22')](handleError(_0x3d6bc3,null));};exports[_0x0537('0x2d')]=function(_0x2b0d80,_0x511df3,_0x516f8d){var _0x42fd89;return db[_0x0537('0x48')][_0x0537('0x4f')]({'where':{'id':_0x2b0d80[_0x0537('0x4c')]['id']}})[_0x0537('0x19')](handleEntityNotFound(_0x511df3,null))[_0x0537('0x19')](saveUpdates(_0x2b0d80[_0x0537('0x5f')],null))['then'](function(_0x2eee3e){if(_0x2eee3e){_0x42fd89=_0x2eee3e;return db['VoiceContext'][_0x0537('0x4a')]({'raw':!![]});}})[_0x0537('0x19')](function(_0x530fba){var _0x5f957a=fs[_0x0537('0x60')](path[_0x0537('0x51')](config[_0x0537('0x52')],_0x0537('0x53')),'utf8');var _0x305ed5=ejs['render'](_0x5f957a,{'contexts':_0x530fba||[]});fs[_0x0537('0x61')](_0x0537('0x56'),_0x305ed5);})[_0x0537('0x19')](function(){return respondWithRpcPromise('Reload','update',{'module':_0x0537('0x58')});})[_0x0537('0x19')](function(){return _0x42fd89;})[_0x0537('0x19')](respondWithResult(_0x511df3,null))['catch'](handleError(_0x511df3,null));};exports[_0x0537('0x2e')]=function(_0x409105,_0x22b6aa,_0x6032d0){var _0x4e9b8d;return db[_0x0537('0x48')][_0x0537('0x4f')]({'where':{'id':_0x409105[_0x0537('0x4c')]['id']}})[_0x0537('0x19')](handleEntityNotFound(_0x22b6aa,null))['then'](removeEntity(_0x22b6aa,null))['then'](function(){return db['VoiceContext'][_0x0537('0x4a')]({'raw':!![]});})[_0x0537('0x19')](function(_0x2f9e11){var _0x3ba5b7=fs['readFileSync'](path[_0x0537('0x51')](config[_0x0537('0x52')],_0x0537('0x53')),'utf8');var _0x5bc2ed=ejs['render'](_0x3ba5b7,{'contexts':_0x2f9e11});fs[_0x0537('0x61')](_0x0537('0x56'),_0x5bc2ed);return respondWithRpcPromise('Reload',_0x0537('0x2e'),{'module':_0x0537('0x58')});})['catch'](handleError(_0x22b6aa,null));};