Built motion from commit 97153652.|2.6.26
[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 _0x7372=['find','create','body','params','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','getFields','host','clientId','serverUrl','code','zoho.eu','com','slice','substring','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Type','remove','push','display_label','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../components/integrations/configuration','sendStatus','end','status','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','ZohoAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','count','includeAll','include','findAll','catch','show'];(function(_0xfa8d0e,_0x1ea321){var _0x4c6e03=function(_0xbc7455){while(--_0xbc7455){_0xfa8d0e['push'](_0xfa8d0e['shift']());}};_0x4c6e03(++_0x1ea321);}(_0x7372,0xb3));var _0x2737=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7372[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2737('0x0'));var rimraf=require(_0x2737('0x1'));var zipdir=require(_0x2737('0x2'));var jsonpatch=require(_0x2737('0x3'));var rp=require(_0x2737('0x4'));var moment=require(_0x2737('0x5'));var BPromise=require(_0x2737('0x6'));var Mustache=require(_0x2737('0x7'));var util=require(_0x2737('0x8'));var path=require('path');var sox=require(_0x2737('0x9'));var csv=require(_0x2737('0xa'));var ejs=require(_0x2737('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2737('0xc'));var squel=require(_0x2737('0xd'));var crypto=require('crypto');var jsforce=require(_0x2737('0xe'));var deskjs=require(_0x2737('0xf'));var toCsv=require('to-csv');var querystring=require(_0x2737('0x10'));var Papa=require('papaparse');var Redis=require(_0x2737('0x11'));var authService=require(_0x2737('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2737('0x13'));var hardwareService=require(_0x2737('0x14'));var logger=require(_0x2737('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2737('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x2737('0x17'));function respondWithStatusCode(_0x49356f,_0x2a5d3f){_0x2a5d3f=_0x2a5d3f||0xcc;return function(_0xd8a6a2){if(_0xd8a6a2){return _0x49356f[_0x2737('0x18')](_0x2a5d3f);}return _0x49356f['status'](_0x2a5d3f)[_0x2737('0x19')]();};}function respondWithResult(_0x41c495,_0x39c9a1){_0x39c9a1=_0x39c9a1||0xc8;return function(_0x556575){if(_0x556575){return _0x41c495[_0x2737('0x1a')](_0x39c9a1)[_0x2737('0x1b')](_0x556575);}};}function respondWithFilteredResult(_0x2f1e32,_0xcd14c9){return function(_0x28150b){if(_0x28150b){var _0x49fd83=typeof _0xcd14c9['offset']===_0x2737('0x1c')&&typeof _0xcd14c9[_0x2737('0x1d')]==='undefined';var _0x4d2fb2=_0x28150b['count'];var _0x281afd=_0x49fd83?0x0:_0xcd14c9['offset'];var _0x2380d9=_0x49fd83?_0x28150b['count']:_0xcd14c9[_0x2737('0x1e')]+_0xcd14c9[_0x2737('0x1d')];var _0x3280dd;if(_0x2380d9>=_0x4d2fb2){_0x2380d9=_0x4d2fb2;_0x3280dd=0xc8;}else{_0x3280dd=0xce;}_0x2f1e32[_0x2737('0x1a')](_0x3280dd);return _0x2f1e32[_0x2737('0x1f')](_0x2737('0x20'),_0x281afd+'-'+_0x2380d9+'/'+_0x4d2fb2)[_0x2737('0x1b')](_0x28150b);}return null;};}function patchUpdates(_0x85e61c){return function(_0x329743){try{jsonpatch[_0x2737('0x21')](_0x329743,_0x85e61c,!![]);}catch(_0xf319f6){return BPromise[_0x2737('0x22')](_0xf319f6);}return _0x329743[_0x2737('0x23')]();};}function saveUpdates(_0x101ee9,_0x323213){return function(_0x5dc232){if(_0x5dc232){return _0x5dc232[_0x2737('0x24')](_0x101ee9)[_0x2737('0x25')](function(_0x17933f){return _0x17933f;});}return null;};}function removeEntity(_0x50c0fa,_0x13d654){return function(_0xe301a2){if(_0xe301a2){return _0xe301a2[_0x2737('0x26')]()[_0x2737('0x25')](function(){_0x50c0fa[_0x2737('0x1a')](0xcc)[_0x2737('0x19')]();});}};}function handleEntityNotFound(_0x34967f,_0x63fcf4){return function(_0x159f53){if(!_0x159f53){_0x34967f['sendStatus'](0x194);}return _0x159f53;};}function handleError(_0x327827,_0x1a4e27){_0x1a4e27=_0x1a4e27||0x1f4;return function(_0x1146f6){logger[_0x2737('0x27')](_0x1146f6['stack']);if(_0x1146f6[_0x2737('0x28')]){delete _0x1146f6[_0x2737('0x28')];}_0x327827[_0x2737('0x1a')](_0x1a4e27)[_0x2737('0x29')](_0x1146f6);};}exports[_0x2737('0x2a')]=function(_0x5a1af5,_0x5889fe){var _0x29d6e8={},_0x4ff9b7={},_0x159fdd={'count':0x0,'rows':[]};var _0x331ec8=_[_0x2737('0x2b')](db[_0x2737('0x2c')][_0x2737('0x2d')],function(_0x32152e){return{'name':_0x32152e['fieldName'],'type':_0x32152e['type'][_0x2737('0x2e')]};});_0x4ff9b7[_0x2737('0x2f')]=_[_0x2737('0x2b')](_0x331ec8,_0x2737('0x28'));_0x4ff9b7[_0x2737('0x30')]=_[_0x2737('0x31')](_0x5a1af5[_0x2737('0x30')]);_0x4ff9b7[_0x2737('0x32')]=_[_0x2737('0x33')](_0x4ff9b7['model'],_0x4ff9b7[_0x2737('0x30')]);_0x29d6e8[_0x2737('0x34')]=_[_0x2737('0x33')](_0x4ff9b7[_0x2737('0x2f')],qs[_0x2737('0x35')](_0x5a1af5[_0x2737('0x30')][_0x2737('0x35')]));_0x29d6e8[_0x2737('0x34')]=_0x29d6e8['attributes'][_0x2737('0x36')]?_0x29d6e8['attributes']:_0x4ff9b7[_0x2737('0x2f')];if(!_0x5a1af5[_0x2737('0x30')][_0x2737('0x37')](_0x2737('0x38'))){_0x29d6e8[_0x2737('0x1d')]=qs[_0x2737('0x1d')](_0x5a1af5[_0x2737('0x30')][_0x2737('0x1d')]);_0x29d6e8[_0x2737('0x1e')]=qs[_0x2737('0x1e')](_0x5a1af5[_0x2737('0x30')]['offset']);}_0x29d6e8[_0x2737('0x39')]=qs[_0x2737('0x3a')](_0x5a1af5[_0x2737('0x30')][_0x2737('0x3a')]);_0x29d6e8[_0x2737('0x3b')]=qs[_0x2737('0x32')](_[_0x2737('0x3c')](_0x5a1af5[_0x2737('0x30')],_0x4ff9b7['filters']),_0x331ec8);if(_0x5a1af5[_0x2737('0x30')][_0x2737('0x3d')]){_0x29d6e8[_0x2737('0x3b')]=_[_0x2737('0x3e')](_0x29d6e8[_0x2737('0x3b')],{'$or':_[_0x2737('0x2b')](_0x331ec8,function(_0x5f3114){if(_0x5f3114[_0x2737('0x3f')]!=='VIRTUAL'){var _0x2f9bf6={};_0x2f9bf6[_0x5f3114[_0x2737('0x28')]]={'$like':'%'+_0x5a1af5[_0x2737('0x30')][_0x2737('0x3d')]+'%'};return _0x2f9bf6;}})});}_0x29d6e8=_[_0x2737('0x3e')]({},_0x29d6e8,_0x5a1af5[_0x2737('0x40')]);var _0x239152={'where':_0x29d6e8[_0x2737('0x3b')]};return db[_0x2737('0x2c')][_0x2737('0x41')](_0x239152)[_0x2737('0x25')](function(_0x192c37){_0x159fdd['count']=_0x192c37;if(_0x5a1af5[_0x2737('0x30')][_0x2737('0x42')]){_0x29d6e8[_0x2737('0x43')]=[{'all':!![]}];}return db[_0x2737('0x2c')][_0x2737('0x44')](_0x29d6e8);})[_0x2737('0x25')](function(_0x4b9bc3){_0x159fdd['rows']=_0x4b9bc3;return _0x159fdd;})[_0x2737('0x25')](respondWithFilteredResult(_0x5889fe,_0x29d6e8))[_0x2737('0x45')](handleError(_0x5889fe,null));};exports[_0x2737('0x46')]=function(_0x4c5261,_0x616399){var _0x20d053={'raw':![],'where':{'id':_0x4c5261['params']['id']}},_0x18dc3b={};_0x18dc3b[_0x2737('0x2f')]=_[_0x2737('0x31')](db[_0x2737('0x2c')][_0x2737('0x2d')]);_0x18dc3b[_0x2737('0x30')]=_[_0x2737('0x31')](_0x4c5261['query']);_0x18dc3b[_0x2737('0x32')]=_['intersection'](_0x18dc3b[_0x2737('0x2f')],_0x18dc3b[_0x2737('0x30')]);_0x20d053[_0x2737('0x34')]=_[_0x2737('0x33')](_0x18dc3b[_0x2737('0x2f')],qs['fields'](_0x4c5261[_0x2737('0x30')]['fields']));_0x20d053[_0x2737('0x34')]=_0x20d053['attributes'][_0x2737('0x36')]?_0x20d053[_0x2737('0x34')]:_0x18dc3b[_0x2737('0x2f')];if(_0x4c5261[_0x2737('0x30')]['includeAll']){_0x20d053[_0x2737('0x43')]=[{'all':!![]}];}_0x20d053=_[_0x2737('0x3e')]({},_0x20d053,_0x4c5261[_0x2737('0x40')]);return db[_0x2737('0x2c')][_0x2737('0x47')](_0x20d053)[_0x2737('0x25')](handleEntityNotFound(_0x616399,null))[_0x2737('0x25')](respondWithResult(_0x616399,null))['catch'](handleError(_0x616399,null));};exports[_0x2737('0x48')]=function(_0x3ea127,_0x3080ed){return db[_0x2737('0x2c')][_0x2737('0x48')](_0x3ea127[_0x2737('0x49')],{})[_0x2737('0x25')](respondWithResult(_0x3080ed,0xc9))['catch'](handleError(_0x3080ed,null));};exports[_0x2737('0x24')]=function(_0x318df8,_0x2a0fb5){if(_0x318df8[_0x2737('0x49')]['id']){delete _0x318df8[_0x2737('0x49')]['id'];}return db['ZohoAccount'][_0x2737('0x47')]({'where':{'id':_0x318df8[_0x2737('0x4a')]['id']}})[_0x2737('0x25')](handleEntityNotFound(_0x2a0fb5,null))[_0x2737('0x25')](saveUpdates(_0x318df8['body'],null))[_0x2737('0x25')](respondWithResult(_0x2a0fb5,null))[_0x2737('0x45')](handleError(_0x2a0fb5,null));};exports[_0x2737('0x26')]=function(_0x2e9ffb,_0x187ea3){return db[_0x2737('0x2c')][_0x2737('0x47')]({'where':{'id':_0x2e9ffb[_0x2737('0x4a')]['id']}})['then'](handleEntityNotFound(_0x187ea3,null))[_0x2737('0x25')](removeEntity(_0x187ea3,null))['catch'](handleError(_0x187ea3,null));};exports[_0x2737('0x4b')]=function(_0x23d31c,_0x3441d5,_0x18b8dd){var _0x5ca40a={};var _0x5ae122={};var _0x808067;var _0x37dbc6;return db[_0x2737('0x2c')]['findOne']({'where':{'id':_0x23d31c[_0x2737('0x4a')]['id']}})[_0x2737('0x25')](handleEntityNotFound(_0x3441d5,null))[_0x2737('0x25')](function(_0x3a61a5){if(_0x3a61a5){_0x808067=_0x3a61a5;_0x5ae122[_0x2737('0x2f')]=_[_0x2737('0x31')](db['ZohoConfiguration'][_0x2737('0x2d')]);_0x5ae122[_0x2737('0x30')]=_[_0x2737('0x31')](_0x23d31c[_0x2737('0x30')]);_0x5ae122[_0x2737('0x32')]=_[_0x2737('0x33')](_0x5ae122[_0x2737('0x2f')],_0x5ae122[_0x2737('0x30')]);_0x5ca40a['attributes']=_[_0x2737('0x33')](_0x5ae122['model'],qs['fields'](_0x23d31c[_0x2737('0x30')][_0x2737('0x35')]));_0x5ca40a['attributes']=_0x5ca40a[_0x2737('0x34')][_0x2737('0x36')]?_0x5ca40a['attributes']:_0x5ae122[_0x2737('0x2f')];_0x5ca40a['order']=qs[_0x2737('0x3a')](_0x23d31c[_0x2737('0x30')][_0x2737('0x3a')]);_0x5ca40a[_0x2737('0x3b')]=qs[_0x2737('0x32')](_[_0x2737('0x3c')](_0x23d31c[_0x2737('0x30')],_0x5ae122[_0x2737('0x32')]));if(_0x23d31c[_0x2737('0x30')][_0x2737('0x3d')]){_0x5ca40a[_0x2737('0x3b')]=_['merge'](_0x5ca40a[_0x2737('0x3b')],{'$or':_['map'](_0x5ca40a[_0x2737('0x34')],function(_0x3645de){var _0x3e9c6d={};_0x3e9c6d[_0x3645de]={'$like':'%'+_0x23d31c[_0x2737('0x30')][_0x2737('0x3d')]+'%'};return _0x3e9c6d;})});}_0x5ca40a=_[_0x2737('0x3e')]({},_0x5ca40a,_0x23d31c[_0x2737('0x40')]);return _0x808067[_0x2737('0x4b')](_0x5ca40a);}})[_0x2737('0x25')](function(_0x2f602a){if(_0x2f602a){_0x37dbc6=_0x2f602a[_0x2737('0x36')];if(!_0x23d31c['query'][_0x2737('0x37')](_0x2737('0x38'))){_0x5ca40a[_0x2737('0x1d')]=qs[_0x2737('0x1d')](_0x23d31c[_0x2737('0x30')][_0x2737('0x1d')]);_0x5ca40a[_0x2737('0x1e')]=qs['offset'](_0x23d31c[_0x2737('0x30')][_0x2737('0x1e')]);}return _0x808067[_0x2737('0x4b')](_0x5ca40a);}})[_0x2737('0x25')](function(_0x4ea45b){if(_0x4ea45b){return _0x4ea45b?{'count':_0x37dbc6,'rows':_0x4ea45b}:null;}})[_0x2737('0x25')](respondWithResult(_0x3441d5,null))['catch'](handleError(_0x3441d5,null));};exports[_0x2737('0x4c')]=function(_0x47e2f4,_0x4f4515,_0x1afb58){if(_0x47e2f4[_0x2737('0x49')]['id']){delete _0x47e2f4['body']['id'];}return db[_0x2737('0x2c')][_0x2737('0x4d')]({'where':{'id':_0x47e2f4[_0x2737('0x4a')]['id']}})[_0x2737('0x25')](handleEntityNotFound(_0x4f4515,null))[_0x2737('0x25')](function(_0x1d8c58){if(_0x1d8c58){_0x47e2f4[_0x2737('0x49')][_0x2737('0x4e')]=_0x1d8c58['id'];_0x47e2f4[_0x2737('0x49')]['Subjects']=integrations[_0x2737('0x4f')](_0x47e2f4[_0x2737('0x49')][_0x2737('0x50')],_0x47e2f4[_0x2737('0x49')][_0x2737('0x3f')]);_0x47e2f4[_0x2737('0x49')][_0x2737('0x51')]=integrations[_0x2737('0x52')](_0x47e2f4['body'][_0x2737('0x50')],_0x47e2f4[_0x2737('0x49')][_0x2737('0x3f')]);return db[_0x2737('0x53')][_0x2737('0x48')](_0x47e2f4['body'],{'include':[{'model':db['ZohoField'],'as':'Subjects'},{'model':db[_0x2737('0x54')],'as':'Descriptions'}]});}return null;})[_0x2737('0x25')](respondWithResult(_0x4f4515,null))[_0x2737('0x45')](handleError(_0x4f4515,null));};function getAccessToken(_0x1bb685){return new Promise(function(_0x57cf77,_0x415fc6){var _0x381c63;switch(_0x1bb685[_0x2737('0x55')]){case'US':_0x381c63='https://accounts.zoho.com';break;case'AU':_0x381c63=_0x2737('0x56');break;case'EU':_0x381c63='https://accounts.zoho.eu';break;case'IN':_0x381c63='https://accounts.zoho.in';break;case'CN':_0x381c63='https://accounts.zoho.com.cn';break;default:_0x381c63=_0x2737('0x57');break;}var _0x48f302={'method':_0x2737('0x58'),'uri':_0x381c63+_0x2737('0x59'),'qs':{'refresh_token':_0x1bb685[_0x2737('0x5a')],'client_id':_0x1bb685['clientId'],'client_secret':_0x1bb685[_0x2737('0x5b')],'grant_type':_0x2737('0x5c')},'json':!![]};return rp(_0x48f302)[_0x2737('0x25')](function(_0x3337db){if(_0x3337db['access_token']){_0x57cf77(_0x3337db[_0x2737('0x5d')]);}else{_0x415fc6('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x2737('0x45')](function(_0x217b61){_0x415fc6(_0x217b61);});});}exports[_0x2737('0x5e')]=function(_0x48a92d,_0x2ddac9,_0x3f3b63){var _0x21c45b,_0x5b7c9a,_0x4be8b1,_0x3e8037,_0x4e4005;return db[_0x2737('0x2c')]['findOne']({'where':{'id':_0x48a92d[_0x2737('0x4a')]['id']},'attributes':['id',_0x2737('0x5f'),_0x2737('0x55'),_0x2737('0x60'),_0x2737('0x5b'),_0x2737('0x61'),_0x2737('0x62'),'refreshToken']})[_0x2737('0x25')](handleEntityNotFound(_0x2ddac9,null))[_0x2737('0x25')](function(_0xea98bc){_0x4e4005=_0xea98bc;_0x21c45b=_0x4e4005['host'];_0x5b7c9a=_0x21c45b===_0x2737('0x63')?'eu':_0x2737('0x64');_0x4be8b1=_0x4e4005[_0x2737('0x61')];var _0x4f3395=_0x4be8b1[_0x2737('0x65')](-0x1);if(_0x4f3395==='/'||_0x4f3395==='\x5c'||_0x4f3395===':'){_0x4be8b1=_0x4be8b1[_0x2737('0x66')](0x0,_0x4be8b1['lastIndexOf'](_0x4f3395));}if(!_0x4e4005[_0x2737('0x5a')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x4e4005);})['then'](function(_0x358a3d){if(_0x358a3d){return rp({'method':_0x2737('0x67'),'uri':util['format'](_0x2737('0x68'),_0x5b7c9a),'qs':{'module':_0x2737('0x69')},'headers':{'Authorization':_0x2737('0x6a')+_0x358a3d},'json':!![]});}})[_0x2737('0x25')](function(_0x3040f7){if(_0x3040f7){if(_0x3040f7[_0x2737('0x6b')]&&_0x3040f7[_0x2737('0x6b')][_0x2737('0x27')]){throw new Error(_0x3040f7[_0x2737('0x6b')][_0x2737('0x27')][_0x2737('0x6c')]);}var _0x40ce5b=[];var _0x324bd1=[];var _0x1be0d7=[_0x2737('0x6d'),_0x2737('0x6e'),_0x2737('0x6f'),'WhoId',_0x2737('0x70'),_0x2737('0x71'),'Call_Start_Time',_0x2737('0x72')];_0x324bd1=_[_0x2737('0x73')](_0x3040f7['fields'],function(_0x11cf44){return _0x1be0d7['includes'](_0x11cf44['api_name']);});for(var _0x36eaca=0x0;_0x36eaca<_0x324bd1[_0x2737('0x36')];_0x36eaca++){if(_0x324bd1[_0x36eaca]['system_mandatory']===![]){_0x40ce5b[_0x2737('0x74')]({'id':_0x324bd1[_0x36eaca]['id'],'name':_0x324bd1[_0x36eaca][_0x2737('0x75')],'custom':_0x324bd1[_0x36eaca]['custom_field'],'options':_0x324bd1[_0x36eaca][_0x2737('0x76')]===_0x2737('0x77')&&_0x324bd1[_0x36eaca][_0x2737('0x78')]['length']>-0x1?_[_0x2737('0x2b')](_0x324bd1[_0x36eaca][_0x2737('0x78')],function(_0x59acf9){return{'name':_0x59acf9,'value':_0x59acf9};}):[]});}}return{'count':_0x40ce5b['length'],'rows':_0x40ce5b};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x2ddac9,null))[_0x2737('0x45')](function(_0x480e67){var _0x126d58=_0x48a92d['query'][_0x2737('0x79')]?0x1f4:_0x480e67[_0x2737('0x7a')]||0x1f4;logger[_0x2737('0x27')](_0x2737('0x7b'),'getFields',_0x126d58,JSON['stringify'](_0x480e67));delete _0x480e67[_0x2737('0x28')];if(_0x126d58===0x191){_0x126d58=0x190;}_0x2ddac9[_0x2737('0x1a')](_0x126d58)[_0x2737('0x29')](_0x48a92d[_0x2737('0x30')][_0x2737('0x79')]?{'message':_0x2737('0x7c'),'statusCode':_0x480e67[_0x2737('0x7a')]}:_0x480e67);});};