446aac069d0bf5dd02af79f25e1ee27e87837956
[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 _0xfc9e=['status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','get','Contexts','UserProfileResource','end','stack','name','index','map','VoiceContext','rawAttributes','fieldName','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','writeFileSync','chan_sip.so','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','ejs','lodash','jsforce','to-csv','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','debug','request\x20sent','stringify','error','message','VoiceContext,\x20%s,\x20%s','result','catch','sendStatus'];(function(_0x1b1a88,_0x18a8fe){var _0x2de49b=function(_0x4fdabc){while(--_0x4fdabc){_0x1b1a88['push'](_0x1b1a88['shift']());}};_0x2de49b(++_0x18a8fe);}(_0xfc9e,0x110));var _0xefc9=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xfc9e[_0x1b6186];return _0x186121;};'use strict';var emlformat=require(_0xefc9('0x0'));var rimraf=require(_0xefc9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xefc9('0x2'));var moment=require(_0xefc9('0x3'));var BPromise=require(_0xefc9('0x4'));var Mustache=require('mustache');var util=require(_0xefc9('0x5'));var path=require(_0xefc9('0x6'));var sox=require(_0xefc9('0x7'));var csv=require('to-csv');var ejs=require(_0xefc9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xefc9('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xefc9('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xefc9('0xb'));var querystring=require(_0xefc9('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xefc9('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xefc9('0xe'));var logger=require(_0xefc9('0xf'))(_0xefc9('0x10'));var utils=require(_0xefc9('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xefc9('0x12'));var db=require(_0xefc9('0x13'))['db'];var jayson=require(_0xefc9('0x14'));var client=jayson['client'][_0xefc9('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x1210e0,_0x30f4cc,_0x2bb1d8,_0x35f945){return new BPromise(function(_0x47ba0a,_0x2b81ee){var _0x315e46=_0x35f945||client;return _0x315e46[_0xefc9('0x16')](_0x1210e0,_0x2bb1d8)[_0xefc9('0x17')](function(_0x4e345e){logger[_0xefc9('0x18')]('VoiceContext,\x20%s,\x20%s',_0x30f4cc,'request\x20sent');logger[_0xefc9('0x19')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x30f4cc,_0xefc9('0x1a'),JSON[_0xefc9('0x1b')](_0x4e345e));if(_0x4e345e[_0xefc9('0x1c')]){if(_0x4e345e['error']['code']===0x1f4){logger[_0xefc9('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x30f4cc,_0x4e345e[_0xefc9('0x1c')][_0xefc9('0x1d')]);return _0x2b81ee(_0x4e345e[_0xefc9('0x1c')][_0xefc9('0x1d')]);}logger[_0xefc9('0x1c')](_0xefc9('0x1e'),_0x30f4cc,_0x4e345e['error'][_0xefc9('0x1d')]);return _0x47ba0a(_0x4e345e[_0xefc9('0x1c')]['message']);}else{logger[_0xefc9('0x18')](_0xefc9('0x1e'),_0x30f4cc,_0xefc9('0x1a'));_0x47ba0a(_0x4e345e[_0xefc9('0x1f')]['message']);}})[_0xefc9('0x20')](function(_0xbef17d){logger['error'](_0xefc9('0x1e'),_0x30f4cc,_0xbef17d);_0x2b81ee(_0xbef17d);});});}function respondWithStatusCode(_0x18610b,_0x2918f0){_0x2918f0=_0x2918f0||0xcc;return function(_0x2b3208){if(_0x2b3208){return _0x18610b[_0xefc9('0x21')](_0x2918f0);}return _0x18610b[_0xefc9('0x22')](_0x2918f0)['end']();};}function respondWithResult(_0x36bbe0,_0x44d72a){_0x44d72a=_0x44d72a||0xc8;return function(_0x41e20c){if(_0x41e20c){return _0x36bbe0[_0xefc9('0x22')](_0x44d72a)[_0xefc9('0x23')](_0x41e20c);}};}function respondWithFilteredResult(_0x131346,_0x4915b1){return function(_0x39ab83){if(_0x39ab83){var _0x1bba8e=typeof _0x4915b1[_0xefc9('0x24')]===_0xefc9('0x25')&&typeof _0x4915b1[_0xefc9('0x26')]==='undefined';var _0x4c8ec7=_0x39ab83['count'];var _0x3d075e=_0x1bba8e?0x0:_0x4915b1['offset'];var _0x3443dd=_0x1bba8e?_0x39ab83[_0xefc9('0x27')]:_0x4915b1['offset']+_0x4915b1['limit'];var _0x5c6b06;if(_0x3443dd>=_0x4c8ec7){_0x3443dd=_0x4c8ec7;_0x5c6b06=0xc8;}else{_0x5c6b06=0xce;}_0x131346[_0xefc9('0x22')](_0x5c6b06);return _0x131346[_0xefc9('0x28')](_0xefc9('0x29'),_0x3d075e+'-'+_0x3443dd+'/'+_0x4c8ec7)[_0xefc9('0x23')](_0x39ab83);}return null;};}function patchUpdates(_0x1fabb1){return function(_0x244e89){try{jsonpatch[_0xefc9('0x2a')](_0x244e89,_0x1fabb1,!![]);}catch(_0x421afc){return BPromise[_0xefc9('0x2b')](_0x421afc);}return _0x244e89[_0xefc9('0x2c')]();};}function saveUpdates(_0x1038d7,_0xc80bd5){return function(_0x3a2279){if(_0x3a2279){return _0x3a2279['update'](_0x1038d7)[_0xefc9('0x17')](function(_0x227528){return _0x227528;});}return null;};}function removeEntity(_0x4b6dd9,_0x308a60){return function(_0x4be115){if(_0x4be115){return _0x4be115[_0xefc9('0x2d')]()[_0xefc9('0x17')](function(){var _0x7ae148=_0x4be115[_0xefc9('0x2e')]({'plain':!![]});var _0x4f221b=_0xefc9('0x2f');return db[_0xefc9('0x30')]['destroy']({'where':{'type':_0x4f221b,'resourceId':_0x7ae148['id']}})[_0xefc9('0x17')](function(){return _0x4be115;});})[_0xefc9('0x17')](function(){_0x4b6dd9[_0xefc9('0x22')](0xcc)[_0xefc9('0x31')]();});}};}function handleEntityNotFound(_0x564898,_0x56f915){return function(_0x47754b){if(!_0x47754b){_0x564898[_0xefc9('0x21')](0x194);}return _0x47754b;};}function handleError(_0x4c4afc,_0x340f9b){_0x340f9b=_0x340f9b||0x1f4;return function(_0x5a34f5){logger[_0xefc9('0x1c')](_0x5a34f5[_0xefc9('0x32')]);if(_0x5a34f5[_0xefc9('0x33')]){delete _0x5a34f5[_0xefc9('0x33')];}_0x4c4afc[_0xefc9('0x22')](_0x340f9b)['send'](_0x5a34f5);};}exports[_0xefc9('0x34')]=function(_0x1f571e,_0x15fba6){var _0x5be854={},_0x141910={},_0xfc77a4={'count':0x0,'rows':[]};var _0xd0a1b6=_[_0xefc9('0x35')](db[_0xefc9('0x36')][_0xefc9('0x37')],function(_0x3dc021){return{'name':_0x3dc021[_0xefc9('0x38')],'type':_0x3dc021['type'][_0xefc9('0x39')]};});_0x141910['model']=_[_0xefc9('0x35')](_0xd0a1b6,'name');_0x141910[_0xefc9('0x3a')]=_[_0xefc9('0x3b')](_0x1f571e['query']);_0x141910[_0xefc9('0x3c')]=_[_0xefc9('0x3d')](_0x141910['model'],_0x141910[_0xefc9('0x3a')]);_0x5be854[_0xefc9('0x3e')]=_[_0xefc9('0x3d')](_0x141910['model'],qs[_0xefc9('0x3f')](_0x1f571e[_0xefc9('0x3a')]['fields']));_0x5be854['attributes']=_0x5be854[_0xefc9('0x3e')][_0xefc9('0x40')]?_0x5be854[_0xefc9('0x3e')]:_0x141910[_0xefc9('0x41')];if(!_0x1f571e[_0xefc9('0x3a')][_0xefc9('0x42')](_0xefc9('0x43'))){_0x5be854[_0xefc9('0x26')]=qs[_0xefc9('0x26')](_0x1f571e[_0xefc9('0x3a')][_0xefc9('0x26')]);_0x5be854[_0xefc9('0x24')]=qs[_0xefc9('0x24')](_0x1f571e[_0xefc9('0x3a')][_0xefc9('0x24')]);}_0x5be854['order']=qs[_0xefc9('0x44')](_0x1f571e[_0xefc9('0x3a')][_0xefc9('0x44')]);_0x5be854[_0xefc9('0x45')]=qs['filters'](_[_0xefc9('0x46')](_0x1f571e['query'],_0x141910[_0xefc9('0x3c')]),_0xd0a1b6);if(_0x1f571e['query'][_0xefc9('0x47')]){_0x5be854[_0xefc9('0x45')]=_[_0xefc9('0x48')](_0x5be854[_0xefc9('0x45')],{'$or':_[_0xefc9('0x35')](_0xd0a1b6,function(_0xfb3029){if(_0xfb3029[_0xefc9('0x49')]!==_0xefc9('0x4a')){var _0x1ee9aa={};_0x1ee9aa[_0xfb3029[_0xefc9('0x33')]]={'$like':'%'+_0x1f571e[_0xefc9('0x3a')][_0xefc9('0x47')]+'%'};return _0x1ee9aa;}})});}_0x5be854=_[_0xefc9('0x48')]({},_0x5be854,_0x1f571e[_0xefc9('0x4b')]);var _0xeb8f6f={'where':_0x5be854[_0xefc9('0x45')]};return db['VoiceContext']['count'](_0xeb8f6f)[_0xefc9('0x17')](function(_0x5b6edc){_0xfc77a4[_0xefc9('0x27')]=_0x5b6edc;if(_0x1f571e[_0xefc9('0x3a')][_0xefc9('0x4c')]){_0x5be854[_0xefc9('0x4d')]=[{'all':!![]}];}return db[_0xefc9('0x36')][_0xefc9('0x4e')](_0x5be854);})[_0xefc9('0x17')](function(_0x13bd7c){_0xfc77a4['rows']=_0x13bd7c;return _0xfc77a4;})['then'](respondWithFilteredResult(_0x15fba6,_0x5be854))[_0xefc9('0x20')](handleError(_0x15fba6,null));};exports[_0xefc9('0x4f')]=function(_0x42d0e9,_0x43a157){var _0x3f5bf5={'raw':![],'where':{'id':_0x42d0e9[_0xefc9('0x50')]['id']}},_0x48777d={};_0x48777d[_0xefc9('0x41')]=_[_0xefc9('0x3b')](db[_0xefc9('0x36')]['rawAttributes']);_0x48777d[_0xefc9('0x3a')]=_['keys'](_0x42d0e9[_0xefc9('0x3a')]);_0x48777d[_0xefc9('0x3c')]=_[_0xefc9('0x3d')](_0x48777d['model'],_0x48777d['query']);_0x3f5bf5[_0xefc9('0x3e')]=_[_0xefc9('0x3d')](_0x48777d[_0xefc9('0x41')],qs['fields'](_0x42d0e9[_0xefc9('0x3a')][_0xefc9('0x3f')]));_0x3f5bf5[_0xefc9('0x3e')]=_0x3f5bf5[_0xefc9('0x3e')][_0xefc9('0x40')]?_0x3f5bf5[_0xefc9('0x3e')]:_0x48777d[_0xefc9('0x41')];if(_0x42d0e9[_0xefc9('0x3a')][_0xefc9('0x4c')]){_0x3f5bf5[_0xefc9('0x4d')]=[{'all':!![]}];}_0x3f5bf5=_[_0xefc9('0x48')]({},_0x3f5bf5,_0x42d0e9['options']);return db[_0xefc9('0x36')][_0xefc9('0x51')](_0x3f5bf5)['then'](handleEntityNotFound(_0x43a157,null))[_0xefc9('0x17')](respondWithResult(_0x43a157,null))[_0xefc9('0x20')](handleError(_0x43a157,null));};exports[_0xefc9('0x52')]=function(_0x26b300,_0x295ad3,_0x1514de){var _0x41979f;return db[_0xefc9('0x36')][_0xefc9('0x52')](_0x26b300[_0xefc9('0x53')],{'raw':!![]})[_0xefc9('0x17')](function(_0x4c7698){_0x41979f=_0x4c7698;return db['VoiceContext'][_0xefc9('0x4e')]({'raw':!![]});})['then'](function(_0x6d122){var _0x1955c0=fs[_0xefc9('0x54')](path[_0xefc9('0x55')](config[_0xefc9('0x56')],_0xefc9('0x57')),_0xefc9('0x58'));var _0x118150=ejs[_0xefc9('0x59')](_0x1955c0,{'contexts':_0x6d122||[]});fs['writeFileSync'](_0xefc9('0x5a'),_0x118150);})['then'](function(){return respondWithRpcPromise(_0xefc9('0x5b'),_0xefc9('0x52'),{'module':'chan_sip.so'});})[_0xefc9('0x17')](function(){var _0x3c8c18=_0x26b300['user'][_0xefc9('0x2e')]({'plain':!![]});if(!_0x3c8c18)throw new Error(_0xefc9('0x5c'));if(_0x3c8c18[_0xefc9('0x5d')]===_0xefc9('0x5e')){var _0x37e696=_0x41979f['get']({'plain':!![]});return db[_0xefc9('0x5f')][_0xefc9('0x51')]({'where':{'name':'Contexts','userProfileId':_0x3c8c18[_0xefc9('0x60')]},'raw':!![]})['then'](function(_0x2d4bae){if(_0x2d4bae&&_0x2d4bae[_0xefc9('0x61')]===0x0){return db[_0xefc9('0x30')][_0xefc9('0x52')]({'name':_0x37e696[_0xefc9('0x33')],'resourceId':_0x37e696['id'],'type':_0x2d4bae[_0xefc9('0x33')],'sectionId':_0x2d4bae['id']},{})['then'](function(){return _0x41979f;});}else{return _0x41979f;}})['catch'](function(_0x2ecc8f){logger[_0xefc9('0x1c')](_0xefc9('0x62'),_0x2ecc8f);throw _0x2ecc8f;});}return _0x41979f;})['then'](respondWithResult(_0x295ad3,0xc9))[_0xefc9('0x20')](handleError(_0x295ad3,null));};exports['update']=function(_0x3ad470,_0x9d5dfa,_0x15d4f1){var _0x1504b9;return db[_0xefc9('0x36')][_0xefc9('0x51')]({'where':{'id':_0x3ad470[_0xefc9('0x50')]['id']}})[_0xefc9('0x17')](handleEntityNotFound(_0x9d5dfa,null))[_0xefc9('0x17')](saveUpdates(_0x3ad470[_0xefc9('0x53')],null))[_0xefc9('0x17')](function(_0x31a101){if(_0x31a101){_0x1504b9=_0x31a101;return db[_0xefc9('0x36')][_0xefc9('0x4e')]({'raw':!![]});}})[_0xefc9('0x17')](function(_0x1ae376){var _0x535050=fs[_0xefc9('0x54')](path[_0xefc9('0x55')](config[_0xefc9('0x56')],_0xefc9('0x57')),_0xefc9('0x58'));var _0x51c7bd=ejs['render'](_0x535050,{'contexts':_0x1ae376||[]});fs['writeFileSync'](_0xefc9('0x5a'),_0x51c7bd);})['then'](function(){return respondWithRpcPromise('Reload',_0xefc9('0x63'),{'module':'chan_sip.so'});})[_0xefc9('0x17')](function(){return _0x1504b9;})['then'](respondWithResult(_0x9d5dfa,null))[_0xefc9('0x20')](handleError(_0x9d5dfa,null));};exports['destroy']=function(_0x6b5ec4,_0x29831a,_0x15b19c){var _0x22b3ba;return db[_0xefc9('0x36')][_0xefc9('0x51')]({'where':{'id':_0x6b5ec4['params']['id']}})[_0xefc9('0x17')](handleEntityNotFound(_0x29831a,null))['then'](removeEntity(_0x29831a,null))[_0xefc9('0x17')](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0xefc9('0x17')](function(_0x5f1a58){var _0x33367e=fs['readFileSync'](path['join'](config['root'],_0xefc9('0x57')),_0xefc9('0x58'));var _0x3c5c16=ejs[_0xefc9('0x59')](_0x33367e,{'contexts':_0x5f1a58});fs[_0xefc9('0x64')](_0xefc9('0x5a'),_0x3c5c16);return respondWithRpcPromise(_0xefc9('0x5b'),_0xefc9('0x2d'),{'module':_0xefc9('0x65')});})['catch'](handleError(_0x29831a,null));};