1ad6d149597253e5adfdef36cd268a4111225b1b
[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 _0xe176=['../../mysqldb','jayson/promise','client','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','Contexts','UserProfileResource','name','send','index','VoiceContext','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','params','options','find','create','body','join','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','Reload','root','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x3a13aa,_0x99bc22){var _0x226ec6=function(_0x1eaadd){while(--_0x1eaadd){_0x3a13aa['push'](_0x3a13aa['shift']());}};_0x226ec6(++_0x99bc22);}(_0xe176,0x194));var _0x6e17=function(_0x334651,_0x6e99f6){_0x334651=_0x334651-0x0;var _0x29657c=_0xe176[_0x334651];return _0x29657c;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x6e17('0x0'));var rimraf=require(_0x6e17('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6e17('0x2'));var rp=require(_0x6e17('0x3'));var moment=require(_0x6e17('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6e17('0x5'));var util=require(_0x6e17('0x6'));var path=require('path');var sox=require(_0x6e17('0x7'));var csv=require(_0x6e17('0x8'));var ejs=require(_0x6e17('0x9'));var fs=require('fs');var _=require(_0x6e17('0xa'));var squel=require(_0x6e17('0xb'));var crypto=require(_0x6e17('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6e17('0xd'));var toCsv=require(_0x6e17('0x8'));var querystring=require(_0x6e17('0xe'));var Papa=require(_0x6e17('0xf'));var Redis=require(_0x6e17('0x10'));var authService=require(_0x6e17('0x11'));var qs=require(_0x6e17('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6e17('0x13'));var logger=require(_0x6e17('0x14'))(_0x6e17('0x15'));var utils=require(_0x6e17('0x16'));var config=require(_0x6e17('0x17'));var db=require(_0x6e17('0x18'))['db'];var jayson=require(_0x6e17('0x19'));var client=jayson[_0x6e17('0x1a')]['http']({'port':0x232a});function checkPasswordPattern(_0x406ec2,_0x63bcec,_0x438604){if(_0x438604){var _0x1b461c=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x1b461c[_0x6e17('0x1b')](_0x63bcec)){return _0x406ec2;}else{throw new db[(_0x6e17('0x1c'))][(_0x6e17('0x1d'))](_0x6e17('0x1e'));}}else{return _0x406ec2;}}function respondWithRpcPromise(_0x198022,_0x3d992,_0x4f9c18,_0xb3feae){return new BPromise(function(_0x45587e,_0x304950){var _0x4ff3e3=_0xb3feae||client;return _0x4ff3e3[_0x6e17('0x1f')](_0x198022,_0x4f9c18)[_0x6e17('0x20')](function(_0x2f97a5){logger[_0x6e17('0x21')](_0x6e17('0x22'),_0x3d992,_0x6e17('0x23'));logger[_0x6e17('0x24')](_0x6e17('0x25'),_0x3d992,_0x6e17('0x23'),JSON[_0x6e17('0x26')](_0x2f97a5));if(_0x2f97a5['error']){if(_0x2f97a5[_0x6e17('0x27')][_0x6e17('0x28')]===0x1f4){logger[_0x6e17('0x27')](_0x6e17('0x22'),_0x3d992,_0x2f97a5[_0x6e17('0x27')][_0x6e17('0x29')]);return _0x304950(_0x2f97a5[_0x6e17('0x27')][_0x6e17('0x29')]);}logger[_0x6e17('0x27')](_0x6e17('0x22'),_0x3d992,_0x2f97a5[_0x6e17('0x27')]['message']);return _0x45587e(_0x2f97a5[_0x6e17('0x27')]['message']);}else{logger[_0x6e17('0x21')](_0x6e17('0x22'),_0x3d992,_0x6e17('0x23'));_0x45587e(_0x2f97a5[_0x6e17('0x2a')][_0x6e17('0x29')]);}})[_0x6e17('0x2b')](function(_0x1a41ce){logger[_0x6e17('0x27')](_0x6e17('0x22'),_0x3d992,_0x1a41ce);_0x304950(_0x1a41ce);});});}function respondWithStatusCode(_0x40ca98,_0x1782ca){_0x1782ca=_0x1782ca||0xcc;return function(_0x4b3389){if(_0x4b3389){return _0x40ca98[_0x6e17('0x2c')](_0x1782ca);}return _0x40ca98[_0x6e17('0x2d')](_0x1782ca)[_0x6e17('0x2e')]();};}function respondWithResult(_0x17394f,_0x55aeb4){_0x55aeb4=_0x55aeb4||0xc8;return function(_0x73e546){if(_0x73e546){return _0x17394f['status'](_0x55aeb4)[_0x6e17('0x2f')](_0x73e546);}};}function respondWithFilteredResult(_0x16b8a0,_0x41b53e){return function(_0x22a52e){if(_0x22a52e){var _0x347fef=_0x22a52e[_0x6e17('0x30')],_0x316527=_0x41b53e[_0x6e17('0x31')],_0x28dd77=_0x41b53e[_0x6e17('0x31')]+_0x41b53e[_0x6e17('0x32')],_0x4f0aaa;if(_0x28dd77>=_0x347fef){_0x28dd77=_0x347fef;_0x4f0aaa=0xc8;}else{_0x4f0aaa=0xce;}_0x16b8a0[_0x6e17('0x2d')](_0x4f0aaa);return _0x16b8a0[_0x6e17('0x33')](_0x6e17('0x34'),_0x316527+'-'+_0x28dd77+'/'+_0x347fef)[_0x6e17('0x2f')](_0x22a52e);}return null;};}function patchUpdates(_0x5d50d8){return function(_0x50c141){try{jsonpatch[_0x6e17('0x35')](_0x50c141,_0x5d50d8,!![]);}catch(_0x59914a){return BPromise[_0x6e17('0x36')](_0x59914a);}return _0x50c141[_0x6e17('0x37')]();};}function saveUpdates(_0x34dbfa,_0x3a6b4f){return function(_0x271f8e){if(_0x271f8e){return _0x271f8e[_0x6e17('0x38')](_0x34dbfa)[_0x6e17('0x20')](function(_0x36ad32){return _0x36ad32;});}return null;};}function removeEntity(_0xfdb518,_0x4d7929){return function(_0x22ba3c){if(_0x22ba3c){return _0x22ba3c[_0x6e17('0x39')]()['then'](function(){var _0x2fc07a=_0x22ba3c['get']({'plain':!![]});var _0x37b01a=_0x6e17('0x3a');return db[_0x6e17('0x3b')][_0x6e17('0x39')]({'where':{'type':_0x37b01a,'resourceId':_0x2fc07a['id']}})[_0x6e17('0x20')](function(){return _0x22ba3c;});})[_0x6e17('0x20')](function(){_0xfdb518['status'](0xcc)[_0x6e17('0x2e')]();});}};}function handleEntityNotFound(_0x1392c2,_0x55c42f){return function(_0x1a0fd2){if(!_0x1a0fd2){_0x1392c2[_0x6e17('0x2c')](0x194);}return _0x1a0fd2;};}function handleError(_0x24db22,_0x1a11b3){_0x1a11b3=_0x1a11b3||0x1f4;return function(_0x295aca){logger[_0x6e17('0x27')](_0x295aca['stack']);if(_0x295aca[_0x6e17('0x3c')]){delete _0x295aca[_0x6e17('0x3c')];}_0x24db22['status'](_0x1a11b3)[_0x6e17('0x3d')](_0x295aca);};}exports[_0x6e17('0x3e')]=function(_0x4fd38d,_0x1bee42){var _0x504272={},_0x30a7fd={},_0x552a84={'count':0x0,'rows':[]};var _0xafd7d0=_['map'](db[_0x6e17('0x3f')][_0x6e17('0x40')],function(_0x51c4b0){return{'name':_0x51c4b0['fieldName'],'type':_0x51c4b0[_0x6e17('0x41')][_0x6e17('0x42')]};});_0x30a7fd[_0x6e17('0x43')]=_[_0x6e17('0x44')](_0xafd7d0,_0x6e17('0x3c'));_0x30a7fd[_0x6e17('0x45')]=_[_0x6e17('0x46')](_0x4fd38d[_0x6e17('0x45')]);_0x30a7fd[_0x6e17('0x47')]=_[_0x6e17('0x48')](_0x30a7fd[_0x6e17('0x43')],_0x30a7fd['query']);_0x504272[_0x6e17('0x49')]=_[_0x6e17('0x48')](_0x30a7fd['model'],qs['fields'](_0x4fd38d[_0x6e17('0x45')][_0x6e17('0x4a')]));_0x504272[_0x6e17('0x49')]=_0x504272[_0x6e17('0x49')]['length']?_0x504272['attributes']:_0x30a7fd['model'];if(!_0x4fd38d['query'][_0x6e17('0x4b')](_0x6e17('0x4c'))){_0x504272[_0x6e17('0x32')]=qs[_0x6e17('0x32')](_0x4fd38d['query'][_0x6e17('0x32')]);_0x504272[_0x6e17('0x31')]=qs[_0x6e17('0x31')](_0x4fd38d['query'][_0x6e17('0x31')]);}_0x504272[_0x6e17('0x4d')]=qs[_0x6e17('0x4e')](_0x4fd38d[_0x6e17('0x45')]['sort']);_0x504272[_0x6e17('0x4f')]=qs['filters'](_['pick'](_0x4fd38d[_0x6e17('0x45')],_0x30a7fd[_0x6e17('0x47')]));if(_0x4fd38d[_0x6e17('0x45')][_0x6e17('0x50')]){_0x504272[_0x6e17('0x4f')]=_[_0x6e17('0x51')](_0x504272[_0x6e17('0x4f')],{'$or':_['map'](_0xafd7d0,function(_0x42e01e){if(_0x42e01e['type']!=='VIRTUAL'){var _0x4e206b={};_0x4e206b[_0x42e01e[_0x6e17('0x3c')]]={'$like':'%'+_0x4fd38d['query'][_0x6e17('0x50')]+'%'};return _0x4e206b;}})});}_0x504272=_[_0x6e17('0x51')]({},_0x504272,_0x4fd38d['options']);var _0x367153={'where':_0x504272[_0x6e17('0x4f')]};return db['VoiceContext'][_0x6e17('0x30')](_0x367153)[_0x6e17('0x20')](function(_0x103560){_0x552a84[_0x6e17('0x30')]=_0x103560;if(_0x4fd38d['query'][_0x6e17('0x52')]){_0x504272[_0x6e17('0x53')]=[{'all':!![]}];}return db[_0x6e17('0x3f')][_0x6e17('0x54')](_0x504272);})[_0x6e17('0x20')](function(_0x280bdd){_0x552a84['rows']=_0x280bdd;return _0x552a84;})[_0x6e17('0x20')](respondWithFilteredResult(_0x1bee42,_0x504272))[_0x6e17('0x2b')](handleError(_0x1bee42,null));};exports['show']=function(_0x356834,_0x159e26){var _0x1807d8={'raw':![],'where':{'id':_0x356834[_0x6e17('0x55')]['id']}},_0x165066={};_0x165066[_0x6e17('0x43')]=_['keys'](db[_0x6e17('0x3f')]['rawAttributes']);_0x165066[_0x6e17('0x45')]=_[_0x6e17('0x46')](_0x356834[_0x6e17('0x45')]);_0x165066[_0x6e17('0x47')]=_[_0x6e17('0x48')](_0x165066['model'],_0x165066['query']);_0x1807d8[_0x6e17('0x49')]=_[_0x6e17('0x48')](_0x165066['model'],qs[_0x6e17('0x4a')](_0x356834[_0x6e17('0x45')][_0x6e17('0x4a')]));_0x1807d8[_0x6e17('0x49')]=_0x1807d8[_0x6e17('0x49')]['length']?_0x1807d8[_0x6e17('0x49')]:_0x165066['model'];if(_0x356834[_0x6e17('0x45')][_0x6e17('0x52')]){_0x1807d8[_0x6e17('0x53')]=[{'all':!![]}];}_0x1807d8=_['merge']({},_0x1807d8,_0x356834[_0x6e17('0x56')]);return db['VoiceContext'][_0x6e17('0x57')](_0x1807d8)[_0x6e17('0x20')](handleEntityNotFound(_0x159e26,null))[_0x6e17('0x20')](respondWithResult(_0x159e26,null))[_0x6e17('0x2b')](handleError(_0x159e26,null));};exports[_0x6e17('0x58')]=function(_0x51aee8,_0xfb2e25,_0x2a935e){var _0x10778;return db[_0x6e17('0x3f')]['create'](_0x51aee8[_0x6e17('0x59')],{'raw':!![]})[_0x6e17('0x20')](function(_0x4f9d8e){_0x10778=_0x4f9d8e;return db[_0x6e17('0x3f')][_0x6e17('0x54')]({'raw':!![]});})[_0x6e17('0x20')](function(_0x639b5f){var _0x12ce3d=fs['readFileSync'](path[_0x6e17('0x5a')](config['root'],_0x6e17('0x5b')),_0x6e17('0x5c'));var _0x524822=ejs[_0x6e17('0x5d')](_0x12ce3d,{'contexts':_0x639b5f||[]});fs[_0x6e17('0x5e')](_0x6e17('0x5f'),_0x524822);})['then'](function(){return respondWithRpcPromise('Reload',_0x6e17('0x58'),{'module':_0x6e17('0x60')});})[_0x6e17('0x20')](function(){var _0x17a777=_0x51aee8[_0x6e17('0x61')][_0x6e17('0x62')]({'plain':!![]});if(!_0x17a777)throw new Error(_0x6e17('0x63'));if(_0x17a777[_0x6e17('0x64')]==='user'){var _0x5dfb97=_0x10778['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Contexts','userProfileId':_0x17a777[_0x6e17('0x65')]},'raw':!![]})[_0x6e17('0x20')](function(_0xde155a){if(_0xde155a&&_0xde155a[_0x6e17('0x66')]===0x0){return db[_0x6e17('0x3b')][_0x6e17('0x58')]({'name':_0x5dfb97[_0x6e17('0x3c')],'resourceId':_0x5dfb97['id'],'type':_0xde155a['name'],'sectionId':_0xde155a['id']},{})[_0x6e17('0x20')](function(){return _0x10778;});}else{return _0x10778;}})[_0x6e17('0x2b')](function(_0x4750a5){logger[_0x6e17('0x27')](_0x6e17('0x67'),_0x4750a5);throw _0x4750a5;});}return _0x10778;})['then'](respondWithResult(_0xfb2e25,0xc9))[_0x6e17('0x2b')](handleError(_0xfb2e25,null));};exports['update']=function(_0x1ee022,_0x51d9d6,_0x5159b6){var _0x113f2a;return db['VoiceContext']['find']({'where':{'id':_0x1ee022[_0x6e17('0x55')]['id']}})['then'](handleEntityNotFound(_0x51d9d6,null))[_0x6e17('0x20')](saveUpdates(_0x1ee022[_0x6e17('0x59')],null))[_0x6e17('0x20')](function(_0x5a20d8){if(_0x5a20d8){_0x113f2a=_0x5a20d8;return db[_0x6e17('0x3f')][_0x6e17('0x54')]({'raw':!![]});}})[_0x6e17('0x20')](function(_0x2e9903){var _0x543c3c=fs[_0x6e17('0x68')](path[_0x6e17('0x5a')](config['root'],_0x6e17('0x5b')),_0x6e17('0x5c'));var _0x331db2=ejs[_0x6e17('0x5d')](_0x543c3c,{'contexts':_0x2e9903||[]});fs[_0x6e17('0x5e')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x331db2);})[_0x6e17('0x20')](function(){return respondWithRpcPromise(_0x6e17('0x69'),_0x6e17('0x38'),{'module':_0x6e17('0x60')});})['then'](function(){return _0x113f2a;})[_0x6e17('0x20')](respondWithResult(_0x51d9d6,null))['catch'](handleError(_0x51d9d6,null));};exports[_0x6e17('0x39')]=function(_0x27f1cd,_0x46c112,_0x4e1d00){var _0x101bf1;return db[_0x6e17('0x3f')][_0x6e17('0x57')]({'where':{'id':_0x27f1cd[_0x6e17('0x55')]['id']}})[_0x6e17('0x20')](handleEntityNotFound(_0x46c112,null))[_0x6e17('0x20')](removeEntity(_0x46c112,null))['then'](function(){return db[_0x6e17('0x3f')][_0x6e17('0x54')]({'raw':!![]});})['then'](function(_0x343098){var _0x2b52b7=fs[_0x6e17('0x68')](path['join'](config[_0x6e17('0x6a')],_0x6e17('0x5b')),_0x6e17('0x5c'));var _0x3b4eeb=ejs[_0x6e17('0x5d')](_0x2b52b7,{'contexts':_0x343098});fs[_0x6e17('0x5e')](_0x6e17('0x5f'),_0x3b4eeb);return respondWithRpcPromise(_0x6e17('0x69'),'destroy',{'module':_0x6e17('0x60')});})[_0x6e17('0x2b')](handleError(_0x46c112,null));};