424a4347cd18ca29569d9196c4a314c6c0bb8de7
[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 _0xd9db=['username','password','remoteUri','slice','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Password\x20Expired','format','get_module_fields','Calls','values','module_fields','remove','includes','endsWith','value','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','map','options','SugarcrmAccount','rows','params','includeAll','include','find','catch','create','body','getConfigurations','findOne','SugarcrmConfiguration','nolimit','addConfiguration','AccountId','channel','Descriptions','getDescriptions','SugarcrmField','Subjects','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_name'];(function(_0x15b380,_0x1a3c5f){var _0x232c5c=function(_0x12f8e0){while(--_0x12f8e0){_0x15b380['push'](_0x15b380['shift']());}};_0x232c5c(++_0x1a3c5f);}(_0xd9db,0x1ec));var _0xbd9d=function(_0x4aaa68,_0x1adf58){_0x4aaa68=_0x4aaa68-0x0;var _0xf628dc=_0xd9db[_0x4aaa68];return _0xf628dc;};'use strict';var emlformat=require(_0xbd9d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbd9d('0x1'));var rp=require('request-promise');var moment=require(_0xbd9d('0x2'));var BPromise=require(_0xbd9d('0x3'));var Mustache=require(_0xbd9d('0x4'));var util=require('util');var path=require(_0xbd9d('0x5'));var sox=require(_0xbd9d('0x6'));var csv=require(_0xbd9d('0x7'));var ejs=require(_0xbd9d('0x8'));var fs=require('fs');var fs_extra=require(_0xbd9d('0x9'));var _=require(_0xbd9d('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbd9d('0xb'));var deskjs=require(_0xbd9d('0xc'));var toCsv=require('to-csv');var querystring=require(_0xbd9d('0xd'));var Papa=require(_0xbd9d('0xe'));var Redis=require(_0xbd9d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xbd9d('0x10'));var as=require(_0xbd9d('0x11'));var hardwareService=require(_0xbd9d('0x12'));var logger=require(_0xbd9d('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xbd9d('0x14'));var db=require(_0xbd9d('0x15'))['db'];var integrations=require(_0xbd9d('0x16'));function respondWithStatusCode(_0x555d65,_0x3d5418){_0x3d5418=_0x3d5418||0xcc;return function(_0x501516){if(_0x501516){return _0x555d65[_0xbd9d('0x17')](_0x3d5418);}return _0x555d65[_0xbd9d('0x18')](_0x3d5418)[_0xbd9d('0x19')]();};}function respondWithResult(_0x4f16f0,_0x570134){_0x570134=_0x570134||0xc8;return function(_0x2a3cef){if(_0x2a3cef){return _0x4f16f0[_0xbd9d('0x18')](_0x570134)[_0xbd9d('0x1a')](_0x2a3cef);}};}function respondWithFilteredResult(_0x203d5e,_0x2d50ae){return function(_0x13cfa6){if(_0x13cfa6){var _0x31bc30=typeof _0x2d50ae[_0xbd9d('0x1b')]===_0xbd9d('0x1c')&&typeof _0x2d50ae['limit']==='undefined';var _0x128e5e=_0x13cfa6[_0xbd9d('0x1d')];var _0x24076d=_0x31bc30?0x0:_0x2d50ae['offset'];var _0x6eb59a=_0x31bc30?_0x13cfa6['count']:_0x2d50ae[_0xbd9d('0x1b')]+_0x2d50ae[_0xbd9d('0x1e')];var _0x21adba;if(_0x6eb59a>=_0x128e5e){_0x6eb59a=_0x128e5e;_0x21adba=0xc8;}else{_0x21adba=0xce;}_0x203d5e['status'](_0x21adba);return _0x203d5e[_0xbd9d('0x1f')]('Content-Range',_0x24076d+'-'+_0x6eb59a+'/'+_0x128e5e)['json'](_0x13cfa6);}return null;};}function patchUpdates(_0x43550f){return function(_0xc9d4c){try{jsonpatch['apply'](_0xc9d4c,_0x43550f,!![]);}catch(_0x3f3623){return BPromise[_0xbd9d('0x20')](_0x3f3623);}return _0xc9d4c[_0xbd9d('0x21')]();};}function saveUpdates(_0x3d2b0d,_0x43245b){return function(_0xfe38af){if(_0xfe38af){return _0xfe38af[_0xbd9d('0x22')](_0x3d2b0d)[_0xbd9d('0x23')](function(_0x4d0aa7){return _0x4d0aa7;});}return null;};}function removeEntity(_0x17b81e,_0x2d6c07){return function(_0x54ad1a){if(_0x54ad1a){return _0x54ad1a[_0xbd9d('0x24')]()[_0xbd9d('0x23')](function(){_0x17b81e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29ace8,_0x253946){return function(_0x484d03){if(!_0x484d03){_0x29ace8[_0xbd9d('0x17')](0x194);}return _0x484d03;};}function handleError(_0x17fdbc,_0x12b21a){_0x12b21a=_0x12b21a||0x1f4;return function(_0xd1607){logger['error'](_0xd1607[_0xbd9d('0x25')]);if(_0xd1607[_0xbd9d('0x26')]){delete _0xd1607['name'];}_0x17fdbc[_0xbd9d('0x18')](_0x12b21a)[_0xbd9d('0x27')](_0xd1607);};}exports[_0xbd9d('0x28')]=function(_0x2fd6de,_0x2e934d){var _0x98c7cc={},_0x41170c={},_0x112323={'count':0x0,'rows':[]};var _0x1a2a38=_['map'](db['SugarcrmAccount'][_0xbd9d('0x29')],function(_0x3a56e2){return{'name':_0x3a56e2[_0xbd9d('0x2a')],'type':_0x3a56e2['type'][_0xbd9d('0x2b')]};});_0x41170c[_0xbd9d('0x2c')]=_['map'](_0x1a2a38,_0xbd9d('0x26'));_0x41170c[_0xbd9d('0x2d')]=_[_0xbd9d('0x2e')](_0x2fd6de['query']);_0x41170c[_0xbd9d('0x2f')]=_[_0xbd9d('0x30')](_0x41170c[_0xbd9d('0x2c')],_0x41170c['query']);_0x98c7cc['attributes']=_[_0xbd9d('0x30')](_0x41170c[_0xbd9d('0x2c')],qs[_0xbd9d('0x31')](_0x2fd6de[_0xbd9d('0x2d')][_0xbd9d('0x31')]));_0x98c7cc['attributes']=_0x98c7cc[_0xbd9d('0x32')][_0xbd9d('0x33')]?_0x98c7cc[_0xbd9d('0x32')]:_0x41170c[_0xbd9d('0x2c')];if(!_0x2fd6de[_0xbd9d('0x2d')][_0xbd9d('0x34')]('nolimit')){_0x98c7cc[_0xbd9d('0x1e')]=qs[_0xbd9d('0x1e')](_0x2fd6de[_0xbd9d('0x2d')]['limit']);_0x98c7cc[_0xbd9d('0x1b')]=qs[_0xbd9d('0x1b')](_0x2fd6de['query'][_0xbd9d('0x1b')]);}_0x98c7cc[_0xbd9d('0x35')]=qs[_0xbd9d('0x36')](_0x2fd6de[_0xbd9d('0x2d')]['sort']);_0x98c7cc[_0xbd9d('0x37')]=qs[_0xbd9d('0x2f')](_['pick'](_0x2fd6de[_0xbd9d('0x2d')],_0x41170c[_0xbd9d('0x2f')]),_0x1a2a38);if(_0x2fd6de['query'][_0xbd9d('0x38')]){_0x98c7cc[_0xbd9d('0x37')]=_[_0xbd9d('0x39')](_0x98c7cc['where'],{'$or':_[_0xbd9d('0x3a')](_0x1a2a38,function(_0x38c9c6){if(_0x38c9c6['type']!=='VIRTUAL'){var _0xb9c039={};_0xb9c039[_0x38c9c6['name']]={'$like':'%'+_0x2fd6de[_0xbd9d('0x2d')][_0xbd9d('0x38')]+'%'};return _0xb9c039;}})});}_0x98c7cc=_[_0xbd9d('0x39')]({},_0x98c7cc,_0x2fd6de[_0xbd9d('0x3b')]);var _0x879f50={'where':_0x98c7cc[_0xbd9d('0x37')]};return db[_0xbd9d('0x3c')][_0xbd9d('0x1d')](_0x879f50)[_0xbd9d('0x23')](function(_0x1331c3){_0x112323[_0xbd9d('0x1d')]=_0x1331c3;if(_0x2fd6de[_0xbd9d('0x2d')]['includeAll']){_0x98c7cc['include']=[{'all':!![]}];}return db[_0xbd9d('0x3c')]['findAll'](_0x98c7cc);})[_0xbd9d('0x23')](function(_0x1b9c55){_0x112323[_0xbd9d('0x3d')]=_0x1b9c55;return _0x112323;})['then'](respondWithFilteredResult(_0x2e934d,_0x98c7cc))['catch'](handleError(_0x2e934d,null));};exports['show']=function(_0x140683,_0x3193a7){var _0x5a1556={'raw':![],'where':{'id':_0x140683[_0xbd9d('0x3e')]['id']}},_0x4afd79={};_0x4afd79[_0xbd9d('0x2c')]=_['keys'](db['SugarcrmAccount'][_0xbd9d('0x29')]);_0x4afd79['query']=_['keys'](_0x140683[_0xbd9d('0x2d')]);_0x4afd79[_0xbd9d('0x2f')]=_['intersection'](_0x4afd79[_0xbd9d('0x2c')],_0x4afd79['query']);_0x5a1556[_0xbd9d('0x32')]=_['intersection'](_0x4afd79[_0xbd9d('0x2c')],qs[_0xbd9d('0x31')](_0x140683[_0xbd9d('0x2d')][_0xbd9d('0x31')]));_0x5a1556[_0xbd9d('0x32')]=_0x5a1556['attributes']['length']?_0x5a1556[_0xbd9d('0x32')]:_0x4afd79[_0xbd9d('0x2c')];if(_0x140683[_0xbd9d('0x2d')][_0xbd9d('0x3f')]){_0x5a1556[_0xbd9d('0x40')]=[{'all':!![]}];}_0x5a1556=_[_0xbd9d('0x39')]({},_0x5a1556,_0x140683['options']);return db['SugarcrmAccount'][_0xbd9d('0x41')](_0x5a1556)['then'](handleEntityNotFound(_0x3193a7,null))[_0xbd9d('0x23')](respondWithResult(_0x3193a7,null))[_0xbd9d('0x42')](handleError(_0x3193a7,null));};exports[_0xbd9d('0x43')]=function(_0x48f760,_0x1ba7ec){return db[_0xbd9d('0x3c')][_0xbd9d('0x43')](_0x48f760[_0xbd9d('0x44')],{})[_0xbd9d('0x23')](respondWithResult(_0x1ba7ec,0xc9))[_0xbd9d('0x42')](handleError(_0x1ba7ec,null));};exports[_0xbd9d('0x22')]=function(_0x8bd8f5,_0x341b7d){if(_0x8bd8f5['body']['id']){delete _0x8bd8f5['body']['id'];}return db[_0xbd9d('0x3c')][_0xbd9d('0x41')]({'where':{'id':_0x8bd8f5['params']['id']}})[_0xbd9d('0x23')](handleEntityNotFound(_0x341b7d,null))['then'](saveUpdates(_0x8bd8f5['body'],null))[_0xbd9d('0x23')](respondWithResult(_0x341b7d,null))[_0xbd9d('0x42')](handleError(_0x341b7d,null));};exports[_0xbd9d('0x24')]=function(_0x4d8234,_0x2d44f4){return db['SugarcrmAccount'][_0xbd9d('0x41')]({'where':{'id':_0x4d8234['params']['id']}})[_0xbd9d('0x23')](handleEntityNotFound(_0x2d44f4,null))[_0xbd9d('0x23')](removeEntity(_0x2d44f4,null))['catch'](handleError(_0x2d44f4,null));};exports[_0xbd9d('0x45')]=function(_0x2c11c5,_0x3e6d7a,_0x2f2a60){var _0x28a390={};var _0x12bff2={};var _0x5cd149;var _0x88a88e;return db['SugarcrmAccount'][_0xbd9d('0x46')]({'where':{'id':_0x2c11c5[_0xbd9d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3e6d7a,null))[_0xbd9d('0x23')](function(_0x906dc0){if(_0x906dc0){_0x5cd149=_0x906dc0;_0x12bff2[_0xbd9d('0x2c')]=_['keys'](db[_0xbd9d('0x47')]['rawAttributes']);_0x12bff2['query']=_[_0xbd9d('0x2e')](_0x2c11c5[_0xbd9d('0x2d')]);_0x12bff2[_0xbd9d('0x2f')]=_['intersection'](_0x12bff2['model'],_0x12bff2['query']);_0x28a390[_0xbd9d('0x32')]=_['intersection'](_0x12bff2['model'],qs['fields'](_0x2c11c5[_0xbd9d('0x2d')][_0xbd9d('0x31')]));_0x28a390[_0xbd9d('0x32')]=_0x28a390['attributes']['length']?_0x28a390['attributes']:_0x12bff2[_0xbd9d('0x2c')];_0x28a390[_0xbd9d('0x35')]=qs[_0xbd9d('0x36')](_0x2c11c5[_0xbd9d('0x2d')][_0xbd9d('0x36')]);_0x28a390[_0xbd9d('0x37')]=qs['filters'](_['pick'](_0x2c11c5[_0xbd9d('0x2d')],_0x12bff2[_0xbd9d('0x2f')]));if(_0x2c11c5[_0xbd9d('0x2d')][_0xbd9d('0x38')]){_0x28a390['where']=_['merge'](_0x28a390[_0xbd9d('0x37')],{'$or':_[_0xbd9d('0x3a')](_0x28a390['attributes'],function(_0x587b83){var _0x1acddb={};_0x1acddb[_0x587b83]={'$like':'%'+_0x2c11c5['query'][_0xbd9d('0x38')]+'%'};return _0x1acddb;})});}_0x28a390=_[_0xbd9d('0x39')]({},_0x28a390,_0x2c11c5[_0xbd9d('0x3b')]);return _0x5cd149[_0xbd9d('0x45')](_0x28a390);}})[_0xbd9d('0x23')](function(_0x390cb4){if(_0x390cb4){_0x88a88e=_0x390cb4[_0xbd9d('0x33')];if(!_0x2c11c5[_0xbd9d('0x2d')][_0xbd9d('0x34')](_0xbd9d('0x48'))){_0x28a390[_0xbd9d('0x1e')]=qs[_0xbd9d('0x1e')](_0x2c11c5[_0xbd9d('0x2d')][_0xbd9d('0x1e')]);_0x28a390[_0xbd9d('0x1b')]=qs['offset'](_0x2c11c5[_0xbd9d('0x2d')]['offset']);}return _0x5cd149[_0xbd9d('0x45')](_0x28a390);}})['then'](function(_0x55a2dd){if(_0x55a2dd){return _0x55a2dd?{'count':_0x88a88e,'rows':_0x55a2dd}:null;}})[_0xbd9d('0x23')](respondWithResult(_0x3e6d7a,null))[_0xbd9d('0x42')](handleError(_0x3e6d7a,null));};exports[_0xbd9d('0x49')]=function(_0x1fe92b,_0x1430d1,_0x1c55e4){if(_0x1fe92b[_0xbd9d('0x44')]['id']){delete _0x1fe92b[_0xbd9d('0x44')]['id'];}return db['SugarcrmAccount']['findOne']({'where':{'id':_0x1fe92b[_0xbd9d('0x3e')]['id']}})[_0xbd9d('0x23')](handleEntityNotFound(_0x1430d1,null))[_0xbd9d('0x23')](function(_0x5ce72){if(_0x5ce72){_0x1fe92b[_0xbd9d('0x44')][_0xbd9d('0x4a')]=_0x5ce72['id'];_0x1fe92b[_0xbd9d('0x44')]['Subjects']=integrations['getSubjects'](_0x1fe92b[_0xbd9d('0x44')][_0xbd9d('0x4b')],_0x1fe92b[_0xbd9d('0x44')]['type']);_0x1fe92b[_0xbd9d('0x44')][_0xbd9d('0x4c')]=integrations[_0xbd9d('0x4d')](_0x1fe92b['body']['channel'],_0x1fe92b[_0xbd9d('0x44')]['type']);return db[_0xbd9d('0x47')][_0xbd9d('0x43')](_0x1fe92b[_0xbd9d('0x44')],{'include':[{'model':db[_0xbd9d('0x4e')],'as':_0xbd9d('0x4f')},{'model':db[_0xbd9d('0x4e')],'as':_0xbd9d('0x4c')}]});}return null;})['then'](respondWithResult(_0x1430d1,null))[_0xbd9d('0x42')](handleError(_0x1430d1,null));};exports['getFields']=function(_0x21cbd2,_0x333d1b,_0x33e18c){var _0x4ea4c6='';var _0x50128a=['id',_0xbd9d('0x26'),_0xbd9d('0x50'),_0xbd9d('0x51'),_0xbd9d('0x52'),_0xbd9d('0x53'),_0xbd9d('0x54'),_0xbd9d('0x55'),_0xbd9d('0x56'),'parent_type',_0xbd9d('0x57'),'direction'];return db[_0xbd9d('0x3c')][_0xbd9d('0x46')]({'where':{'id':_0x21cbd2[_0xbd9d('0x3e')]['id']},'attributes':['id',_0xbd9d('0x58'),_0xbd9d('0x59'),_0xbd9d('0x5a')]})['then'](handleEntityNotFound(_0x333d1b,null))[_0xbd9d('0x23')](function(_0x2ccb99){if(_0x2ccb99){_0x4ea4c6=_0x2ccb99['remoteUri'];var _0xe57a91=_0x4ea4c6[_0xbd9d('0x5b')](-0x1);if(_0xe57a91==='/'){_0x4ea4c6=_0x4ea4c6['substring'](0x0,_0x4ea4c6[_0xbd9d('0x5c')](_0xe57a91));}return rp({'method':_0xbd9d('0x5d'),'uri':util['format'](_0xbd9d('0x5e'),_0x4ea4c6,_0xbd9d('0x5f')),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0xbd9d('0x60'),'rest_data':JSON[_0xbd9d('0x61')]({'user_auth':{'user_name':_0x2ccb99['username'],'password':_0x2ccb99['password'],'encryption':_0xbd9d('0x62')},'application':_0xbd9d('0x63')})}});}})['then'](function(_0x9bf1b){if(_0x9bf1b&&_0x9bf1b['name']!=='Invalid\x20Login'&&_0x9bf1b[_0xbd9d('0x26')]!==_0xbd9d('0x64')){return rp({'method':'POST','uri':util[_0xbd9d('0x65')](_0xbd9d('0x5e'),_0x4ea4c6,_0xbd9d('0x5f')),'json':!![],'form':{'method':_0xbd9d('0x66'),'input_type':_0xbd9d('0x60'),'response_type':_0xbd9d('0x60'),'rest_data':JSON[_0xbd9d('0x61')]({'session':_0x9bf1b['id'],'module_name':_0xbd9d('0x67')})}})[_0xbd9d('0x23')](function(_0x319ac5){if(_0x319ac5){var _0x56058f=_[_0xbd9d('0x68')](_0x319ac5[_0xbd9d('0x69')]);_[_0xbd9d('0x6a')](_0x56058f,function(_0x20e449){return _0x50128a[_0xbd9d('0x6b')](_0x20e449[_0xbd9d('0x26')]);});return{'count':_0x56058f[_0xbd9d('0x33')],'rows':_['map'](_0x56058f,function(_0x55219e){return{'id':_0x55219e[_0xbd9d('0x26')],'name':_0x55219e['label'],'custom':_[_0xbd9d('0x6c')](_0x55219e[_0xbd9d('0x26')],'_c')?!![]:![],'options':_0x55219e[_0xbd9d('0x3b')]?_['map'](_[_0xbd9d('0x68')](_0x55219e[_0xbd9d('0x3b')]),function(_0x3827fc){return{'name':_0x3827fc[_0xbd9d('0x6d')],'value':_0x3827fc[_0xbd9d('0x26')]};}):[]};})};}})[_0xbd9d('0x23')](respondWithResult(_0x333d1b,null))[_0xbd9d('0x42')](function(_0x320bee){var _0x38dce5=_0x21cbd2[_0xbd9d('0x2d')][_0xbd9d('0x6e')]?0x1f4:_0x320bee[_0xbd9d('0x6f')]||0x1f4;logger[_0xbd9d('0x70')](_0xbd9d('0x71'),_0xbd9d('0x72'),_0x38dce5,JSON['stringify'](_0x320bee));delete _0x320bee[_0xbd9d('0x26')];if(_0x38dce5===0x191){_0x38dce5=0x190;}_0x333d1b[_0xbd9d('0x18')](_0x38dce5)['send'](_0x21cbd2['query'][_0xbd9d('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0x320bee['statusCode']}:_0x320bee);});}else{var _0x5436dc=0x1f4;_0x333d1b[_0xbd9d('0x18')](_0x5436dc)[_0xbd9d('0x27')]({'message':_0xbd9d('0x73'),'statusCode':0x190});}});};