45560bb3e56750c3965763a1edb02df64572b27c
[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 _0xe3cd=['then','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','destroy','get','stack','name','send','index','map','VoiceContext','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','include','options','create','body','findAll','readFileSync','join','root','server/files/templates/context.ejs','utf8','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Contexts','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xe3cd,0x196));var _0xde3c=function(_0x474dc9,_0x596e7a){_0x474dc9=_0x474dc9-0x0;var _0x1ba9d6=_0xe3cd[_0x474dc9];return _0x1ba9d6;};'use strict';var emlformat=require(_0xde3c('0x0'));var rimraf=require(_0xde3c('0x1'));var zipdir=require(_0xde3c('0x2'));var jsonpatch=require(_0xde3c('0x3'));var rp=require(_0xde3c('0x4'));var moment=require(_0xde3c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xde3c('0x6'));var util=require(_0xde3c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xde3c('0x8'));var ejs=require(_0xde3c('0x9'));var fs=require('fs');var fs_extra=require(_0xde3c('0xa'));var _=require(_0xde3c('0xb'));var squel=require(_0xde3c('0xc'));var crypto=require(_0xde3c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xde3c('0xe'));var toCsv=require(_0xde3c('0x8'));var querystring=require(_0xde3c('0xf'));var Papa=require(_0xde3c('0x10'));var Redis=require('ioredis');var authService=require(_0xde3c('0x11'));var qs=require(_0xde3c('0x12'));var as=require(_0xde3c('0x13'));var hardwareService=require(_0xde3c('0x14'));var logger=require(_0xde3c('0x15'))('api');var utils=require(_0xde3c('0x16'));var config=require(_0xde3c('0x17'));var licenseUtil=require(_0xde3c('0x18'));var db=require(_0xde3c('0x19'))['db'];var jayson=require(_0xde3c('0x1a'));var client=jayson[_0xde3c('0x1b')][_0xde3c('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1438ca,_0x3b271d,_0x2dc474,_0xa08cb7){return new BPromise(function(_0x1f109e,_0x3bd6ee){var _0x330802=_0xa08cb7||client;return _0x330802[_0xde3c('0x1d')](_0x1438ca,_0x2dc474)[_0xde3c('0x1e')](function(_0x151758){logger['info']('VoiceContext,\x20%s,\x20%s',_0x3b271d,_0xde3c('0x1f'));logger[_0xde3c('0x20')](_0xde3c('0x21'),_0x3b271d,_0xde3c('0x1f'),JSON[_0xde3c('0x22')](_0x151758));if(_0x151758[_0xde3c('0x23')]){if(_0x151758[_0xde3c('0x23')][_0xde3c('0x24')]===0x1f4){logger[_0xde3c('0x23')](_0xde3c('0x25'),_0x3b271d,_0x151758[_0xde3c('0x23')][_0xde3c('0x26')]);return _0x3bd6ee(_0x151758[_0xde3c('0x23')]['message']);}logger['error']('VoiceContext,\x20%s,\x20%s',_0x3b271d,_0x151758['error'][_0xde3c('0x26')]);return _0x1f109e(_0x151758[_0xde3c('0x23')]['message']);}else{logger[_0xde3c('0x27')](_0xde3c('0x25'),_0x3b271d,'request\x20sent');_0x1f109e(_0x151758[_0xde3c('0x28')][_0xde3c('0x26')]);}})[_0xde3c('0x29')](function(_0x4f1fb3){logger[_0xde3c('0x23')](_0xde3c('0x25'),_0x3b271d,_0x4f1fb3);_0x3bd6ee(_0x4f1fb3);});});}function respondWithStatusCode(_0x558d94,_0x225354){_0x225354=_0x225354||0xcc;return function(_0x40f440){if(_0x40f440){return _0x558d94[_0xde3c('0x2a')](_0x225354);}return _0x558d94['status'](_0x225354)[_0xde3c('0x2b')]();};}function respondWithResult(_0x21e95d,_0x3888d8){_0x3888d8=_0x3888d8||0xc8;return function(_0x101fe2){if(_0x101fe2){return _0x21e95d[_0xde3c('0x2c')](_0x3888d8)['json'](_0x101fe2);}};}function respondWithFilteredResult(_0x51a564,_0x38a2e8){return function(_0x2e3c62){if(_0x2e3c62){var _0x316beb=typeof _0x38a2e8[_0xde3c('0x2d')]===_0xde3c('0x2e')&&typeof _0x38a2e8[_0xde3c('0x2f')]==='undefined';var _0x45ba7f=_0x2e3c62[_0xde3c('0x30')];var _0x420731=_0x316beb?0x0:_0x38a2e8[_0xde3c('0x2d')];var _0x2752be=_0x316beb?_0x2e3c62[_0xde3c('0x30')]:_0x38a2e8[_0xde3c('0x2d')]+_0x38a2e8[_0xde3c('0x2f')];var _0x256503;if(_0x2752be>=_0x45ba7f){_0x2752be=_0x45ba7f;_0x256503=0xc8;}else{_0x256503=0xce;}_0x51a564[_0xde3c('0x2c')](_0x256503);return _0x51a564[_0xde3c('0x31')](_0xde3c('0x32'),_0x420731+'-'+_0x2752be+'/'+_0x45ba7f)[_0xde3c('0x33')](_0x2e3c62);}return null;};}function patchUpdates(_0x1e12f4){return function(_0xdcf01a){try{jsonpatch['apply'](_0xdcf01a,_0x1e12f4,!![]);}catch(_0x3a956b){return BPromise[_0xde3c('0x34')](_0x3a956b);}return _0xdcf01a['save']();};}function saveUpdates(_0xd7c4db,_0x5dd548){return function(_0x4cd151){if(_0x4cd151){return _0x4cd151[_0xde3c('0x35')](_0xd7c4db)['then'](function(_0x1267bb){return _0x1267bb;});}return null;};}function removeEntity(_0x1c58d6,_0x479f1c){return function(_0x4a562d){if(_0x4a562d){return _0x4a562d[_0xde3c('0x36')]()[_0xde3c('0x1e')](function(){var _0x1f3f55=_0x4a562d[_0xde3c('0x37')]({'plain':!![]});var _0x3e89d4='Contexts';return db['UserProfileResource'][_0xde3c('0x36')]({'where':{'type':_0x3e89d4,'resourceId':_0x1f3f55['id']}})[_0xde3c('0x1e')](function(){return _0x4a562d;});})[_0xde3c('0x1e')](function(){_0x1c58d6[_0xde3c('0x2c')](0xcc)[_0xde3c('0x2b')]();});}};}function handleEntityNotFound(_0x1e89a4,_0x1c2b33){return function(_0x4a24a7){if(!_0x4a24a7){_0x1e89a4[_0xde3c('0x2a')](0x194);}return _0x4a24a7;};}function handleError(_0x1c68ec,_0x803f30){_0x803f30=_0x803f30||0x1f4;return function(_0x3ced82){logger[_0xde3c('0x23')](_0x3ced82[_0xde3c('0x38')]);if(_0x3ced82[_0xde3c('0x39')]){delete _0x3ced82['name'];}_0x1c68ec[_0xde3c('0x2c')](_0x803f30)[_0xde3c('0x3a')](_0x3ced82);};}exports[_0xde3c('0x3b')]=function(_0x39c997,_0x3a6f81){var _0x58f008={},_0x39c178={},_0x2da6d8={'count':0x0,'rows':[]};var _0x14cd13=_[_0xde3c('0x3c')](db[_0xde3c('0x3d')][_0xde3c('0x3e')],function(_0x23da78){return{'name':_0x23da78['fieldName'],'type':_0x23da78[_0xde3c('0x3f')][_0xde3c('0x40')]};});_0x39c178[_0xde3c('0x41')]=_['map'](_0x14cd13,'name');_0x39c178[_0xde3c('0x42')]=_[_0xde3c('0x43')](_0x39c997[_0xde3c('0x42')]);_0x39c178[_0xde3c('0x44')]=_['intersection'](_0x39c178[_0xde3c('0x41')],_0x39c178['query']);_0x58f008[_0xde3c('0x45')]=_[_0xde3c('0x46')](_0x39c178[_0xde3c('0x41')],qs[_0xde3c('0x47')](_0x39c997[_0xde3c('0x42')][_0xde3c('0x47')]));_0x58f008[_0xde3c('0x45')]=_0x58f008['attributes'][_0xde3c('0x48')]?_0x58f008[_0xde3c('0x45')]:_0x39c178[_0xde3c('0x41')];if(!_0x39c997['query'][_0xde3c('0x49')](_0xde3c('0x4a'))){_0x58f008[_0xde3c('0x2f')]=qs[_0xde3c('0x2f')](_0x39c997['query'][_0xde3c('0x2f')]);_0x58f008['offset']=qs['offset'](_0x39c997[_0xde3c('0x42')][_0xde3c('0x2d')]);}_0x58f008['order']=qs[_0xde3c('0x4b')](_0x39c997[_0xde3c('0x42')][_0xde3c('0x4b')]);_0x58f008[_0xde3c('0x4c')]=qs[_0xde3c('0x44')](_[_0xde3c('0x4d')](_0x39c997['query'],_0x39c178[_0xde3c('0x44')]),_0x14cd13);if(_0x39c997[_0xde3c('0x42')][_0xde3c('0x4e')]){_0x58f008[_0xde3c('0x4c')]=_[_0xde3c('0x4f')](_0x58f008['where'],{'$or':_[_0xde3c('0x3c')](_0x14cd13,function(_0x4acfe1){if(_0x4acfe1[_0xde3c('0x3f')]!==_0xde3c('0x50')){var _0x4d5f0a={};_0x4d5f0a[_0x4acfe1['name']]={'$like':'%'+_0x39c997[_0xde3c('0x42')][_0xde3c('0x4e')]+'%'};return _0x4d5f0a;}})});}_0x58f008=_[_0xde3c('0x4f')]({},_0x58f008,_0x39c997['options']);var _0x35cbf5={'where':_0x58f008[_0xde3c('0x4c')]};return db[_0xde3c('0x3d')]['count'](_0x35cbf5)[_0xde3c('0x1e')](function(_0x1a0a8b){_0x2da6d8['count']=_0x1a0a8b;if(_0x39c997[_0xde3c('0x42')][_0xde3c('0x51')]){_0x58f008['include']=[{'all':!![]}];}return db['VoiceContext']['findAll'](_0x58f008);})[_0xde3c('0x1e')](function(_0x2b6d23){_0x2da6d8[_0xde3c('0x52')]=_0x2b6d23;return _0x2da6d8;})[_0xde3c('0x1e')](respondWithFilteredResult(_0x3a6f81,_0x58f008))['catch'](handleError(_0x3a6f81,null));};exports['show']=function(_0x36b270,_0x5ad3bc){var _0x5dc9dc={'raw':![],'where':{'id':_0x36b270['params']['id']}},_0x40db45={};_0x40db45['model']=_['keys'](db[_0xde3c('0x3d')][_0xde3c('0x3e')]);_0x40db45[_0xde3c('0x42')]=_[_0xde3c('0x43')](_0x36b270[_0xde3c('0x42')]);_0x40db45[_0xde3c('0x44')]=_[_0xde3c('0x46')](_0x40db45[_0xde3c('0x41')],_0x40db45['query']);_0x5dc9dc[_0xde3c('0x45')]=_[_0xde3c('0x46')](_0x40db45[_0xde3c('0x41')],qs['fields'](_0x36b270[_0xde3c('0x42')][_0xde3c('0x47')]));_0x5dc9dc['attributes']=_0x5dc9dc[_0xde3c('0x45')][_0xde3c('0x48')]?_0x5dc9dc[_0xde3c('0x45')]:_0x40db45[_0xde3c('0x41')];if(_0x36b270[_0xde3c('0x42')]['includeAll']){_0x5dc9dc[_0xde3c('0x53')]=[{'all':!![]}];}_0x5dc9dc=_[_0xde3c('0x4f')]({},_0x5dc9dc,_0x36b270[_0xde3c('0x54')]);return db[_0xde3c('0x3d')]['find'](_0x5dc9dc)[_0xde3c('0x1e')](handleEntityNotFound(_0x5ad3bc,null))[_0xde3c('0x1e')](respondWithResult(_0x5ad3bc,null))[_0xde3c('0x29')](handleError(_0x5ad3bc,null));};exports[_0xde3c('0x55')]=function(_0x5f30ef,_0x39b9f3,_0x5b1649){var _0x1d48ab;return db[_0xde3c('0x3d')][_0xde3c('0x55')](_0x5f30ef[_0xde3c('0x56')],{'raw':!![]})[_0xde3c('0x1e')](function(_0x2ed0ab){_0x1d48ab=_0x2ed0ab;return db[_0xde3c('0x3d')][_0xde3c('0x57')]({'raw':!![]});})[_0xde3c('0x1e')](function(_0x397538){var _0x89d678=fs[_0xde3c('0x58')](path[_0xde3c('0x59')](config[_0xde3c('0x5a')],_0xde3c('0x5b')),_0xde3c('0x5c'));var _0x1968db=ejs['render'](_0x89d678,{'contexts':_0x397538||[]});fs['writeFileSync']('/etc/asterisk/extensions_xcally_contexts.conf',_0x1968db);})[_0xde3c('0x1e')](function(){return respondWithRpcPromise(_0xde3c('0x5d'),_0xde3c('0x55'),{'module':_0xde3c('0x5e')});})[_0xde3c('0x1e')](function(){var _0x4a5b4b=_0x5f30ef[_0xde3c('0x5f')]['get']({'plain':!![]});if(!_0x4a5b4b)throw new Error(_0xde3c('0x60'));if(_0x4a5b4b[_0xde3c('0x61')]===_0xde3c('0x5f')){var _0x1c9632=_0x1d48ab[_0xde3c('0x37')]({'plain':!![]});return db[_0xde3c('0x62')][_0xde3c('0x63')]({'where':{'name':_0xde3c('0x64'),'userProfileId':_0x4a5b4b[_0xde3c('0x65')]},'raw':!![]})[_0xde3c('0x1e')](function(_0x1fec90){if(_0x1fec90&&_0x1fec90[_0xde3c('0x66')]===0x0){return db[_0xde3c('0x67')][_0xde3c('0x55')]({'name':_0x1c9632['name'],'resourceId':_0x1c9632['id'],'type':_0x1fec90[_0xde3c('0x39')],'sectionId':_0x1fec90['id']},{})[_0xde3c('0x1e')](function(){return _0x1d48ab;});}else{return _0x1d48ab;}})[_0xde3c('0x29')](function(_0xa5903b){logger['error'](_0xde3c('0x68'),_0xa5903b);throw _0xa5903b;});}return _0x1d48ab;})[_0xde3c('0x1e')](respondWithResult(_0x39b9f3,0xc9))[_0xde3c('0x29')](handleError(_0x39b9f3,null));};exports[_0xde3c('0x35')]=function(_0x4fcca5,_0x1c33ca,_0x24400f){var _0x1bd71b;return db['VoiceContext'][_0xde3c('0x63')]({'where':{'id':_0x4fcca5[_0xde3c('0x69')]['id']}})[_0xde3c('0x1e')](handleEntityNotFound(_0x1c33ca,null))['then'](saveUpdates(_0x4fcca5['body'],null))[_0xde3c('0x1e')](function(_0xb8ccbd){if(_0xb8ccbd){_0x1bd71b=_0xb8ccbd;return db['VoiceContext']['findAll']({'raw':!![]});}})['then'](function(_0x4f5d10){var _0xd80635=fs[_0xde3c('0x58')](path[_0xde3c('0x59')](config[_0xde3c('0x5a')],'server/files/templates/context.ejs'),_0xde3c('0x5c'));var _0x29804c=ejs[_0xde3c('0x6a')](_0xd80635,{'contexts':_0x4f5d10||[]});fs[_0xde3c('0x6b')](_0xde3c('0x6c'),_0x29804c);})[_0xde3c('0x1e')](function(){return respondWithRpcPromise(_0xde3c('0x5d'),_0xde3c('0x35'),{'module':'chan_sip.so'});})['then'](function(){return _0x1bd71b;})[_0xde3c('0x1e')](respondWithResult(_0x1c33ca,null))[_0xde3c('0x29')](handleError(_0x1c33ca,null));};exports['destroy']=function(_0x452cd4,_0x38192c,_0x1c03ac){var _0x1e5e1b;return db[_0xde3c('0x3d')][_0xde3c('0x63')]({'where':{'id':_0x452cd4[_0xde3c('0x69')]['id']}})[_0xde3c('0x1e')](handleEntityNotFound(_0x38192c,null))['then'](removeEntity(_0x38192c,null))[_0xde3c('0x1e')](function(){return db[_0xde3c('0x3d')][_0xde3c('0x57')]({'raw':!![]});})[_0xde3c('0x1e')](function(_0x309e67){var _0x15c0ff=fs[_0xde3c('0x58')](path[_0xde3c('0x59')](config[_0xde3c('0x5a')],_0xde3c('0x5b')),_0xde3c('0x5c'));var _0x3e0a90=ejs[_0xde3c('0x6a')](_0x15c0ff,{'contexts':_0x309e67});fs[_0xde3c('0x6b')](_0xde3c('0x6c'),_0x3e0a90);return respondWithRpcPromise(_0xde3c('0x5d'),'destroy',{'module':'chan_sip.so'});})['catch'](handleError(_0x38192c,null));};