95d9eaf4b7c8a39913db18bc7008f45ee8580877
[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 _0xcef2=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','rows','catch','show','params','include','find','create','body','destroy','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','findOne','host','serverUrl','code','refreshToken','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','data_type','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','index','map','ZohoAccount','rawAttributes','fieldName','key','model','query'];(function(_0x218c0c,_0x2b21e3){var _0xf0347d=function(_0xb3b51c){while(--_0xb3b51c){_0x218c0c['push'](_0x218c0c['shift']());}};_0xf0347d(++_0x2b21e3);}(_0xcef2,0x153));var _0x2cef=function(_0x59bee2,_0xab2f75){_0x59bee2=_0x59bee2-0x0;var _0x445c80=_0xcef2[_0x59bee2];return _0x445c80;};'use strict';var emlformat=require(_0x2cef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2cef('0x1'));var jsonpatch=require(_0x2cef('0x2'));var rp=require(_0x2cef('0x3'));var moment=require(_0x2cef('0x4'));var BPromise=require(_0x2cef('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2cef('0x6'));var sox=require(_0x2cef('0x7'));var csv=require(_0x2cef('0x8'));var ejs=require(_0x2cef('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2cef('0xa'));var squel=require('squel');var crypto=require(_0x2cef('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2cef('0xc'));var toCsv=require(_0x2cef('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2cef('0xd'));var authService=require(_0x2cef('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x2cef('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2cef('0x10'))(_0x2cef('0x11'));var utils=require(_0x2cef('0x12'));var config=require(_0x2cef('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2cef('0x14'))['db'];var integrations=require(_0x2cef('0x15'));function respondWithStatusCode(_0x5b8c9e,_0x3aaee6){_0x3aaee6=_0x3aaee6||0xcc;return function(_0x158c43){if(_0x158c43){return _0x5b8c9e[_0x2cef('0x16')](_0x3aaee6);}return _0x5b8c9e[_0x2cef('0x17')](_0x3aaee6)[_0x2cef('0x18')]();};}function respondWithResult(_0x25b9e3,_0x50ce26){_0x50ce26=_0x50ce26||0xc8;return function(_0x29ea6b){if(_0x29ea6b){return _0x25b9e3[_0x2cef('0x17')](_0x50ce26)[_0x2cef('0x19')](_0x29ea6b);}};}function respondWithFilteredResult(_0x455592,_0x553b3e){return function(_0x3f78d9){if(_0x3f78d9){var _0x46676b=typeof _0x553b3e['offset']===_0x2cef('0x1a')&&typeof _0x553b3e[_0x2cef('0x1b')]===_0x2cef('0x1a');var _0x1d3fe7=_0x3f78d9[_0x2cef('0x1c')];var _0x22dc51=_0x46676b?0x0:_0x553b3e['offset'];var _0x1a4c20=_0x46676b?_0x3f78d9[_0x2cef('0x1c')]:_0x553b3e['offset']+_0x553b3e['limit'];var _0x5bb595;if(_0x1a4c20>=_0x1d3fe7){_0x1a4c20=_0x1d3fe7;_0x5bb595=0xc8;}else{_0x5bb595=0xce;}_0x455592['status'](_0x5bb595);return _0x455592[_0x2cef('0x1d')](_0x2cef('0x1e'),_0x22dc51+'-'+_0x1a4c20+'/'+_0x1d3fe7)[_0x2cef('0x19')](_0x3f78d9);}return null;};}function patchUpdates(_0x1442c4){return function(_0x1ed28f){try{jsonpatch[_0x2cef('0x1f')](_0x1ed28f,_0x1442c4,!![]);}catch(_0x30c288){return BPromise['reject'](_0x30c288);}return _0x1ed28f[_0x2cef('0x20')]();};}function saveUpdates(_0x2e5c6a,_0x11d596){return function(_0x2bf26f){if(_0x2bf26f){return _0x2bf26f[_0x2cef('0x21')](_0x2e5c6a)[_0x2cef('0x22')](function(_0xf214f0){return _0xf214f0;});}return null;};}function removeEntity(_0x2f51c1,_0xcb020c){return function(_0x55ff5c){if(_0x55ff5c){return _0x55ff5c['destroy']()['then'](function(){_0x2f51c1[_0x2cef('0x17')](0xcc)[_0x2cef('0x18')]();});}};}function handleEntityNotFound(_0x2c43dd,_0x4ff8b4){return function(_0x4ea28e){if(!_0x4ea28e){_0x2c43dd[_0x2cef('0x16')](0x194);}return _0x4ea28e;};}function handleError(_0x4068e9,_0x2f6a25){_0x2f6a25=_0x2f6a25||0x1f4;return function(_0x226b9e){logger[_0x2cef('0x23')](_0x226b9e['stack']);if(_0x226b9e['name']){delete _0x226b9e[_0x2cef('0x24')];}_0x4068e9['status'](_0x2f6a25)['send'](_0x226b9e);};}exports[_0x2cef('0x25')]=function(_0xab4949,_0x508227){var _0x482099={},_0x2f67d4={},_0x20020d={'count':0x0,'rows':[]};var _0x4f90ec=_[_0x2cef('0x26')](db[_0x2cef('0x27')][_0x2cef('0x28')],function(_0x5ee873){return{'name':_0x5ee873[_0x2cef('0x29')],'type':_0x5ee873['type'][_0x2cef('0x2a')]};});_0x2f67d4[_0x2cef('0x2b')]=_[_0x2cef('0x26')](_0x4f90ec,_0x2cef('0x24'));_0x2f67d4[_0x2cef('0x2c')]=_[_0x2cef('0x2d')](_0xab4949['query']);_0x2f67d4[_0x2cef('0x2e')]=_[_0x2cef('0x2f')](_0x2f67d4[_0x2cef('0x2b')],_0x2f67d4['query']);_0x482099[_0x2cef('0x30')]=_[_0x2cef('0x2f')](_0x2f67d4['model'],qs[_0x2cef('0x31')](_0xab4949['query'][_0x2cef('0x31')]));_0x482099[_0x2cef('0x30')]=_0x482099[_0x2cef('0x30')][_0x2cef('0x32')]?_0x482099[_0x2cef('0x30')]:_0x2f67d4[_0x2cef('0x2b')];if(!_0xab4949[_0x2cef('0x2c')][_0x2cef('0x33')](_0x2cef('0x34'))){_0x482099[_0x2cef('0x1b')]=qs['limit'](_0xab4949[_0x2cef('0x2c')][_0x2cef('0x1b')]);_0x482099[_0x2cef('0x35')]=qs[_0x2cef('0x35')](_0xab4949[_0x2cef('0x2c')][_0x2cef('0x35')]);}_0x482099[_0x2cef('0x36')]=qs[_0x2cef('0x37')](_0xab4949['query'][_0x2cef('0x37')]);_0x482099[_0x2cef('0x38')]=qs[_0x2cef('0x2e')](_[_0x2cef('0x39')](_0xab4949['query'],_0x2f67d4['filters']),_0x4f90ec);if(_0xab4949[_0x2cef('0x2c')]['filter']){_0x482099[_0x2cef('0x38')]=_[_0x2cef('0x3a')](_0x482099[_0x2cef('0x38')],{'$or':_[_0x2cef('0x26')](_0x4f90ec,function(_0x5f503c){if(_0x5f503c[_0x2cef('0x3b')]!==_0x2cef('0x3c')){var _0x57cb4a={};_0x57cb4a[_0x5f503c[_0x2cef('0x24')]]={'$like':'%'+_0xab4949[_0x2cef('0x2c')][_0x2cef('0x3d')]+'%'};return _0x57cb4a;}})});}_0x482099=_['merge']({},_0x482099,_0xab4949[_0x2cef('0x3e')]);var _0x3df015={'where':_0x482099['where']};return db[_0x2cef('0x27')][_0x2cef('0x1c')](_0x3df015)[_0x2cef('0x22')](function(_0x2f8cd4){_0x20020d[_0x2cef('0x1c')]=_0x2f8cd4;if(_0xab4949[_0x2cef('0x2c')][_0x2cef('0x3f')]){_0x482099['include']=[{'all':!![]}];}return db[_0x2cef('0x27')]['findAll'](_0x482099);})[_0x2cef('0x22')](function(_0x34fcb4){_0x20020d[_0x2cef('0x40')]=_0x34fcb4;return _0x20020d;})[_0x2cef('0x22')](respondWithFilteredResult(_0x508227,_0x482099))[_0x2cef('0x41')](handleError(_0x508227,null));};exports[_0x2cef('0x42')]=function(_0x28679b,_0x1a50ad){var _0x26c620={'raw':![],'where':{'id':_0x28679b[_0x2cef('0x43')]['id']}},_0x7b794c={};_0x7b794c[_0x2cef('0x2b')]=_[_0x2cef('0x2d')](db[_0x2cef('0x27')][_0x2cef('0x28')]);_0x7b794c['query']=_[_0x2cef('0x2d')](_0x28679b[_0x2cef('0x2c')]);_0x7b794c[_0x2cef('0x2e')]=_[_0x2cef('0x2f')](_0x7b794c[_0x2cef('0x2b')],_0x7b794c[_0x2cef('0x2c')]);_0x26c620[_0x2cef('0x30')]=_[_0x2cef('0x2f')](_0x7b794c[_0x2cef('0x2b')],qs[_0x2cef('0x31')](_0x28679b[_0x2cef('0x2c')][_0x2cef('0x31')]));_0x26c620[_0x2cef('0x30')]=_0x26c620[_0x2cef('0x30')][_0x2cef('0x32')]?_0x26c620[_0x2cef('0x30')]:_0x7b794c[_0x2cef('0x2b')];if(_0x28679b[_0x2cef('0x2c')][_0x2cef('0x3f')]){_0x26c620[_0x2cef('0x44')]=[{'all':!![]}];}_0x26c620=_[_0x2cef('0x3a')]({},_0x26c620,_0x28679b['options']);return db[_0x2cef('0x27')][_0x2cef('0x45')](_0x26c620)[_0x2cef('0x22')](handleEntityNotFound(_0x1a50ad,null))[_0x2cef('0x22')](respondWithResult(_0x1a50ad,null))[_0x2cef('0x41')](handleError(_0x1a50ad,null));};exports[_0x2cef('0x46')]=function(_0x121456,_0x1417bb){return db[_0x2cef('0x27')][_0x2cef('0x46')](_0x121456['body'],{})[_0x2cef('0x22')](respondWithResult(_0x1417bb,0xc9))[_0x2cef('0x41')](handleError(_0x1417bb,null));};exports['update']=function(_0x33082b,_0x40164c){if(_0x33082b[_0x2cef('0x47')]['id']){delete _0x33082b['body']['id'];}return db[_0x2cef('0x27')][_0x2cef('0x45')]({'where':{'id':_0x33082b[_0x2cef('0x43')]['id']}})['then'](handleEntityNotFound(_0x40164c,null))['then'](saveUpdates(_0x33082b[_0x2cef('0x47')],null))[_0x2cef('0x22')](respondWithResult(_0x40164c,null))[_0x2cef('0x41')](handleError(_0x40164c,null));};exports[_0x2cef('0x48')]=function(_0x3df1eb,_0x32621b){return db['ZohoAccount'][_0x2cef('0x45')]({'where':{'id':_0x3df1eb[_0x2cef('0x43')]['id']}})[_0x2cef('0x22')](handleEntityNotFound(_0x32621b,null))[_0x2cef('0x22')](removeEntity(_0x32621b,null))['catch'](handleError(_0x32621b,null));};exports['getConfigurations']=function(_0x2b2fe7,_0x2cbd1e,_0x53b1eb){var _0x138213={};var _0x100b13={};var _0x343e0c;var _0x57c737;return db[_0x2cef('0x27')]['findOne']({'where':{'id':_0x2b2fe7['params']['id']}})[_0x2cef('0x22')](handleEntityNotFound(_0x2cbd1e,null))['then'](function(_0x42aa0c){if(_0x42aa0c){_0x343e0c=_0x42aa0c;_0x100b13[_0x2cef('0x2b')]=_[_0x2cef('0x2d')](db['ZohoConfiguration'][_0x2cef('0x28')]);_0x100b13[_0x2cef('0x2c')]=_[_0x2cef('0x2d')](_0x2b2fe7[_0x2cef('0x2c')]);_0x100b13[_0x2cef('0x2e')]=_['intersection'](_0x100b13['model'],_0x100b13['query']);_0x138213['attributes']=_[_0x2cef('0x2f')](_0x100b13[_0x2cef('0x2b')],qs[_0x2cef('0x31')](_0x2b2fe7['query']['fields']));_0x138213[_0x2cef('0x30')]=_0x138213[_0x2cef('0x30')]['length']?_0x138213[_0x2cef('0x30')]:_0x100b13[_0x2cef('0x2b')];_0x138213['order']=qs['sort'](_0x2b2fe7[_0x2cef('0x2c')]['sort']);_0x138213[_0x2cef('0x38')]=qs[_0x2cef('0x2e')](_[_0x2cef('0x39')](_0x2b2fe7[_0x2cef('0x2c')],_0x100b13[_0x2cef('0x2e')]));if(_0x2b2fe7['query'][_0x2cef('0x3d')]){_0x138213[_0x2cef('0x38')]=_['merge'](_0x138213['where'],{'$or':_['map'](_0x138213[_0x2cef('0x30')],function(_0x40922a){var _0x2305bf={};_0x2305bf[_0x40922a]={'$like':'%'+_0x2b2fe7[_0x2cef('0x2c')][_0x2cef('0x3d')]+'%'};return _0x2305bf;})});}_0x138213=_[_0x2cef('0x3a')]({},_0x138213,_0x2b2fe7[_0x2cef('0x3e')]);return _0x343e0c[_0x2cef('0x49')](_0x138213);}})[_0x2cef('0x22')](function(_0x1f2d44){if(_0x1f2d44){_0x57c737=_0x1f2d44['length'];if(!_0x2b2fe7[_0x2cef('0x2c')][_0x2cef('0x33')](_0x2cef('0x34'))){_0x138213[_0x2cef('0x1b')]=qs[_0x2cef('0x1b')](_0x2b2fe7[_0x2cef('0x2c')][_0x2cef('0x1b')]);_0x138213['offset']=qs[_0x2cef('0x35')](_0x2b2fe7[_0x2cef('0x2c')][_0x2cef('0x35')]);}return _0x343e0c['getConfigurations'](_0x138213);}})['then'](function(_0x1d87c9){if(_0x1d87c9){return _0x1d87c9?{'count':_0x57c737,'rows':_0x1d87c9}:null;}})['then'](respondWithResult(_0x2cbd1e,null))[_0x2cef('0x41')](handleError(_0x2cbd1e,null));};exports[_0x2cef('0x4a')]=function(_0x4a6e15,_0x2fb66f,_0x2bb286){if(_0x4a6e15['body']['id']){delete _0x4a6e15[_0x2cef('0x47')]['id'];}return db[_0x2cef('0x27')]['findOne']({'where':{'id':_0x4a6e15[_0x2cef('0x43')]['id']}})[_0x2cef('0x22')](handleEntityNotFound(_0x2fb66f,null))['then'](function(_0x1aa5d2){if(_0x1aa5d2){_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x4b')]=_0x1aa5d2['id'];_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x4c')]=integrations[_0x2cef('0x4d')](_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x4e')],_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x3b')]);_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x4f')]=integrations['getDescriptions'](_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x4e')],_0x4a6e15[_0x2cef('0x47')][_0x2cef('0x3b')]);return db[_0x2cef('0x50')][_0x2cef('0x46')](_0x4a6e15[_0x2cef('0x47')],{'include':[{'model':db[_0x2cef('0x51')],'as':_0x2cef('0x4c')},{'model':db['ZohoField'],'as':_0x2cef('0x4f')}]});}return null;})[_0x2cef('0x22')](respondWithResult(_0x2fb66f,null))[_0x2cef('0x41')](handleError(_0x2fb66f,null));};function getAccessToken(_0x3b5837){return new Promise(function(_0x442adf,_0x1c1d12){var _0x5c86fe;switch(_0x3b5837[_0x2cef('0x52')]){case'US':_0x5c86fe=_0x2cef('0x53');break;case'AU':_0x5c86fe=_0x2cef('0x54');break;case'EU':_0x5c86fe='https://accounts.zoho.eu';break;case'IN':_0x5c86fe=_0x2cef('0x55');break;case'CN':_0x5c86fe=_0x2cef('0x56');break;default:_0x5c86fe=_0x2cef('0x57');break;}var _0x1ff983={'method':'POST','uri':_0x5c86fe+_0x2cef('0x58'),'qs':{'refresh_token':_0x3b5837['refreshToken'],'client_id':_0x3b5837[_0x2cef('0x59')],'client_secret':_0x3b5837[_0x2cef('0x5a')],'grant_type':_0x2cef('0x5b')},'json':!![]};return rp(_0x1ff983)[_0x2cef('0x22')](function(_0x2a1bb3){if(_0x2a1bb3[_0x2cef('0x5c')]){_0x442adf(_0x2a1bb3[_0x2cef('0x5c')]);}else{_0x1c1d12(_0x2cef('0x5d'));}})['catch'](function(_0x17aec7){_0x1c1d12(_0x17aec7);});});}exports[_0x2cef('0x5e')]=function(_0x37ad8d,_0x1ce97a,_0x1a03ae){var _0x4e2b0e,_0x31c751,_0x8d5dd9,_0x36446e,_0x17852b;return db[_0x2cef('0x27')][_0x2cef('0x5f')]({'where':{'id':_0x37ad8d['params']['id']},'attributes':['id',_0x2cef('0x60'),_0x2cef('0x52'),_0x2cef('0x59'),_0x2cef('0x5a'),_0x2cef('0x61'),_0x2cef('0x62'),_0x2cef('0x63')]})[_0x2cef('0x22')](handleEntityNotFound(_0x1ce97a,null))['then'](function(_0x453a79){_0x17852b=_0x453a79;_0x4e2b0e=_0x17852b[_0x2cef('0x60')];_0x31c751=_0x4e2b0e==='zoho.eu'?'eu':'com';_0x8d5dd9=_0x17852b[_0x2cef('0x61')];var _0x3328d8=_0x8d5dd9[_0x2cef('0x64')](-0x1);if(_0x3328d8==='/'||_0x3328d8==='\x5c'||_0x3328d8===':'){_0x8d5dd9=_0x8d5dd9[_0x2cef('0x65')](0x0,_0x8d5dd9[_0x2cef('0x66')](_0x3328d8));}if(!_0x17852b[_0x2cef('0x63')]){throw new Error(_0x2cef('0x67'));}return getAccessToken(_0x17852b);})['then'](function(_0x398238){if(_0x398238){return rp({'method':'GET','uri':util['format'](_0x2cef('0x68'),_0x31c751),'qs':{'module':_0x2cef('0x69')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x398238},'json':!![]});}})[_0x2cef('0x22')](function(_0x7b5a73){if(_0x7b5a73){if(_0x7b5a73[_0x2cef('0x6a')]&&_0x7b5a73['response'][_0x2cef('0x23')]){throw new Error(_0x7b5a73[_0x2cef('0x6a')][_0x2cef('0x23')][_0x2cef('0x6b')]);}var _0x30d954=[];var _0x1d6bb1=[];var _0x413906=[_0x2cef('0x6c'),_0x2cef('0x6d'),_0x2cef('0x6e'),_0x2cef('0x6f'),_0x2cef('0x70'),_0x2cef('0x71'),_0x2cef('0x72'),_0x2cef('0x73')];_0x1d6bb1=_[_0x2cef('0x74')](_0x7b5a73[_0x2cef('0x31')],function(_0x6ddfc0){return _0x413906[_0x2cef('0x75')](_0x6ddfc0[_0x2cef('0x76')]);});for(var _0x5118ed=0x0;_0x5118ed<_0x1d6bb1['length'];_0x5118ed++){if(_0x1d6bb1[_0x5118ed][_0x2cef('0x77')]===![]){_0x30d954['push']({'id':_0x1d6bb1[_0x5118ed]['id'],'name':_0x1d6bb1[_0x5118ed][_0x2cef('0x78')],'custom':_0x1d6bb1[_0x5118ed][_0x2cef('0x79')],'options':_0x1d6bb1[_0x5118ed][_0x2cef('0x7a')]==='picklist'&&_0x1d6bb1[_0x5118ed][_0x2cef('0x7b')][_0x2cef('0x32')]>-0x1?_[_0x2cef('0x26')](_0x1d6bb1[_0x5118ed]['pick_list_values'],function(_0x1d4211){return{'name':_0x1d4211,'value':_0x1d4211};}):[]});}}return{'count':_0x30d954['length'],'rows':_0x30d954};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x1ce97a,null))[_0x2cef('0x41')](function(_0x168b4f){var _0xf28236=_0x37ad8d[_0x2cef('0x2c')][_0x2cef('0x7c')]?0x1f4:_0x168b4f[_0x2cef('0x7d')]||0x1f4;logger['error'](_0x2cef('0x7e'),_0x2cef('0x5e'),_0xf28236,JSON[_0x2cef('0x7f')](_0x168b4f));delete _0x168b4f[_0x2cef('0x24')];if(_0xf28236===0x191){_0xf28236=0x190;}_0x1ce97a[_0x2cef('0x17')](_0xf28236)['send'](_0x37ad8d[_0x2cef('0x2c')][_0x2cef('0x7c')]?{'message':'Wrong\x20credentials','statusCode':_0x168b4f['statusCode']}:_0x168b4f);});};