a08f8f3f970692622e5ad315212ee1895d228471
[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 _0x40e4=['picklist','pick_list_values','statusCode','stringify','test','Wrong\x20credentials','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','ZohoConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','clientSecret','refresh_token','access_token','getFields','host','zone','code','refreshToken','zoho.eu','com','serverUrl','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','response','Owner','Subject','Description','WhoId','Call_Result','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field'];(function(_0x4bee6b,_0xcf07df){var _0x5976de=function(_0x113155){while(--_0x113155){_0x4bee6b['push'](_0x4bee6b['shift']());}};_0x5976de(++_0xcf07df);}(_0x40e4,0x8d));var _0x440e=function(_0x27250c,_0x3e6637){_0x27250c=_0x27250c-0x0;var _0x7e3095=_0x40e4[_0x27250c];return _0x7e3095;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x440e('0x0'));var zipdir=require(_0x440e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x440e('0x2'));var moment=require(_0x440e('0x3'));var BPromise=require(_0x440e('0x4'));var Mustache=require(_0x440e('0x5'));var util=require('util');var path=require(_0x440e('0x6'));var sox=require(_0x440e('0x7'));var csv=require(_0x440e('0x8'));var ejs=require(_0x440e('0x9'));var fs=require('fs');var fs_extra=require(_0x440e('0xa'));var _=require(_0x440e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x440e('0xc'));var deskjs=require(_0x440e('0xd'));var toCsv=require(_0x440e('0x8'));var querystring=require(_0x440e('0xe'));var Papa=require(_0x440e('0xf'));var Redis=require(_0x440e('0x10'));var authService=require(_0x440e('0x11'));var qs=require(_0x440e('0x12'));var as=require(_0x440e('0x13'));var hardwareService=require(_0x440e('0x14'));var logger=require(_0x440e('0x15'))(_0x440e('0x16'));var utils=require(_0x440e('0x17'));var config=require(_0x440e('0x18'));var licenseUtil=require(_0x440e('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x440e('0x1a'));function respondWithStatusCode(_0x381560,_0xad8aa5){_0xad8aa5=_0xad8aa5||0xcc;return function(_0x15c10f){if(_0x15c10f){return _0x381560[_0x440e('0x1b')](_0xad8aa5);}return _0x381560['status'](_0xad8aa5)[_0x440e('0x1c')]();};}function respondWithResult(_0x4d8347,_0x1545f8){_0x1545f8=_0x1545f8||0xc8;return function(_0x20bddf){if(_0x20bddf){return _0x4d8347[_0x440e('0x1d')](_0x1545f8)['json'](_0x20bddf);}};}function respondWithFilteredResult(_0x5ccac4,_0x2a8bac){return function(_0x261b41){if(_0x261b41){var _0xe60cb9=typeof _0x2a8bac['offset']===_0x440e('0x1e')&&typeof _0x2a8bac[_0x440e('0x1f')]===_0x440e('0x1e');var _0x45c7db=_0x261b41[_0x440e('0x20')];var _0x55560b=_0xe60cb9?0x0:_0x2a8bac[_0x440e('0x21')];var _0x26f581=_0xe60cb9?_0x261b41['count']:_0x2a8bac['offset']+_0x2a8bac[_0x440e('0x1f')];var _0x195f55;if(_0x26f581>=_0x45c7db){_0x26f581=_0x45c7db;_0x195f55=0xc8;}else{_0x195f55=0xce;}_0x5ccac4[_0x440e('0x1d')](_0x195f55);return _0x5ccac4[_0x440e('0x22')](_0x440e('0x23'),_0x55560b+'-'+_0x26f581+'/'+_0x45c7db)[_0x440e('0x24')](_0x261b41);}return null;};}function patchUpdates(_0x9422ea){return function(_0x59f370){try{jsonpatch[_0x440e('0x25')](_0x59f370,_0x9422ea,!![]);}catch(_0x73a53d){return BPromise[_0x440e('0x26')](_0x73a53d);}return _0x59f370[_0x440e('0x27')]();};}function saveUpdates(_0x74d005,_0xa6b88a){return function(_0x4d4b05){if(_0x4d4b05){return _0x4d4b05[_0x440e('0x28')](_0x74d005)[_0x440e('0x29')](function(_0x4a22d4){return _0x4a22d4;});}return null;};}function removeEntity(_0x24276b,_0x32244f){return function(_0x32a663){if(_0x32a663){return _0x32a663[_0x440e('0x2a')]()['then'](function(){_0x24276b[_0x440e('0x1d')](0xcc)[_0x440e('0x1c')]();});}};}function handleEntityNotFound(_0x68bdb6,_0x1f67c0){return function(_0x1bc822){if(!_0x1bc822){_0x68bdb6['sendStatus'](0x194);}return _0x1bc822;};}function handleError(_0x26ec90,_0x345043){_0x345043=_0x345043||0x1f4;return function(_0x55b64e){logger[_0x440e('0x2b')](_0x55b64e[_0x440e('0x2c')]);if(_0x55b64e[_0x440e('0x2d')]){delete _0x55b64e['name'];}_0x26ec90[_0x440e('0x1d')](_0x345043)[_0x440e('0x2e')](_0x55b64e);};}exports[_0x440e('0x2f')]=function(_0x3a49bc,_0x200944){var _0x22183a={},_0x57c463={},_0x368c80={'count':0x0,'rows':[]};var _0x3de6c9=_[_0x440e('0x30')](db[_0x440e('0x31')][_0x440e('0x32')],function(_0x375198){return{'name':_0x375198[_0x440e('0x33')],'type':_0x375198[_0x440e('0x34')][_0x440e('0x35')]};});_0x57c463['model']=_[_0x440e('0x30')](_0x3de6c9,'name');_0x57c463[_0x440e('0x36')]=_[_0x440e('0x37')](_0x3a49bc[_0x440e('0x36')]);_0x57c463[_0x440e('0x38')]=_[_0x440e('0x39')](_0x57c463[_0x440e('0x3a')],_0x57c463['query']);_0x22183a[_0x440e('0x3b')]=_[_0x440e('0x39')](_0x57c463[_0x440e('0x3a')],qs[_0x440e('0x3c')](_0x3a49bc[_0x440e('0x36')][_0x440e('0x3c')]));_0x22183a[_0x440e('0x3b')]=_0x22183a[_0x440e('0x3b')][_0x440e('0x3d')]?_0x22183a[_0x440e('0x3b')]:_0x57c463[_0x440e('0x3a')];if(!_0x3a49bc[_0x440e('0x36')]['hasOwnProperty']('nolimit')){_0x22183a['limit']=qs[_0x440e('0x1f')](_0x3a49bc['query']['limit']);_0x22183a['offset']=qs['offset'](_0x3a49bc[_0x440e('0x36')]['offset']);}_0x22183a[_0x440e('0x3e')]=qs[_0x440e('0x3f')](_0x3a49bc[_0x440e('0x36')][_0x440e('0x3f')]);_0x22183a[_0x440e('0x40')]=qs[_0x440e('0x38')](_[_0x440e('0x41')](_0x3a49bc[_0x440e('0x36')],_0x57c463[_0x440e('0x38')]),_0x3de6c9);if(_0x3a49bc['query'][_0x440e('0x42')]){_0x22183a[_0x440e('0x40')]=_[_0x440e('0x43')](_0x22183a['where'],{'$or':_[_0x440e('0x30')](_0x3de6c9,function(_0x507263){if(_0x507263['type']!=='VIRTUAL'){var _0x40fc10={};_0x40fc10[_0x507263[_0x440e('0x2d')]]={'$like':'%'+_0x3a49bc[_0x440e('0x36')][_0x440e('0x42')]+'%'};return _0x40fc10;}})});}_0x22183a=_[_0x440e('0x43')]({},_0x22183a,_0x3a49bc[_0x440e('0x44')]);var _0x275975={'where':_0x22183a['where']};return db[_0x440e('0x31')][_0x440e('0x20')](_0x275975)[_0x440e('0x29')](function(_0x654e85){_0x368c80[_0x440e('0x20')]=_0x654e85;if(_0x3a49bc['query'][_0x440e('0x45')]){_0x22183a[_0x440e('0x46')]=[{'all':!![]}];}return db['ZohoAccount'][_0x440e('0x47')](_0x22183a);})['then'](function(_0x23a1e6){_0x368c80[_0x440e('0x48')]=_0x23a1e6;return _0x368c80;})[_0x440e('0x29')](respondWithFilteredResult(_0x200944,_0x22183a))[_0x440e('0x49')](handleError(_0x200944,null));};exports[_0x440e('0x4a')]=function(_0x3b1aec,_0x46de35){var _0x460323={'raw':![],'where':{'id':_0x3b1aec[_0x440e('0x4b')]['id']}},_0x119662={};_0x119662['model']=_[_0x440e('0x37')](db['ZohoAccount']['rawAttributes']);_0x119662[_0x440e('0x36')]=_[_0x440e('0x37')](_0x3b1aec['query']);_0x119662[_0x440e('0x38')]=_[_0x440e('0x39')](_0x119662[_0x440e('0x3a')],_0x119662['query']);_0x460323[_0x440e('0x3b')]=_[_0x440e('0x39')](_0x119662[_0x440e('0x3a')],qs['fields'](_0x3b1aec[_0x440e('0x36')]['fields']));_0x460323[_0x440e('0x3b')]=_0x460323[_0x440e('0x3b')][_0x440e('0x3d')]?_0x460323['attributes']:_0x119662['model'];if(_0x3b1aec[_0x440e('0x36')][_0x440e('0x45')]){_0x460323[_0x440e('0x46')]=[{'all':!![]}];}_0x460323=_['merge']({},_0x460323,_0x3b1aec[_0x440e('0x44')]);return db[_0x440e('0x31')][_0x440e('0x4c')](_0x460323)[_0x440e('0x29')](handleEntityNotFound(_0x46de35,null))['then'](respondWithResult(_0x46de35,null))[_0x440e('0x49')](handleError(_0x46de35,null));};exports[_0x440e('0x4d')]=function(_0x58a214,_0x3b45be){return db[_0x440e('0x31')][_0x440e('0x4d')](_0x58a214[_0x440e('0x4e')],{})[_0x440e('0x29')](respondWithResult(_0x3b45be,0xc9))[_0x440e('0x49')](handleError(_0x3b45be,null));};exports[_0x440e('0x28')]=function(_0x381e56,_0x1b5a39){if(_0x381e56[_0x440e('0x4e')]['id']){delete _0x381e56[_0x440e('0x4e')]['id'];}return db[_0x440e('0x31')][_0x440e('0x4c')]({'where':{'id':_0x381e56[_0x440e('0x4b')]['id']}})[_0x440e('0x29')](handleEntityNotFound(_0x1b5a39,null))['then'](saveUpdates(_0x381e56['body'],null))['then'](respondWithResult(_0x1b5a39,null))[_0x440e('0x49')](handleError(_0x1b5a39,null));};exports['destroy']=function(_0x6476bc,_0x232167){return db[_0x440e('0x31')][_0x440e('0x4c')]({'where':{'id':_0x6476bc[_0x440e('0x4b')]['id']}})[_0x440e('0x29')](handleEntityNotFound(_0x232167,null))[_0x440e('0x29')](removeEntity(_0x232167,null))[_0x440e('0x49')](handleError(_0x232167,null));};exports[_0x440e('0x4f')]=function(_0x4afa58,_0x24dc22,_0x46bc26){var _0x310a71={};var _0x2d0a5e={};var _0x1d1ae7;var _0x144425;return db[_0x440e('0x31')][_0x440e('0x50')]({'where':{'id':_0x4afa58[_0x440e('0x4b')]['id']}})[_0x440e('0x29')](handleEntityNotFound(_0x24dc22,null))[_0x440e('0x29')](function(_0x6e017a){if(_0x6e017a){_0x1d1ae7=_0x6e017a;_0x2d0a5e[_0x440e('0x3a')]=_[_0x440e('0x37')](db[_0x440e('0x51')][_0x440e('0x32')]);_0x2d0a5e[_0x440e('0x36')]=_['keys'](_0x4afa58[_0x440e('0x36')]);_0x2d0a5e[_0x440e('0x38')]=_[_0x440e('0x39')](_0x2d0a5e['model'],_0x2d0a5e[_0x440e('0x36')]);_0x310a71['attributes']=_['intersection'](_0x2d0a5e[_0x440e('0x3a')],qs['fields'](_0x4afa58[_0x440e('0x36')][_0x440e('0x3c')]));_0x310a71[_0x440e('0x3b')]=_0x310a71[_0x440e('0x3b')]['length']?_0x310a71[_0x440e('0x3b')]:_0x2d0a5e['model'];_0x310a71[_0x440e('0x3e')]=qs[_0x440e('0x3f')](_0x4afa58[_0x440e('0x36')][_0x440e('0x3f')]);_0x310a71[_0x440e('0x40')]=qs[_0x440e('0x38')](_[_0x440e('0x41')](_0x4afa58[_0x440e('0x36')],_0x2d0a5e[_0x440e('0x38')]));if(_0x4afa58[_0x440e('0x36')]['filter']){_0x310a71[_0x440e('0x40')]=_[_0x440e('0x43')](_0x310a71[_0x440e('0x40')],{'$or':_['map'](_0x310a71[_0x440e('0x3b')],function(_0xd39258){var _0x35d94b={};_0x35d94b[_0xd39258]={'$like':'%'+_0x4afa58[_0x440e('0x36')][_0x440e('0x42')]+'%'};return _0x35d94b;})});}_0x310a71=_['merge']({},_0x310a71,_0x4afa58[_0x440e('0x44')]);return _0x1d1ae7[_0x440e('0x4f')](_0x310a71);}})[_0x440e('0x29')](function(_0x3df74f){if(_0x3df74f){_0x144425=_0x3df74f['length'];if(!_0x4afa58[_0x440e('0x36')][_0x440e('0x52')](_0x440e('0x53'))){_0x310a71[_0x440e('0x1f')]=qs[_0x440e('0x1f')](_0x4afa58[_0x440e('0x36')][_0x440e('0x1f')]);_0x310a71[_0x440e('0x21')]=qs['offset'](_0x4afa58[_0x440e('0x36')][_0x440e('0x21')]);}return _0x1d1ae7['getConfigurations'](_0x310a71);}})[_0x440e('0x29')](function(_0x349c31){if(_0x349c31){return _0x349c31?{'count':_0x144425,'rows':_0x349c31}:null;}})['then'](respondWithResult(_0x24dc22,null))['catch'](handleError(_0x24dc22,null));};exports[_0x440e('0x54')]=function(_0x586faa,_0x7c00f3,_0x362e66){if(_0x586faa[_0x440e('0x4e')]['id']){delete _0x586faa[_0x440e('0x4e')]['id'];}return db[_0x440e('0x31')]['findOne']({'where':{'id':_0x586faa[_0x440e('0x4b')]['id']}})[_0x440e('0x29')](handleEntityNotFound(_0x7c00f3,null))[_0x440e('0x29')](function(_0x454a0a){if(_0x454a0a){_0x586faa['body'][_0x440e('0x55')]=_0x454a0a['id'];_0x586faa[_0x440e('0x4e')][_0x440e('0x56')]=integrations[_0x440e('0x57')](_0x586faa[_0x440e('0x4e')][_0x440e('0x58')],_0x586faa['body'][_0x440e('0x34')]);_0x586faa['body'][_0x440e('0x59')]=integrations[_0x440e('0x5a')](_0x586faa[_0x440e('0x4e')]['channel'],_0x586faa[_0x440e('0x4e')][_0x440e('0x34')]);return db[_0x440e('0x51')][_0x440e('0x4d')](_0x586faa[_0x440e('0x4e')],{'include':[{'model':db[_0x440e('0x5b')],'as':'Subjects'},{'model':db[_0x440e('0x5b')],'as':_0x440e('0x59')}]});}return null;})[_0x440e('0x29')](respondWithResult(_0x7c00f3,null))['catch'](handleError(_0x7c00f3,null));};function getAccessToken(_0x4fb7e3){return new Promise(function(_0x4bdbaf,_0x4ae5b9){var _0x29488c;switch(_0x4fb7e3['zone']){case'US':_0x29488c=_0x440e('0x5c');break;case'AU':_0x29488c='https://accounts.zoho.com.au';break;case'EU':_0x29488c=_0x440e('0x5d');break;case'IN':_0x29488c=_0x440e('0x5e');break;case'CN':_0x29488c=_0x440e('0x5f');break;default:_0x29488c='https://accounts.zoho.eu';break;}var _0x3b3014={'method':_0x440e('0x60'),'uri':_0x29488c+'/oauth/v2/token','qs':{'refresh_token':_0x4fb7e3['refreshToken'],'client_id':_0x4fb7e3[_0x440e('0x61')],'client_secret':_0x4fb7e3[_0x440e('0x62')],'grant_type':_0x440e('0x63')},'json':!![]};return rp(_0x3b3014)[_0x440e('0x29')](function(_0x393d8c){if(_0x393d8c[_0x440e('0x64')]){_0x4bdbaf(_0x393d8c[_0x440e('0x64')]);}else{_0x4ae5b9('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x440e('0x49')](function(_0x6693c7){_0x4ae5b9(_0x6693c7);});});}exports[_0x440e('0x65')]=function(_0x43d1a1,_0x272df1,_0x19f6be){var _0x513cbc,_0x22dea9,_0x23ff00,_0x155101,_0x5490fd;return db[_0x440e('0x31')]['findOne']({'where':{'id':_0x43d1a1['params']['id']},'attributes':['id',_0x440e('0x66'),_0x440e('0x67'),_0x440e('0x61'),_0x440e('0x62'),'serverUrl',_0x440e('0x68'),_0x440e('0x69')]})['then'](handleEntityNotFound(_0x272df1,null))[_0x440e('0x29')](function(_0x4b6342){_0x5490fd=_0x4b6342;_0x513cbc=_0x5490fd[_0x440e('0x66')];_0x22dea9=_0x513cbc===_0x440e('0x6a')?'eu':_0x440e('0x6b');_0x23ff00=_0x5490fd[_0x440e('0x6c')];var _0x3aedab=_0x23ff00[_0x440e('0x6d')](-0x1);if(_0x3aedab==='/'||_0x3aedab==='\x5c'||_0x3aedab===':'){_0x23ff00=_0x23ff00[_0x440e('0x6e')](0x0,_0x23ff00[_0x440e('0x6f')](_0x3aedab));}if(!_0x5490fd[_0x440e('0x69')]){throw new Error(_0x440e('0x70'));}return getAccessToken(_0x5490fd);})[_0x440e('0x29')](function(_0x58ea7b){if(_0x58ea7b){return rp({'method':'GET','uri':util[_0x440e('0x71')](_0x440e('0x72'),_0x22dea9),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x58ea7b},'json':!![]});}})['then'](function(_0xd2aeb6){if(_0xd2aeb6){if(_0xd2aeb6['response']&&_0xd2aeb6[_0x440e('0x73')][_0x440e('0x2b')]){throw new Error(_0xd2aeb6['response'][_0x440e('0x2b')]['message']);}var _0x416642=[];var _0x56bb15=[];var _0x27ba19=[_0x440e('0x74'),_0x440e('0x75'),_0x440e('0x76'),_0x440e('0x77'),'Call_Duration',_0x440e('0x78'),'Call_Start_Time',_0x440e('0x79')];_0x56bb15=_[_0x440e('0x7a')](_0xd2aeb6[_0x440e('0x3c')],function(_0x5e1199){return _0x27ba19[_0x440e('0x7b')](_0x5e1199[_0x440e('0x7c')]);});for(var _0x2830e7=0x0;_0x2830e7<_0x56bb15['length'];_0x2830e7++){if(_0x56bb15[_0x2830e7][_0x440e('0x7d')]===![]){_0x416642[_0x440e('0x7e')]({'id':_0x56bb15[_0x2830e7]['id'],'name':_0x56bb15[_0x2830e7][_0x440e('0x7f')],'custom':_0x56bb15[_0x2830e7][_0x440e('0x80')],'options':_0x56bb15[_0x2830e7]['data_type']===_0x440e('0x81')&&_0x56bb15[_0x2830e7][_0x440e('0x82')]['length']>-0x1?_[_0x440e('0x30')](_0x56bb15[_0x2830e7][_0x440e('0x82')],function(_0xa9f053){return{'name':_0xa9f053,'value':_0xa9f053};}):[]});}}return{'count':_0x416642[_0x440e('0x3d')],'rows':_0x416642};}else{return{'count':0x0,'rows':[]};}})[_0x440e('0x29')](respondWithResult(_0x272df1,null))[_0x440e('0x49')](function(_0x5ae410){var _0x433f36=_0x43d1a1[_0x440e('0x36')]['test']?0x1f4:_0x5ae410[_0x440e('0x83')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x440e('0x65'),_0x433f36,JSON[_0x440e('0x84')](_0x5ae410));delete _0x5ae410['name'];if(_0x433f36===0x191){_0x433f36=0x190;}_0x272df1[_0x440e('0x1d')](_0x433f36)[_0x440e('0x2e')](_0x43d1a1['query'][_0x440e('0x85')]?{'message':_0x440e('0x86'),'statusCode':_0x5ae410[_0x440e('0x83')]}:_0x5ae410);});};