b956de54b13311e10af57b08c30d6d371bfdf0df
[motion2.git] / server / api / squareOdbc / squareOdbc.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 _0x92d7=['merge','VIRTUAL','count','show','params','includeAll','include','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','test','openSync','dsn','closeSync','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','ODBC','destroy','name','index','SquareOdbc','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter'];(function(_0x606704,_0x4a08f8){var _0x11a29d=function(_0x36cae3){while(--_0x36cae3){_0x606704['push'](_0x606704['shift']());}};_0x11a29d(++_0x4a08f8);}(_0x92d7,0x117));var _0x792d=function(_0xb3bce6,_0x3fb357){_0xb3bce6=_0xb3bce6-0x0;var _0xb042f6=_0x92d7[_0xb3bce6];return _0xb042f6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x792d('0x0'));var zipdir=require(_0x792d('0x1'));var jsonpatch=require(_0x792d('0x2'));var rp=require('request-promise');var moment=require(_0x792d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x792d('0x4'));var util=require(_0x792d('0x5'));var path=require(_0x792d('0x6'));var sox=require(_0x792d('0x7'));var csv=require('to-csv');var ejs=require(_0x792d('0x8'));var fs=require('fs');var fs_extra=require(_0x792d('0x9'));var _=require(_0x792d('0xa'));var squel=require(_0x792d('0xb'));var crypto=require(_0x792d('0xc'));var jsforce=require(_0x792d('0xd'));var deskjs=require(_0x792d('0xe'));var toCsv=require(_0x792d('0xf'));var querystring=require(_0x792d('0x10'));var Papa=require(_0x792d('0x11'));var Redis=require(_0x792d('0x12'));var authService=require(_0x792d('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x792d('0x14'));var hardwareService=require(_0x792d('0x15'));var logger=require(_0x792d('0x16'))(_0x792d('0x17'));var utils=require(_0x792d('0x18'));var config=require(_0x792d('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x792d('0x1a'))['db'];function respondWithStatusCode(_0x5c2b8d,_0x5b68be){_0x5b68be=_0x5b68be||0xcc;return function(_0x5a2b9e){if(_0x5a2b9e){return _0x5c2b8d[_0x792d('0x1b')](_0x5b68be);}return _0x5c2b8d[_0x792d('0x1c')](_0x5b68be)[_0x792d('0x1d')]();};}function respondWithResult(_0x56b2e4,_0x52d17a){_0x52d17a=_0x52d17a||0xc8;return function(_0x3d505a){if(_0x3d505a){return _0x56b2e4[_0x792d('0x1c')](_0x52d17a)[_0x792d('0x1e')](_0x3d505a);}};}function respondWithFilteredResult(_0x4cb633,_0x4f4a5f){return function(_0x17926a){if(_0x17926a){var _0x2886c7=typeof _0x4f4a5f[_0x792d('0x1f')]==='undefined'&&typeof _0x4f4a5f[_0x792d('0x20')]===_0x792d('0x21');var _0x587ae6=_0x17926a['count'];var _0x6f2621=_0x2886c7?0x0:_0x4f4a5f[_0x792d('0x1f')];var _0x517c4f=_0x2886c7?_0x17926a['count']:_0x4f4a5f['offset']+_0x4f4a5f['limit'];var _0x4339c3;if(_0x517c4f>=_0x587ae6){_0x517c4f=_0x587ae6;_0x4339c3=0xc8;}else{_0x4339c3=0xce;}_0x4cb633[_0x792d('0x1c')](_0x4339c3);return _0x4cb633[_0x792d('0x22')]('Content-Range',_0x6f2621+'-'+_0x517c4f+'/'+_0x587ae6)[_0x792d('0x1e')](_0x17926a);}return null;};}function patchUpdates(_0x591f3a){return function(_0xf7cba4){try{jsonpatch[_0x792d('0x23')](_0xf7cba4,_0x591f3a,!![]);}catch(_0x468766){return BPromise[_0x792d('0x24')](_0x468766);}return _0xf7cba4[_0x792d('0x25')]();};}function saveUpdates(_0x2d2df3,_0x4739b9){return function(_0x5d1721){if(_0x5d1721){return _0x5d1721[_0x792d('0x26')](_0x2d2df3)[_0x792d('0x27')](function(_0x35b59f){return _0x35b59f;});}return null;};}function removeEntity(_0x789a2e,_0xa674af){return function(_0x40e61e){if(_0x40e61e){return _0x40e61e['destroy']()[_0x792d('0x27')](function(){var _0x2edb05=_0x40e61e['get']({'plain':!![]});var _0x30c3e8=_0x792d('0x28');return db['UserProfileResource'][_0x792d('0x29')]({'where':{'type':_0x30c3e8,'resourceId':_0x2edb05['id']}})[_0x792d('0x27')](function(){return _0x40e61e;});})['then'](function(){_0x789a2e['status'](0xcc)[_0x792d('0x1d')]();});}};}function handleEntityNotFound(_0x2dad4e,_0x4a486c){return function(_0x335cde){if(!_0x335cde){_0x2dad4e['sendStatus'](0x194);}return _0x335cde;};}function handleError(_0x3fbd8c,_0xa2fd98){_0xa2fd98=_0xa2fd98||0x1f4;return function(_0x3d84a7){logger['error'](_0x3d84a7['stack']);if(_0x3d84a7[_0x792d('0x2a')]){delete _0x3d84a7[_0x792d('0x2a')];}_0x3fbd8c[_0x792d('0x1c')](_0xa2fd98)['send'](_0x3d84a7);};}exports[_0x792d('0x2b')]=function(_0x14a648,_0xe60d2c){var _0x30f4d1={},_0x3f433d={},_0x51885d={'count':0x0,'rows':[]};var _0x5b4729=_['map'](db[_0x792d('0x2c')][_0x792d('0x2d')],function(_0x4e38c0){return{'name':_0x4e38c0[_0x792d('0x2e')],'type':_0x4e38c0[_0x792d('0x2f')]['key']};});_0x3f433d[_0x792d('0x30')]=_[_0x792d('0x31')](_0x5b4729,'name');_0x3f433d[_0x792d('0x32')]=_[_0x792d('0x33')](_0x14a648[_0x792d('0x32')]);_0x3f433d[_0x792d('0x34')]=_[_0x792d('0x35')](_0x3f433d[_0x792d('0x30')],_0x3f433d[_0x792d('0x32')]);_0x30f4d1[_0x792d('0x36')]=_[_0x792d('0x35')](_0x3f433d[_0x792d('0x30')],qs[_0x792d('0x37')](_0x14a648['query']['fields']));_0x30f4d1[_0x792d('0x36')]=_0x30f4d1[_0x792d('0x36')][_0x792d('0x38')]?_0x30f4d1[_0x792d('0x36')]:_0x3f433d[_0x792d('0x30')];if(!_0x14a648[_0x792d('0x32')]['hasOwnProperty'](_0x792d('0x39'))){_0x30f4d1[_0x792d('0x20')]=qs['limit'](_0x14a648['query'][_0x792d('0x20')]);_0x30f4d1[_0x792d('0x1f')]=qs[_0x792d('0x1f')](_0x14a648[_0x792d('0x32')][_0x792d('0x1f')]);}_0x30f4d1['order']=qs[_0x792d('0x3a')](_0x14a648[_0x792d('0x32')]['sort']);_0x30f4d1[_0x792d('0x3b')]=qs[_0x792d('0x34')](_['pick'](_0x14a648[_0x792d('0x32')],_0x3f433d[_0x792d('0x34')]),_0x5b4729);if(_0x14a648['query'][_0x792d('0x3c')]){_0x30f4d1['where']=_[_0x792d('0x3d')](_0x30f4d1['where'],{'$or':_[_0x792d('0x31')](_0x5b4729,function(_0x3dd536){if(_0x3dd536[_0x792d('0x2f')]!==_0x792d('0x3e')){var _0x25e379={};_0x25e379[_0x3dd536[_0x792d('0x2a')]]={'$like':'%'+_0x14a648[_0x792d('0x32')][_0x792d('0x3c')]+'%'};return _0x25e379;}})});}_0x30f4d1=_[_0x792d('0x3d')]({},_0x30f4d1,_0x14a648['options']);var _0x3f41ad={'where':_0x30f4d1[_0x792d('0x3b')]};return db[_0x792d('0x2c')][_0x792d('0x3f')](_0x3f41ad)['then'](function(_0x18faf7){_0x51885d['count']=_0x18faf7;if(_0x14a648['query']['includeAll']){_0x30f4d1['include']=[{'all':!![]}];}return db[_0x792d('0x2c')]['findAll'](_0x30f4d1);})[_0x792d('0x27')](function(_0x19dac9){_0x51885d['rows']=_0x19dac9;return _0x51885d;})[_0x792d('0x27')](respondWithFilteredResult(_0xe60d2c,_0x30f4d1))['catch'](handleError(_0xe60d2c,null));};exports[_0x792d('0x40')]=function(_0x420f48,_0x3b29b9){var _0x50d3cc={'raw':!![],'where':{'id':_0x420f48[_0x792d('0x41')]['id']}},_0x5bde5f={};_0x5bde5f[_0x792d('0x30')]=_[_0x792d('0x33')](db[_0x792d('0x2c')][_0x792d('0x2d')]);_0x5bde5f[_0x792d('0x32')]=_['keys'](_0x420f48['query']);_0x5bde5f[_0x792d('0x34')]=_[_0x792d('0x35')](_0x5bde5f[_0x792d('0x30')],_0x5bde5f[_0x792d('0x32')]);_0x50d3cc[_0x792d('0x36')]=_['intersection'](_0x5bde5f[_0x792d('0x30')],qs[_0x792d('0x37')](_0x420f48['query'][_0x792d('0x37')]));_0x50d3cc[_0x792d('0x36')]=_0x50d3cc[_0x792d('0x36')][_0x792d('0x38')]?_0x50d3cc[_0x792d('0x36')]:_0x5bde5f[_0x792d('0x30')];if(_0x420f48[_0x792d('0x32')][_0x792d('0x42')]){_0x50d3cc[_0x792d('0x43')]=[{'all':!![]}];}_0x50d3cc=_[_0x792d('0x3d')]({},_0x50d3cc,_0x420f48['options']);return db['SquareOdbc'][_0x792d('0x44')](_0x50d3cc)['then'](handleEntityNotFound(_0x3b29b9,null))[_0x792d('0x27')](respondWithResult(_0x3b29b9,null))[_0x792d('0x45')](handleError(_0x3b29b9,null));};exports[_0x792d('0x46')]=function(_0x31869b,_0x9f3a0b){return db['SquareOdbc'][_0x792d('0x46')](_0x31869b['body'],{})[_0x792d('0x27')](function(_0xffc70c){var _0x30dfd2=_0x31869b[_0x792d('0x47')][_0x792d('0x48')]({'plain':!![]});if(!_0x30dfd2)throw new Error(_0x792d('0x49'));if(_0x30dfd2[_0x792d('0x4a')]===_0x792d('0x47')){var _0x279a4c=_0xffc70c[_0x792d('0x48')]({'plain':!![]});var _0x162eca='ODBC';return db[_0x792d('0x4b')]['find']({'where':{'name':_0x162eca,'userProfileId':_0x30dfd2[_0x792d('0x4c')]},'raw':!![]})['then'](function(_0x4f6728){if(_0x4f6728&&_0x4f6728[_0x792d('0x4d')]===0x0){return db[_0x792d('0x4e')][_0x792d('0x46')]({'name':_0x279a4c[_0x792d('0x2a')],'resourceId':_0x279a4c['id'],'type':_0x4f6728[_0x792d('0x2a')],'sectionId':_0x4f6728['id']},{})[_0x792d('0x27')](function(){return _0xffc70c;});}else{return _0xffc70c;}})[_0x792d('0x45')](function(_0x8e487d){logger[_0x792d('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x8e487d);throw _0x8e487d;});}return _0xffc70c;})[_0x792d('0x27')](respondWithResult(_0x9f3a0b,0xc9))[_0x792d('0x45')](handleError(_0x9f3a0b,null));};exports[_0x792d('0x26')]=function(_0x3a0d60,_0x561479){if(_0x3a0d60[_0x792d('0x50')]['id']){delete _0x3a0d60['body']['id'];}return db[_0x792d('0x2c')][_0x792d('0x44')]({'where':{'id':_0x3a0d60[_0x792d('0x41')]['id']}})['then'](handleEntityNotFound(_0x561479,null))[_0x792d('0x27')](saveUpdates(_0x3a0d60['body'],null))[_0x792d('0x27')](respondWithResult(_0x561479,null))[_0x792d('0x45')](handleError(_0x561479,null));};exports[_0x792d('0x29')]=function(_0x46ea31,_0x383139){return db[_0x792d('0x2c')]['find']({'where':{'id':_0x46ea31[_0x792d('0x41')]['id']}})['then'](handleEntityNotFound(_0x383139,null))[_0x792d('0x27')](removeEntity(_0x383139,null))[_0x792d('0x45')](handleError(_0x383139,null));};exports[_0x792d('0x51')]=function(_0x3c1826,_0x4d9cda,_0x53c5df){var _0x3c25b7;return db['SquareOdbc'][_0x792d('0x44')]({'where':{'id':_0x3c1826['params']['id']},'attributes':['id','dsn']})[_0x792d('0x27')](handleEntityNotFound(_0x4d9cda,null))['then'](function(_0x1be4f0){if(_0x1be4f0){var _0x39c631=require('odbc')();_0x39c631[_0x792d('0x52')](_0x1be4f0[_0x792d('0x53')]);_0x39c631[_0x792d('0x54')]();return _0x1be4f0;}})[_0x792d('0x27')](respondWithResult(_0x4d9cda,null))['catch'](handleError(_0x4d9cda,null));};