Built motion from commit 85328c08.|2.5.50
[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 _0xe157=['save','update','destroy','end','error','stack','name','send','index','map','ZohoAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','getConfigurations','findOne','params','ZohoConfiguration','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','code','host','serverUrl','slice','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','test','statusCode','getFields','stringify','zip-dir','fast-json-patch','request-promise','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0xe157,0xd8));var _0x7e15=function(_0x461c6c,_0xf3e8d2){_0x461c6c=_0x461c6c-0x0;var _0x4d0d7a=_0xe157[_0x461c6c];return _0x4d0d7a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7e15('0x0'));var jsonpatch=require(_0x7e15('0x1'));var rp=require(_0x7e15('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7e15('0x3'));var ejs=require(_0x7e15('0x4'));var fs=require('fs');var fs_extra=require(_0x7e15('0x5'));var _=require('lodash');var squel=require(_0x7e15('0x6'));var crypto=require(_0x7e15('0x7'));var jsforce=require(_0x7e15('0x8'));var deskjs=require(_0x7e15('0x9'));var toCsv=require(_0x7e15('0x3'));var querystring=require('querystring');var Papa=require(_0x7e15('0xa'));var Redis=require(_0x7e15('0xb'));var authService=require(_0x7e15('0xc'));var qs=require(_0x7e15('0xd'));var as=require(_0x7e15('0xe'));var hardwareService=require(_0x7e15('0xf'));var logger=require(_0x7e15('0x10'))(_0x7e15('0x11'));var utils=require(_0x7e15('0x12'));var config=require(_0x7e15('0x13'));var licenseUtil=require(_0x7e15('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0x7e15('0x15'));function respondWithStatusCode(_0x59a080,_0x387ee4){_0x387ee4=_0x387ee4||0xcc;return function(_0x13b9fc){if(_0x13b9fc){return _0x59a080[_0x7e15('0x16')](_0x387ee4);}return _0x59a080['status'](_0x387ee4)['end']();};}function respondWithResult(_0x1c07e7,_0x217027){_0x217027=_0x217027||0xc8;return function(_0x1a3099){if(_0x1a3099){return _0x1c07e7[_0x7e15('0x17')](_0x217027)[_0x7e15('0x18')](_0x1a3099);}};}function respondWithFilteredResult(_0x3ca814,_0x54ed93){return function(_0x2ff13c){if(_0x2ff13c){var _0xfd48ca=typeof _0x54ed93[_0x7e15('0x19')]===_0x7e15('0x1a')&&typeof _0x54ed93[_0x7e15('0x1b')]==='undefined';var _0x12e9c6=_0x2ff13c[_0x7e15('0x1c')];var _0x25090a=_0xfd48ca?0x0:_0x54ed93[_0x7e15('0x19')];var _0xe36240=_0xfd48ca?_0x2ff13c[_0x7e15('0x1c')]:_0x54ed93[_0x7e15('0x19')]+_0x54ed93[_0x7e15('0x1b')];var _0x176405;if(_0xe36240>=_0x12e9c6){_0xe36240=_0x12e9c6;_0x176405=0xc8;}else{_0x176405=0xce;}_0x3ca814[_0x7e15('0x17')](_0x176405);return _0x3ca814['set'](_0x7e15('0x1d'),_0x25090a+'-'+_0xe36240+'/'+_0x12e9c6)[_0x7e15('0x18')](_0x2ff13c);}return null;};}function patchUpdates(_0x24c721){return function(_0x4a071b){try{jsonpatch[_0x7e15('0x1e')](_0x4a071b,_0x24c721,!![]);}catch(_0x4ef8c1){return BPromise[_0x7e15('0x1f')](_0x4ef8c1);}return _0x4a071b[_0x7e15('0x20')]();};}function saveUpdates(_0x13319a,_0x6b7e0a){return function(_0x1a7f25){if(_0x1a7f25){return _0x1a7f25[_0x7e15('0x21')](_0x13319a)['then'](function(_0xa52664){return _0xa52664;});}return null;};}function removeEntity(_0xcece3f,_0x50c3ed){return function(_0x5be565){if(_0x5be565){return _0x5be565[_0x7e15('0x22')]()['then'](function(){_0xcece3f['status'](0xcc)[_0x7e15('0x23')]();});}};}function handleEntityNotFound(_0x14f0fd,_0x3e9db0){return function(_0x3a1e77){if(!_0x3a1e77){_0x14f0fd[_0x7e15('0x16')](0x194);}return _0x3a1e77;};}function handleError(_0x576a8c,_0x44d0f9){_0x44d0f9=_0x44d0f9||0x1f4;return function(_0x1be782){logger[_0x7e15('0x24')](_0x1be782[_0x7e15('0x25')]);if(_0x1be782[_0x7e15('0x26')]){delete _0x1be782['name'];}_0x576a8c[_0x7e15('0x17')](_0x44d0f9)[_0x7e15('0x27')](_0x1be782);};}exports[_0x7e15('0x28')]=function(_0x41b8c0,_0x2ee85f){var _0x25d55f={},_0x48a76c={},_0x4c5813={'count':0x0,'rows':[]};var _0x4aa3df=_[_0x7e15('0x29')](db[_0x7e15('0x2a')]['rawAttributes'],function(_0x588c83){return{'name':_0x588c83[_0x7e15('0x2b')],'type':_0x588c83[_0x7e15('0x2c')][_0x7e15('0x2d')]};});_0x48a76c['model']=_[_0x7e15('0x29')](_0x4aa3df,'name');_0x48a76c[_0x7e15('0x2e')]=_[_0x7e15('0x2f')](_0x41b8c0[_0x7e15('0x2e')]);_0x48a76c[_0x7e15('0x30')]=_[_0x7e15('0x31')](_0x48a76c[_0x7e15('0x32')],_0x48a76c[_0x7e15('0x2e')]);_0x25d55f[_0x7e15('0x33')]=_[_0x7e15('0x31')](_0x48a76c[_0x7e15('0x32')],qs[_0x7e15('0x34')](_0x41b8c0[_0x7e15('0x2e')]['fields']));_0x25d55f[_0x7e15('0x33')]=_0x25d55f[_0x7e15('0x33')][_0x7e15('0x35')]?_0x25d55f['attributes']:_0x48a76c[_0x7e15('0x32')];if(!_0x41b8c0[_0x7e15('0x2e')][_0x7e15('0x36')](_0x7e15('0x37'))){_0x25d55f['limit']=qs[_0x7e15('0x1b')](_0x41b8c0['query']['limit']);_0x25d55f[_0x7e15('0x19')]=qs['offset'](_0x41b8c0[_0x7e15('0x2e')]['offset']);}_0x25d55f[_0x7e15('0x38')]=qs['sort'](_0x41b8c0[_0x7e15('0x2e')][_0x7e15('0x39')]);_0x25d55f[_0x7e15('0x3a')]=qs[_0x7e15('0x30')](_[_0x7e15('0x3b')](_0x41b8c0['query'],_0x48a76c['filters']),_0x4aa3df);if(_0x41b8c0[_0x7e15('0x2e')][_0x7e15('0x3c')]){_0x25d55f[_0x7e15('0x3a')]=_[_0x7e15('0x3d')](_0x25d55f[_0x7e15('0x3a')],{'$or':_[_0x7e15('0x29')](_0x4aa3df,function(_0x598542){if(_0x598542[_0x7e15('0x2c')]!==_0x7e15('0x3e')){var _0x3457ec={};_0x3457ec[_0x598542[_0x7e15('0x26')]]={'$like':'%'+_0x41b8c0[_0x7e15('0x2e')]['filter']+'%'};return _0x3457ec;}})});}_0x25d55f=_[_0x7e15('0x3d')]({},_0x25d55f,_0x41b8c0[_0x7e15('0x3f')]);var _0x4a21f4={'where':_0x25d55f[_0x7e15('0x3a')]};return db[_0x7e15('0x2a')]['count'](_0x4a21f4)[_0x7e15('0x40')](function(_0x32bf4b){_0x4c5813[_0x7e15('0x1c')]=_0x32bf4b;if(_0x41b8c0[_0x7e15('0x2e')][_0x7e15('0x41')]){_0x25d55f[_0x7e15('0x42')]=[{'all':!![]}];}return db[_0x7e15('0x2a')][_0x7e15('0x43')](_0x25d55f);})[_0x7e15('0x40')](function(_0x1d3309){_0x4c5813[_0x7e15('0x44')]=_0x1d3309;return _0x4c5813;})[_0x7e15('0x40')](respondWithFilteredResult(_0x2ee85f,_0x25d55f))[_0x7e15('0x45')](handleError(_0x2ee85f,null));};exports['show']=function(_0x28f032,_0x1494fa){var _0x294dd6={'raw':![],'where':{'id':_0x28f032['params']['id']}},_0x56faaf={};_0x56faaf[_0x7e15('0x32')]=_[_0x7e15('0x2f')](db['ZohoAccount'][_0x7e15('0x46')]);_0x56faaf[_0x7e15('0x2e')]=_[_0x7e15('0x2f')](_0x28f032[_0x7e15('0x2e')]);_0x56faaf[_0x7e15('0x30')]=_[_0x7e15('0x31')](_0x56faaf[_0x7e15('0x32')],_0x56faaf['query']);_0x294dd6[_0x7e15('0x33')]=_[_0x7e15('0x31')](_0x56faaf[_0x7e15('0x32')],qs[_0x7e15('0x34')](_0x28f032[_0x7e15('0x2e')][_0x7e15('0x34')]));_0x294dd6[_0x7e15('0x33')]=_0x294dd6[_0x7e15('0x33')][_0x7e15('0x35')]?_0x294dd6['attributes']:_0x56faaf['model'];if(_0x28f032[_0x7e15('0x2e')][_0x7e15('0x41')]){_0x294dd6[_0x7e15('0x42')]=[{'all':!![]}];}_0x294dd6=_[_0x7e15('0x3d')]({},_0x294dd6,_0x28f032[_0x7e15('0x3f')]);return db['ZohoAccount'][_0x7e15('0x47')](_0x294dd6)[_0x7e15('0x40')](handleEntityNotFound(_0x1494fa,null))[_0x7e15('0x40')](respondWithResult(_0x1494fa,null))[_0x7e15('0x45')](handleError(_0x1494fa,null));};exports[_0x7e15('0x48')]=function(_0x168ecc,_0x532fd7){return db[_0x7e15('0x2a')][_0x7e15('0x48')](_0x168ecc['body'],{})[_0x7e15('0x40')](respondWithResult(_0x532fd7,0xc9))['catch'](handleError(_0x532fd7,null));};exports[_0x7e15('0x21')]=function(_0x3f398b,_0x23b4d2){if(_0x3f398b['body']['id']){delete _0x3f398b['body']['id'];}return db[_0x7e15('0x2a')][_0x7e15('0x47')]({'where':{'id':_0x3f398b['params']['id']}})[_0x7e15('0x40')](handleEntityNotFound(_0x23b4d2,null))[_0x7e15('0x40')](saveUpdates(_0x3f398b[_0x7e15('0x49')],null))['then'](respondWithResult(_0x23b4d2,null))[_0x7e15('0x45')](handleError(_0x23b4d2,null));};exports[_0x7e15('0x22')]=function(_0x458f07,_0xc6ab79){return db[_0x7e15('0x2a')]['find']({'where':{'id':_0x458f07['params']['id']}})[_0x7e15('0x40')](handleEntityNotFound(_0xc6ab79,null))[_0x7e15('0x40')](removeEntity(_0xc6ab79,null))['catch'](handleError(_0xc6ab79,null));};exports[_0x7e15('0x4a')]=function(_0x5287a8,_0x54582e,_0x44f37d){var _0x512e12={};var _0x2ab93d={};var _0x48f27c;var _0x383fbb;return db['ZohoAccount'][_0x7e15('0x4b')]({'where':{'id':_0x5287a8[_0x7e15('0x4c')]['id']}})[_0x7e15('0x40')](handleEntityNotFound(_0x54582e,null))[_0x7e15('0x40')](function(_0x262021){if(_0x262021){_0x48f27c=_0x262021;_0x2ab93d[_0x7e15('0x32')]=_[_0x7e15('0x2f')](db[_0x7e15('0x4d')]['rawAttributes']);_0x2ab93d[_0x7e15('0x2e')]=_['keys'](_0x5287a8[_0x7e15('0x2e')]);_0x2ab93d[_0x7e15('0x30')]=_['intersection'](_0x2ab93d[_0x7e15('0x32')],_0x2ab93d[_0x7e15('0x2e')]);_0x512e12[_0x7e15('0x33')]=_[_0x7e15('0x31')](_0x2ab93d['model'],qs['fields'](_0x5287a8[_0x7e15('0x2e')][_0x7e15('0x34')]));_0x512e12[_0x7e15('0x33')]=_0x512e12[_0x7e15('0x33')][_0x7e15('0x35')]?_0x512e12[_0x7e15('0x33')]:_0x2ab93d['model'];_0x512e12[_0x7e15('0x38')]=qs[_0x7e15('0x39')](_0x5287a8[_0x7e15('0x2e')]['sort']);_0x512e12['where']=qs[_0x7e15('0x30')](_[_0x7e15('0x3b')](_0x5287a8[_0x7e15('0x2e')],_0x2ab93d[_0x7e15('0x30')]));if(_0x5287a8['query'][_0x7e15('0x3c')]){_0x512e12['where']=_[_0x7e15('0x3d')](_0x512e12[_0x7e15('0x3a')],{'$or':_[_0x7e15('0x29')](_0x512e12[_0x7e15('0x33')],function(_0x2f636c){var _0x197c45={};_0x197c45[_0x2f636c]={'$like':'%'+_0x5287a8['query'][_0x7e15('0x3c')]+'%'};return _0x197c45;})});}_0x512e12=_[_0x7e15('0x3d')]({},_0x512e12,_0x5287a8[_0x7e15('0x3f')]);return _0x48f27c['getConfigurations'](_0x512e12);}})[_0x7e15('0x40')](function(_0x295dc6){if(_0x295dc6){_0x383fbb=_0x295dc6[_0x7e15('0x35')];if(!_0x5287a8['query']['hasOwnProperty'](_0x7e15('0x37'))){_0x512e12[_0x7e15('0x1b')]=qs[_0x7e15('0x1b')](_0x5287a8[_0x7e15('0x2e')]['limit']);_0x512e12[_0x7e15('0x19')]=qs['offset'](_0x5287a8[_0x7e15('0x2e')][_0x7e15('0x19')]);}return _0x48f27c['getConfigurations'](_0x512e12);}})[_0x7e15('0x40')](function(_0x561c82){if(_0x561c82){return _0x561c82?{'count':_0x383fbb,'rows':_0x561c82}:null;}})[_0x7e15('0x40')](respondWithResult(_0x54582e,null))[_0x7e15('0x45')](handleError(_0x54582e,null));};exports[_0x7e15('0x4e')]=function(_0x54e5d7,_0x21d1f8,_0x2babd5){if(_0x54e5d7[_0x7e15('0x49')]['id']){delete _0x54e5d7[_0x7e15('0x49')]['id'];}return db[_0x7e15('0x2a')][_0x7e15('0x4b')]({'where':{'id':_0x54e5d7['params']['id']}})['then'](handleEntityNotFound(_0x21d1f8,null))['then'](function(_0x4fad84){if(_0x4fad84){_0x54e5d7[_0x7e15('0x49')]['AccountId']=_0x4fad84['id'];_0x54e5d7[_0x7e15('0x49')][_0x7e15('0x4f')]=integrations[_0x7e15('0x50')](_0x54e5d7['body'][_0x7e15('0x51')],_0x54e5d7['body'][_0x7e15('0x2c')]);_0x54e5d7[_0x7e15('0x49')][_0x7e15('0x52')]=integrations[_0x7e15('0x53')](_0x54e5d7[_0x7e15('0x49')][_0x7e15('0x51')],_0x54e5d7[_0x7e15('0x49')][_0x7e15('0x2c')]);return db[_0x7e15('0x4d')][_0x7e15('0x48')](_0x54e5d7[_0x7e15('0x49')],{'include':[{'model':db[_0x7e15('0x54')],'as':_0x7e15('0x4f')},{'model':db['ZohoField'],'as':_0x7e15('0x52')}]});}return null;})['then'](respondWithResult(_0x21d1f8,null))[_0x7e15('0x45')](handleError(_0x21d1f8,null));};function getAccessToken(_0x507066){return new Promise(function(_0x5379b1,_0x3a4c73){var _0x3b7fe1;switch(_0x507066[_0x7e15('0x55')]){case'US':_0x3b7fe1='https://accounts.zoho.com';break;case'AU':_0x3b7fe1='https://accounts.zoho.com.au';break;case'EU':_0x3b7fe1=_0x7e15('0x56');break;case'IN':_0x3b7fe1='https://accounts.zoho.in';break;case'CN':_0x3b7fe1='https://accounts.zoho.com.cn';break;default:_0x3b7fe1='https://accounts.zoho.eu';break;}var _0x5ebcc4={'method':_0x7e15('0x57'),'uri':_0x3b7fe1+_0x7e15('0x58'),'qs':{'refresh_token':_0x507066[_0x7e15('0x59')],'client_id':_0x507066[_0x7e15('0x5a')],'client_secret':_0x507066[_0x7e15('0x5b')],'grant_type':_0x7e15('0x5c')},'json':!![]};return rp(_0x5ebcc4)[_0x7e15('0x40')](function(_0x57d6b0){if(_0x57d6b0[_0x7e15('0x5d')]){_0x5379b1(_0x57d6b0[_0x7e15('0x5d')]);}else{_0x3a4c73(_0x7e15('0x5e'));}})['catch'](function(_0x33f654){_0x3a4c73(_0x33f654);});});}exports['getFields']=function(_0x39762a,_0xa8eebd,_0x47f812){var _0x36e868,_0x377f68,_0x2ea88c,_0x57139d,_0x4e3c47;return db[_0x7e15('0x2a')][_0x7e15('0x4b')]({'where':{'id':_0x39762a[_0x7e15('0x4c')]['id']},'attributes':['id','host','zone',_0x7e15('0x5a'),_0x7e15('0x5b'),'serverUrl',_0x7e15('0x5f'),'refreshToken']})[_0x7e15('0x40')](handleEntityNotFound(_0xa8eebd,null))['then'](function(_0x2493ea){_0x4e3c47=_0x2493ea;_0x36e868=_0x4e3c47[_0x7e15('0x60')];_0x377f68=_0x36e868==='zoho.eu'?'eu':'com';_0x2ea88c=_0x4e3c47[_0x7e15('0x61')];var _0x4694e1=_0x2ea88c[_0x7e15('0x62')](-0x1);if(_0x4694e1==='/'||_0x4694e1==='\x5c'||_0x4694e1===':'){_0x2ea88c=_0x2ea88c['substring'](0x0,_0x2ea88c[_0x7e15('0x63')](_0x4694e1));}if(!_0x4e3c47[_0x7e15('0x59')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x4e3c47);})[_0x7e15('0x40')](function(_0x521c57){if(_0x521c57){return rp({'method':_0x7e15('0x64'),'uri':util[_0x7e15('0x65')](_0x7e15('0x66'),_0x377f68),'qs':{'module':_0x7e15('0x67')},'headers':{'Authorization':_0x7e15('0x68')+_0x521c57},'json':!![]});}})[_0x7e15('0x40')](function(_0x503655){if(_0x503655){if(_0x503655[_0x7e15('0x69')]&&_0x503655['response']['error']){throw new Error(_0x503655[_0x7e15('0x69')]['error'][_0x7e15('0x6a')]);}var _0x419847=[];var _0x56c1b4=[];var _0x380cf4=[_0x7e15('0x6b'),'Subject','Description',_0x7e15('0x6c'),_0x7e15('0x6d'),_0x7e15('0x6e'),_0x7e15('0x6f'),_0x7e15('0x70')];_0x56c1b4=_['remove'](_0x503655[_0x7e15('0x34')],function(_0x5c7e41){return _0x380cf4[_0x7e15('0x71')](_0x5c7e41[_0x7e15('0x72')]);});for(var _0x34b25d=0x0;_0x34b25d<_0x56c1b4['length'];_0x34b25d++){if(_0x56c1b4[_0x34b25d][_0x7e15('0x73')]===![]){_0x419847[_0x7e15('0x74')]({'id':_0x56c1b4[_0x34b25d]['id'],'name':_0x56c1b4[_0x34b25d][_0x7e15('0x75')],'custom':_0x56c1b4[_0x34b25d][_0x7e15('0x76')],'options':_0x56c1b4[_0x34b25d][_0x7e15('0x77')]==='picklist'&&_0x56c1b4[_0x34b25d]['pick_list_values']['length']>-0x1?_['map'](_0x56c1b4[_0x34b25d]['pick_list_values'],function(_0x115afb){return{'name':_0x115afb,'value':_0x115afb};}):[]});}}return{'count':_0x419847[_0x7e15('0x35')],'rows':_0x419847};}else{return{'count':0x0,'rows':[]};}})[_0x7e15('0x40')](respondWithResult(_0xa8eebd,null))[_0x7e15('0x45')](function(_0x4f7f97){var _0x4f4889=_0x39762a[_0x7e15('0x2e')][_0x7e15('0x78')]?0x1f4:_0x4f7f97[_0x7e15('0x79')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x7e15('0x7a'),_0x4f4889,JSON[_0x7e15('0x7b')](_0x4f7f97));delete _0x4f7f97[_0x7e15('0x26')];if(_0x4f4889===0x191){_0x4f4889=0x190;}_0xa8eebd[_0x7e15('0x17')](_0x4f4889)[_0x7e15('0x27')](_0x39762a['query'][_0x7e15('0x78')]?{'message':'Wrong\x20credentials','statusCode':_0x4f7f97[_0x7e15('0x79')]}:_0x4f7f97);});};