58d588960519a71b5e8b463d59ec8c4fac2e80be
[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 _0x1847=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','ZohoAccount','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','update','findOne','ZohoConfiguration','length','sort','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','getFields','serverUrl','code','refreshToken','host','zoho.eu','com','slice','substring','lastIndexOf','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','message','Owner','Subject','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','api_name','system_mandatory','push','display_label','picklist','pick_list_values','statusCode','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x1e500e,_0x2c9d74){var _0x10dc5e=function(_0x354423){while(--_0x354423){_0x1e500e['push'](_0x1e500e['shift']());}};_0x10dc5e(++_0x2c9d74);}(_0x1847,0x76));var _0x7184=function(_0x4e3ffa,_0x82c4ba){_0x4e3ffa=_0x4e3ffa-0x0;var _0x556d3c=_0x1847[_0x4e3ffa];return _0x556d3c;};'use strict';var emlformat=require(_0x7184('0x0'));var rimraf=require(_0x7184('0x1'));var zipdir=require(_0x7184('0x2'));var jsonpatch=require(_0x7184('0x3'));var rp=require('request-promise');var moment=require(_0x7184('0x4'));var BPromise=require(_0x7184('0x5'));var Mustache=require(_0x7184('0x6'));var util=require(_0x7184('0x7'));var path=require(_0x7184('0x8'));var sox=require(_0x7184('0x9'));var csv=require(_0x7184('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7184('0xb'));var _=require(_0x7184('0xc'));var squel=require(_0x7184('0xd'));var crypto=require(_0x7184('0xe'));var jsforce=require(_0x7184('0xf'));var deskjs=require(_0x7184('0x10'));var toCsv=require(_0x7184('0xa'));var querystring=require(_0x7184('0x11'));var Papa=require(_0x7184('0x12'));var Redis=require('ioredis');var authService=require(_0x7184('0x13'));var qs=require(_0x7184('0x14'));var as=require(_0x7184('0x15'));var hardwareService=require(_0x7184('0x16'));var logger=require(_0x7184('0x17'))(_0x7184('0x18'));var utils=require(_0x7184('0x19'));var config=require(_0x7184('0x1a'));var licenseUtil=require(_0x7184('0x1b'));var db=require(_0x7184('0x1c'))['db'];var integrations=require(_0x7184('0x1d'));function respondWithStatusCode(_0x3891af,_0x4db5bb){_0x4db5bb=_0x4db5bb||0xcc;return function(_0x2c9cb1){if(_0x2c9cb1){return _0x3891af['sendStatus'](_0x4db5bb);}return _0x3891af[_0x7184('0x1e')](_0x4db5bb)[_0x7184('0x1f')]();};}function respondWithResult(_0x1b2390,_0x24c197){_0x24c197=_0x24c197||0xc8;return function(_0x406789){if(_0x406789){return _0x1b2390[_0x7184('0x1e')](_0x24c197)[_0x7184('0x20')](_0x406789);}};}function respondWithFilteredResult(_0x293897,_0x5938c3){return function(_0x3702f7){if(_0x3702f7){var _0x295c5a=typeof _0x5938c3[_0x7184('0x21')]==='undefined'&&typeof _0x5938c3[_0x7184('0x22')]===_0x7184('0x23');var _0x7b61ea=_0x3702f7['count'];var _0x4495ac=_0x295c5a?0x0:_0x5938c3[_0x7184('0x21')];var _0x52ecde=_0x295c5a?_0x3702f7[_0x7184('0x24')]:_0x5938c3['offset']+_0x5938c3[_0x7184('0x22')];var _0x1065e0;if(_0x52ecde>=_0x7b61ea){_0x52ecde=_0x7b61ea;_0x1065e0=0xc8;}else{_0x1065e0=0xce;}_0x293897['status'](_0x1065e0);return _0x293897[_0x7184('0x25')](_0x7184('0x26'),_0x4495ac+'-'+_0x52ecde+'/'+_0x7b61ea)[_0x7184('0x20')](_0x3702f7);}return null;};}function patchUpdates(_0x3e0263){return function(_0x56d835){try{jsonpatch['apply'](_0x56d835,_0x3e0263,!![]);}catch(_0x3cf05d){return BPromise[_0x7184('0x27')](_0x3cf05d);}return _0x56d835[_0x7184('0x28')]();};}function saveUpdates(_0xf05137,_0x262191){return function(_0x4d0139){if(_0x4d0139){return _0x4d0139['update'](_0xf05137)[_0x7184('0x29')](function(_0x173c70){return _0x173c70;});}return null;};}function removeEntity(_0x2826a7,_0x4476cb){return function(_0x14371f){if(_0x14371f){return _0x14371f[_0x7184('0x2a')]()[_0x7184('0x29')](function(){_0x2826a7[_0x7184('0x1e')](0xcc)[_0x7184('0x1f')]();});}};}function handleEntityNotFound(_0x1b1620,_0x1bc7de){return function(_0x22401b){if(!_0x22401b){_0x1b1620[_0x7184('0x2b')](0x194);}return _0x22401b;};}function handleError(_0x31ce6d,_0x246ff7){_0x246ff7=_0x246ff7||0x1f4;return function(_0x2271a4){logger[_0x7184('0x2c')](_0x2271a4[_0x7184('0x2d')]);if(_0x2271a4[_0x7184('0x2e')]){delete _0x2271a4[_0x7184('0x2e')];}_0x31ce6d[_0x7184('0x1e')](_0x246ff7)[_0x7184('0x2f')](_0x2271a4);};}exports[_0x7184('0x30')]=function(_0x4954ef,_0x1cd98f){var _0x37f2ca={},_0x942b44={},_0x257b96={'count':0x0,'rows':[]};var _0x180061=_[_0x7184('0x31')](db[_0x7184('0x32')]['rawAttributes'],function(_0x4c78c1){return{'name':_0x4c78c1['fieldName'],'type':_0x4c78c1[_0x7184('0x33')][_0x7184('0x34')]};});_0x942b44[_0x7184('0x35')]=_[_0x7184('0x31')](_0x180061,'name');_0x942b44['query']=_[_0x7184('0x36')](_0x4954ef[_0x7184('0x37')]);_0x942b44[_0x7184('0x38')]=_[_0x7184('0x39')](_0x942b44[_0x7184('0x35')],_0x942b44[_0x7184('0x37')]);_0x37f2ca[_0x7184('0x3a')]=_[_0x7184('0x39')](_0x942b44[_0x7184('0x35')],qs[_0x7184('0x3b')](_0x4954ef['query'][_0x7184('0x3b')]));_0x37f2ca['attributes']=_0x37f2ca[_0x7184('0x3a')]['length']?_0x37f2ca['attributes']:_0x942b44[_0x7184('0x35')];if(!_0x4954ef[_0x7184('0x37')][_0x7184('0x3c')]('nolimit')){_0x37f2ca[_0x7184('0x22')]=qs[_0x7184('0x22')](_0x4954ef['query']['limit']);_0x37f2ca[_0x7184('0x21')]=qs[_0x7184('0x21')](_0x4954ef[_0x7184('0x37')][_0x7184('0x21')]);}_0x37f2ca[_0x7184('0x3d')]=qs['sort'](_0x4954ef[_0x7184('0x37')]['sort']);_0x37f2ca[_0x7184('0x3e')]=qs['filters'](_[_0x7184('0x3f')](_0x4954ef[_0x7184('0x37')],_0x942b44['filters']),_0x180061);if(_0x4954ef['query'][_0x7184('0x40')]){_0x37f2ca['where']=_[_0x7184('0x41')](_0x37f2ca[_0x7184('0x3e')],{'$or':_[_0x7184('0x31')](_0x180061,function(_0x19022d){if(_0x19022d[_0x7184('0x33')]!=='VIRTUAL'){var _0x1d18c6={};_0x1d18c6[_0x19022d[_0x7184('0x2e')]]={'$like':'%'+_0x4954ef['query'][_0x7184('0x40')]+'%'};return _0x1d18c6;}})});}_0x37f2ca=_[_0x7184('0x41')]({},_0x37f2ca,_0x4954ef[_0x7184('0x42')]);var _0x1a1fe3={'where':_0x37f2ca[_0x7184('0x3e')]};return db[_0x7184('0x32')][_0x7184('0x24')](_0x1a1fe3)[_0x7184('0x29')](function(_0x5b2b70){_0x257b96[_0x7184('0x24')]=_0x5b2b70;if(_0x4954ef[_0x7184('0x37')][_0x7184('0x43')]){_0x37f2ca[_0x7184('0x44')]=[{'all':!![]}];}return db['ZohoAccount'][_0x7184('0x45')](_0x37f2ca);})[_0x7184('0x29')](function(_0x5ea19f){_0x257b96[_0x7184('0x46')]=_0x5ea19f;return _0x257b96;})[_0x7184('0x29')](respondWithFilteredResult(_0x1cd98f,_0x37f2ca))[_0x7184('0x47')](handleError(_0x1cd98f,null));};exports['show']=function(_0x194482,_0x5531d9){var _0x330fdf={'raw':![],'where':{'id':_0x194482[_0x7184('0x48')]['id']}},_0xc29160={};_0xc29160[_0x7184('0x35')]=_['keys'](db[_0x7184('0x32')][_0x7184('0x49')]);_0xc29160['query']=_[_0x7184('0x36')](_0x194482[_0x7184('0x37')]);_0xc29160[_0x7184('0x38')]=_[_0x7184('0x39')](_0xc29160['model'],_0xc29160['query']);_0x330fdf[_0x7184('0x3a')]=_[_0x7184('0x39')](_0xc29160[_0x7184('0x35')],qs[_0x7184('0x3b')](_0x194482[_0x7184('0x37')][_0x7184('0x3b')]));_0x330fdf[_0x7184('0x3a')]=_0x330fdf[_0x7184('0x3a')]['length']?_0x330fdf[_0x7184('0x3a')]:_0xc29160[_0x7184('0x35')];if(_0x194482[_0x7184('0x37')][_0x7184('0x43')]){_0x330fdf[_0x7184('0x44')]=[{'all':!![]}];}_0x330fdf=_[_0x7184('0x41')]({},_0x330fdf,_0x194482[_0x7184('0x42')]);return db[_0x7184('0x32')][_0x7184('0x4a')](_0x330fdf)[_0x7184('0x29')](handleEntityNotFound(_0x5531d9,null))[_0x7184('0x29')](respondWithResult(_0x5531d9,null))[_0x7184('0x47')](handleError(_0x5531d9,null));};exports[_0x7184('0x4b')]=function(_0x48ed89,_0x5e235f){return db[_0x7184('0x32')][_0x7184('0x4b')](_0x48ed89[_0x7184('0x4c')],{})[_0x7184('0x29')](respondWithResult(_0x5e235f,0xc9))[_0x7184('0x47')](handleError(_0x5e235f,null));};exports[_0x7184('0x4d')]=function(_0x27f67c,_0x29dfe4){if(_0x27f67c[_0x7184('0x4c')]['id']){delete _0x27f67c[_0x7184('0x4c')]['id'];}return db['ZohoAccount'][_0x7184('0x4a')]({'where':{'id':_0x27f67c['params']['id']}})[_0x7184('0x29')](handleEntityNotFound(_0x29dfe4,null))['then'](saveUpdates(_0x27f67c[_0x7184('0x4c')],null))[_0x7184('0x29')](respondWithResult(_0x29dfe4,null))[_0x7184('0x47')](handleError(_0x29dfe4,null));};exports['destroy']=function(_0x2b1694,_0x11e921){return db[_0x7184('0x32')][_0x7184('0x4a')]({'where':{'id':_0x2b1694[_0x7184('0x48')]['id']}})[_0x7184('0x29')](handleEntityNotFound(_0x11e921,null))['then'](removeEntity(_0x11e921,null))[_0x7184('0x47')](handleError(_0x11e921,null));};exports['getConfigurations']=function(_0x57a4ba,_0x38550c,_0x45539c){var _0x1177b2={};var _0x135bc8={};var _0x57b972;var _0xfb8d7d;return db[_0x7184('0x32')][_0x7184('0x4e')]({'where':{'id':_0x57a4ba[_0x7184('0x48')]['id']}})[_0x7184('0x29')](handleEntityNotFound(_0x38550c,null))[_0x7184('0x29')](function(_0x12a24b){if(_0x12a24b){_0x57b972=_0x12a24b;_0x135bc8[_0x7184('0x35')]=_[_0x7184('0x36')](db[_0x7184('0x4f')][_0x7184('0x49')]);_0x135bc8[_0x7184('0x37')]=_[_0x7184('0x36')](_0x57a4ba['query']);_0x135bc8[_0x7184('0x38')]=_[_0x7184('0x39')](_0x135bc8[_0x7184('0x35')],_0x135bc8[_0x7184('0x37')]);_0x1177b2[_0x7184('0x3a')]=_[_0x7184('0x39')](_0x135bc8[_0x7184('0x35')],qs[_0x7184('0x3b')](_0x57a4ba['query'][_0x7184('0x3b')]));_0x1177b2['attributes']=_0x1177b2[_0x7184('0x3a')][_0x7184('0x50')]?_0x1177b2['attributes']:_0x135bc8[_0x7184('0x35')];_0x1177b2[_0x7184('0x3d')]=qs[_0x7184('0x51')](_0x57a4ba[_0x7184('0x37')]['sort']);_0x1177b2[_0x7184('0x3e')]=qs[_0x7184('0x38')](_[_0x7184('0x3f')](_0x57a4ba[_0x7184('0x37')],_0x135bc8[_0x7184('0x38')]));if(_0x57a4ba[_0x7184('0x37')][_0x7184('0x40')]){_0x1177b2['where']=_[_0x7184('0x41')](_0x1177b2[_0x7184('0x3e')],{'$or':_[_0x7184('0x31')](_0x1177b2[_0x7184('0x3a')],function(_0x3797ae){var _0x25b08d={};_0x25b08d[_0x3797ae]={'$like':'%'+_0x57a4ba[_0x7184('0x37')]['filter']+'%'};return _0x25b08d;})});}_0x1177b2=_[_0x7184('0x41')]({},_0x1177b2,_0x57a4ba['options']);return _0x57b972[_0x7184('0x52')](_0x1177b2);}})[_0x7184('0x29')](function(_0x55314f){if(_0x55314f){_0xfb8d7d=_0x55314f[_0x7184('0x50')];if(!_0x57a4ba[_0x7184('0x37')]['hasOwnProperty'](_0x7184('0x53'))){_0x1177b2[_0x7184('0x22')]=qs[_0x7184('0x22')](_0x57a4ba[_0x7184('0x37')]['limit']);_0x1177b2[_0x7184('0x21')]=qs[_0x7184('0x21')](_0x57a4ba[_0x7184('0x37')]['offset']);}return _0x57b972[_0x7184('0x52')](_0x1177b2);}})['then'](function(_0x2328bb){if(_0x2328bb){return _0x2328bb?{'count':_0xfb8d7d,'rows':_0x2328bb}:null;}})[_0x7184('0x29')](respondWithResult(_0x38550c,null))[_0x7184('0x47')](handleError(_0x38550c,null));};exports[_0x7184('0x54')]=function(_0x43f807,_0x38a8ef,_0x4b69b6){if(_0x43f807['body']['id']){delete _0x43f807[_0x7184('0x4c')]['id'];}return db[_0x7184('0x32')][_0x7184('0x4e')]({'where':{'id':_0x43f807[_0x7184('0x48')]['id']}})[_0x7184('0x29')](handleEntityNotFound(_0x38a8ef,null))[_0x7184('0x29')](function(_0x420276){if(_0x420276){_0x43f807[_0x7184('0x4c')][_0x7184('0x55')]=_0x420276['id'];_0x43f807[_0x7184('0x4c')][_0x7184('0x56')]=integrations[_0x7184('0x57')](_0x43f807['body'][_0x7184('0x58')],_0x43f807[_0x7184('0x4c')][_0x7184('0x33')]);_0x43f807[_0x7184('0x4c')]['Descriptions']=integrations[_0x7184('0x59')](_0x43f807[_0x7184('0x4c')][_0x7184('0x58')],_0x43f807[_0x7184('0x4c')][_0x7184('0x33')]);return db[_0x7184('0x4f')][_0x7184('0x4b')](_0x43f807[_0x7184('0x4c')],{'include':[{'model':db['ZohoField'],'as':_0x7184('0x56')},{'model':db[_0x7184('0x5a')],'as':_0x7184('0x5b')}]});}return null;})[_0x7184('0x29')](respondWithResult(_0x38a8ef,null))['catch'](handleError(_0x38a8ef,null));};function getAccessToken(_0x4907f5){return new Promise(function(_0x32d0e7,_0x5ee314){var _0x3fe680;switch(_0x4907f5[_0x7184('0x5c')]){case'US':_0x3fe680=_0x7184('0x5d');break;case'AU':_0x3fe680=_0x7184('0x5e');break;case'EU':_0x3fe680=_0x7184('0x5f');break;case'IN':_0x3fe680=_0x7184('0x60');break;case'CN':_0x3fe680=_0x7184('0x61');break;default:_0x3fe680=_0x7184('0x5f');break;}var _0x35b5a6={'method':_0x7184('0x62'),'uri':_0x3fe680+_0x7184('0x63'),'qs':{'refresh_token':_0x4907f5['refreshToken'],'client_id':_0x4907f5[_0x7184('0x64')],'client_secret':_0x4907f5[_0x7184('0x65')],'grant_type':_0x7184('0x66')},'json':!![]};return rp(_0x35b5a6)[_0x7184('0x29')](function(_0x3f1c8b){if(_0x3f1c8b['access_token']){_0x32d0e7(_0x3f1c8b['access_token']);}else{_0x5ee314('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x7184('0x47')](function(_0x501ac0){_0x5ee314(_0x501ac0);});});}exports[_0x7184('0x67')]=function(_0x29e1b3,_0x192153,_0x23a103){var _0x37fac5,_0x418118,_0x2b563f,_0xea644e,_0x437cf3;return db[_0x7184('0x32')]['findOne']({'where':{'id':_0x29e1b3[_0x7184('0x48')]['id']},'attributes':['id','host','zone',_0x7184('0x64'),_0x7184('0x65'),_0x7184('0x68'),_0x7184('0x69'),_0x7184('0x6a')]})[_0x7184('0x29')](handleEntityNotFound(_0x192153,null))[_0x7184('0x29')](function(_0xb4424b){_0x437cf3=_0xb4424b;_0x37fac5=_0x437cf3[_0x7184('0x6b')];_0x418118=_0x37fac5===_0x7184('0x6c')?'eu':_0x7184('0x6d');_0x2b563f=_0x437cf3[_0x7184('0x68')];var _0x3c436f=_0x2b563f[_0x7184('0x6e')](-0x1);if(_0x3c436f==='/'||_0x3c436f==='\x5c'||_0x3c436f===':'){_0x2b563f=_0x2b563f[_0x7184('0x6f')](0x0,_0x2b563f[_0x7184('0x70')](_0x3c436f));}if(!_0x437cf3['refreshToken']){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x437cf3);})['then'](function(_0x59e96f){if(_0x59e96f){return rp({'method':_0x7184('0x71'),'uri':util['format'](_0x7184('0x72'),_0x418118),'qs':{'module':_0x7184('0x73')},'headers':{'Authorization':_0x7184('0x74')+_0x59e96f},'json':!![]});}})[_0x7184('0x29')](function(_0x430df6){if(_0x430df6){if(_0x430df6['response']&&_0x430df6['response'][_0x7184('0x2c')]){throw new Error(_0x430df6['response']['error'][_0x7184('0x75')]);}var _0x4cb44e=[];var _0x4877b3=[];var _0x4676eb=[_0x7184('0x76'),_0x7184('0x77'),'Description',_0x7184('0x78'),'Call_Duration',_0x7184('0x79'),_0x7184('0x7a'),_0x7184('0x7b')];_0x4877b3=_[_0x7184('0x7c')](_0x430df6['fields'],function(_0x23212e){return _0x4676eb['includes'](_0x23212e[_0x7184('0x7d')]);});for(var _0x3ee3a4=0x0;_0x3ee3a4<_0x4877b3[_0x7184('0x50')];_0x3ee3a4++){if(_0x4877b3[_0x3ee3a4][_0x7184('0x7e')]===![]){_0x4cb44e[_0x7184('0x7f')]({'id':_0x4877b3[_0x3ee3a4]['id'],'name':_0x4877b3[_0x3ee3a4][_0x7184('0x80')],'custom':_0x4877b3[_0x3ee3a4]['custom_field'],'options':_0x4877b3[_0x3ee3a4]['data_type']===_0x7184('0x81')&&_0x4877b3[_0x3ee3a4][_0x7184('0x82')][_0x7184('0x50')]>-0x1?_['map'](_0x4877b3[_0x3ee3a4][_0x7184('0x82')],function(_0xe13795){return{'name':_0xe13795,'value':_0xe13795};}):[]});}}return{'count':_0x4cb44e[_0x7184('0x50')],'rows':_0x4cb44e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x192153,null))[_0x7184('0x47')](function(_0x104541){var _0x518d35=_0x29e1b3['query']['test']?0x1f4:_0x104541[_0x7184('0x83')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x518d35,JSON[_0x7184('0x84')](_0x104541));delete _0x104541[_0x7184('0x2e')];if(_0x518d35===0x191){_0x518d35=0x190;}_0x192153[_0x7184('0x1e')](_0x518d35)[_0x7184('0x2f')](_0x29e1b3[_0x7184('0x37')][_0x7184('0x85')]?{'message':'Wrong\x20credentials','statusCode':_0x104541[_0x7184('0x83')]}:_0x104541);});};