Built motion from commit 14588770.|2.5.38
[motion2.git] / server / api / chatGroup / chatGroup.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 _0x9174=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','send','ChatGroup','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','update','body','describe','ChatInternalMessage','user','addMembers','omit','ids','getMembers','findOne','User','pick','removeMembers','addMessage','ChatGroupId','create','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis'];(function(_0x48112e,_0x261e02){var _0x4789ed=function(_0x316ea7){while(--_0x316ea7){_0x48112e['push'](_0x48112e['shift']());}};_0x4789ed(++_0x261e02);}(_0x9174,0x165));var _0x4917=function(_0x34928e,_0xd44165){_0x34928e=_0x34928e-0x0;var _0x5b99ca=_0x9174[_0x34928e];return _0x5b99ca;};'use strict';var emlformat=require(_0x4917('0x0'));var rimraf=require(_0x4917('0x1'));var zipdir=require(_0x4917('0x2'));var jsonpatch=require(_0x4917('0x3'));var rp=require(_0x4917('0x4'));var moment=require(_0x4917('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4917('0x6'));var util=require('util');var path=require(_0x4917('0x7'));var sox=require('sox');var csv=require(_0x4917('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4917('0x9'));var _=require('lodash');var squel=require(_0x4917('0xa'));var crypto=require(_0x4917('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4917('0xc'));var Papa=require(_0x4917('0xd'));var Redis=require(_0x4917('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4917('0xf'));var hardwareService=require(_0x4917('0x10'));var logger=require(_0x4917('0x11'))(_0x4917('0x12'));var utils=require(_0x4917('0x13'));var config=require(_0x4917('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x4917('0x15')]=_[_0x4917('0x16')](config[_0x4917('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x4917('0x17'))(new Redis(config[_0x4917('0x15')]));require(_0x4917('0x18'))[_0x4917('0x19')](socket);function respondWithStatusCode(_0x3c1491,_0x1bec8e){_0x1bec8e=_0x1bec8e||0xcc;return function(_0x355aba){if(_0x355aba){return _0x3c1491[_0x4917('0x1a')](_0x1bec8e);}return _0x3c1491[_0x4917('0x1b')](_0x1bec8e)[_0x4917('0x1c')]();};}function respondWithResult(_0x4ba676,_0x2c430a){_0x2c430a=_0x2c430a||0xc8;return function(_0xe7a848){if(_0xe7a848){return _0x4ba676['status'](_0x2c430a)['json'](_0xe7a848);}};}function respondWithFilteredResult(_0x351999,_0x1ca3bf){return function(_0x43d66b){if(_0x43d66b){var _0xbd3ef4=typeof _0x1ca3bf[_0x4917('0x1d')]===_0x4917('0x1e')&&typeof _0x1ca3bf[_0x4917('0x1f')]===_0x4917('0x1e');var _0xbee921=_0x43d66b[_0x4917('0x20')];var _0x3bbb59=_0xbd3ef4?0x0:_0x1ca3bf['offset'];var _0x348ceb=_0xbd3ef4?_0x43d66b[_0x4917('0x20')]:_0x1ca3bf['offset']+_0x1ca3bf[_0x4917('0x1f')];var _0x12ec42;if(_0x348ceb>=_0xbee921){_0x348ceb=_0xbee921;_0x12ec42=0xc8;}else{_0x12ec42=0xce;}_0x351999[_0x4917('0x1b')](_0x12ec42);return _0x351999[_0x4917('0x21')](_0x4917('0x22'),_0x3bbb59+'-'+_0x348ceb+'/'+_0xbee921)[_0x4917('0x23')](_0x43d66b);}return null;};}function patchUpdates(_0x2c613b){return function(_0x5f4946){try{jsonpatch[_0x4917('0x24')](_0x5f4946,_0x2c613b,!![]);}catch(_0x3d1332){return BPromise[_0x4917('0x25')](_0x3d1332);}return _0x5f4946[_0x4917('0x26')]();};}function saveUpdates(_0x22f0a7,_0x2aebc4){return function(_0x19f476){if(_0x19f476){return _0x19f476['update'](_0x22f0a7)[_0x4917('0x27')](function(_0x5ec7c3){return _0x5ec7c3;});}return null;};}function removeEntity(_0x34d5f5,_0x43bc0d){return function(_0x5d7394){if(_0x5d7394){return _0x5d7394['destroy']()[_0x4917('0x27')](function(){_0x34d5f5[_0x4917('0x1b')](0xcc)[_0x4917('0x1c')]();});}};}function handleEntityNotFound(_0x4daa41,_0x2fa8c9){return function(_0x1b31c2){if(!_0x1b31c2){_0x4daa41[_0x4917('0x1a')](0x194);}return _0x1b31c2;};}function handleError(_0x766c49,_0x794b3e){_0x794b3e=_0x794b3e||0x1f4;return function(_0x1a33ac){logger[_0x4917('0x28')](_0x1a33ac[_0x4917('0x29')]);if(_0x1a33ac[_0x4917('0x2a')]){delete _0x1a33ac[_0x4917('0x2a')];}_0x766c49[_0x4917('0x1b')](_0x794b3e)[_0x4917('0x2b')](_0x1a33ac);};}exports['index']=function(_0x25b710,_0x12774f){var _0x24b3c9={},_0x5d0b49={},_0x4a9e7f={'count':0x0,'rows':[]};var _0x5b2741=_['map'](db[_0x4917('0x2c')]['rawAttributes'],function(_0x215cd1){return{'name':_0x215cd1[_0x4917('0x2d')],'type':_0x215cd1[_0x4917('0x2e')][_0x4917('0x2f')]};});_0x5d0b49[_0x4917('0x30')]=_[_0x4917('0x31')](_0x5b2741,_0x4917('0x2a'));_0x5d0b49[_0x4917('0x32')]=_['keys'](_0x25b710['query']);_0x5d0b49[_0x4917('0x33')]=_[_0x4917('0x34')](_0x5d0b49[_0x4917('0x30')],_0x5d0b49[_0x4917('0x32')]);_0x24b3c9[_0x4917('0x35')]=_['intersection'](_0x5d0b49['model'],qs[_0x4917('0x36')](_0x25b710['query'][_0x4917('0x36')]));_0x24b3c9[_0x4917('0x35')]=_0x24b3c9[_0x4917('0x35')][_0x4917('0x37')]?_0x24b3c9[_0x4917('0x35')]:_0x5d0b49[_0x4917('0x30')];if(!_0x25b710[_0x4917('0x32')][_0x4917('0x38')]('nolimit')){_0x24b3c9['limit']=qs[_0x4917('0x1f')](_0x25b710[_0x4917('0x32')][_0x4917('0x1f')]);_0x24b3c9[_0x4917('0x1d')]=qs[_0x4917('0x1d')](_0x25b710[_0x4917('0x32')]['offset']);}_0x24b3c9[_0x4917('0x39')]=qs['sort'](_0x25b710[_0x4917('0x32')][_0x4917('0x3a')]);_0x24b3c9[_0x4917('0x3b')]=qs[_0x4917('0x33')](_['pick'](_0x25b710['query'],_0x5d0b49[_0x4917('0x33')]),_0x5b2741);if(_0x25b710[_0x4917('0x32')][_0x4917('0x3c')]){_0x24b3c9[_0x4917('0x3b')]=_[_0x4917('0x3d')](_0x24b3c9['where'],{'$or':_['map'](_0x5b2741,function(_0x4c96c0){if(_0x4c96c0[_0x4917('0x2e')]!=='VIRTUAL'){var _0x4c0b6d={};_0x4c0b6d[_0x4c96c0['name']]={'$like':'%'+_0x25b710[_0x4917('0x32')][_0x4917('0x3c')]+'%'};return _0x4c0b6d;}})});}_0x24b3c9=_[_0x4917('0x3d')]({},_0x24b3c9,_0x25b710[_0x4917('0x3e')]);var _0x4a5b57={'where':_0x24b3c9[_0x4917('0x3b')]};return db['ChatGroup'][_0x4917('0x20')](_0x4a5b57)['then'](function(_0x1d4902){_0x4a9e7f[_0x4917('0x20')]=_0x1d4902;if(_0x25b710[_0x4917('0x32')][_0x4917('0x3f')]){_0x24b3c9[_0x4917('0x40')]=[{'all':!![]}];}return db['ChatGroup'][_0x4917('0x41')](_0x24b3c9);})[_0x4917('0x27')](function(_0x1a2bb9){_0x4a9e7f[_0x4917('0x42')]=_0x1a2bb9;return _0x4a9e7f;})[_0x4917('0x27')](respondWithFilteredResult(_0x12774f,_0x24b3c9))[_0x4917('0x43')](handleError(_0x12774f,null));};exports[_0x4917('0x44')]=function(_0x54b80a,_0x42d0c0){var _0x259207={'raw':!![],'where':{'id':_0x54b80a[_0x4917('0x45')]['id']}},_0x56c047={};_0x56c047['model']=_[_0x4917('0x46')](db[_0x4917('0x2c')][_0x4917('0x47')]);_0x56c047[_0x4917('0x32')]=_['keys'](_0x54b80a['query']);_0x56c047[_0x4917('0x33')]=_['intersection'](_0x56c047[_0x4917('0x30')],_0x56c047['query']);_0x259207['attributes']=_[_0x4917('0x34')](_0x56c047[_0x4917('0x30')],qs[_0x4917('0x36')](_0x54b80a[_0x4917('0x32')][_0x4917('0x36')]));_0x259207[_0x4917('0x35')]=_0x259207['attributes'][_0x4917('0x37')]?_0x259207[_0x4917('0x35')]:_0x56c047[_0x4917('0x30')];if(_0x54b80a[_0x4917('0x32')][_0x4917('0x3f')]){_0x259207[_0x4917('0x40')]=[{'all':!![]}];}_0x259207=_[_0x4917('0x3d')]({},_0x259207,_0x54b80a['options']);return db[_0x4917('0x2c')][_0x4917('0x48')](_0x259207)[_0x4917('0x27')](handleEntityNotFound(_0x42d0c0,null))[_0x4917('0x27')](respondWithResult(_0x42d0c0,null))[_0x4917('0x43')](handleError(_0x42d0c0,null));};exports['create']=function(_0x19711f,_0x4c0012){return db['ChatGroup']['create'](_0x19711f['body'],{})[_0x4917('0x27')](respondWithResult(_0x4c0012,0xc9))['catch'](handleError(_0x4c0012,null));};exports[_0x4917('0x49')]=function(_0x51e992,_0x35861b){if(_0x51e992[_0x4917('0x4a')]['id']){delete _0x51e992['body']['id'];}return db[_0x4917('0x2c')][_0x4917('0x48')]({'where':{'id':_0x51e992['params']['id']}})['then'](handleEntityNotFound(_0x35861b,null))[_0x4917('0x27')](saveUpdates(_0x51e992['body'],null))[_0x4917('0x27')](respondWithResult(_0x35861b,null))[_0x4917('0x43')](handleError(_0x35861b,null));};exports['destroy']=function(_0x25c7b9,_0x408772){return db[_0x4917('0x2c')][_0x4917('0x48')]({'where':{'id':_0x25c7b9['params']['id']}})[_0x4917('0x27')](handleEntityNotFound(_0x408772,null))[_0x4917('0x27')](removeEntity(_0x408772,null))[_0x4917('0x43')](handleError(_0x408772,null));};exports[_0x4917('0x4b')]=function(_0x3d374e,_0x1a6f17){return db[_0x4917('0x2c')][_0x4917('0x4b')]()[_0x4917('0x27')](respondWithResult(_0x1a6f17,null))[_0x4917('0x43')](handleError(_0x1a6f17,null));};exports['getUnread']=function(_0x230225,_0x5ae4cc,_0x271106){return db[_0x4917('0x4c')][_0x4917('0x20')]({'where':{'ChatGroupId':_0x230225[_0x4917('0x45')]['id'],'ToId':_0x230225[_0x4917('0x4d')]['id'],'read':![]}})['then'](function(_0x554729){return{'id':_['toInteger'](_0x230225['params']['id']),'count':_0x554729};})['then'](respondWithResult(_0x5ae4cc,null))['catch'](handleError(_0x5ae4cc,null));};exports[_0x4917('0x4e')]=function(_0xa244b1,_0x49b13c,_0x4dc24f){return db[_0x4917('0x2c')][_0x4917('0x48')]({'where':{'id':_0xa244b1[_0x4917('0x45')]['id']}})[_0x4917('0x27')](handleEntityNotFound(_0x49b13c,null))[_0x4917('0x27')](function(_0x42a39d){if(_0x42a39d){return _0x42a39d[_0x4917('0x4e')](_0xa244b1[_0x4917('0x4a')]['ids'],_[_0x4917('0x4f')](_0xa244b1[_0x4917('0x4a')],[_0x4917('0x50'),'id'])||{});}})[_0x4917('0x27')](respondWithResult(_0x49b13c,null))['catch'](handleError(_0x49b13c,null));};exports[_0x4917('0x51')]=function(_0x47a6b7,_0x525de6,_0x5a1c2f){var _0x584c2c={};var _0x12456e={};var _0x35d4f7;var _0xf2e2c7;return db[_0x4917('0x2c')][_0x4917('0x52')]({'where':{'id':_0x47a6b7[_0x4917('0x45')]['id']}})[_0x4917('0x27')](handleEntityNotFound(_0x525de6,null))['then'](function(_0xff26ca){if(_0xff26ca){_0x35d4f7=_0xff26ca;_0x12456e[_0x4917('0x30')]=_[_0x4917('0x46')](db[_0x4917('0x53')]['rawAttributes']);_0x12456e[_0x4917('0x32')]=_[_0x4917('0x46')](_0x47a6b7[_0x4917('0x32')]);_0x12456e[_0x4917('0x33')]=_[_0x4917('0x34')](_0x12456e[_0x4917('0x30')],_0x12456e['query']);_0x584c2c[_0x4917('0x35')]=_[_0x4917('0x34')](_0x12456e[_0x4917('0x30')],qs[_0x4917('0x36')](_0x47a6b7[_0x4917('0x32')]['fields']));_0x584c2c['attributes']=_0x584c2c[_0x4917('0x35')]['length']?_0x584c2c[_0x4917('0x35')]:_0x12456e[_0x4917('0x30')];_0x584c2c['order']=qs['sort'](_0x47a6b7[_0x4917('0x32')]['sort']);_0x584c2c['where']=qs[_0x4917('0x33')](_[_0x4917('0x54')](_0x47a6b7['query'],_0x12456e['filters']));if(_0x47a6b7[_0x4917('0x32')][_0x4917('0x3c')]){_0x584c2c[_0x4917('0x3b')]=_['merge'](_0x584c2c[_0x4917('0x3b')],{'$or':_['map'](_0x584c2c['attributes'],function(_0x3219f4){var _0xd91f35={};_0xd91f35[_0x3219f4]={'$like':'%'+_0x47a6b7['query']['filter']+'%'};return _0xd91f35;})});}_0x584c2c=_['merge']({},_0x584c2c,_0x47a6b7['options']);return _0x35d4f7[_0x4917('0x51')](_0x584c2c);}})['then'](function(_0x3e0e74){if(_0x3e0e74){_0xf2e2c7=_0x3e0e74[_0x4917('0x37')];if(!_0x47a6b7['query'][_0x4917('0x38')]('nolimit')){_0x584c2c[_0x4917('0x1f')]=qs[_0x4917('0x1f')](_0x47a6b7['query'][_0x4917('0x1f')]);_0x584c2c[_0x4917('0x1d')]=qs['offset'](_0x47a6b7[_0x4917('0x32')][_0x4917('0x1d')]);}return _0x35d4f7[_0x4917('0x51')](_0x584c2c);}})[_0x4917('0x27')](function(_0x32d7c4){if(_0x32d7c4){return _0x32d7c4?{'count':_0xf2e2c7,'rows':_0x32d7c4}:null;}})[_0x4917('0x27')](respondWithResult(_0x525de6,null))[_0x4917('0x43')](handleError(_0x525de6,null));};exports[_0x4917('0x55')]=function(_0x4b972f,_0x2a92ae,_0x43f412){return db[_0x4917('0x2c')][_0x4917('0x48')]({'where':{'id':_0x4b972f[_0x4917('0x45')]['id']}})['then'](handleEntityNotFound(_0x2a92ae,null))[_0x4917('0x27')](function(_0x36b4b4){if(_0x36b4b4){return _0x36b4b4[_0x4917('0x55')](_0x4b972f[_0x4917('0x32')][_0x4917('0x50')]);}})[_0x4917('0x27')](respondWithStatusCode(_0x2a92ae,null))[_0x4917('0x43')](handleError(_0x2a92ae,null));};exports[_0x4917('0x56')]=function(_0x18cf44,_0x2d20af,_0x329546){if(_0x18cf44[_0x4917('0x4a')]['id']){delete _0x18cf44[_0x4917('0x4a')]['id'];}return db['ChatGroup'][_0x4917('0x48')]({'where':{'id':_0x18cf44[_0x4917('0x45')]['id']}})[_0x4917('0x27')](handleEntityNotFound(_0x2d20af,null))[_0x4917('0x27')](function(_0x4b9f94){if(_0x4b9f94){_0x18cf44[_0x4917('0x4a')][_0x4917('0x57')]=_0x4b9f94['id'];return db['ChatInternalMessage'][_0x4917('0x58')](_0x18cf44[_0x4917('0x4a')]);}})[_0x4917('0x27')](respondWithResult(_0x2d20af,null))[_0x4917('0x43')](handleError(_0x2d20af,null));};exports[_0x4917('0x59')]=function(_0x4f36a5,_0x155b41,_0x4eaf1b){var _0x156575={};var _0x5d2729={};var _0x47ce18;var _0x17d39b;return db[_0x4917('0x2c')][_0x4917('0x52')]({'where':{'id':_0x4f36a5[_0x4917('0x45')]['id']}})[_0x4917('0x27')](handleEntityNotFound(_0x155b41,null))['then'](function(_0x324b74){if(_0x324b74){_0x47ce18=_0x324b74;_0x5d2729[_0x4917('0x30')]=_[_0x4917('0x46')](db[_0x4917('0x4c')][_0x4917('0x47')]);_0x5d2729[_0x4917('0x32')]=_['keys'](_0x4f36a5[_0x4917('0x32')]);_0x5d2729[_0x4917('0x33')]=_[_0x4917('0x34')](_0x5d2729['model'],_0x5d2729['query']);_0x156575[_0x4917('0x35')]=_[_0x4917('0x34')](_0x5d2729[_0x4917('0x30')],qs[_0x4917('0x36')](_0x4f36a5[_0x4917('0x32')][_0x4917('0x36')]));_0x156575[_0x4917('0x35')]=_0x156575[_0x4917('0x35')][_0x4917('0x37')]?_0x156575[_0x4917('0x35')]:_0x5d2729['model'];_0x156575[_0x4917('0x39')]=qs[_0x4917('0x3a')](_0x4f36a5['query'][_0x4917('0x3a')]);_0x156575[_0x4917('0x3b')]=qs[_0x4917('0x33')](_[_0x4917('0x54')](_0x4f36a5['query'],_0x5d2729[_0x4917('0x33')]));if(_0x4f36a5['query'][_0x4917('0x3c')]){_0x156575['where']=_[_0x4917('0x3d')](_0x156575[_0x4917('0x3b')],{'$or':_['map'](_0x156575[_0x4917('0x35')],function(_0x529083){var _0x4150e3={};_0x4150e3[_0x529083]={'$like':'%'+_0x4f36a5['query'][_0x4917('0x3c')]+'%'};return _0x4150e3;})});}if(_0x4f36a5['query']['$gte']){var _0x5ee30a=_0x4f36a5[_0x4917('0x32')][_0x4917('0x5a')][_0x4917('0x5b')](',');var _0x5df005={};_0x5df005[_0x5ee30a[0x0]]={'$gte':moment(_0x5ee30a[0x1])['format'](_0x4917('0x5c'))};_0x156575['where']=_['merge'](_0x156575[_0x4917('0x3b')],_0x5df005);}_0x156575=_[_0x4917('0x3d')]({},_0x156575,_0x4f36a5[_0x4917('0x3e')]);return _0x47ce18[_0x4917('0x59')](_0x156575);}})[_0x4917('0x27')](function(_0x50b095){if(_0x50b095){_0x17d39b=_0x50b095['length'];if(!_0x4f36a5['query'][_0x4917('0x38')]('nolimit')){_0x156575['limit']=qs[_0x4917('0x1f')](_0x4f36a5['query'][_0x4917('0x1f')]);_0x156575[_0x4917('0x1d')]=qs[_0x4917('0x1d')](_0x4f36a5[_0x4917('0x32')][_0x4917('0x1d')]);}return _0x47ce18['getMessages'](_0x156575);}})['then'](function(_0x53b44d){if(_0x53b44d){return _0x53b44d?{'count':_0x17d39b,'rows':_0x53b44d}:null;}})[_0x4917('0x27')](respondWithResult(_0x155b41,null))[_0x4917('0x43')](handleError(_0x155b41,null));};