e48f840e8ec9902f590dc5d4b609a52d35497962
[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 _0xa33b=['catch','show','params','fields','options','create','body','find','describe','get','messages','lastMessageAt','createdAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','fullname','role','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','all','eml-format','zip-dir','fast-json-patch','bluebird','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','limit','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows'];(function(_0x48303a,_0x3c8e44){var _0x52d120=function(_0x283969){while(--_0x283969){_0x48303a['push'](_0x48303a['shift']());}};_0x52d120(++_0x3c8e44);}(_0xa33b,0x16d));var _0xba33=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xa33b[_0x21549c];return _0x426cbd;};'use strict';var emlformat=require(_0xba33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba33('0x1'));var jsonpatch=require(_0xba33('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xba33('0x3'));var Mustache=require('mustache');var util=require(_0xba33('0x4'));var path=require('path');var sox=require(_0xba33('0x5'));var csv=require(_0xba33('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xba33('0x7'));var _=require(_0xba33('0x8'));var squel=require(_0xba33('0x9'));var crypto=require('crypto');var jsforce=require(_0xba33('0xa'));var deskjs=require(_0xba33('0xb'));var toCsv=require(_0xba33('0x6'));var querystring=require(_0xba33('0xc'));var Papa=require(_0xba33('0xd'));var Redis=require(_0xba33('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xba33('0xf'));var as=require(_0xba33('0x10'));var hardwareService=require(_0xba33('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xba33('0x12'));var config=require(_0xba33('0x13'));var licenseUtil=require(_0xba33('0x14'));var db=require('../../mysqldb')['db'];config[_0xba33('0x15')]=_['defaults'](config[_0xba33('0x15')],{'host':_0xba33('0x16'),'port':0x18eb});var socket=require(_0xba33('0x17'))(new Redis(config[_0xba33('0x15')]));require(_0xba33('0x18'))[_0xba33('0x19')](socket);function respondWithStatusCode(_0x1efe02,_0x3c44b4){_0x3c44b4=_0x3c44b4||0xcc;return function(_0x4e93af){if(_0x4e93af){return _0x1efe02[_0xba33('0x1a')](_0x3c44b4);}return _0x1efe02[_0xba33('0x1b')](_0x3c44b4)[_0xba33('0x1c')]();};}function respondWithResult(_0x179754,_0x56e38c){_0x56e38c=_0x56e38c||0xc8;return function(_0x227fb7){if(_0x227fb7){return _0x179754[_0xba33('0x1b')](_0x56e38c)[_0xba33('0x1d')](_0x227fb7);}};}function respondWithFilteredResult(_0x2707c0,_0x407ed1){return function(_0x4e72d6){if(_0x4e72d6){var _0x1e5c25=typeof _0x407ed1[_0xba33('0x1e')]===_0xba33('0x1f')&&typeof _0x407ed1['limit']===_0xba33('0x1f');var _0x1d5b93=_0x4e72d6[_0xba33('0x20')];var _0x1700d9=_0x1e5c25?0x0:_0x407ed1[_0xba33('0x1e')];var _0x8b6501=_0x1e5c25?_0x4e72d6[_0xba33('0x20')]:_0x407ed1[_0xba33('0x1e')]+_0x407ed1['limit'];var _0x54d0e1;if(_0x8b6501>=_0x1d5b93){_0x8b6501=_0x1d5b93;_0x54d0e1=0xc8;}else{_0x54d0e1=0xce;}_0x2707c0[_0xba33('0x1b')](_0x54d0e1);return _0x2707c0[_0xba33('0x21')](_0xba33('0x22'),_0x1700d9+'-'+_0x8b6501+'/'+_0x1d5b93)[_0xba33('0x1d')](_0x4e72d6);}return null;};}function patchUpdates(_0x46adcf){return function(_0x4e185a){try{jsonpatch[_0xba33('0x23')](_0x4e185a,_0x46adcf,!![]);}catch(_0xf7bfa1){return BPromise[_0xba33('0x24')](_0xf7bfa1);}return _0x4e185a[_0xba33('0x25')]();};}function saveUpdates(_0x40ddde,_0xbb18d0){return function(_0x2ec0bc){if(_0x2ec0bc){return _0x2ec0bc[_0xba33('0x26')](_0x40ddde)[_0xba33('0x27')](function(_0x306195){return _0x306195;});}return null;};}function removeEntity(_0x10ad43,_0x2b36e5){return function(_0x250489){if(_0x250489){return _0x250489[_0xba33('0x28')]()['then'](function(){_0x10ad43['status'](0xcc)[_0xba33('0x1c')]();});}};}function handleEntityNotFound(_0x3578ad,_0x1ca2e4){return function(_0x3cf8be){if(!_0x3cf8be){_0x3578ad['sendStatus'](0x194);}return _0x3cf8be;};}function handleError(_0x4628a7,_0x106236){_0x106236=_0x106236||0x1f4;return function(_0x163b5a){logger[_0xba33('0x29')](_0x163b5a[_0xba33('0x2a')]);if(_0x163b5a['name']){delete _0x163b5a[_0xba33('0x2b')];}_0x4628a7['status'](_0x106236)[_0xba33('0x2c')](_0x163b5a);};}exports[_0xba33('0x2d')]=function(_0x2ac033,_0x4dfa87){var _0x3492e8={},_0x589e21={},_0x2c5b07={'count':0x0,'rows':[]};var _0x4d8a37=_[_0xba33('0x2e')](db[_0xba33('0x2f')][_0xba33('0x30')],function(_0x49a03c){return{'name':_0x49a03c['fieldName'],'type':_0x49a03c[_0xba33('0x31')][_0xba33('0x32')]};});_0x589e21['model']=_['map'](_0x4d8a37,_0xba33('0x2b'));_0x589e21[_0xba33('0x33')]=_[_0xba33('0x34')](_0x2ac033[_0xba33('0x33')]);_0x589e21[_0xba33('0x35')]=_[_0xba33('0x36')](_0x589e21[_0xba33('0x37')],_0x589e21['query']);_0x3492e8[_0xba33('0x38')]=_[_0xba33('0x36')](_0x589e21['model'],qs['fields'](_0x2ac033[_0xba33('0x33')]['fields']));_0x3492e8[_0xba33('0x38')]=_0x3492e8[_0xba33('0x38')][_0xba33('0x39')]?_0x3492e8['attributes']:_0x589e21['model'];if(!_0x2ac033[_0xba33('0x33')][_0xba33('0x3a')](_0xba33('0x3b'))){_0x3492e8[_0xba33('0x3c')]=qs[_0xba33('0x3c')](_0x2ac033[_0xba33('0x33')]['limit']);_0x3492e8[_0xba33('0x1e')]=qs[_0xba33('0x1e')](_0x2ac033['query'][_0xba33('0x1e')]);}_0x3492e8['order']=qs['sort'](_0x2ac033['query'][_0xba33('0x3d')]);_0x3492e8['where']=qs['filters'](_[_0xba33('0x3e')](_0x2ac033['query'],_0x589e21[_0xba33('0x35')]),_0x4d8a37);if(_0x2ac033[_0xba33('0x33')]['filter']){_0x3492e8[_0xba33('0x3f')]=_[_0xba33('0x40')](_0x3492e8[_0xba33('0x3f')],{'$or':_['map'](_0x4d8a37,function(_0x154119){if(_0x154119[_0xba33('0x31')]!==_0xba33('0x41')){var _0x2411c9={};_0x2411c9[_0x154119['name']]={'$like':'%'+_0x2ac033[_0xba33('0x33')][_0xba33('0x42')]+'%'};return _0x2411c9;}})});}_0x3492e8=_[_0xba33('0x40')]({},_0x3492e8,_0x2ac033['options']);var _0xd5e146={'where':_0x3492e8[_0xba33('0x3f')]};return db[_0xba33('0x2f')][_0xba33('0x20')](_0xd5e146)['then'](function(_0x2ce49d){_0x2c5b07[_0xba33('0x20')]=_0x2ce49d;if(_0x2ac033[_0xba33('0x33')][_0xba33('0x43')]){_0x3492e8[_0xba33('0x44')]=[{'all':!![]}];}return db[_0xba33('0x2f')][_0xba33('0x45')](_0x3492e8);})['then'](function(_0x4c7712){_0x2c5b07[_0xba33('0x46')]=_0x4c7712;return _0x2c5b07;})[_0xba33('0x27')](respondWithFilteredResult(_0x4dfa87,_0x3492e8))[_0xba33('0x47')](handleError(_0x4dfa87,null));};exports[_0xba33('0x48')]=function(_0x3bf2ab,_0x1876da){var _0x5ba4ef={'raw':!![],'where':{'id':_0x3bf2ab[_0xba33('0x49')]['id']}},_0x3be0ca={};_0x3be0ca[_0xba33('0x37')]=_[_0xba33('0x34')](db['ChatInternalMessage'][_0xba33('0x30')]);_0x3be0ca[_0xba33('0x33')]=_[_0xba33('0x34')](_0x3bf2ab['query']);_0x3be0ca[_0xba33('0x35')]=_['intersection'](_0x3be0ca[_0xba33('0x37')],_0x3be0ca[_0xba33('0x33')]);_0x5ba4ef['attributes']=_['intersection'](_0x3be0ca[_0xba33('0x37')],qs[_0xba33('0x4a')](_0x3bf2ab[_0xba33('0x33')][_0xba33('0x4a')]));_0x5ba4ef[_0xba33('0x38')]=_0x5ba4ef[_0xba33('0x38')][_0xba33('0x39')]?_0x5ba4ef[_0xba33('0x38')]:_0x3be0ca['model'];if(_0x3bf2ab[_0xba33('0x33')][_0xba33('0x43')]){_0x5ba4ef[_0xba33('0x44')]=[{'all':!![]}];}_0x5ba4ef=_[_0xba33('0x40')]({},_0x5ba4ef,_0x3bf2ab[_0xba33('0x4b')]);return db[_0xba33('0x2f')]['find'](_0x5ba4ef)[_0xba33('0x27')](handleEntityNotFound(_0x1876da,null))[_0xba33('0x27')](respondWithResult(_0x1876da,null))[_0xba33('0x47')](handleError(_0x1876da,null));};exports[_0xba33('0x4c')]=function(_0x1eef5e,_0x5150dd){return db['ChatInternalMessage'][_0xba33('0x4c')](_0x1eef5e[_0xba33('0x4d')],{})['then'](respondWithResult(_0x5150dd,0xc9))[_0xba33('0x47')](handleError(_0x5150dd,null));};exports[_0xba33('0x26')]=function(_0x2e7d4a,_0x4dec6d){if(_0x2e7d4a[_0xba33('0x4d')]['id']){delete _0x2e7d4a[_0xba33('0x4d')]['id'];}return db['ChatInternalMessage'][_0xba33('0x4e')]({'where':{'id':_0x2e7d4a[_0xba33('0x49')]['id']}})[_0xba33('0x27')](handleEntityNotFound(_0x4dec6d,null))[_0xba33('0x27')](saveUpdates(_0x2e7d4a[_0xba33('0x4d')],null))[_0xba33('0x27')](respondWithResult(_0x4dec6d,null))[_0xba33('0x47')](handleError(_0x4dec6d,null));};exports[_0xba33('0x28')]=function(_0x2b710d,_0x40756a){return db['ChatInternalMessage'][_0xba33('0x4e')]({'where':{'id':_0x2b710d[_0xba33('0x49')]['id']}})[_0xba33('0x27')](handleEntityNotFound(_0x40756a,null))[_0xba33('0x27')](removeEntity(_0x40756a,null))[_0xba33('0x47')](handleError(_0x40756a,null));};exports['describe']=function(_0x466a2e,_0x471c71){return db[_0xba33('0x2f')][_0xba33('0x4f')]()['then'](respondWithResult(_0x471c71,null))[_0xba33('0x47')](handleError(_0x471c71,null));};function wrapUser(_0x3181c7){return function(_0x2fa31b){var _0x3bc360=_0x3181c7[_0xba33('0x50')]({'plain':!![]});_0x3bc360[_0xba33('0x51')]=[];if(_0x2fa31b){_0x3bc360[_0xba33('0x52')]=_0x2fa31b[_0xba33('0x53')];_0x3bc360[_0xba33('0x54')]=_0x2fa31b;}else{_0x3bc360[_0xba33('0x52')]=moment(0x0)['format'](_0xba33('0x55'));_0x3bc360[_0xba33('0x54')]={};}return _0x3bc360;};}exports[_0xba33('0x56')]=function(_0x2e72d5,_0x404f58,_0x1127b8){var _0x13c5c7=[];return db[_0xba33('0x57')][_0xba33('0x45')]({'where':{'role':[_0xba33('0x58'),'admin','user']},'attributes':['id',_0xba33('0x59'),'name',_0xba33('0x5a'),'userpic','internal','online',_0xba33('0x5b'),_0xba33('0x5c'),_0xba33('0x5d')],'order':qs[_0xba33('0x3d')](_0xba33('0x5e')),'include':[{'model':db[_0xba33('0x5f')],'as':'VoiceQueues','attributes':['id',_0xba33('0x2b'),_0xba33('0x31')],'through':{'attributes':[]}}]})[_0xba33('0x27')](function(_0x3d58a8){if(_0x3d58a8){var _0x454a80=_0x2e72d5['user'][_0xba33('0x50')]({'plain':!![]});if(!_0x454a80)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x454a80[_0xba33('0x5a')]===_0xba33('0x60')){return db[_0xba33('0x61')]['find']({'where':{'name':_0xba33('0x62'),'userProfileId':_0x454a80[_0xba33('0x63')]},'raw':!![]})[_0xba33('0x27')](function(_0x2e5347){if(_0x2e5347){if(_0x2e5347[_0xba33('0x64')]===0x0){return db[_0xba33('0x65')][_0xba33('0x45')]({'where':{'sectionId':_0x2e5347['id']},'raw':!![]})[_0xba33('0x27')](function(_0x36d581){var _0x1ef3ef=[];if(_[_0xba33('0x66')](_0x36d581)){_0x1ef3ef=_[_0xba33('0x42')](_0x3d58a8,function(_0x3242bd){if(_0x3242bd[_0xba33('0x5a')]!==_0xba33('0x58')){return _0x3242bd;}});return _0x1ef3ef;}else{for(var _0x1993c4=0x0;_0x1993c4<_0x3d58a8[_0xba33('0x39')];_0x1993c4++){var _0x519661=_0x3d58a8[_0x1993c4];if(_0x519661[_0xba33('0x5a')]==='agent'){var _0x7ae748=_['find'](_0x36d581,function(_0x55a5ba){return _0x55a5ba[_0xba33('0x67')]===_0x519661['id'];});if(_0x7ae748)_0x1ef3ef[_0xba33('0x68')](_0x519661);}else{_0x1ef3ef[_0xba33('0x68')](_0x519661);}}return _0x1ef3ef;}});}else{return _0x3d58a8;}}else{var _0x53ced5=_[_0xba33('0x42')](_0x3d58a8,function(_0x34ff63){if(_0x34ff63[_0xba33('0x5a')]!==_0xba33('0x58')){return _0x34ff63;}});return _0x53ced5;}});}else{return _0x3d58a8;}}})['then'](function(_0x4e96f3){var _0xb63270=[];if(_0x4e96f3){_0x13c5c7=_0x4e96f3;for(var _0x4a2dc0=0x0;_0x4a2dc0<_0x4e96f3[_0xba33('0x39')];_0x4a2dc0+=0x1){_0x13c5c7[_0x4a2dc0][_0xba33('0x51')]=[];_0xb63270[_0xba33('0x68')](db[_0xba33('0x2f')][_0xba33('0x4e')]({'where':{'FromId':[_0x2e72d5[_0xba33('0x60')]['id'],_0x4e96f3[_0x4a2dc0]['id']],'ToId':[_0x2e72d5[_0xba33('0x60')]['id'],_0x4e96f3[_0x4a2dc0]['id']],'ChatGroupId':null},'attributes':['id',_0xba33('0x53'),_0xba33('0x69'),_0xba33('0x6a'),_0xba33('0x6b'),_0xba33('0x4d')],'order':qs[_0xba33('0x3d')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xba33('0x27')](wrapUser(_0x4e96f3[_0x4a2dc0])));}return BPromise[_0xba33('0x6c')](_0xb63270);}return[];})[_0xba33('0x27')](function(_0x298685){return{'rows':_0x298685,'count':_0x298685[_0xba33('0x39')]};})['then'](respondWithResult(_0x404f58,null))[_0xba33('0x47')](handleError(_0x404f58,null));};