dd0c78259a268a8940ad83275f370fc8aa349ea3
[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 _0xddab=['count','set','json','apply','reject','save','update','destroy','then','error','name','send','index','map','ZohoAccount','rawAttributes','fieldName','query','keys','filters','attributes','intersection','fields','length','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','findOne','ZohoConfiguration','pick','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','GET','format','Zoho-oauthtoken\x20','response','message','Subject','Description','WhoId','Call_Result','Call_Start_Time','Call_Type','includes','api_name','push','display_label','data_type','picklist','pick_list_values','test','statusCode','stringify','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','limit','undefined','offset'];(function(_0xf49fc,_0x56595d){var _0x561c4d=function(_0x244b0a){while(--_0x244b0a){_0xf49fc['push'](_0xf49fc['shift']());}};_0x561c4d(++_0x56595d);}(_0xddab,0x168));var _0xbdda=function(_0x5b8c85,_0x85a45b){_0x5b8c85=_0x5b8c85-0x0;var _0x401ce3=_0xddab[_0x5b8c85];return _0x401ce3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdda('0x0'));var zipdir=require(_0xbdda('0x1'));var jsonpatch=require(_0xbdda('0x2'));var rp=require(_0xbdda('0x3'));var moment=require(_0xbdda('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbdda('0x5'));var util=require(_0xbdda('0x6'));var path=require(_0xbdda('0x7'));var sox=require('sox');var csv=require(_0xbdda('0x8'));var ejs=require(_0xbdda('0x9'));var fs=require('fs');var fs_extra=require(_0xbdda('0xa'));var _=require(_0xbdda('0xb'));var squel=require(_0xbdda('0xc'));var crypto=require(_0xbdda('0xd'));var jsforce=require(_0xbdda('0xe'));var deskjs=require(_0xbdda('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xbdda('0x10'));var Redis=require(_0xbdda('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbdda('0x12'));var as=require(_0xbdda('0x13'));var hardwareService=require(_0xbdda('0x14'));var logger=require(_0xbdda('0x15'))(_0xbdda('0x16'));var utils=require(_0xbdda('0x17'));var config=require(_0xbdda('0x18'));var licenseUtil=require(_0xbdda('0x19'));var db=require(_0xbdda('0x1a'))['db'];var integrations=require(_0xbdda('0x1b'));function respondWithStatusCode(_0x46b78a,_0x412b9c){_0x412b9c=_0x412b9c||0xcc;return function(_0x18d863){if(_0x18d863){return _0x46b78a[_0xbdda('0x1c')](_0x412b9c);}return _0x46b78a['status'](_0x412b9c)['end']();};}function respondWithResult(_0x54c9ed,_0x5eca02){_0x5eca02=_0x5eca02||0xc8;return function(_0x23d11d){if(_0x23d11d){return _0x54c9ed[_0xbdda('0x1d')](_0x5eca02)['json'](_0x23d11d);}};}function respondWithFilteredResult(_0x46f040,_0x41af48){return function(_0x285b7b){if(_0x285b7b){var _0x25f186=typeof _0x41af48['offset']==='undefined'&&typeof _0x41af48[_0xbdda('0x1e')]===_0xbdda('0x1f');var _0x4cb23b=_0x285b7b['count'];var _0x411b3a=_0x25f186?0x0:_0x41af48[_0xbdda('0x20')];var _0x41086c=_0x25f186?_0x285b7b[_0xbdda('0x21')]:_0x41af48[_0xbdda('0x20')]+_0x41af48['limit'];var _0x57b5f1;if(_0x41086c>=_0x4cb23b){_0x41086c=_0x4cb23b;_0x57b5f1=0xc8;}else{_0x57b5f1=0xce;}_0x46f040[_0xbdda('0x1d')](_0x57b5f1);return _0x46f040[_0xbdda('0x22')]('Content-Range',_0x411b3a+'-'+_0x41086c+'/'+_0x4cb23b)[_0xbdda('0x23')](_0x285b7b);}return null;};}function patchUpdates(_0x3b265e){return function(_0x1af7ce){try{jsonpatch[_0xbdda('0x24')](_0x1af7ce,_0x3b265e,!![]);}catch(_0x39f3f0){return BPromise[_0xbdda('0x25')](_0x39f3f0);}return _0x1af7ce[_0xbdda('0x26')]();};}function saveUpdates(_0x3e9c08,_0x40d3a5){return function(_0xdf31ca){if(_0xdf31ca){return _0xdf31ca[_0xbdda('0x27')](_0x3e9c08)['then'](function(_0x10ae7b){return _0x10ae7b;});}return null;};}function removeEntity(_0x7a3191,_0x31b671){return function(_0x595035){if(_0x595035){return _0x595035[_0xbdda('0x28')]()[_0xbdda('0x29')](function(){_0x7a3191[_0xbdda('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfe06cb,_0x58686c){return function(_0x1fee57){if(!_0x1fee57){_0xfe06cb[_0xbdda('0x1c')](0x194);}return _0x1fee57;};}function handleError(_0x38bcf9,_0x22f2a4){_0x22f2a4=_0x22f2a4||0x1f4;return function(_0x48590c){logger[_0xbdda('0x2a')](_0x48590c['stack']);if(_0x48590c[_0xbdda('0x2b')]){delete _0x48590c[_0xbdda('0x2b')];}_0x38bcf9['status'](_0x22f2a4)[_0xbdda('0x2c')](_0x48590c);};}exports[_0xbdda('0x2d')]=function(_0x3ddd03,_0x13f092){var _0x461348={},_0x12ac91={},_0x7bce27={'count':0x0,'rows':[]};var _0x15d360=_[_0xbdda('0x2e')](db[_0xbdda('0x2f')][_0xbdda('0x30')],function(_0x568016){return{'name':_0x568016[_0xbdda('0x31')],'type':_0x568016['type']['key']};});_0x12ac91['model']=_[_0xbdda('0x2e')](_0x15d360,_0xbdda('0x2b'));_0x12ac91[_0xbdda('0x32')]=_[_0xbdda('0x33')](_0x3ddd03['query']);_0x12ac91[_0xbdda('0x34')]=_['intersection'](_0x12ac91['model'],_0x12ac91[_0xbdda('0x32')]);_0x461348[_0xbdda('0x35')]=_[_0xbdda('0x36')](_0x12ac91['model'],qs[_0xbdda('0x37')](_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x37')]));_0x461348[_0xbdda('0x35')]=_0x461348[_0xbdda('0x35')][_0xbdda('0x38')]?_0x461348[_0xbdda('0x35')]:_0x12ac91[_0xbdda('0x39')];if(!_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x3a')](_0xbdda('0x3b'))){_0x461348[_0xbdda('0x1e')]=qs['limit'](_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x1e')]);_0x461348[_0xbdda('0x20')]=qs[_0xbdda('0x20')](_0x3ddd03['query']['offset']);}_0x461348[_0xbdda('0x3c')]=qs['sort'](_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x3d')]);_0x461348[_0xbdda('0x3e')]=qs[_0xbdda('0x34')](_['pick'](_0x3ddd03[_0xbdda('0x32')],_0x12ac91['filters']),_0x15d360);if(_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x3f')]){_0x461348['where']=_[_0xbdda('0x40')](_0x461348[_0xbdda('0x3e')],{'$or':_[_0xbdda('0x2e')](_0x15d360,function(_0x3a71af){if(_0x3a71af[_0xbdda('0x41')]!==_0xbdda('0x42')){var _0x25a0c1={};_0x25a0c1[_0x3a71af[_0xbdda('0x2b')]]={'$like':'%'+_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x3f')]+'%'};return _0x25a0c1;}})});}_0x461348=_[_0xbdda('0x40')]({},_0x461348,_0x3ddd03[_0xbdda('0x43')]);var _0x507055={'where':_0x461348[_0xbdda('0x3e')]};return db['ZohoAccount'][_0xbdda('0x21')](_0x507055)[_0xbdda('0x29')](function(_0x330122){_0x7bce27[_0xbdda('0x21')]=_0x330122;if(_0x3ddd03[_0xbdda('0x32')][_0xbdda('0x44')]){_0x461348[_0xbdda('0x45')]=[{'all':!![]}];}return db[_0xbdda('0x2f')][_0xbdda('0x46')](_0x461348);})[_0xbdda('0x29')](function(_0xe13d57){_0x7bce27[_0xbdda('0x47')]=_0xe13d57;return _0x7bce27;})[_0xbdda('0x29')](respondWithFilteredResult(_0x13f092,_0x461348))[_0xbdda('0x48')](handleError(_0x13f092,null));};exports[_0xbdda('0x49')]=function(_0x1ff2ab,_0x33bc1d){var _0xa89a93={'raw':![],'where':{'id':_0x1ff2ab[_0xbdda('0x4a')]['id']}},_0x31dd43={};_0x31dd43[_0xbdda('0x39')]=_[_0xbdda('0x33')](db[_0xbdda('0x2f')][_0xbdda('0x30')]);_0x31dd43['query']=_[_0xbdda('0x33')](_0x1ff2ab[_0xbdda('0x32')]);_0x31dd43[_0xbdda('0x34')]=_['intersection'](_0x31dd43[_0xbdda('0x39')],_0x31dd43[_0xbdda('0x32')]);_0xa89a93[_0xbdda('0x35')]=_[_0xbdda('0x36')](_0x31dd43[_0xbdda('0x39')],qs[_0xbdda('0x37')](_0x1ff2ab[_0xbdda('0x32')][_0xbdda('0x37')]));_0xa89a93[_0xbdda('0x35')]=_0xa89a93[_0xbdda('0x35')][_0xbdda('0x38')]?_0xa89a93[_0xbdda('0x35')]:_0x31dd43[_0xbdda('0x39')];if(_0x1ff2ab[_0xbdda('0x32')][_0xbdda('0x44')]){_0xa89a93[_0xbdda('0x45')]=[{'all':!![]}];}_0xa89a93=_[_0xbdda('0x40')]({},_0xa89a93,_0x1ff2ab[_0xbdda('0x43')]);return db[_0xbdda('0x2f')]['find'](_0xa89a93)[_0xbdda('0x29')](handleEntityNotFound(_0x33bc1d,null))['then'](respondWithResult(_0x33bc1d,null))['catch'](handleError(_0x33bc1d,null));};exports[_0xbdda('0x4b')]=function(_0x243ea8,_0x3ce94c){return db[_0xbdda('0x2f')][_0xbdda('0x4b')](_0x243ea8['body'],{})[_0xbdda('0x29')](respondWithResult(_0x3ce94c,0xc9))[_0xbdda('0x48')](handleError(_0x3ce94c,null));};exports['update']=function(_0x38fb0e,_0x18d96c){if(_0x38fb0e[_0xbdda('0x4c')]['id']){delete _0x38fb0e['body']['id'];}return db['ZohoAccount']['find']({'where':{'id':_0x38fb0e[_0xbdda('0x4a')]['id']}})[_0xbdda('0x29')](handleEntityNotFound(_0x18d96c,null))[_0xbdda('0x29')](saveUpdates(_0x38fb0e[_0xbdda('0x4c')],null))[_0xbdda('0x29')](respondWithResult(_0x18d96c,null))[_0xbdda('0x48')](handleError(_0x18d96c,null));};exports[_0xbdda('0x28')]=function(_0x383af9,_0x4a02be){return db[_0xbdda('0x2f')][_0xbdda('0x4d')]({'where':{'id':_0x383af9[_0xbdda('0x4a')]['id']}})[_0xbdda('0x29')](handleEntityNotFound(_0x4a02be,null))['then'](removeEntity(_0x4a02be,null))[_0xbdda('0x48')](handleError(_0x4a02be,null));};exports['getConfigurations']=function(_0x2c6ef8,_0x4d2b99,_0x1734b2){var _0x529b10={};var _0xafd535={};var _0xc98fdc;var _0x2eae40;return db[_0xbdda('0x2f')][_0xbdda('0x4e')]({'where':{'id':_0x2c6ef8[_0xbdda('0x4a')]['id']}})[_0xbdda('0x29')](handleEntityNotFound(_0x4d2b99,null))[_0xbdda('0x29')](function(_0x47c08e){if(_0x47c08e){_0xc98fdc=_0x47c08e;_0xafd535['model']=_[_0xbdda('0x33')](db[_0xbdda('0x4f')][_0xbdda('0x30')]);_0xafd535[_0xbdda('0x32')]=_[_0xbdda('0x33')](_0x2c6ef8[_0xbdda('0x32')]);_0xafd535['filters']=_[_0xbdda('0x36')](_0xafd535[_0xbdda('0x39')],_0xafd535[_0xbdda('0x32')]);_0x529b10[_0xbdda('0x35')]=_[_0xbdda('0x36')](_0xafd535[_0xbdda('0x39')],qs['fields'](_0x2c6ef8[_0xbdda('0x32')]['fields']));_0x529b10[_0xbdda('0x35')]=_0x529b10[_0xbdda('0x35')][_0xbdda('0x38')]?_0x529b10[_0xbdda('0x35')]:_0xafd535[_0xbdda('0x39')];_0x529b10[_0xbdda('0x3c')]=qs['sort'](_0x2c6ef8[_0xbdda('0x32')][_0xbdda('0x3d')]);_0x529b10['where']=qs['filters'](_[_0xbdda('0x50')](_0x2c6ef8[_0xbdda('0x32')],_0xafd535[_0xbdda('0x34')]));if(_0x2c6ef8['query'][_0xbdda('0x3f')]){_0x529b10[_0xbdda('0x3e')]=_['merge'](_0x529b10[_0xbdda('0x3e')],{'$or':_[_0xbdda('0x2e')](_0x529b10[_0xbdda('0x35')],function(_0x2aaf2c){var _0x1de1bf={};_0x1de1bf[_0x2aaf2c]={'$like':'%'+_0x2c6ef8[_0xbdda('0x32')]['filter']+'%'};return _0x1de1bf;})});}_0x529b10=_[_0xbdda('0x40')]({},_0x529b10,_0x2c6ef8['options']);return _0xc98fdc[_0xbdda('0x51')](_0x529b10);}})[_0xbdda('0x29')](function(_0x2e799c){if(_0x2e799c){_0x2eae40=_0x2e799c['length'];if(!_0x2c6ef8['query'][_0xbdda('0x3a')](_0xbdda('0x3b'))){_0x529b10['limit']=qs[_0xbdda('0x1e')](_0x2c6ef8[_0xbdda('0x32')][_0xbdda('0x1e')]);_0x529b10[_0xbdda('0x20')]=qs['offset'](_0x2c6ef8[_0xbdda('0x32')][_0xbdda('0x20')]);}return _0xc98fdc[_0xbdda('0x51')](_0x529b10);}})[_0xbdda('0x29')](function(_0x5810fc){if(_0x5810fc){return _0x5810fc?{'count':_0x2eae40,'rows':_0x5810fc}:null;}})['then'](respondWithResult(_0x4d2b99,null))['catch'](handleError(_0x4d2b99,null));};exports[_0xbdda('0x52')]=function(_0x346654,_0xee9598,_0x5b58ea){if(_0x346654['body']['id']){delete _0x346654[_0xbdda('0x4c')]['id'];}return db[_0xbdda('0x2f')][_0xbdda('0x4e')]({'where':{'id':_0x346654[_0xbdda('0x4a')]['id']}})['then'](handleEntityNotFound(_0xee9598,null))[_0xbdda('0x29')](function(_0x5a8882){if(_0x5a8882){_0x346654[_0xbdda('0x4c')][_0xbdda('0x53')]=_0x5a8882['id'];_0x346654['body'][_0xbdda('0x54')]=integrations[_0xbdda('0x55')](_0x346654[_0xbdda('0x4c')]['channel'],_0x346654[_0xbdda('0x4c')][_0xbdda('0x41')]);_0x346654['body'][_0xbdda('0x56')]=integrations['getDescriptions'](_0x346654[_0xbdda('0x4c')][_0xbdda('0x57')],_0x346654[_0xbdda('0x4c')]['type']);return db[_0xbdda('0x4f')][_0xbdda('0x4b')](_0x346654[_0xbdda('0x4c')],{'include':[{'model':db[_0xbdda('0x58')],'as':_0xbdda('0x54')},{'model':db['ZohoField'],'as':_0xbdda('0x56')}]});}return null;})[_0xbdda('0x29')](respondWithResult(_0xee9598,null))[_0xbdda('0x48')](handleError(_0xee9598,null));};function getAccessToken(_0x139269){return new Promise(function(_0x3a7f98,_0xd27506){var _0x42775b;switch(_0x139269['zone']){case'US':_0x42775b=_0xbdda('0x59');break;case'AU':_0x42775b=_0xbdda('0x5a');break;case'EU':_0x42775b='https://accounts.zoho.eu';break;case'IN':_0x42775b=_0xbdda('0x5b');break;case'CN':_0x42775b=_0xbdda('0x5c');break;default:_0x42775b='https://accounts.zoho.eu';break;}var _0x2f4194={'method':_0xbdda('0x5d'),'uri':_0x42775b+_0xbdda('0x5e'),'qs':{'refresh_token':_0x139269[_0xbdda('0x5f')],'client_id':_0x139269[_0xbdda('0x60')],'client_secret':_0x139269[_0xbdda('0x61')],'grant_type':_0xbdda('0x62')},'json':!![]};return rp(_0x2f4194)[_0xbdda('0x29')](function(_0x1e53b6){if(_0x1e53b6[_0xbdda('0x63')]){_0x3a7f98(_0x1e53b6['access_token']);}else{_0xd27506(_0xbdda('0x64'));}})[_0xbdda('0x48')](function(_0x2c13d6){_0xd27506(_0x2c13d6);});});}exports[_0xbdda('0x65')]=function(_0x386003,_0xf0d48a,_0x18f5ad){var _0x59d9fe,_0x1006cc,_0x286b22,_0x5a6675,_0x25330c;return db[_0xbdda('0x2f')][_0xbdda('0x4e')]({'where':{'id':_0x386003[_0xbdda('0x4a')]['id']},'attributes':['id',_0xbdda('0x66'),_0xbdda('0x67'),'clientId',_0xbdda('0x61'),_0xbdda('0x68'),_0xbdda('0x69'),_0xbdda('0x5f')]})[_0xbdda('0x29')](handleEntityNotFound(_0xf0d48a,null))[_0xbdda('0x29')](function(_0x17dafb){_0x25330c=_0x17dafb;_0x59d9fe=_0x25330c['host'];_0x1006cc=_0x59d9fe===_0xbdda('0x6a')?'eu':'com';_0x286b22=_0x25330c[_0xbdda('0x68')];var _0x3be396=_0x286b22[_0xbdda('0x6b')](-0x1);if(_0x3be396==='/'||_0x3be396==='\x5c'||_0x3be396===':'){_0x286b22=_0x286b22[_0xbdda('0x6c')](0x0,_0x286b22[_0xbdda('0x6d')](_0x3be396));}if(!_0x25330c[_0xbdda('0x5f')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x25330c);})[_0xbdda('0x29')](function(_0x4c61db){if(_0x4c61db){return rp({'method':_0xbdda('0x6e'),'uri':util[_0xbdda('0x6f')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x1006cc),'qs':{'module':'Calls'},'headers':{'Authorization':_0xbdda('0x70')+_0x4c61db},'json':!![]});}})[_0xbdda('0x29')](function(_0x5d98c8){if(_0x5d98c8){if(_0x5d98c8['response']&&_0x5d98c8['response']['error']){throw new Error(_0x5d98c8[_0xbdda('0x71')][_0xbdda('0x2a')][_0xbdda('0x72')]);}var _0x8239c3=[];var _0x510e57=[];var _0x4a3b1f=['Owner',_0xbdda('0x73'),_0xbdda('0x74'),_0xbdda('0x75'),'Call_Duration',_0xbdda('0x76'),_0xbdda('0x77'),_0xbdda('0x78')];_0x510e57=_['remove'](_0x5d98c8[_0xbdda('0x37')],function(_0x302537){return _0x4a3b1f[_0xbdda('0x79')](_0x302537[_0xbdda('0x7a')]);});for(var _0x25e3c9=0x0;_0x25e3c9<_0x510e57['length'];_0x25e3c9++){if(_0x510e57[_0x25e3c9]['system_mandatory']===![]){_0x8239c3[_0xbdda('0x7b')]({'id':_0x510e57[_0x25e3c9]['id'],'name':_0x510e57[_0x25e3c9][_0xbdda('0x7c')],'custom':_0x510e57[_0x25e3c9]['custom_field'],'options':_0x510e57[_0x25e3c9][_0xbdda('0x7d')]===_0xbdda('0x7e')&&_0x510e57[_0x25e3c9][_0xbdda('0x7f')][_0xbdda('0x38')]>-0x1?_[_0xbdda('0x2e')](_0x510e57[_0x25e3c9][_0xbdda('0x7f')],function(_0x4fdd88){return{'name':_0x4fdd88,'value':_0x4fdd88};}):[]});}}return{'count':_0x8239c3[_0xbdda('0x38')],'rows':_0x8239c3};}else{return{'count':0x0,'rows':[]};}})[_0xbdda('0x29')](respondWithResult(_0xf0d48a,null))[_0xbdda('0x48')](function(_0x53bb62){var _0x1acae8=_0x386003[_0xbdda('0x32')][_0xbdda('0x80')]?0x1f4:_0x53bb62[_0xbdda('0x81')]||0x1f4;logger[_0xbdda('0x2a')]('getFields,\x20%s,\x20%s,\x20%s',_0xbdda('0x65'),_0x1acae8,JSON[_0xbdda('0x82')](_0x53bb62));delete _0x53bb62[_0xbdda('0x2b')];if(_0x1acae8===0x191){_0x1acae8=0x190;}_0xf0d48a['status'](_0x1acae8)[_0xbdda('0x2c')](_0x386003[_0xbdda('0x32')][_0xbdda('0x80')]?{'message':'Wrong\x20credentials','statusCode':_0x53bb62['statusCode']}:_0x53bb62);});};