ccc4e02e2fa6b157ddab5685f9a732ddebfb7a59
[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 _0xcd06=['type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','create','body','describe','get','messages','lastMessage','lastMessageAt','User','agent','admin','user','fullname','role','userpic','internal','allowmessenger','showWebBar','-online','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','resourceId','push','createdAt','ToId','-createdAt','all','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName'];(function(_0x3ab7f4,_0x42777d){var _0xab156b=function(_0x4ed7e6){while(--_0x4ed7e6){_0x3ab7f4['push'](_0x3ab7f4['shift']());}};_0xab156b(++_0x42777d);}(_0xcd06,0x1e6));var _0x6cd0=function(_0x1a2424,_0x489660){_0x1a2424=_0x1a2424-0x0;var _0x2a9364=_0xcd06[_0x1a2424];return _0x2a9364;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6cd0('0x0'));var zipdir=require(_0x6cd0('0x1'));var jsonpatch=require(_0x6cd0('0x2'));var rp=require('request-promise');var moment=require(_0x6cd0('0x3'));var BPromise=require(_0x6cd0('0x4'));var Mustache=require(_0x6cd0('0x5'));var util=require(_0x6cd0('0x6'));var path=require(_0x6cd0('0x7'));var sox=require(_0x6cd0('0x8'));var csv=require(_0x6cd0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6cd0('0xa'));var _=require(_0x6cd0('0xb'));var squel=require('squel');var crypto=require(_0x6cd0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6cd0('0xd'));var toCsv=require(_0x6cd0('0x9'));var querystring=require(_0x6cd0('0xe'));var Papa=require('papaparse');var Redis=require(_0x6cd0('0xf'));var authService=require(_0x6cd0('0x10'));var qs=require(_0x6cd0('0x11'));var as=require(_0x6cd0('0x12'));var hardwareService=require(_0x6cd0('0x13'));var logger=require(_0x6cd0('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x6cd0('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6cd0('0x16'))['db'];config[_0x6cd0('0x17')]=_[_0x6cd0('0x18')](config[_0x6cd0('0x17')],{'host':_0x6cd0('0x19'),'port':0x18eb});var socket=require(_0x6cd0('0x1a'))(new Redis(config[_0x6cd0('0x17')]));require(_0x6cd0('0x1b'))[_0x6cd0('0x1c')](socket);function respondWithStatusCode(_0x5525d6,_0x1cf735){_0x1cf735=_0x1cf735||0xcc;return function(_0x3607e9){if(_0x3607e9){return _0x5525d6[_0x6cd0('0x1d')](_0x1cf735);}return _0x5525d6[_0x6cd0('0x1e')](_0x1cf735)[_0x6cd0('0x1f')]();};}function respondWithResult(_0x3f7603,_0x3519e0){_0x3519e0=_0x3519e0||0xc8;return function(_0x177ac2){if(_0x177ac2){return _0x3f7603[_0x6cd0('0x1e')](_0x3519e0)[_0x6cd0('0x20')](_0x177ac2);}};}function respondWithFilteredResult(_0x264e4f,_0x2774fc){return function(_0x3640d2){if(_0x3640d2){var _0x211b24=typeof _0x2774fc['offset']==='undefined'&&typeof _0x2774fc[_0x6cd0('0x21')]===_0x6cd0('0x22');var _0x22e2a1=_0x3640d2['count'];var _0x2c7e3b=_0x211b24?0x0:_0x2774fc[_0x6cd0('0x23')];var _0x128c48=_0x211b24?_0x3640d2[_0x6cd0('0x24')]:_0x2774fc[_0x6cd0('0x23')]+_0x2774fc['limit'];var _0x585b5d;if(_0x128c48>=_0x22e2a1){_0x128c48=_0x22e2a1;_0x585b5d=0xc8;}else{_0x585b5d=0xce;}_0x264e4f['status'](_0x585b5d);return _0x264e4f[_0x6cd0('0x25')](_0x6cd0('0x26'),_0x2c7e3b+'-'+_0x128c48+'/'+_0x22e2a1)['json'](_0x3640d2);}return null;};}function patchUpdates(_0x1df480){return function(_0x8c5d5c){try{jsonpatch[_0x6cd0('0x27')](_0x8c5d5c,_0x1df480,!![]);}catch(_0x506d3b){return BPromise[_0x6cd0('0x28')](_0x506d3b);}return _0x8c5d5c[_0x6cd0('0x29')]();};}function saveUpdates(_0x203de7,_0x26a74a){return function(_0x59d82f){if(_0x59d82f){return _0x59d82f[_0x6cd0('0x2a')](_0x203de7)[_0x6cd0('0x2b')](function(_0x534cdf){return _0x534cdf;});}return null;};}function removeEntity(_0xc26ef7,_0x471797){return function(_0x318312){if(_0x318312){return _0x318312[_0x6cd0('0x2c')]()[_0x6cd0('0x2b')](function(){_0xc26ef7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a3251,_0x3b95ec){return function(_0x355cc4){if(!_0x355cc4){_0x4a3251[_0x6cd0('0x1d')](0x194);}return _0x355cc4;};}function handleError(_0x4c7b11,_0x455718){_0x455718=_0x455718||0x1f4;return function(_0x3cfe44){logger[_0x6cd0('0x2d')](_0x3cfe44[_0x6cd0('0x2e')]);if(_0x3cfe44[_0x6cd0('0x2f')]){delete _0x3cfe44[_0x6cd0('0x2f')];}_0x4c7b11['status'](_0x455718)[_0x6cd0('0x30')](_0x3cfe44);};}exports[_0x6cd0('0x31')]=function(_0x479f28,_0x30d42b){var _0x58b60f={},_0x9ba44e={},_0x506c6d={'count':0x0,'rows':[]};var _0x32cb3c=_[_0x6cd0('0x32')](db[_0x6cd0('0x33')][_0x6cd0('0x34')],function(_0x5f15a4){return{'name':_0x5f15a4[_0x6cd0('0x35')],'type':_0x5f15a4[_0x6cd0('0x36')][_0x6cd0('0x37')]};});_0x9ba44e[_0x6cd0('0x38')]=_['map'](_0x32cb3c,_0x6cd0('0x2f'));_0x9ba44e[_0x6cd0('0x39')]=_[_0x6cd0('0x3a')](_0x479f28[_0x6cd0('0x39')]);_0x9ba44e[_0x6cd0('0x3b')]=_['intersection'](_0x9ba44e[_0x6cd0('0x38')],_0x9ba44e[_0x6cd0('0x39')]);_0x58b60f[_0x6cd0('0x3c')]=_[_0x6cd0('0x3d')](_0x9ba44e[_0x6cd0('0x38')],qs[_0x6cd0('0x3e')](_0x479f28['query'][_0x6cd0('0x3e')]));_0x58b60f[_0x6cd0('0x3c')]=_0x58b60f[_0x6cd0('0x3c')][_0x6cd0('0x3f')]?_0x58b60f[_0x6cd0('0x3c')]:_0x9ba44e['model'];if(!_0x479f28['query'][_0x6cd0('0x40')](_0x6cd0('0x41'))){_0x58b60f[_0x6cd0('0x21')]=qs[_0x6cd0('0x21')](_0x479f28[_0x6cd0('0x39')][_0x6cd0('0x21')]);_0x58b60f[_0x6cd0('0x23')]=qs['offset'](_0x479f28[_0x6cd0('0x39')][_0x6cd0('0x23')]);}_0x58b60f[_0x6cd0('0x42')]=qs[_0x6cd0('0x43')](_0x479f28[_0x6cd0('0x39')][_0x6cd0('0x43')]);_0x58b60f[_0x6cd0('0x44')]=qs['filters'](_['pick'](_0x479f28[_0x6cd0('0x39')],_0x9ba44e[_0x6cd0('0x3b')]),_0x32cb3c);if(_0x479f28[_0x6cd0('0x39')][_0x6cd0('0x45')]){_0x58b60f[_0x6cd0('0x44')]=_[_0x6cd0('0x46')](_0x58b60f[_0x6cd0('0x44')],{'$or':_[_0x6cd0('0x32')](_0x32cb3c,function(_0x3a913a){if(_0x3a913a[_0x6cd0('0x36')]!==_0x6cd0('0x47')){var _0x112d16={};_0x112d16[_0x3a913a[_0x6cd0('0x2f')]]={'$like':'%'+_0x479f28[_0x6cd0('0x39')][_0x6cd0('0x45')]+'%'};return _0x112d16;}})});}_0x58b60f=_[_0x6cd0('0x46')]({},_0x58b60f,_0x479f28[_0x6cd0('0x48')]);var _0x30eb12={'where':_0x58b60f[_0x6cd0('0x44')]};return db[_0x6cd0('0x33')][_0x6cd0('0x24')](_0x30eb12)['then'](function(_0x391584){_0x506c6d[_0x6cd0('0x24')]=_0x391584;if(_0x479f28['query'][_0x6cd0('0x49')]){_0x58b60f[_0x6cd0('0x4a')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0x6cd0('0x4b')](_0x58b60f);})[_0x6cd0('0x2b')](function(_0x397f39){_0x506c6d['rows']=_0x397f39;return _0x506c6d;})['then'](respondWithFilteredResult(_0x30d42b,_0x58b60f))['catch'](handleError(_0x30d42b,null));};exports[_0x6cd0('0x4c')]=function(_0x36ffa8,_0x445a88){var _0x2e94e4={'raw':!![],'where':{'id':_0x36ffa8[_0x6cd0('0x4d')]['id']}},_0x1409f4={};_0x1409f4['model']=_[_0x6cd0('0x3a')](db[_0x6cd0('0x33')][_0x6cd0('0x34')]);_0x1409f4[_0x6cd0('0x39')]=_['keys'](_0x36ffa8[_0x6cd0('0x39')]);_0x1409f4[_0x6cd0('0x3b')]=_[_0x6cd0('0x3d')](_0x1409f4[_0x6cd0('0x38')],_0x1409f4[_0x6cd0('0x39')]);_0x2e94e4['attributes']=_[_0x6cd0('0x3d')](_0x1409f4[_0x6cd0('0x38')],qs[_0x6cd0('0x3e')](_0x36ffa8[_0x6cd0('0x39')][_0x6cd0('0x3e')]));_0x2e94e4['attributes']=_0x2e94e4[_0x6cd0('0x3c')][_0x6cd0('0x3f')]?_0x2e94e4['attributes']:_0x1409f4[_0x6cd0('0x38')];if(_0x36ffa8[_0x6cd0('0x39')]['includeAll']){_0x2e94e4[_0x6cd0('0x4a')]=[{'all':!![]}];}_0x2e94e4=_[_0x6cd0('0x46')]({},_0x2e94e4,_0x36ffa8[_0x6cd0('0x48')]);return db[_0x6cd0('0x33')][_0x6cd0('0x4e')](_0x2e94e4)['then'](handleEntityNotFound(_0x445a88,null))['then'](respondWithResult(_0x445a88,null))[_0x6cd0('0x4f')](handleError(_0x445a88,null));};exports[_0x6cd0('0x50')]=function(_0x211aaa,_0x105fb2){return db['ChatInternalMessage'][_0x6cd0('0x50')](_0x211aaa['body'],{})['then'](respondWithResult(_0x105fb2,0xc9))[_0x6cd0('0x4f')](handleError(_0x105fb2,null));};exports[_0x6cd0('0x2a')]=function(_0x5bbf34,_0x338e67){if(_0x5bbf34['body']['id']){delete _0x5bbf34[_0x6cd0('0x51')]['id'];}return db[_0x6cd0('0x33')][_0x6cd0('0x4e')]({'where':{'id':_0x5bbf34['params']['id']}})[_0x6cd0('0x2b')](handleEntityNotFound(_0x338e67,null))[_0x6cd0('0x2b')](saveUpdates(_0x5bbf34[_0x6cd0('0x51')],null))['then'](respondWithResult(_0x338e67,null))[_0x6cd0('0x4f')](handleError(_0x338e67,null));};exports[_0x6cd0('0x2c')]=function(_0x3e51b3,_0x5be714){return db['ChatInternalMessage']['find']({'where':{'id':_0x3e51b3[_0x6cd0('0x4d')]['id']}})[_0x6cd0('0x2b')](handleEntityNotFound(_0x5be714,null))[_0x6cd0('0x2b')](removeEntity(_0x5be714,null))[_0x6cd0('0x4f')](handleError(_0x5be714,null));};exports[_0x6cd0('0x52')]=function(_0x9c2e8a,_0x2d1954){return db[_0x6cd0('0x33')][_0x6cd0('0x52')]()[_0x6cd0('0x2b')](respondWithResult(_0x2d1954,null))['catch'](handleError(_0x2d1954,null));};function wrapUser(_0x24f90c){return function(_0x58d5ee){var _0x445d59=_0x24f90c[_0x6cd0('0x53')]({'plain':!![]});_0x445d59[_0x6cd0('0x54')]=[];if(_0x58d5ee){_0x445d59['lastMessageAt']=_0x58d5ee['createdAt'];_0x445d59[_0x6cd0('0x55')]=_0x58d5ee;}else{_0x445d59[_0x6cd0('0x56')]=moment(0x0)['format']('YYYY-MM-DD\x20HH:mm:ss');_0x445d59[_0x6cd0('0x55')]={};}return _0x445d59;};}exports['getUsers']=function(_0x87da8,_0x376ee2,_0x564344){var _0x988b48=[];return db[_0x6cd0('0x57')][_0x6cd0('0x4b')]({'where':{'role':[_0x6cd0('0x58'),_0x6cd0('0x59'),_0x6cd0('0x5a')]},'attributes':['id',_0x6cd0('0x5b'),_0x6cd0('0x2f'),_0x6cd0('0x5c'),_0x6cd0('0x5d'),_0x6cd0('0x5e'),'online','lastLoginAt',_0x6cd0('0x5f'),_0x6cd0('0x60')],'order':qs[_0x6cd0('0x43')](_0x6cd0('0x61')),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id',_0x6cd0('0x2f'),_0x6cd0('0x36')],'through':{'attributes':[]}}]})[_0x6cd0('0x2b')](function(_0x1cbfa1){if(_0x1cbfa1){var _0x91d1a=_0x87da8[_0x6cd0('0x5a')][_0x6cd0('0x53')]({'plain':!![]});if(!_0x91d1a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x91d1a[_0x6cd0('0x5c')]==='user'){return db[_0x6cd0('0x62')][_0x6cd0('0x4e')]({'where':{'name':'Agents','userProfileId':_0x91d1a[_0x6cd0('0x63')]},'raw':!![]})[_0x6cd0('0x2b')](function(_0x169f11){if(_0x169f11){if(_0x169f11[_0x6cd0('0x64')]===0x0){return db[_0x6cd0('0x65')][_0x6cd0('0x4b')]({'where':{'sectionId':_0x169f11['id']},'raw':!![]})[_0x6cd0('0x2b')](function(_0x3aff6f){var _0x42f67a=[];if(_['isEmpty'](_0x3aff6f)){_0x42f67a=_[_0x6cd0('0x45')](_0x1cbfa1,function(_0x469664){if(_0x469664[_0x6cd0('0x5c')]!==_0x6cd0('0x58')){return _0x469664;}});return _0x42f67a;}else{for(var _0xd194fd=0x0;_0xd194fd<_0x1cbfa1[_0x6cd0('0x3f')];_0xd194fd++){var _0x3748e9=_0x1cbfa1[_0xd194fd];if(_0x3748e9[_0x6cd0('0x5c')]===_0x6cd0('0x58')){var _0x21485b=_[_0x6cd0('0x4e')](_0x3aff6f,function(_0x232186){return _0x232186[_0x6cd0('0x66')]===_0x3748e9['id'];});if(_0x21485b)_0x42f67a[_0x6cd0('0x67')](_0x3748e9);}else{_0x42f67a[_0x6cd0('0x67')](_0x3748e9);}}return _0x42f67a;}});}else{return _0x1cbfa1;}}else{var _0x1a0782=_[_0x6cd0('0x45')](_0x1cbfa1,function(_0x2a7800){if(_0x2a7800[_0x6cd0('0x5c')]!=='agent'){return _0x2a7800;}});return _0x1a0782;}});}else{return _0x1cbfa1;}}})[_0x6cd0('0x2b')](function(_0x23887d){var _0x1ea825=[];if(_0x23887d){_0x988b48=_0x23887d;for(var _0x1cde4c=0x0;_0x1cde4c<_0x23887d[_0x6cd0('0x3f')];_0x1cde4c+=0x1){_0x988b48[_0x1cde4c]['messages']=[];_0x1ea825[_0x6cd0('0x67')](db[_0x6cd0('0x33')]['find']({'where':{'FromId':[_0x87da8['user']['id'],_0x23887d[_0x1cde4c]['id']],'ToId':[_0x87da8[_0x6cd0('0x5a')]['id'],_0x23887d[_0x1cde4c]['id']],'ChatGroupId':null},'attributes':['id',_0x6cd0('0x68'),'FromId',_0x6cd0('0x69'),'read',_0x6cd0('0x51')],'order':qs[_0x6cd0('0x43')](_0x6cd0('0x6a')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x6cd0('0x2b')](wrapUser(_0x23887d[_0x1cde4c])));}return BPromise[_0x6cd0('0x6b')](_0x1ea825);}return[];})[_0x6cd0('0x2b')](function(_0x46cbbf){return{'rows':_0x46cbbf,'count':_0x46cbbf[_0x6cd0('0x3f')]};})['then'](respondWithResult(_0x376ee2,null))[_0x6cd0('0x4f')](handleError(_0x376ee2,null));};