917088ceae3788b1012a160f9353b6cc59047194
[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 _0x383b=['keys','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','ZohoAccount','includeAll','include','findAll','catch','show','fields','find','create','body','params','destroy','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','refreshToken','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','clientSecret','serverUrl','code','host','zoho.eu','substring','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','Owner','Description','Call_Duration','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','picklist','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query'];(function(_0x3ceeb9,_0x2b7cef){var _0xc304fa=function(_0x5596f3){while(--_0x5596f3){_0x3ceeb9['push'](_0x3ceeb9['shift']());}};_0xc304fa(++_0x2b7cef);}(_0x383b,0x1d4));var _0xb383=function(_0x21783b,_0x861cfe){_0x21783b=_0x21783b-0x0;var _0x4f747b=_0x383b[_0x21783b];return _0x4f747b;};'use strict';var emlformat=require(_0xb383('0x0'));var rimraf=require(_0xb383('0x1'));var zipdir=require(_0xb383('0x2'));var jsonpatch=require(_0xb383('0x3'));var rp=require(_0xb383('0x4'));var moment=require(_0xb383('0x5'));var BPromise=require(_0xb383('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb383('0x7'));var sox=require(_0xb383('0x8'));var csv=require(_0xb383('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb383('0xa'));var _=require(_0xb383('0xb'));var squel=require(_0xb383('0xc'));var crypto=require(_0xb383('0xd'));var jsforce=require(_0xb383('0xe'));var deskjs=require(_0xb383('0xf'));var toCsv=require(_0xb383('0x9'));var querystring=require('querystring');var Papa=require(_0xb383('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb383('0x11'));var as=require(_0xb383('0x12'));var hardwareService=require(_0xb383('0x13'));var logger=require(_0xb383('0x14'))(_0xb383('0x15'));var utils=require(_0xb383('0x16'));var config=require(_0xb383('0x17'));var licenseUtil=require(_0xb383('0x18'));var db=require(_0xb383('0x19'))['db'];var integrations=require(_0xb383('0x1a'));function respondWithStatusCode(_0x195d2a,_0xf68c85){_0xf68c85=_0xf68c85||0xcc;return function(_0x329b62){if(_0x329b62){return _0x195d2a[_0xb383('0x1b')](_0xf68c85);}return _0x195d2a[_0xb383('0x1c')](_0xf68c85)['end']();};}function respondWithResult(_0x112e9d,_0x34b649){_0x34b649=_0x34b649||0xc8;return function(_0x2ebe1d){if(_0x2ebe1d){return _0x112e9d[_0xb383('0x1c')](_0x34b649)[_0xb383('0x1d')](_0x2ebe1d);}};}function respondWithFilteredResult(_0x581d0d,_0x330bfa){return function(_0x3edab2){if(_0x3edab2){var _0x46656d=typeof _0x330bfa[_0xb383('0x1e')]==='undefined'&&typeof _0x330bfa[_0xb383('0x1f')]==='undefined';var _0x19f15e=_0x3edab2[_0xb383('0x20')];var _0x37ca70=_0x46656d?0x0:_0x330bfa[_0xb383('0x1e')];var _0x266864=_0x46656d?_0x3edab2['count']:_0x330bfa['offset']+_0x330bfa[_0xb383('0x1f')];var _0x11d2cb;if(_0x266864>=_0x19f15e){_0x266864=_0x19f15e;_0x11d2cb=0xc8;}else{_0x11d2cb=0xce;}_0x581d0d[_0xb383('0x1c')](_0x11d2cb);return _0x581d0d[_0xb383('0x21')](_0xb383('0x22'),_0x37ca70+'-'+_0x266864+'/'+_0x19f15e)[_0xb383('0x1d')](_0x3edab2);}return null;};}function patchUpdates(_0x811804){return function(_0x570da3){try{jsonpatch[_0xb383('0x23')](_0x570da3,_0x811804,!![]);}catch(_0x369894){return BPromise[_0xb383('0x24')](_0x369894);}return _0x570da3[_0xb383('0x25')]();};}function saveUpdates(_0x542324,_0x1e7eed){return function(_0x31ab8a){if(_0x31ab8a){return _0x31ab8a[_0xb383('0x26')](_0x542324)[_0xb383('0x27')](function(_0x17813e){return _0x17813e;});}return null;};}function removeEntity(_0x24a34c,_0x350f30){return function(_0x51c623){if(_0x51c623){return _0x51c623['destroy']()['then'](function(){_0x24a34c[_0xb383('0x1c')](0xcc)[_0xb383('0x28')]();});}};}function handleEntityNotFound(_0x4667c8,_0x892e44){return function(_0x310805){if(!_0x310805){_0x4667c8['sendStatus'](0x194);}return _0x310805;};}function handleError(_0x70e10,_0x68be04){_0x68be04=_0x68be04||0x1f4;return function(_0x49117b){logger[_0xb383('0x29')](_0x49117b[_0xb383('0x2a')]);if(_0x49117b[_0xb383('0x2b')]){delete _0x49117b['name'];}_0x70e10[_0xb383('0x1c')](_0x68be04)[_0xb383('0x2c')](_0x49117b);};}exports[_0xb383('0x2d')]=function(_0x3d862d,_0x5781d9){var _0x472989={},_0x30f2e6={},_0x1c56ca={'count':0x0,'rows':[]};var _0x277802=_[_0xb383('0x2e')](db['ZohoAccount'][_0xb383('0x2f')],function(_0x594d9c){return{'name':_0x594d9c[_0xb383('0x30')],'type':_0x594d9c[_0xb383('0x31')]['key']};});_0x30f2e6[_0xb383('0x32')]=_['map'](_0x277802,_0xb383('0x2b'));_0x30f2e6[_0xb383('0x33')]=_[_0xb383('0x34')](_0x3d862d[_0xb383('0x33')]);_0x30f2e6['filters']=_[_0xb383('0x35')](_0x30f2e6[_0xb383('0x32')],_0x30f2e6[_0xb383('0x33')]);_0x472989[_0xb383('0x36')]=_[_0xb383('0x35')](_0x30f2e6['model'],qs['fields'](_0x3d862d[_0xb383('0x33')]['fields']));_0x472989[_0xb383('0x36')]=_0x472989[_0xb383('0x36')][_0xb383('0x37')]?_0x472989[_0xb383('0x36')]:_0x30f2e6[_0xb383('0x32')];if(!_0x3d862d[_0xb383('0x33')][_0xb383('0x38')](_0xb383('0x39'))){_0x472989[_0xb383('0x1f')]=qs[_0xb383('0x1f')](_0x3d862d[_0xb383('0x33')][_0xb383('0x1f')]);_0x472989[_0xb383('0x1e')]=qs['offset'](_0x3d862d['query'][_0xb383('0x1e')]);}_0x472989[_0xb383('0x3a')]=qs[_0xb383('0x3b')](_0x3d862d[_0xb383('0x33')]['sort']);_0x472989['where']=qs[_0xb383('0x3c')](_[_0xb383('0x3d')](_0x3d862d[_0xb383('0x33')],_0x30f2e6[_0xb383('0x3c')]),_0x277802);if(_0x3d862d[_0xb383('0x33')]['filter']){_0x472989[_0xb383('0x3e')]=_[_0xb383('0x3f')](_0x472989[_0xb383('0x3e')],{'$or':_[_0xb383('0x2e')](_0x277802,function(_0x20ae1e){if(_0x20ae1e['type']!==_0xb383('0x40')){var _0x99dede={};_0x99dede[_0x20ae1e[_0xb383('0x2b')]]={'$like':'%'+_0x3d862d[_0xb383('0x33')][_0xb383('0x41')]+'%'};return _0x99dede;}})});}_0x472989=_[_0xb383('0x3f')]({},_0x472989,_0x3d862d[_0xb383('0x42')]);var _0x163ff9={'where':_0x472989[_0xb383('0x3e')]};return db[_0xb383('0x43')][_0xb383('0x20')](_0x163ff9)[_0xb383('0x27')](function(_0x41107f){_0x1c56ca[_0xb383('0x20')]=_0x41107f;if(_0x3d862d['query'][_0xb383('0x44')]){_0x472989[_0xb383('0x45')]=[{'all':!![]}];}return db[_0xb383('0x43')][_0xb383('0x46')](_0x472989);})[_0xb383('0x27')](function(_0x47034d){_0x1c56ca['rows']=_0x47034d;return _0x1c56ca;})[_0xb383('0x27')](respondWithFilteredResult(_0x5781d9,_0x472989))[_0xb383('0x47')](handleError(_0x5781d9,null));};exports[_0xb383('0x48')]=function(_0x29c399,_0x5a293b){var _0x15e3f9={'raw':![],'where':{'id':_0x29c399['params']['id']}},_0x3f3605={};_0x3f3605[_0xb383('0x32')]=_['keys'](db[_0xb383('0x43')][_0xb383('0x2f')]);_0x3f3605[_0xb383('0x33')]=_['keys'](_0x29c399['query']);_0x3f3605['filters']=_['intersection'](_0x3f3605['model'],_0x3f3605[_0xb383('0x33')]);_0x15e3f9[_0xb383('0x36')]=_['intersection'](_0x3f3605[_0xb383('0x32')],qs[_0xb383('0x49')](_0x29c399['query']['fields']));_0x15e3f9['attributes']=_0x15e3f9[_0xb383('0x36')]['length']?_0x15e3f9[_0xb383('0x36')]:_0x3f3605[_0xb383('0x32')];if(_0x29c399['query'][_0xb383('0x44')]){_0x15e3f9[_0xb383('0x45')]=[{'all':!![]}];}_0x15e3f9=_[_0xb383('0x3f')]({},_0x15e3f9,_0x29c399[_0xb383('0x42')]);return db[_0xb383('0x43')][_0xb383('0x4a')](_0x15e3f9)['then'](handleEntityNotFound(_0x5a293b,null))[_0xb383('0x27')](respondWithResult(_0x5a293b,null))['catch'](handleError(_0x5a293b,null));};exports[_0xb383('0x4b')]=function(_0x4c23de,_0x501856){return db[_0xb383('0x43')][_0xb383('0x4b')](_0x4c23de[_0xb383('0x4c')],{})[_0xb383('0x27')](respondWithResult(_0x501856,0xc9))['catch'](handleError(_0x501856,null));};exports[_0xb383('0x26')]=function(_0x5416cf,_0x1b0814){if(_0x5416cf['body']['id']){delete _0x5416cf['body']['id'];}return db[_0xb383('0x43')]['find']({'where':{'id':_0x5416cf[_0xb383('0x4d')]['id']}})[_0xb383('0x27')](handleEntityNotFound(_0x1b0814,null))[_0xb383('0x27')](saveUpdates(_0x5416cf[_0xb383('0x4c')],null))[_0xb383('0x27')](respondWithResult(_0x1b0814,null))[_0xb383('0x47')](handleError(_0x1b0814,null));};exports[_0xb383('0x4e')]=function(_0x4fd6ad,_0x20882c){return db['ZohoAccount'][_0xb383('0x4a')]({'where':{'id':_0x4fd6ad['params']['id']}})[_0xb383('0x27')](handleEntityNotFound(_0x20882c,null))[_0xb383('0x27')](removeEntity(_0x20882c,null))[_0xb383('0x47')](handleError(_0x20882c,null));};exports[_0xb383('0x4f')]=function(_0x3dfdf7,_0x2f1c4a,_0x51a9d8){var _0x2002e0={};var _0x2cae24={};var _0x17250f;var _0x1bf7cf;return db[_0xb383('0x43')][_0xb383('0x50')]({'where':{'id':_0x3dfdf7['params']['id']}})[_0xb383('0x27')](handleEntityNotFound(_0x2f1c4a,null))[_0xb383('0x27')](function(_0x3902f4){if(_0x3902f4){_0x17250f=_0x3902f4;_0x2cae24['model']=_[_0xb383('0x34')](db[_0xb383('0x51')][_0xb383('0x2f')]);_0x2cae24[_0xb383('0x33')]=_[_0xb383('0x34')](_0x3dfdf7[_0xb383('0x33')]);_0x2cae24['filters']=_['intersection'](_0x2cae24[_0xb383('0x32')],_0x2cae24[_0xb383('0x33')]);_0x2002e0['attributes']=_[_0xb383('0x35')](_0x2cae24['model'],qs[_0xb383('0x49')](_0x3dfdf7[_0xb383('0x33')][_0xb383('0x49')]));_0x2002e0[_0xb383('0x36')]=_0x2002e0[_0xb383('0x36')]['length']?_0x2002e0['attributes']:_0x2cae24[_0xb383('0x32')];_0x2002e0[_0xb383('0x3a')]=qs[_0xb383('0x3b')](_0x3dfdf7[_0xb383('0x33')]['sort']);_0x2002e0[_0xb383('0x3e')]=qs[_0xb383('0x3c')](_[_0xb383('0x3d')](_0x3dfdf7[_0xb383('0x33')],_0x2cae24[_0xb383('0x3c')]));if(_0x3dfdf7[_0xb383('0x33')][_0xb383('0x41')]){_0x2002e0[_0xb383('0x3e')]=_[_0xb383('0x3f')](_0x2002e0['where'],{'$or':_[_0xb383('0x2e')](_0x2002e0[_0xb383('0x36')],function(_0x3478bd){var _0x55575c={};_0x55575c[_0x3478bd]={'$like':'%'+_0x3dfdf7[_0xb383('0x33')][_0xb383('0x41')]+'%'};return _0x55575c;})});}_0x2002e0=_[_0xb383('0x3f')]({},_0x2002e0,_0x3dfdf7[_0xb383('0x42')]);return _0x17250f['getConfigurations'](_0x2002e0);}})[_0xb383('0x27')](function(_0x573fa8){if(_0x573fa8){_0x1bf7cf=_0x573fa8[_0xb383('0x37')];if(!_0x3dfdf7[_0xb383('0x33')][_0xb383('0x38')](_0xb383('0x39'))){_0x2002e0['limit']=qs[_0xb383('0x1f')](_0x3dfdf7['query'][_0xb383('0x1f')]);_0x2002e0[_0xb383('0x1e')]=qs[_0xb383('0x1e')](_0x3dfdf7[_0xb383('0x33')][_0xb383('0x1e')]);}return _0x17250f[_0xb383('0x4f')](_0x2002e0);}})[_0xb383('0x27')](function(_0x5344e8){if(_0x5344e8){return _0x5344e8?{'count':_0x1bf7cf,'rows':_0x5344e8}:null;}})['then'](respondWithResult(_0x2f1c4a,null))['catch'](handleError(_0x2f1c4a,null));};exports[_0xb383('0x52')]=function(_0x546dde,_0x499bb9,_0x1f8681){if(_0x546dde[_0xb383('0x4c')]['id']){delete _0x546dde[_0xb383('0x4c')]['id'];}return db[_0xb383('0x43')][_0xb383('0x50')]({'where':{'id':_0x546dde[_0xb383('0x4d')]['id']}})[_0xb383('0x27')](handleEntityNotFound(_0x499bb9,null))[_0xb383('0x27')](function(_0x33d8a9){if(_0x33d8a9){_0x546dde[_0xb383('0x4c')][_0xb383('0x53')]=_0x33d8a9['id'];_0x546dde[_0xb383('0x4c')][_0xb383('0x54')]=integrations[_0xb383('0x55')](_0x546dde[_0xb383('0x4c')][_0xb383('0x56')],_0x546dde['body'][_0xb383('0x31')]);_0x546dde[_0xb383('0x4c')][_0xb383('0x57')]=integrations[_0xb383('0x58')](_0x546dde[_0xb383('0x4c')][_0xb383('0x56')],_0x546dde['body']['type']);return db['ZohoConfiguration'][_0xb383('0x4b')](_0x546dde[_0xb383('0x4c')],{'include':[{'model':db[_0xb383('0x59')],'as':_0xb383('0x54')},{'model':db['ZohoField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x499bb9,null))[_0xb383('0x47')](handleError(_0x499bb9,null));};function getAccessToken(_0x97d76c){return new Promise(function(_0x3622f3,_0x5d2a0c){var _0x8832e0;switch(_0x97d76c[_0xb383('0x5a')]){case'US':_0x8832e0='https://accounts.zoho.com';break;case'AU':_0x8832e0=_0xb383('0x5b');break;case'EU':_0x8832e0=_0xb383('0x5c');break;case'IN':_0x8832e0=_0xb383('0x5d');break;case'CN':_0x8832e0='https://accounts.zoho.com.cn';break;default:_0x8832e0=_0xb383('0x5c');break;}var _0x247343={'method':'POST','uri':_0x8832e0+'/oauth/v2/token','qs':{'refresh_token':_0x97d76c[_0xb383('0x5e')],'client_id':_0x97d76c[_0xb383('0x5f')],'client_secret':_0x97d76c['clientSecret'],'grant_type':_0xb383('0x60')},'json':!![]};return rp(_0x247343)[_0xb383('0x27')](function(_0x50dcdb){if(_0x50dcdb[_0xb383('0x61')]){_0x3622f3(_0x50dcdb[_0xb383('0x61')]);}else{_0x5d2a0c(_0xb383('0x62'));}})[_0xb383('0x47')](function(_0x58851d){_0x5d2a0c(_0x58851d);});});}exports['getFields']=function(_0x1d3af6,_0x8b75d3,_0x5f1d5c){var _0x24789e,_0x167c85,_0x272d61,_0x2ece07,_0x239022;return db[_0xb383('0x43')][_0xb383('0x50')]({'where':{'id':_0x1d3af6[_0xb383('0x4d')]['id']},'attributes':['id','host',_0xb383('0x5a'),'clientId',_0xb383('0x63'),_0xb383('0x64'),_0xb383('0x65'),_0xb383('0x5e')]})[_0xb383('0x27')](handleEntityNotFound(_0x8b75d3,null))['then'](function(_0x40881b){_0x239022=_0x40881b;_0x24789e=_0x239022[_0xb383('0x66')];_0x167c85=_0x24789e===_0xb383('0x67')?'eu':'com';_0x272d61=_0x239022[_0xb383('0x64')];var _0x4c19ef=_0x272d61['slice'](-0x1);if(_0x4c19ef==='/'||_0x4c19ef==='\x5c'||_0x4c19ef===':'){_0x272d61=_0x272d61[_0xb383('0x68')](0x0,_0x272d61[_0xb383('0x69')](_0x4c19ef));}if(!_0x239022[_0xb383('0x5e')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x239022);})[_0xb383('0x27')](function(_0x2431ed){if(_0x2431ed){return rp({'method':_0xb383('0x6a'),'uri':util[_0xb383('0x6b')](_0xb383('0x6c'),_0x167c85),'qs':{'module':_0xb383('0x6d')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2431ed},'json':!![]});}})[_0xb383('0x27')](function(_0x4ef659){if(_0x4ef659){if(_0x4ef659[_0xb383('0x6e')]&&_0x4ef659[_0xb383('0x6e')]['error']){throw new Error(_0x4ef659['response'][_0xb383('0x29')]['message']);}var _0x2fd72d=[];var _0x45bff7=[];var _0x2a7796=[_0xb383('0x6f'),'Subject',_0xb383('0x70'),'WhoId',_0xb383('0x71'),'Call_Result',_0xb383('0x72'),_0xb383('0x73')];_0x45bff7=_[_0xb383('0x74')](_0x4ef659[_0xb383('0x49')],function(_0x1a81ef){return _0x2a7796[_0xb383('0x75')](_0x1a81ef[_0xb383('0x76')]);});for(var _0x1d4c5b=0x0;_0x1d4c5b<_0x45bff7[_0xb383('0x37')];_0x1d4c5b++){if(_0x45bff7[_0x1d4c5b][_0xb383('0x77')]===![]){_0x2fd72d['push']({'id':_0x45bff7[_0x1d4c5b]['id'],'name':_0x45bff7[_0x1d4c5b][_0xb383('0x78')],'custom':_0x45bff7[_0x1d4c5b][_0xb383('0x79')],'options':_0x45bff7[_0x1d4c5b]['data_type']===_0xb383('0x7a')&&_0x45bff7[_0x1d4c5b][_0xb383('0x7b')][_0xb383('0x37')]>-0x1?_['map'](_0x45bff7[_0x1d4c5b][_0xb383('0x7b')],function(_0x166f41){return{'name':_0x166f41,'value':_0x166f41};}):[]});}}return{'count':_0x2fd72d[_0xb383('0x37')],'rows':_0x2fd72d};}else{return{'count':0x0,'rows':[]};}})[_0xb383('0x27')](respondWithResult(_0x8b75d3,null))[_0xb383('0x47')](function(_0x241f5f){var _0x1e60b7=_0x1d3af6['query'][_0xb383('0x7c')]?0x1f4:_0x241f5f['statusCode']||0x1f4;logger['error'](_0xb383('0x7d'),_0xb383('0x7e'),_0x1e60b7,JSON[_0xb383('0x7f')](_0x241f5f));delete _0x241f5f[_0xb383('0x2b')];if(_0x1e60b7===0x191){_0x1e60b7=0x190;}_0x8b75d3[_0xb383('0x1c')](_0x1e60b7)['send'](_0x1d3af6[_0xb383('0x33')]['test']?{'message':_0xb383('0x80'),'statusCode':_0x241f5f[_0xb383('0x81')]}:_0x241f5f);});};