9cb7a2d4e1eb4b6628934c1c12ede9d4f7cf28cb
[motion2.git] / server / api / variable / variable.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 _0x4d37=['ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','apply','save','update','then','Variables','UserProfileResource','destroy','error','stack','name','index','Variable','key','model','map','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','create','user','get','role','UserProfileSection','find','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x4d37,0xe6));var _0x74d3=function(_0x39fbbc,_0x9d36ab){_0x39fbbc=_0x39fbbc-0x0;var _0x1c171d=_0x4d37[_0x39fbbc];return _0x1c171d;};'use strict';var emlformat=require(_0x74d3('0x0'));var rimraf=require(_0x74d3('0x1'));var zipdir=require(_0x74d3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x74d3('0x3'));var moment=require('moment');var BPromise=require(_0x74d3('0x4'));var Mustache=require(_0x74d3('0x5'));var util=require(_0x74d3('0x6'));var path=require(_0x74d3('0x7'));var sox=require(_0x74d3('0x8'));var csv=require(_0x74d3('0x9'));var ejs=require(_0x74d3('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x74d3('0xb'));var squel=require(_0x74d3('0xc'));var crypto=require(_0x74d3('0xd'));var jsforce=require(_0x74d3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x74d3('0x9'));var querystring=require(_0x74d3('0xf'));var Papa=require('papaparse');var Redis=require(_0x74d3('0x10'));var authService=require(_0x74d3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x74d3('0x12'));var hardwareService=require(_0x74d3('0x13'));var logger=require(_0x74d3('0x14'))(_0x74d3('0x15'));var utils=require(_0x74d3('0x16'));var config=require(_0x74d3('0x17'));var licenseUtil=require(_0x74d3('0x18'));var db=require(_0x74d3('0x19'))['db'];function respondWithStatusCode(_0x9a34a1,_0x58532c){_0x58532c=_0x58532c||0xcc;return function(_0x3c709c){if(_0x3c709c){return _0x9a34a1[_0x74d3('0x1a')](_0x58532c);}return _0x9a34a1[_0x74d3('0x1b')](_0x58532c)[_0x74d3('0x1c')]();};}function respondWithResult(_0x1bb2ce,_0x42fde8){_0x42fde8=_0x42fde8||0xc8;return function(_0x301479){if(_0x301479){return _0x1bb2ce[_0x74d3('0x1b')](_0x42fde8)[_0x74d3('0x1d')](_0x301479);}};}function respondWithFilteredResult(_0x2904e5,_0x25b4f8){return function(_0x236f05){if(_0x236f05){var _0x5a7298=_0x236f05[_0x74d3('0x1e')],_0x4e6160=_0x25b4f8[_0x74d3('0x1f')],_0x3c7c68=_0x25b4f8[_0x74d3('0x1f')]+_0x25b4f8[_0x74d3('0x20')],_0x595935;if(_0x3c7c68>=_0x5a7298){_0x3c7c68=_0x5a7298;_0x595935=0xc8;}else{_0x595935=0xce;}_0x2904e5['status'](_0x595935);return _0x2904e5[_0x74d3('0x21')]('Content-Range',_0x4e6160+'-'+_0x3c7c68+'/'+_0x5a7298)['json'](_0x236f05);}return null;};}function patchUpdates(_0x432e96){return function(_0x102ae4){try{jsonpatch[_0x74d3('0x22')](_0x102ae4,_0x432e96,!![]);}catch(_0x318264){return BPromise['reject'](_0x318264);}return _0x102ae4[_0x74d3('0x23')]();};}function saveUpdates(_0x59a21f,_0x537664){return function(_0x5bb6fc){if(_0x5bb6fc){return _0x5bb6fc[_0x74d3('0x24')](_0x59a21f)['then'](function(_0x506a22){return _0x506a22;});}return null;};}function removeEntity(_0x4d76bf,_0x326b38){return function(_0x393361){if(_0x393361){return _0x393361['destroy']()[_0x74d3('0x25')](function(){var _0xfe419c=_0x393361['get']({'plain':!![]});var _0x2f3430=_0x74d3('0x26');return db[_0x74d3('0x27')][_0x74d3('0x28')]({'where':{'type':_0x2f3430,'resourceId':_0xfe419c['id']}})[_0x74d3('0x25')](function(){return _0x393361;});})[_0x74d3('0x25')](function(){_0x4d76bf['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x47061f,_0x22353b){return function(_0x573343){if(!_0x573343){_0x47061f[_0x74d3('0x1a')](0x194);}return _0x573343;};}function handleError(_0xab92a,_0x1a4712){_0x1a4712=_0x1a4712||0x1f4;return function(_0x4de2c1){logger[_0x74d3('0x29')](_0x4de2c1[_0x74d3('0x2a')]);if(_0x4de2c1[_0x74d3('0x2b')]){delete _0x4de2c1['name'];}_0xab92a['status'](_0x1a4712)['send'](_0x4de2c1);};}exports[_0x74d3('0x2c')]=function(_0x4a1108,_0x5cef78){var _0x406d33={},_0x44edb1={},_0x30b3df={'count':0x0,'rows':[]};var _0x51cdfc=_['map'](db[_0x74d3('0x2d')]['rawAttributes'],function(_0x43e677){return{'name':_0x43e677['fieldName'],'type':_0x43e677['type'][_0x74d3('0x2e')]};});_0x44edb1[_0x74d3('0x2f')]=_[_0x74d3('0x30')](_0x51cdfc,_0x74d3('0x2b'));_0x44edb1[_0x74d3('0x31')]=_['keys'](_0x4a1108[_0x74d3('0x31')]);_0x44edb1[_0x74d3('0x32')]=_[_0x74d3('0x33')](_0x44edb1[_0x74d3('0x2f')],_0x44edb1[_0x74d3('0x31')]);_0x406d33[_0x74d3('0x34')]=_[_0x74d3('0x33')](_0x44edb1[_0x74d3('0x2f')],qs[_0x74d3('0x35')](_0x4a1108[_0x74d3('0x31')][_0x74d3('0x35')]));_0x406d33[_0x74d3('0x34')]=_0x406d33['attributes']['length']?_0x406d33[_0x74d3('0x34')]:_0x44edb1['model'];if(!_0x4a1108[_0x74d3('0x31')]['hasOwnProperty'](_0x74d3('0x36'))){_0x406d33[_0x74d3('0x20')]=qs['limit'](_0x4a1108[_0x74d3('0x31')][_0x74d3('0x20')]);_0x406d33['offset']=qs[_0x74d3('0x1f')](_0x4a1108['query'][_0x74d3('0x1f')]);}_0x406d33['order']=qs[_0x74d3('0x37')](_0x4a1108[_0x74d3('0x31')][_0x74d3('0x37')]);_0x406d33[_0x74d3('0x38')]=qs[_0x74d3('0x32')](_[_0x74d3('0x39')](_0x4a1108['query'],_0x44edb1[_0x74d3('0x32')]),_0x51cdfc);if(_0x4a1108[_0x74d3('0x31')]['filter']){_0x406d33[_0x74d3('0x38')]=_['merge'](_0x406d33[_0x74d3('0x38')],{'$or':_[_0x74d3('0x30')](_0x51cdfc,function(_0x7dd22a){if(_0x7dd22a[_0x74d3('0x3a')]!==_0x74d3('0x3b')){var _0x23db2e={};_0x23db2e[_0x7dd22a[_0x74d3('0x2b')]]={'$like':'%'+_0x4a1108[_0x74d3('0x31')]['filter']+'%'};return _0x23db2e;}})});}_0x406d33=_[_0x74d3('0x3c')]({},_0x406d33,_0x4a1108[_0x74d3('0x3d')]);var _0x3b002b={'where':_0x406d33[_0x74d3('0x38')]};return db[_0x74d3('0x2d')][_0x74d3('0x1e')](_0x3b002b)[_0x74d3('0x25')](function(_0xd86f45){_0x30b3df[_0x74d3('0x1e')]=_0xd86f45;if(_0x4a1108['query'][_0x74d3('0x3e')]){_0x406d33[_0x74d3('0x3f')]=[{'all':!![]}];}return db[_0x74d3('0x2d')][_0x74d3('0x40')](_0x406d33);})[_0x74d3('0x25')](function(_0x53552b){_0x30b3df[_0x74d3('0x41')]=_0x53552b;return _0x30b3df;})['then'](respondWithFilteredResult(_0x5cef78,_0x406d33))['catch'](handleError(_0x5cef78,null));};exports[_0x74d3('0x42')]=function(_0xe4d9f9,_0x19973c){var _0x518849={'raw':!![],'where':{'id':_0xe4d9f9[_0x74d3('0x43')]['id']}},_0x24f199={};_0x24f199[_0x74d3('0x2f')]=_[_0x74d3('0x44')](db[_0x74d3('0x2d')]['rawAttributes']);_0x24f199['query']=_['keys'](_0xe4d9f9[_0x74d3('0x31')]);_0x24f199['filters']=_['intersection'](_0x24f199[_0x74d3('0x2f')],_0x24f199['query']);_0x518849[_0x74d3('0x34')]=_[_0x74d3('0x33')](_0x24f199[_0x74d3('0x2f')],qs[_0x74d3('0x35')](_0xe4d9f9[_0x74d3('0x31')][_0x74d3('0x35')]));_0x518849[_0x74d3('0x34')]=_0x518849[_0x74d3('0x34')]['length']?_0x518849[_0x74d3('0x34')]:_0x24f199[_0x74d3('0x2f')];if(_0xe4d9f9[_0x74d3('0x31')][_0x74d3('0x3e')]){_0x518849['include']=[{'all':!![]}];}_0x518849=_[_0x74d3('0x3c')]({},_0x518849,_0xe4d9f9[_0x74d3('0x3d')]);return db['Variable']['find'](_0x518849)[_0x74d3('0x25')](handleEntityNotFound(_0x19973c,null))['then'](respondWithResult(_0x19973c,null))['catch'](handleError(_0x19973c,null));};exports[_0x74d3('0x45')]=function(_0x3329ad,_0x3c6dc1){return db[_0x74d3('0x2d')]['create'](_0x3329ad['body'],{})[_0x74d3('0x25')](function(_0x1cf537){var _0x339335=_0x3329ad[_0x74d3('0x46')][_0x74d3('0x47')]({'plain':!![]});if(!_0x339335)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x339335[_0x74d3('0x48')]===_0x74d3('0x46')){var _0x3195bd=_0x1cf537[_0x74d3('0x47')]({'plain':!![]});var _0x1d22ac=_0x74d3('0x26');return db[_0x74d3('0x49')][_0x74d3('0x4a')]({'where':{'name':_0x1d22ac,'userProfileId':_0x339335[_0x74d3('0x4b')]},'raw':!![]})['then'](function(_0x4f52e0){if(_0x4f52e0&&_0x4f52e0[_0x74d3('0x4c')]===0x0){return db[_0x74d3('0x27')]['create']({'name':_0x3195bd[_0x74d3('0x2b')],'resourceId':_0x3195bd['id'],'type':_0x4f52e0[_0x74d3('0x2b')],'sectionId':_0x4f52e0['id']},{})[_0x74d3('0x25')](function(){return _0x1cf537;});}else{return _0x1cf537;}})[_0x74d3('0x4d')](function(_0x2b4ba9){logger[_0x74d3('0x29')](_0x74d3('0x4e'),_0x2b4ba9);throw _0x2b4ba9;});}return _0x1cf537;})['then'](respondWithResult(_0x3c6dc1,0xc9))[_0x74d3('0x4d')](handleError(_0x3c6dc1,null));};exports['update']=function(_0x42cc20,_0x1c62aa){if(_0x42cc20['body']['id']){delete _0x42cc20[_0x74d3('0x4f')]['id'];}return db[_0x74d3('0x2d')][_0x74d3('0x4a')]({'where':{'id':_0x42cc20['params']['id']}})[_0x74d3('0x25')](handleEntityNotFound(_0x1c62aa,null))[_0x74d3('0x25')](saveUpdates(_0x42cc20['body'],null))[_0x74d3('0x25')](respondWithResult(_0x1c62aa,null))[_0x74d3('0x4d')](handleError(_0x1c62aa,null));};exports['destroy']=function(_0x5f1a4d,_0x35a2db){return db[_0x74d3('0x2d')][_0x74d3('0x4a')]({'where':{'id':_0x5f1a4d[_0x74d3('0x43')]['id']}})['then'](handleEntityNotFound(_0x35a2db,null))['then'](removeEntity(_0x35a2db,null))['catch'](handleError(_0x35a2db,null));};