78353029ffebff08470ae56b4e25e7ac662af2b9
[motion2.git] / server / api / intFreshdeskAccount / intFreshdeskAccount.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 _0x5998=['to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','client','http','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','sendStatus','end','status','json','offset','limit','set','Content-Range','update','destroy','stack','name','send','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','FreshdeskAccount','count','includeAll','rows','show','params','length','include','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','order','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','%s:X','toString','base64','requester','subject','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','map','label','choices','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox'];(function(_0x568e72,_0x494e27){var _0x4576c0=function(_0x216307){while(--_0x216307){_0x568e72['push'](_0x568e72['shift']());}};_0x4576c0(++_0x494e27);}(_0x5998,0xf2));var _0x8599=function(_0x10d308,_0x98cd27){_0x10d308=_0x10d308-0x0;var _0x370b8c=_0x5998[_0x10d308];return _0x370b8c;};'use strict';var pdf=require(_0x8599('0x0'));var emlformat=require(_0x8599('0x1'));var rimraf=require(_0x8599('0x2'));var zipdir=require(_0x8599('0x3'));var jsonpatch=require(_0x8599('0x4'));var rp=require(_0x8599('0x5'));var moment=require(_0x8599('0x6'));var BPromise=require(_0x8599('0x7'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8599('0x8'));var sox=require(_0x8599('0x9'));var csv=require(_0x8599('0xa'));var ejs=require(_0x8599('0xb'));var fs=require('fs');var _=require(_0x8599('0xc'));var squel=require('squel');var crypto=require(_0x8599('0xd'));var jsforce=require(_0x8599('0xe'));var deskjs=require(_0x8599('0xf'));var toCsv=require(_0x8599('0xa'));var querystring=require('querystring');var Papa=require(_0x8599('0x10'));var Redis=require(_0x8599('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8599('0x12'));var as=require(_0x8599('0x13'));var hardwareService=require(_0x8599('0x14'));var logger=require('../../config/logger')(_0x8599('0x15'));var utils=require(_0x8599('0x16'));var config=require(_0x8599('0x17'));var db=require(_0x8599('0x18'))['db'];var integrations=require(_0x8599('0x19'));var jayson=require('jayson/promise');var client=jayson[_0x8599('0x1a')][_0x8599('0x1b')]({'port':0x232a});function checkPasswordPattern(_0x523291,_0x4d0c6e,_0x41e97b){if(_0x41e97b){var _0x577220=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x577220[_0x8599('0x1c')](_0x4d0c6e)){return _0x523291;}else{throw new db[(_0x8599('0x1d'))][(_0x8599('0x1e'))](_0x8599('0x1f'));}}else{return _0x523291;}}function respondWithRpcPromise(_0x3f020c,_0x5c819c,_0x1249c2,_0x1859b8){return new BPromise(function(_0x398aec,_0x410f06){var _0x4623e4=_0x1859b8||client;return _0x4623e4[_0x8599('0x20')](_0x3f020c,_0x1249c2)[_0x8599('0x21')](function(_0x41958d){logger[_0x8599('0x22')](_0x8599('0x23'),_0x5c819c,_0x8599('0x24'));logger[_0x8599('0x25')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x5c819c,'request\x20sent',JSON[_0x8599('0x26')](_0x41958d));if(_0x41958d['error']){if(_0x41958d[_0x8599('0x27')]['code']===0x1f4){logger[_0x8599('0x27')](_0x8599('0x23'),_0x5c819c,_0x41958d[_0x8599('0x27')][_0x8599('0x28')]);return _0x410f06(_0x41958d[_0x8599('0x27')]['message']);}logger[_0x8599('0x27')]('FreshdeskAccount,\x20%s,\x20%s',_0x5c819c,_0x41958d[_0x8599('0x27')][_0x8599('0x28')]);return _0x398aec(_0x41958d[_0x8599('0x27')][_0x8599('0x28')]);}else{logger['info'](_0x8599('0x23'),_0x5c819c,_0x8599('0x24'));_0x398aec(_0x41958d[_0x8599('0x29')][_0x8599('0x28')]);}})[_0x8599('0x2a')](function(_0x3dae1a){logger[_0x8599('0x27')](_0x8599('0x23'),_0x5c819c,_0x3dae1a);_0x410f06(_0x3dae1a);});});}function respondWithStatusCode(_0x290f38,_0x2dd63c){_0x2dd63c=_0x2dd63c||0xcc;return function(_0x211932){if(_0x211932){return _0x290f38[_0x8599('0x2b')](_0x2dd63c);}return _0x290f38['status'](_0x2dd63c)[_0x8599('0x2c')]();};}function respondWithResult(_0xd8502e,_0x59f2d7){_0x59f2d7=_0x59f2d7||0xc8;return function(_0x3a5023){if(_0x3a5023){return _0xd8502e[_0x8599('0x2d')](_0x59f2d7)[_0x8599('0x2e')](_0x3a5023);}};}function respondWithFilteredResult(_0x1fa8c5,_0x32b102){return function(_0x198b53){if(_0x198b53){var _0x3b26a5=_0x198b53['count'],_0x162a64=_0x32b102['offset'],_0x44f72c=_0x32b102[_0x8599('0x2f')]+_0x32b102[_0x8599('0x30')],_0x4d3ad4;if(_0x44f72c>=_0x3b26a5){_0x44f72c=_0x3b26a5;_0x4d3ad4=0xc8;}else{_0x4d3ad4=0xce;}_0x1fa8c5[_0x8599('0x2d')](_0x4d3ad4);return _0x1fa8c5[_0x8599('0x31')](_0x8599('0x32'),_0x162a64+'-'+_0x44f72c+'/'+_0x3b26a5)[_0x8599('0x2e')](_0x198b53);}return null;};}function patchUpdates(_0x1b2f05){return function(_0x42e979){try{jsonpatch['apply'](_0x42e979,_0x1b2f05,!![]);}catch(_0x4fc7e0){return BPromise['reject'](_0x4fc7e0);}return _0x42e979['save']();};}function saveUpdates(_0x1116ad,_0x4ce052){return function(_0x362ff5){if(_0x362ff5){return _0x362ff5[_0x8599('0x33')](_0x1116ad)[_0x8599('0x21')](function(_0x19c480){return _0x19c480;});}return null;};}function removeEntity(_0x5d0826,_0x34b693){return function(_0x347a62){if(_0x347a62){return _0x347a62[_0x8599('0x34')]()[_0x8599('0x21')](function(){_0x5d0826[_0x8599('0x2d')](0xcc)[_0x8599('0x2c')]();});}};}function handleEntityNotFound(_0x3b75b0,_0x3227cb){return function(_0x391743){if(!_0x391743){_0x3b75b0[_0x8599('0x2b')](0x194);}return _0x391743;};}function handleError(_0xe1fec4,_0x5a0ff2){_0x5a0ff2=_0x5a0ff2||0x1f4;return function(_0x645344){logger[_0x8599('0x27')](_0x645344[_0x8599('0x35')]);if(_0x645344[_0x8599('0x36')]){delete _0x645344[_0x8599('0x36')];}_0xe1fec4[_0x8599('0x2d')](_0x5a0ff2)[_0x8599('0x37')](_0x645344);};}exports['index']=function(_0x5caed3,_0x763e26){var _0x13adb2={},_0x1551d3={},_0x5d783d={'count':0x0,'rows':[]};var _0x275dac=_['map'](db['FreshdeskAccount'][_0x8599('0x38')],function(_0x33a14a){return{'name':_0x33a14a[_0x8599('0x39')],'type':_0x33a14a[_0x8599('0x3a')]['key']};});_0x1551d3['model']=_['map'](_0x275dac,_0x8599('0x36'));_0x1551d3[_0x8599('0x3b')]=_[_0x8599('0x3c')](_0x5caed3[_0x8599('0x3b')]);_0x1551d3[_0x8599('0x3d')]=_[_0x8599('0x3e')](_0x1551d3[_0x8599('0x3f')],_0x1551d3[_0x8599('0x3b')]);_0x13adb2[_0x8599('0x40')]=_['intersection'](_0x1551d3[_0x8599('0x3f')],qs[_0x8599('0x41')](_0x5caed3[_0x8599('0x3b')][_0x8599('0x41')]));_0x13adb2['attributes']=_0x13adb2[_0x8599('0x40')]['length']?_0x13adb2[_0x8599('0x40')]:_0x1551d3[_0x8599('0x3f')];if(!_0x5caed3[_0x8599('0x3b')]['hasOwnProperty'](_0x8599('0x42'))){_0x13adb2[_0x8599('0x30')]=qs[_0x8599('0x30')](_0x5caed3[_0x8599('0x3b')][_0x8599('0x30')]);_0x13adb2[_0x8599('0x2f')]=qs[_0x8599('0x2f')](_0x5caed3[_0x8599('0x3b')]['offset']);}_0x13adb2['order']=qs[_0x8599('0x43')](_0x5caed3[_0x8599('0x3b')][_0x8599('0x43')]);_0x13adb2[_0x8599('0x44')]=qs[_0x8599('0x3d')](_[_0x8599('0x45')](_0x5caed3['query'],_0x1551d3[_0x8599('0x3d')]));if(_0x5caed3[_0x8599('0x3b')][_0x8599('0x46')]){_0x13adb2[_0x8599('0x44')]=_[_0x8599('0x47')](_0x13adb2[_0x8599('0x44')],{'$or':_['map'](_0x275dac,function(_0x119a76){if(_0x119a76[_0x8599('0x3a')]!==_0x8599('0x48')){var _0x35259b={};_0x35259b[_0x119a76['name']]={'$like':'%'+_0x5caed3[_0x8599('0x3b')]['filter']+'%'};return _0x35259b;}})});}_0x13adb2=_[_0x8599('0x47')]({},_0x13adb2,_0x5caed3[_0x8599('0x49')]);var _0xcae185={'where':_0x13adb2[_0x8599('0x44')]};return db[_0x8599('0x4a')]['count'](_0xcae185)[_0x8599('0x21')](function(_0x47a49b){_0x5d783d[_0x8599('0x4b')]=_0x47a49b;if(_0x5caed3['query'][_0x8599('0x4c')]){_0x13adb2['include']=[{'all':!![]}];}return db[_0x8599('0x4a')]['findAll'](_0x13adb2);})['then'](function(_0x1500cb){_0x5d783d[_0x8599('0x4d')]=_0x1500cb;return _0x5d783d;})[_0x8599('0x21')](respondWithFilteredResult(_0x763e26,_0x13adb2))[_0x8599('0x2a')](handleError(_0x763e26,null));};exports[_0x8599('0x4e')]=function(_0x4f9d86,_0x4e93b8){var _0x4de863={'raw':![],'where':{'id':_0x4f9d86[_0x8599('0x4f')]['id']}},_0x16cf5b={};_0x16cf5b['model']=_['keys'](db[_0x8599('0x4a')][_0x8599('0x38')]);_0x16cf5b[_0x8599('0x3b')]=_[_0x8599('0x3c')](_0x4f9d86[_0x8599('0x3b')]);_0x16cf5b[_0x8599('0x3d')]=_[_0x8599('0x3e')](_0x16cf5b[_0x8599('0x3f')],_0x16cf5b[_0x8599('0x3b')]);_0x4de863[_0x8599('0x40')]=_[_0x8599('0x3e')](_0x16cf5b[_0x8599('0x3f')],qs['fields'](_0x4f9d86[_0x8599('0x3b')][_0x8599('0x41')]));_0x4de863['attributes']=_0x4de863[_0x8599('0x40')][_0x8599('0x50')]?_0x4de863[_0x8599('0x40')]:_0x16cf5b['model'];if(_0x4f9d86[_0x8599('0x3b')][_0x8599('0x4c')]){_0x4de863[_0x8599('0x51')]=[{'all':!![]}];}_0x4de863=_['merge']({},_0x4de863,_0x4f9d86[_0x8599('0x49')]);return db[_0x8599('0x4a')][_0x8599('0x52')](_0x4de863)[_0x8599('0x21')](handleEntityNotFound(_0x4e93b8,null))[_0x8599('0x21')](respondWithResult(_0x4e93b8,null))['catch'](handleError(_0x4e93b8,null));};exports[_0x8599('0x53')]=function(_0x1171d8,_0x2aa943){return db[_0x8599('0x4a')][_0x8599('0x53')](_0x1171d8[_0x8599('0x54')],{})[_0x8599('0x21')](respondWithResult(_0x2aa943,0xc9))[_0x8599('0x2a')](handleError(_0x2aa943,null));};exports['update']=function(_0x55227e,_0x4d0d21){if(_0x55227e['body']['id']){delete _0x55227e[_0x8599('0x54')]['id'];}return db[_0x8599('0x4a')][_0x8599('0x52')]({'where':{'id':_0x55227e['params']['id']}})[_0x8599('0x21')](handleEntityNotFound(_0x4d0d21,null))[_0x8599('0x21')](saveUpdates(_0x55227e['body'],null))[_0x8599('0x21')](respondWithResult(_0x4d0d21,null))[_0x8599('0x2a')](handleError(_0x4d0d21,null));};exports[_0x8599('0x34')]=function(_0x264193,_0x37961b){return db[_0x8599('0x4a')]['find']({'where':{'id':_0x264193[_0x8599('0x4f')]['id']}})['then'](handleEntityNotFound(_0x37961b,null))['then'](removeEntity(_0x37961b,null))[_0x8599('0x2a')](handleError(_0x37961b,null));};exports[_0x8599('0x55')]=function(_0xa279f0,_0x3cd733,_0x110a03){var _0x2504fc={};var _0x4c23b1={};var _0x1857fb;var _0x4c9514;return db[_0x8599('0x4a')][_0x8599('0x56')]({'where':{'id':_0xa279f0['params']['id']}})[_0x8599('0x21')](handleEntityNotFound(_0x3cd733,null))[_0x8599('0x21')](function(_0x20fe7c){if(_0x20fe7c){_0x1857fb=_0x20fe7c;_0x4c23b1['model']=_['keys'](db[_0x8599('0x57')][_0x8599('0x38')]);_0x4c23b1[_0x8599('0x3b')]=_[_0x8599('0x3c')](_0xa279f0[_0x8599('0x3b')]);_0x4c23b1[_0x8599('0x3d')]=_['intersection'](_0x4c23b1[_0x8599('0x3f')],_0x4c23b1[_0x8599('0x3b')]);_0x2504fc[_0x8599('0x40')]=_[_0x8599('0x3e')](_0x4c23b1[_0x8599('0x3f')],qs[_0x8599('0x41')](_0xa279f0[_0x8599('0x3b')][_0x8599('0x41')]));_0x2504fc[_0x8599('0x40')]=_0x2504fc['attributes'][_0x8599('0x50')]?_0x2504fc[_0x8599('0x40')]:_0x4c23b1[_0x8599('0x3f')];_0x2504fc[_0x8599('0x58')]=qs[_0x8599('0x43')](_0xa279f0[_0x8599('0x3b')][_0x8599('0x43')]);_0x2504fc[_0x8599('0x44')]=qs['filters'](_['pick'](_0xa279f0['query'],_0x4c23b1[_0x8599('0x3d')]));if(_0xa279f0[_0x8599('0x3b')][_0x8599('0x46')]){_0x2504fc['where']=_[_0x8599('0x47')](_0x2504fc[_0x8599('0x44')],{'$or':_['map'](_0x2504fc[_0x8599('0x40')],function(_0x388639){var _0x495c63={};_0x495c63[_0x388639]={'$like':'%'+_0xa279f0[_0x8599('0x3b')][_0x8599('0x46')]+'%'};return _0x495c63;})});}_0x2504fc=_['merge']({},_0x2504fc,_0xa279f0['options']);return _0x1857fb[_0x8599('0x55')](_0x2504fc);}})['then'](function(_0x58e1f6){if(_0x58e1f6){_0x4c9514=_0x58e1f6[_0x8599('0x50')];if(!_0xa279f0['query']['hasOwnProperty'](_0x8599('0x42'))){_0x2504fc[_0x8599('0x30')]=qs['limit'](_0xa279f0[_0x8599('0x3b')][_0x8599('0x30')]);_0x2504fc[_0x8599('0x2f')]=qs[_0x8599('0x2f')](_0xa279f0[_0x8599('0x3b')][_0x8599('0x2f')]);}return _0x1857fb['getConfigurations'](_0x2504fc);}})['then'](function(_0x369be5){if(_0x369be5){return _0x369be5?{'count':_0x4c9514,'rows':_0x369be5}:null;}})[_0x8599('0x21')](respondWithResult(_0x3cd733,null))['catch'](handleError(_0x3cd733,null));};exports[_0x8599('0x59')]=function(_0x259808,_0x32ef5f,_0x8c83a5){if(_0x259808[_0x8599('0x54')]['id']){delete _0x259808['body']['id'];}return db['FreshdeskAccount'][_0x8599('0x56')]({'where':{'id':_0x259808['params']['id']}})['then'](handleEntityNotFound(_0x32ef5f,null))['then'](function(_0x244767){if(_0x244767){_0x259808['body']['AccountId']=_0x244767['id'];_0x259808['body'][_0x8599('0x5a')]=integrations[_0x8599('0x5b')](_0x259808[_0x8599('0x54')][_0x8599('0x5c')],_0x259808[_0x8599('0x54')]['type']);_0x259808[_0x8599('0x54')][_0x8599('0x5d')]=integrations[_0x8599('0x5e')](_0x259808['body'][_0x8599('0x5c')],_0x259808[_0x8599('0x54')]['type']);return db['FreshdeskConfiguration'][_0x8599('0x53')](_0x259808[_0x8599('0x54')],{'include':[{'model':db['FreshdeskField'],'as':'Subjects'},{'model':db[_0x8599('0x5f')],'as':_0x8599('0x5d')}]});}return null;})[_0x8599('0x21')](respondWithResult(_0x32ef5f,null))[_0x8599('0x2a')](handleError(_0x32ef5f,null));};exports[_0x8599('0x60')]=function(_0x3aa186,_0x1c0e12,_0x5aa10c){var _0x1fc6df='';return db[_0x8599('0x4a')][_0x8599('0x56')]({'where':{'id':_0x3aa186['params']['id']},'attributes':['id',_0x8599('0x61'),'apiKey']})[_0x8599('0x21')](handleEntityNotFound(_0x1c0e12,null))[_0x8599('0x21')](function(_0x1a5735){if(_0x1a5735){_0x1fc6df=_0x1a5735['remoteUri'];var _0x32a067=_0x1fc6df[_0x8599('0x62')](-0x1);if(_0x32a067==='/'){_0x1fc6df=_0x1fc6df[_0x8599('0x63')](0x0,_0x1fc6df[_0x8599('0x64')](_0x32a067));}return rp({'method':_0x8599('0x65'),'uri':util[_0x8599('0x66')](_0x8599('0x67'),_0x1fc6df,_0x8599('0x68')),'headers':{'Authorization':util[_0x8599('0x66')]('Basic\x20%s',new Buffer(util['format'](_0x8599('0x69'),_0x1a5735['apiKey']))[_0x8599('0x6a')](_0x8599('0x6b')))},'json':!![]});}})[_0x8599('0x21')](function(_0x2701c9){if(_0x2701c9){var _0x45c4b8=[_0x8599('0x6c'),_0x8599('0x6d'),'agent','description',_0x8599('0x2d'),_0x8599('0x6e'),_0x8599('0x6f'),_0x8599('0x70'),_0x8599('0x71'),_0x8599('0x6f'),_0x8599('0x72')];_[_0x8599('0x73')](_0x2701c9,function(_0x4f04d0){return _0x45c4b8[_0x8599('0x74')](_0x4f04d0[_0x8599('0x36')])||!_0x4f04d0[_0x8599('0x75')]&&_0x4f04d0[_0x8599('0x3a')]!==_0x8599('0x76')&&_0x4f04d0[_0x8599('0x3a')]!==_0x8599('0x77');});return{'count':_0x2701c9[_0x8599('0x50')],'rows':_[_0x8599('0x78')](_0x2701c9,function(_0x2424e1){return{'id':_0x2424e1['name'],'name':_0x2424e1[_0x8599('0x79')],'custom':!_0x2424e1[_0x8599('0x75')],'options':_0x2424e1[_0x8599('0x7a')]?_[_0x8599('0x78')](_0x2424e1[_0x8599('0x7a')],function(_0x580d8b){return{'name':_['capitalize'](_0x580d8b),'value':_0x580d8b};}):[]};})};}})[_0x8599('0x21')](respondWithResult(_0x1c0e12,null))[_0x8599('0x2a')](function(_0x1d925f){var _0x453270=_0x3aa186['query'][_0x8599('0x1c')]?0x1f4:_0x1d925f['statusCode']||0x1f4;logger[_0x8599('0x27')](_0x8599('0x7b'),_0x8599('0x60'),_0x453270,JSON['stringify'](_0x1d925f));delete _0x1d925f[_0x8599('0x36')];if(_0x453270===0x191){_0x453270=0x190;}_0x1c0e12[_0x8599('0x2d')](_0x453270)[_0x8599('0x37')](_0x3aa186['query'][_0x8599('0x1c')]?{'message':_0x8599('0x7c'),'statusCode':_0x1d925f[_0x8599('0x7d')]}:_0x1d925f);});};