32cabc02a8de8b596008bd8516ccbc64cc9d6ea0
[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 _0x254a=['to-csv','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','error','stack','name','send','index','ChatInternalMessage','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','update','find','describe','messages','lastMessageAt','createdAt','lastMessage','format','User','agent','admin','fullname','role','userpic','internal','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x254a,0xd9));var _0xa254=function(_0x3a2a33,_0x29372a){_0x3a2a33=_0x3a2a33-0x0;var _0x10d6d2=_0x254a[_0x3a2a33];return _0x10d6d2;};'use strict';var emlformat=require(_0xa254('0x0'));var rimraf=require(_0xa254('0x1'));var zipdir=require(_0xa254('0x2'));var jsonpatch=require(_0xa254('0x3'));var rp=require(_0xa254('0x4'));var moment=require(_0xa254('0x5'));var BPromise=require(_0xa254('0x6'));var Mustache=require(_0xa254('0x7'));var util=require(_0xa254('0x8'));var path=require(_0xa254('0x9'));var sox=require(_0xa254('0xa'));var csv=require(_0xa254('0xb'));var ejs=require(_0xa254('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa254('0xd'));var squel=require(_0xa254('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa254('0xf'));var toCsv=require(_0xa254('0xb'));var querystring=require('querystring');var Papa=require(_0xa254('0x10'));var Redis=require(_0xa254('0x11'));var authService=require(_0xa254('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa254('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa254('0x14'));var utils=require(_0xa254('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa254('0x16'));var db=require(_0xa254('0x17'))['db'];config[_0xa254('0x18')]=_['defaults'](config['redis'],{'host':_0xa254('0x19'),'port':0x18eb});var socket=require(_0xa254('0x1a'))(new Redis(config[_0xa254('0x18')]));require(_0xa254('0x1b'))[_0xa254('0x1c')](socket);function respondWithStatusCode(_0x3e46d7,_0x638b17){_0x638b17=_0x638b17||0xcc;return function(_0x54b894){if(_0x54b894){return _0x3e46d7[_0xa254('0x1d')](_0x638b17);}return _0x3e46d7['status'](_0x638b17)[_0xa254('0x1e')]();};}function respondWithResult(_0x1d142d,_0x5b1320){_0x5b1320=_0x5b1320||0xc8;return function(_0x58d245){if(_0x58d245){return _0x1d142d[_0xa254('0x1f')](_0x5b1320)[_0xa254('0x20')](_0x58d245);}};}function respondWithFilteredResult(_0x181de2,_0x230590){return function(_0x5d4ffc){if(_0x5d4ffc){var _0x5d8372=typeof _0x230590[_0xa254('0x21')]===_0xa254('0x22')&&typeof _0x230590[_0xa254('0x23')]==='undefined';var _0x13ab03=_0x5d4ffc[_0xa254('0x24')];var _0x464ed1=_0x5d8372?0x0:_0x230590[_0xa254('0x21')];var _0x2774a7=_0x5d8372?_0x5d4ffc[_0xa254('0x24')]:_0x230590[_0xa254('0x21')]+_0x230590[_0xa254('0x23')];var _0x258ae5;if(_0x2774a7>=_0x13ab03){_0x2774a7=_0x13ab03;_0x258ae5=0xc8;}else{_0x258ae5=0xce;}_0x181de2[_0xa254('0x1f')](_0x258ae5);return _0x181de2['set'](_0xa254('0x25'),_0x464ed1+'-'+_0x2774a7+'/'+_0x13ab03)['json'](_0x5d4ffc);}return null;};}function patchUpdates(_0x460f89){return function(_0x37610c){try{jsonpatch[_0xa254('0x26')](_0x37610c,_0x460f89,!![]);}catch(_0x1e7e53){return BPromise['reject'](_0x1e7e53);}return _0x37610c[_0xa254('0x27')]();};}function saveUpdates(_0x4df5a6,_0x2a61b5){return function(_0x119c96){if(_0x119c96){return _0x119c96['update'](_0x4df5a6)[_0xa254('0x28')](function(_0x8f9937){return _0x8f9937;});}return null;};}function removeEntity(_0x1a7784,_0x4a2f57){return function(_0x512bbd){if(_0x512bbd){return _0x512bbd[_0xa254('0x29')]()[_0xa254('0x28')](function(){_0x1a7784['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x22e697,_0x7ea393){return function(_0x3e7f7c){if(!_0x3e7f7c){_0x22e697[_0xa254('0x1d')](0x194);}return _0x3e7f7c;};}function handleError(_0x20d588,_0x41ddd9){_0x41ddd9=_0x41ddd9||0x1f4;return function(_0xf0dcfa){logger[_0xa254('0x2a')](_0xf0dcfa[_0xa254('0x2b')]);if(_0xf0dcfa[_0xa254('0x2c')]){delete _0xf0dcfa[_0xa254('0x2c')];}_0x20d588[_0xa254('0x1f')](_0x41ddd9)[_0xa254('0x2d')](_0xf0dcfa);};}exports[_0xa254('0x2e')]=function(_0x59f778,_0x3fb582){var _0x57fdb8={},_0x224bef={},_0x53eb88={'count':0x0,'rows':[]};var _0x14533d=_['map'](db[_0xa254('0x2f')][_0xa254('0x30')],function(_0x416200){return{'name':_0x416200[_0xa254('0x31')],'type':_0x416200[_0xa254('0x32')][_0xa254('0x33')]};});_0x224bef[_0xa254('0x34')]=_[_0xa254('0x35')](_0x14533d,_0xa254('0x2c'));_0x224bef[_0xa254('0x36')]=_[_0xa254('0x37')](_0x59f778[_0xa254('0x36')]);_0x224bef['filters']=_[_0xa254('0x38')](_0x224bef['model'],_0x224bef[_0xa254('0x36')]);_0x57fdb8[_0xa254('0x39')]=_[_0xa254('0x38')](_0x224bef[_0xa254('0x34')],qs[_0xa254('0x3a')](_0x59f778[_0xa254('0x36')][_0xa254('0x3a')]));_0x57fdb8[_0xa254('0x39')]=_0x57fdb8[_0xa254('0x39')][_0xa254('0x3b')]?_0x57fdb8[_0xa254('0x39')]:_0x224bef[_0xa254('0x34')];if(!_0x59f778[_0xa254('0x36')][_0xa254('0x3c')]('nolimit')){_0x57fdb8['limit']=qs[_0xa254('0x23')](_0x59f778[_0xa254('0x36')]['limit']);_0x57fdb8[_0xa254('0x21')]=qs['offset'](_0x59f778[_0xa254('0x36')][_0xa254('0x21')]);}_0x57fdb8[_0xa254('0x3d')]=qs[_0xa254('0x3e')](_0x59f778[_0xa254('0x36')]['sort']);_0x57fdb8[_0xa254('0x3f')]=qs['filters'](_[_0xa254('0x40')](_0x59f778[_0xa254('0x36')],_0x224bef[_0xa254('0x41')]),_0x14533d);if(_0x59f778['query'][_0xa254('0x42')]){_0x57fdb8['where']=_[_0xa254('0x43')](_0x57fdb8['where'],{'$or':_[_0xa254('0x35')](_0x14533d,function(_0x3ba0ad){if(_0x3ba0ad[_0xa254('0x32')]!==_0xa254('0x44')){var _0x2ac416={};_0x2ac416[_0x3ba0ad[_0xa254('0x2c')]]={'$like':'%'+_0x59f778[_0xa254('0x36')]['filter']+'%'};return _0x2ac416;}})});}_0x57fdb8=_[_0xa254('0x43')]({},_0x57fdb8,_0x59f778[_0xa254('0x45')]);var _0x2360b7={'where':_0x57fdb8['where']};return db[_0xa254('0x2f')][_0xa254('0x24')](_0x2360b7)[_0xa254('0x28')](function(_0xa9ac62){_0x53eb88['count']=_0xa9ac62;if(_0x59f778[_0xa254('0x36')][_0xa254('0x46')]){_0x57fdb8[_0xa254('0x47')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0xa254('0x48')](_0x57fdb8);})['then'](function(_0x4953ee){_0x53eb88[_0xa254('0x49')]=_0x4953ee;return _0x53eb88;})[_0xa254('0x28')](respondWithFilteredResult(_0x3fb582,_0x57fdb8))[_0xa254('0x4a')](handleError(_0x3fb582,null));};exports[_0xa254('0x4b')]=function(_0x3196dd,_0x27133c){var _0x4852f={'raw':!![],'where':{'id':_0x3196dd[_0xa254('0x4c')]['id']}},_0x40c4e4={};_0x40c4e4[_0xa254('0x34')]=_[_0xa254('0x37')](db[_0xa254('0x2f')][_0xa254('0x30')]);_0x40c4e4[_0xa254('0x36')]=_[_0xa254('0x37')](_0x3196dd[_0xa254('0x36')]);_0x40c4e4[_0xa254('0x41')]=_[_0xa254('0x38')](_0x40c4e4[_0xa254('0x34')],_0x40c4e4[_0xa254('0x36')]);_0x4852f[_0xa254('0x39')]=_[_0xa254('0x38')](_0x40c4e4[_0xa254('0x34')],qs[_0xa254('0x3a')](_0x3196dd[_0xa254('0x36')][_0xa254('0x3a')]));_0x4852f[_0xa254('0x39')]=_0x4852f[_0xa254('0x39')][_0xa254('0x3b')]?_0x4852f[_0xa254('0x39')]:_0x40c4e4[_0xa254('0x34')];if(_0x3196dd['query'][_0xa254('0x46')]){_0x4852f[_0xa254('0x47')]=[{'all':!![]}];}_0x4852f=_[_0xa254('0x43')]({},_0x4852f,_0x3196dd['options']);return db['ChatInternalMessage']['find'](_0x4852f)['then'](handleEntityNotFound(_0x27133c,null))['then'](respondWithResult(_0x27133c,null))[_0xa254('0x4a')](handleError(_0x27133c,null));};exports[_0xa254('0x4d')]=function(_0x4687a8,_0x55f987){return db['ChatInternalMessage']['create'](_0x4687a8[_0xa254('0x4e')],{})[_0xa254('0x28')](respondWithResult(_0x55f987,0xc9))[_0xa254('0x4a')](handleError(_0x55f987,null));};exports[_0xa254('0x4f')]=function(_0x121f28,_0x1c5fe8){if(_0x121f28[_0xa254('0x4e')]['id']){delete _0x121f28['body']['id'];}return db[_0xa254('0x2f')][_0xa254('0x50')]({'where':{'id':_0x121f28[_0xa254('0x4c')]['id']}})[_0xa254('0x28')](handleEntityNotFound(_0x1c5fe8,null))[_0xa254('0x28')](saveUpdates(_0x121f28['body'],null))[_0xa254('0x28')](respondWithResult(_0x1c5fe8,null))[_0xa254('0x4a')](handleError(_0x1c5fe8,null));};exports['destroy']=function(_0x1f44a8,_0x3846eb){return db['ChatInternalMessage'][_0xa254('0x50')]({'where':{'id':_0x1f44a8[_0xa254('0x4c')]['id']}})[_0xa254('0x28')](handleEntityNotFound(_0x3846eb,null))[_0xa254('0x28')](removeEntity(_0x3846eb,null))[_0xa254('0x4a')](handleError(_0x3846eb,null));};exports[_0xa254('0x51')]=function(_0x189e19,_0x4ea2ee){return db[_0xa254('0x2f')][_0xa254('0x51')]()[_0xa254('0x28')](respondWithResult(_0x4ea2ee,null))[_0xa254('0x4a')](handleError(_0x4ea2ee,null));};function wrapUser(_0x364fb3){return function(_0x3a4dcf){var _0x17db5a=_0x364fb3['get']({'plain':!![]});_0x17db5a[_0xa254('0x52')]=[];if(_0x3a4dcf){_0x17db5a[_0xa254('0x53')]=_0x3a4dcf[_0xa254('0x54')];_0x17db5a[_0xa254('0x55')]=_0x3a4dcf;}else{_0x17db5a[_0xa254('0x53')]=moment(0x0)[_0xa254('0x56')]('YYYY-MM-DD\x20HH:mm:ss');_0x17db5a[_0xa254('0x55')]={};}return _0x17db5a;};}exports['getUsers']=function(_0x86a0b9,_0x186c8e,_0x5721f7){var _0x5e0246=[];return db[_0xa254('0x57')][_0xa254('0x48')]({'where':{'role':[_0xa254('0x58'),_0xa254('0x59'),'user']},'attributes':['id',_0xa254('0x5a'),'name',_0xa254('0x5b'),_0xa254('0x5c'),_0xa254('0x5d'),'online',_0xa254('0x5e'),_0xa254('0x5f'),_0xa254('0x60')],'order':qs['sort']('-online'),'include':[{'model':db[_0xa254('0x61')],'as':_0xa254('0x62'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})[_0xa254('0x28')](function(_0x4fdabf){if(_0x4fdabf){var _0x38bcb3=_0x86a0b9[_0xa254('0x63')][_0xa254('0x64')]({'plain':!![]});if(!_0x38bcb3)throw new Error(_0xa254('0x65'));if(_0x38bcb3[_0xa254('0x5b')]===_0xa254('0x63')){return db['UserProfileSection'][_0xa254('0x50')]({'where':{'name':_0xa254('0x66'),'userProfileId':_0x38bcb3[_0xa254('0x67')]},'raw':!![]})[_0xa254('0x28')](function(_0x4aba04){if(_0x4aba04){if(_0x4aba04[_0xa254('0x68')]===0x0){return db[_0xa254('0x69')]['findAll']({'where':{'sectionId':_0x4aba04['id']},'raw':!![]})[_0xa254('0x28')](function(_0x233013){var _0x43d03f=[];if(_[_0xa254('0x6a')](_0x233013)){_0x43d03f=_[_0xa254('0x42')](_0x4fdabf,function(_0x482e9a){if(_0x482e9a[_0xa254('0x5b')]!=='agent'){return _0x482e9a;}});return _0x43d03f;}else{for(var _0x4c7ab1=0x0;_0x4c7ab1<_0x4fdabf[_0xa254('0x3b')];_0x4c7ab1++){var _0x1dbbe5=_0x4fdabf[_0x4c7ab1];if(_0x1dbbe5['role']===_0xa254('0x58')){var _0x1d71c6=_[_0xa254('0x50')](_0x233013,function(_0x40cde7){return _0x40cde7[_0xa254('0x6b')]===_0x1dbbe5['id'];});if(_0x1d71c6)_0x43d03f[_0xa254('0x6c')](_0x1dbbe5);}else{_0x43d03f[_0xa254('0x6c')](_0x1dbbe5);}}return _0x43d03f;}});}else{return _0x4fdabf;}}else{var _0x516f1=_['filter'](_0x4fdabf,function(_0x3cf740){if(_0x3cf740['role']!==_0xa254('0x58')){return _0x3cf740;}});return _0x516f1;}});}else{return _0x4fdabf;}}})[_0xa254('0x28')](function(_0x5f5ccf){var _0x190280=[];if(_0x5f5ccf){_0x5e0246=_0x5f5ccf;for(var _0x25bfc4=0x0;_0x25bfc4<_0x5f5ccf['length'];_0x25bfc4+=0x1){_0x5e0246[_0x25bfc4]['messages']=[];_0x190280['push'](db['ChatInternalMessage']['find']({'where':{'FromId':[_0x86a0b9['user']['id'],_0x5f5ccf[_0x25bfc4]['id']],'ToId':[_0x86a0b9[_0xa254('0x63')]['id'],_0x5f5ccf[_0x25bfc4]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xa254('0x6d'),_0xa254('0x6e'),_0xa254('0x6f'),_0xa254('0x4e')],'order':qs[_0xa254('0x3e')](_0xa254('0x70')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xa254('0x28')](wrapUser(_0x5f5ccf[_0x25bfc4])));}return BPromise[_0xa254('0x71')](_0x190280);}return[];})[_0xa254('0x28')](function(_0x63277d){return{'rows':_0x63277d,'count':_0x63277d['length']};})[_0xa254('0x28')](respondWithResult(_0x186c8e,null))['catch'](handleError(_0x186c8e,null));};