Built motion from commit 753c950e.|2.5.42
[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 _0xd57f=['Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','count','set','json','reject','save','update','then','destroy','end','error','stack','send','index','map','ZohoAccount','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','rawAttributes','length','find','catch','create','body','getConfigurations','keys','options','Subjects','channel','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','findOne','host','serverUrl','code','refreshToken','zoho.eu','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','Owner','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','name'];(function(_0x755a60,_0x4e0df5){var _0x5ad7b1=function(_0x11dbc2){while(--_0x11dbc2){_0x755a60['push'](_0x755a60['shift']());}};_0x5ad7b1(++_0x4e0df5);}(_0xd57f,0x175));var _0xfd57=function(_0x3934f3,_0x302172){_0x3934f3=_0x3934f3-0x0;var _0x3ce840=_0xd57f[_0x3934f3];return _0x3ce840;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfd57('0x0'));var zipdir=require(_0xfd57('0x1'));var jsonpatch=require(_0xfd57('0x2'));var rp=require(_0xfd57('0x3'));var moment=require(_0xfd57('0x4'));var BPromise=require(_0xfd57('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfd57('0x6'));var fs=require('fs');var fs_extra=require(_0xfd57('0x7'));var _=require('lodash');var squel=require(_0xfd57('0x8'));var crypto=require(_0xfd57('0x9'));var jsforce=require(_0xfd57('0xa'));var deskjs=require(_0xfd57('0xb'));var toCsv=require(_0xfd57('0xc'));var querystring=require(_0xfd57('0xd'));var Papa=require('papaparse');var Redis=require(_0xfd57('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xfd57('0xf'));var as=require(_0xfd57('0x10'));var hardwareService=require(_0xfd57('0x11'));var logger=require(_0xfd57('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfd57('0x13'))['db'];var integrations=require(_0xfd57('0x14'));function respondWithStatusCode(_0x5becdf,_0x185270){_0x185270=_0x185270||0xcc;return function(_0x597462){if(_0x597462){return _0x5becdf[_0xfd57('0x15')](_0x185270);}return _0x5becdf['status'](_0x185270)['end']();};}function respondWithResult(_0x2c841e,_0x2e9198){_0x2e9198=_0x2e9198||0xc8;return function(_0xa6cd98){if(_0xa6cd98){return _0x2c841e[_0xfd57('0x16')](_0x2e9198)['json'](_0xa6cd98);}};}function respondWithFilteredResult(_0x3dec51,_0x10a9a1){return function(_0x38bfc7){if(_0x38bfc7){var _0x9fc731=typeof _0x10a9a1[_0xfd57('0x17')]===_0xfd57('0x18')&&typeof _0x10a9a1['limit']===_0xfd57('0x18');var _0x2cd1b8=_0x38bfc7['count'];var _0x125982=_0x9fc731?0x0:_0x10a9a1[_0xfd57('0x17')];var _0x5ed854=_0x9fc731?_0x38bfc7[_0xfd57('0x19')]:_0x10a9a1['offset']+_0x10a9a1['limit'];var _0x4de9a3;if(_0x5ed854>=_0x2cd1b8){_0x5ed854=_0x2cd1b8;_0x4de9a3=0xc8;}else{_0x4de9a3=0xce;}_0x3dec51[_0xfd57('0x16')](_0x4de9a3);return _0x3dec51[_0xfd57('0x1a')]('Content-Range',_0x125982+'-'+_0x5ed854+'/'+_0x2cd1b8)[_0xfd57('0x1b')](_0x38bfc7);}return null;};}function patchUpdates(_0x549dbf){return function(_0xd28b76){try{jsonpatch['apply'](_0xd28b76,_0x549dbf,!![]);}catch(_0x569d99){return BPromise[_0xfd57('0x1c')](_0x569d99);}return _0xd28b76[_0xfd57('0x1d')]();};}function saveUpdates(_0x574d2a,_0x30773a){return function(_0x42eb0d){if(_0x42eb0d){return _0x42eb0d[_0xfd57('0x1e')](_0x574d2a)[_0xfd57('0x1f')](function(_0x114f04){return _0x114f04;});}return null;};}function removeEntity(_0xbe0b0d,_0x498e48){return function(_0x300296){if(_0x300296){return _0x300296[_0xfd57('0x20')]()['then'](function(){_0xbe0b0d[_0xfd57('0x16')](0xcc)[_0xfd57('0x21')]();});}};}function handleEntityNotFound(_0x269bda,_0x5a5477){return function(_0x5149d9){if(!_0x5149d9){_0x269bda[_0xfd57('0x15')](0x194);}return _0x5149d9;};}function handleError(_0x17a349,_0x5bd63c){_0x5bd63c=_0x5bd63c||0x1f4;return function(_0x5dd09a){logger[_0xfd57('0x22')](_0x5dd09a[_0xfd57('0x23')]);if(_0x5dd09a['name']){delete _0x5dd09a['name'];}_0x17a349[_0xfd57('0x16')](_0x5bd63c)[_0xfd57('0x24')](_0x5dd09a);};}exports[_0xfd57('0x25')]=function(_0x3dee66,_0x24e511){var _0x279245={},_0x2e9b4={},_0x3c0a38={'count':0x0,'rows':[]};var _0x3ff801=_[_0xfd57('0x26')](db[_0xfd57('0x27')]['rawAttributes'],function(_0xe8151d){return{'name':_0xe8151d['fieldName'],'type':_0xe8151d[_0xfd57('0x28')][_0xfd57('0x29')]};});_0x2e9b4[_0xfd57('0x2a')]=_[_0xfd57('0x26')](_0x3ff801,'name');_0x2e9b4[_0xfd57('0x2b')]=_['keys'](_0x3dee66[_0xfd57('0x2b')]);_0x2e9b4[_0xfd57('0x2c')]=_[_0xfd57('0x2d')](_0x2e9b4['model'],_0x2e9b4['query']);_0x279245[_0xfd57('0x2e')]=_[_0xfd57('0x2d')](_0x2e9b4[_0xfd57('0x2a')],qs[_0xfd57('0x2f')](_0x3dee66[_0xfd57('0x2b')][_0xfd57('0x2f')]));_0x279245[_0xfd57('0x2e')]=_0x279245[_0xfd57('0x2e')]['length']?_0x279245[_0xfd57('0x2e')]:_0x2e9b4[_0xfd57('0x2a')];if(!_0x3dee66[_0xfd57('0x2b')][_0xfd57('0x30')](_0xfd57('0x31'))){_0x279245[_0xfd57('0x32')]=qs[_0xfd57('0x32')](_0x3dee66['query'][_0xfd57('0x32')]);_0x279245[_0xfd57('0x17')]=qs['offset'](_0x3dee66[_0xfd57('0x2b')][_0xfd57('0x17')]);}_0x279245[_0xfd57('0x33')]=qs[_0xfd57('0x34')](_0x3dee66['query']['sort']);_0x279245[_0xfd57('0x35')]=qs['filters'](_[_0xfd57('0x36')](_0x3dee66[_0xfd57('0x2b')],_0x2e9b4[_0xfd57('0x2c')]),_0x3ff801);if(_0x3dee66[_0xfd57('0x2b')][_0xfd57('0x37')]){_0x279245[_0xfd57('0x35')]=_[_0xfd57('0x38')](_0x279245[_0xfd57('0x35')],{'$or':_['map'](_0x3ff801,function(_0x58160e){if(_0x58160e['type']!==_0xfd57('0x39')){var _0x5dca08={};_0x5dca08[_0x58160e['name']]={'$like':'%'+_0x3dee66[_0xfd57('0x2b')][_0xfd57('0x37')]+'%'};return _0x5dca08;}})});}_0x279245=_[_0xfd57('0x38')]({},_0x279245,_0x3dee66['options']);var _0x324be8={'where':_0x279245[_0xfd57('0x35')]};return db[_0xfd57('0x27')]['count'](_0x324be8)[_0xfd57('0x1f')](function(_0x12ea09){_0x3c0a38[_0xfd57('0x19')]=_0x12ea09;if(_0x3dee66[_0xfd57('0x2b')][_0xfd57('0x3a')]){_0x279245[_0xfd57('0x3b')]=[{'all':!![]}];}return db[_0xfd57('0x27')][_0xfd57('0x3c')](_0x279245);})['then'](function(_0x1ca314){_0x3c0a38[_0xfd57('0x3d')]=_0x1ca314;return _0x3c0a38;})[_0xfd57('0x1f')](respondWithFilteredResult(_0x24e511,_0x279245))['catch'](handleError(_0x24e511,null));};exports['show']=function(_0x45f6ee,_0x1d4550){var _0xdb1a54={'raw':![],'where':{'id':_0x45f6ee[_0xfd57('0x3e')]['id']}},_0x57bef7={};_0x57bef7[_0xfd57('0x2a')]=_['keys'](db[_0xfd57('0x27')][_0xfd57('0x3f')]);_0x57bef7[_0xfd57('0x2b')]=_['keys'](_0x45f6ee[_0xfd57('0x2b')]);_0x57bef7['filters']=_['intersection'](_0x57bef7[_0xfd57('0x2a')],_0x57bef7[_0xfd57('0x2b')]);_0xdb1a54[_0xfd57('0x2e')]=_[_0xfd57('0x2d')](_0x57bef7['model'],qs['fields'](_0x45f6ee[_0xfd57('0x2b')][_0xfd57('0x2f')]));_0xdb1a54[_0xfd57('0x2e')]=_0xdb1a54[_0xfd57('0x2e')][_0xfd57('0x40')]?_0xdb1a54[_0xfd57('0x2e')]:_0x57bef7[_0xfd57('0x2a')];if(_0x45f6ee['query'][_0xfd57('0x3a')]){_0xdb1a54[_0xfd57('0x3b')]=[{'all':!![]}];}_0xdb1a54=_[_0xfd57('0x38')]({},_0xdb1a54,_0x45f6ee['options']);return db['ZohoAccount'][_0xfd57('0x41')](_0xdb1a54)[_0xfd57('0x1f')](handleEntityNotFound(_0x1d4550,null))[_0xfd57('0x1f')](respondWithResult(_0x1d4550,null))[_0xfd57('0x42')](handleError(_0x1d4550,null));};exports[_0xfd57('0x43')]=function(_0x4927ca,_0x24996b){return db[_0xfd57('0x27')][_0xfd57('0x43')](_0x4927ca[_0xfd57('0x44')],{})[_0xfd57('0x1f')](respondWithResult(_0x24996b,0xc9))[_0xfd57('0x42')](handleError(_0x24996b,null));};exports[_0xfd57('0x1e')]=function(_0x1c55cd,_0x567b95){if(_0x1c55cd[_0xfd57('0x44')]['id']){delete _0x1c55cd[_0xfd57('0x44')]['id'];}return db[_0xfd57('0x27')][_0xfd57('0x41')]({'where':{'id':_0x1c55cd['params']['id']}})[_0xfd57('0x1f')](handleEntityNotFound(_0x567b95,null))[_0xfd57('0x1f')](saveUpdates(_0x1c55cd[_0xfd57('0x44')],null))[_0xfd57('0x1f')](respondWithResult(_0x567b95,null))[_0xfd57('0x42')](handleError(_0x567b95,null));};exports[_0xfd57('0x20')]=function(_0x1c16e2,_0x2e563e){return db['ZohoAccount'][_0xfd57('0x41')]({'where':{'id':_0x1c16e2[_0xfd57('0x3e')]['id']}})[_0xfd57('0x1f')](handleEntityNotFound(_0x2e563e,null))[_0xfd57('0x1f')](removeEntity(_0x2e563e,null))[_0xfd57('0x42')](handleError(_0x2e563e,null));};exports[_0xfd57('0x45')]=function(_0x50a094,_0x1e3249,_0x235270){var _0x4b6c1d={};var _0x3a602e={};var _0x31643c;var _0x15917d;return db[_0xfd57('0x27')]['findOne']({'where':{'id':_0x50a094[_0xfd57('0x3e')]['id']}})[_0xfd57('0x1f')](handleEntityNotFound(_0x1e3249,null))['then'](function(_0x15a146){if(_0x15a146){_0x31643c=_0x15a146;_0x3a602e[_0xfd57('0x2a')]=_[_0xfd57('0x46')](db['ZohoConfiguration'][_0xfd57('0x3f')]);_0x3a602e[_0xfd57('0x2b')]=_[_0xfd57('0x46')](_0x50a094[_0xfd57('0x2b')]);_0x3a602e[_0xfd57('0x2c')]=_[_0xfd57('0x2d')](_0x3a602e[_0xfd57('0x2a')],_0x3a602e[_0xfd57('0x2b')]);_0x4b6c1d[_0xfd57('0x2e')]=_[_0xfd57('0x2d')](_0x3a602e[_0xfd57('0x2a')],qs['fields'](_0x50a094[_0xfd57('0x2b')][_0xfd57('0x2f')]));_0x4b6c1d[_0xfd57('0x2e')]=_0x4b6c1d[_0xfd57('0x2e')][_0xfd57('0x40')]?_0x4b6c1d[_0xfd57('0x2e')]:_0x3a602e['model'];_0x4b6c1d['order']=qs[_0xfd57('0x34')](_0x50a094[_0xfd57('0x2b')][_0xfd57('0x34')]);_0x4b6c1d['where']=qs[_0xfd57('0x2c')](_[_0xfd57('0x36')](_0x50a094['query'],_0x3a602e[_0xfd57('0x2c')]));if(_0x50a094[_0xfd57('0x2b')]['filter']){_0x4b6c1d[_0xfd57('0x35')]=_[_0xfd57('0x38')](_0x4b6c1d['where'],{'$or':_['map'](_0x4b6c1d[_0xfd57('0x2e')],function(_0xbcdddf){var _0x142cf1={};_0x142cf1[_0xbcdddf]={'$like':'%'+_0x50a094[_0xfd57('0x2b')][_0xfd57('0x37')]+'%'};return _0x142cf1;})});}_0x4b6c1d=_[_0xfd57('0x38')]({},_0x4b6c1d,_0x50a094[_0xfd57('0x47')]);return _0x31643c['getConfigurations'](_0x4b6c1d);}})['then'](function(_0x1acc8b){if(_0x1acc8b){_0x15917d=_0x1acc8b[_0xfd57('0x40')];if(!_0x50a094[_0xfd57('0x2b')][_0xfd57('0x30')](_0xfd57('0x31'))){_0x4b6c1d[_0xfd57('0x32')]=qs[_0xfd57('0x32')](_0x50a094[_0xfd57('0x2b')][_0xfd57('0x32')]);_0x4b6c1d['offset']=qs['offset'](_0x50a094[_0xfd57('0x2b')]['offset']);}return _0x31643c[_0xfd57('0x45')](_0x4b6c1d);}})[_0xfd57('0x1f')](function(_0x99552e){if(_0x99552e){return _0x99552e?{'count':_0x15917d,'rows':_0x99552e}:null;}})['then'](respondWithResult(_0x1e3249,null))[_0xfd57('0x42')](handleError(_0x1e3249,null));};exports['addConfiguration']=function(_0x2c7173,_0x2fae84,_0x4156f5){if(_0x2c7173[_0xfd57('0x44')]['id']){delete _0x2c7173[_0xfd57('0x44')]['id'];}return db['ZohoAccount']['findOne']({'where':{'id':_0x2c7173[_0xfd57('0x3e')]['id']}})['then'](handleEntityNotFound(_0x2fae84,null))[_0xfd57('0x1f')](function(_0x1814c1){if(_0x1814c1){_0x2c7173[_0xfd57('0x44')]['AccountId']=_0x1814c1['id'];_0x2c7173['body'][_0xfd57('0x48')]=integrations['getSubjects'](_0x2c7173[_0xfd57('0x44')][_0xfd57('0x49')],_0x2c7173['body']['type']);_0x2c7173['body'][_0xfd57('0x4a')]=integrations[_0xfd57('0x4b')](_0x2c7173[_0xfd57('0x44')][_0xfd57('0x49')],_0x2c7173[_0xfd57('0x44')]['type']);return db[_0xfd57('0x4c')][_0xfd57('0x43')](_0x2c7173[_0xfd57('0x44')],{'include':[{'model':db[_0xfd57('0x4d')],'as':_0xfd57('0x48')},{'model':db[_0xfd57('0x4d')],'as':_0xfd57('0x4a')}]});}return null;})[_0xfd57('0x1f')](respondWithResult(_0x2fae84,null))['catch'](handleError(_0x2fae84,null));};function getAccessToken(_0x5c994c){return new Promise(function(_0x8cc350,_0x4a0218){var _0x360d76;switch(_0x5c994c[_0xfd57('0x4e')]){case'US':_0x360d76=_0xfd57('0x4f');break;case'AU':_0x360d76=_0xfd57('0x50');break;case'EU':_0x360d76=_0xfd57('0x51');break;case'IN':_0x360d76='https://accounts.zoho.in';break;case'CN':_0x360d76='https://accounts.zoho.com.cn';break;default:_0x360d76=_0xfd57('0x51');break;}var _0x509c24={'method':_0xfd57('0x52'),'uri':_0x360d76+_0xfd57('0x53'),'qs':{'refresh_token':_0x5c994c['refreshToken'],'client_id':_0x5c994c[_0xfd57('0x54')],'client_secret':_0x5c994c[_0xfd57('0x55')],'grant_type':_0xfd57('0x56')},'json':!![]};return rp(_0x509c24)[_0xfd57('0x1f')](function(_0x449441){if(_0x449441['access_token']){_0x8cc350(_0x449441[_0xfd57('0x57')]);}else{_0x4a0218(_0xfd57('0x58'));}})[_0xfd57('0x42')](function(_0x53d4eb){_0x4a0218(_0x53d4eb);});});}exports['getFields']=function(_0x1463fe,_0x4ea618,_0x41c45f){var _0x5c9036,_0x2fa088,_0x5c172e,_0x4d484b,_0x496109;return db['ZohoAccount'][_0xfd57('0x59')]({'where':{'id':_0x1463fe['params']['id']},'attributes':['id',_0xfd57('0x5a'),_0xfd57('0x4e'),_0xfd57('0x54'),'clientSecret',_0xfd57('0x5b'),_0xfd57('0x5c'),_0xfd57('0x5d')]})[_0xfd57('0x1f')](handleEntityNotFound(_0x4ea618,null))['then'](function(_0x4b1dab){_0x496109=_0x4b1dab;_0x5c9036=_0x496109[_0xfd57('0x5a')];_0x2fa088=_0x5c9036===_0xfd57('0x5e')?'eu':'com';_0x5c172e=_0x496109['serverUrl'];var _0x331caf=_0x5c172e['slice'](-0x1);if(_0x331caf==='/'||_0x331caf==='\x5c'||_0x331caf===':'){_0x5c172e=_0x5c172e[_0xfd57('0x5f')](0x0,_0x5c172e[_0xfd57('0x60')](_0x331caf));}if(!_0x496109[_0xfd57('0x5d')]){throw new Error(_0xfd57('0x61'));}return getAccessToken(_0x496109);})[_0xfd57('0x1f')](function(_0x13994c){if(_0x13994c){return rp({'method':'GET','uri':util[_0xfd57('0x62')](_0xfd57('0x63'),_0x2fa088),'qs':{'module':'Calls'},'headers':{'Authorization':_0xfd57('0x64')+_0x13994c},'json':!![]});}})[_0xfd57('0x1f')](function(_0x525807){if(_0x525807){if(_0x525807[_0xfd57('0x65')]&&_0x525807[_0xfd57('0x65')][_0xfd57('0x22')]){throw new Error(_0x525807['response'][_0xfd57('0x22')]['message']);}var _0x131a13=[];var _0x33058e=[];var _0x5a8739=[_0xfd57('0x66'),'Subject','Description',_0xfd57('0x67'),_0xfd57('0x68'),_0xfd57('0x69'),_0xfd57('0x6a'),_0xfd57('0x6b')];_0x33058e=_[_0xfd57('0x6c')](_0x525807['fields'],function(_0x181eae){return _0x5a8739[_0xfd57('0x6d')](_0x181eae[_0xfd57('0x6e')]);});for(var _0x2f6cfe=0x0;_0x2f6cfe<_0x33058e[_0xfd57('0x40')];_0x2f6cfe++){if(_0x33058e[_0x2f6cfe][_0xfd57('0x6f')]===![]){_0x131a13[_0xfd57('0x70')]({'id':_0x33058e[_0x2f6cfe]['id'],'name':_0x33058e[_0x2f6cfe]['display_label'],'custom':_0x33058e[_0x2f6cfe][_0xfd57('0x71')],'options':_0x33058e[_0x2f6cfe][_0xfd57('0x72')]===_0xfd57('0x73')&&_0x33058e[_0x2f6cfe]['pick_list_values'][_0xfd57('0x40')]>-0x1?_[_0xfd57('0x26')](_0x33058e[_0x2f6cfe][_0xfd57('0x74')],function(_0x11e886){return{'name':_0x11e886,'value':_0x11e886};}):[]});}}return{'count':_0x131a13['length'],'rows':_0x131a13};}else{return{'count':0x0,'rows':[]};}})[_0xfd57('0x1f')](respondWithResult(_0x4ea618,null))[_0xfd57('0x42')](function(_0x55f385){var _0x45c0d5=_0x1463fe[_0xfd57('0x2b')][_0xfd57('0x75')]?0x1f4:_0x55f385[_0xfd57('0x76')]||0x1f4;logger[_0xfd57('0x22')](_0xfd57('0x77'),_0xfd57('0x78'),_0x45c0d5,JSON[_0xfd57('0x79')](_0x55f385));delete _0x55f385[_0xfd57('0x7a')];if(_0x45c0d5===0x191){_0x45c0d5=0x190;}_0x4ea618[_0xfd57('0x16')](_0x45c0d5)[_0xfd57('0x24')](_0x1463fe[_0xfd57('0x2b')][_0xfd57('0x75')]?{'message':_0xfd57('0x7b'),'statusCode':_0x55f385[_0xfd57('0x76')]}:_0x55f385);});};