009f95895505a7956f0a3f7ace48e1829f8b0f8d
[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 _0x81bf=['hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','refreshToken','clientSecret','refresh_token','access_token','host','serverUrl','code','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','Zoho-oauthtoken\x20','response','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','send','map','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','attributes','model','fields','nolimit','order','sort','where','filter','VIRTUAL','options','ZohoAccount','includeAll','include','findAll','rows','catch','show','params','length','merge','find','create','body','findOne','ZohoConfiguration','pick','getConfigurations'];(function(_0x2fcfe5,_0x2b8298){var _0x52075a=function(_0xf4ea07){while(--_0xf4ea07){_0x2fcfe5['push'](_0x2fcfe5['shift']());}};_0x52075a(++_0x2b8298);}(_0x81bf,0x1ac));var _0xf81b=function(_0x10c111,_0x17b3e5){_0x10c111=_0x10c111-0x0;var _0x357560=_0x81bf[_0x10c111];return _0x357560;};'use strict';var emlformat=require(_0xf81b('0x0'));var rimraf=require(_0xf81b('0x1'));var zipdir=require(_0xf81b('0x2'));var jsonpatch=require(_0xf81b('0x3'));var rp=require(_0xf81b('0x4'));var moment=require(_0xf81b('0x5'));var BPromise=require(_0xf81b('0x6'));var Mustache=require(_0xf81b('0x7'));var util=require(_0xf81b('0x8'));var path=require(_0xf81b('0x9'));var sox=require(_0xf81b('0xa'));var csv=require(_0xf81b('0xb'));var ejs=require(_0xf81b('0xc'));var fs=require('fs');var fs_extra=require(_0xf81b('0xd'));var _=require(_0xf81b('0xe'));var squel=require(_0xf81b('0xf'));var crypto=require(_0xf81b('0x10'));var jsforce=require('jsforce');var deskjs=require(_0xf81b('0x11'));var toCsv=require(_0xf81b('0xb'));var querystring=require('querystring');var Papa=require(_0xf81b('0x12'));var Redis=require('ioredis');var authService=require(_0xf81b('0x13'));var qs=require(_0xf81b('0x14'));var as=require(_0xf81b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf81b('0x16'))(_0xf81b('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xf81b('0x18'));function respondWithStatusCode(_0x4396b7,_0x3274ee){_0x3274ee=_0x3274ee||0xcc;return function(_0x317f16){if(_0x317f16){return _0x4396b7[_0xf81b('0x19')](_0x3274ee);}return _0x4396b7[_0xf81b('0x1a')](_0x3274ee)[_0xf81b('0x1b')]();};}function respondWithResult(_0x5768ed,_0xad85c2){_0xad85c2=_0xad85c2||0xc8;return function(_0x459dbc){if(_0x459dbc){return _0x5768ed[_0xf81b('0x1a')](_0xad85c2)[_0xf81b('0x1c')](_0x459dbc);}};}function respondWithFilteredResult(_0x5200f5,_0x21d9b0){return function(_0x4f05dd){if(_0x4f05dd){var _0x65096c=typeof _0x21d9b0['offset']===_0xf81b('0x1d')&&typeof _0x21d9b0[_0xf81b('0x1e')]===_0xf81b('0x1d');var _0x6b777b=_0x4f05dd[_0xf81b('0x1f')];var _0x222ffa=_0x65096c?0x0:_0x21d9b0[_0xf81b('0x20')];var _0xe1f380=_0x65096c?_0x4f05dd[_0xf81b('0x1f')]:_0x21d9b0['offset']+_0x21d9b0[_0xf81b('0x1e')];var _0x5d04b0;if(_0xe1f380>=_0x6b777b){_0xe1f380=_0x6b777b;_0x5d04b0=0xc8;}else{_0x5d04b0=0xce;}_0x5200f5['status'](_0x5d04b0);return _0x5200f5[_0xf81b('0x21')](_0xf81b('0x22'),_0x222ffa+'-'+_0xe1f380+'/'+_0x6b777b)[_0xf81b('0x1c')](_0x4f05dd);}return null;};}function patchUpdates(_0x4015b1){return function(_0x1ad282){try{jsonpatch['apply'](_0x1ad282,_0x4015b1,!![]);}catch(_0x1b7286){return BPromise[_0xf81b('0x23')](_0x1b7286);}return _0x1ad282[_0xf81b('0x24')]();};}function saveUpdates(_0x2a4962,_0x198596){return function(_0x568ab1){if(_0x568ab1){return _0x568ab1[_0xf81b('0x25')](_0x2a4962)[_0xf81b('0x26')](function(_0x112b5a){return _0x112b5a;});}return null;};}function removeEntity(_0x46636a,_0x475816){return function(_0x33e7b5){if(_0x33e7b5){return _0x33e7b5[_0xf81b('0x27')]()[_0xf81b('0x26')](function(){_0x46636a[_0xf81b('0x1a')](0xcc)[_0xf81b('0x1b')]();});}};}function handleEntityNotFound(_0x35c0eb,_0x5209fb){return function(_0xd4b1be){if(!_0xd4b1be){_0x35c0eb[_0xf81b('0x19')](0x194);}return _0xd4b1be;};}function handleError(_0x3c1705,_0x73804f){_0x73804f=_0x73804f||0x1f4;return function(_0x4d8d17){logger[_0xf81b('0x28')](_0x4d8d17[_0xf81b('0x29')]);if(_0x4d8d17['name']){delete _0x4d8d17['name'];}_0x3c1705[_0xf81b('0x1a')](_0x73804f)[_0xf81b('0x2a')](_0x4d8d17);};}exports['index']=function(_0x56e95d,_0xeb7235){var _0x59d1a8={},_0x30fd80={},_0x265f8a={'count':0x0,'rows':[]};var _0x2d3f7a=_[_0xf81b('0x2b')](db['ZohoAccount'][_0xf81b('0x2c')],function(_0x16748d){return{'name':_0x16748d[_0xf81b('0x2d')],'type':_0x16748d[_0xf81b('0x2e')][_0xf81b('0x2f')]};});_0x30fd80['model']=_[_0xf81b('0x2b')](_0x2d3f7a,_0xf81b('0x30'));_0x30fd80[_0xf81b('0x31')]=_[_0xf81b('0x32')](_0x56e95d[_0xf81b('0x31')]);_0x30fd80[_0xf81b('0x33')]=_[_0xf81b('0x34')](_0x30fd80['model'],_0x30fd80[_0xf81b('0x31')]);_0x59d1a8[_0xf81b('0x35')]=_[_0xf81b('0x34')](_0x30fd80[_0xf81b('0x36')],qs['fields'](_0x56e95d[_0xf81b('0x31')][_0xf81b('0x37')]));_0x59d1a8[_0xf81b('0x35')]=_0x59d1a8['attributes']['length']?_0x59d1a8[_0xf81b('0x35')]:_0x30fd80[_0xf81b('0x36')];if(!_0x56e95d[_0xf81b('0x31')]['hasOwnProperty'](_0xf81b('0x38'))){_0x59d1a8[_0xf81b('0x1e')]=qs['limit'](_0x56e95d[_0xf81b('0x31')][_0xf81b('0x1e')]);_0x59d1a8[_0xf81b('0x20')]=qs[_0xf81b('0x20')](_0x56e95d[_0xf81b('0x31')]['offset']);}_0x59d1a8[_0xf81b('0x39')]=qs[_0xf81b('0x3a')](_0x56e95d[_0xf81b('0x31')][_0xf81b('0x3a')]);_0x59d1a8[_0xf81b('0x3b')]=qs['filters'](_['pick'](_0x56e95d[_0xf81b('0x31')],_0x30fd80[_0xf81b('0x33')]),_0x2d3f7a);if(_0x56e95d[_0xf81b('0x31')][_0xf81b('0x3c')]){_0x59d1a8[_0xf81b('0x3b')]=_['merge'](_0x59d1a8[_0xf81b('0x3b')],{'$or':_['map'](_0x2d3f7a,function(_0x41565f){if(_0x41565f[_0xf81b('0x2e')]!==_0xf81b('0x3d')){var _0x174615={};_0x174615[_0x41565f[_0xf81b('0x30')]]={'$like':'%'+_0x56e95d[_0xf81b('0x31')][_0xf81b('0x3c')]+'%'};return _0x174615;}})});}_0x59d1a8=_['merge']({},_0x59d1a8,_0x56e95d[_0xf81b('0x3e')]);var _0xab5372={'where':_0x59d1a8[_0xf81b('0x3b')]};return db[_0xf81b('0x3f')][_0xf81b('0x1f')](_0xab5372)['then'](function(_0x333946){_0x265f8a[_0xf81b('0x1f')]=_0x333946;if(_0x56e95d['query'][_0xf81b('0x40')]){_0x59d1a8[_0xf81b('0x41')]=[{'all':!![]}];}return db[_0xf81b('0x3f')][_0xf81b('0x42')](_0x59d1a8);})[_0xf81b('0x26')](function(_0x34a187){_0x265f8a[_0xf81b('0x43')]=_0x34a187;return _0x265f8a;})[_0xf81b('0x26')](respondWithFilteredResult(_0xeb7235,_0x59d1a8))[_0xf81b('0x44')](handleError(_0xeb7235,null));};exports[_0xf81b('0x45')]=function(_0x502eb3,_0x4a49ba){var _0x2829ed={'raw':![],'where':{'id':_0x502eb3[_0xf81b('0x46')]['id']}},_0x455cd3={};_0x455cd3[_0xf81b('0x36')]=_[_0xf81b('0x32')](db[_0xf81b('0x3f')][_0xf81b('0x2c')]);_0x455cd3['query']=_[_0xf81b('0x32')](_0x502eb3[_0xf81b('0x31')]);_0x455cd3[_0xf81b('0x33')]=_[_0xf81b('0x34')](_0x455cd3['model'],_0x455cd3[_0xf81b('0x31')]);_0x2829ed[_0xf81b('0x35')]=_[_0xf81b('0x34')](_0x455cd3[_0xf81b('0x36')],qs[_0xf81b('0x37')](_0x502eb3[_0xf81b('0x31')][_0xf81b('0x37')]));_0x2829ed[_0xf81b('0x35')]=_0x2829ed[_0xf81b('0x35')][_0xf81b('0x47')]?_0x2829ed['attributes']:_0x455cd3[_0xf81b('0x36')];if(_0x502eb3[_0xf81b('0x31')][_0xf81b('0x40')]){_0x2829ed['include']=[{'all':!![]}];}_0x2829ed=_[_0xf81b('0x48')]({},_0x2829ed,_0x502eb3[_0xf81b('0x3e')]);return db['ZohoAccount'][_0xf81b('0x49')](_0x2829ed)[_0xf81b('0x26')](handleEntityNotFound(_0x4a49ba,null))[_0xf81b('0x26')](respondWithResult(_0x4a49ba,null))[_0xf81b('0x44')](handleError(_0x4a49ba,null));};exports[_0xf81b('0x4a')]=function(_0x52d1c2,_0x218b8d){return db['ZohoAccount'][_0xf81b('0x4a')](_0x52d1c2[_0xf81b('0x4b')],{})[_0xf81b('0x26')](respondWithResult(_0x218b8d,0xc9))[_0xf81b('0x44')](handleError(_0x218b8d,null));};exports[_0xf81b('0x25')]=function(_0xfe1bf,_0x41bb1f){if(_0xfe1bf[_0xf81b('0x4b')]['id']){delete _0xfe1bf[_0xf81b('0x4b')]['id'];}return db[_0xf81b('0x3f')][_0xf81b('0x49')]({'where':{'id':_0xfe1bf['params']['id']}})[_0xf81b('0x26')](handleEntityNotFound(_0x41bb1f,null))['then'](saveUpdates(_0xfe1bf[_0xf81b('0x4b')],null))[_0xf81b('0x26')](respondWithResult(_0x41bb1f,null))['catch'](handleError(_0x41bb1f,null));};exports[_0xf81b('0x27')]=function(_0xb32cb1,_0xbdcb1e){return db[_0xf81b('0x3f')][_0xf81b('0x49')]({'where':{'id':_0xb32cb1[_0xf81b('0x46')]['id']}})['then'](handleEntityNotFound(_0xbdcb1e,null))[_0xf81b('0x26')](removeEntity(_0xbdcb1e,null))['catch'](handleError(_0xbdcb1e,null));};exports['getConfigurations']=function(_0x54015d,_0x2073f4,_0xfbf4c7){var _0x560993={};var _0x444090={};var _0x1d12d5;var _0x45d474;return db[_0xf81b('0x3f')][_0xf81b('0x4c')]({'where':{'id':_0x54015d[_0xf81b('0x46')]['id']}})[_0xf81b('0x26')](handleEntityNotFound(_0x2073f4,null))[_0xf81b('0x26')](function(_0x123c9c){if(_0x123c9c){_0x1d12d5=_0x123c9c;_0x444090['model']=_[_0xf81b('0x32')](db[_0xf81b('0x4d')][_0xf81b('0x2c')]);_0x444090[_0xf81b('0x31')]=_[_0xf81b('0x32')](_0x54015d['query']);_0x444090[_0xf81b('0x33')]=_['intersection'](_0x444090['model'],_0x444090['query']);_0x560993[_0xf81b('0x35')]=_[_0xf81b('0x34')](_0x444090[_0xf81b('0x36')],qs['fields'](_0x54015d[_0xf81b('0x31')][_0xf81b('0x37')]));_0x560993[_0xf81b('0x35')]=_0x560993[_0xf81b('0x35')]['length']?_0x560993['attributes']:_0x444090[_0xf81b('0x36')];_0x560993['order']=qs[_0xf81b('0x3a')](_0x54015d['query'][_0xf81b('0x3a')]);_0x560993[_0xf81b('0x3b')]=qs['filters'](_[_0xf81b('0x4e')](_0x54015d[_0xf81b('0x31')],_0x444090[_0xf81b('0x33')]));if(_0x54015d[_0xf81b('0x31')][_0xf81b('0x3c')]){_0x560993[_0xf81b('0x3b')]=_[_0xf81b('0x48')](_0x560993[_0xf81b('0x3b')],{'$or':_[_0xf81b('0x2b')](_0x560993[_0xf81b('0x35')],function(_0x196a87){var _0x5e6862={};_0x5e6862[_0x196a87]={'$like':'%'+_0x54015d[_0xf81b('0x31')]['filter']+'%'};return _0x5e6862;})});}_0x560993=_[_0xf81b('0x48')]({},_0x560993,_0x54015d[_0xf81b('0x3e')]);return _0x1d12d5[_0xf81b('0x4f')](_0x560993);}})[_0xf81b('0x26')](function(_0x41c150){if(_0x41c150){_0x45d474=_0x41c150[_0xf81b('0x47')];if(!_0x54015d[_0xf81b('0x31')][_0xf81b('0x50')]('nolimit')){_0x560993[_0xf81b('0x1e')]=qs[_0xf81b('0x1e')](_0x54015d[_0xf81b('0x31')]['limit']);_0x560993['offset']=qs[_0xf81b('0x20')](_0x54015d[_0xf81b('0x31')][_0xf81b('0x20')]);}return _0x1d12d5[_0xf81b('0x4f')](_0x560993);}})[_0xf81b('0x26')](function(_0x584c94){if(_0x584c94){return _0x584c94?{'count':_0x45d474,'rows':_0x584c94}:null;}})['then'](respondWithResult(_0x2073f4,null))[_0xf81b('0x44')](handleError(_0x2073f4,null));};exports[_0xf81b('0x51')]=function(_0x7cdc68,_0x4509fe,_0x9d40af){if(_0x7cdc68[_0xf81b('0x4b')]['id']){delete _0x7cdc68[_0xf81b('0x4b')]['id'];}return db['ZohoAccount'][_0xf81b('0x4c')]({'where':{'id':_0x7cdc68[_0xf81b('0x46')]['id']}})[_0xf81b('0x26')](handleEntityNotFound(_0x4509fe,null))[_0xf81b('0x26')](function(_0x5bedcb){if(_0x5bedcb){_0x7cdc68[_0xf81b('0x4b')][_0xf81b('0x52')]=_0x5bedcb['id'];_0x7cdc68['body'][_0xf81b('0x53')]=integrations[_0xf81b('0x54')](_0x7cdc68[_0xf81b('0x4b')]['channel'],_0x7cdc68['body'][_0xf81b('0x2e')]);_0x7cdc68['body'][_0xf81b('0x55')]=integrations[_0xf81b('0x56')](_0x7cdc68[_0xf81b('0x4b')][_0xf81b('0x57')],_0x7cdc68['body'][_0xf81b('0x2e')]);return db['ZohoConfiguration'][_0xf81b('0x4a')](_0x7cdc68['body'],{'include':[{'model':db[_0xf81b('0x58')],'as':_0xf81b('0x53')},{'model':db[_0xf81b('0x58')],'as':_0xf81b('0x55')}]});}return null;})['then'](respondWithResult(_0x4509fe,null))[_0xf81b('0x44')](handleError(_0x4509fe,null));};function getAccessToken(_0xcdd264){return new Promise(function(_0x92a0af,_0x5f158f){var _0x4982d5;switch(_0xcdd264[_0xf81b('0x59')]){case'US':_0x4982d5=_0xf81b('0x5a');break;case'AU':_0x4982d5='https://accounts.zoho.com.au';break;case'EU':_0x4982d5=_0xf81b('0x5b');break;case'IN':_0x4982d5=_0xf81b('0x5c');break;case'CN':_0x4982d5=_0xf81b('0x5d');break;default:_0x4982d5=_0xf81b('0x5b');break;}var _0x12ed03={'method':'POST','uri':_0x4982d5+'/oauth/v2/token','qs':{'refresh_token':_0xcdd264[_0xf81b('0x5e')],'client_id':_0xcdd264['clientId'],'client_secret':_0xcdd264[_0xf81b('0x5f')],'grant_type':_0xf81b('0x60')},'json':!![]};return rp(_0x12ed03)['then'](function(_0x3dd249){if(_0x3dd249[_0xf81b('0x61')]){_0x92a0af(_0x3dd249[_0xf81b('0x61')]);}else{_0x5f158f('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xf81b('0x44')](function(_0x43c606){_0x5f158f(_0x43c606);});});}exports['getFields']=function(_0x2d0b15,_0x7e29da,_0x441afe){var _0x252f05,_0x223535,_0x302035,_0x4b1393,_0x293cd9;return db[_0xf81b('0x3f')]['findOne']({'where':{'id':_0x2d0b15[_0xf81b('0x46')]['id']},'attributes':['id',_0xf81b('0x62'),'zone','clientId','clientSecret',_0xf81b('0x63'),_0xf81b('0x64'),_0xf81b('0x5e')]})['then'](handleEntityNotFound(_0x7e29da,null))[_0xf81b('0x26')](function(_0x474bd3){_0x293cd9=_0x474bd3;_0x252f05=_0x293cd9['host'];_0x223535=_0x252f05==='zoho.eu'?'eu':_0xf81b('0x65');_0x302035=_0x293cd9[_0xf81b('0x63')];var _0x12bdf4=_0x302035[_0xf81b('0x66')](-0x1);if(_0x12bdf4==='/'||_0x12bdf4==='\x5c'||_0x12bdf4===':'){_0x302035=_0x302035[_0xf81b('0x67')](0x0,_0x302035[_0xf81b('0x68')](_0x12bdf4));}if(!_0x293cd9['refreshToken']){throw new Error(_0xf81b('0x69'));}return getAccessToken(_0x293cd9);})[_0xf81b('0x26')](function(_0x5dc289){if(_0x5dc289){return rp({'method':'GET','uri':util[_0xf81b('0x6a')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x223535),'qs':{'module':'Calls'},'headers':{'Authorization':_0xf81b('0x6b')+_0x5dc289},'json':!![]});}})['then'](function(_0x11fa9f){if(_0x11fa9f){if(_0x11fa9f[_0xf81b('0x6c')]&&_0x11fa9f[_0xf81b('0x6c')][_0xf81b('0x28')]){throw new Error(_0x11fa9f[_0xf81b('0x6c')][_0xf81b('0x28')]['message']);}var _0x454b70=[];var _0xdfe65f=[];var _0x1b5848=['Owner','Subject','Description',_0xf81b('0x6d'),_0xf81b('0x6e'),_0xf81b('0x6f'),_0xf81b('0x70'),_0xf81b('0x71')];_0xdfe65f=_[_0xf81b('0x72')](_0x11fa9f[_0xf81b('0x37')],function(_0x4add6d){return _0x1b5848[_0xf81b('0x73')](_0x4add6d['api_name']);});for(var _0x1cd4e6=0x0;_0x1cd4e6<_0xdfe65f[_0xf81b('0x47')];_0x1cd4e6++){if(_0xdfe65f[_0x1cd4e6]['system_mandatory']===![]){_0x454b70[_0xf81b('0x74')]({'id':_0xdfe65f[_0x1cd4e6]['id'],'name':_0xdfe65f[_0x1cd4e6][_0xf81b('0x75')],'custom':_0xdfe65f[_0x1cd4e6][_0xf81b('0x76')],'options':_0xdfe65f[_0x1cd4e6]['data_type']===_0xf81b('0x77')&&_0xdfe65f[_0x1cd4e6][_0xf81b('0x78')][_0xf81b('0x47')]>-0x1?_['map'](_0xdfe65f[_0x1cd4e6][_0xf81b('0x78')],function(_0x1edb6e){return{'name':_0x1edb6e,'value':_0x1edb6e};}):[]});}}return{'count':_0x454b70[_0xf81b('0x47')],'rows':_0x454b70};}else{return{'count':0x0,'rows':[]};}})[_0xf81b('0x26')](respondWithResult(_0x7e29da,null))[_0xf81b('0x44')](function(_0x2ec2d0){var _0x5a1b11=_0x2d0b15[_0xf81b('0x31')][_0xf81b('0x79')]?0x1f4:_0x2ec2d0[_0xf81b('0x7a')]||0x1f4;logger[_0xf81b('0x28')](_0xf81b('0x7b'),_0xf81b('0x7c'),_0x5a1b11,JSON[_0xf81b('0x7d')](_0x2ec2d0));delete _0x2ec2d0[_0xf81b('0x30')];if(_0x5a1b11===0x191){_0x5a1b11=0x190;}_0x7e29da['status'](_0x5a1b11)[_0xf81b('0x2a')](_0x2d0b15['query'][_0xf81b('0x79')]?{'message':_0xf81b('0x7e'),'statusCode':_0x2ec2d0[_0xf81b('0x7a')]}:_0x2ec2d0);});};