2227e9ed7694510778aa40cded41f6fb8e8d857e
[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 _0xd9b3=['lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','admin','user','lastLoginAt','-online','VoiceQueue','UserProfileSection','Agents','isEmpty','role','agent','resourceId','push','FromId','ToId','read','all','eml-format','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInternalMessage.socket','register','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','catch','show','params','options','find','create','body','describe','get','messages'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xd9b3,0xe5));var _0x3d9b=function(_0x3562f5,_0x585bd5){_0x3562f5=_0x3562f5-0x0;var _0x55f2d1=_0xd9b3[_0x3562f5];return _0x55f2d1;};'use strict';var emlformat=require(_0x3d9b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3d9b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3d9b('0x2'));var util=require(_0x3d9b('0x3'));var path=require(_0x3d9b('0x4'));var sox=require(_0x3d9b('0x5'));var csv=require(_0x3d9b('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3d9b('0x7'));var squel=require(_0x3d9b('0x8'));var crypto=require(_0x3d9b('0x9'));var jsforce=require(_0x3d9b('0xa'));var deskjs=require(_0x3d9b('0xb'));var toCsv=require(_0x3d9b('0x6'));var querystring=require(_0x3d9b('0xc'));var Papa=require('papaparse');var Redis=require(_0x3d9b('0xd'));var authService=require(_0x3d9b('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x3d9b('0xf'));var hardwareService=require(_0x3d9b('0x10'));var logger=require('../../config/logger')(_0x3d9b('0x11'));var utils=require(_0x3d9b('0x12'));var config=require(_0x3d9b('0x13'));var licenseUtil=require(_0x3d9b('0x14'));var db=require(_0x3d9b('0x15'))['db'];config[_0x3d9b('0x16')]=_[_0x3d9b('0x17')](config['redis'],{'host':_0x3d9b('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3d9b('0x16')]));require(_0x3d9b('0x19'))[_0x3d9b('0x1a')](socket);function respondWithStatusCode(_0x12602c,_0x1e1a05){_0x1e1a05=_0x1e1a05||0xcc;return function(_0x174ef9){if(_0x174ef9){return _0x12602c[_0x3d9b('0x1b')](_0x1e1a05);}return _0x12602c[_0x3d9b('0x1c')](_0x1e1a05)['end']();};}function respondWithResult(_0x43de39,_0x5cb17b){_0x5cb17b=_0x5cb17b||0xc8;return function(_0x22483c){if(_0x22483c){return _0x43de39['status'](_0x5cb17b)[_0x3d9b('0x1d')](_0x22483c);}};}function respondWithFilteredResult(_0x3f0330,_0x9a9a7a){return function(_0x32be22){if(_0x32be22){var _0x454d14=typeof _0x9a9a7a[_0x3d9b('0x1e')]==='undefined'&&typeof _0x9a9a7a['limit']===_0x3d9b('0x1f');var _0x52e1c2=_0x32be22['count'];var _0x2abbc4=_0x454d14?0x0:_0x9a9a7a[_0x3d9b('0x1e')];var _0x3e2b04=_0x454d14?_0x32be22[_0x3d9b('0x20')]:_0x9a9a7a['offset']+_0x9a9a7a[_0x3d9b('0x21')];var _0x58bafe;if(_0x3e2b04>=_0x52e1c2){_0x3e2b04=_0x52e1c2;_0x58bafe=0xc8;}else{_0x58bafe=0xce;}_0x3f0330['status'](_0x58bafe);return _0x3f0330['set'](_0x3d9b('0x22'),_0x2abbc4+'-'+_0x3e2b04+'/'+_0x52e1c2)[_0x3d9b('0x1d')](_0x32be22);}return null;};}function patchUpdates(_0x36f466){return function(_0xa513dd){try{jsonpatch[_0x3d9b('0x23')](_0xa513dd,_0x36f466,!![]);}catch(_0x549b8b){return BPromise[_0x3d9b('0x24')](_0x549b8b);}return _0xa513dd['save']();};}function saveUpdates(_0x13bac8,_0x498f4c){return function(_0x22b368){if(_0x22b368){return _0x22b368[_0x3d9b('0x25')](_0x13bac8)[_0x3d9b('0x26')](function(_0x91dcc1){return _0x91dcc1;});}return null;};}function removeEntity(_0x4950b6,_0xbd6ea1){return function(_0x2a3672){if(_0x2a3672){return _0x2a3672[_0x3d9b('0x27')]()[_0x3d9b('0x26')](function(){_0x4950b6[_0x3d9b('0x1c')](0xcc)[_0x3d9b('0x28')]();});}};}function handleEntityNotFound(_0x288fc6,_0x58603e){return function(_0x57f37d){if(!_0x57f37d){_0x288fc6[_0x3d9b('0x1b')](0x194);}return _0x57f37d;};}function handleError(_0x14ffb3,_0x58f9a0){_0x58f9a0=_0x58f9a0||0x1f4;return function(_0x134e64){logger[_0x3d9b('0x29')](_0x134e64[_0x3d9b('0x2a')]);if(_0x134e64[_0x3d9b('0x2b')]){delete _0x134e64[_0x3d9b('0x2b')];}_0x14ffb3[_0x3d9b('0x1c')](_0x58f9a0)[_0x3d9b('0x2c')](_0x134e64);};}exports[_0x3d9b('0x2d')]=function(_0x404436,_0x77852f){var _0x3cf01d={},_0x48caf3={},_0x80a526={'count':0x0,'rows':[]};var _0x1201b5=_[_0x3d9b('0x2e')](db[_0x3d9b('0x2f')][_0x3d9b('0x30')],function(_0x477f3d){return{'name':_0x477f3d['fieldName'],'type':_0x477f3d['type'][_0x3d9b('0x31')]};});_0x48caf3[_0x3d9b('0x32')]=_[_0x3d9b('0x2e')](_0x1201b5,_0x3d9b('0x2b'));_0x48caf3['query']=_[_0x3d9b('0x33')](_0x404436[_0x3d9b('0x34')]);_0x48caf3[_0x3d9b('0x35')]=_[_0x3d9b('0x36')](_0x48caf3['model'],_0x48caf3[_0x3d9b('0x34')]);_0x3cf01d[_0x3d9b('0x37')]=_[_0x3d9b('0x36')](_0x48caf3[_0x3d9b('0x32')],qs[_0x3d9b('0x38')](_0x404436[_0x3d9b('0x34')][_0x3d9b('0x38')]));_0x3cf01d[_0x3d9b('0x37')]=_0x3cf01d[_0x3d9b('0x37')][_0x3d9b('0x39')]?_0x3cf01d[_0x3d9b('0x37')]:_0x48caf3['model'];if(!_0x404436[_0x3d9b('0x34')][_0x3d9b('0x3a')](_0x3d9b('0x3b'))){_0x3cf01d[_0x3d9b('0x21')]=qs[_0x3d9b('0x21')](_0x404436['query'][_0x3d9b('0x21')]);_0x3cf01d['offset']=qs[_0x3d9b('0x1e')](_0x404436['query']['offset']);}_0x3cf01d['order']=qs[_0x3d9b('0x3c')](_0x404436['query'][_0x3d9b('0x3c')]);_0x3cf01d[_0x3d9b('0x3d')]=qs['filters'](_[_0x3d9b('0x3e')](_0x404436[_0x3d9b('0x34')],_0x48caf3[_0x3d9b('0x35')]),_0x1201b5);if(_0x404436[_0x3d9b('0x34')][_0x3d9b('0x3f')]){_0x3cf01d['where']=_[_0x3d9b('0x40')](_0x3cf01d[_0x3d9b('0x3d')],{'$or':_[_0x3d9b('0x2e')](_0x1201b5,function(_0x4d8157){if(_0x4d8157[_0x3d9b('0x41')]!==_0x3d9b('0x42')){var _0x429825={};_0x429825[_0x4d8157[_0x3d9b('0x2b')]]={'$like':'%'+_0x404436['query'][_0x3d9b('0x3f')]+'%'};return _0x429825;}})});}_0x3cf01d=_[_0x3d9b('0x40')]({},_0x3cf01d,_0x404436['options']);var _0x29643c={'where':_0x3cf01d['where']};return db[_0x3d9b('0x2f')][_0x3d9b('0x20')](_0x29643c)[_0x3d9b('0x26')](function(_0x213af8){_0x80a526[_0x3d9b('0x20')]=_0x213af8;if(_0x404436[_0x3d9b('0x34')][_0x3d9b('0x43')]){_0x3cf01d[_0x3d9b('0x44')]=[{'all':!![]}];}return db[_0x3d9b('0x2f')][_0x3d9b('0x45')](_0x3cf01d);})[_0x3d9b('0x26')](function(_0xc37dfe){_0x80a526['rows']=_0xc37dfe;return _0x80a526;})[_0x3d9b('0x26')](respondWithFilteredResult(_0x77852f,_0x3cf01d))[_0x3d9b('0x46')](handleError(_0x77852f,null));};exports[_0x3d9b('0x47')]=function(_0x29657a,_0x1daea9){var _0x8e5a4f={'raw':!![],'where':{'id':_0x29657a[_0x3d9b('0x48')]['id']}},_0x41d742={};_0x41d742['model']=_['keys'](db[_0x3d9b('0x2f')]['rawAttributes']);_0x41d742['query']=_[_0x3d9b('0x33')](_0x29657a[_0x3d9b('0x34')]);_0x41d742[_0x3d9b('0x35')]=_[_0x3d9b('0x36')](_0x41d742[_0x3d9b('0x32')],_0x41d742[_0x3d9b('0x34')]);_0x8e5a4f[_0x3d9b('0x37')]=_[_0x3d9b('0x36')](_0x41d742['model'],qs['fields'](_0x29657a[_0x3d9b('0x34')][_0x3d9b('0x38')]));_0x8e5a4f[_0x3d9b('0x37')]=_0x8e5a4f[_0x3d9b('0x37')][_0x3d9b('0x39')]?_0x8e5a4f['attributes']:_0x41d742[_0x3d9b('0x32')];if(_0x29657a[_0x3d9b('0x34')]['includeAll']){_0x8e5a4f['include']=[{'all':!![]}];}_0x8e5a4f=_['merge']({},_0x8e5a4f,_0x29657a[_0x3d9b('0x49')]);return db[_0x3d9b('0x2f')][_0x3d9b('0x4a')](_0x8e5a4f)[_0x3d9b('0x26')](handleEntityNotFound(_0x1daea9,null))[_0x3d9b('0x26')](respondWithResult(_0x1daea9,null))[_0x3d9b('0x46')](handleError(_0x1daea9,null));};exports[_0x3d9b('0x4b')]=function(_0x310dc9,_0x9b4610){return db[_0x3d9b('0x2f')][_0x3d9b('0x4b')](_0x310dc9[_0x3d9b('0x4c')],{})['then'](respondWithResult(_0x9b4610,0xc9))[_0x3d9b('0x46')](handleError(_0x9b4610,null));};exports[_0x3d9b('0x25')]=function(_0x56b87e,_0x541ddd){if(_0x56b87e[_0x3d9b('0x4c')]['id']){delete _0x56b87e['body']['id'];}return db['ChatInternalMessage'][_0x3d9b('0x4a')]({'where':{'id':_0x56b87e['params']['id']}})[_0x3d9b('0x26')](handleEntityNotFound(_0x541ddd,null))[_0x3d9b('0x26')](saveUpdates(_0x56b87e[_0x3d9b('0x4c')],null))['then'](respondWithResult(_0x541ddd,null))['catch'](handleError(_0x541ddd,null));};exports[_0x3d9b('0x27')]=function(_0x5ceb2d,_0x1ce2e6){return db[_0x3d9b('0x2f')]['find']({'where':{'id':_0x5ceb2d['params']['id']}})['then'](handleEntityNotFound(_0x1ce2e6,null))[_0x3d9b('0x26')](removeEntity(_0x1ce2e6,null))[_0x3d9b('0x46')](handleError(_0x1ce2e6,null));};exports[_0x3d9b('0x4d')]=function(_0x295bf7,_0x21e8e2){return db[_0x3d9b('0x2f')]['describe']()['then'](respondWithResult(_0x21e8e2,null))['catch'](handleError(_0x21e8e2,null));};function wrapUser(_0x11f755){return function(_0xa8c32a){var _0x28880f=_0x11f755[_0x3d9b('0x4e')]({'plain':!![]});_0x28880f[_0x3d9b('0x4f')]=[];if(_0xa8c32a){_0x28880f[_0x3d9b('0x50')]=_0xa8c32a[_0x3d9b('0x51')];_0x28880f[_0x3d9b('0x52')]=_0xa8c32a;}else{_0x28880f[_0x3d9b('0x50')]=moment(0x0)[_0x3d9b('0x53')](_0x3d9b('0x54'));_0x28880f[_0x3d9b('0x52')]={};}return _0x28880f;};}exports[_0x3d9b('0x55')]=function(_0x51f1dd,_0x2d3352,_0x520af0){var _0x4d5ad6=[];return db[_0x3d9b('0x56')][_0x3d9b('0x45')]({'where':{'role':['agent',_0x3d9b('0x57'),_0x3d9b('0x58')]},'attributes':['id','fullname','name','role','userpic','internal','online',_0x3d9b('0x59'),'allowmessenger','showWebBar'],'order':qs[_0x3d9b('0x3c')](_0x3d9b('0x5a')),'include':[{'model':db[_0x3d9b('0x5b')],'as':'VoiceQueues','attributes':['id','name',_0x3d9b('0x41')],'through':{'attributes':[]}}]})[_0x3d9b('0x26')](function(_0x3c71f0){if(_0x3c71f0){var _0x46b292=_0x51f1dd['user'][_0x3d9b('0x4e')]({'plain':!![]});if(!_0x46b292)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x46b292['role']===_0x3d9b('0x58')){return db[_0x3d9b('0x5c')][_0x3d9b('0x4a')]({'where':{'name':_0x3d9b('0x5d'),'userProfileId':_0x46b292['userProfileId']},'raw':!![]})[_0x3d9b('0x26')](function(_0x3bfd45){if(_0x3bfd45){if(_0x3bfd45['autoAssociation']===0x0){return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x3bfd45['id']},'raw':!![]})['then'](function(_0x543feb){var _0x23b7e=[];if(_[_0x3d9b('0x5e')](_0x543feb)){_0x23b7e=_[_0x3d9b('0x3f')](_0x3c71f0,function(_0x17714f){if(_0x17714f[_0x3d9b('0x5f')]!==_0x3d9b('0x60')){return _0x17714f;}});return _0x23b7e;}else{for(var _0x50e325=0x0;_0x50e325<_0x3c71f0[_0x3d9b('0x39')];_0x50e325++){var _0x4ac99b=_0x3c71f0[_0x50e325];if(_0x4ac99b[_0x3d9b('0x5f')]===_0x3d9b('0x60')){var _0x1bb477=_[_0x3d9b('0x4a')](_0x543feb,function(_0x5117e1){return _0x5117e1[_0x3d9b('0x61')]===_0x4ac99b['id'];});if(_0x1bb477)_0x23b7e[_0x3d9b('0x62')](_0x4ac99b);}else{_0x23b7e[_0x3d9b('0x62')](_0x4ac99b);}}return _0x23b7e;}});}else{return _0x3c71f0;}}else{var _0x3ae639=_[_0x3d9b('0x3f')](_0x3c71f0,function(_0x244a0a){if(_0x244a0a[_0x3d9b('0x5f')]!==_0x3d9b('0x60')){return _0x244a0a;}});return _0x3ae639;}});}else{return _0x3c71f0;}}})[_0x3d9b('0x26')](function(_0x53eb25){var _0xcd2763=[];if(_0x53eb25){_0x4d5ad6=_0x53eb25;for(var _0x4a2ecc=0x0;_0x4a2ecc<_0x53eb25[_0x3d9b('0x39')];_0x4a2ecc+=0x1){_0x4d5ad6[_0x4a2ecc][_0x3d9b('0x4f')]=[];_0xcd2763['push'](db[_0x3d9b('0x2f')][_0x3d9b('0x4a')]({'where':{'FromId':[_0x51f1dd[_0x3d9b('0x58')]['id'],_0x53eb25[_0x4a2ecc]['id']],'ToId':[_0x51f1dd[_0x3d9b('0x58')]['id'],_0x53eb25[_0x4a2ecc]['id']],'ChatGroupId':null},'attributes':['id',_0x3d9b('0x51'),_0x3d9b('0x63'),_0x3d9b('0x64'),_0x3d9b('0x65'),_0x3d9b('0x4c')],'order':qs[_0x3d9b('0x3c')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x3d9b('0x26')](wrapUser(_0x53eb25[_0x4a2ecc])));}return BPromise[_0x3d9b('0x66')](_0xcd2763);}return[];})[_0x3d9b('0x26')](function(_0x6d893f){return{'rows':_0x6d893f,'count':_0x6d893f[_0x3d9b('0x39')]};})[_0x3d9b('0x26')](respondWithResult(_0x2d3352,null))['catch'](handleError(_0x2d3352,null));};