bd3ec3acc7745bbf8549351ea5cb9150cb708b75
[motion2.git] / server / api / intSugarcrmAccount / intSugarcrmAccount.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 _0x6641=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','find','create','update','body','destroy','getConfigurations','findOne','keys','SugarcrmConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','Subjects','SugarcrmField','getFields','assigned_user_id','description','date_start','duration_hours','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','substring','lastIndexOf','format','%s%s','login','stringify','password','PLAIN','Invalid\x20Login','POST','/service/v4_1/rest.php','get_module_fields','JSON','Calls','includes','label','values','value','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','save','then','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type'];(function(_0x4f644c,_0x267433){var _0x5b1528=function(_0x1ccf08){while(--_0x1ccf08){_0x4f644c['push'](_0x4f644c['shift']());}};_0x5b1528(++_0x267433);}(_0x6641,0xc0));var _0x1664=function(_0x5a1667,_0x123ff4){_0x5a1667=_0x5a1667-0x0;var _0x127eaa=_0x6641[_0x5a1667];return _0x127eaa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1664('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1664('0x1'));var moment=require(_0x1664('0x2'));var BPromise=require(_0x1664('0x3'));var Mustache=require('mustache');var util=require(_0x1664('0x4'));var path=require(_0x1664('0x5'));var sox=require('sox');var csv=require(_0x1664('0x6'));var ejs=require(_0x1664('0x7'));var fs=require('fs');var fs_extra=require(_0x1664('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1664('0x9'));var deskjs=require(_0x1664('0xa'));var toCsv=require(_0x1664('0x6'));var querystring=require(_0x1664('0xb'));var Papa=require(_0x1664('0xc'));var Redis=require('ioredis');var authService=require(_0x1664('0xd'));var qs=require(_0x1664('0xe'));var as=require(_0x1664('0xf'));var hardwareService=require(_0x1664('0x10'));var logger=require('../../config/logger')(_0x1664('0x11'));var utils=require(_0x1664('0x12'));var config=require(_0x1664('0x13'));var licenseUtil=require(_0x1664('0x14'));var db=require(_0x1664('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x25c6f2,_0x3fc7c1){_0x3fc7c1=_0x3fc7c1||0xcc;return function(_0x2d296d){if(_0x2d296d){return _0x25c6f2[_0x1664('0x16')](_0x3fc7c1);}return _0x25c6f2['status'](_0x3fc7c1)[_0x1664('0x17')]();};}function respondWithResult(_0x5d4f3b,_0xbb74c8){_0xbb74c8=_0xbb74c8||0xc8;return function(_0x168873){if(_0x168873){return _0x5d4f3b[_0x1664('0x18')](_0xbb74c8)[_0x1664('0x19')](_0x168873);}};}function respondWithFilteredResult(_0x13b242,_0x33d77c){return function(_0x42a4f0){if(_0x42a4f0){var _0x4d0752=typeof _0x33d77c[_0x1664('0x1a')]===_0x1664('0x1b')&&typeof _0x33d77c['limit']===_0x1664('0x1b');var _0x448a27=_0x42a4f0['count'];var _0x27f5ef=_0x4d0752?0x0:_0x33d77c[_0x1664('0x1a')];var _0x3e3b42=_0x4d0752?_0x42a4f0[_0x1664('0x1c')]:_0x33d77c['offset']+_0x33d77c[_0x1664('0x1d')];var _0x51531b;if(_0x3e3b42>=_0x448a27){_0x3e3b42=_0x448a27;_0x51531b=0xc8;}else{_0x51531b=0xce;}_0x13b242[_0x1664('0x18')](_0x51531b);return _0x13b242[_0x1664('0x1e')]('Content-Range',_0x27f5ef+'-'+_0x3e3b42+'/'+_0x448a27)[_0x1664('0x19')](_0x42a4f0);}return null;};}function patchUpdates(_0x224bce){return function(_0x372aa2){try{jsonpatch[_0x1664('0x1f')](_0x372aa2,_0x224bce,!![]);}catch(_0x3c6f5e){return BPromise['reject'](_0x3c6f5e);}return _0x372aa2[_0x1664('0x20')]();};}function saveUpdates(_0x4de688,_0x42e77c){return function(_0x4953d2){if(_0x4953d2){return _0x4953d2['update'](_0x4de688)[_0x1664('0x21')](function(_0x59b560){return _0x59b560;});}return null;};}function removeEntity(_0x2691ec,_0x299991){return function(_0x483365){if(_0x483365){return _0x483365['destroy']()['then'](function(){_0x2691ec[_0x1664('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4091d9,_0x13b241){return function(_0x840b86){if(!_0x840b86){_0x4091d9['sendStatus'](0x194);}return _0x840b86;};}function handleError(_0x30a5fb,_0x35b823){_0x35b823=_0x35b823||0x1f4;return function(_0x4e3d6f){logger['error'](_0x4e3d6f['stack']);if(_0x4e3d6f[_0x1664('0x22')]){delete _0x4e3d6f[_0x1664('0x22')];}_0x30a5fb[_0x1664('0x18')](_0x35b823)[_0x1664('0x23')](_0x4e3d6f);};}exports[_0x1664('0x24')]=function(_0x305b9b,_0x3969ea){var _0x440c33={},_0x14021f={},_0x5176b9={'count':0x0,'rows':[]};var _0x2225e6=_[_0x1664('0x25')](db[_0x1664('0x26')][_0x1664('0x27')],function(_0x458641){return{'name':_0x458641[_0x1664('0x28')],'type':_0x458641[_0x1664('0x29')][_0x1664('0x2a')]};});_0x14021f[_0x1664('0x2b')]=_[_0x1664('0x25')](_0x2225e6,_0x1664('0x22'));_0x14021f['query']=_['keys'](_0x305b9b[_0x1664('0x2c')]);_0x14021f[_0x1664('0x2d')]=_[_0x1664('0x2e')](_0x14021f[_0x1664('0x2b')],_0x14021f['query']);_0x440c33[_0x1664('0x2f')]=_[_0x1664('0x2e')](_0x14021f[_0x1664('0x2b')],qs[_0x1664('0x30')](_0x305b9b[_0x1664('0x2c')][_0x1664('0x30')]));_0x440c33[_0x1664('0x2f')]=_0x440c33[_0x1664('0x2f')][_0x1664('0x31')]?_0x440c33[_0x1664('0x2f')]:_0x14021f['model'];if(!_0x305b9b[_0x1664('0x2c')][_0x1664('0x32')](_0x1664('0x33'))){_0x440c33['limit']=qs['limit'](_0x305b9b[_0x1664('0x2c')][_0x1664('0x1d')]);_0x440c33['offset']=qs['offset'](_0x305b9b[_0x1664('0x2c')][_0x1664('0x1a')]);}_0x440c33[_0x1664('0x34')]=qs['sort'](_0x305b9b['query'][_0x1664('0x35')]);_0x440c33[_0x1664('0x36')]=qs[_0x1664('0x2d')](_[_0x1664('0x37')](_0x305b9b['query'],_0x14021f['filters']),_0x2225e6);if(_0x305b9b['query'][_0x1664('0x38')]){_0x440c33[_0x1664('0x36')]=_[_0x1664('0x39')](_0x440c33[_0x1664('0x36')],{'$or':_[_0x1664('0x25')](_0x2225e6,function(_0x1014e6){if(_0x1014e6[_0x1664('0x29')]!==_0x1664('0x3a')){var _0x2ab113={};_0x2ab113[_0x1014e6[_0x1664('0x22')]]={'$like':'%'+_0x305b9b[_0x1664('0x2c')][_0x1664('0x38')]+'%'};return _0x2ab113;}})});}_0x440c33=_[_0x1664('0x39')]({},_0x440c33,_0x305b9b['options']);var _0x1b2406={'where':_0x440c33['where']};return db[_0x1664('0x26')][_0x1664('0x1c')](_0x1b2406)[_0x1664('0x21')](function(_0x57bcf6){_0x5176b9[_0x1664('0x1c')]=_0x57bcf6;if(_0x305b9b[_0x1664('0x2c')][_0x1664('0x3b')]){_0x440c33[_0x1664('0x3c')]=[{'all':!![]}];}return db[_0x1664('0x26')]['findAll'](_0x440c33);})[_0x1664('0x21')](function(_0x4501e5){_0x5176b9[_0x1664('0x3d')]=_0x4501e5;return _0x5176b9;})[_0x1664('0x21')](respondWithFilteredResult(_0x3969ea,_0x440c33))[_0x1664('0x3e')](handleError(_0x3969ea,null));};exports[_0x1664('0x3f')]=function(_0x4150c6,_0x1b39d6){var _0x37ed07={'raw':![],'where':{'id':_0x4150c6[_0x1664('0x40')]['id']}},_0x2bb50e={};_0x2bb50e[_0x1664('0x2b')]=_['keys'](db['SugarcrmAccount']['rawAttributes']);_0x2bb50e['query']=_['keys'](_0x4150c6['query']);_0x2bb50e[_0x1664('0x2d')]=_[_0x1664('0x2e')](_0x2bb50e[_0x1664('0x2b')],_0x2bb50e['query']);_0x37ed07[_0x1664('0x2f')]=_['intersection'](_0x2bb50e[_0x1664('0x2b')],qs[_0x1664('0x30')](_0x4150c6[_0x1664('0x2c')]['fields']));_0x37ed07['attributes']=_0x37ed07[_0x1664('0x2f')][_0x1664('0x31')]?_0x37ed07['attributes']:_0x2bb50e[_0x1664('0x2b')];if(_0x4150c6[_0x1664('0x2c')]['includeAll']){_0x37ed07[_0x1664('0x3c')]=[{'all':!![]}];}_0x37ed07=_[_0x1664('0x39')]({},_0x37ed07,_0x4150c6[_0x1664('0x41')]);return db[_0x1664('0x26')][_0x1664('0x42')](_0x37ed07)[_0x1664('0x21')](handleEntityNotFound(_0x1b39d6,null))[_0x1664('0x21')](respondWithResult(_0x1b39d6,null))[_0x1664('0x3e')](handleError(_0x1b39d6,null));};exports[_0x1664('0x43')]=function(_0x5ccc68,_0x510dab){return db['SugarcrmAccount'][_0x1664('0x43')](_0x5ccc68['body'],{})[_0x1664('0x21')](respondWithResult(_0x510dab,0xc9))[_0x1664('0x3e')](handleError(_0x510dab,null));};exports[_0x1664('0x44')]=function(_0x2428fe,_0x144538){if(_0x2428fe[_0x1664('0x45')]['id']){delete _0x2428fe[_0x1664('0x45')]['id'];}return db[_0x1664('0x26')][_0x1664('0x42')]({'where':{'id':_0x2428fe['params']['id']}})[_0x1664('0x21')](handleEntityNotFound(_0x144538,null))['then'](saveUpdates(_0x2428fe[_0x1664('0x45')],null))['then'](respondWithResult(_0x144538,null))[_0x1664('0x3e')](handleError(_0x144538,null));};exports[_0x1664('0x46')]=function(_0x365ef4,_0x5ecb09){return db['SugarcrmAccount'][_0x1664('0x42')]({'where':{'id':_0x365ef4[_0x1664('0x40')]['id']}})['then'](handleEntityNotFound(_0x5ecb09,null))[_0x1664('0x21')](removeEntity(_0x5ecb09,null))[_0x1664('0x3e')](handleError(_0x5ecb09,null));};exports[_0x1664('0x47')]=function(_0x1170b7,_0x5e7205,_0x3e9413){var _0x481647={};var _0x3e356c={};var _0x205ca0;var _0x4b824a;return db[_0x1664('0x26')][_0x1664('0x48')]({'where':{'id':_0x1170b7[_0x1664('0x40')]['id']}})[_0x1664('0x21')](handleEntityNotFound(_0x5e7205,null))['then'](function(_0x57ad54){if(_0x57ad54){_0x205ca0=_0x57ad54;_0x3e356c[_0x1664('0x2b')]=_[_0x1664('0x49')](db[_0x1664('0x4a')][_0x1664('0x27')]);_0x3e356c[_0x1664('0x2c')]=_[_0x1664('0x49')](_0x1170b7[_0x1664('0x2c')]);_0x3e356c[_0x1664('0x2d')]=_['intersection'](_0x3e356c[_0x1664('0x2b')],_0x3e356c['query']);_0x481647[_0x1664('0x2f')]=_[_0x1664('0x2e')](_0x3e356c[_0x1664('0x2b')],qs[_0x1664('0x30')](_0x1170b7[_0x1664('0x2c')][_0x1664('0x30')]));_0x481647[_0x1664('0x2f')]=_0x481647[_0x1664('0x2f')][_0x1664('0x31')]?_0x481647[_0x1664('0x2f')]:_0x3e356c[_0x1664('0x2b')];_0x481647[_0x1664('0x34')]=qs[_0x1664('0x35')](_0x1170b7['query'][_0x1664('0x35')]);_0x481647[_0x1664('0x36')]=qs[_0x1664('0x2d')](_[_0x1664('0x37')](_0x1170b7['query'],_0x3e356c[_0x1664('0x2d')]));if(_0x1170b7[_0x1664('0x2c')]['filter']){_0x481647[_0x1664('0x36')]=_[_0x1664('0x39')](_0x481647[_0x1664('0x36')],{'$or':_['map'](_0x481647[_0x1664('0x2f')],function(_0x27022b){var _0x153b14={};_0x153b14[_0x27022b]={'$like':'%'+_0x1170b7[_0x1664('0x2c')][_0x1664('0x38')]+'%'};return _0x153b14;})});}_0x481647=_[_0x1664('0x39')]({},_0x481647,_0x1170b7['options']);return _0x205ca0[_0x1664('0x47')](_0x481647);}})[_0x1664('0x21')](function(_0x5adf4f){if(_0x5adf4f){_0x4b824a=_0x5adf4f['length'];if(!_0x1170b7[_0x1664('0x2c')]['hasOwnProperty'](_0x1664('0x33'))){_0x481647[_0x1664('0x1d')]=qs[_0x1664('0x1d')](_0x1170b7[_0x1664('0x2c')][_0x1664('0x1d')]);_0x481647[_0x1664('0x1a')]=qs['offset'](_0x1170b7['query']['offset']);}return _0x205ca0[_0x1664('0x47')](_0x481647);}})['then'](function(_0x3db5bf){if(_0x3db5bf){return _0x3db5bf?{'count':_0x4b824a,'rows':_0x3db5bf}:null;}})['then'](respondWithResult(_0x5e7205,null))[_0x1664('0x3e')](handleError(_0x5e7205,null));};exports[_0x1664('0x4b')]=function(_0x105f63,_0x49c5e3,_0x102010){if(_0x105f63[_0x1664('0x45')]['id']){delete _0x105f63[_0x1664('0x45')]['id'];}return db[_0x1664('0x26')][_0x1664('0x48')]({'where':{'id':_0x105f63[_0x1664('0x40')]['id']}})[_0x1664('0x21')](handleEntityNotFound(_0x49c5e3,null))[_0x1664('0x21')](function(_0x13e55e){if(_0x13e55e){_0x105f63[_0x1664('0x45')][_0x1664('0x4c')]=_0x13e55e['id'];_0x105f63[_0x1664('0x45')]['Subjects']=integrations[_0x1664('0x4d')](_0x105f63[_0x1664('0x45')][_0x1664('0x4e')],_0x105f63[_0x1664('0x45')]['type']);_0x105f63[_0x1664('0x45')][_0x1664('0x4f')]=integrations['getDescriptions'](_0x105f63[_0x1664('0x45')][_0x1664('0x4e')],_0x105f63[_0x1664('0x45')][_0x1664('0x29')]);return db[_0x1664('0x4a')][_0x1664('0x43')](_0x105f63[_0x1664('0x45')],{'include':[{'model':db['SugarcrmField'],'as':_0x1664('0x50')},{'model':db[_0x1664('0x51')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x49c5e3,null))[_0x1664('0x3e')](handleError(_0x49c5e3,null));};exports[_0x1664('0x52')]=function(_0x536919,_0x3c8695,_0xa24c68){var _0x252d5b='';var _0x36af7f=['id',_0x1664('0x22'),_0x1664('0x53'),'created_by',_0x1664('0x54'),_0x1664('0x55'),_0x1664('0x56'),'duration_minutes',_0x1664('0x57'),_0x1664('0x58'),_0x1664('0x59'),_0x1664('0x5a')];return db[_0x1664('0x26')][_0x1664('0x48')]({'where':{'id':_0x536919[_0x1664('0x40')]['id']},'attributes':['id',_0x1664('0x5b'),'password','remoteUri']})[_0x1664('0x21')](handleEntityNotFound(_0x3c8695,null))['then'](function(_0x5a9118){if(_0x5a9118){_0x252d5b=_0x5a9118[_0x1664('0x5c')];var _0x5caf3f=_0x252d5b[_0x1664('0x5d')](-0x1);if(_0x5caf3f==='/'){_0x252d5b=_0x252d5b[_0x1664('0x5e')](0x0,_0x252d5b[_0x1664('0x5f')](_0x5caf3f));}return rp({'method':'POST','uri':util[_0x1664('0x60')](_0x1664('0x61'),_0x252d5b,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x1664('0x62'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x1664('0x63')]({'user_auth':{'user_name':_0x5a9118[_0x1664('0x5b')],'password':_0x5a9118[_0x1664('0x64')],'encryption':_0x1664('0x65')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x1664('0x21')](function(_0x5d0420){if(_0x5d0420&&_0x5d0420[_0x1664('0x22')]!==_0x1664('0x66')&&_0x5d0420[_0x1664('0x22')]!=='Password\x20Expired'){return rp({'method':_0x1664('0x67'),'uri':util[_0x1664('0x60')]('%s%s',_0x252d5b,_0x1664('0x68')),'json':!![],'form':{'method':_0x1664('0x69'),'input_type':_0x1664('0x6a'),'response_type':'JSON','rest_data':JSON[_0x1664('0x63')]({'session':_0x5d0420['id'],'module_name':_0x1664('0x6b')})}})[_0x1664('0x21')](function(_0x23ee37){if(_0x23ee37){var _0x53ec6f=_['values'](_0x23ee37['module_fields']);_['remove'](_0x53ec6f,function(_0x44af1e){return _0x36af7f[_0x1664('0x6c')](_0x44af1e[_0x1664('0x22')]);});return{'count':_0x53ec6f[_0x1664('0x31')],'rows':_[_0x1664('0x25')](_0x53ec6f,function(_0x2eb1b6){return{'id':_0x2eb1b6[_0x1664('0x22')],'name':_0x2eb1b6[_0x1664('0x6d')],'custom':_['endsWith'](_0x2eb1b6['name'],'_c')?!![]:![],'options':_0x2eb1b6['options']?_[_0x1664('0x25')](_[_0x1664('0x6e')](_0x2eb1b6['options']),function(_0x237e7c){return{'name':_0x237e7c[_0x1664('0x6f')],'value':_0x237e7c['name']};}):[]};})};}})[_0x1664('0x21')](respondWithResult(_0x3c8695,null))['catch'](function(_0x2054b5){var _0x3d3959=_0x536919[_0x1664('0x2c')][_0x1664('0x70')]?0x1f4:_0x2054b5[_0x1664('0x71')]||0x1f4;logger[_0x1664('0x72')](_0x1664('0x73'),_0x1664('0x52'),_0x3d3959,JSON[_0x1664('0x63')](_0x2054b5));delete _0x2054b5['name'];if(_0x3d3959===0x191){_0x3d3959=0x190;}_0x3c8695['status'](_0x3d3959)[_0x1664('0x23')](_0x536919[_0x1664('0x2c')][_0x1664('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x2054b5[_0x1664('0x71')]}:_0x2054b5);});}else{var _0x261c3d=0x1f4;_0x3c8695['status'](_0x261c3d)[_0x1664('0x23')]({'message':_0x1664('0x74'),'statusCode':0x190});}});};