ebefbb3f696db6f9a728d617c466e504ed8304af
[motion2.git] / server / api / intZohoAccount / intZohoAccount.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 _0xc1aa=['ZohoConfiguration','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','access_token','getFields','host','serverUrl','slice','refreshToken','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','error','response','message','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Type','remove','api_name','system_mandatory','push','display_label','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','then','sendStatus','stack','name','send','index','map','ZohoAccount','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','create','body','update','find','params','destroy','getConfigurations','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xc1aa,0xa9));var _0xac1a=function(_0xa84b89,_0x2561bc){_0xa84b89=_0xa84b89-0x0;var _0x286636=_0xc1aa[_0xa84b89];return _0x286636;};'use strict';var emlformat=require(_0xac1a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xac1a('0x1'));var jsonpatch=require(_0xac1a('0x2'));var rp=require(_0xac1a('0x3'));var moment=require('moment');var BPromise=require(_0xac1a('0x4'));var Mustache=require(_0xac1a('0x5'));var util=require('util');var path=require(_0xac1a('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xac1a('0x7'));var _=require(_0xac1a('0x8'));var squel=require(_0xac1a('0x9'));var crypto=require(_0xac1a('0xa'));var jsforce=require(_0xac1a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xac1a('0xc'));var Papa=require('papaparse');var Redis=require(_0xac1a('0xd'));var authService=require(_0xac1a('0xe'));var qs=require(_0xac1a('0xf'));var as=require(_0xac1a('0x10'));var hardwareService=require(_0xac1a('0x11'));var logger=require(_0xac1a('0x12'))('api');var utils=require(_0xac1a('0x13'));var config=require(_0xac1a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xac1a('0x15'))['db'];var integrations=require(_0xac1a('0x16'));function respondWithStatusCode(_0x36b324,_0x5cfba5){_0x5cfba5=_0x5cfba5||0xcc;return function(_0x1f38b0){if(_0x1f38b0){return _0x36b324['sendStatus'](_0x5cfba5);}return _0x36b324[_0xac1a('0x17')](_0x5cfba5)[_0xac1a('0x18')]();};}function respondWithResult(_0xad7289,_0x1a9207){_0x1a9207=_0x1a9207||0xc8;return function(_0x3d38fc){if(_0x3d38fc){return _0xad7289[_0xac1a('0x17')](_0x1a9207)['json'](_0x3d38fc);}};}function respondWithFilteredResult(_0x45d49e,_0xd3f8ba){return function(_0x58f380){if(_0x58f380){var _0x128fff=typeof _0xd3f8ba['offset']===_0xac1a('0x19')&&typeof _0xd3f8ba[_0xac1a('0x1a')]==='undefined';var _0x570ce0=_0x58f380['count'];var _0x53c1c4=_0x128fff?0x0:_0xd3f8ba[_0xac1a('0x1b')];var _0x96e67=_0x128fff?_0x58f380[_0xac1a('0x1c')]:_0xd3f8ba[_0xac1a('0x1b')]+_0xd3f8ba['limit'];var _0x3347c9;if(_0x96e67>=_0x570ce0){_0x96e67=_0x570ce0;_0x3347c9=0xc8;}else{_0x3347c9=0xce;}_0x45d49e['status'](_0x3347c9);return _0x45d49e['set'](_0xac1a('0x1d'),_0x53c1c4+'-'+_0x96e67+'/'+_0x570ce0)[_0xac1a('0x1e')](_0x58f380);}return null;};}function patchUpdates(_0x201bfa){return function(_0x1333d0){try{jsonpatch[_0xac1a('0x1f')](_0x1333d0,_0x201bfa,!![]);}catch(_0x3749b3){return BPromise[_0xac1a('0x20')](_0x3749b3);}return _0x1333d0[_0xac1a('0x21')]();};}function saveUpdates(_0x5e4989,_0x4a6d63){return function(_0xbd3303){if(_0xbd3303){return _0xbd3303['update'](_0x5e4989)[_0xac1a('0x22')](function(_0x5c64f5){return _0x5c64f5;});}return null;};}function removeEntity(_0x366937,_0x31a5ff){return function(_0x4c4601){if(_0x4c4601){return _0x4c4601['destroy']()[_0xac1a('0x22')](function(){_0x366937[_0xac1a('0x17')](0xcc)[_0xac1a('0x18')]();});}};}function handleEntityNotFound(_0xb7e41b,_0x101f24){return function(_0x2dcc6b){if(!_0x2dcc6b){_0xb7e41b[_0xac1a('0x23')](0x194);}return _0x2dcc6b;};}function handleError(_0x440efc,_0x5bfdd7){_0x5bfdd7=_0x5bfdd7||0x1f4;return function(_0x428519){logger['error'](_0x428519[_0xac1a('0x24')]);if(_0x428519[_0xac1a('0x25')]){delete _0x428519[_0xac1a('0x25')];}_0x440efc['status'](_0x5bfdd7)[_0xac1a('0x26')](_0x428519);};}exports[_0xac1a('0x27')]=function(_0x24a2ae,_0x238457){var _0x2ede5e={},_0x1a9129={},_0x989acc={'count':0x0,'rows':[]};var _0x12ab10=_[_0xac1a('0x28')](db[_0xac1a('0x29')][_0xac1a('0x2a')],function(_0x38d297){return{'name':_0x38d297['fieldName'],'type':_0x38d297[_0xac1a('0x2b')][_0xac1a('0x2c')]};});_0x1a9129[_0xac1a('0x2d')]=_[_0xac1a('0x28')](_0x12ab10,_0xac1a('0x25'));_0x1a9129[_0xac1a('0x2e')]=_[_0xac1a('0x2f')](_0x24a2ae[_0xac1a('0x2e')]);_0x1a9129[_0xac1a('0x30')]=_['intersection'](_0x1a9129[_0xac1a('0x2d')],_0x1a9129[_0xac1a('0x2e')]);_0x2ede5e[_0xac1a('0x31')]=_[_0xac1a('0x32')](_0x1a9129[_0xac1a('0x2d')],qs[_0xac1a('0x33')](_0x24a2ae['query']['fields']));_0x2ede5e[_0xac1a('0x31')]=_0x2ede5e[_0xac1a('0x31')][_0xac1a('0x34')]?_0x2ede5e[_0xac1a('0x31')]:_0x1a9129[_0xac1a('0x2d')];if(!_0x24a2ae[_0xac1a('0x2e')][_0xac1a('0x35')](_0xac1a('0x36'))){_0x2ede5e[_0xac1a('0x1a')]=qs[_0xac1a('0x1a')](_0x24a2ae[_0xac1a('0x2e')][_0xac1a('0x1a')]);_0x2ede5e[_0xac1a('0x1b')]=qs[_0xac1a('0x1b')](_0x24a2ae[_0xac1a('0x2e')]['offset']);}_0x2ede5e[_0xac1a('0x37')]=qs[_0xac1a('0x38')](_0x24a2ae[_0xac1a('0x2e')][_0xac1a('0x38')]);_0x2ede5e['where']=qs['filters'](_[_0xac1a('0x39')](_0x24a2ae[_0xac1a('0x2e')],_0x1a9129[_0xac1a('0x30')]),_0x12ab10);if(_0x24a2ae[_0xac1a('0x2e')][_0xac1a('0x3a')]){_0x2ede5e[_0xac1a('0x3b')]=_[_0xac1a('0x3c')](_0x2ede5e[_0xac1a('0x3b')],{'$or':_[_0xac1a('0x28')](_0x12ab10,function(_0x212c92){if(_0x212c92[_0xac1a('0x2b')]!==_0xac1a('0x3d')){var _0x563a3e={};_0x563a3e[_0x212c92['name']]={'$like':'%'+_0x24a2ae['query']['filter']+'%'};return _0x563a3e;}})});}_0x2ede5e=_[_0xac1a('0x3c')]({},_0x2ede5e,_0x24a2ae[_0xac1a('0x3e')]);var _0x437a3e={'where':_0x2ede5e[_0xac1a('0x3b')]};return db['ZohoAccount'][_0xac1a('0x1c')](_0x437a3e)[_0xac1a('0x22')](function(_0x4c9cf0){_0x989acc['count']=_0x4c9cf0;if(_0x24a2ae[_0xac1a('0x2e')][_0xac1a('0x3f')]){_0x2ede5e[_0xac1a('0x40')]=[{'all':!![]}];}return db[_0xac1a('0x29')][_0xac1a('0x41')](_0x2ede5e);})['then'](function(_0x35c261){_0x989acc['rows']=_0x35c261;return _0x989acc;})['then'](respondWithFilteredResult(_0x238457,_0x2ede5e))[_0xac1a('0x42')](handleError(_0x238457,null));};exports[_0xac1a('0x43')]=function(_0x93e856,_0x50005f){var _0x32ab59={'raw':![],'where':{'id':_0x93e856['params']['id']}},_0x5cd095={};_0x5cd095['model']=_['keys'](db[_0xac1a('0x29')][_0xac1a('0x2a')]);_0x5cd095[_0xac1a('0x2e')]=_[_0xac1a('0x2f')](_0x93e856[_0xac1a('0x2e')]);_0x5cd095['filters']=_['intersection'](_0x5cd095[_0xac1a('0x2d')],_0x5cd095[_0xac1a('0x2e')]);_0x32ab59[_0xac1a('0x31')]=_[_0xac1a('0x32')](_0x5cd095['model'],qs[_0xac1a('0x33')](_0x93e856['query'][_0xac1a('0x33')]));_0x32ab59[_0xac1a('0x31')]=_0x32ab59[_0xac1a('0x31')]['length']?_0x32ab59['attributes']:_0x5cd095['model'];if(_0x93e856[_0xac1a('0x2e')][_0xac1a('0x3f')]){_0x32ab59['include']=[{'all':!![]}];}_0x32ab59=_[_0xac1a('0x3c')]({},_0x32ab59,_0x93e856[_0xac1a('0x3e')]);return db[_0xac1a('0x29')]['find'](_0x32ab59)[_0xac1a('0x22')](handleEntityNotFound(_0x50005f,null))[_0xac1a('0x22')](respondWithResult(_0x50005f,null))[_0xac1a('0x42')](handleError(_0x50005f,null));};exports[_0xac1a('0x44')]=function(_0x342923,_0xba4f31){return db[_0xac1a('0x29')][_0xac1a('0x44')](_0x342923[_0xac1a('0x45')],{})['then'](respondWithResult(_0xba4f31,0xc9))['catch'](handleError(_0xba4f31,null));};exports[_0xac1a('0x46')]=function(_0x541974,_0x447eb2){if(_0x541974[_0xac1a('0x45')]['id']){delete _0x541974[_0xac1a('0x45')]['id'];}return db[_0xac1a('0x29')][_0xac1a('0x47')]({'where':{'id':_0x541974[_0xac1a('0x48')]['id']}})[_0xac1a('0x22')](handleEntityNotFound(_0x447eb2,null))['then'](saveUpdates(_0x541974[_0xac1a('0x45')],null))[_0xac1a('0x22')](respondWithResult(_0x447eb2,null))[_0xac1a('0x42')](handleError(_0x447eb2,null));};exports[_0xac1a('0x49')]=function(_0x15efc3,_0x54458b){return db[_0xac1a('0x29')][_0xac1a('0x47')]({'where':{'id':_0x15efc3[_0xac1a('0x48')]['id']}})[_0xac1a('0x22')](handleEntityNotFound(_0x54458b,null))[_0xac1a('0x22')](removeEntity(_0x54458b,null))[_0xac1a('0x42')](handleError(_0x54458b,null));};exports[_0xac1a('0x4a')]=function(_0x3238ce,_0x546b30,_0x370173){var _0x1c4b25={};var _0x3fcee2={};var _0x5f1934;var _0x373162;return db[_0xac1a('0x29')][_0xac1a('0x4b')]({'where':{'id':_0x3238ce['params']['id']}})['then'](handleEntityNotFound(_0x546b30,null))[_0xac1a('0x22')](function(_0x6273c3){if(_0x6273c3){_0x5f1934=_0x6273c3;_0x3fcee2[_0xac1a('0x2d')]=_['keys'](db['ZohoConfiguration'][_0xac1a('0x2a')]);_0x3fcee2[_0xac1a('0x2e')]=_[_0xac1a('0x2f')](_0x3238ce[_0xac1a('0x2e')]);_0x3fcee2[_0xac1a('0x30')]=_['intersection'](_0x3fcee2[_0xac1a('0x2d')],_0x3fcee2['query']);_0x1c4b25[_0xac1a('0x31')]=_[_0xac1a('0x32')](_0x3fcee2[_0xac1a('0x2d')],qs[_0xac1a('0x33')](_0x3238ce[_0xac1a('0x2e')]['fields']));_0x1c4b25[_0xac1a('0x31')]=_0x1c4b25[_0xac1a('0x31')][_0xac1a('0x34')]?_0x1c4b25[_0xac1a('0x31')]:_0x3fcee2[_0xac1a('0x2d')];_0x1c4b25['order']=qs['sort'](_0x3238ce[_0xac1a('0x2e')][_0xac1a('0x38')]);_0x1c4b25[_0xac1a('0x3b')]=qs[_0xac1a('0x30')](_[_0xac1a('0x39')](_0x3238ce[_0xac1a('0x2e')],_0x3fcee2[_0xac1a('0x30')]));if(_0x3238ce[_0xac1a('0x2e')]['filter']){_0x1c4b25[_0xac1a('0x3b')]=_['merge'](_0x1c4b25[_0xac1a('0x3b')],{'$or':_[_0xac1a('0x28')](_0x1c4b25[_0xac1a('0x31')],function(_0x1aea50){var _0x1541a8={};_0x1541a8[_0x1aea50]={'$like':'%'+_0x3238ce[_0xac1a('0x2e')][_0xac1a('0x3a')]+'%'};return _0x1541a8;})});}_0x1c4b25=_[_0xac1a('0x3c')]({},_0x1c4b25,_0x3238ce['options']);return _0x5f1934[_0xac1a('0x4a')](_0x1c4b25);}})[_0xac1a('0x22')](function(_0xfc6d8d){if(_0xfc6d8d){_0x373162=_0xfc6d8d[_0xac1a('0x34')];if(!_0x3238ce[_0xac1a('0x2e')][_0xac1a('0x35')](_0xac1a('0x36'))){_0x1c4b25[_0xac1a('0x1a')]=qs[_0xac1a('0x1a')](_0x3238ce[_0xac1a('0x2e')][_0xac1a('0x1a')]);_0x1c4b25[_0xac1a('0x1b')]=qs[_0xac1a('0x1b')](_0x3238ce[_0xac1a('0x2e')][_0xac1a('0x1b')]);}return _0x5f1934[_0xac1a('0x4a')](_0x1c4b25);}})[_0xac1a('0x22')](function(_0x2db3da){if(_0x2db3da){return _0x2db3da?{'count':_0x373162,'rows':_0x2db3da}:null;}})['then'](respondWithResult(_0x546b30,null))[_0xac1a('0x42')](handleError(_0x546b30,null));};exports['addConfiguration']=function(_0x58f669,_0xd04e87,_0x4ec8ac){if(_0x58f669[_0xac1a('0x45')]['id']){delete _0x58f669[_0xac1a('0x45')]['id'];}return db[_0xac1a('0x29')][_0xac1a('0x4b')]({'where':{'id':_0x58f669[_0xac1a('0x48')]['id']}})[_0xac1a('0x22')](handleEntityNotFound(_0xd04e87,null))[_0xac1a('0x22')](function(_0x1790a0){if(_0x1790a0){_0x58f669[_0xac1a('0x45')]['AccountId']=_0x1790a0['id'];_0x58f669['body'][_0xac1a('0x4c')]=integrations[_0xac1a('0x4d')](_0x58f669[_0xac1a('0x45')][_0xac1a('0x4e')],_0x58f669[_0xac1a('0x45')][_0xac1a('0x2b')]);_0x58f669[_0xac1a('0x45')][_0xac1a('0x4f')]=integrations[_0xac1a('0x50')](_0x58f669[_0xac1a('0x45')][_0xac1a('0x4e')],_0x58f669['body'][_0xac1a('0x2b')]);return db[_0xac1a('0x51')][_0xac1a('0x44')](_0x58f669['body'],{'include':[{'model':db['ZohoField'],'as':'Subjects'},{'model':db['ZohoField'],'as':_0xac1a('0x4f')}]});}return null;})[_0xac1a('0x22')](respondWithResult(_0xd04e87,null))[_0xac1a('0x42')](handleError(_0xd04e87,null));};function getAccessToken(_0x3b3a63){return new Promise(function(_0x33f751,_0x3dd42e){var _0xd3c4bc;switch(_0x3b3a63[_0xac1a('0x52')]){case'US':_0xd3c4bc=_0xac1a('0x53');break;case'AU':_0xd3c4bc=_0xac1a('0x54');break;case'EU':_0xd3c4bc='https://accounts.zoho.eu';break;case'IN':_0xd3c4bc=_0xac1a('0x55');break;case'CN':_0xd3c4bc=_0xac1a('0x56');break;default:_0xd3c4bc='https://accounts.zoho.eu';break;}var _0x249a2f={'method':_0xac1a('0x57'),'uri':_0xd3c4bc+_0xac1a('0x58'),'qs':{'refresh_token':_0x3b3a63['refreshToken'],'client_id':_0x3b3a63[_0xac1a('0x59')],'client_secret':_0x3b3a63[_0xac1a('0x5a')],'grant_type':_0xac1a('0x5b')},'json':!![]};return rp(_0x249a2f)[_0xac1a('0x22')](function(_0x16ab30){if(_0x16ab30[_0xac1a('0x5c')]){_0x33f751(_0x16ab30[_0xac1a('0x5c')]);}else{_0x3dd42e('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xac1a('0x42')](function(_0x119a1a){_0x3dd42e(_0x119a1a);});});}exports[_0xac1a('0x5d')]=function(_0x3d85bd,_0x4098e6,_0x11d88d){var _0x184596,_0x388d24,_0x5712e6,_0x55c8dc,_0x18fb64;return db['ZohoAccount'][_0xac1a('0x4b')]({'where':{'id':_0x3d85bd['params']['id']},'attributes':['id',_0xac1a('0x5e'),_0xac1a('0x52'),_0xac1a('0x59'),_0xac1a('0x5a'),_0xac1a('0x5f'),'code','refreshToken']})['then'](handleEntityNotFound(_0x4098e6,null))[_0xac1a('0x22')](function(_0x314a39){_0x18fb64=_0x314a39;_0x184596=_0x18fb64[_0xac1a('0x5e')];_0x388d24=_0x184596==='zoho.eu'?'eu':'com';_0x5712e6=_0x18fb64[_0xac1a('0x5f')];var _0xa60537=_0x5712e6[_0xac1a('0x60')](-0x1);if(_0xa60537==='/'||_0xa60537==='\x5c'||_0xa60537===':'){_0x5712e6=_0x5712e6['substring'](0x0,_0x5712e6['lastIndexOf'](_0xa60537));}if(!_0x18fb64[_0xac1a('0x61')]){throw new Error(_0xac1a('0x62'));}return getAccessToken(_0x18fb64);})[_0xac1a('0x22')](function(_0x346358){if(_0x346358){return rp({'method':_0xac1a('0x63'),'uri':util['format'](_0xac1a('0x64'),_0x388d24),'qs':{'module':_0xac1a('0x65')},'headers':{'Authorization':_0xac1a('0x66')+_0x346358},'json':!![]});}})[_0xac1a('0x22')](function(_0x5bf1ee){if(_0x5bf1ee){if(_0x5bf1ee['response']&&_0x5bf1ee['response'][_0xac1a('0x67')]){throw new Error(_0x5bf1ee[_0xac1a('0x68')][_0xac1a('0x67')][_0xac1a('0x69')]);}var _0x5aa0ce=[];var _0x2b496e=[];var _0x22e8db=['Owner',_0xac1a('0x6a'),_0xac1a('0x6b'),_0xac1a('0x6c'),_0xac1a('0x6d'),_0xac1a('0x6e'),'Call_Start_Time',_0xac1a('0x6f')];_0x2b496e=_[_0xac1a('0x70')](_0x5bf1ee['fields'],function(_0x15a7a5){return _0x22e8db['includes'](_0x15a7a5[_0xac1a('0x71')]);});for(var _0x5e8679=0x0;_0x5e8679<_0x2b496e['length'];_0x5e8679++){if(_0x2b496e[_0x5e8679][_0xac1a('0x72')]===![]){_0x5aa0ce[_0xac1a('0x73')]({'id':_0x2b496e[_0x5e8679]['id'],'name':_0x2b496e[_0x5e8679][_0xac1a('0x74')],'custom':_0x2b496e[_0x5e8679]['custom_field'],'options':_0x2b496e[_0x5e8679][_0xac1a('0x75')]===_0xac1a('0x76')&&_0x2b496e[_0x5e8679]['pick_list_values']['length']>-0x1?_[_0xac1a('0x28')](_0x2b496e[_0x5e8679][_0xac1a('0x77')],function(_0x516673){return{'name':_0x516673,'value':_0x516673};}):[]});}}return{'count':_0x5aa0ce[_0xac1a('0x34')],'rows':_0x5aa0ce};}else{return{'count':0x0,'rows':[]};}})[_0xac1a('0x22')](respondWithResult(_0x4098e6,null))[_0xac1a('0x42')](function(_0x2810e8){var _0x28e2db=_0x3d85bd['query'][_0xac1a('0x78')]?0x1f4:_0x2810e8[_0xac1a('0x79')]||0x1f4;logger[_0xac1a('0x67')](_0xac1a('0x7a'),_0xac1a('0x5d'),_0x28e2db,JSON[_0xac1a('0x7b')](_0x2810e8));delete _0x2810e8[_0xac1a('0x25')];if(_0x28e2db===0x191){_0x28e2db=0x190;}_0x4098e6[_0xac1a('0x17')](_0x28e2db)[_0xac1a('0x26')](_0x3d85bd[_0xac1a('0x2e')][_0xac1a('0x78')]?{'message':_0xac1a('0x7c'),'statusCode':_0x2810e8['statusCode']}:_0x2810e8);});};