bebe983a7bea3723abbe13829d8332526390fe92
[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 _0x22af=['push','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','then','stack','name','index','map','fieldName','type','key','model','query','keys','filters','fields','attributes','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','include','rows','show','rawAttributes','intersection','length','find','catch','create','body','update','params','destroy','findOne','ZohoConfiguration','order','getConfigurations','addConfiguration','AccountId','Subjects','getDescriptions','channel','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','zoho.eu','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','response','error','message','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory'];(function(_0x3564c3,_0x8358fb){var _0x460b5d=function(_0x551d1f){while(--_0x551d1f){_0x3564c3['push'](_0x3564c3['shift']());}};_0x460b5d(++_0x8358fb);}(_0x22af,0x1a0));var _0xf22a=function(_0x230bb8,_0xa1718){_0x230bb8=_0x230bb8-0x0;var _0x16cb9a=_0x22af[_0x230bb8];return _0x16cb9a;};'use strict';var emlformat=require(_0xf22a('0x0'));var rimraf=require(_0xf22a('0x1'));var zipdir=require(_0xf22a('0x2'));var jsonpatch=require(_0xf22a('0x3'));var rp=require(_0xf22a('0x4'));var moment=require(_0xf22a('0x5'));var BPromise=require(_0xf22a('0x6'));var Mustache=require(_0xf22a('0x7'));var util=require(_0xf22a('0x8'));var path=require(_0xf22a('0x9'));var sox=require(_0xf22a('0xa'));var csv=require('to-csv');var ejs=require(_0xf22a('0xb'));var fs=require('fs');var fs_extra=require(_0xf22a('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf22a('0xd'));var jsforce=require(_0xf22a('0xe'));var deskjs=require(_0xf22a('0xf'));var toCsv=require(_0xf22a('0x10'));var querystring=require(_0xf22a('0x11'));var Papa=require(_0xf22a('0x12'));var Redis=require(_0xf22a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xf22a('0x14'));var as=require(_0xf22a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf22a('0x16'))(_0xf22a('0x17'));var utils=require(_0xf22a('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf22a('0x19'));var db=require(_0xf22a('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1b2204,_0x411495){_0x411495=_0x411495||0xcc;return function(_0x41b9b7){if(_0x41b9b7){return _0x1b2204[_0xf22a('0x1b')](_0x411495);}return _0x1b2204['status'](_0x411495)[_0xf22a('0x1c')]();};}function respondWithResult(_0x5b429a,_0x661739){_0x661739=_0x661739||0xc8;return function(_0x2573e3){if(_0x2573e3){return _0x5b429a['status'](_0x661739)['json'](_0x2573e3);}};}function respondWithFilteredResult(_0x37ee72,_0x292b58){return function(_0x488484){if(_0x488484){var _0x223ac2=typeof _0x292b58[_0xf22a('0x1d')]===_0xf22a('0x1e')&&typeof _0x292b58[_0xf22a('0x1f')]===_0xf22a('0x1e');var _0x4ae8bf=_0x488484['count'];var _0x4a3cca=_0x223ac2?0x0:_0x292b58['offset'];var _0xc002cf=_0x223ac2?_0x488484[_0xf22a('0x20')]:_0x292b58[_0xf22a('0x1d')]+_0x292b58[_0xf22a('0x1f')];var _0x52151a;if(_0xc002cf>=_0x4ae8bf){_0xc002cf=_0x4ae8bf;_0x52151a=0xc8;}else{_0x52151a=0xce;}_0x37ee72[_0xf22a('0x21')](_0x52151a);return _0x37ee72[_0xf22a('0x22')](_0xf22a('0x23'),_0x4a3cca+'-'+_0xc002cf+'/'+_0x4ae8bf)[_0xf22a('0x24')](_0x488484);}return null;};}function patchUpdates(_0x13f8fc){return function(_0x40ee39){try{jsonpatch[_0xf22a('0x25')](_0x40ee39,_0x13f8fc,!![]);}catch(_0x26d595){return BPromise[_0xf22a('0x26')](_0x26d595);}return _0x40ee39[_0xf22a('0x27')]();};}function saveUpdates(_0x2804db,_0x511a9d){return function(_0x4cd29d){if(_0x4cd29d){return _0x4cd29d['update'](_0x2804db)[_0xf22a('0x28')](function(_0x5e04cc){return _0x5e04cc;});}return null;};}function removeEntity(_0x5c111d,_0x239b0a){return function(_0x539866){if(_0x539866){return _0x539866['destroy']()[_0xf22a('0x28')](function(){_0x5c111d[_0xf22a('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x942843,_0x184656){return function(_0x5bb8b5){if(!_0x5bb8b5){_0x942843[_0xf22a('0x1b')](0x194);}return _0x5bb8b5;};}function handleError(_0x2d36dd,_0x3837f3){_0x3837f3=_0x3837f3||0x1f4;return function(_0xd8b685){logger['error'](_0xd8b685[_0xf22a('0x29')]);if(_0xd8b685[_0xf22a('0x2a')]){delete _0xd8b685[_0xf22a('0x2a')];}_0x2d36dd[_0xf22a('0x21')](_0x3837f3)['send'](_0xd8b685);};}exports[_0xf22a('0x2b')]=function(_0x1283ad,_0x1c5a03){var _0x4070b0={},_0x380629={},_0x358367={'count':0x0,'rows':[]};var _0x253b0a=_[_0xf22a('0x2c')](db['ZohoAccount']['rawAttributes'],function(_0x2992f7){return{'name':_0x2992f7[_0xf22a('0x2d')],'type':_0x2992f7[_0xf22a('0x2e')][_0xf22a('0x2f')]};});_0x380629[_0xf22a('0x30')]=_[_0xf22a('0x2c')](_0x253b0a,'name');_0x380629[_0xf22a('0x31')]=_[_0xf22a('0x32')](_0x1283ad[_0xf22a('0x31')]);_0x380629[_0xf22a('0x33')]=_['intersection'](_0x380629[_0xf22a('0x30')],_0x380629[_0xf22a('0x31')]);_0x4070b0['attributes']=_['intersection'](_0x380629['model'],qs[_0xf22a('0x34')](_0x1283ad[_0xf22a('0x31')][_0xf22a('0x34')]));_0x4070b0[_0xf22a('0x35')]=_0x4070b0[_0xf22a('0x35')]['length']?_0x4070b0[_0xf22a('0x35')]:_0x380629[_0xf22a('0x30')];if(!_0x1283ad['query'][_0xf22a('0x36')]('nolimit')){_0x4070b0[_0xf22a('0x1f')]=qs['limit'](_0x1283ad['query'][_0xf22a('0x1f')]);_0x4070b0[_0xf22a('0x1d')]=qs[_0xf22a('0x1d')](_0x1283ad[_0xf22a('0x31')][_0xf22a('0x1d')]);}_0x4070b0['order']=qs[_0xf22a('0x37')](_0x1283ad['query'][_0xf22a('0x37')]);_0x4070b0[_0xf22a('0x38')]=qs['filters'](_[_0xf22a('0x39')](_0x1283ad[_0xf22a('0x31')],_0x380629[_0xf22a('0x33')]),_0x253b0a);if(_0x1283ad[_0xf22a('0x31')][_0xf22a('0x3a')]){_0x4070b0[_0xf22a('0x38')]=_[_0xf22a('0x3b')](_0x4070b0[_0xf22a('0x38')],{'$or':_[_0xf22a('0x2c')](_0x253b0a,function(_0x18cded){if(_0x18cded['type']!==_0xf22a('0x3c')){var _0x59b92a={};_0x59b92a[_0x18cded['name']]={'$like':'%'+_0x1283ad[_0xf22a('0x31')][_0xf22a('0x3a')]+'%'};return _0x59b92a;}})});}_0x4070b0=_[_0xf22a('0x3b')]({},_0x4070b0,_0x1283ad[_0xf22a('0x3d')]);var _0x5e0a48={'where':_0x4070b0['where']};return db[_0xf22a('0x3e')][_0xf22a('0x20')](_0x5e0a48)[_0xf22a('0x28')](function(_0xbe251d){_0x358367[_0xf22a('0x20')]=_0xbe251d;if(_0x1283ad[_0xf22a('0x31')]['includeAll']){_0x4070b0[_0xf22a('0x3f')]=[{'all':!![]}];}return db[_0xf22a('0x3e')]['findAll'](_0x4070b0);})['then'](function(_0xaf3e94){_0x358367[_0xf22a('0x40')]=_0xaf3e94;return _0x358367;})[_0xf22a('0x28')](respondWithFilteredResult(_0x1c5a03,_0x4070b0))['catch'](handleError(_0x1c5a03,null));};exports[_0xf22a('0x41')]=function(_0x2c4f61,_0x54048b){var _0x1d9bdf={'raw':![],'where':{'id':_0x2c4f61['params']['id']}},_0x5db47e={};_0x5db47e[_0xf22a('0x30')]=_[_0xf22a('0x32')](db[_0xf22a('0x3e')][_0xf22a('0x42')]);_0x5db47e[_0xf22a('0x31')]=_['keys'](_0x2c4f61[_0xf22a('0x31')]);_0x5db47e['filters']=_[_0xf22a('0x43')](_0x5db47e[_0xf22a('0x30')],_0x5db47e[_0xf22a('0x31')]);_0x1d9bdf[_0xf22a('0x35')]=_[_0xf22a('0x43')](_0x5db47e[_0xf22a('0x30')],qs[_0xf22a('0x34')](_0x2c4f61[_0xf22a('0x31')][_0xf22a('0x34')]));_0x1d9bdf[_0xf22a('0x35')]=_0x1d9bdf['attributes'][_0xf22a('0x44')]?_0x1d9bdf[_0xf22a('0x35')]:_0x5db47e['model'];if(_0x2c4f61[_0xf22a('0x31')]['includeAll']){_0x1d9bdf[_0xf22a('0x3f')]=[{'all':!![]}];}_0x1d9bdf=_[_0xf22a('0x3b')]({},_0x1d9bdf,_0x2c4f61[_0xf22a('0x3d')]);return db['ZohoAccount'][_0xf22a('0x45')](_0x1d9bdf)[_0xf22a('0x28')](handleEntityNotFound(_0x54048b,null))[_0xf22a('0x28')](respondWithResult(_0x54048b,null))[_0xf22a('0x46')](handleError(_0x54048b,null));};exports[_0xf22a('0x47')]=function(_0xff49d6,_0x44316e){return db['ZohoAccount']['create'](_0xff49d6[_0xf22a('0x48')],{})[_0xf22a('0x28')](respondWithResult(_0x44316e,0xc9))[_0xf22a('0x46')](handleError(_0x44316e,null));};exports[_0xf22a('0x49')]=function(_0x581239,_0x12935a){if(_0x581239['body']['id']){delete _0x581239[_0xf22a('0x48')]['id'];}return db['ZohoAccount'][_0xf22a('0x45')]({'where':{'id':_0x581239[_0xf22a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12935a,null))[_0xf22a('0x28')](saveUpdates(_0x581239[_0xf22a('0x48')],null))[_0xf22a('0x28')](respondWithResult(_0x12935a,null))[_0xf22a('0x46')](handleError(_0x12935a,null));};exports[_0xf22a('0x4b')]=function(_0x28c4ec,_0x133c18){return db[_0xf22a('0x3e')][_0xf22a('0x45')]({'where':{'id':_0x28c4ec[_0xf22a('0x4a')]['id']}})[_0xf22a('0x28')](handleEntityNotFound(_0x133c18,null))[_0xf22a('0x28')](removeEntity(_0x133c18,null))['catch'](handleError(_0x133c18,null));};exports['getConfigurations']=function(_0x16cf8a,_0x15c822,_0x4ee5cf){var _0xc2addd={};var _0x2f9e42={};var _0x2eb353;var _0x50f027;return db[_0xf22a('0x3e')][_0xf22a('0x4c')]({'where':{'id':_0x16cf8a[_0xf22a('0x4a')]['id']}})[_0xf22a('0x28')](handleEntityNotFound(_0x15c822,null))[_0xf22a('0x28')](function(_0x309b66){if(_0x309b66){_0x2eb353=_0x309b66;_0x2f9e42[_0xf22a('0x30')]=_[_0xf22a('0x32')](db[_0xf22a('0x4d')][_0xf22a('0x42')]);_0x2f9e42[_0xf22a('0x31')]=_[_0xf22a('0x32')](_0x16cf8a[_0xf22a('0x31')]);_0x2f9e42['filters']=_[_0xf22a('0x43')](_0x2f9e42[_0xf22a('0x30')],_0x2f9e42['query']);_0xc2addd[_0xf22a('0x35')]=_[_0xf22a('0x43')](_0x2f9e42[_0xf22a('0x30')],qs[_0xf22a('0x34')](_0x16cf8a[_0xf22a('0x31')][_0xf22a('0x34')]));_0xc2addd[_0xf22a('0x35')]=_0xc2addd[_0xf22a('0x35')][_0xf22a('0x44')]?_0xc2addd[_0xf22a('0x35')]:_0x2f9e42[_0xf22a('0x30')];_0xc2addd[_0xf22a('0x4e')]=qs[_0xf22a('0x37')](_0x16cf8a[_0xf22a('0x31')]['sort']);_0xc2addd[_0xf22a('0x38')]=qs['filters'](_[_0xf22a('0x39')](_0x16cf8a[_0xf22a('0x31')],_0x2f9e42['filters']));if(_0x16cf8a[_0xf22a('0x31')]['filter']){_0xc2addd[_0xf22a('0x38')]=_[_0xf22a('0x3b')](_0xc2addd[_0xf22a('0x38')],{'$or':_[_0xf22a('0x2c')](_0xc2addd[_0xf22a('0x35')],function(_0x2652c5){var _0x115883={};_0x115883[_0x2652c5]={'$like':'%'+_0x16cf8a['query'][_0xf22a('0x3a')]+'%'};return _0x115883;})});}_0xc2addd=_[_0xf22a('0x3b')]({},_0xc2addd,_0x16cf8a[_0xf22a('0x3d')]);return _0x2eb353[_0xf22a('0x4f')](_0xc2addd);}})['then'](function(_0x21f561){if(_0x21f561){_0x50f027=_0x21f561[_0xf22a('0x44')];if(!_0x16cf8a[_0xf22a('0x31')][_0xf22a('0x36')]('nolimit')){_0xc2addd['limit']=qs['limit'](_0x16cf8a[_0xf22a('0x31')][_0xf22a('0x1f')]);_0xc2addd[_0xf22a('0x1d')]=qs['offset'](_0x16cf8a[_0xf22a('0x31')][_0xf22a('0x1d')]);}return _0x2eb353[_0xf22a('0x4f')](_0xc2addd);}})[_0xf22a('0x28')](function(_0x7fc5f1){if(_0x7fc5f1){return _0x7fc5f1?{'count':_0x50f027,'rows':_0x7fc5f1}:null;}})[_0xf22a('0x28')](respondWithResult(_0x15c822,null))[_0xf22a('0x46')](handleError(_0x15c822,null));};exports[_0xf22a('0x50')]=function(_0x4d6130,_0x53e487,_0x2598b2){if(_0x4d6130[_0xf22a('0x48')]['id']){delete _0x4d6130['body']['id'];}return db[_0xf22a('0x3e')][_0xf22a('0x4c')]({'where':{'id':_0x4d6130[_0xf22a('0x4a')]['id']}})[_0xf22a('0x28')](handleEntityNotFound(_0x53e487,null))['then'](function(_0x21d07a){if(_0x21d07a){_0x4d6130[_0xf22a('0x48')][_0xf22a('0x51')]=_0x21d07a['id'];_0x4d6130[_0xf22a('0x48')][_0xf22a('0x52')]=integrations['getSubjects'](_0x4d6130[_0xf22a('0x48')]['channel'],_0x4d6130[_0xf22a('0x48')][_0xf22a('0x2e')]);_0x4d6130[_0xf22a('0x48')]['Descriptions']=integrations[_0xf22a('0x53')](_0x4d6130[_0xf22a('0x48')][_0xf22a('0x54')],_0x4d6130[_0xf22a('0x48')][_0xf22a('0x2e')]);return db[_0xf22a('0x4d')][_0xf22a('0x47')](_0x4d6130['body'],{'include':[{'model':db[_0xf22a('0x55')],'as':_0xf22a('0x52')},{'model':db[_0xf22a('0x55')],'as':_0xf22a('0x56')}]});}return null;})['then'](respondWithResult(_0x53e487,null))['catch'](handleError(_0x53e487,null));};function getAccessToken(_0x59a36a){return new Promise(function(_0x549308,_0x27221e){var _0x26e6cc;switch(_0x59a36a[_0xf22a('0x57')]){case'US':_0x26e6cc=_0xf22a('0x58');break;case'AU':_0x26e6cc=_0xf22a('0x59');break;case'EU':_0x26e6cc=_0xf22a('0x5a');break;case'IN':_0x26e6cc=_0xf22a('0x5b');break;case'CN':_0x26e6cc=_0xf22a('0x5c');break;default:_0x26e6cc=_0xf22a('0x5a');break;}var _0x57b785={'method':_0xf22a('0x5d'),'uri':_0x26e6cc+_0xf22a('0x5e'),'qs':{'refresh_token':_0x59a36a[_0xf22a('0x5f')],'client_id':_0x59a36a[_0xf22a('0x60')],'client_secret':_0x59a36a[_0xf22a('0x61')],'grant_type':_0xf22a('0x62')},'json':!![]};return rp(_0x57b785)[_0xf22a('0x28')](function(_0x521def){if(_0x521def[_0xf22a('0x63')]){_0x549308(_0x521def[_0xf22a('0x63')]);}else{_0x27221e(_0xf22a('0x64'));}})[_0xf22a('0x46')](function(_0x4378ac){_0x27221e(_0x4378ac);});});}exports[_0xf22a('0x65')]=function(_0x359852,_0x558a35,_0x2035a9){var _0x1eebdc,_0x39ed22,_0x40b103,_0x476196,_0x403c3c;return db[_0xf22a('0x3e')][_0xf22a('0x4c')]({'where':{'id':_0x359852['params']['id']},'attributes':['id',_0xf22a('0x66'),_0xf22a('0x57'),'clientId',_0xf22a('0x61'),_0xf22a('0x67'),_0xf22a('0x68'),_0xf22a('0x5f')]})[_0xf22a('0x28')](handleEntityNotFound(_0x558a35,null))[_0xf22a('0x28')](function(_0x4302e7){_0x403c3c=_0x4302e7;_0x1eebdc=_0x403c3c['host'];_0x39ed22=_0x1eebdc===_0xf22a('0x69')?'eu':'com';_0x40b103=_0x403c3c['serverUrl'];var _0x3c1545=_0x40b103['slice'](-0x1);if(_0x3c1545==='/'||_0x3c1545==='\x5c'||_0x3c1545===':'){_0x40b103=_0x40b103[_0xf22a('0x6a')](0x0,_0x40b103[_0xf22a('0x6b')](_0x3c1545));}if(!_0x403c3c['refreshToken']){throw new Error(_0xf22a('0x6c'));}return getAccessToken(_0x403c3c);})[_0xf22a('0x28')](function(_0x2a511e){if(_0x2a511e){return rp({'method':_0xf22a('0x6d'),'uri':util['format'](_0xf22a('0x6e'),_0x39ed22),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2a511e},'json':!![]});}})[_0xf22a('0x28')](function(_0x4c2ac1){if(_0x4c2ac1){if(_0x4c2ac1[_0xf22a('0x6f')]&&_0x4c2ac1[_0xf22a('0x6f')][_0xf22a('0x70')]){throw new Error(_0x4c2ac1['response'][_0xf22a('0x70')][_0xf22a('0x71')]);}var _0x4e2d77=[];var _0x5910a4=[];var _0x23e6b8=['Owner',_0xf22a('0x72'),'Description',_0xf22a('0x73'),_0xf22a('0x74'),_0xf22a('0x75'),_0xf22a('0x76'),_0xf22a('0x77')];_0x5910a4=_[_0xf22a('0x78')](_0x4c2ac1[_0xf22a('0x34')],function(_0xf7891c){return _0x23e6b8[_0xf22a('0x79')](_0xf7891c[_0xf22a('0x7a')]);});for(var _0x4acf80=0x0;_0x4acf80<_0x5910a4[_0xf22a('0x44')];_0x4acf80++){if(_0x5910a4[_0x4acf80][_0xf22a('0x7b')]===![]){_0x4e2d77[_0xf22a('0x7c')]({'id':_0x5910a4[_0x4acf80]['id'],'name':_0x5910a4[_0x4acf80][_0xf22a('0x7d')],'custom':_0x5910a4[_0x4acf80][_0xf22a('0x7e')],'options':_0x5910a4[_0x4acf80][_0xf22a('0x7f')]===_0xf22a('0x80')&&_0x5910a4[_0x4acf80][_0xf22a('0x81')][_0xf22a('0x44')]>-0x1?_[_0xf22a('0x2c')](_0x5910a4[_0x4acf80][_0xf22a('0x81')],function(_0x66b185){return{'name':_0x66b185,'value':_0x66b185};}):[]});}}return{'count':_0x4e2d77[_0xf22a('0x44')],'rows':_0x4e2d77};}else{return{'count':0x0,'rows':[]};}})[_0xf22a('0x28')](respondWithResult(_0x558a35,null))['catch'](function(_0x7c25bb){var _0x5c4883=_0x359852[_0xf22a('0x31')][_0xf22a('0x82')]?0x1f4:_0x7c25bb[_0xf22a('0x83')]||0x1f4;logger[_0xf22a('0x70')]('getFields,\x20%s,\x20%s,\x20%s',_0xf22a('0x65'),_0x5c4883,JSON[_0xf22a('0x84')](_0x7c25bb));delete _0x7c25bb[_0xf22a('0x2a')];if(_0x5c4883===0x191){_0x5c4883=0x190;}_0x558a35['status'](_0x5c4883)[_0xf22a('0x85')](_0x359852['query'][_0xf22a('0x82')]?{'message':_0xf22a('0x86'),'statusCode':_0x7c25bb[_0xf22a('0x83')]}:_0x7c25bb);});};