a3d77ef0fe147e36023d863f9c090b13dcd5b7ac
[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 _0x8f40=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','undefined','limit','count','offset','set','Content-Range','json','save','update','then','sendStatus','error','stack','name','send','index','ZohoAccount','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','findAll','rows','show','include','find','catch','create','body','params','findOne','length','filter','nolimit','getConfigurations','AccountId','Subjects','getSubjects','Descriptions','ZohoConfiguration','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','/oauth/v2/token','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','serverUrl','code','refreshToken','com','slice','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','custom_field','data_type','picklist','test','statusCode','stringify','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x209ad0,_0x178ba3){var _0x1859dd=function(_0x592de6){while(--_0x592de6){_0x209ad0['push'](_0x209ad0['shift']());}};_0x1859dd(++_0x178ba3);}(_0x8f40,0x1d8));var _0x08f4=function(_0x46218c,_0x4b18f2){_0x46218c=_0x46218c-0x0;var _0x424188=_0x8f40[_0x46218c];return _0x424188;};'use strict';var emlformat=require(_0x08f4('0x0'));var rimraf=require(_0x08f4('0x1'));var zipdir=require(_0x08f4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x08f4('0x3'));var moment=require(_0x08f4('0x4'));var BPromise=require(_0x08f4('0x5'));var Mustache=require(_0x08f4('0x6'));var util=require(_0x08f4('0x7'));var path=require('path');var sox=require(_0x08f4('0x8'));var csv=require(_0x08f4('0x9'));var ejs=require(_0x08f4('0xa'));var fs=require('fs');var fs_extra=require(_0x08f4('0xb'));var _=require(_0x08f4('0xc'));var squel=require(_0x08f4('0xd'));var crypto=require('crypto');var jsforce=require(_0x08f4('0xe'));var deskjs=require(_0x08f4('0xf'));var toCsv=require(_0x08f4('0x9'));var querystring=require(_0x08f4('0x10'));var Papa=require(_0x08f4('0x11'));var Redis=require(_0x08f4('0x12'));var authService=require(_0x08f4('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x08f4('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x08f4('0x15'))(_0x08f4('0x16'));var utils=require(_0x08f4('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x08f4('0x18'));var db=require(_0x08f4('0x19'))['db'];var integrations=require(_0x08f4('0x1a'));function respondWithStatusCode(_0x5987d3,_0x51aba4){_0x51aba4=_0x51aba4||0xcc;return function(_0x576bb4){if(_0x576bb4){return _0x5987d3['sendStatus'](_0x51aba4);}return _0x5987d3[_0x08f4('0x1b')](_0x51aba4)[_0x08f4('0x1c')]();};}function respondWithResult(_0x1087bf,_0x1e8e5b){_0x1e8e5b=_0x1e8e5b||0xc8;return function(_0x991e30){if(_0x991e30){return _0x1087bf[_0x08f4('0x1b')](_0x1e8e5b)['json'](_0x991e30);}};}function respondWithFilteredResult(_0x3c0960,_0x525aea){return function(_0x3e981d){if(_0x3e981d){var _0x56fd34=typeof _0x525aea['offset']===_0x08f4('0x1d')&&typeof _0x525aea[_0x08f4('0x1e')]==='undefined';var _0x4d38ee=_0x3e981d[_0x08f4('0x1f')];var _0x3bb751=_0x56fd34?0x0:_0x525aea['offset'];var _0x366800=_0x56fd34?_0x3e981d[_0x08f4('0x1f')]:_0x525aea[_0x08f4('0x20')]+_0x525aea[_0x08f4('0x1e')];var _0x2e6076;if(_0x366800>=_0x4d38ee){_0x366800=_0x4d38ee;_0x2e6076=0xc8;}else{_0x2e6076=0xce;}_0x3c0960['status'](_0x2e6076);return _0x3c0960[_0x08f4('0x21')](_0x08f4('0x22'),_0x3bb751+'-'+_0x366800+'/'+_0x4d38ee)[_0x08f4('0x23')](_0x3e981d);}return null;};}function patchUpdates(_0x5c4ab8){return function(_0x175e0c){try{jsonpatch['apply'](_0x175e0c,_0x5c4ab8,!![]);}catch(_0xed9660){return BPromise['reject'](_0xed9660);}return _0x175e0c[_0x08f4('0x24')]();};}function saveUpdates(_0x4e9829,_0x2684a4){return function(_0x21ea15){if(_0x21ea15){return _0x21ea15[_0x08f4('0x25')](_0x4e9829)[_0x08f4('0x26')](function(_0x131da2){return _0x131da2;});}return null;};}function removeEntity(_0x34d889,_0x460eed){return function(_0x36c5fa){if(_0x36c5fa){return _0x36c5fa['destroy']()['then'](function(){_0x34d889[_0x08f4('0x1b')](0xcc)[_0x08f4('0x1c')]();});}};}function handleEntityNotFound(_0x3fc866,_0x184f1c){return function(_0x55af42){if(!_0x55af42){_0x3fc866[_0x08f4('0x27')](0x194);}return _0x55af42;};}function handleError(_0x5d6b58,_0x168fcb){_0x168fcb=_0x168fcb||0x1f4;return function(_0x37dce8){logger[_0x08f4('0x28')](_0x37dce8[_0x08f4('0x29')]);if(_0x37dce8[_0x08f4('0x2a')]){delete _0x37dce8['name'];}_0x5d6b58[_0x08f4('0x1b')](_0x168fcb)[_0x08f4('0x2b')](_0x37dce8);};}exports[_0x08f4('0x2c')]=function(_0x5b5aec,_0x3c0f30){var _0x270336={},_0x51b8d1={},_0x1ca54c={'count':0x0,'rows':[]};var _0x8e3934=_['map'](db[_0x08f4('0x2d')][_0x08f4('0x2e')],function(_0x108d7f){return{'name':_0x108d7f[_0x08f4('0x2f')],'type':_0x108d7f[_0x08f4('0x30')][_0x08f4('0x31')]};});_0x51b8d1['model']=_[_0x08f4('0x32')](_0x8e3934,'name');_0x51b8d1[_0x08f4('0x33')]=_[_0x08f4('0x34')](_0x5b5aec['query']);_0x51b8d1[_0x08f4('0x35')]=_[_0x08f4('0x36')](_0x51b8d1[_0x08f4('0x37')],_0x51b8d1[_0x08f4('0x33')]);_0x270336[_0x08f4('0x38')]=_[_0x08f4('0x36')](_0x51b8d1[_0x08f4('0x37')],qs[_0x08f4('0x39')](_0x5b5aec['query'][_0x08f4('0x39')]));_0x270336[_0x08f4('0x38')]=_0x270336['attributes']['length']?_0x270336['attributes']:_0x51b8d1['model'];if(!_0x5b5aec[_0x08f4('0x33')][_0x08f4('0x3a')]('nolimit')){_0x270336[_0x08f4('0x1e')]=qs[_0x08f4('0x1e')](_0x5b5aec['query'][_0x08f4('0x1e')]);_0x270336[_0x08f4('0x20')]=qs[_0x08f4('0x20')](_0x5b5aec[_0x08f4('0x33')]['offset']);}_0x270336[_0x08f4('0x3b')]=qs[_0x08f4('0x3c')](_0x5b5aec[_0x08f4('0x33')][_0x08f4('0x3c')]);_0x270336[_0x08f4('0x3d')]=qs['filters'](_[_0x08f4('0x3e')](_0x5b5aec['query'],_0x51b8d1[_0x08f4('0x35')]),_0x8e3934);if(_0x5b5aec[_0x08f4('0x33')]['filter']){_0x270336[_0x08f4('0x3d')]=_[_0x08f4('0x3f')](_0x270336[_0x08f4('0x3d')],{'$or':_[_0x08f4('0x32')](_0x8e3934,function(_0x33f34d){if(_0x33f34d[_0x08f4('0x30')]!==_0x08f4('0x40')){var _0x4a5d34={};_0x4a5d34[_0x33f34d[_0x08f4('0x2a')]]={'$like':'%'+_0x5b5aec['query']['filter']+'%'};return _0x4a5d34;}})});}_0x270336=_[_0x08f4('0x3f')]({},_0x270336,_0x5b5aec['options']);var _0x47383e={'where':_0x270336[_0x08f4('0x3d')]};return db[_0x08f4('0x2d')]['count'](_0x47383e)['then'](function(_0x53c8ea){_0x1ca54c[_0x08f4('0x1f')]=_0x53c8ea;if(_0x5b5aec[_0x08f4('0x33')]['includeAll']){_0x270336['include']=[{'all':!![]}];}return db[_0x08f4('0x2d')][_0x08f4('0x41')](_0x270336);})[_0x08f4('0x26')](function(_0x99c87f){_0x1ca54c[_0x08f4('0x42')]=_0x99c87f;return _0x1ca54c;})[_0x08f4('0x26')](respondWithFilteredResult(_0x3c0f30,_0x270336))['catch'](handleError(_0x3c0f30,null));};exports[_0x08f4('0x43')]=function(_0x4c5074,_0x439149){var _0x2d850d={'raw':![],'where':{'id':_0x4c5074['params']['id']}},_0x482f91={};_0x482f91[_0x08f4('0x37')]=_[_0x08f4('0x34')](db[_0x08f4('0x2d')][_0x08f4('0x2e')]);_0x482f91[_0x08f4('0x33')]=_[_0x08f4('0x34')](_0x4c5074['query']);_0x482f91[_0x08f4('0x35')]=_[_0x08f4('0x36')](_0x482f91[_0x08f4('0x37')],_0x482f91[_0x08f4('0x33')]);_0x2d850d[_0x08f4('0x38')]=_[_0x08f4('0x36')](_0x482f91['model'],qs['fields'](_0x4c5074[_0x08f4('0x33')][_0x08f4('0x39')]));_0x2d850d['attributes']=_0x2d850d[_0x08f4('0x38')]['length']?_0x2d850d[_0x08f4('0x38')]:_0x482f91[_0x08f4('0x37')];if(_0x4c5074[_0x08f4('0x33')]['includeAll']){_0x2d850d[_0x08f4('0x44')]=[{'all':!![]}];}_0x2d850d=_['merge']({},_0x2d850d,_0x4c5074['options']);return db['ZohoAccount'][_0x08f4('0x45')](_0x2d850d)['then'](handleEntityNotFound(_0x439149,null))[_0x08f4('0x26')](respondWithResult(_0x439149,null))[_0x08f4('0x46')](handleError(_0x439149,null));};exports[_0x08f4('0x47')]=function(_0x5c9992,_0xd6686a){return db['ZohoAccount']['create'](_0x5c9992['body'],{})['then'](respondWithResult(_0xd6686a,0xc9))['catch'](handleError(_0xd6686a,null));};exports[_0x08f4('0x25')]=function(_0x2ea27e,_0x55d3cb){if(_0x2ea27e[_0x08f4('0x48')]['id']){delete _0x2ea27e['body']['id'];}return db[_0x08f4('0x2d')][_0x08f4('0x45')]({'where':{'id':_0x2ea27e[_0x08f4('0x49')]['id']}})[_0x08f4('0x26')](handleEntityNotFound(_0x55d3cb,null))[_0x08f4('0x26')](saveUpdates(_0x2ea27e[_0x08f4('0x48')],null))['then'](respondWithResult(_0x55d3cb,null))['catch'](handleError(_0x55d3cb,null));};exports['destroy']=function(_0x5cfa6e,_0x1f15fb){return db['ZohoAccount'][_0x08f4('0x45')]({'where':{'id':_0x5cfa6e[_0x08f4('0x49')]['id']}})[_0x08f4('0x26')](handleEntityNotFound(_0x1f15fb,null))[_0x08f4('0x26')](removeEntity(_0x1f15fb,null))['catch'](handleError(_0x1f15fb,null));};exports['getConfigurations']=function(_0x342ee1,_0x3d0f06,_0x5a34b2){var _0x35d6a8={};var _0x35af72={};var _0x14a975;var _0x2d7b66;return db[_0x08f4('0x2d')][_0x08f4('0x4a')]({'where':{'id':_0x342ee1[_0x08f4('0x49')]['id']}})[_0x08f4('0x26')](handleEntityNotFound(_0x3d0f06,null))[_0x08f4('0x26')](function(_0x4c2ae1){if(_0x4c2ae1){_0x14a975=_0x4c2ae1;_0x35af72[_0x08f4('0x37')]=_[_0x08f4('0x34')](db['ZohoConfiguration'][_0x08f4('0x2e')]);_0x35af72[_0x08f4('0x33')]=_[_0x08f4('0x34')](_0x342ee1[_0x08f4('0x33')]);_0x35af72[_0x08f4('0x35')]=_[_0x08f4('0x36')](_0x35af72[_0x08f4('0x37')],_0x35af72[_0x08f4('0x33')]);_0x35d6a8[_0x08f4('0x38')]=_[_0x08f4('0x36')](_0x35af72[_0x08f4('0x37')],qs[_0x08f4('0x39')](_0x342ee1[_0x08f4('0x33')][_0x08f4('0x39')]));_0x35d6a8[_0x08f4('0x38')]=_0x35d6a8[_0x08f4('0x38')][_0x08f4('0x4b')]?_0x35d6a8['attributes']:_0x35af72[_0x08f4('0x37')];_0x35d6a8[_0x08f4('0x3b')]=qs[_0x08f4('0x3c')](_0x342ee1[_0x08f4('0x33')][_0x08f4('0x3c')]);_0x35d6a8[_0x08f4('0x3d')]=qs['filters'](_[_0x08f4('0x3e')](_0x342ee1['query'],_0x35af72[_0x08f4('0x35')]));if(_0x342ee1[_0x08f4('0x33')][_0x08f4('0x4c')]){_0x35d6a8[_0x08f4('0x3d')]=_['merge'](_0x35d6a8[_0x08f4('0x3d')],{'$or':_[_0x08f4('0x32')](_0x35d6a8[_0x08f4('0x38')],function(_0x57a265){var _0x470108={};_0x470108[_0x57a265]={'$like':'%'+_0x342ee1['query']['filter']+'%'};return _0x470108;})});}_0x35d6a8=_[_0x08f4('0x3f')]({},_0x35d6a8,_0x342ee1['options']);return _0x14a975['getConfigurations'](_0x35d6a8);}})[_0x08f4('0x26')](function(_0x69441){if(_0x69441){_0x2d7b66=_0x69441[_0x08f4('0x4b')];if(!_0x342ee1[_0x08f4('0x33')][_0x08f4('0x3a')](_0x08f4('0x4d'))){_0x35d6a8[_0x08f4('0x1e')]=qs[_0x08f4('0x1e')](_0x342ee1[_0x08f4('0x33')][_0x08f4('0x1e')]);_0x35d6a8[_0x08f4('0x20')]=qs['offset'](_0x342ee1[_0x08f4('0x33')]['offset']);}return _0x14a975[_0x08f4('0x4e')](_0x35d6a8);}})[_0x08f4('0x26')](function(_0x306c54){if(_0x306c54){return _0x306c54?{'count':_0x2d7b66,'rows':_0x306c54}:null;}})[_0x08f4('0x26')](respondWithResult(_0x3d0f06,null))['catch'](handleError(_0x3d0f06,null));};exports['addConfiguration']=function(_0x295941,_0x5c84df,_0x1466ef){if(_0x295941[_0x08f4('0x48')]['id']){delete _0x295941['body']['id'];}return db['ZohoAccount'][_0x08f4('0x4a')]({'where':{'id':_0x295941[_0x08f4('0x49')]['id']}})[_0x08f4('0x26')](handleEntityNotFound(_0x5c84df,null))[_0x08f4('0x26')](function(_0x21251e){if(_0x21251e){_0x295941[_0x08f4('0x48')][_0x08f4('0x4f')]=_0x21251e['id'];_0x295941[_0x08f4('0x48')][_0x08f4('0x50')]=integrations[_0x08f4('0x51')](_0x295941['body']['channel'],_0x295941['body']['type']);_0x295941[_0x08f4('0x48')][_0x08f4('0x52')]=integrations['getDescriptions'](_0x295941[_0x08f4('0x48')]['channel'],_0x295941['body']['type']);return db[_0x08f4('0x53')][_0x08f4('0x47')](_0x295941[_0x08f4('0x48')],{'include':[{'model':db['ZohoField'],'as':_0x08f4('0x50')},{'model':db['ZohoField'],'as':_0x08f4('0x52')}]});}return null;})[_0x08f4('0x26')](respondWithResult(_0x5c84df,null))['catch'](handleError(_0x5c84df,null));};function getAccessToken(_0x41f246){return new Promise(function(_0x29b909,_0x261692){var _0x4c9870;switch(_0x41f246['zone']){case'US':_0x4c9870=_0x08f4('0x54');break;case'AU':_0x4c9870=_0x08f4('0x55');break;case'EU':_0x4c9870=_0x08f4('0x56');break;case'IN':_0x4c9870='https://accounts.zoho.in';break;case'CN':_0x4c9870='https://accounts.zoho.com.cn';break;default:_0x4c9870=_0x08f4('0x56');break;}var _0x3e1228={'method':'POST','uri':_0x4c9870+_0x08f4('0x57'),'qs':{'refresh_token':_0x41f246['refreshToken'],'client_id':_0x41f246[_0x08f4('0x58')],'client_secret':_0x41f246[_0x08f4('0x59')],'grant_type':_0x08f4('0x5a')},'json':!![]};return rp(_0x3e1228)[_0x08f4('0x26')](function(_0x4538ae){if(_0x4538ae[_0x08f4('0x5b')]){_0x29b909(_0x4538ae[_0x08f4('0x5b')]);}else{_0x261692(_0x08f4('0x5c'));}})[_0x08f4('0x46')](function(_0x15a241){_0x261692(_0x15a241);});});}exports[_0x08f4('0x5d')]=function(_0x14eaa4,_0x3426d1,_0x44cba8){var _0x2cf9f5,_0x15d688,_0x492529,_0x3ead7e,_0x4fb99b;return db['ZohoAccount'][_0x08f4('0x4a')]({'where':{'id':_0x14eaa4[_0x08f4('0x49')]['id']},'attributes':['id','host','zone',_0x08f4('0x58'),_0x08f4('0x59'),_0x08f4('0x5e'),_0x08f4('0x5f'),_0x08f4('0x60')]})['then'](handleEntityNotFound(_0x3426d1,null))[_0x08f4('0x26')](function(_0x3abed4){_0x4fb99b=_0x3abed4;_0x2cf9f5=_0x4fb99b['host'];_0x15d688=_0x2cf9f5==='zoho.eu'?'eu':_0x08f4('0x61');_0x492529=_0x4fb99b[_0x08f4('0x5e')];var _0x37a9cd=_0x492529[_0x08f4('0x62')](-0x1);if(_0x37a9cd==='/'||_0x37a9cd==='\x5c'||_0x37a9cd===':'){_0x492529=_0x492529['substring'](0x0,_0x492529[_0x08f4('0x63')](_0x37a9cd));}if(!_0x4fb99b[_0x08f4('0x60')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x4fb99b);})[_0x08f4('0x26')](function(_0x4aafe9){if(_0x4aafe9){return rp({'method':_0x08f4('0x64'),'uri':util[_0x08f4('0x65')](_0x08f4('0x66'),_0x15d688),'qs':{'module':'Calls'},'headers':{'Authorization':_0x08f4('0x67')+_0x4aafe9},'json':!![]});}})[_0x08f4('0x26')](function(_0x39a568){if(_0x39a568){if(_0x39a568[_0x08f4('0x68')]&&_0x39a568[_0x08f4('0x68')]['error']){throw new Error(_0x39a568['response'][_0x08f4('0x28')][_0x08f4('0x69')]);}var _0x5dba76=[];var _0x3f23fd=[];var _0x18b24b=[_0x08f4('0x6a'),_0x08f4('0x6b'),_0x08f4('0x6c'),'WhoId',_0x08f4('0x6d'),_0x08f4('0x6e'),_0x08f4('0x6f'),_0x08f4('0x70')];_0x3f23fd=_[_0x08f4('0x71')](_0x39a568[_0x08f4('0x39')],function(_0xb42b84){return _0x18b24b[_0x08f4('0x72')](_0xb42b84[_0x08f4('0x73')]);});for(var _0x437791=0x0;_0x437791<_0x3f23fd[_0x08f4('0x4b')];_0x437791++){if(_0x3f23fd[_0x437791][_0x08f4('0x74')]===![]){_0x5dba76['push']({'id':_0x3f23fd[_0x437791]['id'],'name':_0x3f23fd[_0x437791]['display_label'],'custom':_0x3f23fd[_0x437791][_0x08f4('0x75')],'options':_0x3f23fd[_0x437791][_0x08f4('0x76')]===_0x08f4('0x77')&&_0x3f23fd[_0x437791]['pick_list_values'][_0x08f4('0x4b')]>-0x1?_[_0x08f4('0x32')](_0x3f23fd[_0x437791]['pick_list_values'],function(_0x1bab99){return{'name':_0x1bab99,'value':_0x1bab99};}):[]});}}return{'count':_0x5dba76['length'],'rows':_0x5dba76};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3426d1,null))[_0x08f4('0x46')](function(_0x3c9de8){var _0x1455e3=_0x14eaa4[_0x08f4('0x33')][_0x08f4('0x78')]?0x1f4:_0x3c9de8[_0x08f4('0x79')]||0x1f4;logger[_0x08f4('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x08f4('0x5d'),_0x1455e3,JSON[_0x08f4('0x7a')](_0x3c9de8));delete _0x3c9de8[_0x08f4('0x2a')];if(_0x1455e3===0x191){_0x1455e3=0x190;}_0x3426d1[_0x08f4('0x1b')](_0x1455e3)['send'](_0x14eaa4[_0x08f4('0x33')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x3c9de8[_0x08f4('0x79')]}:_0x3c9de8);});};