Built motion from commit d6d69adf.|2.6.33
[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 _0x5725=['com','serverUrl','lastIndexOf','refreshToken','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','response','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','picklist','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','update','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','map','VIRTUAL','merge','options','ZohoAccount','includeAll','include','rows','catch','show','find','create','body','params','findOne','ZohoConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','clientId','clientSecret','refresh_token','access_token','code','host','zoho.eu'];(function(_0x9f7bfd,_0x2fc934){var _0x5680bd=function(_0x3135cd){while(--_0x3135cd){_0x9f7bfd['push'](_0x9f7bfd['shift']());}};_0x5680bd(++_0x2fc934);}(_0x5725,0xa1));var _0x5572=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x5725[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0x5572('0x0'));var rimraf=require(_0x5572('0x1'));var zipdir=require(_0x5572('0x2'));var jsonpatch=require(_0x5572('0x3'));var rp=require(_0x5572('0x4'));var moment=require(_0x5572('0x5'));var BPromise=require(_0x5572('0x6'));var Mustache=require(_0x5572('0x7'));var util=require(_0x5572('0x8'));var path=require(_0x5572('0x9'));var sox=require(_0x5572('0xa'));var csv=require(_0x5572('0xb'));var ejs=require(_0x5572('0xc'));var fs=require('fs');var fs_extra=require(_0x5572('0xd'));var _=require(_0x5572('0xe'));var squel=require(_0x5572('0xf'));var crypto=require(_0x5572('0x10'));var jsforce=require(_0x5572('0x11'));var deskjs=require(_0x5572('0x12'));var toCsv=require(_0x5572('0xb'));var querystring=require(_0x5572('0x13'));var Papa=require(_0x5572('0x14'));var Redis=require('ioredis');var authService=require(_0x5572('0x15'));var qs=require(_0x5572('0x16'));var as=require(_0x5572('0x17'));var hardwareService=require(_0x5572('0x18'));var logger=require(_0x5572('0x19'))(_0x5572('0x1a'));var utils=require('../../config/utils');var config=require(_0x5572('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x5572('0x1c'))['db'];var integrations=require(_0x5572('0x1d'));function respondWithStatusCode(_0x4bd501,_0x4aca4c){_0x4aca4c=_0x4aca4c||0xcc;return function(_0x209c17){if(_0x209c17){return _0x4bd501['sendStatus'](_0x4aca4c);}return _0x4bd501['status'](_0x4aca4c)[_0x5572('0x1e')]();};}function respondWithResult(_0x148bd9,_0x13ad11){_0x13ad11=_0x13ad11||0xc8;return function(_0x374002){if(_0x374002){return _0x148bd9['status'](_0x13ad11)[_0x5572('0x1f')](_0x374002);}};}function respondWithFilteredResult(_0xd02bcc,_0x5a8230){return function(_0x3a761f){if(_0x3a761f){var _0x53fc14=typeof _0x5a8230[_0x5572('0x20')]===_0x5572('0x21')&&typeof _0x5a8230[_0x5572('0x22')]===_0x5572('0x21');var _0x45728a=_0x3a761f[_0x5572('0x23')];var _0x2af5e3=_0x53fc14?0x0:_0x5a8230[_0x5572('0x20')];var _0x47f257=_0x53fc14?_0x3a761f['count']:_0x5a8230[_0x5572('0x20')]+_0x5a8230['limit'];var _0x5bcfd9;if(_0x47f257>=_0x45728a){_0x47f257=_0x45728a;_0x5bcfd9=0xc8;}else{_0x5bcfd9=0xce;}_0xd02bcc[_0x5572('0x24')](_0x5bcfd9);return _0xd02bcc[_0x5572('0x25')](_0x5572('0x26'),_0x2af5e3+'-'+_0x47f257+'/'+_0x45728a)[_0x5572('0x1f')](_0x3a761f);}return null;};}function patchUpdates(_0x208eb3){return function(_0x3b88a2){try{jsonpatch['apply'](_0x3b88a2,_0x208eb3,!![]);}catch(_0x5971fa){return BPromise[_0x5572('0x27')](_0x5971fa);}return _0x3b88a2['save']();};}function saveUpdates(_0x63bb8d,_0x3b5395){return function(_0x293039){if(_0x293039){return _0x293039[_0x5572('0x28')](_0x63bb8d)[_0x5572('0x29')](function(_0x5c1e30){return _0x5c1e30;});}return null;};}function removeEntity(_0x19cc2b,_0x51f693){return function(_0x1955a4){if(_0x1955a4){return _0x1955a4[_0x5572('0x2a')]()['then'](function(){_0x19cc2b['status'](0xcc)[_0x5572('0x1e')]();});}};}function handleEntityNotFound(_0x104743,_0x588a62){return function(_0xc5449d){if(!_0xc5449d){_0x104743['sendStatus'](0x194);}return _0xc5449d;};}function handleError(_0x276f02,_0x52675b){_0x52675b=_0x52675b||0x1f4;return function(_0x3d4524){logger[_0x5572('0x2b')](_0x3d4524[_0x5572('0x2c')]);if(_0x3d4524[_0x5572('0x2d')]){delete _0x3d4524[_0x5572('0x2d')];}_0x276f02['status'](_0x52675b)[_0x5572('0x2e')](_0x3d4524);};}exports['index']=function(_0x26b388,_0x466513){var _0x14d265={},_0x3ae448={},_0x34f512={'count':0x0,'rows':[]};var _0x5e3a47=_['map'](db['ZohoAccount'][_0x5572('0x2f')],function(_0x5e6412){return{'name':_0x5e6412[_0x5572('0x30')],'type':_0x5e6412[_0x5572('0x31')][_0x5572('0x32')]};});_0x3ae448[_0x5572('0x33')]=_['map'](_0x5e3a47,'name');_0x3ae448['query']=_[_0x5572('0x34')](_0x26b388[_0x5572('0x35')]);_0x3ae448[_0x5572('0x36')]=_['intersection'](_0x3ae448['model'],_0x3ae448[_0x5572('0x35')]);_0x14d265[_0x5572('0x37')]=_[_0x5572('0x38')](_0x3ae448[_0x5572('0x33')],qs[_0x5572('0x39')](_0x26b388[_0x5572('0x35')][_0x5572('0x39')]));_0x14d265[_0x5572('0x37')]=_0x14d265[_0x5572('0x37')][_0x5572('0x3a')]?_0x14d265[_0x5572('0x37')]:_0x3ae448[_0x5572('0x33')];if(!_0x26b388[_0x5572('0x35')][_0x5572('0x3b')](_0x5572('0x3c'))){_0x14d265[_0x5572('0x22')]=qs[_0x5572('0x22')](_0x26b388[_0x5572('0x35')][_0x5572('0x22')]);_0x14d265[_0x5572('0x20')]=qs[_0x5572('0x20')](_0x26b388[_0x5572('0x35')][_0x5572('0x20')]);}_0x14d265['order']=qs[_0x5572('0x3d')](_0x26b388[_0x5572('0x35')][_0x5572('0x3d')]);_0x14d265[_0x5572('0x3e')]=qs['filters'](_[_0x5572('0x3f')](_0x26b388[_0x5572('0x35')],_0x3ae448[_0x5572('0x36')]),_0x5e3a47);if(_0x26b388['query'][_0x5572('0x40')]){_0x14d265[_0x5572('0x3e')]=_['merge'](_0x14d265[_0x5572('0x3e')],{'$or':_[_0x5572('0x41')](_0x5e3a47,function(_0x17adc4){if(_0x17adc4[_0x5572('0x31')]!==_0x5572('0x42')){var _0x5a6a06={};_0x5a6a06[_0x17adc4['name']]={'$like':'%'+_0x26b388[_0x5572('0x35')][_0x5572('0x40')]+'%'};return _0x5a6a06;}})});}_0x14d265=_[_0x5572('0x43')]({},_0x14d265,_0x26b388[_0x5572('0x44')]);var _0x40ad05={'where':_0x14d265[_0x5572('0x3e')]};return db[_0x5572('0x45')][_0x5572('0x23')](_0x40ad05)[_0x5572('0x29')](function(_0xe65e2b){_0x34f512['count']=_0xe65e2b;if(_0x26b388[_0x5572('0x35')][_0x5572('0x46')]){_0x14d265[_0x5572('0x47')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x14d265);})['then'](function(_0x3aa99f){_0x34f512[_0x5572('0x48')]=_0x3aa99f;return _0x34f512;})['then'](respondWithFilteredResult(_0x466513,_0x14d265))[_0x5572('0x49')](handleError(_0x466513,null));};exports[_0x5572('0x4a')]=function(_0x54b307,_0x633bc3){var _0x3278cf={'raw':![],'where':{'id':_0x54b307['params']['id']}},_0x3114f5={};_0x3114f5[_0x5572('0x33')]=_[_0x5572('0x34')](db[_0x5572('0x45')]['rawAttributes']);_0x3114f5[_0x5572('0x35')]=_['keys'](_0x54b307[_0x5572('0x35')]);_0x3114f5[_0x5572('0x36')]=_[_0x5572('0x38')](_0x3114f5[_0x5572('0x33')],_0x3114f5['query']);_0x3278cf[_0x5572('0x37')]=_[_0x5572('0x38')](_0x3114f5[_0x5572('0x33')],qs[_0x5572('0x39')](_0x54b307[_0x5572('0x35')][_0x5572('0x39')]));_0x3278cf[_0x5572('0x37')]=_0x3278cf['attributes'][_0x5572('0x3a')]?_0x3278cf[_0x5572('0x37')]:_0x3114f5[_0x5572('0x33')];if(_0x54b307[_0x5572('0x35')][_0x5572('0x46')]){_0x3278cf['include']=[{'all':!![]}];}_0x3278cf=_[_0x5572('0x43')]({},_0x3278cf,_0x54b307[_0x5572('0x44')]);return db[_0x5572('0x45')][_0x5572('0x4b')](_0x3278cf)['then'](handleEntityNotFound(_0x633bc3,null))['then'](respondWithResult(_0x633bc3,null))['catch'](handleError(_0x633bc3,null));};exports[_0x5572('0x4c')]=function(_0x409f01,_0x4547f1){return db[_0x5572('0x45')][_0x5572('0x4c')](_0x409f01[_0x5572('0x4d')],{})['then'](respondWithResult(_0x4547f1,0xc9))[_0x5572('0x49')](handleError(_0x4547f1,null));};exports['update']=function(_0x358488,_0x345df0){if(_0x358488[_0x5572('0x4d')]['id']){delete _0x358488['body']['id'];}return db['ZohoAccount'][_0x5572('0x4b')]({'where':{'id':_0x358488[_0x5572('0x4e')]['id']}})[_0x5572('0x29')](handleEntityNotFound(_0x345df0,null))[_0x5572('0x29')](saveUpdates(_0x358488[_0x5572('0x4d')],null))[_0x5572('0x29')](respondWithResult(_0x345df0,null))[_0x5572('0x49')](handleError(_0x345df0,null));};exports['destroy']=function(_0x5b3214,_0x57f4e0){return db['ZohoAccount']['find']({'where':{'id':_0x5b3214[_0x5572('0x4e')]['id']}})[_0x5572('0x29')](handleEntityNotFound(_0x57f4e0,null))[_0x5572('0x29')](removeEntity(_0x57f4e0,null))[_0x5572('0x49')](handleError(_0x57f4e0,null));};exports['getConfigurations']=function(_0x5d0c5f,_0x16e9fd,_0x3bf735){var _0x5c4789={};var _0x1f6e6c={};var _0x3037ba;var _0xb41520;return db[_0x5572('0x45')][_0x5572('0x4f')]({'where':{'id':_0x5d0c5f[_0x5572('0x4e')]['id']}})[_0x5572('0x29')](handleEntityNotFound(_0x16e9fd,null))[_0x5572('0x29')](function(_0x32f389){if(_0x32f389){_0x3037ba=_0x32f389;_0x1f6e6c['model']=_[_0x5572('0x34')](db[_0x5572('0x50')]['rawAttributes']);_0x1f6e6c[_0x5572('0x35')]=_[_0x5572('0x34')](_0x5d0c5f[_0x5572('0x35')]);_0x1f6e6c[_0x5572('0x36')]=_[_0x5572('0x38')](_0x1f6e6c[_0x5572('0x33')],_0x1f6e6c[_0x5572('0x35')]);_0x5c4789[_0x5572('0x37')]=_[_0x5572('0x38')](_0x1f6e6c[_0x5572('0x33')],qs[_0x5572('0x39')](_0x5d0c5f[_0x5572('0x35')]['fields']));_0x5c4789[_0x5572('0x37')]=_0x5c4789['attributes'][_0x5572('0x3a')]?_0x5c4789[_0x5572('0x37')]:_0x1f6e6c[_0x5572('0x33')];_0x5c4789['order']=qs[_0x5572('0x3d')](_0x5d0c5f[_0x5572('0x35')][_0x5572('0x3d')]);_0x5c4789[_0x5572('0x3e')]=qs[_0x5572('0x36')](_[_0x5572('0x3f')](_0x5d0c5f[_0x5572('0x35')],_0x1f6e6c['filters']));if(_0x5d0c5f['query'][_0x5572('0x40')]){_0x5c4789['where']=_[_0x5572('0x43')](_0x5c4789[_0x5572('0x3e')],{'$or':_['map'](_0x5c4789['attributes'],function(_0x1f152f){var _0x81ab58={};_0x81ab58[_0x1f152f]={'$like':'%'+_0x5d0c5f[_0x5572('0x35')]['filter']+'%'};return _0x81ab58;})});}_0x5c4789=_[_0x5572('0x43')]({},_0x5c4789,_0x5d0c5f['options']);return _0x3037ba[_0x5572('0x51')](_0x5c4789);}})[_0x5572('0x29')](function(_0xfda743){if(_0xfda743){_0xb41520=_0xfda743[_0x5572('0x3a')];if(!_0x5d0c5f['query']['hasOwnProperty'](_0x5572('0x3c'))){_0x5c4789[_0x5572('0x22')]=qs[_0x5572('0x22')](_0x5d0c5f[_0x5572('0x35')][_0x5572('0x22')]);_0x5c4789[_0x5572('0x20')]=qs[_0x5572('0x20')](_0x5d0c5f[_0x5572('0x35')]['offset']);}return _0x3037ba[_0x5572('0x51')](_0x5c4789);}})[_0x5572('0x29')](function(_0x263f47){if(_0x263f47){return _0x263f47?{'count':_0xb41520,'rows':_0x263f47}:null;}})[_0x5572('0x29')](respondWithResult(_0x16e9fd,null))[_0x5572('0x49')](handleError(_0x16e9fd,null));};exports[_0x5572('0x52')]=function(_0x2617bf,_0x23ec99,_0x1ca628){if(_0x2617bf[_0x5572('0x4d')]['id']){delete _0x2617bf[_0x5572('0x4d')]['id'];}return db[_0x5572('0x45')][_0x5572('0x4f')]({'where':{'id':_0x2617bf['params']['id']}})[_0x5572('0x29')](handleEntityNotFound(_0x23ec99,null))[_0x5572('0x29')](function(_0x176c41){if(_0x176c41){_0x2617bf[_0x5572('0x4d')][_0x5572('0x53')]=_0x176c41['id'];_0x2617bf['body'][_0x5572('0x54')]=integrations[_0x5572('0x55')](_0x2617bf[_0x5572('0x4d')][_0x5572('0x56')],_0x2617bf[_0x5572('0x4d')][_0x5572('0x31')]);_0x2617bf['body'][_0x5572('0x57')]=integrations['getDescriptions'](_0x2617bf[_0x5572('0x4d')]['channel'],_0x2617bf[_0x5572('0x4d')][_0x5572('0x31')]);return db[_0x5572('0x50')][_0x5572('0x4c')](_0x2617bf[_0x5572('0x4d')],{'include':[{'model':db[_0x5572('0x58')],'as':'Subjects'},{'model':db['ZohoField'],'as':_0x5572('0x57')}]});}return null;})[_0x5572('0x29')](respondWithResult(_0x23ec99,null))[_0x5572('0x49')](handleError(_0x23ec99,null));};function getAccessToken(_0x9db04e){return new Promise(function(_0x2fa4c7,_0x55ccb6){var _0x38ce72;switch(_0x9db04e['zone']){case'US':_0x38ce72=_0x5572('0x59');break;case'AU':_0x38ce72=_0x5572('0x5a');break;case'EU':_0x38ce72=_0x5572('0x5b');break;case'IN':_0x38ce72=_0x5572('0x5c');break;case'CN':_0x38ce72=_0x5572('0x5d');break;default:_0x38ce72='https://accounts.zoho.eu';break;}var _0xbb3b4e={'method':'POST','uri':_0x38ce72+'/oauth/v2/token','qs':{'refresh_token':_0x9db04e['refreshToken'],'client_id':_0x9db04e[_0x5572('0x5e')],'client_secret':_0x9db04e[_0x5572('0x5f')],'grant_type':_0x5572('0x60')},'json':!![]};return rp(_0xbb3b4e)[_0x5572('0x29')](function(_0x49dcb4){if(_0x49dcb4[_0x5572('0x61')]){_0x2fa4c7(_0x49dcb4[_0x5572('0x61')]);}else{_0x55ccb6('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x27c001){_0x55ccb6(_0x27c001);});});}exports['getFields']=function(_0x501c86,_0x4005a0,_0x21d37c){var _0x1bf32b,_0x52a593,_0x22e8eb,_0x49f4d2,_0x4a2e76;return db[_0x5572('0x45')][_0x5572('0x4f')]({'where':{'id':_0x501c86['params']['id']},'attributes':['id','host','zone',_0x5572('0x5e'),_0x5572('0x5f'),'serverUrl',_0x5572('0x62'),'refreshToken']})[_0x5572('0x29')](handleEntityNotFound(_0x4005a0,null))[_0x5572('0x29')](function(_0x2dab62){_0x4a2e76=_0x2dab62;_0x1bf32b=_0x4a2e76[_0x5572('0x63')];_0x52a593=_0x1bf32b===_0x5572('0x64')?'eu':_0x5572('0x65');_0x22e8eb=_0x4a2e76[_0x5572('0x66')];var _0x4991eb=_0x22e8eb['slice'](-0x1);if(_0x4991eb==='/'||_0x4991eb==='\x5c'||_0x4991eb===':'){_0x22e8eb=_0x22e8eb['substring'](0x0,_0x22e8eb[_0x5572('0x67')](_0x4991eb));}if(!_0x4a2e76[_0x5572('0x68')]){throw new Error(_0x5572('0x69'));}return getAccessToken(_0x4a2e76);})[_0x5572('0x29')](function(_0x222777){if(_0x222777){return rp({'method':_0x5572('0x6a'),'uri':util[_0x5572('0x6b')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x52a593),'qs':{'module':_0x5572('0x6c')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x222777},'json':!![]});}})[_0x5572('0x29')](function(_0x49156b){if(_0x49156b){if(_0x49156b[_0x5572('0x6d')]&&_0x49156b[_0x5572('0x6d')][_0x5572('0x2b')]){throw new Error(_0x49156b[_0x5572('0x6d')]['error'][_0x5572('0x6e')]);}var _0x1aad74=[];var _0x4022b3=[];var _0x384de4=[_0x5572('0x6f'),_0x5572('0x70'),_0x5572('0x71'),'WhoId',_0x5572('0x72'),_0x5572('0x73'),_0x5572('0x74'),_0x5572('0x75')];_0x4022b3=_[_0x5572('0x76')](_0x49156b[_0x5572('0x39')],function(_0x162d62){return _0x384de4[_0x5572('0x77')](_0x162d62[_0x5572('0x78')]);});for(var _0x254348=0x0;_0x254348<_0x4022b3[_0x5572('0x3a')];_0x254348++){if(_0x4022b3[_0x254348][_0x5572('0x79')]===![]){_0x1aad74[_0x5572('0x7a')]({'id':_0x4022b3[_0x254348]['id'],'name':_0x4022b3[_0x254348][_0x5572('0x7b')],'custom':_0x4022b3[_0x254348][_0x5572('0x7c')],'options':_0x4022b3[_0x254348]['data_type']===_0x5572('0x7d')&&_0x4022b3[_0x254348][_0x5572('0x7e')][_0x5572('0x3a')]>-0x1?_['map'](_0x4022b3[_0x254348][_0x5572('0x7e')],function(_0x17cd28){return{'name':_0x17cd28,'value':_0x17cd28};}):[]});}}return{'count':_0x1aad74[_0x5572('0x3a')],'rows':_0x1aad74};}else{return{'count':0x0,'rows':[]};}})[_0x5572('0x29')](respondWithResult(_0x4005a0,null))[_0x5572('0x49')](function(_0x4f514d){var _0x33f231=_0x501c86[_0x5572('0x35')]['test']?0x1f4:_0x4f514d[_0x5572('0x7f')]||0x1f4;logger['error'](_0x5572('0x80'),_0x5572('0x81'),_0x33f231,JSON['stringify'](_0x4f514d));delete _0x4f514d[_0x5572('0x2d')];if(_0x33f231===0x191){_0x33f231=0x190;}_0x4005a0[_0x5572('0x24')](_0x33f231)[_0x5572('0x2e')](_0x501c86['query']['test']?{'message':_0x5572('0x82'),'statusCode':_0x4f514d[_0x5572('0x7f')]}:_0x4f514d);});};