eea1ad6f4a4728c42b7b9c2edcc222deadb4df1d
[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 _0x4018=['query','keys','filters','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','includeAll','rows','catch','show','intersection','include','find','create','body','params','findOne','ZohoConfiguration','pick','map','getConfigurations','hasOwnProperty','nolimit','AccountId','Subjects','Descriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','refresh_token','access_token','getFields','host','serverUrl','code','refreshToken','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Type','remove','includes','system_mandatory','display_label','picklist','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','ZohoAccount','rawAttributes','fieldName','type','key','model'];(function(_0x52e68e,_0x309912){var _0x3211a4=function(_0x467c01){while(--_0x467c01){_0x52e68e['push'](_0x52e68e['shift']());}};_0x3211a4(++_0x309912);}(_0x4018,0xca));var _0x8401=function(_0x2e75ee,_0x138680){_0x2e75ee=_0x2e75ee-0x0;var _0x5742b1=_0x4018[_0x2e75ee];return _0x5742b1;};'use strict';var emlformat=require(_0x8401('0x0'));var rimraf=require(_0x8401('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8401('0x2'));var rp=require(_0x8401('0x3'));var moment=require(_0x8401('0x4'));var BPromise=require(_0x8401('0x5'));var Mustache=require(_0x8401('0x6'));var util=require(_0x8401('0x7'));var path=require(_0x8401('0x8'));var sox=require(_0x8401('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8401('0xa'));var _=require(_0x8401('0xb'));var squel=require(_0x8401('0xc'));var crypto=require(_0x8401('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8401('0xe'));var toCsv=require(_0x8401('0xf'));var querystring=require('querystring');var Papa=require(_0x8401('0x10'));var Redis=require(_0x8401('0x11'));var authService=require(_0x8401('0x12'));var qs=require(_0x8401('0x13'));var as=require(_0x8401('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8401('0x15'))(_0x8401('0x16'));var utils=require('../../config/utils');var config=require(_0x8401('0x17'));var licenseUtil=require(_0x8401('0x18'));var db=require(_0x8401('0x19'))['db'];var integrations=require(_0x8401('0x1a'));function respondWithStatusCode(_0x407271,_0x18afd9){_0x18afd9=_0x18afd9||0xcc;return function(_0x7a9faf){if(_0x7a9faf){return _0x407271[_0x8401('0x1b')](_0x18afd9);}return _0x407271[_0x8401('0x1c')](_0x18afd9)[_0x8401('0x1d')]();};}function respondWithResult(_0x5128ab,_0x5a9a72){_0x5a9a72=_0x5a9a72||0xc8;return function(_0x138ba6){if(_0x138ba6){return _0x5128ab[_0x8401('0x1c')](_0x5a9a72)[_0x8401('0x1e')](_0x138ba6);}};}function respondWithFilteredResult(_0xf21b8a,_0x2ba734){return function(_0x582d89){if(_0x582d89){var _0x2f4a43=typeof _0x2ba734[_0x8401('0x1f')]===_0x8401('0x20')&&typeof _0x2ba734[_0x8401('0x21')]==='undefined';var _0x2995f9=_0x582d89[_0x8401('0x22')];var _0x3b8112=_0x2f4a43?0x0:_0x2ba734[_0x8401('0x1f')];var _0x4689dc=_0x2f4a43?_0x582d89[_0x8401('0x22')]:_0x2ba734['offset']+_0x2ba734[_0x8401('0x21')];var _0x148a39;if(_0x4689dc>=_0x2995f9){_0x4689dc=_0x2995f9;_0x148a39=0xc8;}else{_0x148a39=0xce;}_0xf21b8a[_0x8401('0x1c')](_0x148a39);return _0xf21b8a['set'](_0x8401('0x23'),_0x3b8112+'-'+_0x4689dc+'/'+_0x2995f9)[_0x8401('0x1e')](_0x582d89);}return null;};}function patchUpdates(_0xce3538){return function(_0x1deea0){try{jsonpatch[_0x8401('0x24')](_0x1deea0,_0xce3538,!![]);}catch(_0x21d748){return BPromise[_0x8401('0x25')](_0x21d748);}return _0x1deea0[_0x8401('0x26')]();};}function saveUpdates(_0x1c18a5,_0x5929a6){return function(_0x3b7296){if(_0x3b7296){return _0x3b7296[_0x8401('0x27')](_0x1c18a5)['then'](function(_0x3b5f19){return _0x3b5f19;});}return null;};}function removeEntity(_0x2e3d0a,_0x2363d4){return function(_0x2e5f6e){if(_0x2e5f6e){return _0x2e5f6e[_0x8401('0x28')]()[_0x8401('0x29')](function(){_0x2e3d0a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29ef16,_0x14aae2){return function(_0x23fdf5){if(!_0x23fdf5){_0x29ef16[_0x8401('0x1b')](0x194);}return _0x23fdf5;};}function handleError(_0x359400,_0x38eea5){_0x38eea5=_0x38eea5||0x1f4;return function(_0x1a7bcb){logger[_0x8401('0x2a')](_0x1a7bcb[_0x8401('0x2b')]);if(_0x1a7bcb['name']){delete _0x1a7bcb[_0x8401('0x2c')];}_0x359400[_0x8401('0x1c')](_0x38eea5)['send'](_0x1a7bcb);};}exports[_0x8401('0x2d')]=function(_0x38d0fc,_0x21dd27){var _0x6eb7a8={},_0x412f46={},_0x3958d0={'count':0x0,'rows':[]};var _0x1cd263=_['map'](db[_0x8401('0x2e')][_0x8401('0x2f')],function(_0xdcfc18){return{'name':_0xdcfc18[_0x8401('0x30')],'type':_0xdcfc18[_0x8401('0x31')][_0x8401('0x32')]};});_0x412f46[_0x8401('0x33')]=_['map'](_0x1cd263,_0x8401('0x2c'));_0x412f46[_0x8401('0x34')]=_[_0x8401('0x35')](_0x38d0fc[_0x8401('0x34')]);_0x412f46[_0x8401('0x36')]=_['intersection'](_0x412f46['model'],_0x412f46['query']);_0x6eb7a8[_0x8401('0x37')]=_['intersection'](_0x412f46[_0x8401('0x33')],qs[_0x8401('0x38')](_0x38d0fc[_0x8401('0x34')]['fields']));_0x6eb7a8[_0x8401('0x37')]=_0x6eb7a8['attributes'][_0x8401('0x39')]?_0x6eb7a8[_0x8401('0x37')]:_0x412f46[_0x8401('0x33')];if(!_0x38d0fc['query']['hasOwnProperty']('nolimit')){_0x6eb7a8[_0x8401('0x21')]=qs[_0x8401('0x21')](_0x38d0fc[_0x8401('0x34')][_0x8401('0x21')]);_0x6eb7a8['offset']=qs['offset'](_0x38d0fc[_0x8401('0x34')][_0x8401('0x1f')]);}_0x6eb7a8[_0x8401('0x3a')]=qs['sort'](_0x38d0fc[_0x8401('0x34')][_0x8401('0x3b')]);_0x6eb7a8[_0x8401('0x3c')]=qs[_0x8401('0x36')](_['pick'](_0x38d0fc[_0x8401('0x34')],_0x412f46[_0x8401('0x36')]),_0x1cd263);if(_0x38d0fc[_0x8401('0x34')][_0x8401('0x3d')]){_0x6eb7a8[_0x8401('0x3c')]=_[_0x8401('0x3e')](_0x6eb7a8[_0x8401('0x3c')],{'$or':_['map'](_0x1cd263,function(_0x23497b){if(_0x23497b[_0x8401('0x31')]!==_0x8401('0x3f')){var _0x3c178c={};_0x3c178c[_0x23497b[_0x8401('0x2c')]]={'$like':'%'+_0x38d0fc['query'][_0x8401('0x3d')]+'%'};return _0x3c178c;}})});}_0x6eb7a8=_[_0x8401('0x3e')]({},_0x6eb7a8,_0x38d0fc['options']);var _0x350a89={'where':_0x6eb7a8[_0x8401('0x3c')]};return db[_0x8401('0x2e')][_0x8401('0x22')](_0x350a89)[_0x8401('0x29')](function(_0x371806){_0x3958d0['count']=_0x371806;if(_0x38d0fc[_0x8401('0x34')][_0x8401('0x40')]){_0x6eb7a8['include']=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x6eb7a8);})[_0x8401('0x29')](function(_0x444535){_0x3958d0[_0x8401('0x41')]=_0x444535;return _0x3958d0;})[_0x8401('0x29')](respondWithFilteredResult(_0x21dd27,_0x6eb7a8))[_0x8401('0x42')](handleError(_0x21dd27,null));};exports[_0x8401('0x43')]=function(_0x4612f5,_0x68863c){var _0x34e984={'raw':![],'where':{'id':_0x4612f5['params']['id']}},_0x421a82={};_0x421a82['model']=_[_0x8401('0x35')](db[_0x8401('0x2e')][_0x8401('0x2f')]);_0x421a82[_0x8401('0x34')]=_[_0x8401('0x35')](_0x4612f5[_0x8401('0x34')]);_0x421a82['filters']=_[_0x8401('0x44')](_0x421a82[_0x8401('0x33')],_0x421a82[_0x8401('0x34')]);_0x34e984[_0x8401('0x37')]=_[_0x8401('0x44')](_0x421a82[_0x8401('0x33')],qs[_0x8401('0x38')](_0x4612f5['query'][_0x8401('0x38')]));_0x34e984[_0x8401('0x37')]=_0x34e984[_0x8401('0x37')][_0x8401('0x39')]?_0x34e984[_0x8401('0x37')]:_0x421a82[_0x8401('0x33')];if(_0x4612f5[_0x8401('0x34')][_0x8401('0x40')]){_0x34e984[_0x8401('0x45')]=[{'all':!![]}];}_0x34e984=_[_0x8401('0x3e')]({},_0x34e984,_0x4612f5['options']);return db[_0x8401('0x2e')][_0x8401('0x46')](_0x34e984)[_0x8401('0x29')](handleEntityNotFound(_0x68863c,null))['then'](respondWithResult(_0x68863c,null))[_0x8401('0x42')](handleError(_0x68863c,null));};exports[_0x8401('0x47')]=function(_0x44fd0d,_0x4b6b9d){return db[_0x8401('0x2e')][_0x8401('0x47')](_0x44fd0d[_0x8401('0x48')],{})[_0x8401('0x29')](respondWithResult(_0x4b6b9d,0xc9))[_0x8401('0x42')](handleError(_0x4b6b9d,null));};exports[_0x8401('0x27')]=function(_0x4991c8,_0x27fa70){if(_0x4991c8['body']['id']){delete _0x4991c8[_0x8401('0x48')]['id'];}return db[_0x8401('0x2e')][_0x8401('0x46')]({'where':{'id':_0x4991c8[_0x8401('0x49')]['id']}})[_0x8401('0x29')](handleEntityNotFound(_0x27fa70,null))[_0x8401('0x29')](saveUpdates(_0x4991c8[_0x8401('0x48')],null))[_0x8401('0x29')](respondWithResult(_0x27fa70,null))[_0x8401('0x42')](handleError(_0x27fa70,null));};exports[_0x8401('0x28')]=function(_0x33abab,_0x5c3b74){return db[_0x8401('0x2e')][_0x8401('0x46')]({'where':{'id':_0x33abab['params']['id']}})[_0x8401('0x29')](handleEntityNotFound(_0x5c3b74,null))[_0x8401('0x29')](removeEntity(_0x5c3b74,null))['catch'](handleError(_0x5c3b74,null));};exports['getConfigurations']=function(_0x2ebe49,_0xa78766,_0x444a04){var _0x2e22d3={};var _0x57c2bd={};var _0x466f4e;var _0x182bf0;return db[_0x8401('0x2e')][_0x8401('0x4a')]({'where':{'id':_0x2ebe49['params']['id']}})[_0x8401('0x29')](handleEntityNotFound(_0xa78766,null))[_0x8401('0x29')](function(_0x4a8e77){if(_0x4a8e77){_0x466f4e=_0x4a8e77;_0x57c2bd['model']=_[_0x8401('0x35')](db[_0x8401('0x4b')][_0x8401('0x2f')]);_0x57c2bd[_0x8401('0x34')]=_['keys'](_0x2ebe49[_0x8401('0x34')]);_0x57c2bd[_0x8401('0x36')]=_[_0x8401('0x44')](_0x57c2bd['model'],_0x57c2bd['query']);_0x2e22d3['attributes']=_['intersection'](_0x57c2bd[_0x8401('0x33')],qs[_0x8401('0x38')](_0x2ebe49[_0x8401('0x34')][_0x8401('0x38')]));_0x2e22d3[_0x8401('0x37')]=_0x2e22d3[_0x8401('0x37')][_0x8401('0x39')]?_0x2e22d3[_0x8401('0x37')]:_0x57c2bd[_0x8401('0x33')];_0x2e22d3[_0x8401('0x3a')]=qs[_0x8401('0x3b')](_0x2ebe49[_0x8401('0x34')][_0x8401('0x3b')]);_0x2e22d3[_0x8401('0x3c')]=qs[_0x8401('0x36')](_[_0x8401('0x4c')](_0x2ebe49[_0x8401('0x34')],_0x57c2bd[_0x8401('0x36')]));if(_0x2ebe49[_0x8401('0x34')][_0x8401('0x3d')]){_0x2e22d3[_0x8401('0x3c')]=_[_0x8401('0x3e')](_0x2e22d3[_0x8401('0x3c')],{'$or':_[_0x8401('0x4d')](_0x2e22d3['attributes'],function(_0x256ba2){var _0x225e89={};_0x225e89[_0x256ba2]={'$like':'%'+_0x2ebe49[_0x8401('0x34')][_0x8401('0x3d')]+'%'};return _0x225e89;})});}_0x2e22d3=_['merge']({},_0x2e22d3,_0x2ebe49['options']);return _0x466f4e[_0x8401('0x4e')](_0x2e22d3);}})[_0x8401('0x29')](function(_0x44175e){if(_0x44175e){_0x182bf0=_0x44175e['length'];if(!_0x2ebe49[_0x8401('0x34')][_0x8401('0x4f')](_0x8401('0x50'))){_0x2e22d3[_0x8401('0x21')]=qs[_0x8401('0x21')](_0x2ebe49[_0x8401('0x34')]['limit']);_0x2e22d3[_0x8401('0x1f')]=qs['offset'](_0x2ebe49['query'][_0x8401('0x1f')]);}return _0x466f4e[_0x8401('0x4e')](_0x2e22d3);}})[_0x8401('0x29')](function(_0x2847a8){if(_0x2847a8){return _0x2847a8?{'count':_0x182bf0,'rows':_0x2847a8}:null;}})[_0x8401('0x29')](respondWithResult(_0xa78766,null))[_0x8401('0x42')](handleError(_0xa78766,null));};exports['addConfiguration']=function(_0x408820,_0x5a04a8,_0x4ea493){if(_0x408820[_0x8401('0x48')]['id']){delete _0x408820['body']['id'];}return db[_0x8401('0x2e')][_0x8401('0x4a')]({'where':{'id':_0x408820[_0x8401('0x49')]['id']}})[_0x8401('0x29')](handleEntityNotFound(_0x5a04a8,null))['then'](function(_0xf98ea4){if(_0xf98ea4){_0x408820[_0x8401('0x48')][_0x8401('0x51')]=_0xf98ea4['id'];_0x408820[_0x8401('0x48')][_0x8401('0x52')]=integrations['getSubjects'](_0x408820['body']['channel'],_0x408820[_0x8401('0x48')][_0x8401('0x31')]);_0x408820[_0x8401('0x48')][_0x8401('0x53')]=integrations['getDescriptions'](_0x408820[_0x8401('0x48')][_0x8401('0x54')],_0x408820[_0x8401('0x48')][_0x8401('0x31')]);return db[_0x8401('0x4b')]['create'](_0x408820[_0x8401('0x48')],{'include':[{'model':db[_0x8401('0x55')],'as':_0x8401('0x52')},{'model':db[_0x8401('0x55')],'as':_0x8401('0x53')}]});}return null;})[_0x8401('0x29')](respondWithResult(_0x5a04a8,null))['catch'](handleError(_0x5a04a8,null));};function getAccessToken(_0x554c61){return new Promise(function(_0x96fa7a,_0x1f9e52){var _0x1d5320;switch(_0x554c61[_0x8401('0x56')]){case'US':_0x1d5320=_0x8401('0x57');break;case'AU':_0x1d5320='https://accounts.zoho.com.au';break;case'EU':_0x1d5320='https://accounts.zoho.eu';break;case'IN':_0x1d5320=_0x8401('0x58');break;case'CN':_0x1d5320='https://accounts.zoho.com.cn';break;default:_0x1d5320=_0x8401('0x59');break;}var _0x2f8304={'method':_0x8401('0x5a'),'uri':_0x1d5320+_0x8401('0x5b'),'qs':{'refresh_token':_0x554c61['refreshToken'],'client_id':_0x554c61['clientId'],'client_secret':_0x554c61['clientSecret'],'grant_type':_0x8401('0x5c')},'json':!![]};return rp(_0x2f8304)[_0x8401('0x29')](function(_0x9f00eb){if(_0x9f00eb[_0x8401('0x5d')]){_0x96fa7a(_0x9f00eb[_0x8401('0x5d')]);}else{_0x1f9e52('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x8401('0x42')](function(_0x42c5c9){_0x1f9e52(_0x42c5c9);});});}exports[_0x8401('0x5e')]=function(_0x4c111c,_0x2154de,_0x30ae8f){var _0x392ba5,_0x949065,_0x30a0e2,_0x535a69,_0x570de0;return db[_0x8401('0x2e')][_0x8401('0x4a')]({'where':{'id':_0x4c111c[_0x8401('0x49')]['id']},'attributes':['id',_0x8401('0x5f'),_0x8401('0x56'),'clientId','clientSecret',_0x8401('0x60'),_0x8401('0x61'),_0x8401('0x62')]})[_0x8401('0x29')](handleEntityNotFound(_0x2154de,null))[_0x8401('0x29')](function(_0x429746){_0x570de0=_0x429746;_0x392ba5=_0x570de0[_0x8401('0x5f')];_0x949065=_0x392ba5===_0x8401('0x63')?'eu':_0x8401('0x64');_0x30a0e2=_0x570de0['serverUrl'];var _0x1b84f2=_0x30a0e2[_0x8401('0x65')](-0x1);if(_0x1b84f2==='/'||_0x1b84f2==='\x5c'||_0x1b84f2===':'){_0x30a0e2=_0x30a0e2[_0x8401('0x66')](0x0,_0x30a0e2[_0x8401('0x67')](_0x1b84f2));}if(!_0x570de0[_0x8401('0x62')]){throw new Error(_0x8401('0x68'));}return getAccessToken(_0x570de0);})['then'](function(_0x778ddc){if(_0x778ddc){return rp({'method':_0x8401('0x69'),'uri':util['format'](_0x8401('0x6a'),_0x949065),'qs':{'module':_0x8401('0x6b')},'headers':{'Authorization':_0x8401('0x6c')+_0x778ddc},'json':!![]});}})[_0x8401('0x29')](function(_0x1d086e){if(_0x1d086e){if(_0x1d086e['response']&&_0x1d086e['response']['error']){throw new Error(_0x1d086e[_0x8401('0x6d')][_0x8401('0x2a')][_0x8401('0x6e')]);}var _0x42a561=[];var _0x3d3a54=[];var _0x53da76=[_0x8401('0x6f'),_0x8401('0x70'),_0x8401('0x71'),_0x8401('0x72'),_0x8401('0x73'),'Call_Result','Call_Start_Time',_0x8401('0x74')];_0x3d3a54=_[_0x8401('0x75')](_0x1d086e[_0x8401('0x38')],function(_0x2b2f19){return _0x53da76[_0x8401('0x76')](_0x2b2f19['api_name']);});for(var _0x3cb226=0x0;_0x3cb226<_0x3d3a54['length'];_0x3cb226++){if(_0x3d3a54[_0x3cb226][_0x8401('0x77')]===![]){_0x42a561['push']({'id':_0x3d3a54[_0x3cb226]['id'],'name':_0x3d3a54[_0x3cb226][_0x8401('0x78')],'custom':_0x3d3a54[_0x3cb226]['custom_field'],'options':_0x3d3a54[_0x3cb226]['data_type']===_0x8401('0x79')&&_0x3d3a54[_0x3cb226]['pick_list_values'][_0x8401('0x39')]>-0x1?_['map'](_0x3d3a54[_0x3cb226][_0x8401('0x7a')],function(_0x111cc0){return{'name':_0x111cc0,'value':_0x111cc0};}):[]});}}return{'count':_0x42a561[_0x8401('0x39')],'rows':_0x42a561};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x2154de,null))[_0x8401('0x42')](function(_0x2ff3f1){var _0x4f92f3=_0x4c111c['query'][_0x8401('0x7b')]?0x1f4:_0x2ff3f1['statusCode']||0x1f4;logger[_0x8401('0x2a')](_0x8401('0x7c'),_0x8401('0x5e'),_0x4f92f3,JSON['stringify'](_0x2ff3f1));delete _0x2ff3f1['name'];if(_0x4f92f3===0x191){_0x4f92f3=0x190;}_0x2154de['status'](_0x4f92f3)['send'](_0x4c111c[_0x8401('0x34')][_0x8401('0x7b')]?{'message':_0x8401('0x7d'),'statusCode':_0x2ff3f1[_0x8401('0x7e')]}:_0x2ff3f1);});};