Built motion from commit ddca4d0d.|2.5.47
[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 _0x8100=['host','zoho.eu','serverUrl','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','error','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','system_mandatory','push','custom_field','picklist','pick_list_values','stringify','test','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','name','send','index','map','ZohoAccount','rawAttributes','fieldName','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','update','getConfigurations','ZohoConfiguration','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','type','getDescriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','code','refreshToken'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x8100,0x199));var _0x0810=function(_0x429d41,_0x38841e){_0x429d41=_0x429d41-0x0;var _0x59efa2=_0x8100[_0x429d41];return _0x59efa2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0810('0x0'));var zipdir=require(_0x0810('0x1'));var jsonpatch=require(_0x0810('0x2'));var rp=require(_0x0810('0x3'));var moment=require('moment');var BPromise=require(_0x0810('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x0810('0x5'));var csv=require(_0x0810('0x6'));var ejs=require(_0x0810('0x7'));var fs=require('fs');var fs_extra=require(_0x0810('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0810('0x9'));var jsforce=require(_0x0810('0xa'));var deskjs=require(_0x0810('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0810('0xc'));var Papa=require(_0x0810('0xd'));var Redis=require('ioredis');var authService=require(_0x0810('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x0810('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0810('0x10'))('api');var utils=require(_0x0810('0x11'));var config=require(_0x0810('0x12'));var licenseUtil=require(_0x0810('0x13'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0810('0x14'));function respondWithStatusCode(_0x3dc20c,_0x4877c0){_0x4877c0=_0x4877c0||0xcc;return function(_0x4b296c){if(_0x4b296c){return _0x3dc20c[_0x0810('0x15')](_0x4877c0);}return _0x3dc20c[_0x0810('0x16')](_0x4877c0)[_0x0810('0x17')]();};}function respondWithResult(_0x454789,_0x556272){_0x556272=_0x556272||0xc8;return function(_0x3376cd){if(_0x3376cd){return _0x454789[_0x0810('0x16')](_0x556272)[_0x0810('0x18')](_0x3376cd);}};}function respondWithFilteredResult(_0x2deaec,_0x189e11){return function(_0x5b5cb4){if(_0x5b5cb4){var _0x4ac4f4=typeof _0x189e11[_0x0810('0x19')]===_0x0810('0x1a')&&typeof _0x189e11[_0x0810('0x1b')]===_0x0810('0x1a');var _0xe472c7=_0x5b5cb4[_0x0810('0x1c')];var _0x5d05dd=_0x4ac4f4?0x0:_0x189e11[_0x0810('0x19')];var _0x15ddff=_0x4ac4f4?_0x5b5cb4['count']:_0x189e11[_0x0810('0x19')]+_0x189e11['limit'];var _0x1e40e1;if(_0x15ddff>=_0xe472c7){_0x15ddff=_0xe472c7;_0x1e40e1=0xc8;}else{_0x1e40e1=0xce;}_0x2deaec[_0x0810('0x16')](_0x1e40e1);return _0x2deaec[_0x0810('0x1d')](_0x0810('0x1e'),_0x5d05dd+'-'+_0x15ddff+'/'+_0xe472c7)[_0x0810('0x18')](_0x5b5cb4);}return null;};}function patchUpdates(_0x14a39f){return function(_0xc48622){try{jsonpatch['apply'](_0xc48622,_0x14a39f,!![]);}catch(_0x56cfb8){return BPromise[_0x0810('0x1f')](_0x56cfb8);}return _0xc48622[_0x0810('0x20')]();};}function saveUpdates(_0x581416,_0xc8b196){return function(_0x139dc7){if(_0x139dc7){return _0x139dc7['update'](_0x581416)[_0x0810('0x21')](function(_0x575bd1){return _0x575bd1;});}return null;};}function removeEntity(_0x17c858,_0x38b059){return function(_0x2c45a9){if(_0x2c45a9){return _0x2c45a9[_0x0810('0x22')]()[_0x0810('0x21')](function(){_0x17c858[_0x0810('0x16')](0xcc)[_0x0810('0x17')]();});}};}function handleEntityNotFound(_0x35d9b9,_0x36a18d){return function(_0xc6fb7f){if(!_0xc6fb7f){_0x35d9b9[_0x0810('0x15')](0x194);}return _0xc6fb7f;};}function handleError(_0x2330a0,_0x46d584){_0x46d584=_0x46d584||0x1f4;return function(_0x1cad5e){logger['error'](_0x1cad5e['stack']);if(_0x1cad5e[_0x0810('0x23')]){delete _0x1cad5e[_0x0810('0x23')];}_0x2330a0['status'](_0x46d584)[_0x0810('0x24')](_0x1cad5e);};}exports[_0x0810('0x25')]=function(_0x10f426,_0x173dad){var _0x42e880={},_0xa86b46={},_0x336021={'count':0x0,'rows':[]};var _0x141eb=_[_0x0810('0x26')](db[_0x0810('0x27')][_0x0810('0x28')],function(_0x54c23b){return{'name':_0x54c23b[_0x0810('0x29')],'type':_0x54c23b['type'][_0x0810('0x2a')]};});_0xa86b46['model']=_[_0x0810('0x26')](_0x141eb,'name');_0xa86b46['query']=_[_0x0810('0x2b')](_0x10f426[_0x0810('0x2c')]);_0xa86b46[_0x0810('0x2d')]=_['intersection'](_0xa86b46['model'],_0xa86b46['query']);_0x42e880['attributes']=_[_0x0810('0x2e')](_0xa86b46[_0x0810('0x2f')],qs[_0x0810('0x30')](_0x10f426[_0x0810('0x2c')][_0x0810('0x30')]));_0x42e880[_0x0810('0x31')]=_0x42e880[_0x0810('0x31')][_0x0810('0x32')]?_0x42e880[_0x0810('0x31')]:_0xa86b46['model'];if(!_0x10f426[_0x0810('0x2c')][_0x0810('0x33')]('nolimit')){_0x42e880[_0x0810('0x1b')]=qs[_0x0810('0x1b')](_0x10f426['query']['limit']);_0x42e880[_0x0810('0x19')]=qs[_0x0810('0x19')](_0x10f426[_0x0810('0x2c')]['offset']);}_0x42e880[_0x0810('0x34')]=qs[_0x0810('0x35')](_0x10f426[_0x0810('0x2c')][_0x0810('0x35')]);_0x42e880[_0x0810('0x36')]=qs['filters'](_[_0x0810('0x37')](_0x10f426[_0x0810('0x2c')],_0xa86b46[_0x0810('0x2d')]),_0x141eb);if(_0x10f426[_0x0810('0x2c')][_0x0810('0x38')]){_0x42e880[_0x0810('0x36')]=_['merge'](_0x42e880[_0x0810('0x36')],{'$or':_[_0x0810('0x26')](_0x141eb,function(_0x4d2055){if(_0x4d2055['type']!==_0x0810('0x39')){var _0x118e17={};_0x118e17[_0x4d2055[_0x0810('0x23')]]={'$like':'%'+_0x10f426[_0x0810('0x2c')]['filter']+'%'};return _0x118e17;}})});}_0x42e880=_[_0x0810('0x3a')]({},_0x42e880,_0x10f426[_0x0810('0x3b')]);var _0x5d6e27={'where':_0x42e880['where']};return db['ZohoAccount'][_0x0810('0x1c')](_0x5d6e27)[_0x0810('0x21')](function(_0xa794db){_0x336021[_0x0810('0x1c')]=_0xa794db;if(_0x10f426[_0x0810('0x2c')][_0x0810('0x3c')]){_0x42e880[_0x0810('0x3d')]=[{'all':!![]}];}return db['ZohoAccount'][_0x0810('0x3e')](_0x42e880);})['then'](function(_0x1e32e5){_0x336021['rows']=_0x1e32e5;return _0x336021;})['then'](respondWithFilteredResult(_0x173dad,_0x42e880))[_0x0810('0x3f')](handleError(_0x173dad,null));};exports[_0x0810('0x40')]=function(_0x42b3a3,_0x143489){var _0x53cb13={'raw':![],'where':{'id':_0x42b3a3[_0x0810('0x41')]['id']}},_0x1012c2={};_0x1012c2[_0x0810('0x2f')]=_[_0x0810('0x2b')](db[_0x0810('0x27')][_0x0810('0x28')]);_0x1012c2[_0x0810('0x2c')]=_[_0x0810('0x2b')](_0x42b3a3[_0x0810('0x2c')]);_0x1012c2[_0x0810('0x2d')]=_[_0x0810('0x2e')](_0x1012c2[_0x0810('0x2f')],_0x1012c2[_0x0810('0x2c')]);_0x53cb13[_0x0810('0x31')]=_[_0x0810('0x2e')](_0x1012c2[_0x0810('0x2f')],qs[_0x0810('0x30')](_0x42b3a3[_0x0810('0x2c')]['fields']));_0x53cb13[_0x0810('0x31')]=_0x53cb13[_0x0810('0x31')][_0x0810('0x32')]?_0x53cb13[_0x0810('0x31')]:_0x1012c2[_0x0810('0x2f')];if(_0x42b3a3[_0x0810('0x2c')][_0x0810('0x3c')]){_0x53cb13[_0x0810('0x3d')]=[{'all':!![]}];}_0x53cb13=_[_0x0810('0x3a')]({},_0x53cb13,_0x42b3a3['options']);return db[_0x0810('0x27')][_0x0810('0x42')](_0x53cb13)[_0x0810('0x21')](handleEntityNotFound(_0x143489,null))[_0x0810('0x21')](respondWithResult(_0x143489,null))[_0x0810('0x3f')](handleError(_0x143489,null));};exports['create']=function(_0x3ee366,_0x14bc30){return db[_0x0810('0x27')][_0x0810('0x43')](_0x3ee366[_0x0810('0x44')],{})[_0x0810('0x21')](respondWithResult(_0x14bc30,0xc9))['catch'](handleError(_0x14bc30,null));};exports[_0x0810('0x45')]=function(_0x50e346,_0x133322){if(_0x50e346[_0x0810('0x44')]['id']){delete _0x50e346['body']['id'];}return db[_0x0810('0x27')][_0x0810('0x42')]({'where':{'id':_0x50e346[_0x0810('0x41')]['id']}})[_0x0810('0x21')](handleEntityNotFound(_0x133322,null))[_0x0810('0x21')](saveUpdates(_0x50e346[_0x0810('0x44')],null))[_0x0810('0x21')](respondWithResult(_0x133322,null))['catch'](handleError(_0x133322,null));};exports['destroy']=function(_0x3cda24,_0x3bbc12){return db[_0x0810('0x27')]['find']({'where':{'id':_0x3cda24[_0x0810('0x41')]['id']}})[_0x0810('0x21')](handleEntityNotFound(_0x3bbc12,null))[_0x0810('0x21')](removeEntity(_0x3bbc12,null))['catch'](handleError(_0x3bbc12,null));};exports[_0x0810('0x46')]=function(_0x366eb1,_0x620cb,_0x866060){var _0x7460d0={};var _0x15d89a={};var _0x47b56a;var _0x366d80;return db['ZohoAccount']['findOne']({'where':{'id':_0x366eb1['params']['id']}})[_0x0810('0x21')](handleEntityNotFound(_0x620cb,null))['then'](function(_0x5d0f40){if(_0x5d0f40){_0x47b56a=_0x5d0f40;_0x15d89a[_0x0810('0x2f')]=_[_0x0810('0x2b')](db[_0x0810('0x47')][_0x0810('0x28')]);_0x15d89a[_0x0810('0x2c')]=_[_0x0810('0x2b')](_0x366eb1[_0x0810('0x2c')]);_0x15d89a[_0x0810('0x2d')]=_[_0x0810('0x2e')](_0x15d89a['model'],_0x15d89a[_0x0810('0x2c')]);_0x7460d0[_0x0810('0x31')]=_[_0x0810('0x2e')](_0x15d89a[_0x0810('0x2f')],qs[_0x0810('0x30')](_0x366eb1[_0x0810('0x2c')]['fields']));_0x7460d0[_0x0810('0x31')]=_0x7460d0[_0x0810('0x31')][_0x0810('0x32')]?_0x7460d0[_0x0810('0x31')]:_0x15d89a['model'];_0x7460d0[_0x0810('0x34')]=qs['sort'](_0x366eb1[_0x0810('0x2c')][_0x0810('0x35')]);_0x7460d0[_0x0810('0x36')]=qs[_0x0810('0x2d')](_[_0x0810('0x37')](_0x366eb1[_0x0810('0x2c')],_0x15d89a['filters']));if(_0x366eb1[_0x0810('0x2c')][_0x0810('0x38')]){_0x7460d0[_0x0810('0x36')]=_['merge'](_0x7460d0[_0x0810('0x36')],{'$or':_[_0x0810('0x26')](_0x7460d0[_0x0810('0x31')],function(_0x5cd0e5){var _0xbd97a4={};_0xbd97a4[_0x5cd0e5]={'$like':'%'+_0x366eb1['query'][_0x0810('0x38')]+'%'};return _0xbd97a4;})});}_0x7460d0=_[_0x0810('0x3a')]({},_0x7460d0,_0x366eb1[_0x0810('0x3b')]);return _0x47b56a[_0x0810('0x46')](_0x7460d0);}})[_0x0810('0x21')](function(_0x12219f){if(_0x12219f){_0x366d80=_0x12219f[_0x0810('0x32')];if(!_0x366eb1[_0x0810('0x2c')]['hasOwnProperty'](_0x0810('0x48'))){_0x7460d0[_0x0810('0x1b')]=qs[_0x0810('0x1b')](_0x366eb1['query'][_0x0810('0x1b')]);_0x7460d0[_0x0810('0x19')]=qs[_0x0810('0x19')](_0x366eb1['query'][_0x0810('0x19')]);}return _0x47b56a['getConfigurations'](_0x7460d0);}})[_0x0810('0x21')](function(_0x5cf684){if(_0x5cf684){return _0x5cf684?{'count':_0x366d80,'rows':_0x5cf684}:null;}})[_0x0810('0x21')](respondWithResult(_0x620cb,null))[_0x0810('0x3f')](handleError(_0x620cb,null));};exports[_0x0810('0x49')]=function(_0x4224d2,_0x4d3bb8,_0x4bac83){if(_0x4224d2[_0x0810('0x44')]['id']){delete _0x4224d2['body']['id'];}return db[_0x0810('0x27')][_0x0810('0x4a')]({'where':{'id':_0x4224d2['params']['id']}})[_0x0810('0x21')](handleEntityNotFound(_0x4d3bb8,null))[_0x0810('0x21')](function(_0x2915fa){if(_0x2915fa){_0x4224d2[_0x0810('0x44')][_0x0810('0x4b')]=_0x2915fa['id'];_0x4224d2[_0x0810('0x44')][_0x0810('0x4c')]=integrations[_0x0810('0x4d')](_0x4224d2['body']['channel'],_0x4224d2[_0x0810('0x44')][_0x0810('0x4e')]);_0x4224d2[_0x0810('0x44')]['Descriptions']=integrations[_0x0810('0x4f')](_0x4224d2[_0x0810('0x44')][_0x0810('0x50')],_0x4224d2[_0x0810('0x44')][_0x0810('0x4e')]);return db['ZohoConfiguration'][_0x0810('0x43')](_0x4224d2['body'],{'include':[{'model':db[_0x0810('0x51')],'as':_0x0810('0x4c')},{'model':db[_0x0810('0x51')],'as':'Descriptions'}]});}return null;})[_0x0810('0x21')](respondWithResult(_0x4d3bb8,null))[_0x0810('0x3f')](handleError(_0x4d3bb8,null));};function getAccessToken(_0x54b40c){return new Promise(function(_0x5e8573,_0x3419e4){var _0x4dc702;switch(_0x54b40c[_0x0810('0x52')]){case'US':_0x4dc702=_0x0810('0x53');break;case'AU':_0x4dc702=_0x0810('0x54');break;case'EU':_0x4dc702='https://accounts.zoho.eu';break;case'IN':_0x4dc702='https://accounts.zoho.in';break;case'CN':_0x4dc702=_0x0810('0x55');break;default:_0x4dc702=_0x0810('0x56');break;}var _0x2fd84b={'method':_0x0810('0x57'),'uri':_0x4dc702+'/oauth/v2/token','qs':{'refresh_token':_0x54b40c['refreshToken'],'client_id':_0x54b40c[_0x0810('0x58')],'client_secret':_0x54b40c['clientSecret'],'grant_type':_0x0810('0x59')},'json':!![]};return rp(_0x2fd84b)[_0x0810('0x21')](function(_0x3deef1){if(_0x3deef1[_0x0810('0x5a')]){_0x5e8573(_0x3deef1['access_token']);}else{_0x3419e4(_0x0810('0x5b'));}})['catch'](function(_0x22c64c){_0x3419e4(_0x22c64c);});});}exports[_0x0810('0x5c')]=function(_0x5895d2,_0x3ff16f,_0x34e20f){var _0x393062,_0xa32766,_0x184bbe,_0x276296,_0x31f0ca;return db[_0x0810('0x27')][_0x0810('0x4a')]({'where':{'id':_0x5895d2[_0x0810('0x41')]['id']},'attributes':['id','host',_0x0810('0x52'),_0x0810('0x58'),'clientSecret','serverUrl',_0x0810('0x5d'),_0x0810('0x5e')]})[_0x0810('0x21')](handleEntityNotFound(_0x3ff16f,null))['then'](function(_0x387d61){_0x31f0ca=_0x387d61;_0x393062=_0x31f0ca[_0x0810('0x5f')];_0xa32766=_0x393062===_0x0810('0x60')?'eu':'com';_0x184bbe=_0x31f0ca[_0x0810('0x61')];var _0x5df21c=_0x184bbe[_0x0810('0x62')](-0x1);if(_0x5df21c==='/'||_0x5df21c==='\x5c'||_0x5df21c===':'){_0x184bbe=_0x184bbe[_0x0810('0x63')](0x0,_0x184bbe[_0x0810('0x64')](_0x5df21c));}if(!_0x31f0ca[_0x0810('0x5e')]){throw new Error(_0x0810('0x65'));}return getAccessToken(_0x31f0ca);})['then'](function(_0x4a4cd4){if(_0x4a4cd4){return rp({'method':_0x0810('0x66'),'uri':util[_0x0810('0x67')](_0x0810('0x68'),_0xa32766),'qs':{'module':_0x0810('0x69')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4a4cd4},'json':!![]});}})[_0x0810('0x21')](function(_0x1696e4){if(_0x1696e4){if(_0x1696e4[_0x0810('0x6a')]&&_0x1696e4['response']['error']){throw new Error(_0x1696e4[_0x0810('0x6a')][_0x0810('0x6b')]['message']);}var _0x45c3e6=[];var _0x251612=[];var _0x42aff2=[_0x0810('0x6c'),_0x0810('0x6d'),_0x0810('0x6e'),_0x0810('0x6f'),_0x0810('0x70'),_0x0810('0x71'),_0x0810('0x72'),_0x0810('0x73')];_0x251612=_[_0x0810('0x74')](_0x1696e4[_0x0810('0x30')],function(_0x2e1ec){return _0x42aff2[_0x0810('0x75')](_0x2e1ec['api_name']);});for(var _0x2faeb5=0x0;_0x2faeb5<_0x251612[_0x0810('0x32')];_0x2faeb5++){if(_0x251612[_0x2faeb5][_0x0810('0x76')]===![]){_0x45c3e6[_0x0810('0x77')]({'id':_0x251612[_0x2faeb5]['id'],'name':_0x251612[_0x2faeb5]['display_label'],'custom':_0x251612[_0x2faeb5][_0x0810('0x78')],'options':_0x251612[_0x2faeb5]['data_type']===_0x0810('0x79')&&_0x251612[_0x2faeb5][_0x0810('0x7a')][_0x0810('0x32')]>-0x1?_[_0x0810('0x26')](_0x251612[_0x2faeb5][_0x0810('0x7a')],function(_0x5762b7){return{'name':_0x5762b7,'value':_0x5762b7};}):[]});}}return{'count':_0x45c3e6[_0x0810('0x32')],'rows':_0x45c3e6};}else{return{'count':0x0,'rows':[]};}})[_0x0810('0x21')](respondWithResult(_0x3ff16f,null))[_0x0810('0x3f')](function(_0x1bc0b8){var _0x19ff64=_0x5895d2['query']['test']?0x1f4:_0x1bc0b8['statusCode']||0x1f4;logger[_0x0810('0x6b')]('getFields,\x20%s,\x20%s,\x20%s',_0x0810('0x5c'),_0x19ff64,JSON[_0x0810('0x7b')](_0x1bc0b8));delete _0x1bc0b8['name'];if(_0x19ff64===0x191){_0x19ff64=0x190;}_0x3ff16f[_0x0810('0x16')](_0x19ff64)[_0x0810('0x24')](_0x5895d2[_0x0810('0x2c')][_0x0810('0x7c')]?{'message':'Wrong\x20credentials','statusCode':_0x1bc0b8[_0x0810('0x7d')]}:_0x1bc0b8);});};