Built motion from commit 1fd437e9.|2.6.19
[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 _0x42ad=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','error','name','send','index','map','ZohoAccount','fieldName','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','merge','VIRTUAL','filter','findAll','rows','catch','show','params','includeAll','include','options','body','find','getConfigurations','findOne','ZohoConfiguration','rawAttributes','length','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','type','getDescriptions','create','ZohoField','Descriptions','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','getFields','host','zone','serverUrl','code','zoho.eu','com','slice','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','response','message','Owner','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','remove','includes','push','custom_field','data_type','picklist','pick_list_values','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0xf27b88,_0x43c542){var _0x6fd519=function(_0x46e55f){while(--_0x46e55f){_0xf27b88['push'](_0xf27b88['shift']());}};_0x6fd519(++_0x43c542);}(_0x42ad,0xed));var _0xd42a=function(_0x9dbfc6,_0x2c9e46){_0x9dbfc6=_0x9dbfc6-0x0;var _0x521cc5=_0x42ad[_0x9dbfc6];return _0x521cc5;};'use strict';var emlformat=require(_0xd42a('0x0'));var rimraf=require(_0xd42a('0x1'));var zipdir=require(_0xd42a('0x2'));var jsonpatch=require(_0xd42a('0x3'));var rp=require(_0xd42a('0x4'));var moment=require(_0xd42a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd42a('0x6'));var path=require(_0xd42a('0x7'));var sox=require(_0xd42a('0x8'));var csv=require('to-csv');var ejs=require(_0xd42a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd42a('0xa'));var squel=require('squel');var crypto=require(_0xd42a('0xb'));var jsforce=require(_0xd42a('0xc'));var deskjs=require(_0xd42a('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd42a('0xe'));var Papa=require(_0xd42a('0xf'));var Redis=require('ioredis');var authService=require(_0xd42a('0x10'));var qs=require(_0xd42a('0x11'));var as=require(_0xd42a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd42a('0x13'))(_0xd42a('0x14'));var utils=require(_0xd42a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd42a('0x16'));var db=require(_0xd42a('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3dd873,_0x31f2f5){_0x31f2f5=_0x31f2f5||0xcc;return function(_0xc12eb3){if(_0xc12eb3){return _0x3dd873['sendStatus'](_0x31f2f5);}return _0x3dd873[_0xd42a('0x18')](_0x31f2f5)[_0xd42a('0x19')]();};}function respondWithResult(_0x33ef04,_0x5d1351){_0x5d1351=_0x5d1351||0xc8;return function(_0x192797){if(_0x192797){return _0x33ef04[_0xd42a('0x18')](_0x5d1351)[_0xd42a('0x1a')](_0x192797);}};}function respondWithFilteredResult(_0x8380de,_0x2ab718){return function(_0x568bc8){if(_0x568bc8){var _0x368803=typeof _0x2ab718[_0xd42a('0x1b')]===_0xd42a('0x1c')&&typeof _0x2ab718[_0xd42a('0x1d')]===_0xd42a('0x1c');var _0x35974c=_0x568bc8[_0xd42a('0x1e')];var _0x25ff38=_0x368803?0x0:_0x2ab718[_0xd42a('0x1b')];var _0x4fb2f3=_0x368803?_0x568bc8[_0xd42a('0x1e')]:_0x2ab718[_0xd42a('0x1b')]+_0x2ab718['limit'];var _0xdf5300;if(_0x4fb2f3>=_0x35974c){_0x4fb2f3=_0x35974c;_0xdf5300=0xc8;}else{_0xdf5300=0xce;}_0x8380de['status'](_0xdf5300);return _0x8380de[_0xd42a('0x1f')]('Content-Range',_0x25ff38+'-'+_0x4fb2f3+'/'+_0x35974c)['json'](_0x568bc8);}return null;};}function patchUpdates(_0x5472fc){return function(_0x2a603d){try{jsonpatch[_0xd42a('0x20')](_0x2a603d,_0x5472fc,!![]);}catch(_0x102bf8){return BPromise[_0xd42a('0x21')](_0x102bf8);}return _0x2a603d[_0xd42a('0x22')]();};}function saveUpdates(_0xa8755f,_0xc5e005){return function(_0x1fc228){if(_0x1fc228){return _0x1fc228['update'](_0xa8755f)[_0xd42a('0x23')](function(_0x54ea56){return _0x54ea56;});}return null;};}function removeEntity(_0x27b10a,_0x5da2bc){return function(_0x4bb963){if(_0x4bb963){return _0x4bb963[_0xd42a('0x24')]()['then'](function(){_0x27b10a[_0xd42a('0x18')](0xcc)[_0xd42a('0x19')]();});}};}function handleEntityNotFound(_0x2fed1c,_0x5b533e){return function(_0x5e0913){if(!_0x5e0913){_0x2fed1c[_0xd42a('0x25')](0x194);}return _0x5e0913;};}function handleError(_0x3f76e9,_0x4b26c8){_0x4b26c8=_0x4b26c8||0x1f4;return function(_0x5575cb){logger[_0xd42a('0x26')](_0x5575cb['stack']);if(_0x5575cb['name']){delete _0x5575cb[_0xd42a('0x27')];}_0x3f76e9['status'](_0x4b26c8)[_0xd42a('0x28')](_0x5575cb);};}exports[_0xd42a('0x29')]=function(_0x4989a1,_0x4dde61){var _0x1ea9ec={},_0x40692c={},_0x12bd23={'count':0x0,'rows':[]};var _0x54a174=_[_0xd42a('0x2a')](db[_0xd42a('0x2b')]['rawAttributes'],function(_0x5f24cf){return{'name':_0x5f24cf[_0xd42a('0x2c')],'type':_0x5f24cf['type'][_0xd42a('0x2d')]};});_0x40692c[_0xd42a('0x2e')]=_['map'](_0x54a174,_0xd42a('0x27'));_0x40692c[_0xd42a('0x2f')]=_[_0xd42a('0x30')](_0x4989a1['query']);_0x40692c[_0xd42a('0x31')]=_[_0xd42a('0x32')](_0x40692c['model'],_0x40692c[_0xd42a('0x2f')]);_0x1ea9ec['attributes']=_[_0xd42a('0x32')](_0x40692c[_0xd42a('0x2e')],qs['fields'](_0x4989a1[_0xd42a('0x2f')][_0xd42a('0x33')]));_0x1ea9ec[_0xd42a('0x34')]=_0x1ea9ec[_0xd42a('0x34')]['length']?_0x1ea9ec['attributes']:_0x40692c['model'];if(!_0x4989a1[_0xd42a('0x2f')]['hasOwnProperty'](_0xd42a('0x35'))){_0x1ea9ec['limit']=qs[_0xd42a('0x1d')](_0x4989a1[_0xd42a('0x2f')]['limit']);_0x1ea9ec[_0xd42a('0x1b')]=qs['offset'](_0x4989a1[_0xd42a('0x2f')][_0xd42a('0x1b')]);}_0x1ea9ec[_0xd42a('0x36')]=qs[_0xd42a('0x37')](_0x4989a1[_0xd42a('0x2f')][_0xd42a('0x37')]);_0x1ea9ec[_0xd42a('0x38')]=qs[_0xd42a('0x31')](_['pick'](_0x4989a1[_0xd42a('0x2f')],_0x40692c['filters']),_0x54a174);if(_0x4989a1[_0xd42a('0x2f')]['filter']){_0x1ea9ec['where']=_[_0xd42a('0x39')](_0x1ea9ec[_0xd42a('0x38')],{'$or':_[_0xd42a('0x2a')](_0x54a174,function(_0x1a75e4){if(_0x1a75e4['type']!==_0xd42a('0x3a')){var _0x4e7789={};_0x4e7789[_0x1a75e4[_0xd42a('0x27')]]={'$like':'%'+_0x4989a1[_0xd42a('0x2f')][_0xd42a('0x3b')]+'%'};return _0x4e7789;}})});}_0x1ea9ec=_[_0xd42a('0x39')]({},_0x1ea9ec,_0x4989a1['options']);var _0x30a177={'where':_0x1ea9ec[_0xd42a('0x38')]};return db[_0xd42a('0x2b')]['count'](_0x30a177)['then'](function(_0x308ba9){_0x12bd23[_0xd42a('0x1e')]=_0x308ba9;if(_0x4989a1['query']['includeAll']){_0x1ea9ec['include']=[{'all':!![]}];}return db[_0xd42a('0x2b')][_0xd42a('0x3c')](_0x1ea9ec);})[_0xd42a('0x23')](function(_0x1e216f){_0x12bd23[_0xd42a('0x3d')]=_0x1e216f;return _0x12bd23;})['then'](respondWithFilteredResult(_0x4dde61,_0x1ea9ec))[_0xd42a('0x3e')](handleError(_0x4dde61,null));};exports[_0xd42a('0x3f')]=function(_0x32eb94,_0x18b964){var _0x1e4898={'raw':![],'where':{'id':_0x32eb94[_0xd42a('0x40')]['id']}},_0x631fb9={};_0x631fb9[_0xd42a('0x2e')]=_[_0xd42a('0x30')](db[_0xd42a('0x2b')]['rawAttributes']);_0x631fb9['query']=_['keys'](_0x32eb94['query']);_0x631fb9['filters']=_[_0xd42a('0x32')](_0x631fb9[_0xd42a('0x2e')],_0x631fb9[_0xd42a('0x2f')]);_0x1e4898[_0xd42a('0x34')]=_[_0xd42a('0x32')](_0x631fb9[_0xd42a('0x2e')],qs['fields'](_0x32eb94['query'][_0xd42a('0x33')]));_0x1e4898[_0xd42a('0x34')]=_0x1e4898[_0xd42a('0x34')]['length']?_0x1e4898[_0xd42a('0x34')]:_0x631fb9[_0xd42a('0x2e')];if(_0x32eb94[_0xd42a('0x2f')][_0xd42a('0x41')]){_0x1e4898[_0xd42a('0x42')]=[{'all':!![]}];}_0x1e4898=_['merge']({},_0x1e4898,_0x32eb94[_0xd42a('0x43')]);return db[_0xd42a('0x2b')]['find'](_0x1e4898)[_0xd42a('0x23')](handleEntityNotFound(_0x18b964,null))[_0xd42a('0x23')](respondWithResult(_0x18b964,null))[_0xd42a('0x3e')](handleError(_0x18b964,null));};exports['create']=function(_0x164e3a,_0x2d6d49){return db[_0xd42a('0x2b')]['create'](_0x164e3a['body'],{})[_0xd42a('0x23')](respondWithResult(_0x2d6d49,0xc9))[_0xd42a('0x3e')](handleError(_0x2d6d49,null));};exports['update']=function(_0x3636c7,_0x2a4d67){if(_0x3636c7[_0xd42a('0x44')]['id']){delete _0x3636c7[_0xd42a('0x44')]['id'];}return db[_0xd42a('0x2b')][_0xd42a('0x45')]({'where':{'id':_0x3636c7[_0xd42a('0x40')]['id']}})[_0xd42a('0x23')](handleEntityNotFound(_0x2a4d67,null))[_0xd42a('0x23')](saveUpdates(_0x3636c7[_0xd42a('0x44')],null))[_0xd42a('0x23')](respondWithResult(_0x2a4d67,null))[_0xd42a('0x3e')](handleError(_0x2a4d67,null));};exports[_0xd42a('0x24')]=function(_0x5304b4,_0x25a0c0){return db[_0xd42a('0x2b')]['find']({'where':{'id':_0x5304b4[_0xd42a('0x40')]['id']}})['then'](handleEntityNotFound(_0x25a0c0,null))['then'](removeEntity(_0x25a0c0,null))['catch'](handleError(_0x25a0c0,null));};exports[_0xd42a('0x46')]=function(_0x73a56f,_0x5c0ec4,_0xf2c8b5){var _0xa358a2={};var _0x16a66d={};var _0x265c2c;var _0x8e64d5;return db[_0xd42a('0x2b')][_0xd42a('0x47')]({'where':{'id':_0x73a56f[_0xd42a('0x40')]['id']}})[_0xd42a('0x23')](handleEntityNotFound(_0x5c0ec4,null))['then'](function(_0x1bea46){if(_0x1bea46){_0x265c2c=_0x1bea46;_0x16a66d[_0xd42a('0x2e')]=_[_0xd42a('0x30')](db[_0xd42a('0x48')][_0xd42a('0x49')]);_0x16a66d[_0xd42a('0x2f')]=_[_0xd42a('0x30')](_0x73a56f[_0xd42a('0x2f')]);_0x16a66d[_0xd42a('0x31')]=_[_0xd42a('0x32')](_0x16a66d[_0xd42a('0x2e')],_0x16a66d[_0xd42a('0x2f')]);_0xa358a2[_0xd42a('0x34')]=_[_0xd42a('0x32')](_0x16a66d[_0xd42a('0x2e')],qs[_0xd42a('0x33')](_0x73a56f[_0xd42a('0x2f')][_0xd42a('0x33')]));_0xa358a2['attributes']=_0xa358a2[_0xd42a('0x34')][_0xd42a('0x4a')]?_0xa358a2['attributes']:_0x16a66d[_0xd42a('0x2e')];_0xa358a2[_0xd42a('0x36')]=qs[_0xd42a('0x37')](_0x73a56f[_0xd42a('0x2f')]['sort']);_0xa358a2[_0xd42a('0x38')]=qs['filters'](_[_0xd42a('0x4b')](_0x73a56f[_0xd42a('0x2f')],_0x16a66d['filters']));if(_0x73a56f[_0xd42a('0x2f')][_0xd42a('0x3b')]){_0xa358a2[_0xd42a('0x38')]=_[_0xd42a('0x39')](_0xa358a2[_0xd42a('0x38')],{'$or':_[_0xd42a('0x2a')](_0xa358a2['attributes'],function(_0x38c778){var _0x1fcdd5={};_0x1fcdd5[_0x38c778]={'$like':'%'+_0x73a56f[_0xd42a('0x2f')]['filter']+'%'};return _0x1fcdd5;})});}_0xa358a2=_['merge']({},_0xa358a2,_0x73a56f[_0xd42a('0x43')]);return _0x265c2c[_0xd42a('0x46')](_0xa358a2);}})[_0xd42a('0x23')](function(_0x11cdc7){if(_0x11cdc7){_0x8e64d5=_0x11cdc7[_0xd42a('0x4a')];if(!_0x73a56f[_0xd42a('0x2f')]['hasOwnProperty'](_0xd42a('0x35'))){_0xa358a2[_0xd42a('0x1d')]=qs[_0xd42a('0x1d')](_0x73a56f['query'][_0xd42a('0x1d')]);_0xa358a2[_0xd42a('0x1b')]=qs[_0xd42a('0x1b')](_0x73a56f[_0xd42a('0x2f')][_0xd42a('0x1b')]);}return _0x265c2c[_0xd42a('0x46')](_0xa358a2);}})[_0xd42a('0x23')](function(_0x2a5a3b){if(_0x2a5a3b){return _0x2a5a3b?{'count':_0x8e64d5,'rows':_0x2a5a3b}:null;}})['then'](respondWithResult(_0x5c0ec4,null))[_0xd42a('0x3e')](handleError(_0x5c0ec4,null));};exports[_0xd42a('0x4c')]=function(_0x108e22,_0x566ef8,_0x36349b){if(_0x108e22[_0xd42a('0x44')]['id']){delete _0x108e22[_0xd42a('0x44')]['id'];}return db[_0xd42a('0x2b')][_0xd42a('0x47')]({'where':{'id':_0x108e22[_0xd42a('0x40')]['id']}})[_0xd42a('0x23')](handleEntityNotFound(_0x566ef8,null))[_0xd42a('0x23')](function(_0x1b1bb9){if(_0x1b1bb9){_0x108e22[_0xd42a('0x44')][_0xd42a('0x4d')]=_0x1b1bb9['id'];_0x108e22['body'][_0xd42a('0x4e')]=integrations[_0xd42a('0x4f')](_0x108e22[_0xd42a('0x44')][_0xd42a('0x50')],_0x108e22[_0xd42a('0x44')][_0xd42a('0x51')]);_0x108e22['body']['Descriptions']=integrations[_0xd42a('0x52')](_0x108e22[_0xd42a('0x44')][_0xd42a('0x50')],_0x108e22[_0xd42a('0x44')]['type']);return db[_0xd42a('0x48')][_0xd42a('0x53')](_0x108e22['body'],{'include':[{'model':db[_0xd42a('0x54')],'as':'Subjects'},{'model':db[_0xd42a('0x54')],'as':_0xd42a('0x55')}]});}return null;})[_0xd42a('0x23')](respondWithResult(_0x566ef8,null))[_0xd42a('0x3e')](handleError(_0x566ef8,null));};function getAccessToken(_0x1ce13c){return new Promise(function(_0x4a0a0a,_0x29ad93){var _0x2b1d50;switch(_0x1ce13c['zone']){case'US':_0x2b1d50='https://accounts.zoho.com';break;case'AU':_0x2b1d50=_0xd42a('0x56');break;case'EU':_0x2b1d50='https://accounts.zoho.eu';break;case'IN':_0x2b1d50=_0xd42a('0x57');break;case'CN':_0x2b1d50=_0xd42a('0x58');break;default:_0x2b1d50=_0xd42a('0x59');break;}var _0x160d67={'method':_0xd42a('0x5a'),'uri':_0x2b1d50+_0xd42a('0x5b'),'qs':{'refresh_token':_0x1ce13c[_0xd42a('0x5c')],'client_id':_0x1ce13c[_0xd42a('0x5d')],'client_secret':_0x1ce13c[_0xd42a('0x5e')],'grant_type':_0xd42a('0x5f')},'json':!![]};return rp(_0x160d67)[_0xd42a('0x23')](function(_0xb211ee){if(_0xb211ee['access_token']){_0x4a0a0a(_0xb211ee[_0xd42a('0x60')]);}else{_0x29ad93('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xd42a('0x3e')](function(_0x197d52){_0x29ad93(_0x197d52);});});}exports[_0xd42a('0x61')]=function(_0x19d0fe,_0x5ae901,_0x1db283){var _0x19bcbb,_0xf86c7e,_0x2154cc,_0x45a94d,_0x18f3ac;return db[_0xd42a('0x2b')][_0xd42a('0x47')]({'where':{'id':_0x19d0fe[_0xd42a('0x40')]['id']},'attributes':['id',_0xd42a('0x62'),_0xd42a('0x63'),_0xd42a('0x5d'),_0xd42a('0x5e'),_0xd42a('0x64'),_0xd42a('0x65'),_0xd42a('0x5c')]})[_0xd42a('0x23')](handleEntityNotFound(_0x5ae901,null))[_0xd42a('0x23')](function(_0x21bdf6){_0x18f3ac=_0x21bdf6;_0x19bcbb=_0x18f3ac[_0xd42a('0x62')];_0xf86c7e=_0x19bcbb===_0xd42a('0x66')?'eu':_0xd42a('0x67');_0x2154cc=_0x18f3ac[_0xd42a('0x64')];var _0x59645b=_0x2154cc[_0xd42a('0x68')](-0x1);if(_0x59645b==='/'||_0x59645b==='\x5c'||_0x59645b===':'){_0x2154cc=_0x2154cc['substring'](0x0,_0x2154cc[_0xd42a('0x69')](_0x59645b));}if(!_0x18f3ac[_0xd42a('0x5c')]){throw new Error(_0xd42a('0x6a'));}return getAccessToken(_0x18f3ac);})[_0xd42a('0x23')](function(_0x1c83d8){if(_0x1c83d8){return rp({'method':_0xd42a('0x6b'),'uri':util[_0xd42a('0x6c')](_0xd42a('0x6d'),_0xf86c7e),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1c83d8},'json':!![]});}})[_0xd42a('0x23')](function(_0x461563){if(_0x461563){if(_0x461563[_0xd42a('0x6e')]&&_0x461563[_0xd42a('0x6e')][_0xd42a('0x26')]){throw new Error(_0x461563[_0xd42a('0x6e')][_0xd42a('0x26')][_0xd42a('0x6f')]);}var _0x189f61=[];var _0x274697=[];var _0x290cc1=[_0xd42a('0x70'),'Subject',_0xd42a('0x71'),_0xd42a('0x72'),_0xd42a('0x73'),_0xd42a('0x74'),_0xd42a('0x75'),'Call_Type'];_0x274697=_[_0xd42a('0x76')](_0x461563[_0xd42a('0x33')],function(_0x313bc3){return _0x290cc1[_0xd42a('0x77')](_0x313bc3['api_name']);});for(var _0x59686b=0x0;_0x59686b<_0x274697[_0xd42a('0x4a')];_0x59686b++){if(_0x274697[_0x59686b]['system_mandatory']===![]){_0x189f61[_0xd42a('0x78')]({'id':_0x274697[_0x59686b]['id'],'name':_0x274697[_0x59686b]['display_label'],'custom':_0x274697[_0x59686b][_0xd42a('0x79')],'options':_0x274697[_0x59686b][_0xd42a('0x7a')]===_0xd42a('0x7b')&&_0x274697[_0x59686b][_0xd42a('0x7c')][_0xd42a('0x4a')]>-0x1?_[_0xd42a('0x2a')](_0x274697[_0x59686b][_0xd42a('0x7c')],function(_0x600da3){return{'name':_0x600da3,'value':_0x600da3};}):[]});}}return{'count':_0x189f61['length'],'rows':_0x189f61};}else{return{'count':0x0,'rows':[]};}})[_0xd42a('0x23')](respondWithResult(_0x5ae901,null))[_0xd42a('0x3e')](function(_0x32f614){var _0x319cf7=_0x19d0fe[_0xd42a('0x2f')][_0xd42a('0x7d')]?0x1f4:_0x32f614['statusCode']||0x1f4;logger[_0xd42a('0x26')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x319cf7,JSON['stringify'](_0x32f614));delete _0x32f614[_0xd42a('0x27')];if(_0x319cf7===0x191){_0x319cf7=0x190;}_0x5ae901[_0xd42a('0x18')](_0x319cf7)[_0xd42a('0x28')](_0x19d0fe[_0xd42a('0x2f')][_0xd42a('0x7d')]?{'message':_0xd42a('0x7e'),'statusCode':_0x32f614['statusCode']}:_0x32f614);});};