d6c3f4ea276c9c51ac767361cd75f4a9550bdf2c
[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 _0x90f8=['Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','WhoId','Call_Result','Call_Type','api_name','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','squel','crypto','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','destroy','then','error','name','send','map','fieldName','key','query','keys','filters','model','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','ZohoAccount','includeAll','include','rows','catch','show','rawAttributes','intersection','length','find','create','body','update','params','getConfigurations','findOne','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','type','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','Subjects','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','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','serverUrl','code','zoho.eu','com','slice','substring','lastIndexOf'];(function(_0x2afb49,_0x131943){var _0x62ba62=function(_0x4240da){while(--_0x4240da){_0x2afb49['push'](_0x2afb49['shift']());}};_0x62ba62(++_0x131943);}(_0x90f8,0x9a));var _0x890f=function(_0x61736c,_0x232d6a){_0x61736c=_0x61736c-0x0;var _0x51d1bb=_0x90f8[_0x61736c];return _0x51d1bb;};'use strict';var emlformat=require(_0x890f('0x0'));var rimraf=require(_0x890f('0x1'));var zipdir=require(_0x890f('0x2'));var jsonpatch=require(_0x890f('0x3'));var rp=require(_0x890f('0x4'));var moment=require(_0x890f('0x5'));var BPromise=require(_0x890f('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x890f('0x7'));var sox=require('sox');var csv=require(_0x890f('0x8'));var ejs=require(_0x890f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x890f('0xa'));var crypto=require(_0x890f('0xb'));var jsforce=require(_0x890f('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x890f('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x890f('0xe'));var as=require(_0x890f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x890f('0x10'))(_0x890f('0x11'));var utils=require('../../config/utils');var config=require(_0x890f('0x12'));var licenseUtil=require(_0x890f('0x13'));var db=require(_0x890f('0x14'))['db'];var integrations=require(_0x890f('0x15'));function respondWithStatusCode(_0x26f9a7,_0x48035f){_0x48035f=_0x48035f||0xcc;return function(_0x54d560){if(_0x54d560){return _0x26f9a7[_0x890f('0x16')](_0x48035f);}return _0x26f9a7[_0x890f('0x17')](_0x48035f)[_0x890f('0x18')]();};}function respondWithResult(_0x44a8a0,_0x381f90){_0x381f90=_0x381f90||0xc8;return function(_0x152476){if(_0x152476){return _0x44a8a0[_0x890f('0x17')](_0x381f90)[_0x890f('0x19')](_0x152476);}};}function respondWithFilteredResult(_0x4db63f,_0x4bcf04){return function(_0xd85a7f){if(_0xd85a7f){var _0x450ce5=typeof _0x4bcf04[_0x890f('0x1a')]===_0x890f('0x1b')&&typeof _0x4bcf04[_0x890f('0x1c')]===_0x890f('0x1b');var _0x3e4de1=_0xd85a7f[_0x890f('0x1d')];var _0x1553fb=_0x450ce5?0x0:_0x4bcf04[_0x890f('0x1a')];var _0x3a4a9d=_0x450ce5?_0xd85a7f[_0x890f('0x1d')]:_0x4bcf04[_0x890f('0x1a')]+_0x4bcf04['limit'];var _0x60ca5c;if(_0x3a4a9d>=_0x3e4de1){_0x3a4a9d=_0x3e4de1;_0x60ca5c=0xc8;}else{_0x60ca5c=0xce;}_0x4db63f[_0x890f('0x17')](_0x60ca5c);return _0x4db63f[_0x890f('0x1e')]('Content-Range',_0x1553fb+'-'+_0x3a4a9d+'/'+_0x3e4de1)[_0x890f('0x19')](_0xd85a7f);}return null;};}function patchUpdates(_0xa77c3b){return function(_0x2efb26){try{jsonpatch['apply'](_0x2efb26,_0xa77c3b,!![]);}catch(_0x4ca1ef){return BPromise[_0x890f('0x1f')](_0x4ca1ef);}return _0x2efb26[_0x890f('0x20')]();};}function saveUpdates(_0x4cc170,_0x2d1c3c){return function(_0x175651){if(_0x175651){return _0x175651['update'](_0x4cc170)['then'](function(_0x152f20){return _0x152f20;});}return null;};}function removeEntity(_0x76315b,_0x6e5cb2){return function(_0x5b011d){if(_0x5b011d){return _0x5b011d[_0x890f('0x21')]()[_0x890f('0x22')](function(){_0x76315b[_0x890f('0x17')](0xcc)[_0x890f('0x18')]();});}};}function handleEntityNotFound(_0x4880ac,_0x242307){return function(_0x528a82){if(!_0x528a82){_0x4880ac[_0x890f('0x16')](0x194);}return _0x528a82;};}function handleError(_0x2c06eb,_0x5faee7){_0x5faee7=_0x5faee7||0x1f4;return function(_0x2b2e04){logger[_0x890f('0x23')](_0x2b2e04['stack']);if(_0x2b2e04['name']){delete _0x2b2e04[_0x890f('0x24')];}_0x2c06eb[_0x890f('0x17')](_0x5faee7)[_0x890f('0x25')](_0x2b2e04);};}exports['index']=function(_0x1ed296,_0x27b5f2){var _0x35d950={},_0x20e206={},_0x1bf9ac={'count':0x0,'rows':[]};var _0x2419cf=_[_0x890f('0x26')](db['ZohoAccount']['rawAttributes'],function(_0x2c766a){return{'name':_0x2c766a[_0x890f('0x27')],'type':_0x2c766a['type'][_0x890f('0x28')]};});_0x20e206['model']=_[_0x890f('0x26')](_0x2419cf,_0x890f('0x24'));_0x20e206[_0x890f('0x29')]=_[_0x890f('0x2a')](_0x1ed296[_0x890f('0x29')]);_0x20e206[_0x890f('0x2b')]=_['intersection'](_0x20e206[_0x890f('0x2c')],_0x20e206[_0x890f('0x29')]);_0x35d950[_0x890f('0x2d')]=_['intersection'](_0x20e206[_0x890f('0x2c')],qs[_0x890f('0x2e')](_0x1ed296[_0x890f('0x29')][_0x890f('0x2e')]));_0x35d950[_0x890f('0x2d')]=_0x35d950[_0x890f('0x2d')]['length']?_0x35d950[_0x890f('0x2d')]:_0x20e206[_0x890f('0x2c')];if(!_0x1ed296[_0x890f('0x29')]['hasOwnProperty'](_0x890f('0x2f'))){_0x35d950['limit']=qs[_0x890f('0x1c')](_0x1ed296[_0x890f('0x29')]['limit']);_0x35d950[_0x890f('0x1a')]=qs[_0x890f('0x1a')](_0x1ed296[_0x890f('0x29')][_0x890f('0x1a')]);}_0x35d950[_0x890f('0x30')]=qs[_0x890f('0x31')](_0x1ed296[_0x890f('0x29')][_0x890f('0x31')]);_0x35d950[_0x890f('0x32')]=qs[_0x890f('0x2b')](_[_0x890f('0x33')](_0x1ed296['query'],_0x20e206[_0x890f('0x2b')]),_0x2419cf);if(_0x1ed296[_0x890f('0x29')][_0x890f('0x34')]){_0x35d950['where']=_['merge'](_0x35d950[_0x890f('0x32')],{'$or':_[_0x890f('0x26')](_0x2419cf,function(_0x1dab51){if(_0x1dab51['type']!==_0x890f('0x35')){var _0x106d7f={};_0x106d7f[_0x1dab51[_0x890f('0x24')]]={'$like':'%'+_0x1ed296[_0x890f('0x29')]['filter']+'%'};return _0x106d7f;}})});}_0x35d950=_[_0x890f('0x36')]({},_0x35d950,_0x1ed296[_0x890f('0x37')]);var _0x34cf1a={'where':_0x35d950[_0x890f('0x32')]};return db[_0x890f('0x38')][_0x890f('0x1d')](_0x34cf1a)[_0x890f('0x22')](function(_0x47dee0){_0x1bf9ac[_0x890f('0x1d')]=_0x47dee0;if(_0x1ed296[_0x890f('0x29')][_0x890f('0x39')]){_0x35d950[_0x890f('0x3a')]=[{'all':!![]}];}return db[_0x890f('0x38')]['findAll'](_0x35d950);})[_0x890f('0x22')](function(_0x20e5bf){_0x1bf9ac[_0x890f('0x3b')]=_0x20e5bf;return _0x1bf9ac;})['then'](respondWithFilteredResult(_0x27b5f2,_0x35d950))[_0x890f('0x3c')](handleError(_0x27b5f2,null));};exports[_0x890f('0x3d')]=function(_0x2605dd,_0x406434){var _0x19acd7={'raw':![],'where':{'id':_0x2605dd['params']['id']}},_0x327d3c={};_0x327d3c[_0x890f('0x2c')]=_['keys'](db[_0x890f('0x38')][_0x890f('0x3e')]);_0x327d3c[_0x890f('0x29')]=_[_0x890f('0x2a')](_0x2605dd['query']);_0x327d3c['filters']=_[_0x890f('0x3f')](_0x327d3c[_0x890f('0x2c')],_0x327d3c['query']);_0x19acd7[_0x890f('0x2d')]=_[_0x890f('0x3f')](_0x327d3c['model'],qs[_0x890f('0x2e')](_0x2605dd['query'][_0x890f('0x2e')]));_0x19acd7['attributes']=_0x19acd7[_0x890f('0x2d')][_0x890f('0x40')]?_0x19acd7[_0x890f('0x2d')]:_0x327d3c['model'];if(_0x2605dd[_0x890f('0x29')][_0x890f('0x39')]){_0x19acd7['include']=[{'all':!![]}];}_0x19acd7=_[_0x890f('0x36')]({},_0x19acd7,_0x2605dd[_0x890f('0x37')]);return db[_0x890f('0x38')][_0x890f('0x41')](_0x19acd7)[_0x890f('0x22')](handleEntityNotFound(_0x406434,null))[_0x890f('0x22')](respondWithResult(_0x406434,null))['catch'](handleError(_0x406434,null));};exports['create']=function(_0x379dbb,_0x4fda38){return db[_0x890f('0x38')][_0x890f('0x42')](_0x379dbb[_0x890f('0x43')],{})[_0x890f('0x22')](respondWithResult(_0x4fda38,0xc9))[_0x890f('0x3c')](handleError(_0x4fda38,null));};exports[_0x890f('0x44')]=function(_0x2d62b7,_0x12bc19){if(_0x2d62b7['body']['id']){delete _0x2d62b7[_0x890f('0x43')]['id'];}return db[_0x890f('0x38')][_0x890f('0x41')]({'where':{'id':_0x2d62b7[_0x890f('0x45')]['id']}})['then'](handleEntityNotFound(_0x12bc19,null))['then'](saveUpdates(_0x2d62b7['body'],null))[_0x890f('0x22')](respondWithResult(_0x12bc19,null))[_0x890f('0x3c')](handleError(_0x12bc19,null));};exports[_0x890f('0x21')]=function(_0x1107c1,_0x7d44c3){return db[_0x890f('0x38')][_0x890f('0x41')]({'where':{'id':_0x1107c1[_0x890f('0x45')]['id']}})[_0x890f('0x22')](handleEntityNotFound(_0x7d44c3,null))['then'](removeEntity(_0x7d44c3,null))[_0x890f('0x3c')](handleError(_0x7d44c3,null));};exports[_0x890f('0x46')]=function(_0x2ff39d,_0x1ba713,_0x58332c){var _0x54e4b={};var _0x3d52c1={};var _0x147c45;var _0x501196;return db[_0x890f('0x38')][_0x890f('0x47')]({'where':{'id':_0x2ff39d[_0x890f('0x45')]['id']}})[_0x890f('0x22')](handleEntityNotFound(_0x1ba713,null))[_0x890f('0x22')](function(_0x1a6c2f){if(_0x1a6c2f){_0x147c45=_0x1a6c2f;_0x3d52c1['model']=_[_0x890f('0x2a')](db['ZohoConfiguration'][_0x890f('0x3e')]);_0x3d52c1[_0x890f('0x29')]=_['keys'](_0x2ff39d['query']);_0x3d52c1['filters']=_[_0x890f('0x3f')](_0x3d52c1[_0x890f('0x2c')],_0x3d52c1[_0x890f('0x29')]);_0x54e4b['attributes']=_[_0x890f('0x3f')](_0x3d52c1[_0x890f('0x2c')],qs['fields'](_0x2ff39d[_0x890f('0x29')][_0x890f('0x2e')]));_0x54e4b['attributes']=_0x54e4b[_0x890f('0x2d')][_0x890f('0x40')]?_0x54e4b[_0x890f('0x2d')]:_0x3d52c1[_0x890f('0x2c')];_0x54e4b[_0x890f('0x30')]=qs[_0x890f('0x31')](_0x2ff39d[_0x890f('0x29')][_0x890f('0x31')]);_0x54e4b[_0x890f('0x32')]=qs[_0x890f('0x2b')](_[_0x890f('0x33')](_0x2ff39d[_0x890f('0x29')],_0x3d52c1[_0x890f('0x2b')]));if(_0x2ff39d[_0x890f('0x29')]['filter']){_0x54e4b['where']=_[_0x890f('0x36')](_0x54e4b[_0x890f('0x32')],{'$or':_[_0x890f('0x26')](_0x54e4b['attributes'],function(_0x41c180){var _0x598268={};_0x598268[_0x41c180]={'$like':'%'+_0x2ff39d[_0x890f('0x29')][_0x890f('0x34')]+'%'};return _0x598268;})});}_0x54e4b=_[_0x890f('0x36')]({},_0x54e4b,_0x2ff39d['options']);return _0x147c45[_0x890f('0x46')](_0x54e4b);}})['then'](function(_0x219ba5){if(_0x219ba5){_0x501196=_0x219ba5[_0x890f('0x40')];if(!_0x2ff39d[_0x890f('0x29')][_0x890f('0x48')]('nolimit')){_0x54e4b[_0x890f('0x1c')]=qs[_0x890f('0x1c')](_0x2ff39d[_0x890f('0x29')][_0x890f('0x1c')]);_0x54e4b[_0x890f('0x1a')]=qs[_0x890f('0x1a')](_0x2ff39d[_0x890f('0x29')][_0x890f('0x1a')]);}return _0x147c45[_0x890f('0x46')](_0x54e4b);}})['then'](function(_0x1031dd){if(_0x1031dd){return _0x1031dd?{'count':_0x501196,'rows':_0x1031dd}:null;}})[_0x890f('0x22')](respondWithResult(_0x1ba713,null))[_0x890f('0x3c')](handleError(_0x1ba713,null));};exports[_0x890f('0x49')]=function(_0x1fef31,_0x352008,_0x1a5b9c){if(_0x1fef31['body']['id']){delete _0x1fef31[_0x890f('0x43')]['id'];}return db['ZohoAccount'][_0x890f('0x47')]({'where':{'id':_0x1fef31[_0x890f('0x45')]['id']}})[_0x890f('0x22')](handleEntityNotFound(_0x352008,null))[_0x890f('0x22')](function(_0x5943db){if(_0x5943db){_0x1fef31['body'][_0x890f('0x4a')]=_0x5943db['id'];_0x1fef31[_0x890f('0x43')]['Subjects']=integrations[_0x890f('0x4b')](_0x1fef31[_0x890f('0x43')][_0x890f('0x4c')],_0x1fef31[_0x890f('0x43')][_0x890f('0x4d')]);_0x1fef31[_0x890f('0x43')][_0x890f('0x4e')]=integrations[_0x890f('0x4f')](_0x1fef31['body'][_0x890f('0x4c')],_0x1fef31[_0x890f('0x43')][_0x890f('0x4d')]);return db[_0x890f('0x50')][_0x890f('0x42')](_0x1fef31[_0x890f('0x43')],{'include':[{'model':db[_0x890f('0x51')],'as':_0x890f('0x52')},{'model':db[_0x890f('0x51')],'as':_0x890f('0x4e')}]});}return null;})['then'](respondWithResult(_0x352008,null))[_0x890f('0x3c')](handleError(_0x352008,null));};function getAccessToken(_0x4ee137){return new Promise(function(_0x2bd8e9,_0x5c5c9a){var _0x5666a4;switch(_0x4ee137[_0x890f('0x53')]){case'US':_0x5666a4=_0x890f('0x54');break;case'AU':_0x5666a4=_0x890f('0x55');break;case'EU':_0x5666a4=_0x890f('0x56');break;case'IN':_0x5666a4=_0x890f('0x57');break;case'CN':_0x5666a4=_0x890f('0x58');break;default:_0x5666a4=_0x890f('0x56');break;}var _0x2a0d80={'method':_0x890f('0x59'),'uri':_0x5666a4+_0x890f('0x5a'),'qs':{'refresh_token':_0x4ee137[_0x890f('0x5b')],'client_id':_0x4ee137['clientId'],'client_secret':_0x4ee137[_0x890f('0x5c')],'grant_type':_0x890f('0x5d')},'json':!![]};return rp(_0x2a0d80)[_0x890f('0x22')](function(_0x7c2db9){if(_0x7c2db9[_0x890f('0x5e')]){_0x2bd8e9(_0x7c2db9['access_token']);}else{_0x5c5c9a(_0x890f('0x5f'));}})[_0x890f('0x3c')](function(_0x85c1ab){_0x5c5c9a(_0x85c1ab);});});}exports[_0x890f('0x60')]=function(_0x4c3ca5,_0x5eccc8,_0x26872f){var _0x401570,_0xe65ab2,_0x15228d,_0x3403a5,_0x2b4da4;return db[_0x890f('0x38')][_0x890f('0x47')]({'where':{'id':_0x4c3ca5[_0x890f('0x45')]['id']},'attributes':['id',_0x890f('0x61'),'zone',_0x890f('0x62'),_0x890f('0x5c'),_0x890f('0x63'),_0x890f('0x64'),_0x890f('0x5b')]})[_0x890f('0x22')](handleEntityNotFound(_0x5eccc8,null))[_0x890f('0x22')](function(_0xd4f0ba){_0x2b4da4=_0xd4f0ba;_0x401570=_0x2b4da4['host'];_0xe65ab2=_0x401570===_0x890f('0x65')?'eu':_0x890f('0x66');_0x15228d=_0x2b4da4[_0x890f('0x63')];var _0x3eb488=_0x15228d[_0x890f('0x67')](-0x1);if(_0x3eb488==='/'||_0x3eb488==='\x5c'||_0x3eb488===':'){_0x15228d=_0x15228d[_0x890f('0x68')](0x0,_0x15228d[_0x890f('0x69')](_0x3eb488));}if(!_0x2b4da4['refreshToken']){throw new Error(_0x890f('0x6a'));}return getAccessToken(_0x2b4da4);})[_0x890f('0x22')](function(_0x158ad8){if(_0x158ad8){return rp({'method':_0x890f('0x6b'),'uri':util['format'](_0x890f('0x6c'),_0xe65ab2),'qs':{'module':_0x890f('0x6d')},'headers':{'Authorization':_0x890f('0x6e')+_0x158ad8},'json':!![]});}})['then'](function(_0x21c095){if(_0x21c095){if(_0x21c095[_0x890f('0x6f')]&&_0x21c095[_0x890f('0x6f')][_0x890f('0x23')]){throw new Error(_0x21c095[_0x890f('0x6f')][_0x890f('0x23')][_0x890f('0x70')]);}var _0x53ee2f=[];var _0x46e06d=[];var _0x4e270d=[_0x890f('0x71'),_0x890f('0x72'),_0x890f('0x73'),_0x890f('0x74'),'Call_Duration',_0x890f('0x75'),'Call_Start_Time',_0x890f('0x76')];_0x46e06d=_['remove'](_0x21c095['fields'],function(_0x5493cf){return _0x4e270d['includes'](_0x5493cf[_0x890f('0x77')]);});for(var _0x548832=0x0;_0x548832<_0x46e06d[_0x890f('0x40')];_0x548832++){if(_0x46e06d[_0x548832]['system_mandatory']===![]){_0x53ee2f[_0x890f('0x78')]({'id':_0x46e06d[_0x548832]['id'],'name':_0x46e06d[_0x548832][_0x890f('0x79')],'custom':_0x46e06d[_0x548832][_0x890f('0x7a')],'options':_0x46e06d[_0x548832]['data_type']===_0x890f('0x7b')&&_0x46e06d[_0x548832][_0x890f('0x7c')][_0x890f('0x40')]>-0x1?_[_0x890f('0x26')](_0x46e06d[_0x548832][_0x890f('0x7c')],function(_0x2e3475){return{'name':_0x2e3475,'value':_0x2e3475};}):[]});}}return{'count':_0x53ee2f[_0x890f('0x40')],'rows':_0x53ee2f};}else{return{'count':0x0,'rows':[]};}})[_0x890f('0x22')](respondWithResult(_0x5eccc8,null))[_0x890f('0x3c')](function(_0x39a852){var _0x482bc1=_0x4c3ca5['query'][_0x890f('0x7d')]?0x1f4:_0x39a852[_0x890f('0x7e')]||0x1f4;logger[_0x890f('0x23')](_0x890f('0x7f'),_0x890f('0x60'),_0x482bc1,JSON[_0x890f('0x80')](_0x39a852));delete _0x39a852['name'];if(_0x482bc1===0x191){_0x482bc1=0x190;}_0x5eccc8[_0x890f('0x17')](_0x482bc1)[_0x890f('0x25')](_0x4c3ca5[_0x890f('0x29')][_0x890f('0x7d')]?{'message':_0x890f('0x81'),'statusCode':_0x39a852[_0x890f('0x7e')]}:_0x39a852);});};