f911f2393c18338757fc6507de9e6aacafcc616b
[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 _0x64b2=['writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/context.ejs','render','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','stack','name','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','intersection','query','attributes','fields','length','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','show','params','keys','filters','includeAll','find','create','body','readFileSync','join','root','utf8'];(function(_0x4ab3fb,_0x776775){var _0x34fe1e=function(_0x1c94c5){while(--_0x1c94c5){_0x4ab3fb['push'](_0x4ab3fb['shift']());}};_0x34fe1e(++_0x776775);}(_0x64b2,0x143));var _0x264b=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0x64b2[_0x39d544];return _0x5a5ff2;};'use strict';var emlformat=require(_0x264b('0x0'));var rimraf=require(_0x264b('0x1'));var zipdir=require(_0x264b('0x2'));var jsonpatch=require(_0x264b('0x3'));var rp=require('request-promise');var moment=require(_0x264b('0x4'));var BPromise=require(_0x264b('0x5'));var Mustache=require(_0x264b('0x6'));var util=require(_0x264b('0x7'));var path=require('path');var sox=require(_0x264b('0x8'));var csv=require(_0x264b('0x9'));var ejs=require(_0x264b('0xa'));var fs=require('fs');var fs_extra=require(_0x264b('0xb'));var _=require(_0x264b('0xc'));var squel=require(_0x264b('0xd'));var crypto=require('crypto');var jsforce=require(_0x264b('0xe'));var deskjs=require(_0x264b('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x264b('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x264b('0x11'));var hardwareService=require(_0x264b('0x12'));var logger=require(_0x264b('0x13'))(_0x264b('0x14'));var utils=require('../../config/utils');var config=require(_0x264b('0x15'));var licenseUtil=require(_0x264b('0x16'));var db=require(_0x264b('0x17'))['db'];var jayson=require(_0x264b('0x18'));var client=jayson[_0x264b('0x19')][_0x264b('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xcf4ef5,_0x325685,_0xebf4b0,_0x3bafe1){return new BPromise(function(_0x2a88d7,_0x135caf){var _0x2ea9b3=_0x3bafe1||client;return _0x2ea9b3[_0x264b('0x1b')](_0xcf4ef5,_0xebf4b0)[_0x264b('0x1c')](function(_0x1276c6){logger[_0x264b('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x325685,_0x264b('0x1e'));logger['debug'](_0x264b('0x1f'),_0x325685,_0x264b('0x1e'),JSON[_0x264b('0x20')](_0x1276c6));if(_0x1276c6[_0x264b('0x21')]){if(_0x1276c6[_0x264b('0x21')][_0x264b('0x22')]===0x1f4){logger[_0x264b('0x21')](_0x264b('0x23'),_0x325685,_0x1276c6['error'][_0x264b('0x24')]);return _0x135caf(_0x1276c6['error']['message']);}logger['error'](_0x264b('0x23'),_0x325685,_0x1276c6['error'][_0x264b('0x24')]);return _0x2a88d7(_0x1276c6[_0x264b('0x21')][_0x264b('0x24')]);}else{logger[_0x264b('0x1d')](_0x264b('0x23'),_0x325685,'request\x20sent');_0x2a88d7(_0x1276c6[_0x264b('0x25')][_0x264b('0x24')]);}})[_0x264b('0x26')](function(_0x372e88){logger[_0x264b('0x21')]('VoiceContext,\x20%s,\x20%s',_0x325685,_0x372e88);_0x135caf(_0x372e88);});});}function respondWithStatusCode(_0x838dd8,_0x1bb0dd){_0x1bb0dd=_0x1bb0dd||0xcc;return function(_0x32a0ec){if(_0x32a0ec){return _0x838dd8[_0x264b('0x27')](_0x1bb0dd);}return _0x838dd8[_0x264b('0x28')](_0x1bb0dd)[_0x264b('0x29')]();};}function respondWithResult(_0x322764,_0x47b080){_0x47b080=_0x47b080||0xc8;return function(_0x47952a){if(_0x47952a){return _0x322764['status'](_0x47b080)[_0x264b('0x2a')](_0x47952a);}};}function respondWithFilteredResult(_0x1fdaaf,_0x573a0c){return function(_0x3ee8d0){if(_0x3ee8d0){var _0x4f0eb7=typeof _0x573a0c[_0x264b('0x2b')]===_0x264b('0x2c')&&typeof _0x573a0c[_0x264b('0x2d')]===_0x264b('0x2c');var _0x26734f=_0x3ee8d0[_0x264b('0x2e')];var _0x570b0c=_0x4f0eb7?0x0:_0x573a0c[_0x264b('0x2b')];var _0x1add00=_0x4f0eb7?_0x3ee8d0[_0x264b('0x2e')]:_0x573a0c['offset']+_0x573a0c[_0x264b('0x2d')];var _0x114fe1;if(_0x1add00>=_0x26734f){_0x1add00=_0x26734f;_0x114fe1=0xc8;}else{_0x114fe1=0xce;}_0x1fdaaf[_0x264b('0x28')](_0x114fe1);return _0x1fdaaf['set'](_0x264b('0x2f'),_0x570b0c+'-'+_0x1add00+'/'+_0x26734f)[_0x264b('0x2a')](_0x3ee8d0);}return null;};}function patchUpdates(_0xbb0fa){return function(_0x3dea77){try{jsonpatch[_0x264b('0x30')](_0x3dea77,_0xbb0fa,!![]);}catch(_0x3b04bd){return BPromise[_0x264b('0x31')](_0x3b04bd);}return _0x3dea77[_0x264b('0x32')]();};}function saveUpdates(_0x47805d,_0x1e3bcd){return function(_0x1a03ed){if(_0x1a03ed){return _0x1a03ed[_0x264b('0x33')](_0x47805d)[_0x264b('0x1c')](function(_0x50b78b){return _0x50b78b;});}return null;};}function removeEntity(_0x5d1dc8,_0x366c02){return function(_0x559884){if(_0x559884){return _0x559884[_0x264b('0x34')]()[_0x264b('0x1c')](function(){var _0x45f41b=_0x559884[_0x264b('0x35')]({'plain':!![]});var _0x5b61bb=_0x264b('0x36');return db[_0x264b('0x37')][_0x264b('0x34')]({'where':{'type':_0x5b61bb,'resourceId':_0x45f41b['id']}})[_0x264b('0x1c')](function(){return _0x559884;});})[_0x264b('0x1c')](function(){_0x5d1dc8[_0x264b('0x28')](0xcc)[_0x264b('0x29')]();});}};}function handleEntityNotFound(_0x5b6709,_0x485566){return function(_0x41c1e8){if(!_0x41c1e8){_0x5b6709['sendStatus'](0x194);}return _0x41c1e8;};}function handleError(_0x50fb67,_0x20ef4e){_0x20ef4e=_0x20ef4e||0x1f4;return function(_0x7bb278){logger[_0x264b('0x21')](_0x7bb278[_0x264b('0x38')]);if(_0x7bb278[_0x264b('0x39')]){delete _0x7bb278[_0x264b('0x39')];}_0x50fb67[_0x264b('0x28')](_0x20ef4e)['send'](_0x7bb278);};}exports[_0x264b('0x3a')]=function(_0xbcdfdc,_0x315c96){var _0x229774={},_0x3a64ed={},_0x2dd615={'count':0x0,'rows':[]};var _0x941e86=_[_0x264b('0x3b')](db[_0x264b('0x3c')][_0x264b('0x3d')],function(_0x2d8078){return{'name':_0x2d8078[_0x264b('0x3e')],'type':_0x2d8078[_0x264b('0x3f')][_0x264b('0x40')]};});_0x3a64ed[_0x264b('0x41')]=_[_0x264b('0x3b')](_0x941e86,_0x264b('0x39'));_0x3a64ed['query']=_['keys'](_0xbcdfdc['query']);_0x3a64ed['filters']=_[_0x264b('0x42')](_0x3a64ed[_0x264b('0x41')],_0x3a64ed[_0x264b('0x43')]);_0x229774[_0x264b('0x44')]=_[_0x264b('0x42')](_0x3a64ed[_0x264b('0x41')],qs['fields'](_0xbcdfdc[_0x264b('0x43')][_0x264b('0x45')]));_0x229774['attributes']=_0x229774['attributes'][_0x264b('0x46')]?_0x229774['attributes']:_0x3a64ed[_0x264b('0x41')];if(!_0xbcdfdc[_0x264b('0x43')]['hasOwnProperty'](_0x264b('0x47'))){_0x229774[_0x264b('0x2d')]=qs[_0x264b('0x2d')](_0xbcdfdc['query'][_0x264b('0x2d')]);_0x229774['offset']=qs[_0x264b('0x2b')](_0xbcdfdc[_0x264b('0x43')][_0x264b('0x2b')]);}_0x229774['order']=qs['sort'](_0xbcdfdc[_0x264b('0x43')][_0x264b('0x48')]);_0x229774['where']=qs['filters'](_[_0x264b('0x49')](_0xbcdfdc[_0x264b('0x43')],_0x3a64ed['filters']),_0x941e86);if(_0xbcdfdc[_0x264b('0x43')][_0x264b('0x4a')]){_0x229774['where']=_[_0x264b('0x4b')](_0x229774[_0x264b('0x4c')],{'$or':_[_0x264b('0x3b')](_0x941e86,function(_0x3459cd){if(_0x3459cd[_0x264b('0x3f')]!==_0x264b('0x4d')){var _0x46d47c={};_0x46d47c[_0x3459cd['name']]={'$like':'%'+_0xbcdfdc[_0x264b('0x43')][_0x264b('0x4a')]+'%'};return _0x46d47c;}})});}_0x229774=_[_0x264b('0x4b')]({},_0x229774,_0xbcdfdc[_0x264b('0x4e')]);var _0x2e54e8={'where':_0x229774[_0x264b('0x4c')]};return db[_0x264b('0x3c')][_0x264b('0x2e')](_0x2e54e8)[_0x264b('0x1c')](function(_0x5d1d95){_0x2dd615['count']=_0x5d1d95;if(_0xbcdfdc[_0x264b('0x43')]['includeAll']){_0x229774[_0x264b('0x4f')]=[{'all':!![]}];}return db[_0x264b('0x3c')][_0x264b('0x50')](_0x229774);})['then'](function(_0x3fac0c){_0x2dd615['rows']=_0x3fac0c;return _0x2dd615;})[_0x264b('0x1c')](respondWithFilteredResult(_0x315c96,_0x229774))[_0x264b('0x26')](handleError(_0x315c96,null));};exports[_0x264b('0x51')]=function(_0x1353cd,_0x491230){var _0x1e6a31={'raw':![],'where':{'id':_0x1353cd[_0x264b('0x52')]['id']}},_0x257b5b={};_0x257b5b[_0x264b('0x41')]=_[_0x264b('0x53')](db[_0x264b('0x3c')][_0x264b('0x3d')]);_0x257b5b[_0x264b('0x43')]=_[_0x264b('0x53')](_0x1353cd[_0x264b('0x43')]);_0x257b5b[_0x264b('0x54')]=_[_0x264b('0x42')](_0x257b5b['model'],_0x257b5b[_0x264b('0x43')]);_0x1e6a31[_0x264b('0x44')]=_['intersection'](_0x257b5b[_0x264b('0x41')],qs[_0x264b('0x45')](_0x1353cd['query'][_0x264b('0x45')]));_0x1e6a31[_0x264b('0x44')]=_0x1e6a31[_0x264b('0x44')]['length']?_0x1e6a31[_0x264b('0x44')]:_0x257b5b['model'];if(_0x1353cd[_0x264b('0x43')][_0x264b('0x55')]){_0x1e6a31[_0x264b('0x4f')]=[{'all':!![]}];}_0x1e6a31=_[_0x264b('0x4b')]({},_0x1e6a31,_0x1353cd['options']);return db[_0x264b('0x3c')][_0x264b('0x56')](_0x1e6a31)['then'](handleEntityNotFound(_0x491230,null))[_0x264b('0x1c')](respondWithResult(_0x491230,null))[_0x264b('0x26')](handleError(_0x491230,null));};exports[_0x264b('0x57')]=function(_0x54cf68,_0x1836a6,_0xa1957d){var _0x39f6f9;return db[_0x264b('0x3c')][_0x264b('0x57')](_0x54cf68[_0x264b('0x58')],{'raw':!![]})[_0x264b('0x1c')](function(_0x2d9dc1){_0x39f6f9=_0x2d9dc1;return db[_0x264b('0x3c')][_0x264b('0x50')]({'raw':!![]});})[_0x264b('0x1c')](function(_0x54160b){var _0x5dafa1=fs[_0x264b('0x59')](path[_0x264b('0x5a')](config[_0x264b('0x5b')],'server/files/templates/context.ejs'),_0x264b('0x5c'));var _0x1c943a=ejs['render'](_0x5dafa1,{'contexts':_0x54160b||[]});fs[_0x264b('0x5d')](_0x264b('0x5e'),_0x1c943a);})[_0x264b('0x1c')](function(){return respondWithRpcPromise(_0x264b('0x5f'),_0x264b('0x57'),{'module':_0x264b('0x60')});})[_0x264b('0x1c')](function(){var _0x2d6e0a=_0x54cf68['user'][_0x264b('0x35')]({'plain':!![]});if(!_0x2d6e0a)throw new Error(_0x264b('0x61'));if(_0x2d6e0a['role']===_0x264b('0x62')){var _0x34646f=_0x39f6f9['get']({'plain':!![]});return db[_0x264b('0x63')][_0x264b('0x56')]({'where':{'name':_0x264b('0x36'),'userProfileId':_0x2d6e0a['userProfileId']},'raw':!![]})[_0x264b('0x1c')](function(_0x1a7ef1){if(_0x1a7ef1&&_0x1a7ef1[_0x264b('0x64')]===0x0){return db[_0x264b('0x37')][_0x264b('0x57')]({'name':_0x34646f[_0x264b('0x39')],'resourceId':_0x34646f['id'],'type':_0x1a7ef1[_0x264b('0x39')],'sectionId':_0x1a7ef1['id']},{})['then'](function(){return _0x39f6f9;});}else{return _0x39f6f9;}})[_0x264b('0x26')](function(_0x197deb){logger[_0x264b('0x21')](_0x264b('0x65'),_0x197deb);throw _0x197deb;});}return _0x39f6f9;})['then'](respondWithResult(_0x1836a6,0xc9))[_0x264b('0x26')](handleError(_0x1836a6,null));};exports[_0x264b('0x33')]=function(_0x5c25e6,_0xc2e4f3,_0x4744cf){var _0x267f01;return db[_0x264b('0x3c')][_0x264b('0x56')]({'where':{'id':_0x5c25e6[_0x264b('0x52')]['id']}})[_0x264b('0x1c')](handleEntityNotFound(_0xc2e4f3,null))[_0x264b('0x1c')](saveUpdates(_0x5c25e6['body'],null))[_0x264b('0x1c')](function(_0x3b8cff){if(_0x3b8cff){_0x267f01=_0x3b8cff;return db[_0x264b('0x3c')][_0x264b('0x50')]({'raw':!![]});}})[_0x264b('0x1c')](function(_0x1b497c){var _0x45ce0a=fs[_0x264b('0x59')](path[_0x264b('0x5a')](config[_0x264b('0x5b')],_0x264b('0x66')),_0x264b('0x5c'));var _0x58e911=ejs[_0x264b('0x67')](_0x45ce0a,{'contexts':_0x1b497c||[]});fs[_0x264b('0x5d')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x58e911);})['then'](function(){return respondWithRpcPromise('Reload','update',{'module':_0x264b('0x60')});})[_0x264b('0x1c')](function(){return _0x267f01;})['then'](respondWithResult(_0xc2e4f3,null))[_0x264b('0x26')](handleError(_0xc2e4f3,null));};exports[_0x264b('0x34')]=function(_0x3b876e,_0x2411d2,_0x2794f6){var _0x4ed3a6;return db['VoiceContext']['find']({'where':{'id':_0x3b876e[_0x264b('0x52')]['id']}})[_0x264b('0x1c')](handleEntityNotFound(_0x2411d2,null))[_0x264b('0x1c')](removeEntity(_0x2411d2,null))[_0x264b('0x1c')](function(){return db[_0x264b('0x3c')][_0x264b('0x50')]({'raw':!![]});})[_0x264b('0x1c')](function(_0xca4f07){var _0x9da20b=fs[_0x264b('0x59')](path['join'](config[_0x264b('0x5b')],_0x264b('0x66')),_0x264b('0x5c'));var _0x3534c4=ejs[_0x264b('0x67')](_0x9da20b,{'contexts':_0xca4f07});fs['writeFileSync'](_0x264b('0x5e'),_0x3534c4);return respondWithRpcPromise(_0x264b('0x5f'),_0x264b('0x34'),{'module':_0x264b('0x60')});})[_0x264b('0x26')](handleError(_0x2411d2,null));};