77d6b73beb3887676f4afeec7ade43249e4431f2
[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 _0x05dd=['query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','Subjects','getSubjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_name','direction','password','remoteUri','slice','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','values','remove','includes','value','statusCode','error','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','offset','undefined','limit','count','set','json','reject','update','then','destroy','stack','name','send','index','map','SugarcrmAccount','rawAttributes','key'];(function(_0x186d17,_0x9fa8ef){var _0x5d4b89=function(_0x57bd70){while(--_0x57bd70){_0x186d17['push'](_0x186d17['shift']());}};_0x5d4b89(++_0x9fa8ef);}(_0x05dd,0x134));var _0xd05d=function(_0xd80868,_0x3e3f3b){_0xd80868=_0xd80868-0x0;var _0x2aaac0=_0x05dd[_0xd80868];return _0x2aaac0;};'use strict';var emlformat=require(_0xd05d('0x0'));var rimraf=require(_0xd05d('0x1'));var zipdir=require(_0xd05d('0x2'));var jsonpatch=require(_0xd05d('0x3'));var rp=require('request-promise');var moment=require(_0xd05d('0x4'));var BPromise=require(_0xd05d('0x5'));var Mustache=require(_0xd05d('0x6'));var util=require(_0xd05d('0x7'));var path=require(_0xd05d('0x8'));var sox=require(_0xd05d('0x9'));var csv=require(_0xd05d('0xa'));var ejs=require(_0xd05d('0xb'));var fs=require('fs');var fs_extra=require(_0xd05d('0xc'));var _=require(_0xd05d('0xd'));var squel=require(_0xd05d('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd05d('0xf'));var toCsv=require(_0xd05d('0xa'));var querystring=require(_0xd05d('0x10'));var Papa=require('papaparse');var Redis=require(_0xd05d('0x11'));var authService=require(_0xd05d('0x12'));var qs=require(_0xd05d('0x13'));var as=require(_0xd05d('0x14'));var hardwareService=require(_0xd05d('0x15'));var logger=require('../../config/logger')(_0xd05d('0x16'));var utils=require(_0xd05d('0x17'));var config=require(_0xd05d('0x18'));var licenseUtil=require(_0xd05d('0x19'));var db=require(_0xd05d('0x1a'))['db'];var integrations=require(_0xd05d('0x1b'));function respondWithStatusCode(_0x4a9633,_0x2ea58d){_0x2ea58d=_0x2ea58d||0xcc;return function(_0xa5fa7c){if(_0xa5fa7c){return _0x4a9633[_0xd05d('0x1c')](_0x2ea58d);}return _0x4a9633['status'](_0x2ea58d)[_0xd05d('0x1d')]();};}function respondWithResult(_0x11a4b3,_0x114a91){_0x114a91=_0x114a91||0xc8;return function(_0x1a19c7){if(_0x1a19c7){return _0x11a4b3[_0xd05d('0x1e')](_0x114a91)['json'](_0x1a19c7);}};}function respondWithFilteredResult(_0x587987,_0x527173){return function(_0x5803e4){if(_0x5803e4){var _0x1f6439=typeof _0x527173[_0xd05d('0x1f')]===_0xd05d('0x20')&&typeof _0x527173[_0xd05d('0x21')]===_0xd05d('0x20');var _0x419213=_0x5803e4[_0xd05d('0x22')];var _0x4e5ca6=_0x1f6439?0x0:_0x527173[_0xd05d('0x1f')];var _0x391601=_0x1f6439?_0x5803e4[_0xd05d('0x22')]:_0x527173[_0xd05d('0x1f')]+_0x527173[_0xd05d('0x21')];var _0x837995;if(_0x391601>=_0x419213){_0x391601=_0x419213;_0x837995=0xc8;}else{_0x837995=0xce;}_0x587987[_0xd05d('0x1e')](_0x837995);return _0x587987[_0xd05d('0x23')]('Content-Range',_0x4e5ca6+'-'+_0x391601+'/'+_0x419213)[_0xd05d('0x24')](_0x5803e4);}return null;};}function patchUpdates(_0x24ae07){return function(_0x20dffb){try{jsonpatch['apply'](_0x20dffb,_0x24ae07,!![]);}catch(_0x29aaf7){return BPromise[_0xd05d('0x25')](_0x29aaf7);}return _0x20dffb['save']();};}function saveUpdates(_0x4ecf14,_0x5abde8){return function(_0x180c92){if(_0x180c92){return _0x180c92[_0xd05d('0x26')](_0x4ecf14)[_0xd05d('0x27')](function(_0x116e5e){return _0x116e5e;});}return null;};}function removeEntity(_0x31a125,_0x1eb0bb){return function(_0x3e0c7b){if(_0x3e0c7b){return _0x3e0c7b[_0xd05d('0x28')]()['then'](function(){_0x31a125['status'](0xcc)[_0xd05d('0x1d')]();});}};}function handleEntityNotFound(_0x206a59,_0x49bec0){return function(_0x20ccbc){if(!_0x20ccbc){_0x206a59[_0xd05d('0x1c')](0x194);}return _0x20ccbc;};}function handleError(_0x3d9f41,_0x2a37e0){_0x2a37e0=_0x2a37e0||0x1f4;return function(_0x52eff8){logger['error'](_0x52eff8[_0xd05d('0x29')]);if(_0x52eff8[_0xd05d('0x2a')]){delete _0x52eff8['name'];}_0x3d9f41[_0xd05d('0x1e')](_0x2a37e0)[_0xd05d('0x2b')](_0x52eff8);};}exports[_0xd05d('0x2c')]=function(_0x19e175,_0x458250){var _0x52ba6f={},_0x24736d={},_0x48c790={'count':0x0,'rows':[]};var _0x3e3a04=_[_0xd05d('0x2d')](db[_0xd05d('0x2e')][_0xd05d('0x2f')],function(_0x2c6c5e){return{'name':_0x2c6c5e['fieldName'],'type':_0x2c6c5e['type'][_0xd05d('0x30')]};});_0x24736d['model']=_[_0xd05d('0x2d')](_0x3e3a04,_0xd05d('0x2a'));_0x24736d[_0xd05d('0x31')]=_[_0xd05d('0x32')](_0x19e175[_0xd05d('0x31')]);_0x24736d[_0xd05d('0x33')]=_[_0xd05d('0x34')](_0x24736d[_0xd05d('0x35')],_0x24736d[_0xd05d('0x31')]);_0x52ba6f['attributes']=_[_0xd05d('0x34')](_0x24736d['model'],qs['fields'](_0x19e175['query']['fields']));_0x52ba6f[_0xd05d('0x36')]=_0x52ba6f[_0xd05d('0x36')][_0xd05d('0x37')]?_0x52ba6f[_0xd05d('0x36')]:_0x24736d['model'];if(!_0x19e175[_0xd05d('0x31')][_0xd05d('0x38')](_0xd05d('0x39'))){_0x52ba6f[_0xd05d('0x21')]=qs[_0xd05d('0x21')](_0x19e175['query'][_0xd05d('0x21')]);_0x52ba6f['offset']=qs[_0xd05d('0x1f')](_0x19e175[_0xd05d('0x31')][_0xd05d('0x1f')]);}_0x52ba6f[_0xd05d('0x3a')]=qs[_0xd05d('0x3b')](_0x19e175['query']['sort']);_0x52ba6f[_0xd05d('0x3c')]=qs[_0xd05d('0x33')](_[_0xd05d('0x3d')](_0x19e175['query'],_0x24736d[_0xd05d('0x33')]),_0x3e3a04);if(_0x19e175[_0xd05d('0x31')][_0xd05d('0x3e')]){_0x52ba6f['where']=_[_0xd05d('0x3f')](_0x52ba6f[_0xd05d('0x3c')],{'$or':_['map'](_0x3e3a04,function(_0x3af516){if(_0x3af516[_0xd05d('0x40')]!==_0xd05d('0x41')){var _0x48aab5={};_0x48aab5[_0x3af516[_0xd05d('0x2a')]]={'$like':'%'+_0x19e175[_0xd05d('0x31')][_0xd05d('0x3e')]+'%'};return _0x48aab5;}})});}_0x52ba6f=_['merge']({},_0x52ba6f,_0x19e175[_0xd05d('0x42')]);var _0x3bf396={'where':_0x52ba6f[_0xd05d('0x3c')]};return db[_0xd05d('0x2e')][_0xd05d('0x22')](_0x3bf396)[_0xd05d('0x27')](function(_0x52dcd5){_0x48c790[_0xd05d('0x22')]=_0x52dcd5;if(_0x19e175[_0xd05d('0x31')][_0xd05d('0x43')]){_0x52ba6f['include']=[{'all':!![]}];}return db[_0xd05d('0x2e')][_0xd05d('0x44')](_0x52ba6f);})['then'](function(_0x2d5682){_0x48c790[_0xd05d('0x45')]=_0x2d5682;return _0x48c790;})[_0xd05d('0x27')](respondWithFilteredResult(_0x458250,_0x52ba6f))[_0xd05d('0x46')](handleError(_0x458250,null));};exports[_0xd05d('0x47')]=function(_0x234e2f,_0x2d18d6){var _0x1663af={'raw':![],'where':{'id':_0x234e2f[_0xd05d('0x48')]['id']}},_0x3df6a6={};_0x3df6a6[_0xd05d('0x35')]=_[_0xd05d('0x32')](db[_0xd05d('0x2e')][_0xd05d('0x2f')]);_0x3df6a6[_0xd05d('0x31')]=_[_0xd05d('0x32')](_0x234e2f[_0xd05d('0x31')]);_0x3df6a6['filters']=_['intersection'](_0x3df6a6['model'],_0x3df6a6['query']);_0x1663af[_0xd05d('0x36')]=_[_0xd05d('0x34')](_0x3df6a6[_0xd05d('0x35')],qs['fields'](_0x234e2f[_0xd05d('0x31')]['fields']));_0x1663af[_0xd05d('0x36')]=_0x1663af[_0xd05d('0x36')][_0xd05d('0x37')]?_0x1663af[_0xd05d('0x36')]:_0x3df6a6['model'];if(_0x234e2f['query'][_0xd05d('0x43')]){_0x1663af['include']=[{'all':!![]}];}_0x1663af=_[_0xd05d('0x3f')]({},_0x1663af,_0x234e2f[_0xd05d('0x42')]);return db[_0xd05d('0x2e')][_0xd05d('0x49')](_0x1663af)[_0xd05d('0x27')](handleEntityNotFound(_0x2d18d6,null))[_0xd05d('0x27')](respondWithResult(_0x2d18d6,null))['catch'](handleError(_0x2d18d6,null));};exports[_0xd05d('0x4a')]=function(_0x3d7fe6,_0x51f148){return db['SugarcrmAccount'][_0xd05d('0x4a')](_0x3d7fe6[_0xd05d('0x4b')],{})['then'](respondWithResult(_0x51f148,0xc9))['catch'](handleError(_0x51f148,null));};exports['update']=function(_0x215631,_0xe5962d){if(_0x215631[_0xd05d('0x4b')]['id']){delete _0x215631[_0xd05d('0x4b')]['id'];}return db[_0xd05d('0x2e')]['find']({'where':{'id':_0x215631[_0xd05d('0x48')]['id']}})[_0xd05d('0x27')](handleEntityNotFound(_0xe5962d,null))[_0xd05d('0x27')](saveUpdates(_0x215631['body'],null))['then'](respondWithResult(_0xe5962d,null))[_0xd05d('0x46')](handleError(_0xe5962d,null));};exports[_0xd05d('0x28')]=function(_0x41e4e6,_0x7d5d91){return db['SugarcrmAccount'][_0xd05d('0x49')]({'where':{'id':_0x41e4e6['params']['id']}})['then'](handleEntityNotFound(_0x7d5d91,null))[_0xd05d('0x27')](removeEntity(_0x7d5d91,null))[_0xd05d('0x46')](handleError(_0x7d5d91,null));};exports[_0xd05d('0x4c')]=function(_0x1998ae,_0x2e695e,_0x443369){var _0x250052={};var _0x58cd1e={};var _0x1b4064;var _0x3b3e91;return db['SugarcrmAccount'][_0xd05d('0x4d')]({'where':{'id':_0x1998ae['params']['id']}})[_0xd05d('0x27')](handleEntityNotFound(_0x2e695e,null))[_0xd05d('0x27')](function(_0x44cb7d){if(_0x44cb7d){_0x1b4064=_0x44cb7d;_0x58cd1e[_0xd05d('0x35')]=_[_0xd05d('0x32')](db[_0xd05d('0x4e')][_0xd05d('0x2f')]);_0x58cd1e[_0xd05d('0x31')]=_['keys'](_0x1998ae['query']);_0x58cd1e[_0xd05d('0x33')]=_['intersection'](_0x58cd1e[_0xd05d('0x35')],_0x58cd1e[_0xd05d('0x31')]);_0x250052[_0xd05d('0x36')]=_[_0xd05d('0x34')](_0x58cd1e[_0xd05d('0x35')],qs['fields'](_0x1998ae['query']['fields']));_0x250052[_0xd05d('0x36')]=_0x250052['attributes'][_0xd05d('0x37')]?_0x250052[_0xd05d('0x36')]:_0x58cd1e[_0xd05d('0x35')];_0x250052[_0xd05d('0x3a')]=qs[_0xd05d('0x3b')](_0x1998ae[_0xd05d('0x31')][_0xd05d('0x3b')]);_0x250052[_0xd05d('0x3c')]=qs['filters'](_['pick'](_0x1998ae[_0xd05d('0x31')],_0x58cd1e[_0xd05d('0x33')]));if(_0x1998ae[_0xd05d('0x31')][_0xd05d('0x3e')]){_0x250052[_0xd05d('0x3c')]=_[_0xd05d('0x3f')](_0x250052[_0xd05d('0x3c')],{'$or':_[_0xd05d('0x2d')](_0x250052[_0xd05d('0x36')],function(_0x4a80fd){var _0x5dcde6={};_0x5dcde6[_0x4a80fd]={'$like':'%'+_0x1998ae[_0xd05d('0x31')][_0xd05d('0x3e')]+'%'};return _0x5dcde6;})});}_0x250052=_['merge']({},_0x250052,_0x1998ae[_0xd05d('0x42')]);return _0x1b4064[_0xd05d('0x4c')](_0x250052);}})[_0xd05d('0x27')](function(_0x17940e){if(_0x17940e){_0x3b3e91=_0x17940e[_0xd05d('0x37')];if(!_0x1998ae[_0xd05d('0x31')][_0xd05d('0x38')](_0xd05d('0x39'))){_0x250052['limit']=qs[_0xd05d('0x21')](_0x1998ae[_0xd05d('0x31')][_0xd05d('0x21')]);_0x250052[_0xd05d('0x1f')]=qs[_0xd05d('0x1f')](_0x1998ae[_0xd05d('0x31')][_0xd05d('0x1f')]);}return _0x1b4064[_0xd05d('0x4c')](_0x250052);}})['then'](function(_0x321679){if(_0x321679){return _0x321679?{'count':_0x3b3e91,'rows':_0x321679}:null;}})[_0xd05d('0x27')](respondWithResult(_0x2e695e,null))[_0xd05d('0x46')](handleError(_0x2e695e,null));};exports[_0xd05d('0x4f')]=function(_0x5eccf7,_0x45c4cb,_0x2ed650){if(_0x5eccf7[_0xd05d('0x4b')]['id']){delete _0x5eccf7[_0xd05d('0x4b')]['id'];}return db[_0xd05d('0x2e')][_0xd05d('0x4d')]({'where':{'id':_0x5eccf7['params']['id']}})[_0xd05d('0x27')](handleEntityNotFound(_0x45c4cb,null))[_0xd05d('0x27')](function(_0x309826){if(_0x309826){_0x5eccf7[_0xd05d('0x4b')]['AccountId']=_0x309826['id'];_0x5eccf7[_0xd05d('0x4b')][_0xd05d('0x50')]=integrations[_0xd05d('0x51')](_0x5eccf7[_0xd05d('0x4b')][_0xd05d('0x52')],_0x5eccf7[_0xd05d('0x4b')]['type']);_0x5eccf7[_0xd05d('0x4b')]['Descriptions']=integrations[_0xd05d('0x53')](_0x5eccf7['body']['channel'],_0x5eccf7['body'][_0xd05d('0x40')]);return db[_0xd05d('0x4e')][_0xd05d('0x4a')](_0x5eccf7[_0xd05d('0x4b')],{'include':[{'model':db[_0xd05d('0x54')],'as':_0xd05d('0x50')},{'model':db['SugarcrmField'],'as':_0xd05d('0x55')}]});}return null;})['then'](respondWithResult(_0x45c4cb,null))[_0xd05d('0x46')](handleError(_0x45c4cb,null));};exports[_0xd05d('0x56')]=function(_0x269c77,_0x2b7bca,_0x30a79b){var _0x538075='';var _0x84fda7=['id',_0xd05d('0x2a'),_0xd05d('0x57'),_0xd05d('0x58'),_0xd05d('0x59'),_0xd05d('0x5a'),_0xd05d('0x5b'),_0xd05d('0x5c'),_0xd05d('0x5d'),'parent_type',_0xd05d('0x5e'),_0xd05d('0x5f')];return db[_0xd05d('0x2e')]['findOne']({'where':{'id':_0x269c77[_0xd05d('0x48')]['id']},'attributes':['id','username',_0xd05d('0x60'),_0xd05d('0x61')]})[_0xd05d('0x27')](handleEntityNotFound(_0x2b7bca,null))[_0xd05d('0x27')](function(_0x1c908d){if(_0x1c908d){_0x538075=_0x1c908d[_0xd05d('0x61')];var _0x982df5=_0x538075[_0xd05d('0x62')](-0x1);if(_0x982df5==='/'){_0x538075=_0x538075['substring'](0x0,_0x538075['lastIndexOf'](_0x982df5));}return rp({'method':_0xd05d('0x63'),'uri':util[_0xd05d('0x64')](_0xd05d('0x65'),_0x538075,_0xd05d('0x66')),'json':!![],'form':{'method':_0xd05d('0x67'),'input_type':_0xd05d('0x68'),'response_type':_0xd05d('0x68'),'rest_data':JSON[_0xd05d('0x69')]({'user_auth':{'user_name':_0x1c908d[_0xd05d('0x6a')],'password':_0x1c908d[_0xd05d('0x60')],'encryption':_0xd05d('0x6b')},'application':_0xd05d('0x6c')})}});}})['then'](function(_0x415882){if(_0x415882&&_0x415882['name']!==_0xd05d('0x6d')&&_0x415882['name']!==_0xd05d('0x6e')){return rp({'method':_0xd05d('0x63'),'uri':util[_0xd05d('0x64')](_0xd05d('0x65'),_0x538075,_0xd05d('0x66')),'json':!![],'form':{'method':_0xd05d('0x6f'),'input_type':_0xd05d('0x68'),'response_type':_0xd05d('0x68'),'rest_data':JSON[_0xd05d('0x69')]({'session':_0x415882['id'],'module_name':'Calls'})}})[_0xd05d('0x27')](function(_0xbdb505){if(_0xbdb505){var _0x12779e=_[_0xd05d('0x70')](_0xbdb505['module_fields']);_[_0xd05d('0x71')](_0x12779e,function(_0x5dd8eb){return _0x84fda7[_0xd05d('0x72')](_0x5dd8eb[_0xd05d('0x2a')]);});return{'count':_0x12779e[_0xd05d('0x37')],'rows':_[_0xd05d('0x2d')](_0x12779e,function(_0x2fdba9){return{'id':_0x2fdba9[_0xd05d('0x2a')],'name':_0x2fdba9['label'],'custom':_['endsWith'](_0x2fdba9[_0xd05d('0x2a')],'_c')?!![]:![],'options':_0x2fdba9['options']?_[_0xd05d('0x2d')](_[_0xd05d('0x70')](_0x2fdba9[_0xd05d('0x42')]),function(_0x156af8){return{'name':_0x156af8[_0xd05d('0x73')],'value':_0x156af8[_0xd05d('0x2a')]};}):[]};})};}})[_0xd05d('0x27')](respondWithResult(_0x2b7bca,null))[_0xd05d('0x46')](function(_0x130537){var _0x4e6110=_0x269c77[_0xd05d('0x31')]['test']?0x1f4:_0x130537[_0xd05d('0x74')]||0x1f4;logger[_0xd05d('0x75')]('getFields,\x20%s,\x20%s,\x20%s',_0xd05d('0x56'),_0x4e6110,JSON[_0xd05d('0x69')](_0x130537));delete _0x130537['name'];if(_0x4e6110===0x191){_0x4e6110=0x190;}_0x2b7bca[_0xd05d('0x1e')](_0x4e6110)[_0xd05d('0x2b')](_0x269c77[_0xd05d('0x31')]['test']?{'message':_0xd05d('0x76'),'statusCode':_0x130537[_0xd05d('0x74')]}:_0x130537);});}else{var _0x126884=0x1f4;_0x2b7bca[_0xd05d('0x1e')](_0x126884)[_0xd05d('0x2b')]({'message':_0xd05d('0x76'),'statusCode':0x190});}});};