5b5f77ba0177189165deae8ef23faf51518d4543
[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 _0x94d7=['../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','ZohoAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','include','findAll','rows','catch','params','includeAll','find','create','body','findOne','ZohoConfiguration','merge','hasOwnProperty','getConfigurations','addConfiguration','AccountId','channel','ZohoField','Subjects','Descriptions','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','code','zoho.eu','slice','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Call_Result','Call_Start_Time','Call_Type','includes','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','test','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x94d7,0x15b));var _0x794d=function(_0x5891e1,_0x3f485d){_0x5891e1=_0x5891e1-0x0;var _0x50f846=_0x94d7[_0x5891e1];return _0x50f846;};'use strict';var emlformat=require(_0x794d('0x0'));var rimraf=require(_0x794d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x794d('0x2'));var rp=require(_0x794d('0x3'));var moment=require(_0x794d('0x4'));var BPromise=require(_0x794d('0x5'));var Mustache=require('mustache');var util=require(_0x794d('0x6'));var path=require(_0x794d('0x7'));var sox=require(_0x794d('0x8'));var csv=require('to-csv');var ejs=require(_0x794d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x794d('0xa'));var squel=require('squel');var crypto=require(_0x794d('0xb'));var jsforce=require(_0x794d('0xc'));var deskjs=require(_0x794d('0xd'));var toCsv=require(_0x794d('0xe'));var querystring=require(_0x794d('0xf'));var Papa=require(_0x794d('0x10'));var Redis=require('ioredis');var authService=require(_0x794d('0x11'));var qs=require(_0x794d('0x12'));var as=require(_0x794d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x794d('0x14'))(_0x794d('0x15'));var utils=require(_0x794d('0x16'));var config=require(_0x794d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x794d('0x18'))['db'];var integrations=require(_0x794d('0x19'));function respondWithStatusCode(_0x2d5c11,_0x32ca0e){_0x32ca0e=_0x32ca0e||0xcc;return function(_0x46ec53){if(_0x46ec53){return _0x2d5c11[_0x794d('0x1a')](_0x32ca0e);}return _0x2d5c11[_0x794d('0x1b')](_0x32ca0e)[_0x794d('0x1c')]();};}function respondWithResult(_0x30ca44,_0x1b7bb8){_0x1b7bb8=_0x1b7bb8||0xc8;return function(_0x252a81){if(_0x252a81){return _0x30ca44[_0x794d('0x1b')](_0x1b7bb8)[_0x794d('0x1d')](_0x252a81);}};}function respondWithFilteredResult(_0x112344,_0x303e18){return function(_0x596fbe){if(_0x596fbe){var _0x43dbe5=typeof _0x303e18['offset']===_0x794d('0x1e')&&typeof _0x303e18['limit']===_0x794d('0x1e');var _0xd91098=_0x596fbe[_0x794d('0x1f')];var _0x3bb322=_0x43dbe5?0x0:_0x303e18[_0x794d('0x20')];var _0x5ce567=_0x43dbe5?_0x596fbe['count']:_0x303e18[_0x794d('0x20')]+_0x303e18[_0x794d('0x21')];var _0x213795;if(_0x5ce567>=_0xd91098){_0x5ce567=_0xd91098;_0x213795=0xc8;}else{_0x213795=0xce;}_0x112344['status'](_0x213795);return _0x112344['set'](_0x794d('0x22'),_0x3bb322+'-'+_0x5ce567+'/'+_0xd91098)[_0x794d('0x1d')](_0x596fbe);}return null;};}function patchUpdates(_0x17186c){return function(_0x1aebaa){try{jsonpatch['apply'](_0x1aebaa,_0x17186c,!![]);}catch(_0x4b5857){return BPromise[_0x794d('0x23')](_0x4b5857);}return _0x1aebaa[_0x794d('0x24')]();};}function saveUpdates(_0x86b1e6,_0x4022a3){return function(_0x56ef8d){if(_0x56ef8d){return _0x56ef8d[_0x794d('0x25')](_0x86b1e6)[_0x794d('0x26')](function(_0x19655b){return _0x19655b;});}return null;};}function removeEntity(_0x2b58ef,_0x49073e){return function(_0x559fe2){if(_0x559fe2){return _0x559fe2[_0x794d('0x27')]()[_0x794d('0x26')](function(){_0x2b58ef[_0x794d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe9e0e2,_0xcd0d50){return function(_0x5f4bb4){if(!_0x5f4bb4){_0xe9e0e2[_0x794d('0x1a')](0x194);}return _0x5f4bb4;};}function handleError(_0xed92e7,_0x140bca){_0x140bca=_0x140bca||0x1f4;return function(_0x3ef8b1){logger[_0x794d('0x28')](_0x3ef8b1[_0x794d('0x29')]);if(_0x3ef8b1['name']){delete _0x3ef8b1[_0x794d('0x2a')];}_0xed92e7[_0x794d('0x1b')](_0x140bca)[_0x794d('0x2b')](_0x3ef8b1);};}exports['index']=function(_0x1e7772,_0x23bc23){var _0x250a7e={},_0x51632e={},_0x5bc943={'count':0x0,'rows':[]};var _0x3e64d3=_[_0x794d('0x2c')](db[_0x794d('0x2d')][_0x794d('0x2e')],function(_0x53236e){return{'name':_0x53236e[_0x794d('0x2f')],'type':_0x53236e[_0x794d('0x30')][_0x794d('0x31')]};});_0x51632e[_0x794d('0x32')]=_['map'](_0x3e64d3,_0x794d('0x2a'));_0x51632e['query']=_[_0x794d('0x33')](_0x1e7772[_0x794d('0x34')]);_0x51632e[_0x794d('0x35')]=_['intersection'](_0x51632e[_0x794d('0x32')],_0x51632e[_0x794d('0x34')]);_0x250a7e[_0x794d('0x36')]=_[_0x794d('0x37')](_0x51632e[_0x794d('0x32')],qs[_0x794d('0x38')](_0x1e7772[_0x794d('0x34')]['fields']));_0x250a7e[_0x794d('0x36')]=_0x250a7e['attributes'][_0x794d('0x39')]?_0x250a7e['attributes']:_0x51632e[_0x794d('0x32')];if(!_0x1e7772['query']['hasOwnProperty'](_0x794d('0x3a'))){_0x250a7e[_0x794d('0x21')]=qs['limit'](_0x1e7772[_0x794d('0x34')][_0x794d('0x21')]);_0x250a7e['offset']=qs['offset'](_0x1e7772[_0x794d('0x34')][_0x794d('0x20')]);}_0x250a7e[_0x794d('0x3b')]=qs[_0x794d('0x3c')](_0x1e7772[_0x794d('0x34')][_0x794d('0x3c')]);_0x250a7e[_0x794d('0x3d')]=qs['filters'](_[_0x794d('0x3e')](_0x1e7772['query'],_0x51632e[_0x794d('0x35')]),_0x3e64d3);if(_0x1e7772[_0x794d('0x34')]['filter']){_0x250a7e[_0x794d('0x3d')]=_['merge'](_0x250a7e[_0x794d('0x3d')],{'$or':_[_0x794d('0x2c')](_0x3e64d3,function(_0x50ea55){if(_0x50ea55['type']!==_0x794d('0x3f')){var _0x452f93={};_0x452f93[_0x50ea55['name']]={'$like':'%'+_0x1e7772[_0x794d('0x34')][_0x794d('0x40')]+'%'};return _0x452f93;}})});}_0x250a7e=_['merge']({},_0x250a7e,_0x1e7772['options']);var _0x5deff7={'where':_0x250a7e[_0x794d('0x3d')]};return db[_0x794d('0x2d')][_0x794d('0x1f')](_0x5deff7)[_0x794d('0x26')](function(_0x23ace5){_0x5bc943[_0x794d('0x1f')]=_0x23ace5;if(_0x1e7772[_0x794d('0x34')]['includeAll']){_0x250a7e[_0x794d('0x41')]=[{'all':!![]}];}return db['ZohoAccount'][_0x794d('0x42')](_0x250a7e);})[_0x794d('0x26')](function(_0x42042a){_0x5bc943[_0x794d('0x43')]=_0x42042a;return _0x5bc943;})[_0x794d('0x26')](respondWithFilteredResult(_0x23bc23,_0x250a7e))[_0x794d('0x44')](handleError(_0x23bc23,null));};exports['show']=function(_0x9a8a68,_0x36538f){var _0x320e0a={'raw':![],'where':{'id':_0x9a8a68[_0x794d('0x45')]['id']}},_0x559e87={};_0x559e87[_0x794d('0x32')]=_[_0x794d('0x33')](db[_0x794d('0x2d')]['rawAttributes']);_0x559e87[_0x794d('0x34')]=_[_0x794d('0x33')](_0x9a8a68[_0x794d('0x34')]);_0x559e87['filters']=_[_0x794d('0x37')](_0x559e87['model'],_0x559e87[_0x794d('0x34')]);_0x320e0a[_0x794d('0x36')]=_['intersection'](_0x559e87['model'],qs['fields'](_0x9a8a68['query'][_0x794d('0x38')]));_0x320e0a['attributes']=_0x320e0a[_0x794d('0x36')][_0x794d('0x39')]?_0x320e0a['attributes']:_0x559e87[_0x794d('0x32')];if(_0x9a8a68[_0x794d('0x34')][_0x794d('0x46')]){_0x320e0a[_0x794d('0x41')]=[{'all':!![]}];}_0x320e0a=_['merge']({},_0x320e0a,_0x9a8a68['options']);return db[_0x794d('0x2d')][_0x794d('0x47')](_0x320e0a)[_0x794d('0x26')](handleEntityNotFound(_0x36538f,null))[_0x794d('0x26')](respondWithResult(_0x36538f,null))[_0x794d('0x44')](handleError(_0x36538f,null));};exports[_0x794d('0x48')]=function(_0x3a8eef,_0x485ab){return db['ZohoAccount'][_0x794d('0x48')](_0x3a8eef[_0x794d('0x49')],{})[_0x794d('0x26')](respondWithResult(_0x485ab,0xc9))['catch'](handleError(_0x485ab,null));};exports[_0x794d('0x25')]=function(_0x5c2769,_0x818c1f){if(_0x5c2769[_0x794d('0x49')]['id']){delete _0x5c2769['body']['id'];}return db[_0x794d('0x2d')][_0x794d('0x47')]({'where':{'id':_0x5c2769[_0x794d('0x45')]['id']}})[_0x794d('0x26')](handleEntityNotFound(_0x818c1f,null))[_0x794d('0x26')](saveUpdates(_0x5c2769[_0x794d('0x49')],null))[_0x794d('0x26')](respondWithResult(_0x818c1f,null))['catch'](handleError(_0x818c1f,null));};exports[_0x794d('0x27')]=function(_0x15a390,_0x53ce39){return db[_0x794d('0x2d')][_0x794d('0x47')]({'where':{'id':_0x15a390[_0x794d('0x45')]['id']}})['then'](handleEntityNotFound(_0x53ce39,null))[_0x794d('0x26')](removeEntity(_0x53ce39,null))[_0x794d('0x44')](handleError(_0x53ce39,null));};exports['getConfigurations']=function(_0x5b24bd,_0x2728bc,_0x3d02b9){var _0x80c9e3={};var _0xcbbf6={};var _0x22da09;var _0xbac0db;return db['ZohoAccount'][_0x794d('0x4a')]({'where':{'id':_0x5b24bd[_0x794d('0x45')]['id']}})[_0x794d('0x26')](handleEntityNotFound(_0x2728bc,null))[_0x794d('0x26')](function(_0x49d49a){if(_0x49d49a){_0x22da09=_0x49d49a;_0xcbbf6[_0x794d('0x32')]=_[_0x794d('0x33')](db[_0x794d('0x4b')][_0x794d('0x2e')]);_0xcbbf6['query']=_['keys'](_0x5b24bd[_0x794d('0x34')]);_0xcbbf6[_0x794d('0x35')]=_[_0x794d('0x37')](_0xcbbf6[_0x794d('0x32')],_0xcbbf6['query']);_0x80c9e3[_0x794d('0x36')]=_[_0x794d('0x37')](_0xcbbf6['model'],qs[_0x794d('0x38')](_0x5b24bd[_0x794d('0x34')][_0x794d('0x38')]));_0x80c9e3['attributes']=_0x80c9e3[_0x794d('0x36')][_0x794d('0x39')]?_0x80c9e3[_0x794d('0x36')]:_0xcbbf6['model'];_0x80c9e3[_0x794d('0x3b')]=qs['sort'](_0x5b24bd[_0x794d('0x34')][_0x794d('0x3c')]);_0x80c9e3['where']=qs[_0x794d('0x35')](_['pick'](_0x5b24bd['query'],_0xcbbf6[_0x794d('0x35')]));if(_0x5b24bd[_0x794d('0x34')]['filter']){_0x80c9e3[_0x794d('0x3d')]=_[_0x794d('0x4c')](_0x80c9e3['where'],{'$or':_[_0x794d('0x2c')](_0x80c9e3[_0x794d('0x36')],function(_0x3cfebd){var _0x253ab3={};_0x253ab3[_0x3cfebd]={'$like':'%'+_0x5b24bd[_0x794d('0x34')][_0x794d('0x40')]+'%'};return _0x253ab3;})});}_0x80c9e3=_['merge']({},_0x80c9e3,_0x5b24bd['options']);return _0x22da09['getConfigurations'](_0x80c9e3);}})['then'](function(_0x6f48da){if(_0x6f48da){_0xbac0db=_0x6f48da[_0x794d('0x39')];if(!_0x5b24bd[_0x794d('0x34')][_0x794d('0x4d')](_0x794d('0x3a'))){_0x80c9e3['limit']=qs[_0x794d('0x21')](_0x5b24bd[_0x794d('0x34')][_0x794d('0x21')]);_0x80c9e3['offset']=qs['offset'](_0x5b24bd[_0x794d('0x34')][_0x794d('0x20')]);}return _0x22da09[_0x794d('0x4e')](_0x80c9e3);}})[_0x794d('0x26')](function(_0x3642ec){if(_0x3642ec){return _0x3642ec?{'count':_0xbac0db,'rows':_0x3642ec}:null;}})[_0x794d('0x26')](respondWithResult(_0x2728bc,null))[_0x794d('0x44')](handleError(_0x2728bc,null));};exports[_0x794d('0x4f')]=function(_0xbdca12,_0x3fd039,_0x2aec36){if(_0xbdca12['body']['id']){delete _0xbdca12[_0x794d('0x49')]['id'];}return db['ZohoAccount'][_0x794d('0x4a')]({'where':{'id':_0xbdca12[_0x794d('0x45')]['id']}})[_0x794d('0x26')](handleEntityNotFound(_0x3fd039,null))[_0x794d('0x26')](function(_0x341d66){if(_0x341d66){_0xbdca12[_0x794d('0x49')][_0x794d('0x50')]=_0x341d66['id'];_0xbdca12[_0x794d('0x49')]['Subjects']=integrations['getSubjects'](_0xbdca12[_0x794d('0x49')]['channel'],_0xbdca12[_0x794d('0x49')][_0x794d('0x30')]);_0xbdca12[_0x794d('0x49')]['Descriptions']=integrations['getDescriptions'](_0xbdca12[_0x794d('0x49')][_0x794d('0x51')],_0xbdca12[_0x794d('0x49')]['type']);return db['ZohoConfiguration'][_0x794d('0x48')](_0xbdca12[_0x794d('0x49')],{'include':[{'model':db[_0x794d('0x52')],'as':_0x794d('0x53')},{'model':db['ZohoField'],'as':_0x794d('0x54')}]});}return null;})['then'](respondWithResult(_0x3fd039,null))[_0x794d('0x44')](handleError(_0x3fd039,null));};function getAccessToken(_0x58b522){return new Promise(function(_0x278087,_0x26d7a7){var _0x34bfe1;switch(_0x58b522['zone']){case'US':_0x34bfe1=_0x794d('0x55');break;case'AU':_0x34bfe1=_0x794d('0x56');break;case'EU':_0x34bfe1='https://accounts.zoho.eu';break;case'IN':_0x34bfe1=_0x794d('0x57');break;case'CN':_0x34bfe1=_0x794d('0x58');break;default:_0x34bfe1=_0x794d('0x59');break;}var _0xd95146={'method':_0x794d('0x5a'),'uri':_0x34bfe1+_0x794d('0x5b'),'qs':{'refresh_token':_0x58b522[_0x794d('0x5c')],'client_id':_0x58b522[_0x794d('0x5d')],'client_secret':_0x58b522[_0x794d('0x5e')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xd95146)[_0x794d('0x26')](function(_0x3af49b){if(_0x3af49b[_0x794d('0x5f')]){_0x278087(_0x3af49b[_0x794d('0x5f')]);}else{_0x26d7a7(_0x794d('0x60'));}})['catch'](function(_0x330ea6){_0x26d7a7(_0x330ea6);});});}exports['getFields']=function(_0xfd4cc6,_0x513fc5,_0x208949){var _0x3dc073,_0x5dd840,_0xf38b70,_0xf8fc41,_0x5d6f79;return db['ZohoAccount'][_0x794d('0x4a')]({'where':{'id':_0xfd4cc6[_0x794d('0x45')]['id']},'attributes':['id',_0x794d('0x61'),'zone',_0x794d('0x5d'),_0x794d('0x5e'),_0x794d('0x62'),_0x794d('0x63'),_0x794d('0x5c')]})['then'](handleEntityNotFound(_0x513fc5,null))['then'](function(_0x4ca1a1){_0x5d6f79=_0x4ca1a1;_0x3dc073=_0x5d6f79[_0x794d('0x61')];_0x5dd840=_0x3dc073===_0x794d('0x64')?'eu':'com';_0xf38b70=_0x5d6f79['serverUrl'];var _0x500473=_0xf38b70[_0x794d('0x65')](-0x1);if(_0x500473==='/'||_0x500473==='\x5c'||_0x500473===':'){_0xf38b70=_0xf38b70['substring'](0x0,_0xf38b70[_0x794d('0x66')](_0x500473));}if(!_0x5d6f79[_0x794d('0x5c')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x5d6f79);})['then'](function(_0x892752){if(_0x892752){return rp({'method':_0x794d('0x67'),'uri':util[_0x794d('0x68')](_0x794d('0x69'),_0x5dd840),'qs':{'module':_0x794d('0x6a')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x892752},'json':!![]});}})[_0x794d('0x26')](function(_0x42b9cc){if(_0x42b9cc){if(_0x42b9cc[_0x794d('0x6b')]&&_0x42b9cc[_0x794d('0x6b')][_0x794d('0x28')]){throw new Error(_0x42b9cc[_0x794d('0x6b')][_0x794d('0x28')][_0x794d('0x6c')]);}var _0x3a04a2=[];var _0x12358b=[];var _0x20e5c3=['Owner','Subject','Description','WhoId','Call_Duration',_0x794d('0x6d'),_0x794d('0x6e'),_0x794d('0x6f')];_0x12358b=_['remove'](_0x42b9cc['fields'],function(_0x232443){return _0x20e5c3[_0x794d('0x70')](_0x232443['api_name']);});for(var _0x39c392=0x0;_0x39c392<_0x12358b[_0x794d('0x39')];_0x39c392++){if(_0x12358b[_0x39c392][_0x794d('0x71')]===![]){_0x3a04a2[_0x794d('0x72')]({'id':_0x12358b[_0x39c392]['id'],'name':_0x12358b[_0x39c392][_0x794d('0x73')],'custom':_0x12358b[_0x39c392][_0x794d('0x74')],'options':_0x12358b[_0x39c392][_0x794d('0x75')]==='picklist'&&_0x12358b[_0x39c392][_0x794d('0x76')][_0x794d('0x39')]>-0x1?_[_0x794d('0x2c')](_0x12358b[_0x39c392][_0x794d('0x76')],function(_0x4bce1a){return{'name':_0x4bce1a,'value':_0x4bce1a};}):[]});}}return{'count':_0x3a04a2[_0x794d('0x39')],'rows':_0x3a04a2};}else{return{'count':0x0,'rows':[]};}})[_0x794d('0x26')](respondWithResult(_0x513fc5,null))['catch'](function(_0x311234){var _0x2d4745=_0xfd4cc6['query']['test']?0x1f4:_0x311234[_0x794d('0x77')]||0x1f4;logger[_0x794d('0x28')](_0x794d('0x78'),_0x794d('0x79'),_0x2d4745,JSON['stringify'](_0x311234));delete _0x311234[_0x794d('0x2a')];if(_0x2d4745===0x191){_0x2d4745=0x190;}_0x513fc5[_0x794d('0x1b')](_0x2d4745)[_0x794d('0x2b')](_0xfd4cc6['query'][_0x794d('0x7a')]?{'message':'Wrong\x20credentials','statusCode':_0x311234[_0x794d('0x77')]}:_0x311234);});};