99556a73593d45e7e41ea26bd495730f97848290
[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 _0x340c=['find','create','readFileSync','root','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','join','server/files/templates/context.ejs','render','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','offset','limit','set','Content-Range','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','end','stack','name','index','VoiceContext','rawAttributes','fieldName','type','key','map','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','count','include','findAll','params','keys','includeAll'];(function(_0x44268d,_0xad8443){var _0x4be92d=function(_0x8a57ff){while(--_0x8a57ff){_0x44268d['push'](_0x44268d['shift']());}};_0x4be92d(++_0xad8443);}(_0x340c,0xe5));var _0xc340=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x340c[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0xc340('0x0'));var emlformat=require(_0xc340('0x1'));var rimraf=require(_0xc340('0x2'));var zipdir=require(_0xc340('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc340('0x4'));var moment=require(_0xc340('0x5'));var BPromise=require(_0xc340('0x6'));var Mustache=require(_0xc340('0x7'));var util=require('util');var path=require(_0xc340('0x8'));var sox=require(_0xc340('0x9'));var csv=require(_0xc340('0xa'));var ejs=require(_0xc340('0xb'));var fs=require('fs');var _=require(_0xc340('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc340('0xd'));var toCsv=require(_0xc340('0xa'));var querystring=require('querystring');var Papa=require(_0xc340('0xe'));var Redis=require(_0xc340('0xf'));var authService=require(_0xc340('0x10'));var qs=require(_0xc340('0x11'));var as=require(_0xc340('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc340('0x13'))(_0xc340('0x14'));var utils=require(_0xc340('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc340('0x16'));var db=require(_0xc340('0x17'))['db'];var jayson=require(_0xc340('0x18'));var client=jayson[_0xc340('0x19')][_0xc340('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x50365c,_0x13c360,_0x7c70c8,_0x340563){return new BPromise(function(_0x10b317,_0x2f257b){var _0x4abaa9=_0x340563||client;return _0x4abaa9[_0xc340('0x1b')](_0x50365c,_0x7c70c8)[_0xc340('0x1c')](function(_0x2609b2){logger[_0xc340('0x1d')](_0xc340('0x1e'),_0x13c360,'request\x20sent');logger[_0xc340('0x1f')](_0xc340('0x20'),_0x13c360,_0xc340('0x21'),JSON[_0xc340('0x22')](_0x2609b2));if(_0x2609b2[_0xc340('0x23')]){if(_0x2609b2['error'][_0xc340('0x24')]===0x1f4){logger[_0xc340('0x23')](_0xc340('0x1e'),_0x13c360,_0x2609b2['error']['message']);return _0x2f257b(_0x2609b2[_0xc340('0x23')][_0xc340('0x25')]);}logger[_0xc340('0x23')]('VoiceContext,\x20%s,\x20%s',_0x13c360,_0x2609b2['error'][_0xc340('0x25')]);return _0x10b317(_0x2609b2['error'][_0xc340('0x25')]);}else{logger[_0xc340('0x1d')](_0xc340('0x1e'),_0x13c360,_0xc340('0x21'));_0x10b317(_0x2609b2[_0xc340('0x26')][_0xc340('0x25')]);}})[_0xc340('0x27')](function(_0xb6e946){logger[_0xc340('0x23')](_0xc340('0x1e'),_0x13c360,_0xb6e946);_0x2f257b(_0xb6e946);});});}function respondWithStatusCode(_0x5ac403,_0x10543e){_0x10543e=_0x10543e||0xcc;return function(_0x250dbd){if(_0x250dbd){return _0x5ac403['sendStatus'](_0x10543e);}return _0x5ac403[_0xc340('0x28')](_0x10543e)['end']();};}function respondWithResult(_0x334744,_0x7852b1){_0x7852b1=_0x7852b1||0xc8;return function(_0x36ea03){if(_0x36ea03){return _0x334744['status'](_0x7852b1)[_0xc340('0x29')](_0x36ea03);}};}function respondWithFilteredResult(_0x1f0359,_0x33b1b5){return function(_0x183bfa){if(_0x183bfa){var _0xd9e330=_0x183bfa['count'],_0xedbb6f=_0x33b1b5[_0xc340('0x2a')],_0x3397ef=_0x33b1b5[_0xc340('0x2a')]+_0x33b1b5[_0xc340('0x2b')],_0x4bbddf;if(_0x3397ef>=_0xd9e330){_0x3397ef=_0xd9e330;_0x4bbddf=0xc8;}else{_0x4bbddf=0xce;}_0x1f0359[_0xc340('0x28')](_0x4bbddf);return _0x1f0359[_0xc340('0x2c')](_0xc340('0x2d'),_0xedbb6f+'-'+_0x3397ef+'/'+_0xd9e330)['json'](_0x183bfa);}return null;};}function patchUpdates(_0x160c38){return function(_0x1b6b00){try{jsonpatch[_0xc340('0x2e')](_0x1b6b00,_0x160c38,!![]);}catch(_0x197510){return BPromise[_0xc340('0x2f')](_0x197510);}return _0x1b6b00[_0xc340('0x30')]();};}function saveUpdates(_0x1f632d,_0x5e46e1){return function(_0x5d84e2){if(_0x5d84e2){return _0x5d84e2[_0xc340('0x31')](_0x1f632d)[_0xc340('0x1c')](function(_0x28cade){return _0x28cade;});}return null;};}function removeEntity(_0x9c8c7,_0x42ea78){return function(_0x3d34a4){if(_0x3d34a4){return _0x3d34a4[_0xc340('0x32')]()['then'](function(){var _0x20a8ed=_0x3d34a4[_0xc340('0x33')]({'plain':!![]});var _0x59b435=_0xc340('0x34');return db[_0xc340('0x35')][_0xc340('0x32')]({'where':{'type':_0x59b435,'resourceId':_0x20a8ed['id']}})['then'](function(){return _0x3d34a4;});})[_0xc340('0x1c')](function(){_0x9c8c7[_0xc340('0x28')](0xcc)[_0xc340('0x36')]();});}};}function handleEntityNotFound(_0x58b6b3,_0x17bd9b){return function(_0x2ece6f){if(!_0x2ece6f){_0x58b6b3['sendStatus'](0x194);}return _0x2ece6f;};}function handleError(_0x430b1b,_0x560ecb){_0x560ecb=_0x560ecb||0x1f4;return function(_0x309f2d){logger[_0xc340('0x23')](_0x309f2d[_0xc340('0x37')]);if(_0x309f2d['name']){delete _0x309f2d[_0xc340('0x38')];}_0x430b1b[_0xc340('0x28')](_0x560ecb)['send'](_0x309f2d);};}exports[_0xc340('0x39')]=function(_0x1407da,_0x317e5d){var _0x1eefc3={},_0xdb363c={},_0x3ed2aa={'count':0x0,'rows':[]};var _0x1c37bb=_['map'](db[_0xc340('0x3a')][_0xc340('0x3b')],function(_0x5443d5){return{'name':_0x5443d5[_0xc340('0x3c')],'type':_0x5443d5[_0xc340('0x3d')][_0xc340('0x3e')]};});_0xdb363c['model']=_[_0xc340('0x3f')](_0x1c37bb,_0xc340('0x38'));_0xdb363c[_0xc340('0x40')]=_['keys'](_0x1407da[_0xc340('0x40')]);_0xdb363c['filters']=_['intersection'](_0xdb363c['model'],_0xdb363c[_0xc340('0x40')]);_0x1eefc3['attributes']=_[_0xc340('0x41')](_0xdb363c[_0xc340('0x42')],qs['fields'](_0x1407da[_0xc340('0x40')][_0xc340('0x43')]));_0x1eefc3[_0xc340('0x44')]=_0x1eefc3['attributes'][_0xc340('0x45')]?_0x1eefc3['attributes']:_0xdb363c[_0xc340('0x42')];if(!_0x1407da[_0xc340('0x40')][_0xc340('0x46')](_0xc340('0x47'))){_0x1eefc3[_0xc340('0x2b')]=qs[_0xc340('0x2b')](_0x1407da[_0xc340('0x40')][_0xc340('0x2b')]);_0x1eefc3[_0xc340('0x2a')]=qs['offset'](_0x1407da['query'][_0xc340('0x2a')]);}_0x1eefc3[_0xc340('0x48')]=qs[_0xc340('0x49')](_0x1407da['query']['sort']);_0x1eefc3[_0xc340('0x4a')]=qs[_0xc340('0x4b')](_[_0xc340('0x4c')](_0x1407da[_0xc340('0x40')],_0xdb363c[_0xc340('0x4b')]),_0x1c37bb);if(_0x1407da[_0xc340('0x40')][_0xc340('0x4d')]){_0x1eefc3[_0xc340('0x4a')]=_[_0xc340('0x4e')](_0x1eefc3[_0xc340('0x4a')],{'$or':_[_0xc340('0x3f')](_0x1c37bb,function(_0x4df518){if(_0x4df518[_0xc340('0x3d')]!==_0xc340('0x4f')){var _0x46b838={};_0x46b838[_0x4df518[_0xc340('0x38')]]={'$like':'%'+_0x1407da[_0xc340('0x40')][_0xc340('0x4d')]+'%'};return _0x46b838;}})});}_0x1eefc3=_[_0xc340('0x4e')]({},_0x1eefc3,_0x1407da['options']);var _0x45a595={'where':_0x1eefc3[_0xc340('0x4a')]};return db[_0xc340('0x3a')][_0xc340('0x50')](_0x45a595)[_0xc340('0x1c')](function(_0x12bd52){_0x3ed2aa[_0xc340('0x50')]=_0x12bd52;if(_0x1407da['query']['includeAll']){_0x1eefc3[_0xc340('0x51')]=[{'all':!![]}];}return db[_0xc340('0x3a')][_0xc340('0x52')](_0x1eefc3);})[_0xc340('0x1c')](function(_0x17b842){_0x3ed2aa['rows']=_0x17b842;return _0x3ed2aa;})['then'](respondWithFilteredResult(_0x317e5d,_0x1eefc3))[_0xc340('0x27')](handleError(_0x317e5d,null));};exports['show']=function(_0x47d860,_0x4ad5c8){var _0x29d5ad={'raw':![],'where':{'id':_0x47d860[_0xc340('0x53')]['id']}},_0x44314c={};_0x44314c[_0xc340('0x42')]=_[_0xc340('0x54')](db[_0xc340('0x3a')][_0xc340('0x3b')]);_0x44314c[_0xc340('0x40')]=_[_0xc340('0x54')](_0x47d860[_0xc340('0x40')]);_0x44314c[_0xc340('0x4b')]=_[_0xc340('0x41')](_0x44314c['model'],_0x44314c['query']);_0x29d5ad[_0xc340('0x44')]=_[_0xc340('0x41')](_0x44314c[_0xc340('0x42')],qs[_0xc340('0x43')](_0x47d860['query']['fields']));_0x29d5ad[_0xc340('0x44')]=_0x29d5ad['attributes'][_0xc340('0x45')]?_0x29d5ad['attributes']:_0x44314c['model'];if(_0x47d860[_0xc340('0x40')][_0xc340('0x55')]){_0x29d5ad[_0xc340('0x51')]=[{'all':!![]}];}_0x29d5ad=_[_0xc340('0x4e')]({},_0x29d5ad,_0x47d860['options']);return db['VoiceContext'][_0xc340('0x56')](_0x29d5ad)['then'](handleEntityNotFound(_0x4ad5c8,null))['then'](respondWithResult(_0x4ad5c8,null))[_0xc340('0x27')](handleError(_0x4ad5c8,null));};exports[_0xc340('0x57')]=function(_0x5945ba,_0xbfc132,_0x178c5e){var _0x4a2357;return db['VoiceContext']['create'](_0x5945ba['body'],{'raw':!![]})[_0xc340('0x1c')](function(_0x46a366){_0x4a2357=_0x46a366;return db[_0xc340('0x3a')][_0xc340('0x52')]({'raw':!![]});})[_0xc340('0x1c')](function(_0x5178f1){var _0x328e89=fs[_0xc340('0x58')](path['join'](config[_0xc340('0x59')],'server/files/templates/context.ejs'),_0xc340('0x5a'));var _0x436415=ejs['render'](_0x328e89,{'contexts':_0x5178f1||[]});fs[_0xc340('0x5b')](_0xc340('0x5c'),_0x436415);})[_0xc340('0x1c')](function(){return respondWithRpcPromise(_0xc340('0x5d'),_0xc340('0x57'),{'module':_0xc340('0x5e')});})[_0xc340('0x1c')](function(){var _0x34d8e7=_0x5945ba['user'][_0xc340('0x33')]({'plain':!![]});if(!_0x34d8e7)throw new Error(_0xc340('0x5f'));if(_0x34d8e7['role']===_0xc340('0x60')){var _0x163ae8=_0x4a2357[_0xc340('0x33')]({'plain':!![]});return db[_0xc340('0x61')][_0xc340('0x56')]({'where':{'name':'Contexts','userProfileId':_0x34d8e7[_0xc340('0x62')]},'raw':!![]})[_0xc340('0x1c')](function(_0x38f855){if(_0x38f855&&_0x38f855[_0xc340('0x63')]===0x0){return db[_0xc340('0x35')][_0xc340('0x57')]({'name':_0x163ae8[_0xc340('0x38')],'resourceId':_0x163ae8['id'],'type':_0x38f855[_0xc340('0x38')],'sectionId':_0x38f855['id']},{})[_0xc340('0x1c')](function(){return _0x4a2357;});}else{return _0x4a2357;}})[_0xc340('0x27')](function(_0x14c5d5){logger[_0xc340('0x23')](_0xc340('0x64'),_0x14c5d5);throw _0x14c5d5;});}return _0x4a2357;})['then'](respondWithResult(_0xbfc132,0xc9))['catch'](handleError(_0xbfc132,null));};exports[_0xc340('0x31')]=function(_0x154e52,_0x2e7396,_0x5687af){var _0x545796;return db['VoiceContext'][_0xc340('0x56')]({'where':{'id':_0x154e52[_0xc340('0x53')]['id']}})[_0xc340('0x1c')](handleEntityNotFound(_0x2e7396,null))['then'](saveUpdates(_0x154e52[_0xc340('0x65')],null))[_0xc340('0x1c')](function(_0x3fe579){if(_0x3fe579){_0x545796=_0x3fe579;return db[_0xc340('0x3a')][_0xc340('0x52')]({'raw':!![]});}})[_0xc340('0x1c')](function(_0x59880b){var _0x1285ec=fs[_0xc340('0x58')](path[_0xc340('0x66')](config['root'],_0xc340('0x67')),_0xc340('0x5a'));var _0x1f4a35=ejs[_0xc340('0x68')](_0x1285ec,{'contexts':_0x59880b||[]});fs[_0xc340('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x1f4a35);})[_0xc340('0x1c')](function(){return respondWithRpcPromise('Reload',_0xc340('0x31'),{'module':_0xc340('0x5e')});})['then'](function(){return _0x545796;})[_0xc340('0x1c')](respondWithResult(_0x2e7396,null))[_0xc340('0x27')](handleError(_0x2e7396,null));};exports[_0xc340('0x32')]=function(_0x1dd168,_0x3a70e9,_0x39af16){var _0x58b8d8;return db[_0xc340('0x3a')][_0xc340('0x56')]({'where':{'id':_0x1dd168[_0xc340('0x53')]['id']}})[_0xc340('0x1c')](handleEntityNotFound(_0x3a70e9,null))[_0xc340('0x1c')](removeEntity(_0x3a70e9,null))[_0xc340('0x1c')](function(){return db[_0xc340('0x3a')]['findAll']({'raw':!![]});})[_0xc340('0x1c')](function(_0x524702){var _0x246fe2=fs[_0xc340('0x58')](path[_0xc340('0x66')](config[_0xc340('0x59')],_0xc340('0x67')),_0xc340('0x5a'));var _0x443963=ejs[_0xc340('0x68')](_0x246fe2,{'contexts':_0x524702});fs[_0xc340('0x5b')](_0xc340('0x5c'),_0x443963);return respondWithRpcPromise(_0xc340('0x5d'),_0xc340('0x32'),{'module':'chan_sip.so'});})[_0xc340('0x27')](handleError(_0x3a70e9,null));};