a08b487e288d8a4ce2644136a5788aed17426ef1
[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 _0xb6b4=['code','message','result','catch','sendStatus','end','offset','undefined','count','limit','status','set','Content-Range','json','apply','reject','save','update','destroy','UserProfileResource','stack','name','index','map','VoiceContext','rawAttributes','type','key','model','keys','query','intersection','attributes','fields','length','sort','pick','filters','filter','merge','where','VIRTUAL','includeAll','include','findAll','show','params','options','create','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Contexts','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','Reload','chan_sip.so','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2f0d58,_0x56ac64){var _0x527598=function(_0xc664bf){while(--_0xc664bf){_0x2f0d58['push'](_0x2f0d58['shift']());}};_0x527598(++_0x56ac64);}(_0xb6b4,0x113));var _0x4b6b=function(_0x2c8905,_0x4c3fa0){_0x2c8905=_0x2c8905-0x0;var _0x568192=_0xb6b4[_0x2c8905];return _0x568192;};'use strict';var emlformat=require(_0x4b6b('0x0'));var rimraf=require(_0x4b6b('0x1'));var zipdir=require(_0x4b6b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4b6b('0x3'));var moment=require('moment');var BPromise=require(_0x4b6b('0x4'));var Mustache=require(_0x4b6b('0x5'));var util=require(_0x4b6b('0x6'));var path=require(_0x4b6b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4b6b('0x8'));var fs=require('fs');var fs_extra=require(_0x4b6b('0x9'));var _=require(_0x4b6b('0xa'));var squel=require(_0x4b6b('0xb'));var crypto=require(_0x4b6b('0xc'));var jsforce=require(_0x4b6b('0xd'));var deskjs=require(_0x4b6b('0xe'));var toCsv=require(_0x4b6b('0xf'));var querystring=require(_0x4b6b('0x10'));var Papa=require('papaparse');var Redis=require(_0x4b6b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4b6b('0x12'));var as=require(_0x4b6b('0x13'));var hardwareService=require(_0x4b6b('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x4b6b('0x15'));var licenseUtil=require(_0x4b6b('0x16'));var db=require(_0x4b6b('0x17'))['db'];var jayson=require(_0x4b6b('0x18'));var client=jayson['client'][_0x4b6b('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x48235c,_0x381d89,_0x5c89bf,_0x3cb034){return new BPromise(function(_0x34bf99,_0x368b0c){var _0x401b2f=_0x3cb034||client;return _0x401b2f['request'](_0x48235c,_0x5c89bf)[_0x4b6b('0x1a')](function(_0x432ac0){logger[_0x4b6b('0x1b')](_0x4b6b('0x1c'),_0x381d89,_0x4b6b('0x1d'));logger[_0x4b6b('0x1e')](_0x4b6b('0x1f'),_0x381d89,_0x4b6b('0x1d'),JSON[_0x4b6b('0x20')](_0x432ac0));if(_0x432ac0[_0x4b6b('0x21')]){if(_0x432ac0[_0x4b6b('0x21')][_0x4b6b('0x22')]===0x1f4){logger[_0x4b6b('0x21')]('VoiceContext,\x20%s,\x20%s',_0x381d89,_0x432ac0[_0x4b6b('0x21')]['message']);return _0x368b0c(_0x432ac0['error'][_0x4b6b('0x23')]);}logger['error'](_0x4b6b('0x1c'),_0x381d89,_0x432ac0[_0x4b6b('0x21')][_0x4b6b('0x23')]);return _0x34bf99(_0x432ac0[_0x4b6b('0x21')][_0x4b6b('0x23')]);}else{logger[_0x4b6b('0x1b')](_0x4b6b('0x1c'),_0x381d89,'request\x20sent');_0x34bf99(_0x432ac0[_0x4b6b('0x24')][_0x4b6b('0x23')]);}})[_0x4b6b('0x25')](function(_0x118096){logger['error'](_0x4b6b('0x1c'),_0x381d89,_0x118096);_0x368b0c(_0x118096);});});}function respondWithStatusCode(_0x30cbae,_0x140e25){_0x140e25=_0x140e25||0xcc;return function(_0x313cff){if(_0x313cff){return _0x30cbae[_0x4b6b('0x26')](_0x140e25);}return _0x30cbae['status'](_0x140e25)[_0x4b6b('0x27')]();};}function respondWithResult(_0x352e01,_0x2b9643){_0x2b9643=_0x2b9643||0xc8;return function(_0x5c0a56){if(_0x5c0a56){return _0x352e01['status'](_0x2b9643)['json'](_0x5c0a56);}};}function respondWithFilteredResult(_0x15357b,_0x1b8ea1){return function(_0x112220){if(_0x112220){var _0x180416=typeof _0x1b8ea1[_0x4b6b('0x28')]===_0x4b6b('0x29')&&typeof _0x1b8ea1['limit']===_0x4b6b('0x29');var _0xfcd944=_0x112220[_0x4b6b('0x2a')];var _0x4a7451=_0x180416?0x0:_0x1b8ea1[_0x4b6b('0x28')];var _0x3b55b0=_0x180416?_0x112220[_0x4b6b('0x2a')]:_0x1b8ea1['offset']+_0x1b8ea1[_0x4b6b('0x2b')];var _0x477e39;if(_0x3b55b0>=_0xfcd944){_0x3b55b0=_0xfcd944;_0x477e39=0xc8;}else{_0x477e39=0xce;}_0x15357b[_0x4b6b('0x2c')](_0x477e39);return _0x15357b[_0x4b6b('0x2d')](_0x4b6b('0x2e'),_0x4a7451+'-'+_0x3b55b0+'/'+_0xfcd944)[_0x4b6b('0x2f')](_0x112220);}return null;};}function patchUpdates(_0x2b8e86){return function(_0x4d2408){try{jsonpatch[_0x4b6b('0x30')](_0x4d2408,_0x2b8e86,!![]);}catch(_0x4afe31){return BPromise[_0x4b6b('0x31')](_0x4afe31);}return _0x4d2408[_0x4b6b('0x32')]();};}function saveUpdates(_0x34375e,_0x4822d6){return function(_0x4e1a2a){if(_0x4e1a2a){return _0x4e1a2a[_0x4b6b('0x33')](_0x34375e)['then'](function(_0x503918){return _0x503918;});}return null;};}function removeEntity(_0x7c1c29,_0x55e82b){return function(_0xad0918){if(_0xad0918){return _0xad0918[_0x4b6b('0x34')]()[_0x4b6b('0x1a')](function(){var _0x5aaf5c=_0xad0918['get']({'plain':!![]});var _0xee6b99='Contexts';return db[_0x4b6b('0x35')]['destroy']({'where':{'type':_0xee6b99,'resourceId':_0x5aaf5c['id']}})['then'](function(){return _0xad0918;});})[_0x4b6b('0x1a')](function(){_0x7c1c29[_0x4b6b('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xcfaeda,_0xb6b718){return function(_0x247442){if(!_0x247442){_0xcfaeda[_0x4b6b('0x26')](0x194);}return _0x247442;};}function handleError(_0x35bd14,_0x2575a3){_0x2575a3=_0x2575a3||0x1f4;return function(_0x4a96d9){logger['error'](_0x4a96d9[_0x4b6b('0x36')]);if(_0x4a96d9[_0x4b6b('0x37')]){delete _0x4a96d9[_0x4b6b('0x37')];}_0x35bd14[_0x4b6b('0x2c')](_0x2575a3)['send'](_0x4a96d9);};}exports[_0x4b6b('0x38')]=function(_0x23ddc3,_0x1e124e){var _0x322c92={},_0x2effb9={},_0x4ea42d={'count':0x0,'rows':[]};var _0x7b911d=_[_0x4b6b('0x39')](db[_0x4b6b('0x3a')][_0x4b6b('0x3b')],function(_0x470f61){return{'name':_0x470f61['fieldName'],'type':_0x470f61[_0x4b6b('0x3c')][_0x4b6b('0x3d')]};});_0x2effb9[_0x4b6b('0x3e')]=_[_0x4b6b('0x39')](_0x7b911d,_0x4b6b('0x37'));_0x2effb9['query']=_[_0x4b6b('0x3f')](_0x23ddc3[_0x4b6b('0x40')]);_0x2effb9['filters']=_[_0x4b6b('0x41')](_0x2effb9[_0x4b6b('0x3e')],_0x2effb9['query']);_0x322c92[_0x4b6b('0x42')]=_[_0x4b6b('0x41')](_0x2effb9[_0x4b6b('0x3e')],qs[_0x4b6b('0x43')](_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x43')]));_0x322c92[_0x4b6b('0x42')]=_0x322c92[_0x4b6b('0x42')][_0x4b6b('0x44')]?_0x322c92[_0x4b6b('0x42')]:_0x2effb9[_0x4b6b('0x3e')];if(!_0x23ddc3[_0x4b6b('0x40')]['hasOwnProperty']('nolimit')){_0x322c92['limit']=qs[_0x4b6b('0x2b')](_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x2b')]);_0x322c92[_0x4b6b('0x28')]=qs[_0x4b6b('0x28')](_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x28')]);}_0x322c92['order']=qs[_0x4b6b('0x45')](_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x45')]);_0x322c92['where']=qs['filters'](_[_0x4b6b('0x46')](_0x23ddc3[_0x4b6b('0x40')],_0x2effb9[_0x4b6b('0x47')]),_0x7b911d);if(_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x48')]){_0x322c92['where']=_[_0x4b6b('0x49')](_0x322c92[_0x4b6b('0x4a')],{'$or':_[_0x4b6b('0x39')](_0x7b911d,function(_0x534f13){if(_0x534f13[_0x4b6b('0x3c')]!==_0x4b6b('0x4b')){var _0x23ac56={};_0x23ac56[_0x534f13['name']]={'$like':'%'+_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x48')]+'%'};return _0x23ac56;}})});}_0x322c92=_[_0x4b6b('0x49')]({},_0x322c92,_0x23ddc3['options']);var _0x3b5e04={'where':_0x322c92[_0x4b6b('0x4a')]};return db[_0x4b6b('0x3a')][_0x4b6b('0x2a')](_0x3b5e04)[_0x4b6b('0x1a')](function(_0x1e4f22){_0x4ea42d[_0x4b6b('0x2a')]=_0x1e4f22;if(_0x23ddc3[_0x4b6b('0x40')][_0x4b6b('0x4c')]){_0x322c92[_0x4b6b('0x4d')]=[{'all':!![]}];}return db['VoiceContext'][_0x4b6b('0x4e')](_0x322c92);})['then'](function(_0x3b37fc){_0x4ea42d['rows']=_0x3b37fc;return _0x4ea42d;})[_0x4b6b('0x1a')](respondWithFilteredResult(_0x1e124e,_0x322c92))[_0x4b6b('0x25')](handleError(_0x1e124e,null));};exports[_0x4b6b('0x4f')]=function(_0x27d975,_0xb526c9){var _0x4c2dae={'raw':![],'where':{'id':_0x27d975[_0x4b6b('0x50')]['id']}},_0x299fd2={};_0x299fd2['model']=_[_0x4b6b('0x3f')](db[_0x4b6b('0x3a')]['rawAttributes']);_0x299fd2[_0x4b6b('0x40')]=_[_0x4b6b('0x3f')](_0x27d975[_0x4b6b('0x40')]);_0x299fd2[_0x4b6b('0x47')]=_[_0x4b6b('0x41')](_0x299fd2[_0x4b6b('0x3e')],_0x299fd2['query']);_0x4c2dae[_0x4b6b('0x42')]=_['intersection'](_0x299fd2[_0x4b6b('0x3e')],qs[_0x4b6b('0x43')](_0x27d975['query'][_0x4b6b('0x43')]));_0x4c2dae[_0x4b6b('0x42')]=_0x4c2dae[_0x4b6b('0x42')]['length']?_0x4c2dae[_0x4b6b('0x42')]:_0x299fd2[_0x4b6b('0x3e')];if(_0x27d975[_0x4b6b('0x40')]['includeAll']){_0x4c2dae[_0x4b6b('0x4d')]=[{'all':!![]}];}_0x4c2dae=_[_0x4b6b('0x49')]({},_0x4c2dae,_0x27d975[_0x4b6b('0x51')]);return db[_0x4b6b('0x3a')]['find'](_0x4c2dae)[_0x4b6b('0x1a')](handleEntityNotFound(_0xb526c9,null))[_0x4b6b('0x1a')](respondWithResult(_0xb526c9,null))[_0x4b6b('0x25')](handleError(_0xb526c9,null));};exports['create']=function(_0x186def,_0x3e25ba,_0x4f7f1c){var _0x18ee34;return db['VoiceContext'][_0x4b6b('0x52')](_0x186def['body'],{'raw':!![]})[_0x4b6b('0x1a')](function(_0x3c0d82){_0x18ee34=_0x3c0d82;return db[_0x4b6b('0x3a')]['findAll']({'raw':!![]});})[_0x4b6b('0x1a')](function(_0x294f5e){var _0x62a38d=fs[_0x4b6b('0x53')](path[_0x4b6b('0x54')](config[_0x4b6b('0x55')],_0x4b6b('0x56')),_0x4b6b('0x57'));var _0x39d50d=ejs[_0x4b6b('0x58')](_0x62a38d,{'contexts':_0x294f5e||[]});fs[_0x4b6b('0x59')](_0x4b6b('0x5a'),_0x39d50d);})['then'](function(){return respondWithRpcPromise('Reload',_0x4b6b('0x52'),{'module':'chan_sip.so'});})[_0x4b6b('0x1a')](function(){var _0x3f9466=_0x186def[_0x4b6b('0x5b')][_0x4b6b('0x5c')]({'plain':!![]});if(!_0x3f9466)throw new Error(_0x4b6b('0x5d'));if(_0x3f9466[_0x4b6b('0x5e')]===_0x4b6b('0x5b')){var _0x47dd78=_0x18ee34[_0x4b6b('0x5c')]({'plain':!![]});return db[_0x4b6b('0x5f')][_0x4b6b('0x60')]({'where':{'name':_0x4b6b('0x61'),'userProfileId':_0x3f9466[_0x4b6b('0x62')]},'raw':!![]})[_0x4b6b('0x1a')](function(_0x3ebaa4){if(_0x3ebaa4&&_0x3ebaa4['autoAssociation']===0x0){return db[_0x4b6b('0x35')][_0x4b6b('0x52')]({'name':_0x47dd78['name'],'resourceId':_0x47dd78['id'],'type':_0x3ebaa4[_0x4b6b('0x37')],'sectionId':_0x3ebaa4['id']},{})['then'](function(){return _0x18ee34;});}else{return _0x18ee34;}})['catch'](function(_0x3f3c81){logger[_0x4b6b('0x21')](_0x4b6b('0x63'),_0x3f3c81);throw _0x3f3c81;});}return _0x18ee34;})['then'](respondWithResult(_0x3e25ba,0xc9))[_0x4b6b('0x25')](handleError(_0x3e25ba,null));};exports[_0x4b6b('0x33')]=function(_0x323400,_0x138997,_0x2b7635){var _0x9b0c09;return db[_0x4b6b('0x3a')][_0x4b6b('0x60')]({'where':{'id':_0x323400['params']['id']}})[_0x4b6b('0x1a')](handleEntityNotFound(_0x138997,null))[_0x4b6b('0x1a')](saveUpdates(_0x323400[_0x4b6b('0x64')],null))[_0x4b6b('0x1a')](function(_0x4e9fb9){if(_0x4e9fb9){_0x9b0c09=_0x4e9fb9;return db['VoiceContext']['findAll']({'raw':!![]});}})[_0x4b6b('0x1a')](function(_0x3bfc7b){var _0x8e78cd=fs[_0x4b6b('0x53')](path[_0x4b6b('0x54')](config['root'],_0x4b6b('0x56')),_0x4b6b('0x57'));var _0x5e68c2=ejs[_0x4b6b('0x58')](_0x8e78cd,{'contexts':_0x3bfc7b||[]});fs[_0x4b6b('0x59')](_0x4b6b('0x5a'),_0x5e68c2);})[_0x4b6b('0x1a')](function(){return respondWithRpcPromise(_0x4b6b('0x65'),'update',{'module':_0x4b6b('0x66')});})[_0x4b6b('0x1a')](function(){return _0x9b0c09;})['then'](respondWithResult(_0x138997,null))[_0x4b6b('0x25')](handleError(_0x138997,null));};exports[_0x4b6b('0x34')]=function(_0x33edd7,_0x3e66d3,_0x3d49b8){var _0x4230a3;return db[_0x4b6b('0x3a')]['find']({'where':{'id':_0x33edd7[_0x4b6b('0x50')]['id']}})[_0x4b6b('0x1a')](handleEntityNotFound(_0x3e66d3,null))[_0x4b6b('0x1a')](removeEntity(_0x3e66d3,null))['then'](function(){return db[_0x4b6b('0x3a')][_0x4b6b('0x4e')]({'raw':!![]});})[_0x4b6b('0x1a')](function(_0x3938d3){var _0x326fb3=fs[_0x4b6b('0x53')](path[_0x4b6b('0x54')](config['root'],_0x4b6b('0x56')),_0x4b6b('0x57'));var _0x19cc1d=ejs[_0x4b6b('0x58')](_0x326fb3,{'contexts':_0x3938d3});fs[_0x4b6b('0x59')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x19cc1d);return respondWithRpcPromise(_0x4b6b('0x65'),_0x4b6b('0x34'),{'module':_0x4b6b('0x66')});})[_0x4b6b('0x25')](handleError(_0x3e66d3,null));};