2fb19ee70397c9ed5b598fec1e85fc204ffc1f52
[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 _0xd06e=['message','Owner','Subject','Call_Duration','Call_Start_Time','Call_Type','remove','includes','api_name','push','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','mustache','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','show','params','intersection','include','find','create','body','catch','update','destroy','findOne','ZohoConfiguration','pick','getConfigurations','AccountId','Subjects','getSubjects','getDescriptions','channel','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','/oauth/v2/token','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','serverUrl','host','zoho.eu','com','slice','substring','refreshToken','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','response'];(function(_0x411d4b,_0x8ce248){var _0x3ef5c3=function(_0x2f48cc){while(--_0x2f48cc){_0x411d4b['push'](_0x411d4b['shift']());}};_0x3ef5c3(++_0x8ce248);}(_0xd06e,0x91));var _0xed06=function(_0xa1a749,_0xac32da){_0xa1a749=_0xa1a749-0x0;var _0x2237d3=_0xd06e[_0xa1a749];return _0x2237d3;};'use strict';var emlformat=require(_0xed06('0x0'));var rimraf=require(_0xed06('0x1'));var zipdir=require(_0xed06('0x2'));var jsonpatch=require(_0xed06('0x3'));var rp=require(_0xed06('0x4'));var moment=require(_0xed06('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xed06('0x6'));var util=require('util');var path=require(_0xed06('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xed06('0x8'));var fs=require('fs');var fs_extra=require(_0xed06('0x9'));var _=require('lodash');var squel=require(_0xed06('0xa'));var crypto=require(_0xed06('0xb'));var jsforce=require(_0xed06('0xc'));var deskjs=require(_0xed06('0xd'));var toCsv=require(_0xed06('0xe'));var querystring=require(_0xed06('0xf'));var Papa=require(_0xed06('0x10'));var Redis=require(_0xed06('0x11'));var authService=require(_0xed06('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed06('0x13'));var logger=require(_0xed06('0x14'))(_0xed06('0x15'));var utils=require(_0xed06('0x16'));var config=require(_0xed06('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xed06('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3ac901,_0xddcedd){_0xddcedd=_0xddcedd||0xcc;return function(_0x48bc77){if(_0x48bc77){return _0x3ac901[_0xed06('0x19')](_0xddcedd);}return _0x3ac901[_0xed06('0x1a')](_0xddcedd)[_0xed06('0x1b')]();};}function respondWithResult(_0x42a33a,_0x548514){_0x548514=_0x548514||0xc8;return function(_0x4bdafe){if(_0x4bdafe){return _0x42a33a['status'](_0x548514)['json'](_0x4bdafe);}};}function respondWithFilteredResult(_0x3ce16d,_0x5b798a){return function(_0x5f1817){if(_0x5f1817){var _0x28a6e9=typeof _0x5b798a[_0xed06('0x1c')]===_0xed06('0x1d')&&typeof _0x5b798a[_0xed06('0x1e')]===_0xed06('0x1d');var _0x5e4c5b=_0x5f1817[_0xed06('0x1f')];var _0x3e858d=_0x28a6e9?0x0:_0x5b798a[_0xed06('0x1c')];var _0x32a876=_0x28a6e9?_0x5f1817[_0xed06('0x1f')]:_0x5b798a[_0xed06('0x1c')]+_0x5b798a[_0xed06('0x1e')];var _0x525c17;if(_0x32a876>=_0x5e4c5b){_0x32a876=_0x5e4c5b;_0x525c17=0xc8;}else{_0x525c17=0xce;}_0x3ce16d[_0xed06('0x1a')](_0x525c17);return _0x3ce16d[_0xed06('0x20')](_0xed06('0x21'),_0x3e858d+'-'+_0x32a876+'/'+_0x5e4c5b)[_0xed06('0x22')](_0x5f1817);}return null;};}function patchUpdates(_0xbc68c6){return function(_0x35f356){try{jsonpatch[_0xed06('0x23')](_0x35f356,_0xbc68c6,!![]);}catch(_0x2763c9){return BPromise['reject'](_0x2763c9);}return _0x35f356[_0xed06('0x24')]();};}function saveUpdates(_0x49f471,_0x3d3970){return function(_0x7767df){if(_0x7767df){return _0x7767df['update'](_0x49f471)[_0xed06('0x25')](function(_0x12982c){return _0x12982c;});}return null;};}function removeEntity(_0x86705e,_0x48b97f){return function(_0x4fe52e){if(_0x4fe52e){return _0x4fe52e['destroy']()[_0xed06('0x25')](function(){_0x86705e[_0xed06('0x1a')](0xcc)[_0xed06('0x1b')]();});}};}function handleEntityNotFound(_0x5115f4,_0x26237b){return function(_0x1cca03){if(!_0x1cca03){_0x5115f4[_0xed06('0x19')](0x194);}return _0x1cca03;};}function handleError(_0xa7d03c,_0x38550f){_0x38550f=_0x38550f||0x1f4;return function(_0x260826){logger[_0xed06('0x26')](_0x260826[_0xed06('0x27')]);if(_0x260826['name']){delete _0x260826[_0xed06('0x28')];}_0xa7d03c['status'](_0x38550f)[_0xed06('0x29')](_0x260826);};}exports[_0xed06('0x2a')]=function(_0x599c3c,_0x32bb54){var _0x5307b5={},_0x3f09a2={},_0x5cdae9={'count':0x0,'rows':[]};var _0xc56c62=_[_0xed06('0x2b')](db[_0xed06('0x2c')][_0xed06('0x2d')],function(_0x4ba289){return{'name':_0x4ba289[_0xed06('0x2e')],'type':_0x4ba289[_0xed06('0x2f')][_0xed06('0x30')]};});_0x3f09a2[_0xed06('0x31')]=_[_0xed06('0x2b')](_0xc56c62,_0xed06('0x28'));_0x3f09a2[_0xed06('0x32')]=_[_0xed06('0x33')](_0x599c3c['query']);_0x3f09a2[_0xed06('0x34')]=_['intersection'](_0x3f09a2['model'],_0x3f09a2[_0xed06('0x32')]);_0x5307b5[_0xed06('0x35')]=_['intersection'](_0x3f09a2[_0xed06('0x31')],qs[_0xed06('0x36')](_0x599c3c['query'][_0xed06('0x36')]));_0x5307b5['attributes']=_0x5307b5[_0xed06('0x35')][_0xed06('0x37')]?_0x5307b5[_0xed06('0x35')]:_0x3f09a2[_0xed06('0x31')];if(!_0x599c3c[_0xed06('0x32')][_0xed06('0x38')](_0xed06('0x39'))){_0x5307b5[_0xed06('0x1e')]=qs['limit'](_0x599c3c[_0xed06('0x32')][_0xed06('0x1e')]);_0x5307b5[_0xed06('0x1c')]=qs[_0xed06('0x1c')](_0x599c3c[_0xed06('0x32')][_0xed06('0x1c')]);}_0x5307b5[_0xed06('0x3a')]=qs['sort'](_0x599c3c['query'][_0xed06('0x3b')]);_0x5307b5['where']=qs['filters'](_['pick'](_0x599c3c[_0xed06('0x32')],_0x3f09a2['filters']),_0xc56c62);if(_0x599c3c['query'][_0xed06('0x3c')]){_0x5307b5['where']=_[_0xed06('0x3d')](_0x5307b5[_0xed06('0x3e')],{'$or':_[_0xed06('0x2b')](_0xc56c62,function(_0x322bf8){if(_0x322bf8[_0xed06('0x2f')]!==_0xed06('0x3f')){var _0x101865={};_0x101865[_0x322bf8[_0xed06('0x28')]]={'$like':'%'+_0x599c3c[_0xed06('0x32')][_0xed06('0x3c')]+'%'};return _0x101865;}})});}_0x5307b5=_[_0xed06('0x3d')]({},_0x5307b5,_0x599c3c[_0xed06('0x40')]);var _0x92b6dd={'where':_0x5307b5[_0xed06('0x3e')]};return db[_0xed06('0x2c')]['count'](_0x92b6dd)['then'](function(_0x3a6add){_0x5cdae9[_0xed06('0x1f')]=_0x3a6add;if(_0x599c3c[_0xed06('0x32')][_0xed06('0x41')]){_0x5307b5['include']=[{'all':!![]}];}return db['ZohoAccount'][_0xed06('0x42')](_0x5307b5);})[_0xed06('0x25')](function(_0x46ff39){_0x5cdae9[_0xed06('0x43')]=_0x46ff39;return _0x5cdae9;})[_0xed06('0x25')](respondWithFilteredResult(_0x32bb54,_0x5307b5))['catch'](handleError(_0x32bb54,null));};exports[_0xed06('0x44')]=function(_0x56c3fd,_0x1c7f16){var _0x5e0148={'raw':![],'where':{'id':_0x56c3fd[_0xed06('0x45')]['id']}},_0x15f615={};_0x15f615[_0xed06('0x31')]=_[_0xed06('0x33')](db[_0xed06('0x2c')][_0xed06('0x2d')]);_0x15f615['query']=_[_0xed06('0x33')](_0x56c3fd[_0xed06('0x32')]);_0x15f615['filters']=_['intersection'](_0x15f615[_0xed06('0x31')],_0x15f615['query']);_0x5e0148[_0xed06('0x35')]=_[_0xed06('0x46')](_0x15f615[_0xed06('0x31')],qs[_0xed06('0x36')](_0x56c3fd[_0xed06('0x32')]['fields']));_0x5e0148[_0xed06('0x35')]=_0x5e0148[_0xed06('0x35')][_0xed06('0x37')]?_0x5e0148[_0xed06('0x35')]:_0x15f615[_0xed06('0x31')];if(_0x56c3fd[_0xed06('0x32')]['includeAll']){_0x5e0148[_0xed06('0x47')]=[{'all':!![]}];}_0x5e0148=_[_0xed06('0x3d')]({},_0x5e0148,_0x56c3fd[_0xed06('0x40')]);return db[_0xed06('0x2c')][_0xed06('0x48')](_0x5e0148)[_0xed06('0x25')](handleEntityNotFound(_0x1c7f16,null))['then'](respondWithResult(_0x1c7f16,null))['catch'](handleError(_0x1c7f16,null));};exports[_0xed06('0x49')]=function(_0x4e6533,_0x1ca5ab){return db[_0xed06('0x2c')]['create'](_0x4e6533[_0xed06('0x4a')],{})[_0xed06('0x25')](respondWithResult(_0x1ca5ab,0xc9))[_0xed06('0x4b')](handleError(_0x1ca5ab,null));};exports[_0xed06('0x4c')]=function(_0x1c7444,_0x54ebfe){if(_0x1c7444[_0xed06('0x4a')]['id']){delete _0x1c7444[_0xed06('0x4a')]['id'];}return db[_0xed06('0x2c')]['find']({'where':{'id':_0x1c7444[_0xed06('0x45')]['id']}})[_0xed06('0x25')](handleEntityNotFound(_0x54ebfe,null))['then'](saveUpdates(_0x1c7444[_0xed06('0x4a')],null))[_0xed06('0x25')](respondWithResult(_0x54ebfe,null))['catch'](handleError(_0x54ebfe,null));};exports[_0xed06('0x4d')]=function(_0x2bd4a2,_0x3997e2){return db[_0xed06('0x2c')][_0xed06('0x48')]({'where':{'id':_0x2bd4a2[_0xed06('0x45')]['id']}})['then'](handleEntityNotFound(_0x3997e2,null))[_0xed06('0x25')](removeEntity(_0x3997e2,null))[_0xed06('0x4b')](handleError(_0x3997e2,null));};exports['getConfigurations']=function(_0x1f1fa2,_0x5be412,_0x22f370){var _0x1de724={};var _0x59230c={};var _0x38c796;var _0x2a7f1c;return db[_0xed06('0x2c')][_0xed06('0x4e')]({'where':{'id':_0x1f1fa2[_0xed06('0x45')]['id']}})['then'](handleEntityNotFound(_0x5be412,null))['then'](function(_0x3af509){if(_0x3af509){_0x38c796=_0x3af509;_0x59230c[_0xed06('0x31')]=_[_0xed06('0x33')](db[_0xed06('0x4f')]['rawAttributes']);_0x59230c[_0xed06('0x32')]=_[_0xed06('0x33')](_0x1f1fa2[_0xed06('0x32')]);_0x59230c[_0xed06('0x34')]=_[_0xed06('0x46')](_0x59230c['model'],_0x59230c[_0xed06('0x32')]);_0x1de724[_0xed06('0x35')]=_[_0xed06('0x46')](_0x59230c[_0xed06('0x31')],qs[_0xed06('0x36')](_0x1f1fa2[_0xed06('0x32')][_0xed06('0x36')]));_0x1de724[_0xed06('0x35')]=_0x1de724[_0xed06('0x35')][_0xed06('0x37')]?_0x1de724['attributes']:_0x59230c[_0xed06('0x31')];_0x1de724['order']=qs[_0xed06('0x3b')](_0x1f1fa2[_0xed06('0x32')][_0xed06('0x3b')]);_0x1de724[_0xed06('0x3e')]=qs[_0xed06('0x34')](_[_0xed06('0x50')](_0x1f1fa2[_0xed06('0x32')],_0x59230c[_0xed06('0x34')]));if(_0x1f1fa2[_0xed06('0x32')]['filter']){_0x1de724[_0xed06('0x3e')]=_[_0xed06('0x3d')](_0x1de724[_0xed06('0x3e')],{'$or':_[_0xed06('0x2b')](_0x1de724[_0xed06('0x35')],function(_0x2bd2a2){var _0x55dcb7={};_0x55dcb7[_0x2bd2a2]={'$like':'%'+_0x1f1fa2[_0xed06('0x32')][_0xed06('0x3c')]+'%'};return _0x55dcb7;})});}_0x1de724=_['merge']({},_0x1de724,_0x1f1fa2[_0xed06('0x40')]);return _0x38c796[_0xed06('0x51')](_0x1de724);}})[_0xed06('0x25')](function(_0x1fcb42){if(_0x1fcb42){_0x2a7f1c=_0x1fcb42[_0xed06('0x37')];if(!_0x1f1fa2['query'][_0xed06('0x38')](_0xed06('0x39'))){_0x1de724[_0xed06('0x1e')]=qs['limit'](_0x1f1fa2['query']['limit']);_0x1de724[_0xed06('0x1c')]=qs[_0xed06('0x1c')](_0x1f1fa2['query'][_0xed06('0x1c')]);}return _0x38c796[_0xed06('0x51')](_0x1de724);}})[_0xed06('0x25')](function(_0x245d85){if(_0x245d85){return _0x245d85?{'count':_0x2a7f1c,'rows':_0x245d85}:null;}})[_0xed06('0x25')](respondWithResult(_0x5be412,null))[_0xed06('0x4b')](handleError(_0x5be412,null));};exports['addConfiguration']=function(_0x31f293,_0x25228f,_0x1a1ae4){if(_0x31f293['body']['id']){delete _0x31f293[_0xed06('0x4a')]['id'];}return db[_0xed06('0x2c')][_0xed06('0x4e')]({'where':{'id':_0x31f293[_0xed06('0x45')]['id']}})[_0xed06('0x25')](handleEntityNotFound(_0x25228f,null))[_0xed06('0x25')](function(_0x1258fa){if(_0x1258fa){_0x31f293['body'][_0xed06('0x52')]=_0x1258fa['id'];_0x31f293[_0xed06('0x4a')][_0xed06('0x53')]=integrations[_0xed06('0x54')](_0x31f293[_0xed06('0x4a')]['channel'],_0x31f293['body']['type']);_0x31f293[_0xed06('0x4a')]['Descriptions']=integrations[_0xed06('0x55')](_0x31f293[_0xed06('0x4a')][_0xed06('0x56')],_0x31f293['body'][_0xed06('0x2f')]);return db['ZohoConfiguration'][_0xed06('0x49')](_0x31f293['body'],{'include':[{'model':db[_0xed06('0x57')],'as':_0xed06('0x53')},{'model':db[_0xed06('0x57')],'as':_0xed06('0x58')}]});}return null;})['then'](respondWithResult(_0x25228f,null))[_0xed06('0x4b')](handleError(_0x25228f,null));};function getAccessToken(_0x3af7f0){return new Promise(function(_0x2d8ef3,_0x55578f){var _0x59979d;switch(_0x3af7f0[_0xed06('0x59')]){case'US':_0x59979d=_0xed06('0x5a');break;case'AU':_0x59979d=_0xed06('0x5b');break;case'EU':_0x59979d=_0xed06('0x5c');break;case'IN':_0x59979d='https://accounts.zoho.in';break;case'CN':_0x59979d='https://accounts.zoho.com.cn';break;default:_0x59979d=_0xed06('0x5c');break;}var _0x4dc8eb={'method':'POST','uri':_0x59979d+_0xed06('0x5d'),'qs':{'refresh_token':_0x3af7f0['refreshToken'],'client_id':_0x3af7f0[_0xed06('0x5e')],'client_secret':_0x3af7f0['clientSecret'],'grant_type':_0xed06('0x5f')},'json':!![]};return rp(_0x4dc8eb)[_0xed06('0x25')](function(_0x10cd39){if(_0x10cd39[_0xed06('0x60')]){_0x2d8ef3(_0x10cd39['access_token']);}else{_0x55578f(_0xed06('0x61'));}})['catch'](function(_0x317a65){_0x55578f(_0x317a65);});});}exports[_0xed06('0x62')]=function(_0x3d77df,_0x197db4,_0x1b85be){var _0x5b827f,_0x13b115,_0x3256aa,_0x42ed15,_0x281ff6;return db['ZohoAccount'][_0xed06('0x4e')]({'where':{'id':_0x3d77df[_0xed06('0x45')]['id']},'attributes':['id','host',_0xed06('0x59'),_0xed06('0x5e'),'clientSecret',_0xed06('0x63'),'code','refreshToken']})[_0xed06('0x25')](handleEntityNotFound(_0x197db4,null))[_0xed06('0x25')](function(_0x472ac6){_0x281ff6=_0x472ac6;_0x5b827f=_0x281ff6[_0xed06('0x64')];_0x13b115=_0x5b827f===_0xed06('0x65')?'eu':_0xed06('0x66');_0x3256aa=_0x281ff6[_0xed06('0x63')];var _0x4b1d74=_0x3256aa[_0xed06('0x67')](-0x1);if(_0x4b1d74==='/'||_0x4b1d74==='\x5c'||_0x4b1d74===':'){_0x3256aa=_0x3256aa[_0xed06('0x68')](0x0,_0x3256aa['lastIndexOf'](_0x4b1d74));}if(!_0x281ff6[_0xed06('0x69')]){throw new Error(_0xed06('0x6a'));}return getAccessToken(_0x281ff6);})[_0xed06('0x25')](function(_0xa11c6f){if(_0xa11c6f){return rp({'method':_0xed06('0x6b'),'uri':util[_0xed06('0x6c')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x13b115),'qs':{'module':_0xed06('0x6d')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0xa11c6f},'json':!![]});}})['then'](function(_0x8f15f3){if(_0x8f15f3){if(_0x8f15f3['response']&&_0x8f15f3[_0xed06('0x6e')][_0xed06('0x26')]){throw new Error(_0x8f15f3[_0xed06('0x6e')][_0xed06('0x26')][_0xed06('0x6f')]);}var _0x123abe=[];var _0x443a12=[];var _0x1f4030=[_0xed06('0x70'),_0xed06('0x71'),'Description','WhoId',_0xed06('0x72'),'Call_Result',_0xed06('0x73'),_0xed06('0x74')];_0x443a12=_[_0xed06('0x75')](_0x8f15f3[_0xed06('0x36')],function(_0x11db6f){return _0x1f4030[_0xed06('0x76')](_0x11db6f[_0xed06('0x77')]);});for(var _0x46e9dd=0x0;_0x46e9dd<_0x443a12[_0xed06('0x37')];_0x46e9dd++){if(_0x443a12[_0x46e9dd]['system_mandatory']===![]){_0x123abe[_0xed06('0x78')]({'id':_0x443a12[_0x46e9dd]['id'],'name':_0x443a12[_0x46e9dd]['display_label'],'custom':_0x443a12[_0x46e9dd]['custom_field'],'options':_0x443a12[_0x46e9dd][_0xed06('0x79')]===_0xed06('0x7a')&&_0x443a12[_0x46e9dd][_0xed06('0x7b')][_0xed06('0x37')]>-0x1?_[_0xed06('0x2b')](_0x443a12[_0x46e9dd]['pick_list_values'],function(_0x3b60c9){return{'name':_0x3b60c9,'value':_0x3b60c9};}):[]});}}return{'count':_0x123abe[_0xed06('0x37')],'rows':_0x123abe};}else{return{'count':0x0,'rows':[]};}})[_0xed06('0x25')](respondWithResult(_0x197db4,null))[_0xed06('0x4b')](function(_0x56ae88){var _0x5517b3=_0x3d77df['query'][_0xed06('0x7c')]?0x1f4:_0x56ae88[_0xed06('0x7d')]||0x1f4;logger[_0xed06('0x26')](_0xed06('0x7e'),_0xed06('0x62'),_0x5517b3,JSON['stringify'](_0x56ae88));delete _0x56ae88[_0xed06('0x28')];if(_0x5517b3===0x191){_0x5517b3=0x190;}_0x197db4[_0xed06('0x1a')](_0x5517b3)[_0xed06('0x29')](_0x3d77df[_0xed06('0x32')][_0xed06('0x7c')]?{'message':_0xed06('0x7f'),'statusCode':_0x56ae88[_0xed06('0x7d')]}:_0x56ae88);});};