7e4c87abfffb774ee9e5f5fe18c9fac9604e0b97
[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 _0x4782=['https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Description','WhoId','Call_Duration','Call_Type','remove','push','display_label','custom_field','data_type','pick_list_values','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','VIRTUAL','include','findAll','catch','show','params','includeAll','options','find','create','body','update','getConfigurations','findOne','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','serverUrl','host','zoho.eu','com','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format'];(function(_0xd0ec46,_0x33e078){var _0x3e5126=function(_0x3672fd){while(--_0x3672fd){_0xd0ec46['push'](_0xd0ec46['shift']());}};_0x3e5126(++_0x33e078);}(_0x4782,0x10d));var _0x2478=function(_0x140920,_0x5464db){_0x140920=_0x140920-0x0;var _0x436ed0=_0x4782[_0x140920];return _0x436ed0;};'use strict';var emlformat=require(_0x2478('0x0'));var rimraf=require(_0x2478('0x1'));var zipdir=require(_0x2478('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2478('0x3'));var moment=require(_0x2478('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x2478('0x5'));var sox=require(_0x2478('0x6'));var csv=require(_0x2478('0x7'));var ejs=require(_0x2478('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2478('0x9'));var squel=require(_0x2478('0xa'));var crypto=require(_0x2478('0xb'));var jsforce=require(_0x2478('0xc'));var deskjs=require(_0x2478('0xd'));var toCsv=require(_0x2478('0x7'));var querystring=require(_0x2478('0xe'));var Papa=require(_0x2478('0xf'));var Redis=require(_0x2478('0x10'));var authService=require(_0x2478('0x11'));var qs=require(_0x2478('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2478('0x13'));var logger=require(_0x2478('0x14'))('api');var utils=require(_0x2478('0x15'));var config=require(_0x2478('0x16'));var licenseUtil=require(_0x2478('0x17'));var db=require(_0x2478('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x762541,_0x498ddf){_0x498ddf=_0x498ddf||0xcc;return function(_0x54da7d){if(_0x54da7d){return _0x762541['sendStatus'](_0x498ddf);}return _0x762541[_0x2478('0x19')](_0x498ddf)[_0x2478('0x1a')]();};}function respondWithResult(_0x4aec89,_0x59da65){_0x59da65=_0x59da65||0xc8;return function(_0x1a881a){if(_0x1a881a){return _0x4aec89[_0x2478('0x19')](_0x59da65)[_0x2478('0x1b')](_0x1a881a);}};}function respondWithFilteredResult(_0x3fbc5c,_0x5a2be1){return function(_0x5669b7){if(_0x5669b7){var _0x5aa27e=typeof _0x5a2be1['offset']===_0x2478('0x1c')&&typeof _0x5a2be1[_0x2478('0x1d')]===_0x2478('0x1c');var _0x483c69=_0x5669b7[_0x2478('0x1e')];var _0x3ff2f3=_0x5aa27e?0x0:_0x5a2be1['offset'];var _0x5bae2f=_0x5aa27e?_0x5669b7['count']:_0x5a2be1[_0x2478('0x1f')]+_0x5a2be1[_0x2478('0x1d')];var _0x492327;if(_0x5bae2f>=_0x483c69){_0x5bae2f=_0x483c69;_0x492327=0xc8;}else{_0x492327=0xce;}_0x3fbc5c[_0x2478('0x19')](_0x492327);return _0x3fbc5c[_0x2478('0x20')](_0x2478('0x21'),_0x3ff2f3+'-'+_0x5bae2f+'/'+_0x483c69)[_0x2478('0x1b')](_0x5669b7);}return null;};}function patchUpdates(_0xf79740){return function(_0x234c77){try{jsonpatch['apply'](_0x234c77,_0xf79740,!![]);}catch(_0x363259){return BPromise[_0x2478('0x22')](_0x363259);}return _0x234c77[_0x2478('0x23')]();};}function saveUpdates(_0x452998,_0x12e63d){return function(_0xee5579){if(_0xee5579){return _0xee5579['update'](_0x452998)[_0x2478('0x24')](function(_0x56b24){return _0x56b24;});}return null;};}function removeEntity(_0xe9f94a,_0x3da1a4){return function(_0x125d40){if(_0x125d40){return _0x125d40[_0x2478('0x25')]()[_0x2478('0x24')](function(){_0xe9f94a[_0x2478('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d8db0,_0x21a5f9){return function(_0x4fb40a){if(!_0x4fb40a){_0x4d8db0[_0x2478('0x26')](0x194);}return _0x4fb40a;};}function handleError(_0x52a506,_0x5f3180){_0x5f3180=_0x5f3180||0x1f4;return function(_0x239a0b){logger[_0x2478('0x27')](_0x239a0b[_0x2478('0x28')]);if(_0x239a0b[_0x2478('0x29')]){delete _0x239a0b[_0x2478('0x29')];}_0x52a506[_0x2478('0x19')](_0x5f3180)[_0x2478('0x2a')](_0x239a0b);};}exports[_0x2478('0x2b')]=function(_0x108055,_0x5cb4c6){var _0xfcf1e0={},_0x489e9a={},_0x39b8dd={'count':0x0,'rows':[]};var _0x4dc8eb=_[_0x2478('0x2c')](db[_0x2478('0x2d')][_0x2478('0x2e')],function(_0x323e82){return{'name':_0x323e82[_0x2478('0x2f')],'type':_0x323e82[_0x2478('0x30')]['key']};});_0x489e9a[_0x2478('0x31')]=_[_0x2478('0x2c')](_0x4dc8eb,_0x2478('0x29'));_0x489e9a[_0x2478('0x32')]=_[_0x2478('0x33')](_0x108055[_0x2478('0x32')]);_0x489e9a['filters']=_[_0x2478('0x34')](_0x489e9a['model'],_0x489e9a[_0x2478('0x32')]);_0xfcf1e0[_0x2478('0x35')]=_[_0x2478('0x34')](_0x489e9a['model'],qs[_0x2478('0x36')](_0x108055[_0x2478('0x32')][_0x2478('0x36')]));_0xfcf1e0[_0x2478('0x35')]=_0xfcf1e0[_0x2478('0x35')][_0x2478('0x37')]?_0xfcf1e0[_0x2478('0x35')]:_0x489e9a[_0x2478('0x31')];if(!_0x108055['query']['hasOwnProperty'](_0x2478('0x38'))){_0xfcf1e0['limit']=qs['limit'](_0x108055[_0x2478('0x32')][_0x2478('0x1d')]);_0xfcf1e0['offset']=qs[_0x2478('0x1f')](_0x108055[_0x2478('0x32')]['offset']);}_0xfcf1e0['order']=qs[_0x2478('0x39')](_0x108055[_0x2478('0x32')]['sort']);_0xfcf1e0[_0x2478('0x3a')]=qs[_0x2478('0x3b')](_['pick'](_0x108055['query'],_0x489e9a[_0x2478('0x3b')]),_0x4dc8eb);if(_0x108055[_0x2478('0x32')][_0x2478('0x3c')]){_0xfcf1e0['where']=_[_0x2478('0x3d')](_0xfcf1e0[_0x2478('0x3a')],{'$or':_[_0x2478('0x2c')](_0x4dc8eb,function(_0x4f48ec){if(_0x4f48ec[_0x2478('0x30')]!==_0x2478('0x3e')){var _0x81e6eb={};_0x81e6eb[_0x4f48ec[_0x2478('0x29')]]={'$like':'%'+_0x108055[_0x2478('0x32')][_0x2478('0x3c')]+'%'};return _0x81e6eb;}})});}_0xfcf1e0=_['merge']({},_0xfcf1e0,_0x108055['options']);var _0x34e02e={'where':_0xfcf1e0[_0x2478('0x3a')]};return db[_0x2478('0x2d')][_0x2478('0x1e')](_0x34e02e)[_0x2478('0x24')](function(_0x510687){_0x39b8dd['count']=_0x510687;if(_0x108055[_0x2478('0x32')]['includeAll']){_0xfcf1e0[_0x2478('0x3f')]=[{'all':!![]}];}return db[_0x2478('0x2d')][_0x2478('0x40')](_0xfcf1e0);})['then'](function(_0x410956){_0x39b8dd['rows']=_0x410956;return _0x39b8dd;})['then'](respondWithFilteredResult(_0x5cb4c6,_0xfcf1e0))[_0x2478('0x41')](handleError(_0x5cb4c6,null));};exports[_0x2478('0x42')]=function(_0x157c43,_0x366370){var _0x3a63ce={'raw':![],'where':{'id':_0x157c43[_0x2478('0x43')]['id']}},_0x35a266={};_0x35a266[_0x2478('0x31')]=_[_0x2478('0x33')](db[_0x2478('0x2d')][_0x2478('0x2e')]);_0x35a266['query']=_[_0x2478('0x33')](_0x157c43[_0x2478('0x32')]);_0x35a266[_0x2478('0x3b')]=_[_0x2478('0x34')](_0x35a266[_0x2478('0x31')],_0x35a266['query']);_0x3a63ce[_0x2478('0x35')]=_[_0x2478('0x34')](_0x35a266[_0x2478('0x31')],qs[_0x2478('0x36')](_0x157c43[_0x2478('0x32')][_0x2478('0x36')]));_0x3a63ce[_0x2478('0x35')]=_0x3a63ce['attributes'][_0x2478('0x37')]?_0x3a63ce[_0x2478('0x35')]:_0x35a266[_0x2478('0x31')];if(_0x157c43['query'][_0x2478('0x44')]){_0x3a63ce[_0x2478('0x3f')]=[{'all':!![]}];}_0x3a63ce=_[_0x2478('0x3d')]({},_0x3a63ce,_0x157c43[_0x2478('0x45')]);return db[_0x2478('0x2d')][_0x2478('0x46')](_0x3a63ce)[_0x2478('0x24')](handleEntityNotFound(_0x366370,null))[_0x2478('0x24')](respondWithResult(_0x366370,null))[_0x2478('0x41')](handleError(_0x366370,null));};exports['create']=function(_0x1cf228,_0x5f334b){return db['ZohoAccount'][_0x2478('0x47')](_0x1cf228[_0x2478('0x48')],{})[_0x2478('0x24')](respondWithResult(_0x5f334b,0xc9))[_0x2478('0x41')](handleError(_0x5f334b,null));};exports[_0x2478('0x49')]=function(_0xc82cd6,_0x1f1231){if(_0xc82cd6[_0x2478('0x48')]['id']){delete _0xc82cd6[_0x2478('0x48')]['id'];}return db['ZohoAccount'][_0x2478('0x46')]({'where':{'id':_0xc82cd6[_0x2478('0x43')]['id']}})['then'](handleEntityNotFound(_0x1f1231,null))['then'](saveUpdates(_0xc82cd6[_0x2478('0x48')],null))[_0x2478('0x24')](respondWithResult(_0x1f1231,null))[_0x2478('0x41')](handleError(_0x1f1231,null));};exports[_0x2478('0x25')]=function(_0x2149cb,_0x2c46bb){return db[_0x2478('0x2d')][_0x2478('0x46')]({'where':{'id':_0x2149cb[_0x2478('0x43')]['id']}})[_0x2478('0x24')](handleEntityNotFound(_0x2c46bb,null))[_0x2478('0x24')](removeEntity(_0x2c46bb,null))['catch'](handleError(_0x2c46bb,null));};exports[_0x2478('0x4a')]=function(_0x1b054c,_0x1afd9c,_0x3d81d7){var _0x2f57eb={};var _0x5c06c8={};var _0x14e7c6;var _0x19ea0c;return db[_0x2478('0x2d')][_0x2478('0x4b')]({'where':{'id':_0x1b054c[_0x2478('0x43')]['id']}})['then'](handleEntityNotFound(_0x1afd9c,null))['then'](function(_0x5d44e0){if(_0x5d44e0){_0x14e7c6=_0x5d44e0;_0x5c06c8[_0x2478('0x31')]=_[_0x2478('0x33')](db['ZohoConfiguration'][_0x2478('0x2e')]);_0x5c06c8[_0x2478('0x32')]=_[_0x2478('0x33')](_0x1b054c['query']);_0x5c06c8['filters']=_[_0x2478('0x34')](_0x5c06c8[_0x2478('0x31')],_0x5c06c8[_0x2478('0x32')]);_0x2f57eb[_0x2478('0x35')]=_['intersection'](_0x5c06c8[_0x2478('0x31')],qs['fields'](_0x1b054c[_0x2478('0x32')]['fields']));_0x2f57eb[_0x2478('0x35')]=_0x2f57eb[_0x2478('0x35')][_0x2478('0x37')]?_0x2f57eb['attributes']:_0x5c06c8[_0x2478('0x31')];_0x2f57eb['order']=qs['sort'](_0x1b054c[_0x2478('0x32')]['sort']);_0x2f57eb[_0x2478('0x3a')]=qs[_0x2478('0x3b')](_[_0x2478('0x4c')](_0x1b054c[_0x2478('0x32')],_0x5c06c8[_0x2478('0x3b')]));if(_0x1b054c['query']['filter']){_0x2f57eb[_0x2478('0x3a')]=_['merge'](_0x2f57eb[_0x2478('0x3a')],{'$or':_['map'](_0x2f57eb['attributes'],function(_0x4ab341){var _0x5bf7c4={};_0x5bf7c4[_0x4ab341]={'$like':'%'+_0x1b054c['query']['filter']+'%'};return _0x5bf7c4;})});}_0x2f57eb=_['merge']({},_0x2f57eb,_0x1b054c[_0x2478('0x45')]);return _0x14e7c6[_0x2478('0x4a')](_0x2f57eb);}})['then'](function(_0x4b5132){if(_0x4b5132){_0x19ea0c=_0x4b5132['length'];if(!_0x1b054c[_0x2478('0x32')]['hasOwnProperty']('nolimit')){_0x2f57eb['limit']=qs['limit'](_0x1b054c[_0x2478('0x32')]['limit']);_0x2f57eb[_0x2478('0x1f')]=qs[_0x2478('0x1f')](_0x1b054c[_0x2478('0x32')][_0x2478('0x1f')]);}return _0x14e7c6[_0x2478('0x4a')](_0x2f57eb);}})[_0x2478('0x24')](function(_0x38c65e){if(_0x38c65e){return _0x38c65e?{'count':_0x19ea0c,'rows':_0x38c65e}:null;}})[_0x2478('0x24')](respondWithResult(_0x1afd9c,null))[_0x2478('0x41')](handleError(_0x1afd9c,null));};exports[_0x2478('0x4d')]=function(_0xabd615,_0x35c293,_0x2e6323){if(_0xabd615[_0x2478('0x48')]['id']){delete _0xabd615[_0x2478('0x48')]['id'];}return db[_0x2478('0x2d')][_0x2478('0x4b')]({'where':{'id':_0xabd615[_0x2478('0x43')]['id']}})['then'](handleEntityNotFound(_0x35c293,null))[_0x2478('0x24')](function(_0x36099d){if(_0x36099d){_0xabd615['body'][_0x2478('0x4e')]=_0x36099d['id'];_0xabd615[_0x2478('0x48')][_0x2478('0x4f')]=integrations[_0x2478('0x50')](_0xabd615[_0x2478('0x48')][_0x2478('0x51')],_0xabd615[_0x2478('0x48')]['type']);_0xabd615['body'][_0x2478('0x52')]=integrations['getDescriptions'](_0xabd615[_0x2478('0x48')][_0x2478('0x51')],_0xabd615['body']['type']);return db[_0x2478('0x53')][_0x2478('0x47')](_0xabd615[_0x2478('0x48')],{'include':[{'model':db[_0x2478('0x54')],'as':_0x2478('0x4f')},{'model':db[_0x2478('0x54')],'as':'Descriptions'}]});}return null;})[_0x2478('0x24')](respondWithResult(_0x35c293,null))['catch'](handleError(_0x35c293,null));};function getAccessToken(_0x298500){return new Promise(function(_0x36799e,_0x148b8e){var _0x38a9f7;switch(_0x298500[_0x2478('0x55')]){case'US':_0x38a9f7=_0x2478('0x56');break;case'AU':_0x38a9f7=_0x2478('0x57');break;case'EU':_0x38a9f7=_0x2478('0x58');break;case'IN':_0x38a9f7='https://accounts.zoho.in';break;case'CN':_0x38a9f7=_0x2478('0x59');break;default:_0x38a9f7=_0x2478('0x58');break;}var _0xf168ab={'method':_0x2478('0x5a'),'uri':_0x38a9f7+_0x2478('0x5b'),'qs':{'refresh_token':_0x298500[_0x2478('0x5c')],'client_id':_0x298500[_0x2478('0x5d')],'client_secret':_0x298500[_0x2478('0x5e')],'grant_type':_0x2478('0x5f')},'json':!![]};return rp(_0xf168ab)[_0x2478('0x24')](function(_0x2b12ab){if(_0x2b12ab[_0x2478('0x60')]){_0x36799e(_0x2b12ab[_0x2478('0x60')]);}else{_0x148b8e('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x2478('0x41')](function(_0x23302a){_0x148b8e(_0x23302a);});});}exports['getFields']=function(_0x1fda86,_0x5c0032,_0x4d0922){var _0x32147d,_0x229344,_0x5e402e,_0x465f46,_0x1b6bae;return db[_0x2478('0x2d')][_0x2478('0x4b')]({'where':{'id':_0x1fda86['params']['id']},'attributes':['id','host',_0x2478('0x55'),_0x2478('0x5d'),_0x2478('0x5e'),_0x2478('0x61'),'code','refreshToken']})[_0x2478('0x24')](handleEntityNotFound(_0x5c0032,null))['then'](function(_0x3d0e4e){_0x1b6bae=_0x3d0e4e;_0x32147d=_0x1b6bae[_0x2478('0x62')];_0x229344=_0x32147d===_0x2478('0x63')?'eu':_0x2478('0x64');_0x5e402e=_0x1b6bae[_0x2478('0x61')];var _0x298f39=_0x5e402e[_0x2478('0x65')](-0x1);if(_0x298f39==='/'||_0x298f39==='\x5c'||_0x298f39===':'){_0x5e402e=_0x5e402e[_0x2478('0x66')](0x0,_0x5e402e['lastIndexOf'](_0x298f39));}if(!_0x1b6bae[_0x2478('0x5c')]){throw new Error(_0x2478('0x67'));}return getAccessToken(_0x1b6bae);})[_0x2478('0x24')](function(_0x35520b){if(_0x35520b){return rp({'method':_0x2478('0x68'),'uri':util[_0x2478('0x69')](_0x2478('0x6a'),_0x229344),'qs':{'module':_0x2478('0x6b')},'headers':{'Authorization':_0x2478('0x6c')+_0x35520b},'json':!![]});}})['then'](function(_0x248782){if(_0x248782){if(_0x248782[_0x2478('0x6d')]&&_0x248782[_0x2478('0x6d')][_0x2478('0x27')]){throw new Error(_0x248782['response']['error'][_0x2478('0x6e')]);}var _0x4403b9=[];var _0x12444a=[];var _0x25bd04=['Owner','Subject',_0x2478('0x6f'),_0x2478('0x70'),_0x2478('0x71'),'Call_Result','Call_Start_Time',_0x2478('0x72')];_0x12444a=_[_0x2478('0x73')](_0x248782[_0x2478('0x36')],function(_0x4d75f8){return _0x25bd04['includes'](_0x4d75f8['api_name']);});for(var _0x3c5fd6=0x0;_0x3c5fd6<_0x12444a[_0x2478('0x37')];_0x3c5fd6++){if(_0x12444a[_0x3c5fd6]['system_mandatory']===![]){_0x4403b9[_0x2478('0x74')]({'id':_0x12444a[_0x3c5fd6]['id'],'name':_0x12444a[_0x3c5fd6][_0x2478('0x75')],'custom':_0x12444a[_0x3c5fd6][_0x2478('0x76')],'options':_0x12444a[_0x3c5fd6][_0x2478('0x77')]==='picklist'&&_0x12444a[_0x3c5fd6][_0x2478('0x78')][_0x2478('0x37')]>-0x1?_['map'](_0x12444a[_0x3c5fd6][_0x2478('0x78')],function(_0x25d47a){return{'name':_0x25d47a,'value':_0x25d47a};}):[]});}}return{'count':_0x4403b9[_0x2478('0x37')],'rows':_0x4403b9};}else{return{'count':0x0,'rows':[]};}})[_0x2478('0x24')](respondWithResult(_0x5c0032,null))[_0x2478('0x41')](function(_0xafc38f){var _0x31429b=_0x1fda86[_0x2478('0x32')][_0x2478('0x79')]?0x1f4:_0xafc38f[_0x2478('0x7a')]||0x1f4;logger[_0x2478('0x27')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x31429b,JSON[_0x2478('0x7b')](_0xafc38f));delete _0xafc38f[_0x2478('0x29')];if(_0x31429b===0x191){_0x31429b=0x190;}_0x5c0032[_0x2478('0x19')](_0x31429b)[_0x2478('0x2a')](_0x1fda86[_0x2478('0x32')][_0x2478('0x79')]?{'message':_0x2478('0x7c'),'statusCode':_0xafc38f[_0x2478('0x7a')]}:_0xafc38f);});};