Built motion from commit 775e2a94.|2.6.3
[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 _0x2469=['code','zoho.eu','slice','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Description','Call_Result','Call_Start_Time','Call_Type','remove','api_name','system_mandatory','push','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','json','undefined','count','offset','limit','set','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','merge','create','body','find','findOne','getConfigurations','addConfiguration','AccountId','getSubjects','channel','ZohoField','Subjects','Descriptions','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientSecret','serverUrl'];(function(_0x1725a4,_0x25bcc2){var _0x5edfc9=function(_0x211af9){while(--_0x211af9){_0x1725a4['push'](_0x1725a4['shift']());}};_0x5edfc9(++_0x25bcc2);}(_0x2469,0x11f));var _0x9246=function(_0x43555f,_0x1d9fbf){_0x43555f=_0x43555f-0x0;var _0x5c535c=_0x2469[_0x43555f];return _0x5c535c;};'use strict';var emlformat=require(_0x9246('0x0'));var rimraf=require(_0x9246('0x1'));var zipdir=require(_0x9246('0x2'));var jsonpatch=require(_0x9246('0x3'));var rp=require(_0x9246('0x4'));var moment=require('moment');var BPromise=require(_0x9246('0x5'));var Mustache=require(_0x9246('0x6'));var util=require('util');var path=require('path');var sox=require(_0x9246('0x7'));var csv=require(_0x9246('0x8'));var ejs=require(_0x9246('0x9'));var fs=require('fs');var fs_extra=require(_0x9246('0xa'));var _=require(_0x9246('0xb'));var squel=require(_0x9246('0xc'));var crypto=require(_0x9246('0xd'));var jsforce=require(_0x9246('0xe'));var deskjs=require(_0x9246('0xf'));var toCsv=require(_0x9246('0x8'));var querystring=require(_0x9246('0x10'));var Papa=require(_0x9246('0x11'));var Redis=require(_0x9246('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9246('0x13'));var as=require(_0x9246('0x14'));var hardwareService=require(_0x9246('0x15'));var logger=require(_0x9246('0x16'))(_0x9246('0x17'));var utils=require(_0x9246('0x18'));var config=require(_0x9246('0x19'));var licenseUtil=require(_0x9246('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9246('0x1b'));function respondWithStatusCode(_0x455044,_0x47c472){_0x47c472=_0x47c472||0xcc;return function(_0x3200a2){if(_0x3200a2){return _0x455044['sendStatus'](_0x47c472);}return _0x455044[_0x9246('0x1c')](_0x47c472)[_0x9246('0x1d')]();};}function respondWithResult(_0x196c0a,_0x2b4726){_0x2b4726=_0x2b4726||0xc8;return function(_0x203345){if(_0x203345){return _0x196c0a[_0x9246('0x1c')](_0x2b4726)[_0x9246('0x1e')](_0x203345);}};}function respondWithFilteredResult(_0xd95fc,_0x37dd46){return function(_0xc2b47a){if(_0xc2b47a){var _0xb41c6e=typeof _0x37dd46['offset']===_0x9246('0x1f')&&typeof _0x37dd46['limit']===_0x9246('0x1f');var _0x2464bf=_0xc2b47a[_0x9246('0x20')];var _0x1fa5ad=_0xb41c6e?0x0:_0x37dd46['offset'];var _0x12491a=_0xb41c6e?_0xc2b47a['count']:_0x37dd46[_0x9246('0x21')]+_0x37dd46[_0x9246('0x22')];var _0x1209d2;if(_0x12491a>=_0x2464bf){_0x12491a=_0x2464bf;_0x1209d2=0xc8;}else{_0x1209d2=0xce;}_0xd95fc[_0x9246('0x1c')](_0x1209d2);return _0xd95fc[_0x9246('0x23')]('Content-Range',_0x1fa5ad+'-'+_0x12491a+'/'+_0x2464bf)[_0x9246('0x1e')](_0xc2b47a);}return null;};}function patchUpdates(_0x34d2d0){return function(_0x49b58b){try{jsonpatch['apply'](_0x49b58b,_0x34d2d0,!![]);}catch(_0x2220cf){return BPromise[_0x9246('0x24')](_0x2220cf);}return _0x49b58b['save']();};}function saveUpdates(_0x306c1a,_0x331773){return function(_0x244836){if(_0x244836){return _0x244836[_0x9246('0x25')](_0x306c1a)[_0x9246('0x26')](function(_0x31fa27){return _0x31fa27;});}return null;};}function removeEntity(_0x1378dc,_0x9df033){return function(_0x3ad333){if(_0x3ad333){return _0x3ad333[_0x9246('0x27')]()[_0x9246('0x26')](function(){_0x1378dc[_0x9246('0x1c')](0xcc)[_0x9246('0x1d')]();});}};}function handleEntityNotFound(_0xe48191,_0x421540){return function(_0x2158ed){if(!_0x2158ed){_0xe48191[_0x9246('0x28')](0x194);}return _0x2158ed;};}function handleError(_0x3432d4,_0x17fcaf){_0x17fcaf=_0x17fcaf||0x1f4;return function(_0x584cb1){logger[_0x9246('0x29')](_0x584cb1[_0x9246('0x2a')]);if(_0x584cb1[_0x9246('0x2b')]){delete _0x584cb1['name'];}_0x3432d4['status'](_0x17fcaf)[_0x9246('0x2c')](_0x584cb1);};}exports[_0x9246('0x2d')]=function(_0x583541,_0x52484){var _0xfc13dd={},_0x92c755={},_0x3fbb99={'count':0x0,'rows':[]};var _0x43272=_[_0x9246('0x2e')](db[_0x9246('0x2f')][_0x9246('0x30')],function(_0xdc4f26){return{'name':_0xdc4f26[_0x9246('0x31')],'type':_0xdc4f26[_0x9246('0x32')]['key']};});_0x92c755[_0x9246('0x33')]=_['map'](_0x43272,_0x9246('0x2b'));_0x92c755[_0x9246('0x34')]=_[_0x9246('0x35')](_0x583541[_0x9246('0x34')]);_0x92c755[_0x9246('0x36')]=_[_0x9246('0x37')](_0x92c755[_0x9246('0x33')],_0x92c755[_0x9246('0x34')]);_0xfc13dd[_0x9246('0x38')]=_['intersection'](_0x92c755['model'],qs[_0x9246('0x39')](_0x583541[_0x9246('0x34')][_0x9246('0x39')]));_0xfc13dd['attributes']=_0xfc13dd[_0x9246('0x38')]['length']?_0xfc13dd[_0x9246('0x38')]:_0x92c755[_0x9246('0x33')];if(!_0x583541[_0x9246('0x34')][_0x9246('0x3a')](_0x9246('0x3b'))){_0xfc13dd['limit']=qs[_0x9246('0x22')](_0x583541[_0x9246('0x34')][_0x9246('0x22')]);_0xfc13dd['offset']=qs[_0x9246('0x21')](_0x583541['query'][_0x9246('0x21')]);}_0xfc13dd[_0x9246('0x3c')]=qs[_0x9246('0x3d')](_0x583541[_0x9246('0x34')][_0x9246('0x3d')]);_0xfc13dd[_0x9246('0x3e')]=qs[_0x9246('0x36')](_['pick'](_0x583541[_0x9246('0x34')],_0x92c755[_0x9246('0x36')]),_0x43272);if(_0x583541[_0x9246('0x34')][_0x9246('0x3f')]){_0xfc13dd[_0x9246('0x3e')]=_['merge'](_0xfc13dd[_0x9246('0x3e')],{'$or':_[_0x9246('0x2e')](_0x43272,function(_0xb712fc){if(_0xb712fc['type']!==_0x9246('0x40')){var _0x4d2c26={};_0x4d2c26[_0xb712fc[_0x9246('0x2b')]]={'$like':'%'+_0x583541['query'][_0x9246('0x3f')]+'%'};return _0x4d2c26;}})});}_0xfc13dd=_['merge']({},_0xfc13dd,_0x583541[_0x9246('0x41')]);var _0x4302fa={'where':_0xfc13dd[_0x9246('0x3e')]};return db['ZohoAccount'][_0x9246('0x20')](_0x4302fa)[_0x9246('0x26')](function(_0x11dc7e){_0x3fbb99['count']=_0x11dc7e;if(_0x583541['query'][_0x9246('0x42')]){_0xfc13dd[_0x9246('0x43')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0xfc13dd);})[_0x9246('0x26')](function(_0x33c529){_0x3fbb99[_0x9246('0x44')]=_0x33c529;return _0x3fbb99;})[_0x9246('0x26')](respondWithFilteredResult(_0x52484,_0xfc13dd))[_0x9246('0x45')](handleError(_0x52484,null));};exports[_0x9246('0x46')]=function(_0x102d6e,_0x2ad199){var _0x6a3fc4={'raw':![],'where':{'id':_0x102d6e[_0x9246('0x47')]['id']}},_0x2a7269={};_0x2a7269[_0x9246('0x33')]=_[_0x9246('0x35')](db[_0x9246('0x2f')][_0x9246('0x30')]);_0x2a7269['query']=_['keys'](_0x102d6e['query']);_0x2a7269[_0x9246('0x36')]=_[_0x9246('0x37')](_0x2a7269[_0x9246('0x33')],_0x2a7269[_0x9246('0x34')]);_0x6a3fc4[_0x9246('0x38')]=_[_0x9246('0x37')](_0x2a7269[_0x9246('0x33')],qs['fields'](_0x102d6e[_0x9246('0x34')][_0x9246('0x39')]));_0x6a3fc4['attributes']=_0x6a3fc4['attributes'][_0x9246('0x48')]?_0x6a3fc4[_0x9246('0x38')]:_0x2a7269[_0x9246('0x33')];if(_0x102d6e[_0x9246('0x34')][_0x9246('0x42')]){_0x6a3fc4[_0x9246('0x43')]=[{'all':!![]}];}_0x6a3fc4=_[_0x9246('0x49')]({},_0x6a3fc4,_0x102d6e[_0x9246('0x41')]);return db['ZohoAccount']['find'](_0x6a3fc4)[_0x9246('0x26')](handleEntityNotFound(_0x2ad199,null))[_0x9246('0x26')](respondWithResult(_0x2ad199,null))['catch'](handleError(_0x2ad199,null));};exports[_0x9246('0x4a')]=function(_0x456915,_0x3d51e6){return db['ZohoAccount']['create'](_0x456915[_0x9246('0x4b')],{})[_0x9246('0x26')](respondWithResult(_0x3d51e6,0xc9))['catch'](handleError(_0x3d51e6,null));};exports[_0x9246('0x25')]=function(_0x2190d4,_0x34d591){if(_0x2190d4['body']['id']){delete _0x2190d4[_0x9246('0x4b')]['id'];}return db[_0x9246('0x2f')]['find']({'where':{'id':_0x2190d4['params']['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x34d591,null))[_0x9246('0x26')](saveUpdates(_0x2190d4['body'],null))[_0x9246('0x26')](respondWithResult(_0x34d591,null))[_0x9246('0x45')](handleError(_0x34d591,null));};exports['destroy']=function(_0x41c5f8,_0x24e978){return db[_0x9246('0x2f')][_0x9246('0x4c')]({'where':{'id':_0x41c5f8[_0x9246('0x47')]['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x24e978,null))[_0x9246('0x26')](removeEntity(_0x24e978,null))[_0x9246('0x45')](handleError(_0x24e978,null));};exports['getConfigurations']=function(_0x1d05bc,_0x1d7a12,_0x286e51){var _0x3aef3d={};var _0x2537f1={};var _0x435acc;var _0x1ad7da;return db[_0x9246('0x2f')][_0x9246('0x4d')]({'where':{'id':_0x1d05bc['params']['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x1d7a12,null))[_0x9246('0x26')](function(_0x1e9bd8){if(_0x1e9bd8){_0x435acc=_0x1e9bd8;_0x2537f1['model']=_['keys'](db['ZohoConfiguration'][_0x9246('0x30')]);_0x2537f1[_0x9246('0x34')]=_[_0x9246('0x35')](_0x1d05bc['query']);_0x2537f1[_0x9246('0x36')]=_[_0x9246('0x37')](_0x2537f1['model'],_0x2537f1[_0x9246('0x34')]);_0x3aef3d['attributes']=_['intersection'](_0x2537f1[_0x9246('0x33')],qs[_0x9246('0x39')](_0x1d05bc[_0x9246('0x34')]['fields']));_0x3aef3d[_0x9246('0x38')]=_0x3aef3d['attributes'][_0x9246('0x48')]?_0x3aef3d[_0x9246('0x38')]:_0x2537f1[_0x9246('0x33')];_0x3aef3d[_0x9246('0x3c')]=qs[_0x9246('0x3d')](_0x1d05bc[_0x9246('0x34')][_0x9246('0x3d')]);_0x3aef3d[_0x9246('0x3e')]=qs[_0x9246('0x36')](_['pick'](_0x1d05bc[_0x9246('0x34')],_0x2537f1['filters']));if(_0x1d05bc['query'][_0x9246('0x3f')]){_0x3aef3d[_0x9246('0x3e')]=_[_0x9246('0x49')](_0x3aef3d['where'],{'$or':_[_0x9246('0x2e')](_0x3aef3d[_0x9246('0x38')],function(_0x34636d){var _0x2086b0={};_0x2086b0[_0x34636d]={'$like':'%'+_0x1d05bc[_0x9246('0x34')]['filter']+'%'};return _0x2086b0;})});}_0x3aef3d=_[_0x9246('0x49')]({},_0x3aef3d,_0x1d05bc[_0x9246('0x41')]);return _0x435acc[_0x9246('0x4e')](_0x3aef3d);}})['then'](function(_0x36f83e){if(_0x36f83e){_0x1ad7da=_0x36f83e[_0x9246('0x48')];if(!_0x1d05bc['query'][_0x9246('0x3a')]('nolimit')){_0x3aef3d[_0x9246('0x22')]=qs[_0x9246('0x22')](_0x1d05bc['query'][_0x9246('0x22')]);_0x3aef3d[_0x9246('0x21')]=qs[_0x9246('0x21')](_0x1d05bc[_0x9246('0x34')][_0x9246('0x21')]);}return _0x435acc['getConfigurations'](_0x3aef3d);}})[_0x9246('0x26')](function(_0x4c7030){if(_0x4c7030){return _0x4c7030?{'count':_0x1ad7da,'rows':_0x4c7030}:null;}})['then'](respondWithResult(_0x1d7a12,null))[_0x9246('0x45')](handleError(_0x1d7a12,null));};exports[_0x9246('0x4f')]=function(_0x4be0b8,_0x1bdbc9,_0x1100c4){if(_0x4be0b8['body']['id']){delete _0x4be0b8[_0x9246('0x4b')]['id'];}return db['ZohoAccount'][_0x9246('0x4d')]({'where':{'id':_0x4be0b8[_0x9246('0x47')]['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x1bdbc9,null))[_0x9246('0x26')](function(_0x5db9d9){if(_0x5db9d9){_0x4be0b8['body'][_0x9246('0x50')]=_0x5db9d9['id'];_0x4be0b8[_0x9246('0x4b')]['Subjects']=integrations[_0x9246('0x51')](_0x4be0b8[_0x9246('0x4b')][_0x9246('0x52')],_0x4be0b8['body'][_0x9246('0x32')]);_0x4be0b8[_0x9246('0x4b')]['Descriptions']=integrations['getDescriptions'](_0x4be0b8[_0x9246('0x4b')][_0x9246('0x52')],_0x4be0b8[_0x9246('0x4b')][_0x9246('0x32')]);return db['ZohoConfiguration'][_0x9246('0x4a')](_0x4be0b8[_0x9246('0x4b')],{'include':[{'model':db[_0x9246('0x53')],'as':_0x9246('0x54')},{'model':db[_0x9246('0x53')],'as':_0x9246('0x55')}]});}return null;})[_0x9246('0x26')](respondWithResult(_0x1bdbc9,null))[_0x9246('0x45')](handleError(_0x1bdbc9,null));};function getAccessToken(_0x5c66da){return new Promise(function(_0x19b675,_0x177eb7){var _0x4e480c;switch(_0x5c66da[_0x9246('0x56')]){case'US':_0x4e480c='https://accounts.zoho.com';break;case'AU':_0x4e480c=_0x9246('0x57');break;case'EU':_0x4e480c='https://accounts.zoho.eu';break;case'IN':_0x4e480c=_0x9246('0x58');break;case'CN':_0x4e480c='https://accounts.zoho.com.cn';break;default:_0x4e480c=_0x9246('0x59');break;}var _0x5b8366={'method':'POST','uri':_0x4e480c+_0x9246('0x5a'),'qs':{'refresh_token':_0x5c66da[_0x9246('0x5b')],'client_id':_0x5c66da[_0x9246('0x5c')],'client_secret':_0x5c66da['clientSecret'],'grant_type':_0x9246('0x5d')},'json':!![]};return rp(_0x5b8366)[_0x9246('0x26')](function(_0x5cfab3){if(_0x5cfab3[_0x9246('0x5e')]){_0x19b675(_0x5cfab3['access_token']);}else{_0x177eb7(_0x9246('0x5f'));}})['catch'](function(_0x2b0298){_0x177eb7(_0x2b0298);});});}exports[_0x9246('0x60')]=function(_0x35c22d,_0x3479d1,_0x51181){var _0x2a4ca6,_0x4376b5,_0x1932f5,_0x4117ec,_0x5f0e3e;return db['ZohoAccount'][_0x9246('0x4d')]({'where':{'id':_0x35c22d[_0x9246('0x47')]['id']},'attributes':['id',_0x9246('0x61'),_0x9246('0x56'),_0x9246('0x5c'),_0x9246('0x62'),_0x9246('0x63'),_0x9246('0x64'),'refreshToken']})[_0x9246('0x26')](handleEntityNotFound(_0x3479d1,null))['then'](function(_0x5d0819){_0x5f0e3e=_0x5d0819;_0x2a4ca6=_0x5f0e3e[_0x9246('0x61')];_0x4376b5=_0x2a4ca6===_0x9246('0x65')?'eu':'com';_0x1932f5=_0x5f0e3e[_0x9246('0x63')];var _0x253d65=_0x1932f5[_0x9246('0x66')](-0x1);if(_0x253d65==='/'||_0x253d65==='\x5c'||_0x253d65===':'){_0x1932f5=_0x1932f5['substring'](0x0,_0x1932f5['lastIndexOf'](_0x253d65));}if(!_0x5f0e3e['refreshToken']){throw new Error(_0x9246('0x67'));}return getAccessToken(_0x5f0e3e);})[_0x9246('0x26')](function(_0x24a73c){if(_0x24a73c){return rp({'method':_0x9246('0x68'),'uri':util[_0x9246('0x69')](_0x9246('0x6a'),_0x4376b5),'qs':{'module':_0x9246('0x6b')},'headers':{'Authorization':_0x9246('0x6c')+_0x24a73c},'json':!![]});}})['then'](function(_0x515de7){if(_0x515de7){if(_0x515de7[_0x9246('0x6d')]&&_0x515de7[_0x9246('0x6d')][_0x9246('0x29')]){throw new Error(_0x515de7['response'][_0x9246('0x29')][_0x9246('0x6e')]);}var _0x18de5e=[];var _0x3c900c=[];var _0x3a1d4b=['Owner','Subject',_0x9246('0x6f'),'WhoId','Call_Duration',_0x9246('0x70'),_0x9246('0x71'),_0x9246('0x72')];_0x3c900c=_[_0x9246('0x73')](_0x515de7[_0x9246('0x39')],function(_0x4db9bc){return _0x3a1d4b['includes'](_0x4db9bc[_0x9246('0x74')]);});for(var _0x5365b6=0x0;_0x5365b6<_0x3c900c[_0x9246('0x48')];_0x5365b6++){if(_0x3c900c[_0x5365b6][_0x9246('0x75')]===![]){_0x18de5e[_0x9246('0x76')]({'id':_0x3c900c[_0x5365b6]['id'],'name':_0x3c900c[_0x5365b6][_0x9246('0x77')],'custom':_0x3c900c[_0x5365b6][_0x9246('0x78')],'options':_0x3c900c[_0x5365b6][_0x9246('0x79')]===_0x9246('0x7a')&&_0x3c900c[_0x5365b6][_0x9246('0x7b')][_0x9246('0x48')]>-0x1?_['map'](_0x3c900c[_0x5365b6]['pick_list_values'],function(_0x101d6f){return{'name':_0x101d6f,'value':_0x101d6f};}):[]});}}return{'count':_0x18de5e[_0x9246('0x48')],'rows':_0x18de5e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3479d1,null))['catch'](function(_0x2364e9){var _0x4e1ec5=_0x35c22d['query'][_0x9246('0x7c')]?0x1f4:_0x2364e9[_0x9246('0x7d')]||0x1f4;logger[_0x9246('0x29')](_0x9246('0x7e'),_0x9246('0x60'),_0x4e1ec5,JSON[_0x9246('0x7f')](_0x2364e9));delete _0x2364e9[_0x9246('0x2b')];if(_0x4e1ec5===0x191){_0x4e1ec5=0x190;}_0x3479d1[_0x9246('0x1c')](_0x4e1ec5)[_0x9246('0x2c')](_0x35c22d['query'][_0x9246('0x7c')]?{'message':_0x9246('0x80'),'statusCode':_0x2364e9['statusCode']}:_0x2364e9);});};