6a103eeefee743ba658a28457ab67c55bbc12928
[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 _0xa94d=['count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','ZohoAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','params','rawAttributes','includeAll','include','find','catch','create','body','getConfigurations','findOne','AccountId','Subjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','serverUrl','code','com','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Description','Call_Duration','Call_Start_Time','remove','includes','api_name','system_mandatory','push','display_label','custom_field','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit'];(function(_0x14a0a0,_0x45d0cf){var _0x56b651=function(_0x1fae09){while(--_0x1fae09){_0x14a0a0['push'](_0x14a0a0['shift']());}};_0x56b651(++_0x45d0cf);}(_0xa94d,0x157));var _0xda94=function(_0x2b106a,_0x505380){_0x2b106a=_0x2b106a-0x0;var _0x4af2b0=_0xa94d[_0x2b106a];return _0x4af2b0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xda94('0x0'));var zipdir=require(_0xda94('0x1'));var jsonpatch=require(_0xda94('0x2'));var rp=require(_0xda94('0x3'));var moment=require('moment');var BPromise=require(_0xda94('0x4'));var Mustache=require(_0xda94('0x5'));var util=require(_0xda94('0x6'));var path=require(_0xda94('0x7'));var sox=require(_0xda94('0x8'));var csv=require(_0xda94('0x9'));var ejs=require(_0xda94('0xa'));var fs=require('fs');var fs_extra=require(_0xda94('0xb'));var _=require(_0xda94('0xc'));var squel=require(_0xda94('0xd'));var crypto=require(_0xda94('0xe'));var jsforce=require(_0xda94('0xf'));var deskjs=require(_0xda94('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xda94('0x11'));var Redis=require('ioredis');var authService=require(_0xda94('0x12'));var qs=require(_0xda94('0x13'));var as=require(_0xda94('0x14'));var hardwareService=require(_0xda94('0x15'));var logger=require(_0xda94('0x16'))('api');var utils=require(_0xda94('0x17'));var config=require(_0xda94('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xda94('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4db0a0,_0x1ebc52){_0x1ebc52=_0x1ebc52||0xcc;return function(_0x46b847){if(_0x46b847){return _0x4db0a0[_0xda94('0x1a')](_0x1ebc52);}return _0x4db0a0[_0xda94('0x1b')](_0x1ebc52)[_0xda94('0x1c')]();};}function respondWithResult(_0x3114cb,_0x21a62d){_0x21a62d=_0x21a62d||0xc8;return function(_0x4d54f3){if(_0x4d54f3){return _0x3114cb[_0xda94('0x1b')](_0x21a62d)['json'](_0x4d54f3);}};}function respondWithFilteredResult(_0x3110d9,_0x4871f9){return function(_0xbd48cb){if(_0xbd48cb){var _0x5964ce=typeof _0x4871f9[_0xda94('0x1d')]===_0xda94('0x1e')&&typeof _0x4871f9[_0xda94('0x1f')]===_0xda94('0x1e');var _0x52edc2=_0xbd48cb[_0xda94('0x20')];var _0x4fcedb=_0x5964ce?0x0:_0x4871f9[_0xda94('0x1d')];var _0x4fac1d=_0x5964ce?_0xbd48cb['count']:_0x4871f9[_0xda94('0x1d')]+_0x4871f9['limit'];var _0x3c803d;if(_0x4fac1d>=_0x52edc2){_0x4fac1d=_0x52edc2;_0x3c803d=0xc8;}else{_0x3c803d=0xce;}_0x3110d9[_0xda94('0x1b')](_0x3c803d);return _0x3110d9[_0xda94('0x21')](_0xda94('0x22'),_0x4fcedb+'-'+_0x4fac1d+'/'+_0x52edc2)[_0xda94('0x23')](_0xbd48cb);}return null;};}function patchUpdates(_0x14d179){return function(_0xbe31b4){try{jsonpatch[_0xda94('0x24')](_0xbe31b4,_0x14d179,!![]);}catch(_0x4e0638){return BPromise[_0xda94('0x25')](_0x4e0638);}return _0xbe31b4[_0xda94('0x26')]();};}function saveUpdates(_0x3bdfd2,_0x5046ad){return function(_0x2b7d87){if(_0x2b7d87){return _0x2b7d87[_0xda94('0x27')](_0x3bdfd2)[_0xda94('0x28')](function(_0xa5d078){return _0xa5d078;});}return null;};}function removeEntity(_0x58123f,_0x1ea492){return function(_0x3c5a51){if(_0x3c5a51){return _0x3c5a51[_0xda94('0x29')]()[_0xda94('0x28')](function(){_0x58123f[_0xda94('0x1b')](0xcc)[_0xda94('0x1c')]();});}};}function handleEntityNotFound(_0x3e4a78,_0x4c567d){return function(_0x6298fe){if(!_0x6298fe){_0x3e4a78[_0xda94('0x1a')](0x194);}return _0x6298fe;};}function handleError(_0x286b17,_0x15ce3e){_0x15ce3e=_0x15ce3e||0x1f4;return function(_0x517295){logger[_0xda94('0x2a')](_0x517295['stack']);if(_0x517295[_0xda94('0x2b')]){delete _0x517295['name'];}_0x286b17[_0xda94('0x1b')](_0x15ce3e)[_0xda94('0x2c')](_0x517295);};}exports[_0xda94('0x2d')]=function(_0x3ada3c,_0x51bd83){var _0x201c30={},_0x2727de={},_0x105921={'count':0x0,'rows':[]};var _0x479143=_[_0xda94('0x2e')](db[_0xda94('0x2f')]['rawAttributes'],function(_0x281a7a){return{'name':_0x281a7a[_0xda94('0x30')],'type':_0x281a7a[_0xda94('0x31')][_0xda94('0x32')]};});_0x2727de[_0xda94('0x33')]=_['map'](_0x479143,_0xda94('0x2b'));_0x2727de[_0xda94('0x34')]=_[_0xda94('0x35')](_0x3ada3c['query']);_0x2727de[_0xda94('0x36')]=_[_0xda94('0x37')](_0x2727de[_0xda94('0x33')],_0x2727de[_0xda94('0x34')]);_0x201c30[_0xda94('0x38')]=_[_0xda94('0x37')](_0x2727de[_0xda94('0x33')],qs['fields'](_0x3ada3c[_0xda94('0x34')][_0xda94('0x39')]));_0x201c30[_0xda94('0x38')]=_0x201c30[_0xda94('0x38')][_0xda94('0x3a')]?_0x201c30[_0xda94('0x38')]:_0x2727de[_0xda94('0x33')];if(!_0x3ada3c['query'][_0xda94('0x3b')](_0xda94('0x3c'))){_0x201c30[_0xda94('0x1f')]=qs['limit'](_0x3ada3c[_0xda94('0x34')][_0xda94('0x1f')]);_0x201c30[_0xda94('0x1d')]=qs[_0xda94('0x1d')](_0x3ada3c['query'][_0xda94('0x1d')]);}_0x201c30[_0xda94('0x3d')]=qs[_0xda94('0x3e')](_0x3ada3c[_0xda94('0x34')][_0xda94('0x3e')]);_0x201c30[_0xda94('0x3f')]=qs[_0xda94('0x36')](_[_0xda94('0x40')](_0x3ada3c[_0xda94('0x34')],_0x2727de[_0xda94('0x36')]),_0x479143);if(_0x3ada3c[_0xda94('0x34')][_0xda94('0x41')]){_0x201c30['where']=_[_0xda94('0x42')](_0x201c30[_0xda94('0x3f')],{'$or':_[_0xda94('0x2e')](_0x479143,function(_0x4a73ab){if(_0x4a73ab['type']!==_0xda94('0x43')){var _0x196bb4={};_0x196bb4[_0x4a73ab['name']]={'$like':'%'+_0x3ada3c[_0xda94('0x34')][_0xda94('0x41')]+'%'};return _0x196bb4;}})});}_0x201c30=_[_0xda94('0x42')]({},_0x201c30,_0x3ada3c[_0xda94('0x44')]);var _0x35214a={'where':_0x201c30[_0xda94('0x3f')]};return db[_0xda94('0x2f')][_0xda94('0x20')](_0x35214a)['then'](function(_0x3992d5){_0x105921[_0xda94('0x20')]=_0x3992d5;if(_0x3ada3c['query']['includeAll']){_0x201c30['include']=[{'all':!![]}];}return db[_0xda94('0x2f')][_0xda94('0x45')](_0x201c30);})[_0xda94('0x28')](function(_0x1a11f1){_0x105921[_0xda94('0x46')]=_0x1a11f1;return _0x105921;})[_0xda94('0x28')](respondWithFilteredResult(_0x51bd83,_0x201c30))['catch'](handleError(_0x51bd83,null));};exports['show']=function(_0x53bc5a,_0x30f809){var _0x5b303f={'raw':![],'where':{'id':_0x53bc5a[_0xda94('0x47')]['id']}},_0x6ad022={};_0x6ad022[_0xda94('0x33')]=_[_0xda94('0x35')](db[_0xda94('0x2f')][_0xda94('0x48')]);_0x6ad022[_0xda94('0x34')]=_[_0xda94('0x35')](_0x53bc5a[_0xda94('0x34')]);_0x6ad022[_0xda94('0x36')]=_[_0xda94('0x37')](_0x6ad022['model'],_0x6ad022[_0xda94('0x34')]);_0x5b303f[_0xda94('0x38')]=_[_0xda94('0x37')](_0x6ad022['model'],qs['fields'](_0x53bc5a[_0xda94('0x34')]['fields']));_0x5b303f[_0xda94('0x38')]=_0x5b303f[_0xda94('0x38')][_0xda94('0x3a')]?_0x5b303f[_0xda94('0x38')]:_0x6ad022[_0xda94('0x33')];if(_0x53bc5a[_0xda94('0x34')][_0xda94('0x49')]){_0x5b303f[_0xda94('0x4a')]=[{'all':!![]}];}_0x5b303f=_[_0xda94('0x42')]({},_0x5b303f,_0x53bc5a[_0xda94('0x44')]);return db['ZohoAccount'][_0xda94('0x4b')](_0x5b303f)[_0xda94('0x28')](handleEntityNotFound(_0x30f809,null))[_0xda94('0x28')](respondWithResult(_0x30f809,null))[_0xda94('0x4c')](handleError(_0x30f809,null));};exports['create']=function(_0x18e5d1,_0x2fda00){return db[_0xda94('0x2f')][_0xda94('0x4d')](_0x18e5d1[_0xda94('0x4e')],{})[_0xda94('0x28')](respondWithResult(_0x2fda00,0xc9))[_0xda94('0x4c')](handleError(_0x2fda00,null));};exports['update']=function(_0x307c22,_0x3dd89e){if(_0x307c22['body']['id']){delete _0x307c22['body']['id'];}return db[_0xda94('0x2f')][_0xda94('0x4b')]({'where':{'id':_0x307c22[_0xda94('0x47')]['id']}})['then'](handleEntityNotFound(_0x3dd89e,null))[_0xda94('0x28')](saveUpdates(_0x307c22[_0xda94('0x4e')],null))[_0xda94('0x28')](respondWithResult(_0x3dd89e,null))[_0xda94('0x4c')](handleError(_0x3dd89e,null));};exports[_0xda94('0x29')]=function(_0x2c6e03,_0x23f48){return db[_0xda94('0x2f')][_0xda94('0x4b')]({'where':{'id':_0x2c6e03[_0xda94('0x47')]['id']}})[_0xda94('0x28')](handleEntityNotFound(_0x23f48,null))[_0xda94('0x28')](removeEntity(_0x23f48,null))[_0xda94('0x4c')](handleError(_0x23f48,null));};exports[_0xda94('0x4f')]=function(_0x24d666,_0x3ba723,_0x285ac8){var _0x32deaa={};var _0xd922aa={};var _0x20d025;var _0x132277;return db[_0xda94('0x2f')][_0xda94('0x50')]({'where':{'id':_0x24d666[_0xda94('0x47')]['id']}})[_0xda94('0x28')](handleEntityNotFound(_0x3ba723,null))[_0xda94('0x28')](function(_0x4909ec){if(_0x4909ec){_0x20d025=_0x4909ec;_0xd922aa[_0xda94('0x33')]=_[_0xda94('0x35')](db['ZohoConfiguration']['rawAttributes']);_0xd922aa[_0xda94('0x34')]=_[_0xda94('0x35')](_0x24d666[_0xda94('0x34')]);_0xd922aa[_0xda94('0x36')]=_['intersection'](_0xd922aa[_0xda94('0x33')],_0xd922aa[_0xda94('0x34')]);_0x32deaa[_0xda94('0x38')]=_[_0xda94('0x37')](_0xd922aa[_0xda94('0x33')],qs[_0xda94('0x39')](_0x24d666[_0xda94('0x34')][_0xda94('0x39')]));_0x32deaa[_0xda94('0x38')]=_0x32deaa['attributes'][_0xda94('0x3a')]?_0x32deaa['attributes']:_0xd922aa[_0xda94('0x33')];_0x32deaa[_0xda94('0x3d')]=qs[_0xda94('0x3e')](_0x24d666[_0xda94('0x34')][_0xda94('0x3e')]);_0x32deaa['where']=qs[_0xda94('0x36')](_[_0xda94('0x40')](_0x24d666['query'],_0xd922aa[_0xda94('0x36')]));if(_0x24d666[_0xda94('0x34')]['filter']){_0x32deaa['where']=_[_0xda94('0x42')](_0x32deaa[_0xda94('0x3f')],{'$or':_[_0xda94('0x2e')](_0x32deaa['attributes'],function(_0x4bd829){var _0x3d835a={};_0x3d835a[_0x4bd829]={'$like':'%'+_0x24d666[_0xda94('0x34')]['filter']+'%'};return _0x3d835a;})});}_0x32deaa=_['merge']({},_0x32deaa,_0x24d666[_0xda94('0x44')]);return _0x20d025['getConfigurations'](_0x32deaa);}})[_0xda94('0x28')](function(_0x531fa3){if(_0x531fa3){_0x132277=_0x531fa3[_0xda94('0x3a')];if(!_0x24d666[_0xda94('0x34')][_0xda94('0x3b')](_0xda94('0x3c'))){_0x32deaa[_0xda94('0x1f')]=qs[_0xda94('0x1f')](_0x24d666[_0xda94('0x34')][_0xda94('0x1f')]);_0x32deaa[_0xda94('0x1d')]=qs['offset'](_0x24d666[_0xda94('0x34')][_0xda94('0x1d')]);}return _0x20d025[_0xda94('0x4f')](_0x32deaa);}})[_0xda94('0x28')](function(_0x4cf0d3){if(_0x4cf0d3){return _0x4cf0d3?{'count':_0x132277,'rows':_0x4cf0d3}:null;}})['then'](respondWithResult(_0x3ba723,null))[_0xda94('0x4c')](handleError(_0x3ba723,null));};exports['addConfiguration']=function(_0xfdd1eb,_0x1d12ea,_0x1244b6){if(_0xfdd1eb['body']['id']){delete _0xfdd1eb['body']['id'];}return db[_0xda94('0x2f')][_0xda94('0x50')]({'where':{'id':_0xfdd1eb[_0xda94('0x47')]['id']}})[_0xda94('0x28')](handleEntityNotFound(_0x1d12ea,null))['then'](function(_0x4f48e0){if(_0x4f48e0){_0xfdd1eb[_0xda94('0x4e')][_0xda94('0x51')]=_0x4f48e0['id'];_0xfdd1eb[_0xda94('0x4e')][_0xda94('0x52')]=integrations['getSubjects'](_0xfdd1eb[_0xda94('0x4e')][_0xda94('0x53')],_0xfdd1eb['body'][_0xda94('0x31')]);_0xfdd1eb[_0xda94('0x4e')][_0xda94('0x54')]=integrations[_0xda94('0x55')](_0xfdd1eb[_0xda94('0x4e')][_0xda94('0x53')],_0xfdd1eb[_0xda94('0x4e')][_0xda94('0x31')]);return db['ZohoConfiguration'][_0xda94('0x4d')](_0xfdd1eb['body'],{'include':[{'model':db['ZohoField'],'as':_0xda94('0x52')},{'model':db[_0xda94('0x56')],'as':_0xda94('0x54')}]});}return null;})[_0xda94('0x28')](respondWithResult(_0x1d12ea,null))[_0xda94('0x4c')](handleError(_0x1d12ea,null));};function getAccessToken(_0xfa8cc9){return new Promise(function(_0x10b664,_0x2fa1e4){var _0xd366e3;switch(_0xfa8cc9[_0xda94('0x57')]){case'US':_0xd366e3='https://accounts.zoho.com';break;case'AU':_0xd366e3=_0xda94('0x58');break;case'EU':_0xd366e3='https://accounts.zoho.eu';break;case'IN':_0xd366e3=_0xda94('0x59');break;case'CN':_0xd366e3='https://accounts.zoho.com.cn';break;default:_0xd366e3='https://accounts.zoho.eu';break;}var _0x536759={'method':_0xda94('0x5a'),'uri':_0xd366e3+_0xda94('0x5b'),'qs':{'refresh_token':_0xfa8cc9[_0xda94('0x5c')],'client_id':_0xfa8cc9['clientId'],'client_secret':_0xfa8cc9[_0xda94('0x5d')],'grant_type':_0xda94('0x5e')},'json':!![]};return rp(_0x536759)[_0xda94('0x28')](function(_0x11ffb2){if(_0x11ffb2[_0xda94('0x5f')]){_0x10b664(_0x11ffb2['access_token']);}else{_0x2fa1e4(_0xda94('0x60'));}})[_0xda94('0x4c')](function(_0x520e0a){_0x2fa1e4(_0x520e0a);});});}exports[_0xda94('0x61')]=function(_0x326521,_0x88c635,_0x541845){var _0x3c9e30,_0x81f492,_0x5b18a2,_0x37afaf,_0x306eb0;return db[_0xda94('0x2f')][_0xda94('0x50')]({'where':{'id':_0x326521[_0xda94('0x47')]['id']},'attributes':['id',_0xda94('0x62'),'zone',_0xda94('0x63'),_0xda94('0x5d'),_0xda94('0x64'),_0xda94('0x65'),_0xda94('0x5c')]})[_0xda94('0x28')](handleEntityNotFound(_0x88c635,null))[_0xda94('0x28')](function(_0x50652c){_0x306eb0=_0x50652c;_0x3c9e30=_0x306eb0[_0xda94('0x62')];_0x81f492=_0x3c9e30==='zoho.eu'?'eu':_0xda94('0x66');_0x5b18a2=_0x306eb0[_0xda94('0x64')];var _0x3bf83a=_0x5b18a2['slice'](-0x1);if(_0x3bf83a==='/'||_0x3bf83a==='\x5c'||_0x3bf83a===':'){_0x5b18a2=_0x5b18a2[_0xda94('0x67')](0x0,_0x5b18a2['lastIndexOf'](_0x3bf83a));}if(!_0x306eb0[_0xda94('0x5c')]){throw new Error(_0xda94('0x68'));}return getAccessToken(_0x306eb0);})[_0xda94('0x28')](function(_0x34e08e){if(_0x34e08e){return rp({'method':_0xda94('0x69'),'uri':util[_0xda94('0x6a')](_0xda94('0x6b'),_0x81f492),'qs':{'module':_0xda94('0x6c')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x34e08e},'json':!![]});}})[_0xda94('0x28')](function(_0x44a00a){if(_0x44a00a){if(_0x44a00a[_0xda94('0x6d')]&&_0x44a00a[_0xda94('0x6d')][_0xda94('0x2a')]){throw new Error(_0x44a00a[_0xda94('0x6d')][_0xda94('0x2a')][_0xda94('0x6e')]);}var _0x310d47=[];var _0x1b5e29=[];var _0x107fb7=[_0xda94('0x6f'),'Subject',_0xda94('0x70'),'WhoId',_0xda94('0x71'),'Call_Result',_0xda94('0x72'),'Call_Type'];_0x1b5e29=_[_0xda94('0x73')](_0x44a00a[_0xda94('0x39')],function(_0x4b17bc){return _0x107fb7[_0xda94('0x74')](_0x4b17bc[_0xda94('0x75')]);});for(var _0x11cd4c=0x0;_0x11cd4c<_0x1b5e29['length'];_0x11cd4c++){if(_0x1b5e29[_0x11cd4c][_0xda94('0x76')]===![]){_0x310d47[_0xda94('0x77')]({'id':_0x1b5e29[_0x11cd4c]['id'],'name':_0x1b5e29[_0x11cd4c][_0xda94('0x78')],'custom':_0x1b5e29[_0x11cd4c][_0xda94('0x79')],'options':_0x1b5e29[_0x11cd4c]['data_type']==='picklist'&&_0x1b5e29[_0x11cd4c]['pick_list_values'][_0xda94('0x3a')]>-0x1?_[_0xda94('0x2e')](_0x1b5e29[_0x11cd4c]['pick_list_values'],function(_0x3f87a1){return{'name':_0x3f87a1,'value':_0x3f87a1};}):[]});}}return{'count':_0x310d47['length'],'rows':_0x310d47};}else{return{'count':0x0,'rows':[]};}})[_0xda94('0x28')](respondWithResult(_0x88c635,null))[_0xda94('0x4c')](function(_0x13663c){var _0x12bdaa=_0x326521[_0xda94('0x34')][_0xda94('0x7a')]?0x1f4:_0x13663c['statusCode']||0x1f4;logger[_0xda94('0x2a')](_0xda94('0x7b'),_0xda94('0x61'),_0x12bdaa,JSON['stringify'](_0x13663c));delete _0x13663c[_0xda94('0x2b')];if(_0x12bdaa===0x191){_0x12bdaa=0x190;}_0x88c635[_0xda94('0x1b')](_0x12bdaa)[_0xda94('0x2c')](_0x326521[_0xda94('0x34')]['test']?{'message':_0xda94('0x7c'),'statusCode':_0x13663c['statusCode']}:_0x13663c);});};