578cfe0b1411aa56be7a402398599e9f8d7a302d
[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 _0x33fc=['includeAll','include','rows','show','body','catch','find','get','messages','lastMessageAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','user','internal','showWebBar','-online','VoiceQueue','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Agents','userProfileId','autoAssociation','agent','push','createdAt','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x33fc,0xf8));var _0xc33f=function(_0x53f1c1,_0x6f6512){_0x53f1c1=_0x53f1c1-0x0;var _0x464d14=_0x33fc[_0x53f1c1];return _0x464d14;};'use strict';var emlformat=require(_0xc33f('0x0'));var rimraf=require(_0xc33f('0x1'));var zipdir=require(_0xc33f('0x2'));var jsonpatch=require(_0xc33f('0x3'));var rp=require('request-promise');var moment=require(_0xc33f('0x4'));var BPromise=require(_0xc33f('0x5'));var Mustache=require(_0xc33f('0x6'));var util=require(_0xc33f('0x7'));var path=require(_0xc33f('0x8'));var sox=require(_0xc33f('0x9'));var csv=require(_0xc33f('0xa'));var ejs=require(_0xc33f('0xb'));var fs=require('fs');var fs_extra=require(_0xc33f('0xc'));var _=require(_0xc33f('0xd'));var squel=require('squel');var crypto=require(_0xc33f('0xe'));var jsforce=require(_0xc33f('0xf'));var deskjs=require(_0xc33f('0x10'));var toCsv=require(_0xc33f('0xa'));var querystring=require(_0xc33f('0x11'));var Papa=require('papaparse');var Redis=require(_0xc33f('0x12'));var authService=require(_0xc33f('0x13'));var qs=require(_0xc33f('0x14'));var as=require(_0xc33f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc33f('0x16'))(_0xc33f('0x17'));var utils=require(_0xc33f('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc33f('0x19'));var db=require('../../mysqldb')['db'];config[_0xc33f('0x1a')]=_[_0xc33f('0x1b')](config[_0xc33f('0x1a')],{'host':_0xc33f('0x1c'),'port':0x18eb});var socket=require(_0xc33f('0x1d'))(new Redis(config[_0xc33f('0x1a')]));require('./chatInternalMessage.socket')[_0xc33f('0x1e')](socket);function respondWithStatusCode(_0x3333d9,_0x5ef3e4){_0x5ef3e4=_0x5ef3e4||0xcc;return function(_0x444bdf){if(_0x444bdf){return _0x3333d9[_0xc33f('0x1f')](_0x5ef3e4);}return _0x3333d9[_0xc33f('0x20')](_0x5ef3e4)[_0xc33f('0x21')]();};}function respondWithResult(_0x4b19a8,_0x325f2c){_0x325f2c=_0x325f2c||0xc8;return function(_0x24f981){if(_0x24f981){return _0x4b19a8[_0xc33f('0x20')](_0x325f2c)[_0xc33f('0x22')](_0x24f981);}};}function respondWithFilteredResult(_0x1eac45,_0x5ba242){return function(_0x3ba507){if(_0x3ba507){var _0x8113d4=typeof _0x5ba242['offset']===_0xc33f('0x23')&&typeof _0x5ba242[_0xc33f('0x24')]==='undefined';var _0xd9123=_0x3ba507['count'];var _0x4cd80b=_0x8113d4?0x0:_0x5ba242['offset'];var _0x2c5443=_0x8113d4?_0x3ba507[_0xc33f('0x25')]:_0x5ba242[_0xc33f('0x26')]+_0x5ba242['limit'];var _0x386c94;if(_0x2c5443>=_0xd9123){_0x2c5443=_0xd9123;_0x386c94=0xc8;}else{_0x386c94=0xce;}_0x1eac45[_0xc33f('0x20')](_0x386c94);return _0x1eac45[_0xc33f('0x27')](_0xc33f('0x28'),_0x4cd80b+'-'+_0x2c5443+'/'+_0xd9123)[_0xc33f('0x22')](_0x3ba507);}return null;};}function patchUpdates(_0xf5cbf7){return function(_0x4e9d5a){try{jsonpatch[_0xc33f('0x29')](_0x4e9d5a,_0xf5cbf7,!![]);}catch(_0x524067){return BPromise['reject'](_0x524067);}return _0x4e9d5a['save']();};}function saveUpdates(_0x2201bf,_0x29fb17){return function(_0x34c74c){if(_0x34c74c){return _0x34c74c[_0xc33f('0x2a')](_0x2201bf)[_0xc33f('0x2b')](function(_0x33eb55){return _0x33eb55;});}return null;};}function removeEntity(_0xafb854,_0x533163){return function(_0x52af30){if(_0x52af30){return _0x52af30[_0xc33f('0x2c')]()[_0xc33f('0x2b')](function(){_0xafb854[_0xc33f('0x20')](0xcc)[_0xc33f('0x21')]();});}};}function handleEntityNotFound(_0x3c73d9,_0x43fcd7){return function(_0x459d28){if(!_0x459d28){_0x3c73d9[_0xc33f('0x1f')](0x194);}return _0x459d28;};}function handleError(_0x4a452f,_0x5dbd1f){_0x5dbd1f=_0x5dbd1f||0x1f4;return function(_0x394fba){logger[_0xc33f('0x2d')](_0x394fba[_0xc33f('0x2e')]);if(_0x394fba[_0xc33f('0x2f')]){delete _0x394fba[_0xc33f('0x2f')];}_0x4a452f[_0xc33f('0x20')](_0x5dbd1f)[_0xc33f('0x30')](_0x394fba);};}exports[_0xc33f('0x31')]=function(_0x1846bd,_0x1db784){var _0x5b10c0={},_0x2f1641={},_0x3f1dd4={'count':0x0,'rows':[]};var _0x486385=_[_0xc33f('0x32')](db[_0xc33f('0x33')][_0xc33f('0x34')],function(_0x53770b){return{'name':_0x53770b[_0xc33f('0x35')],'type':_0x53770b['type'][_0xc33f('0x36')]};});_0x2f1641[_0xc33f('0x37')]=_['map'](_0x486385,_0xc33f('0x2f'));_0x2f1641['query']=_[_0xc33f('0x38')](_0x1846bd[_0xc33f('0x39')]);_0x2f1641[_0xc33f('0x3a')]=_[_0xc33f('0x3b')](_0x2f1641['model'],_0x2f1641[_0xc33f('0x39')]);_0x5b10c0['attributes']=_[_0xc33f('0x3b')](_0x2f1641['model'],qs[_0xc33f('0x3c')](_0x1846bd[_0xc33f('0x39')][_0xc33f('0x3c')]));_0x5b10c0[_0xc33f('0x3d')]=_0x5b10c0[_0xc33f('0x3d')][_0xc33f('0x3e')]?_0x5b10c0[_0xc33f('0x3d')]:_0x2f1641[_0xc33f('0x37')];if(!_0x1846bd['query'][_0xc33f('0x3f')]('nolimit')){_0x5b10c0[_0xc33f('0x24')]=qs['limit'](_0x1846bd[_0xc33f('0x39')][_0xc33f('0x24')]);_0x5b10c0[_0xc33f('0x26')]=qs[_0xc33f('0x26')](_0x1846bd[_0xc33f('0x39')][_0xc33f('0x26')]);}_0x5b10c0[_0xc33f('0x40')]=qs[_0xc33f('0x41')](_0x1846bd[_0xc33f('0x39')]['sort']);_0x5b10c0[_0xc33f('0x42')]=qs[_0xc33f('0x3a')](_[_0xc33f('0x43')](_0x1846bd['query'],_0x2f1641[_0xc33f('0x3a')]),_0x486385);if(_0x1846bd[_0xc33f('0x39')][_0xc33f('0x44')]){_0x5b10c0[_0xc33f('0x42')]=_[_0xc33f('0x45')](_0x5b10c0[_0xc33f('0x42')],{'$or':_[_0xc33f('0x32')](_0x486385,function(_0x1f588a){if(_0x1f588a[_0xc33f('0x46')]!==_0xc33f('0x47')){var _0xd591ca={};_0xd591ca[_0x1f588a['name']]={'$like':'%'+_0x1846bd[_0xc33f('0x39')][_0xc33f('0x44')]+'%'};return _0xd591ca;}})});}_0x5b10c0=_['merge']({},_0x5b10c0,_0x1846bd[_0xc33f('0x48')]);var _0x1333bf={'where':_0x5b10c0[_0xc33f('0x42')]};return db[_0xc33f('0x33')][_0xc33f('0x25')](_0x1333bf)[_0xc33f('0x2b')](function(_0x51b293){_0x3f1dd4[_0xc33f('0x25')]=_0x51b293;if(_0x1846bd[_0xc33f('0x39')][_0xc33f('0x49')]){_0x5b10c0[_0xc33f('0x4a')]=[{'all':!![]}];}return db[_0xc33f('0x33')]['findAll'](_0x5b10c0);})[_0xc33f('0x2b')](function(_0x472bea){_0x3f1dd4[_0xc33f('0x4b')]=_0x472bea;return _0x3f1dd4;})[_0xc33f('0x2b')](respondWithFilteredResult(_0x1db784,_0x5b10c0))['catch'](handleError(_0x1db784,null));};exports[_0xc33f('0x4c')]=function(_0x461cb1,_0x580496){var _0x28c786={'raw':!![],'where':{'id':_0x461cb1['params']['id']}},_0x1db9bd={};_0x1db9bd[_0xc33f('0x37')]=_[_0xc33f('0x38')](db[_0xc33f('0x33')][_0xc33f('0x34')]);_0x1db9bd[_0xc33f('0x39')]=_[_0xc33f('0x38')](_0x461cb1[_0xc33f('0x39')]);_0x1db9bd['filters']=_['intersection'](_0x1db9bd[_0xc33f('0x37')],_0x1db9bd['query']);_0x28c786[_0xc33f('0x3d')]=_['intersection'](_0x1db9bd[_0xc33f('0x37')],qs[_0xc33f('0x3c')](_0x461cb1[_0xc33f('0x39')][_0xc33f('0x3c')]));_0x28c786[_0xc33f('0x3d')]=_0x28c786[_0xc33f('0x3d')][_0xc33f('0x3e')]?_0x28c786[_0xc33f('0x3d')]:_0x1db9bd['model'];if(_0x461cb1[_0xc33f('0x39')]['includeAll']){_0x28c786['include']=[{'all':!![]}];}_0x28c786=_[_0xc33f('0x45')]({},_0x28c786,_0x461cb1[_0xc33f('0x48')]);return db[_0xc33f('0x33')]['find'](_0x28c786)[_0xc33f('0x2b')](handleEntityNotFound(_0x580496,null))[_0xc33f('0x2b')](respondWithResult(_0x580496,null))['catch'](handleError(_0x580496,null));};exports['create']=function(_0x38c321,_0x19ecfc){return db[_0xc33f('0x33')]['create'](_0x38c321[_0xc33f('0x4d')],{})[_0xc33f('0x2b')](respondWithResult(_0x19ecfc,0xc9))[_0xc33f('0x4e')](handleError(_0x19ecfc,null));};exports[_0xc33f('0x2a')]=function(_0x20e1f1,_0x4f385b){if(_0x20e1f1[_0xc33f('0x4d')]['id']){delete _0x20e1f1[_0xc33f('0x4d')]['id'];}return db[_0xc33f('0x33')]['find']({'where':{'id':_0x20e1f1['params']['id']}})['then'](handleEntityNotFound(_0x4f385b,null))['then'](saveUpdates(_0x20e1f1['body'],null))[_0xc33f('0x2b')](respondWithResult(_0x4f385b,null))[_0xc33f('0x4e')](handleError(_0x4f385b,null));};exports[_0xc33f('0x2c')]=function(_0xda574e,_0x25cf8e){return db['ChatInternalMessage'][_0xc33f('0x4f')]({'where':{'id':_0xda574e['params']['id']}})[_0xc33f('0x2b')](handleEntityNotFound(_0x25cf8e,null))['then'](removeEntity(_0x25cf8e,null))['catch'](handleError(_0x25cf8e,null));};exports['describe']=function(_0x6d8b55,_0x19a277){return db[_0xc33f('0x33')]['describe']()[_0xc33f('0x2b')](respondWithResult(_0x19a277,null))[_0xc33f('0x4e')](handleError(_0x19a277,null));};function wrapUser(_0xbfc631){return function(_0x460181){var _0x3b8e54=_0xbfc631[_0xc33f('0x50')]({'plain':!![]});_0x3b8e54[_0xc33f('0x51')]=[];if(_0x460181){_0x3b8e54[_0xc33f('0x52')]=_0x460181['createdAt'];_0x3b8e54[_0xc33f('0x53')]=_0x460181;}else{_0x3b8e54[_0xc33f('0x52')]=moment(0x0)[_0xc33f('0x54')](_0xc33f('0x55'));_0x3b8e54[_0xc33f('0x53')]={};}return _0x3b8e54;};}exports[_0xc33f('0x56')]=function(_0x2f8144,_0x14d0f2,_0x389728){var _0x409c31=[];return db[_0xc33f('0x57')]['findAll']({'where':{'role':['agent','admin',_0xc33f('0x58')]},'attributes':['id','fullname','name','role','userpic',_0xc33f('0x59'),'online','lastLoginAt','allowmessenger',_0xc33f('0x5a')],'order':qs[_0xc33f('0x41')](_0xc33f('0x5b')),'include':[{'model':db[_0xc33f('0x5c')],'as':'VoiceQueues','attributes':['id',_0xc33f('0x2f'),_0xc33f('0x46')],'through':{'attributes':[]}}]})[_0xc33f('0x2b')](function(_0x1e5c5e){if(_0x1e5c5e){var _0x5d970b=_0x2f8144[_0xc33f('0x58')][_0xc33f('0x50')]({'plain':!![]});if(!_0x5d970b)throw new Error(_0xc33f('0x5d'));if(_0x5d970b[_0xc33f('0x5e')]===_0xc33f('0x58')){return db[_0xc33f('0x5f')][_0xc33f('0x4f')]({'where':{'name':_0xc33f('0x60'),'userProfileId':_0x5d970b[_0xc33f('0x61')]},'raw':!![]})[_0xc33f('0x2b')](function(_0x59b9ee){if(_0x59b9ee){if(_0x59b9ee[_0xc33f('0x62')]===0x0){return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x59b9ee['id']},'raw':!![]})[_0xc33f('0x2b')](function(_0x208533){var _0xa8ec99=[];if(_['isEmpty'](_0x208533)){_0xa8ec99=_['filter'](_0x1e5c5e,function(_0x4cc0ee){if(_0x4cc0ee[_0xc33f('0x5e')]!==_0xc33f('0x63')){return _0x4cc0ee;}});return _0xa8ec99;}else{for(var _0x3f1478=0x0;_0x3f1478<_0x1e5c5e[_0xc33f('0x3e')];_0x3f1478++){var _0x27204c=_0x1e5c5e[_0x3f1478];if(_0x27204c['role']===_0xc33f('0x63')){var _0x502adf=_[_0xc33f('0x4f')](_0x208533,function(_0x3e4780){return _0x3e4780['resourceId']===_0x27204c['id'];});if(_0x502adf)_0xa8ec99[_0xc33f('0x64')](_0x27204c);}else{_0xa8ec99['push'](_0x27204c);}}return _0xa8ec99;}});}else{return _0x1e5c5e;}}else{var _0x435087=_['filter'](_0x1e5c5e,function(_0x52c347){if(_0x52c347['role']!==_0xc33f('0x63')){return _0x52c347;}});return _0x435087;}});}else{return _0x1e5c5e;}}})['then'](function(_0x53f142){var _0x429cc6=[];if(_0x53f142){_0x409c31=_0x53f142;for(var _0xd9880c=0x0;_0xd9880c<_0x53f142[_0xc33f('0x3e')];_0xd9880c+=0x1){_0x409c31[_0xd9880c][_0xc33f('0x51')]=[];_0x429cc6[_0xc33f('0x64')](db[_0xc33f('0x33')][_0xc33f('0x4f')]({'where':{'FromId':[_0x2f8144['user']['id'],_0x53f142[_0xd9880c]['id']],'ToId':[_0x2f8144['user']['id'],_0x53f142[_0xd9880c]['id']],'ChatGroupId':null},'attributes':['id',_0xc33f('0x65'),_0xc33f('0x66'),_0xc33f('0x67'),_0xc33f('0x68'),_0xc33f('0x4d')],'order':qs['sort'](_0xc33f('0x69')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xc33f('0x2b')](wrapUser(_0x53f142[_0xd9880c])));}return BPromise[_0xc33f('0x6a')](_0x429cc6);}return[];})[_0xc33f('0x2b')](function(_0x61759){return{'rows':_0x61759,'count':_0x61759[_0xc33f('0x3e')]};})['then'](respondWithResult(_0x14d0f2,null))[_0xc33f('0x4e')](handleError(_0x14d0f2,null));};