45f784e6bcaa4dc55c55e39b81271578ee5cec4b
[motion2.git] / server / api / chatInternalMessage / chatInternalMessage.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 _0x40ba=['merge','type','VIRTUAL','options','includeAll','include','findAll','catch','params','keys','find','create','body','update','describe','lastMessageAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','agent','admin','user','fullname','role','userpic','internal','online','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','read','-createdAt','all','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','destroy','then','end','error','stack','name','send','index','map','ChatInternalMessage','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where'];(function(_0xebdd6a,_0x105a09){var _0x323618=function(_0x2ae1fd){while(--_0x2ae1fd){_0xebdd6a['push'](_0xebdd6a['shift']());}};_0x323618(++_0x105a09);}(_0x40ba,0x172));var _0xa40b=function(_0x1103c4,_0x562d1d){_0x1103c4=_0x1103c4-0x0;var _0x1c19ab=_0x40ba[_0x1103c4];return _0x1c19ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa40b('0x0'));var zipdir=require(_0xa40b('0x1'));var jsonpatch=require(_0xa40b('0x2'));var rp=require(_0xa40b('0x3'));var moment=require(_0xa40b('0x4'));var BPromise=require(_0xa40b('0x5'));var Mustache=require(_0xa40b('0x6'));var util=require(_0xa40b('0x7'));var path=require(_0xa40b('0x8'));var sox=require('sox');var csv=require(_0xa40b('0x9'));var ejs=require(_0xa40b('0xa'));var fs=require('fs');var fs_extra=require(_0xa40b('0xb'));var _=require(_0xa40b('0xc'));var squel=require(_0xa40b('0xd'));var crypto=require(_0xa40b('0xe'));var jsforce=require(_0xa40b('0xf'));var deskjs=require(_0xa40b('0x10'));var toCsv=require(_0xa40b('0x9'));var querystring=require(_0xa40b('0x11'));var Papa=require('papaparse');var Redis=require(_0xa40b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa40b('0x13'));var as=require(_0xa40b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa40b('0x15'))(_0xa40b('0x16'));var utils=require(_0xa40b('0x17'));var config=require(_0xa40b('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa40b('0x19'))['db'];config[_0xa40b('0x1a')]=_[_0xa40b('0x1b')](config[_0xa40b('0x1a')],{'host':_0xa40b('0x1c'),'port':0x18eb});var socket=require(_0xa40b('0x1d'))(new Redis(config[_0xa40b('0x1a')]));require(_0xa40b('0x1e'))[_0xa40b('0x1f')](socket);function respondWithStatusCode(_0x2835af,_0x553dd6){_0x553dd6=_0x553dd6||0xcc;return function(_0x45e017){if(_0x45e017){return _0x2835af[_0xa40b('0x20')](_0x553dd6);}return _0x2835af['status'](_0x553dd6)['end']();};}function respondWithResult(_0xf0b8d2,_0x106fce){_0x106fce=_0x106fce||0xc8;return function(_0x3ee4bd){if(_0x3ee4bd){return _0xf0b8d2[_0xa40b('0x21')](_0x106fce)[_0xa40b('0x22')](_0x3ee4bd);}};}function respondWithFilteredResult(_0x4dd767,_0x1de418){return function(_0x435e0f){if(_0x435e0f){var _0x5cb02b=typeof _0x1de418[_0xa40b('0x23')]===_0xa40b('0x24')&&typeof _0x1de418['limit']==='undefined';var _0x27de8c=_0x435e0f[_0xa40b('0x25')];var _0x1b7829=_0x5cb02b?0x0:_0x1de418[_0xa40b('0x23')];var _0x159a6d=_0x5cb02b?_0x435e0f[_0xa40b('0x25')]:_0x1de418[_0xa40b('0x23')]+_0x1de418[_0xa40b('0x26')];var _0x1da57f;if(_0x159a6d>=_0x27de8c){_0x159a6d=_0x27de8c;_0x1da57f=0xc8;}else{_0x1da57f=0xce;}_0x4dd767[_0xa40b('0x21')](_0x1da57f);return _0x4dd767[_0xa40b('0x27')](_0xa40b('0x28'),_0x1b7829+'-'+_0x159a6d+'/'+_0x27de8c)[_0xa40b('0x22')](_0x435e0f);}return null;};}function patchUpdates(_0x265c74){return function(_0x2322bf){try{jsonpatch['apply'](_0x2322bf,_0x265c74,!![]);}catch(_0x117377){return BPromise[_0xa40b('0x29')](_0x117377);}return _0x2322bf['save']();};}function saveUpdates(_0x3855ac,_0x5428a8){return function(_0x1995f0){if(_0x1995f0){return _0x1995f0['update'](_0x3855ac)['then'](function(_0x254b22){return _0x254b22;});}return null;};}function removeEntity(_0xd18833,_0xc62837){return function(_0x36e5ae){if(_0x36e5ae){return _0x36e5ae[_0xa40b('0x2a')]()[_0xa40b('0x2b')](function(){_0xd18833[_0xa40b('0x21')](0xcc)[_0xa40b('0x2c')]();});}};}function handleEntityNotFound(_0x5712b3,_0x7935f0){return function(_0x5189a6){if(!_0x5189a6){_0x5712b3[_0xa40b('0x20')](0x194);}return _0x5189a6;};}function handleError(_0x2a0b39,_0x235ea5){_0x235ea5=_0x235ea5||0x1f4;return function(_0x3ebf3a){logger[_0xa40b('0x2d')](_0x3ebf3a[_0xa40b('0x2e')]);if(_0x3ebf3a['name']){delete _0x3ebf3a[_0xa40b('0x2f')];}_0x2a0b39[_0xa40b('0x21')](_0x235ea5)[_0xa40b('0x30')](_0x3ebf3a);};}exports[_0xa40b('0x31')]=function(_0x543c08,_0x9064a4){var _0x1cc7f6={},_0x1993cb={},_0x1860e1={'count':0x0,'rows':[]};var _0x2a7a36=_[_0xa40b('0x32')](db[_0xa40b('0x33')]['rawAttributes'],function(_0x3e447f){return{'name':_0x3e447f['fieldName'],'type':_0x3e447f['type'][_0xa40b('0x34')]};});_0x1993cb[_0xa40b('0x35')]=_[_0xa40b('0x32')](_0x2a7a36,_0xa40b('0x2f'));_0x1993cb[_0xa40b('0x36')]=_['keys'](_0x543c08[_0xa40b('0x36')]);_0x1993cb[_0xa40b('0x37')]=_[_0xa40b('0x38')](_0x1993cb[_0xa40b('0x35')],_0x1993cb[_0xa40b('0x36')]);_0x1cc7f6[_0xa40b('0x39')]=_[_0xa40b('0x38')](_0x1993cb['model'],qs[_0xa40b('0x3a')](_0x543c08[_0xa40b('0x36')][_0xa40b('0x3a')]));_0x1cc7f6[_0xa40b('0x39')]=_0x1cc7f6['attributes'][_0xa40b('0x3b')]?_0x1cc7f6['attributes']:_0x1993cb[_0xa40b('0x35')];if(!_0x543c08[_0xa40b('0x36')][_0xa40b('0x3c')](_0xa40b('0x3d'))){_0x1cc7f6[_0xa40b('0x26')]=qs[_0xa40b('0x26')](_0x543c08['query'][_0xa40b('0x26')]);_0x1cc7f6[_0xa40b('0x23')]=qs[_0xa40b('0x23')](_0x543c08['query'][_0xa40b('0x23')]);}_0x1cc7f6[_0xa40b('0x3e')]=qs['sort'](_0x543c08[_0xa40b('0x36')][_0xa40b('0x3f')]);_0x1cc7f6['where']=qs[_0xa40b('0x37')](_['pick'](_0x543c08[_0xa40b('0x36')],_0x1993cb[_0xa40b('0x37')]),_0x2a7a36);if(_0x543c08['query'][_0xa40b('0x40')]){_0x1cc7f6[_0xa40b('0x41')]=_[_0xa40b('0x42')](_0x1cc7f6[_0xa40b('0x41')],{'$or':_['map'](_0x2a7a36,function(_0x424274){if(_0x424274[_0xa40b('0x43')]!==_0xa40b('0x44')){var _0x31b4f2={};_0x31b4f2[_0x424274['name']]={'$like':'%'+_0x543c08[_0xa40b('0x36')][_0xa40b('0x40')]+'%'};return _0x31b4f2;}})});}_0x1cc7f6=_[_0xa40b('0x42')]({},_0x1cc7f6,_0x543c08[_0xa40b('0x45')]);var _0x7e2fec={'where':_0x1cc7f6[_0xa40b('0x41')]};return db[_0xa40b('0x33')][_0xa40b('0x25')](_0x7e2fec)[_0xa40b('0x2b')](function(_0x4ae478){_0x1860e1['count']=_0x4ae478;if(_0x543c08['query'][_0xa40b('0x46')]){_0x1cc7f6[_0xa40b('0x47')]=[{'all':!![]}];}return db[_0xa40b('0x33')][_0xa40b('0x48')](_0x1cc7f6);})[_0xa40b('0x2b')](function(_0x3e48b4){_0x1860e1['rows']=_0x3e48b4;return _0x1860e1;})[_0xa40b('0x2b')](respondWithFilteredResult(_0x9064a4,_0x1cc7f6))[_0xa40b('0x49')](handleError(_0x9064a4,null));};exports['show']=function(_0x4dc8b4,_0x314668){var _0x1227f3={'raw':!![],'where':{'id':_0x4dc8b4[_0xa40b('0x4a')]['id']}},_0x2c2dd0={};_0x2c2dd0[_0xa40b('0x35')]=_[_0xa40b('0x4b')](db['ChatInternalMessage']['rawAttributes']);_0x2c2dd0[_0xa40b('0x36')]=_[_0xa40b('0x4b')](_0x4dc8b4[_0xa40b('0x36')]);_0x2c2dd0[_0xa40b('0x37')]=_[_0xa40b('0x38')](_0x2c2dd0[_0xa40b('0x35')],_0x2c2dd0['query']);_0x1227f3['attributes']=_[_0xa40b('0x38')](_0x2c2dd0[_0xa40b('0x35')],qs[_0xa40b('0x3a')](_0x4dc8b4[_0xa40b('0x36')][_0xa40b('0x3a')]));_0x1227f3[_0xa40b('0x39')]=_0x1227f3[_0xa40b('0x39')]['length']?_0x1227f3[_0xa40b('0x39')]:_0x2c2dd0[_0xa40b('0x35')];if(_0x4dc8b4['query'][_0xa40b('0x46')]){_0x1227f3[_0xa40b('0x47')]=[{'all':!![]}];}_0x1227f3=_[_0xa40b('0x42')]({},_0x1227f3,_0x4dc8b4[_0xa40b('0x45')]);return db[_0xa40b('0x33')][_0xa40b('0x4c')](_0x1227f3)[_0xa40b('0x2b')](handleEntityNotFound(_0x314668,null))[_0xa40b('0x2b')](respondWithResult(_0x314668,null))['catch'](handleError(_0x314668,null));};exports[_0xa40b('0x4d')]=function(_0x15f6b,_0x3e9e3e){return db[_0xa40b('0x33')][_0xa40b('0x4d')](_0x15f6b[_0xa40b('0x4e')],{})[_0xa40b('0x2b')](respondWithResult(_0x3e9e3e,0xc9))[_0xa40b('0x49')](handleError(_0x3e9e3e,null));};exports[_0xa40b('0x4f')]=function(_0x1a77d3,_0x1de981){if(_0x1a77d3[_0xa40b('0x4e')]['id']){delete _0x1a77d3[_0xa40b('0x4e')]['id'];}return db[_0xa40b('0x33')]['find']({'where':{'id':_0x1a77d3['params']['id']}})[_0xa40b('0x2b')](handleEntityNotFound(_0x1de981,null))[_0xa40b('0x2b')](saveUpdates(_0x1a77d3[_0xa40b('0x4e')],null))['then'](respondWithResult(_0x1de981,null))[_0xa40b('0x49')](handleError(_0x1de981,null));};exports[_0xa40b('0x2a')]=function(_0x1743f4,_0x3e131b){return db[_0xa40b('0x33')][_0xa40b('0x4c')]({'where':{'id':_0x1743f4[_0xa40b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e131b,null))[_0xa40b('0x2b')](removeEntity(_0x3e131b,null))[_0xa40b('0x49')](handleError(_0x3e131b,null));};exports[_0xa40b('0x50')]=function(_0x2e0495,_0xc66906){return db[_0xa40b('0x33')]['describe']()['then'](respondWithResult(_0xc66906,null))[_0xa40b('0x49')](handleError(_0xc66906,null));};function wrapUser(_0x4ff4c4){return function(_0x54bd2f){var _0xafbc32=_0x4ff4c4['get']({'plain':!![]});_0xafbc32['messages']=[];if(_0x54bd2f){_0xafbc32[_0xa40b('0x51')]=_0x54bd2f['createdAt'];_0xafbc32[_0xa40b('0x52')]=_0x54bd2f;}else{_0xafbc32[_0xa40b('0x51')]=moment(0x0)['format'](_0xa40b('0x53'));_0xafbc32['lastMessage']={};}return _0xafbc32;};}exports[_0xa40b('0x54')]=function(_0x23d55d,_0x3b7ae7,_0x4a4c38){var _0x75339c=[];return db['User'][_0xa40b('0x48')]({'where':{'role':[_0xa40b('0x55'),_0xa40b('0x56'),_0xa40b('0x57')]},'attributes':['id',_0xa40b('0x58'),_0xa40b('0x2f'),_0xa40b('0x59'),_0xa40b('0x5a'),_0xa40b('0x5b'),_0xa40b('0x5c'),'lastLoginAt',_0xa40b('0x5d'),_0xa40b('0x5e')],'order':qs['sort'](_0xa40b('0x5f')),'include':[{'model':db[_0xa40b('0x60')],'as':_0xa40b('0x61'),'attributes':['id',_0xa40b('0x2f'),'type'],'through':{'attributes':[]}}]})[_0xa40b('0x2b')](function(_0x2617d5){if(_0x2617d5){var _0x54f6de=_0x23d55d[_0xa40b('0x57')]['get']({'plain':!![]});if(!_0x54f6de)throw new Error(_0xa40b('0x62'));if(_0x54f6de['role']==='user'){return db['UserProfileSection'][_0xa40b('0x4c')]({'where':{'name':_0xa40b('0x63'),'userProfileId':_0x54f6de['userProfileId']},'raw':!![]})[_0xa40b('0x2b')](function(_0x3cc57c){if(_0x3cc57c){if(_0x3cc57c[_0xa40b('0x64')]===0x0){return db[_0xa40b('0x65')][_0xa40b('0x48')]({'where':{'sectionId':_0x3cc57c['id']},'raw':!![]})[_0xa40b('0x2b')](function(_0x35653c){var _0x4d3f3d=[];if(_[_0xa40b('0x66')](_0x35653c)){_0x4d3f3d=_[_0xa40b('0x40')](_0x2617d5,function(_0x38e414){if(_0x38e414[_0xa40b('0x59')]!=='agent'){return _0x38e414;}});return _0x4d3f3d;}else{for(var _0x4e6908=0x0;_0x4e6908<_0x2617d5[_0xa40b('0x3b')];_0x4e6908++){var _0xac09b7=_0x2617d5[_0x4e6908];if(_0xac09b7[_0xa40b('0x59')]==='agent'){var _0x44ada4=_[_0xa40b('0x4c')](_0x35653c,function(_0x33e8e9){return _0x33e8e9[_0xa40b('0x67')]===_0xac09b7['id'];});if(_0x44ada4)_0x4d3f3d[_0xa40b('0x68')](_0xac09b7);}else{_0x4d3f3d[_0xa40b('0x68')](_0xac09b7);}}return _0x4d3f3d;}});}else{return _0x2617d5;}}else{var _0x46ed83=_['filter'](_0x2617d5,function(_0x5dd4e3){if(_0x5dd4e3[_0xa40b('0x59')]!==_0xa40b('0x55')){return _0x5dd4e3;}});return _0x46ed83;}});}else{return _0x2617d5;}}})[_0xa40b('0x2b')](function(_0x5956e6){var _0x92043a=[];if(_0x5956e6){_0x75339c=_0x5956e6;for(var _0x4a634f=0x0;_0x4a634f<_0x5956e6['length'];_0x4a634f+=0x1){_0x75339c[_0x4a634f]['messages']=[];_0x92043a[_0xa40b('0x68')](db[_0xa40b('0x33')][_0xa40b('0x4c')]({'where':{'FromId':[_0x23d55d['user']['id'],_0x5956e6[_0x4a634f]['id']],'ToId':[_0x23d55d[_0xa40b('0x57')]['id'],_0x5956e6[_0x4a634f]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xa40b('0x69'),'ToId',_0xa40b('0x6a'),_0xa40b('0x4e')],'order':qs[_0xa40b('0x3f')](_0xa40b('0x6b')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xa40b('0x2b')](wrapUser(_0x5956e6[_0x4a634f])));}return BPromise[_0xa40b('0x6c')](_0x92043a);}return[];})['then'](function(_0x2089a5){return{'rows':_0x2089a5,'count':_0x2089a5[_0xa40b('0x3b')]};})[_0xa40b('0x2b')](respondWithResult(_0x3b7ae7,null))[_0xa40b('0x49')](handleError(_0x3b7ae7,null));};