a2d39a454b2bcda98fe46b6ac9fe858c2d3114e4
[motion2.git] / server / api / intDeskAccount / intDeskAccount.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 _0x3599=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','stack','name','send','index','DeskAccount','rawAttributes','type','key','map','query','keys','model','attributes','intersection','fields','length','nolimit','order','sort','where','filters','merge','filter','includeAll','include','findAll','rows','catch','params','options','find','create','body','getConfigurations','findOne','DeskConfiguration','pick','hasOwnProperty','addConfiguration','Subjects','getSubjects','Descriptions','DeskField','priority','authType','username','password','consumerKey','consumerSecret','slice','substring','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','base64','concat','_embedded','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox'];(function(_0x454b4e,_0x37d9ad){var _0x553a78=function(_0x3c400e){while(--_0x3c400e){_0x454b4e['push'](_0x454b4e['shift']());}};_0x553a78(++_0x37d9ad);}(_0x3599,0x1af));var _0x9359=function(_0x400809,_0x26852e){_0x400809=_0x400809-0x0;var _0x2eb0d5=_0x3599[_0x400809];return _0x2eb0d5;};'use strict';var emlformat=require(_0x9359('0x0'));var rimraf=require(_0x9359('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9359('0x2'));var rp=require(_0x9359('0x3'));var moment=require(_0x9359('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9359('0x5'));var util=require(_0x9359('0x6'));var path=require(_0x9359('0x7'));var sox=require(_0x9359('0x8'));var csv=require('to-csv');var ejs=require(_0x9359('0x9'));var fs=require('fs');var fs_extra=require(_0x9359('0xa'));var _=require(_0x9359('0xb'));var squel=require(_0x9359('0xc'));var crypto=require(_0x9359('0xd'));var jsforce=require(_0x9359('0xe'));var deskjs=require(_0x9359('0xf'));var toCsv=require(_0x9359('0x10'));var querystring=require(_0x9359('0x11'));var Papa=require(_0x9359('0x12'));var Redis=require(_0x9359('0x13'));var authService=require(_0x9359('0x14'));var qs=require(_0x9359('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9359('0x16'));var utils=require(_0x9359('0x17'));var config=require(_0x9359('0x18'));var licenseUtil=require(_0x9359('0x19'));var db=require(_0x9359('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4b0f29,_0x33f6b5){_0x33f6b5=_0x33f6b5||0xcc;return function(_0x935431){if(_0x935431){return _0x4b0f29[_0x9359('0x1b')](_0x33f6b5);}return _0x4b0f29[_0x9359('0x1c')](_0x33f6b5)[_0x9359('0x1d')]();};}function respondWithResult(_0x1cb82a,_0x6dfc1e){_0x6dfc1e=_0x6dfc1e||0xc8;return function(_0x2b04e2){if(_0x2b04e2){return _0x1cb82a[_0x9359('0x1c')](_0x6dfc1e)[_0x9359('0x1e')](_0x2b04e2);}};}function respondWithFilteredResult(_0x47b412,_0x1f00fb){return function(_0xbe4424){if(_0xbe4424){var _0x5a7077=typeof _0x1f00fb[_0x9359('0x1f')]===_0x9359('0x20')&&typeof _0x1f00fb[_0x9359('0x21')]===_0x9359('0x20');var _0x215116=_0xbe4424[_0x9359('0x22')];var _0x158014=_0x5a7077?0x0:_0x1f00fb[_0x9359('0x1f')];var _0x12501d=_0x5a7077?_0xbe4424[_0x9359('0x22')]:_0x1f00fb[_0x9359('0x1f')]+_0x1f00fb['limit'];var _0x1c1fec;if(_0x12501d>=_0x215116){_0x12501d=_0x215116;_0x1c1fec=0xc8;}else{_0x1c1fec=0xce;}_0x47b412[_0x9359('0x1c')](_0x1c1fec);return _0x47b412[_0x9359('0x23')](_0x9359('0x24'),_0x158014+'-'+_0x12501d+'/'+_0x215116)[_0x9359('0x1e')](_0xbe4424);}return null;};}function patchUpdates(_0x23e29c){return function(_0x105fb1){try{jsonpatch['apply'](_0x105fb1,_0x23e29c,!![]);}catch(_0x82f859){return BPromise['reject'](_0x82f859);}return _0x105fb1['save']();};}function saveUpdates(_0x2e908c,_0x49791d){return function(_0x558b4b){if(_0x558b4b){return _0x558b4b[_0x9359('0x25')](_0x2e908c)['then'](function(_0x43b93d){return _0x43b93d;});}return null;};}function removeEntity(_0x4ebf15,_0x181a0b){return function(_0x479d8a){if(_0x479d8a){return _0x479d8a[_0x9359('0x26')]()[_0x9359('0x27')](function(){_0x4ebf15[_0x9359('0x1c')](0xcc)[_0x9359('0x1d')]();});}};}function handleEntityNotFound(_0x5d96d4,_0x7edca8){return function(_0x473eeb){if(!_0x473eeb){_0x5d96d4[_0x9359('0x1b')](0x194);}return _0x473eeb;};}function handleError(_0x10893e,_0x374e64){_0x374e64=_0x374e64||0x1f4;return function(_0x5eb990){logger['error'](_0x5eb990[_0x9359('0x28')]);if(_0x5eb990[_0x9359('0x29')]){delete _0x5eb990[_0x9359('0x29')];}_0x10893e[_0x9359('0x1c')](_0x374e64)[_0x9359('0x2a')](_0x5eb990);};}exports[_0x9359('0x2b')]=function(_0x957784,_0x49dfa6){var _0x5688e7={},_0x9d4b74={},_0x2ff807={'count':0x0,'rows':[]};var _0x4a7284=_['map'](db[_0x9359('0x2c')][_0x9359('0x2d')],function(_0x481da1){return{'name':_0x481da1['fieldName'],'type':_0x481da1[_0x9359('0x2e')][_0x9359('0x2f')]};});_0x9d4b74['model']=_[_0x9359('0x30')](_0x4a7284,'name');_0x9d4b74[_0x9359('0x31')]=_[_0x9359('0x32')](_0x957784[_0x9359('0x31')]);_0x9d4b74['filters']=_['intersection'](_0x9d4b74[_0x9359('0x33')],_0x9d4b74[_0x9359('0x31')]);_0x5688e7[_0x9359('0x34')]=_[_0x9359('0x35')](_0x9d4b74['model'],qs['fields'](_0x957784[_0x9359('0x31')][_0x9359('0x36')]));_0x5688e7['attributes']=_0x5688e7[_0x9359('0x34')][_0x9359('0x37')]?_0x5688e7[_0x9359('0x34')]:_0x9d4b74['model'];if(!_0x957784[_0x9359('0x31')]['hasOwnProperty'](_0x9359('0x38'))){_0x5688e7[_0x9359('0x21')]=qs[_0x9359('0x21')](_0x957784[_0x9359('0x31')][_0x9359('0x21')]);_0x5688e7[_0x9359('0x1f')]=qs['offset'](_0x957784[_0x9359('0x31')]['offset']);}_0x5688e7[_0x9359('0x39')]=qs['sort'](_0x957784[_0x9359('0x31')][_0x9359('0x3a')]);_0x5688e7[_0x9359('0x3b')]=qs[_0x9359('0x3c')](_['pick'](_0x957784[_0x9359('0x31')],_0x9d4b74['filters']),_0x4a7284);if(_0x957784[_0x9359('0x31')]['filter']){_0x5688e7[_0x9359('0x3b')]=_[_0x9359('0x3d')](_0x5688e7[_0x9359('0x3b')],{'$or':_[_0x9359('0x30')](_0x4a7284,function(_0x290f63){if(_0x290f63[_0x9359('0x2e')]!=='VIRTUAL'){var _0x4cf871={};_0x4cf871[_0x290f63['name']]={'$like':'%'+_0x957784[_0x9359('0x31')][_0x9359('0x3e')]+'%'};return _0x4cf871;}})});}_0x5688e7=_['merge']({},_0x5688e7,_0x957784['options']);var _0x1d4d04={'where':_0x5688e7[_0x9359('0x3b')]};return db[_0x9359('0x2c')][_0x9359('0x22')](_0x1d4d04)[_0x9359('0x27')](function(_0x16f36d){_0x2ff807[_0x9359('0x22')]=_0x16f36d;if(_0x957784['query'][_0x9359('0x3f')]){_0x5688e7[_0x9359('0x40')]=[{'all':!![]}];}return db['DeskAccount'][_0x9359('0x41')](_0x5688e7);})[_0x9359('0x27')](function(_0x3e3565){_0x2ff807[_0x9359('0x42')]=_0x3e3565;return _0x2ff807;})[_0x9359('0x27')](respondWithFilteredResult(_0x49dfa6,_0x5688e7))[_0x9359('0x43')](handleError(_0x49dfa6,null));};exports['show']=function(_0x3c7159,_0x32c2cf){var _0x249953={'raw':![],'where':{'id':_0x3c7159[_0x9359('0x44')]['id']}},_0x449018={};_0x449018[_0x9359('0x33')]=_['keys'](db['DeskAccount'][_0x9359('0x2d')]);_0x449018[_0x9359('0x31')]=_[_0x9359('0x32')](_0x3c7159['query']);_0x449018[_0x9359('0x3c')]=_[_0x9359('0x35')](_0x449018[_0x9359('0x33')],_0x449018[_0x9359('0x31')]);_0x249953[_0x9359('0x34')]=_['intersection'](_0x449018[_0x9359('0x33')],qs[_0x9359('0x36')](_0x3c7159[_0x9359('0x31')][_0x9359('0x36')]));_0x249953[_0x9359('0x34')]=_0x249953['attributes'][_0x9359('0x37')]?_0x249953['attributes']:_0x449018[_0x9359('0x33')];if(_0x3c7159[_0x9359('0x31')][_0x9359('0x3f')]){_0x249953[_0x9359('0x40')]=[{'all':!![]}];}_0x249953=_[_0x9359('0x3d')]({},_0x249953,_0x3c7159[_0x9359('0x45')]);return db['DeskAccount'][_0x9359('0x46')](_0x249953)[_0x9359('0x27')](handleEntityNotFound(_0x32c2cf,null))[_0x9359('0x27')](respondWithResult(_0x32c2cf,null))[_0x9359('0x43')](handleError(_0x32c2cf,null));};exports[_0x9359('0x47')]=function(_0x32da93,_0x378aca){return db['DeskAccount'][_0x9359('0x47')](_0x32da93['body'],{})[_0x9359('0x27')](respondWithResult(_0x378aca,0xc9))[_0x9359('0x43')](handleError(_0x378aca,null));};exports[_0x9359('0x25')]=function(_0x2f5713,_0x3dbdbf){if(_0x2f5713[_0x9359('0x48')]['id']){delete _0x2f5713[_0x9359('0x48')]['id'];}return db[_0x9359('0x2c')][_0x9359('0x46')]({'where':{'id':_0x2f5713[_0x9359('0x44')]['id']}})[_0x9359('0x27')](handleEntityNotFound(_0x3dbdbf,null))['then'](saveUpdates(_0x2f5713[_0x9359('0x48')],null))['then'](respondWithResult(_0x3dbdbf,null))[_0x9359('0x43')](handleError(_0x3dbdbf,null));};exports[_0x9359('0x26')]=function(_0x49971a,_0x6768f7){return db['DeskAccount'][_0x9359('0x46')]({'where':{'id':_0x49971a[_0x9359('0x44')]['id']}})[_0x9359('0x27')](handleEntityNotFound(_0x6768f7,null))[_0x9359('0x27')](removeEntity(_0x6768f7,null))['catch'](handleError(_0x6768f7,null));};exports[_0x9359('0x49')]=function(_0x4edb7b,_0x3af469,_0x4a8260){var _0x3c1713={};var _0x69ce2e={};var _0x5aac92;var _0x39aade;return db['DeskAccount'][_0x9359('0x4a')]({'where':{'id':_0x4edb7b[_0x9359('0x44')]['id']}})['then'](handleEntityNotFound(_0x3af469,null))[_0x9359('0x27')](function(_0x8f17fd){if(_0x8f17fd){_0x5aac92=_0x8f17fd;_0x69ce2e[_0x9359('0x33')]=_[_0x9359('0x32')](db[_0x9359('0x4b')][_0x9359('0x2d')]);_0x69ce2e[_0x9359('0x31')]=_['keys'](_0x4edb7b['query']);_0x69ce2e[_0x9359('0x3c')]=_['intersection'](_0x69ce2e[_0x9359('0x33')],_0x69ce2e[_0x9359('0x31')]);_0x3c1713[_0x9359('0x34')]=_[_0x9359('0x35')](_0x69ce2e[_0x9359('0x33')],qs[_0x9359('0x36')](_0x4edb7b[_0x9359('0x31')][_0x9359('0x36')]));_0x3c1713[_0x9359('0x34')]=_0x3c1713['attributes'][_0x9359('0x37')]?_0x3c1713['attributes']:_0x69ce2e['model'];_0x3c1713[_0x9359('0x39')]=qs['sort'](_0x4edb7b['query'][_0x9359('0x3a')]);_0x3c1713[_0x9359('0x3b')]=qs[_0x9359('0x3c')](_[_0x9359('0x4c')](_0x4edb7b[_0x9359('0x31')],_0x69ce2e[_0x9359('0x3c')]));if(_0x4edb7b[_0x9359('0x31')][_0x9359('0x3e')]){_0x3c1713[_0x9359('0x3b')]=_[_0x9359('0x3d')](_0x3c1713[_0x9359('0x3b')],{'$or':_[_0x9359('0x30')](_0x3c1713[_0x9359('0x34')],function(_0x5037bb){var _0x15a890={};_0x15a890[_0x5037bb]={'$like':'%'+_0x4edb7b[_0x9359('0x31')][_0x9359('0x3e')]+'%'};return _0x15a890;})});}_0x3c1713=_['merge']({},_0x3c1713,_0x4edb7b[_0x9359('0x45')]);return _0x5aac92['getConfigurations'](_0x3c1713);}})[_0x9359('0x27')](function(_0x431198){if(_0x431198){_0x39aade=_0x431198[_0x9359('0x37')];if(!_0x4edb7b[_0x9359('0x31')][_0x9359('0x4d')]('nolimit')){_0x3c1713[_0x9359('0x21')]=qs[_0x9359('0x21')](_0x4edb7b['query'][_0x9359('0x21')]);_0x3c1713['offset']=qs[_0x9359('0x1f')](_0x4edb7b[_0x9359('0x31')]['offset']);}return _0x5aac92['getConfigurations'](_0x3c1713);}})[_0x9359('0x27')](function(_0xb759d6){if(_0xb759d6){return _0xb759d6?{'count':_0x39aade,'rows':_0xb759d6}:null;}})['then'](respondWithResult(_0x3af469,null))['catch'](handleError(_0x3af469,null));};exports[_0x9359('0x4e')]=function(_0x17c412,_0x52025b,_0xe1a3c1){if(_0x17c412[_0x9359('0x48')]['id']){delete _0x17c412[_0x9359('0x48')]['id'];}return db[_0x9359('0x2c')]['findOne']({'where':{'id':_0x17c412[_0x9359('0x44')]['id']}})[_0x9359('0x27')](handleEntityNotFound(_0x52025b,null))[_0x9359('0x27')](function(_0x2ec440){if(_0x2ec440){_0x17c412[_0x9359('0x48')]['AccountId']=_0x2ec440['id'];_0x17c412[_0x9359('0x48')][_0x9359('0x4f')]=integrations[_0x9359('0x50')](_0x17c412['body']['channel'],_0x17c412[_0x9359('0x48')][_0x9359('0x2e')]);_0x17c412[_0x9359('0x48')][_0x9359('0x51')]=integrations['getDescriptions'](_0x17c412[_0x9359('0x48')]['channel'],_0x17c412[_0x9359('0x48')][_0x9359('0x2e')]);return db['DeskConfiguration'][_0x9359('0x47')](_0x17c412[_0x9359('0x48')],{'include':[{'model':db[_0x9359('0x52')],'as':'Subjects'},{'model':db[_0x9359('0x52')],'as':_0x9359('0x51')}]});}return null;})[_0x9359('0x27')](respondWithResult(_0x52025b,null))[_0x9359('0x43')](handleError(_0x52025b,null));};exports['getFields']=function(_0xb9b3f3,_0xb70c6a,_0x8d6fc2){var _0x14dbc6=[{'name':_0x9359('0x53'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x5a897e='';return db[_0x9359('0x2c')][_0x9359('0x4a')]({'where':{'id':_0xb9b3f3[_0x9359('0x44')]['id']},'attributes':['id','remoteUri',_0x9359('0x54'),_0x9359('0x55'),_0x9359('0x56'),_0x9359('0x57'),_0x9359('0x58'),'token','tokenSecret']})[_0x9359('0x27')](handleEntityNotFound(_0xb70c6a,null))[_0x9359('0x27')](function(_0x53473c){if(_0x53473c){_0x5a897e=_0x53473c['remoteUri'];var _0xa4f658=_0x5a897e[_0x9359('0x59')](-0x1);if(_0xa4f658==='/'){_0x5a897e=_0x5a897e[_0x9359('0x5a')](0x0,_0x5a897e['lastIndexOf'](_0xa4f658));}var _0x49a0a8={'method':'GET','uri':util[_0x9359('0x5b')](_0x9359('0x5c'),_0x5a897e),'headers':{'Content-Type':_0x9359('0x5d'),'Accept':_0x9359('0x5d')},'json':!![]};if(_0x53473c[_0x9359('0x54')]===_0x9359('0x5e')){_0x49a0a8[_0x9359('0x5f')][_0x9359('0x60')]=util[_0x9359('0x5b')](_0x9359('0x61'),new Buffer(util[_0x9359('0x5b')](_0x9359('0x62'),_0x53473c[_0x9359('0x55')],_0x53473c[_0x9359('0x56')]))['toString'](_0x9359('0x63')));}return rp(_0x49a0a8)[_0x9359('0x27')](function(_0x135fcb){return _0x14dbc6[_0x9359('0x64')](_[_0x9359('0x30')](_0x135fcb[_0x9359('0x65')]['entries'],function(_0x5aea7d){return{'id':_0x5aea7d['name'],'name':_0x5aea7d[_0x9359('0x29')],'type':_0x5aea7d[_0x9359('0x2e')],'active':_0x5aea7d[_0x9359('0x66')],'label':_0x5aea7d[_0x9359('0x67')],'custom':!![]};}));});}})['then'](function(_0xbd983d){return{'count':_0xbd983d['length'],'rows':_0xbd983d};})[_0x9359('0x27')](respondWithResult(_0xb70c6a,null))[_0x9359('0x43')](function(_0x479932){var _0x19ca10=_0xb9b3f3[_0x9359('0x31')][_0x9359('0x68')]?0x1f4:_0x479932[_0x9359('0x69')]||0x1f4;logger['error'](_0x9359('0x6a'),_0x9359('0x6b'),_0x19ca10,JSON[_0x9359('0x6c')](_0x479932));delete _0x479932[_0x9359('0x29')];if(_0x19ca10===0x191){_0x19ca10=0x190;}_0xb70c6a['status'](_0x19ca10)[_0x9359('0x2a')](_0xb9b3f3['query'][_0x9359('0x68')]?{'message':_0x9359('0x6d'),'statusCode':_0x479932[_0x9359('0x69')]}:_0x479932);});};