Built motion from commit da24aabd.|2.6.20
[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 _0x660e=['includeAll','include','findAll','rows','catch','show','params','options','find','body','update','describe','messages','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','user','internal','lastLoginAt','allowmessenger','showWebBar','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Agents','autoAssociation','isEmpty','agent','length','resourceId','push','FromId','ToId','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','ChatInternalMessage','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter'];(function(_0x11786a,_0xbbf2d5){var _0x4f59ae=function(_0x2d2d84){while(--_0x2d2d84){_0x11786a['push'](_0x11786a['shift']());}};_0x4f59ae(++_0xbbf2d5);}(_0x660e,0xf4));var _0xe660=function(_0x439a85,_0x4b8860){_0x439a85=_0x439a85-0x0;var _0x351741=_0x660e[_0x439a85];return _0x351741;};'use strict';var emlformat=require(_0xe660('0x0'));var rimraf=require(_0xe660('0x1'));var zipdir=require(_0xe660('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe660('0x3'));var moment=require(_0xe660('0x4'));var BPromise=require(_0xe660('0x5'));var Mustache=require(_0xe660('0x6'));var util=require(_0xe660('0x7'));var path=require(_0xe660('0x8'));var sox=require(_0xe660('0x9'));var csv=require(_0xe660('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe660('0xb'));var _=require(_0xe660('0xc'));var squel=require(_0xe660('0xd'));var crypto=require(_0xe660('0xe'));var jsforce=require(_0xe660('0xf'));var deskjs=require(_0xe660('0x10'));var toCsv=require('to-csv');var querystring=require(_0xe660('0x11'));var Papa=require(_0xe660('0x12'));var Redis=require('ioredis');var authService=require(_0xe660('0x13'));var qs=require(_0xe660('0x14'));var as=require(_0xe660('0x15'));var hardwareService=require(_0xe660('0x16'));var logger=require('../../config/logger')(_0xe660('0x17'));var utils=require('../../config/utils');var config=require(_0xe660('0x18'));var licenseUtil=require(_0xe660('0x19'));var db=require('../../mysqldb')['db'];config[_0xe660('0x1a')]=_['defaults'](config['redis'],{'host':_0xe660('0x1b'),'port':0x18eb});var socket=require(_0xe660('0x1c'))(new Redis(config[_0xe660('0x1a')]));require(_0xe660('0x1d'))['register'](socket);function respondWithStatusCode(_0x1189d4,_0x471dac){_0x471dac=_0x471dac||0xcc;return function(_0xbb65f1){if(_0xbb65f1){return _0x1189d4[_0xe660('0x1e')](_0x471dac);}return _0x1189d4[_0xe660('0x1f')](_0x471dac)[_0xe660('0x20')]();};}function respondWithResult(_0x218968,_0x257a67){_0x257a67=_0x257a67||0xc8;return function(_0xd7f513){if(_0xd7f513){return _0x218968['status'](_0x257a67)[_0xe660('0x21')](_0xd7f513);}};}function respondWithFilteredResult(_0x13ef5c,_0xe6fa72){return function(_0x5bc38e){if(_0x5bc38e){var _0x10ed81=typeof _0xe6fa72[_0xe660('0x22')]==='undefined'&&typeof _0xe6fa72['limit']===_0xe660('0x23');var _0x357f98=_0x5bc38e[_0xe660('0x24')];var _0x124fb9=_0x10ed81?0x0:_0xe6fa72[_0xe660('0x22')];var _0x61e01e=_0x10ed81?_0x5bc38e[_0xe660('0x24')]:_0xe6fa72['offset']+_0xe6fa72[_0xe660('0x25')];var _0x174163;if(_0x61e01e>=_0x357f98){_0x61e01e=_0x357f98;_0x174163=0xc8;}else{_0x174163=0xce;}_0x13ef5c[_0xe660('0x1f')](_0x174163);return _0x13ef5c[_0xe660('0x26')](_0xe660('0x27'),_0x124fb9+'-'+_0x61e01e+'/'+_0x357f98)[_0xe660('0x21')](_0x5bc38e);}return null;};}function patchUpdates(_0x285ea1){return function(_0x1a3d14){try{jsonpatch[_0xe660('0x28')](_0x1a3d14,_0x285ea1,!![]);}catch(_0x4d2d48){return BPromise[_0xe660('0x29')](_0x4d2d48);}return _0x1a3d14[_0xe660('0x2a')]();};}function saveUpdates(_0x2fc869,_0x2faa60){return function(_0x528cb4){if(_0x528cb4){return _0x528cb4['update'](_0x2fc869)[_0xe660('0x2b')](function(_0x2533f5){return _0x2533f5;});}return null;};}function removeEntity(_0x3a54f1,_0x2a82f7){return function(_0xf9aee3){if(_0xf9aee3){return _0xf9aee3[_0xe660('0x2c')]()[_0xe660('0x2b')](function(){_0x3a54f1[_0xe660('0x1f')](0xcc)[_0xe660('0x20')]();});}};}function handleEntityNotFound(_0x76e3a7,_0x8d1c37){return function(_0x757227){if(!_0x757227){_0x76e3a7['sendStatus'](0x194);}return _0x757227;};}function handleError(_0xe4260d,_0x26135c){_0x26135c=_0x26135c||0x1f4;return function(_0x31d7a2){logger[_0xe660('0x2d')](_0x31d7a2[_0xe660('0x2e')]);if(_0x31d7a2['name']){delete _0x31d7a2[_0xe660('0x2f')];}_0xe4260d[_0xe660('0x1f')](_0x26135c)[_0xe660('0x30')](_0x31d7a2);};}exports[_0xe660('0x31')]=function(_0x5ef8e0,_0x30d0ad){var _0x1fc543={},_0x18234b={},_0x4b7d25={'count':0x0,'rows':[]};var _0x12c6ba=_['map'](db[_0xe660('0x32')][_0xe660('0x33')],function(_0x5dab59){return{'name':_0x5dab59[_0xe660('0x34')],'type':_0x5dab59[_0xe660('0x35')]['key']};});_0x18234b[_0xe660('0x36')]=_[_0xe660('0x37')](_0x12c6ba,_0xe660('0x2f'));_0x18234b[_0xe660('0x38')]=_[_0xe660('0x39')](_0x5ef8e0[_0xe660('0x38')]);_0x18234b[_0xe660('0x3a')]=_[_0xe660('0x3b')](_0x18234b['model'],_0x18234b[_0xe660('0x38')]);_0x1fc543['attributes']=_[_0xe660('0x3b')](_0x18234b[_0xe660('0x36')],qs[_0xe660('0x3c')](_0x5ef8e0['query'][_0xe660('0x3c')]));_0x1fc543['attributes']=_0x1fc543[_0xe660('0x3d')]['length']?_0x1fc543[_0xe660('0x3d')]:_0x18234b[_0xe660('0x36')];if(!_0x5ef8e0[_0xe660('0x38')][_0xe660('0x3e')](_0xe660('0x3f'))){_0x1fc543[_0xe660('0x25')]=qs[_0xe660('0x25')](_0x5ef8e0[_0xe660('0x38')]['limit']);_0x1fc543[_0xe660('0x22')]=qs['offset'](_0x5ef8e0[_0xe660('0x38')][_0xe660('0x22')]);}_0x1fc543[_0xe660('0x40')]=qs[_0xe660('0x41')](_0x5ef8e0[_0xe660('0x38')]['sort']);_0x1fc543[_0xe660('0x42')]=qs[_0xe660('0x3a')](_[_0xe660('0x43')](_0x5ef8e0[_0xe660('0x38')],_0x18234b[_0xe660('0x3a')]),_0x12c6ba);if(_0x5ef8e0[_0xe660('0x38')]['filter']){_0x1fc543[_0xe660('0x42')]=_[_0xe660('0x44')](_0x1fc543[_0xe660('0x42')],{'$or':_[_0xe660('0x37')](_0x12c6ba,function(_0x14db31){if(_0x14db31[_0xe660('0x35')]!==_0xe660('0x45')){var _0x1884b3={};_0x1884b3[_0x14db31['name']]={'$like':'%'+_0x5ef8e0['query'][_0xe660('0x46')]+'%'};return _0x1884b3;}})});}_0x1fc543=_[_0xe660('0x44')]({},_0x1fc543,_0x5ef8e0['options']);var _0x30fdad={'where':_0x1fc543[_0xe660('0x42')]};return db[_0xe660('0x32')][_0xe660('0x24')](_0x30fdad)[_0xe660('0x2b')](function(_0x4a5ee0){_0x4b7d25[_0xe660('0x24')]=_0x4a5ee0;if(_0x5ef8e0[_0xe660('0x38')][_0xe660('0x47')]){_0x1fc543[_0xe660('0x48')]=[{'all':!![]}];}return db[_0xe660('0x32')][_0xe660('0x49')](_0x1fc543);})[_0xe660('0x2b')](function(_0xdd20b1){_0x4b7d25[_0xe660('0x4a')]=_0xdd20b1;return _0x4b7d25;})['then'](respondWithFilteredResult(_0x30d0ad,_0x1fc543))[_0xe660('0x4b')](handleError(_0x30d0ad,null));};exports[_0xe660('0x4c')]=function(_0x517792,_0x56f3ae){var _0x3943f4={'raw':!![],'where':{'id':_0x517792[_0xe660('0x4d')]['id']}},_0x2e344f={};_0x2e344f[_0xe660('0x36')]=_['keys'](db[_0xe660('0x32')][_0xe660('0x33')]);_0x2e344f['query']=_[_0xe660('0x39')](_0x517792[_0xe660('0x38')]);_0x2e344f['filters']=_['intersection'](_0x2e344f[_0xe660('0x36')],_0x2e344f['query']);_0x3943f4[_0xe660('0x3d')]=_['intersection'](_0x2e344f[_0xe660('0x36')],qs[_0xe660('0x3c')](_0x517792['query'][_0xe660('0x3c')]));_0x3943f4[_0xe660('0x3d')]=_0x3943f4[_0xe660('0x3d')]['length']?_0x3943f4[_0xe660('0x3d')]:_0x2e344f[_0xe660('0x36')];if(_0x517792[_0xe660('0x38')][_0xe660('0x47')]){_0x3943f4[_0xe660('0x48')]=[{'all':!![]}];}_0x3943f4=_['merge']({},_0x3943f4,_0x517792[_0xe660('0x4e')]);return db[_0xe660('0x32')][_0xe660('0x4f')](_0x3943f4)[_0xe660('0x2b')](handleEntityNotFound(_0x56f3ae,null))[_0xe660('0x2b')](respondWithResult(_0x56f3ae,null))[_0xe660('0x4b')](handleError(_0x56f3ae,null));};exports['create']=function(_0x5bca62,_0x1cc312){return db[_0xe660('0x32')]['create'](_0x5bca62[_0xe660('0x50')],{})[_0xe660('0x2b')](respondWithResult(_0x1cc312,0xc9))['catch'](handleError(_0x1cc312,null));};exports[_0xe660('0x51')]=function(_0x483a9a,_0x59f7aa){if(_0x483a9a[_0xe660('0x50')]['id']){delete _0x483a9a[_0xe660('0x50')]['id'];}return db['ChatInternalMessage'][_0xe660('0x4f')]({'where':{'id':_0x483a9a[_0xe660('0x4d')]['id']}})[_0xe660('0x2b')](handleEntityNotFound(_0x59f7aa,null))['then'](saveUpdates(_0x483a9a[_0xe660('0x50')],null))[_0xe660('0x2b')](respondWithResult(_0x59f7aa,null))['catch'](handleError(_0x59f7aa,null));};exports[_0xe660('0x2c')]=function(_0x334368,_0x12a67c){return db['ChatInternalMessage'][_0xe660('0x4f')]({'where':{'id':_0x334368[_0xe660('0x4d')]['id']}})[_0xe660('0x2b')](handleEntityNotFound(_0x12a67c,null))[_0xe660('0x2b')](removeEntity(_0x12a67c,null))[_0xe660('0x4b')](handleError(_0x12a67c,null));};exports[_0xe660('0x52')]=function(_0x2a6228,_0x11f0b3){return db[_0xe660('0x32')][_0xe660('0x52')]()['then'](respondWithResult(_0x11f0b3,null))[_0xe660('0x4b')](handleError(_0x11f0b3,null));};function wrapUser(_0x229fb0){return function(_0x19dfc4){var _0x53930b=_0x229fb0['get']({'plain':!![]});_0x53930b[_0xe660('0x53')]=[];if(_0x19dfc4){_0x53930b['lastMessageAt']=_0x19dfc4['createdAt'];_0x53930b[_0xe660('0x54')]=_0x19dfc4;}else{_0x53930b['lastMessageAt']=moment(0x0)[_0xe660('0x55')](_0xe660('0x56'));_0x53930b[_0xe660('0x54')]={};}return _0x53930b;};}exports[_0xe660('0x57')]=function(_0x4dd743,_0x49f7a4,_0x3982cd){var _0x451f87=[];return db[_0xe660('0x58')][_0xe660('0x49')]({'where':{'role':['agent','admin',_0xe660('0x59')]},'attributes':['id','fullname',_0xe660('0x2f'),'role','userpic',_0xe660('0x5a'),'online',_0xe660('0x5b'),_0xe660('0x5c'),_0xe660('0x5d')],'order':qs[_0xe660('0x41')]('-online'),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id','name',_0xe660('0x35')],'through':{'attributes':[]}}]})[_0xe660('0x2b')](function(_0x3a500e){if(_0x3a500e){var _0x5c0528=_0x4dd743['user']['get']({'plain':!![]});if(!_0x5c0528)throw new Error(_0xe660('0x5e'));if(_0x5c0528[_0xe660('0x5f')]===_0xe660('0x59')){return db['UserProfileSection'][_0xe660('0x4f')]({'where':{'name':_0xe660('0x60'),'userProfileId':_0x5c0528['userProfileId']},'raw':!![]})['then'](function(_0x184b25){if(_0x184b25){if(_0x184b25[_0xe660('0x61')]===0x0){return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x184b25['id']},'raw':!![]})['then'](function(_0xd2f8e9){var _0x136f0e=[];if(_[_0xe660('0x62')](_0xd2f8e9)){_0x136f0e=_['filter'](_0x3a500e,function(_0x2fc6a8){if(_0x2fc6a8[_0xe660('0x5f')]!==_0xe660('0x63')){return _0x2fc6a8;}});return _0x136f0e;}else{for(var _0x3a60ff=0x0;_0x3a60ff<_0x3a500e[_0xe660('0x64')];_0x3a60ff++){var _0x438845=_0x3a500e[_0x3a60ff];if(_0x438845[_0xe660('0x5f')]==='agent'){var _0x3929b8=_[_0xe660('0x4f')](_0xd2f8e9,function(_0x4ec1ea){return _0x4ec1ea[_0xe660('0x65')]===_0x438845['id'];});if(_0x3929b8)_0x136f0e[_0xe660('0x66')](_0x438845);}else{_0x136f0e['push'](_0x438845);}}return _0x136f0e;}});}else{return _0x3a500e;}}else{var _0x56c7ca=_[_0xe660('0x46')](_0x3a500e,function(_0xd941bb){if(_0xd941bb[_0xe660('0x5f')]!=='agent'){return _0xd941bb;}});return _0x56c7ca;}});}else{return _0x3a500e;}}})['then'](function(_0x42c58d){var _0x343497=[];if(_0x42c58d){_0x451f87=_0x42c58d;for(var _0x36dff7=0x0;_0x36dff7<_0x42c58d[_0xe660('0x64')];_0x36dff7+=0x1){_0x451f87[_0x36dff7]['messages']=[];_0x343497[_0xe660('0x66')](db[_0xe660('0x32')][_0xe660('0x4f')]({'where':{'FromId':[_0x4dd743['user']['id'],_0x42c58d[_0x36dff7]['id']],'ToId':[_0x4dd743[_0xe660('0x59')]['id'],_0x42c58d[_0x36dff7]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xe660('0x67'),_0xe660('0x68'),'read',_0xe660('0x50')],'order':qs['sort']('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xe660('0x2b')](wrapUser(_0x42c58d[_0x36dff7])));}return BPromise['all'](_0x343497);}return[];})[_0xe660('0x2b')](function(_0x3c4351){return{'rows':_0x3c4351,'count':_0x3c4351[_0xe660('0x64')]};})[_0xe660('0x2b')](respondWithResult(_0x49f7a4,null))[_0xe660('0x4b')](handleError(_0x49f7a4,null));};