8ca374387b6949abb5414bb9e039d896d798a0ab
[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 _0x28c7=['include','findAll','rows','catch','params','rawAttributes','find','create','body','describe','getUnread','user','toInteger','addMembers','ids','getMembers','findOne','User','pick','removeMembers','addMessage','ChatInternalMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','fieldName','type','key','map','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','ChatGroup','includeAll'];(function(_0x27c0f8,_0xd1bd2f){var _0x426b4e=function(_0x1d3f4b){while(--_0x1d3f4b){_0x27c0f8['push'](_0x27c0f8['shift']());}};_0x426b4e(++_0xd1bd2f);}(_0x28c7,0x7d));var _0x728c=function(_0x476350,_0x481037){_0x476350=_0x476350-0x0;var _0x452d18=_0x28c7[_0x476350];return _0x452d18;};'use strict';var emlformat=require(_0x728c('0x0'));var rimraf=require(_0x728c('0x1'));var zipdir=require(_0x728c('0x2'));var jsonpatch=require(_0x728c('0x3'));var rp=require(_0x728c('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x728c('0x5'));var util=require(_0x728c('0x6'));var path=require(_0x728c('0x7'));var sox=require(_0x728c('0x8'));var csv=require(_0x728c('0x9'));var ejs=require(_0x728c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x728c('0xb'));var crypto=require(_0x728c('0xc'));var jsforce=require(_0x728c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x728c('0x9'));var querystring=require('querystring');var Papa=require(_0x728c('0xe'));var Redis=require(_0x728c('0xf'));var authService=require(_0x728c('0x10'));var qs=require(_0x728c('0x11'));var as=require(_0x728c('0x12'));var hardwareService=require(_0x728c('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x728c('0x14'));var config=require(_0x728c('0x15'));var licenseUtil=require(_0x728c('0x16'));var db=require(_0x728c('0x17'))['db'];config[_0x728c('0x18')]=_[_0x728c('0x19')](config[_0x728c('0x18')],{'host':_0x728c('0x1a'),'port':0x18eb});var socket=require(_0x728c('0x1b'))(new Redis(config['redis']));require(_0x728c('0x1c'))[_0x728c('0x1d')](socket);function respondWithStatusCode(_0x5ec169,_0x8afd0b){_0x8afd0b=_0x8afd0b||0xcc;return function(_0x4b5046){if(_0x4b5046){return _0x5ec169[_0x728c('0x1e')](_0x8afd0b);}return _0x5ec169[_0x728c('0x1f')](_0x8afd0b)[_0x728c('0x20')]();};}function respondWithResult(_0x11e97f,_0x8ab394){_0x8ab394=_0x8ab394||0xc8;return function(_0x2b621b){if(_0x2b621b){return _0x11e97f[_0x728c('0x1f')](_0x8ab394)['json'](_0x2b621b);}};}function respondWithFilteredResult(_0x594e64,_0x320b3d){return function(_0x2b18dc){if(_0x2b18dc){var _0x3cdf6b=typeof _0x320b3d[_0x728c('0x21')]===_0x728c('0x22')&&typeof _0x320b3d[_0x728c('0x23')]===_0x728c('0x22');var _0x38fb5c=_0x2b18dc[_0x728c('0x24')];var _0x1440f8=_0x3cdf6b?0x0:_0x320b3d[_0x728c('0x21')];var _0xc1a8e3=_0x3cdf6b?_0x2b18dc[_0x728c('0x24')]:_0x320b3d[_0x728c('0x21')]+_0x320b3d[_0x728c('0x23')];var _0x3178e6;if(_0xc1a8e3>=_0x38fb5c){_0xc1a8e3=_0x38fb5c;_0x3178e6=0xc8;}else{_0x3178e6=0xce;}_0x594e64['status'](_0x3178e6);return _0x594e64[_0x728c('0x25')]('Content-Range',_0x1440f8+'-'+_0xc1a8e3+'/'+_0x38fb5c)[_0x728c('0x26')](_0x2b18dc);}return null;};}function patchUpdates(_0x1a3b51){return function(_0x3a24c8){try{jsonpatch[_0x728c('0x27')](_0x3a24c8,_0x1a3b51,!![]);}catch(_0x48ec9b){return BPromise[_0x728c('0x28')](_0x48ec9b);}return _0x3a24c8[_0x728c('0x29')]();};}function saveUpdates(_0x504b2d,_0x35edd6){return function(_0x505c10){if(_0x505c10){return _0x505c10[_0x728c('0x2a')](_0x504b2d)[_0x728c('0x2b')](function(_0x42cf4f){return _0x42cf4f;});}return null;};}function removeEntity(_0x189ddc,_0x40bb3e){return function(_0x3a4645){if(_0x3a4645){return _0x3a4645[_0x728c('0x2c')]()[_0x728c('0x2b')](function(){_0x189ddc['status'](0xcc)[_0x728c('0x20')]();});}};}function handleEntityNotFound(_0x57a8d1,_0x38ea70){return function(_0x510e56){if(!_0x510e56){_0x57a8d1[_0x728c('0x1e')](0x194);}return _0x510e56;};}function handleError(_0x652ad1,_0x1347f4){_0x1347f4=_0x1347f4||0x1f4;return function(_0x4a8da7){logger[_0x728c('0x2d')](_0x4a8da7[_0x728c('0x2e')]);if(_0x4a8da7[_0x728c('0x2f')]){delete _0x4a8da7[_0x728c('0x2f')];}_0x652ad1['status'](_0x1347f4)[_0x728c('0x30')](_0x4a8da7);};}exports['index']=function(_0x21c7ef,_0x9dc0dd){var _0x49c6eb={},_0x11dc0d={},_0x2e9e9f={'count':0x0,'rows':[]};var _0x12c727=_['map'](db['ChatGroup']['rawAttributes'],function(_0xe340fc){return{'name':_0xe340fc[_0x728c('0x31')],'type':_0xe340fc[_0x728c('0x32')][_0x728c('0x33')]};});_0x11dc0d['model']=_[_0x728c('0x34')](_0x12c727,'name');_0x11dc0d['query']=_[_0x728c('0x35')](_0x21c7ef[_0x728c('0x36')]);_0x11dc0d[_0x728c('0x37')]=_[_0x728c('0x38')](_0x11dc0d[_0x728c('0x39')],_0x11dc0d[_0x728c('0x36')]);_0x49c6eb['attributes']=_[_0x728c('0x38')](_0x11dc0d[_0x728c('0x39')],qs[_0x728c('0x3a')](_0x21c7ef[_0x728c('0x36')][_0x728c('0x3a')]));_0x49c6eb[_0x728c('0x3b')]=_0x49c6eb['attributes'][_0x728c('0x3c')]?_0x49c6eb[_0x728c('0x3b')]:_0x11dc0d[_0x728c('0x39')];if(!_0x21c7ef[_0x728c('0x36')][_0x728c('0x3d')](_0x728c('0x3e'))){_0x49c6eb['limit']=qs[_0x728c('0x23')](_0x21c7ef[_0x728c('0x36')][_0x728c('0x23')]);_0x49c6eb[_0x728c('0x21')]=qs[_0x728c('0x21')](_0x21c7ef[_0x728c('0x36')][_0x728c('0x21')]);}_0x49c6eb[_0x728c('0x3f')]=qs[_0x728c('0x40')](_0x21c7ef[_0x728c('0x36')]['sort']);_0x49c6eb[_0x728c('0x41')]=qs['filters'](_['pick'](_0x21c7ef['query'],_0x11dc0d['filters']),_0x12c727);if(_0x21c7ef[_0x728c('0x36')][_0x728c('0x42')]){_0x49c6eb[_0x728c('0x41')]=_[_0x728c('0x43')](_0x49c6eb[_0x728c('0x41')],{'$or':_[_0x728c('0x34')](_0x12c727,function(_0x12e445){if(_0x12e445[_0x728c('0x32')]!=='VIRTUAL'){var _0x38c7d9={};_0x38c7d9[_0x12e445[_0x728c('0x2f')]]={'$like':'%'+_0x21c7ef[_0x728c('0x36')][_0x728c('0x42')]+'%'};return _0x38c7d9;}})});}_0x49c6eb=_[_0x728c('0x43')]({},_0x49c6eb,_0x21c7ef[_0x728c('0x44')]);var _0x42c751={'where':_0x49c6eb[_0x728c('0x41')]};return db[_0x728c('0x45')][_0x728c('0x24')](_0x42c751)[_0x728c('0x2b')](function(_0x128b78){_0x2e9e9f[_0x728c('0x24')]=_0x128b78;if(_0x21c7ef[_0x728c('0x36')][_0x728c('0x46')]){_0x49c6eb[_0x728c('0x47')]=[{'all':!![]}];}return db[_0x728c('0x45')][_0x728c('0x48')](_0x49c6eb);})[_0x728c('0x2b')](function(_0x44259d){_0x2e9e9f[_0x728c('0x49')]=_0x44259d;return _0x2e9e9f;})[_0x728c('0x2b')](respondWithFilteredResult(_0x9dc0dd,_0x49c6eb))[_0x728c('0x4a')](handleError(_0x9dc0dd,null));};exports['show']=function(_0x1fd311,_0x6e83c0){var _0x1ba3c4={'raw':!![],'where':{'id':_0x1fd311[_0x728c('0x4b')]['id']}},_0x3a9a9a={};_0x3a9a9a['model']=_[_0x728c('0x35')](db[_0x728c('0x45')][_0x728c('0x4c')]);_0x3a9a9a[_0x728c('0x36')]=_[_0x728c('0x35')](_0x1fd311[_0x728c('0x36')]);_0x3a9a9a[_0x728c('0x37')]=_[_0x728c('0x38')](_0x3a9a9a[_0x728c('0x39')],_0x3a9a9a['query']);_0x1ba3c4[_0x728c('0x3b')]=_[_0x728c('0x38')](_0x3a9a9a[_0x728c('0x39')],qs[_0x728c('0x3a')](_0x1fd311[_0x728c('0x36')]['fields']));_0x1ba3c4[_0x728c('0x3b')]=_0x1ba3c4[_0x728c('0x3b')]['length']?_0x1ba3c4['attributes']:_0x3a9a9a[_0x728c('0x39')];if(_0x1fd311[_0x728c('0x36')]['includeAll']){_0x1ba3c4[_0x728c('0x47')]=[{'all':!![]}];}_0x1ba3c4=_[_0x728c('0x43')]({},_0x1ba3c4,_0x1fd311[_0x728c('0x44')]);return db[_0x728c('0x45')][_0x728c('0x4d')](_0x1ba3c4)['then'](handleEntityNotFound(_0x6e83c0,null))['then'](respondWithResult(_0x6e83c0,null))[_0x728c('0x4a')](handleError(_0x6e83c0,null));};exports[_0x728c('0x4e')]=function(_0x6a39a5,_0x3dec30){return db[_0x728c('0x45')]['create'](_0x6a39a5[_0x728c('0x4f')],{})[_0x728c('0x2b')](respondWithResult(_0x3dec30,0xc9))[_0x728c('0x4a')](handleError(_0x3dec30,null));};exports[_0x728c('0x2a')]=function(_0x2c2709,_0x2431e0){if(_0x2c2709[_0x728c('0x4f')]['id']){delete _0x2c2709[_0x728c('0x4f')]['id'];}return db[_0x728c('0x45')][_0x728c('0x4d')]({'where':{'id':_0x2c2709[_0x728c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2431e0,null))[_0x728c('0x2b')](saveUpdates(_0x2c2709['body'],null))[_0x728c('0x2b')](respondWithResult(_0x2431e0,null))[_0x728c('0x4a')](handleError(_0x2431e0,null));};exports[_0x728c('0x2c')]=function(_0x9e7300,_0x509cf1){return db['ChatGroup'][_0x728c('0x4d')]({'where':{'id':_0x9e7300[_0x728c('0x4b')]['id']}})[_0x728c('0x2b')](handleEntityNotFound(_0x509cf1,null))[_0x728c('0x2b')](removeEntity(_0x509cf1,null))[_0x728c('0x4a')](handleError(_0x509cf1,null));};exports['describe']=function(_0x277764,_0x2a1e04){return db[_0x728c('0x45')][_0x728c('0x50')]()[_0x728c('0x2b')](respondWithResult(_0x2a1e04,null))[_0x728c('0x4a')](handleError(_0x2a1e04,null));};exports[_0x728c('0x51')]=function(_0x48630d,_0x4621c9,_0x2fda2e){return db['ChatInternalMessage']['count']({'where':{'ChatGroupId':_0x48630d['params']['id'],'ToId':_0x48630d[_0x728c('0x52')]['id'],'read':![]}})[_0x728c('0x2b')](function(_0x20bc46){return{'id':_[_0x728c('0x53')](_0x48630d['params']['id']),'count':_0x20bc46};})['then'](respondWithResult(_0x4621c9,null))['catch'](handleError(_0x4621c9,null));};exports[_0x728c('0x54')]=function(_0x591d64,_0x38e45a,_0x12e3a3){return db['ChatGroup'][_0x728c('0x4d')]({'where':{'id':_0x591d64[_0x728c('0x4b')]['id']}})[_0x728c('0x2b')](handleEntityNotFound(_0x38e45a,null))[_0x728c('0x2b')](function(_0x8ef293){if(_0x8ef293){return _0x8ef293[_0x728c('0x54')](_0x591d64[_0x728c('0x4f')]['ids'],_['omit'](_0x591d64[_0x728c('0x4f')],[_0x728c('0x55'),'id'])||{});}})[_0x728c('0x2b')](respondWithResult(_0x38e45a,null))[_0x728c('0x4a')](handleError(_0x38e45a,null));};exports[_0x728c('0x56')]=function(_0x3caec6,_0x2acc95,_0x2dbd2b){var _0x197beb={};var _0x45ee62={};var _0x5e772b;var _0x5f29da;return db[_0x728c('0x45')][_0x728c('0x57')]({'where':{'id':_0x3caec6[_0x728c('0x4b')]['id']}})[_0x728c('0x2b')](handleEntityNotFound(_0x2acc95,null))[_0x728c('0x2b')](function(_0x2fe8cd){if(_0x2fe8cd){_0x5e772b=_0x2fe8cd;_0x45ee62[_0x728c('0x39')]=_[_0x728c('0x35')](db[_0x728c('0x58')][_0x728c('0x4c')]);_0x45ee62['query']=_[_0x728c('0x35')](_0x3caec6[_0x728c('0x36')]);_0x45ee62[_0x728c('0x37')]=_[_0x728c('0x38')](_0x45ee62['model'],_0x45ee62[_0x728c('0x36')]);_0x197beb[_0x728c('0x3b')]=_[_0x728c('0x38')](_0x45ee62[_0x728c('0x39')],qs[_0x728c('0x3a')](_0x3caec6[_0x728c('0x36')][_0x728c('0x3a')]));_0x197beb[_0x728c('0x3b')]=_0x197beb['attributes'][_0x728c('0x3c')]?_0x197beb[_0x728c('0x3b')]:_0x45ee62[_0x728c('0x39')];_0x197beb[_0x728c('0x3f')]=qs['sort'](_0x3caec6[_0x728c('0x36')][_0x728c('0x40')]);_0x197beb[_0x728c('0x41')]=qs[_0x728c('0x37')](_[_0x728c('0x59')](_0x3caec6['query'],_0x45ee62[_0x728c('0x37')]));if(_0x3caec6[_0x728c('0x36')][_0x728c('0x42')]){_0x197beb[_0x728c('0x41')]=_[_0x728c('0x43')](_0x197beb[_0x728c('0x41')],{'$or':_[_0x728c('0x34')](_0x197beb[_0x728c('0x3b')],function(_0x4d047e){var _0x4b899b={};_0x4b899b[_0x4d047e]={'$like':'%'+_0x3caec6[_0x728c('0x36')][_0x728c('0x42')]+'%'};return _0x4b899b;})});}_0x197beb=_[_0x728c('0x43')]({},_0x197beb,_0x3caec6[_0x728c('0x44')]);return _0x5e772b[_0x728c('0x56')](_0x197beb);}})[_0x728c('0x2b')](function(_0x108adf){if(_0x108adf){_0x5f29da=_0x108adf['length'];if(!_0x3caec6[_0x728c('0x36')]['hasOwnProperty'](_0x728c('0x3e'))){_0x197beb[_0x728c('0x23')]=qs['limit'](_0x3caec6[_0x728c('0x36')][_0x728c('0x23')]);_0x197beb[_0x728c('0x21')]=qs['offset'](_0x3caec6[_0x728c('0x36')][_0x728c('0x21')]);}return _0x5e772b[_0x728c('0x56')](_0x197beb);}})[_0x728c('0x2b')](function(_0x5ce0ca){if(_0x5ce0ca){return _0x5ce0ca?{'count':_0x5f29da,'rows':_0x5ce0ca}:null;}})['then'](respondWithResult(_0x2acc95,null))[_0x728c('0x4a')](handleError(_0x2acc95,null));};exports[_0x728c('0x5a')]=function(_0x3f6cf,_0x4dbd70,_0x447601){return db['ChatGroup'][_0x728c('0x4d')]({'where':{'id':_0x3f6cf[_0x728c('0x4b')]['id']}})[_0x728c('0x2b')](handleEntityNotFound(_0x4dbd70,null))[_0x728c('0x2b')](function(_0x14889b){if(_0x14889b){return _0x14889b['removeMembers'](_0x3f6cf[_0x728c('0x36')][_0x728c('0x55')]);}})[_0x728c('0x2b')](respondWithStatusCode(_0x4dbd70,null))[_0x728c('0x4a')](handleError(_0x4dbd70,null));};exports[_0x728c('0x5b')]=function(_0x4f6be0,_0x511cae,_0x275e67){if(_0x4f6be0[_0x728c('0x4f')]['id']){delete _0x4f6be0['body']['id'];}return db[_0x728c('0x45')][_0x728c('0x4d')]({'where':{'id':_0x4f6be0[_0x728c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x511cae,null))[_0x728c('0x2b')](function(_0x21dd0b){if(_0x21dd0b){_0x4f6be0[_0x728c('0x4f')]['ChatGroupId']=_0x21dd0b['id'];return db[_0x728c('0x5c')][_0x728c('0x4e')](_0x4f6be0[_0x728c('0x4f')]);}})[_0x728c('0x2b')](respondWithResult(_0x511cae,null))['catch'](handleError(_0x511cae,null));};exports['getMessages']=function(_0x59f627,_0x25a662,_0x16e3c1){var _0x4d1a48={};var _0x33dd0c={};var _0x4d2ac5;var _0x4484b3;return db['ChatGroup'][_0x728c('0x57')]({'where':{'id':_0x59f627[_0x728c('0x4b')]['id']}})[_0x728c('0x2b')](handleEntityNotFound(_0x25a662,null))[_0x728c('0x2b')](function(_0x1a78bf){if(_0x1a78bf){_0x4d2ac5=_0x1a78bf;_0x33dd0c[_0x728c('0x39')]=_['keys'](db['ChatInternalMessage'][_0x728c('0x4c')]);_0x33dd0c[_0x728c('0x36')]=_[_0x728c('0x35')](_0x59f627[_0x728c('0x36')]);_0x33dd0c[_0x728c('0x37')]=_[_0x728c('0x38')](_0x33dd0c[_0x728c('0x39')],_0x33dd0c[_0x728c('0x36')]);_0x4d1a48[_0x728c('0x3b')]=_['intersection'](_0x33dd0c[_0x728c('0x39')],qs['fields'](_0x59f627[_0x728c('0x36')][_0x728c('0x3a')]));_0x4d1a48[_0x728c('0x3b')]=_0x4d1a48['attributes'][_0x728c('0x3c')]?_0x4d1a48[_0x728c('0x3b')]:_0x33dd0c[_0x728c('0x39')];_0x4d1a48[_0x728c('0x3f')]=qs['sort'](_0x59f627['query'][_0x728c('0x40')]);_0x4d1a48[_0x728c('0x41')]=qs['filters'](_['pick'](_0x59f627['query'],_0x33dd0c[_0x728c('0x37')]));if(_0x59f627[_0x728c('0x36')][_0x728c('0x42')]){_0x4d1a48[_0x728c('0x41')]=_[_0x728c('0x43')](_0x4d1a48['where'],{'$or':_[_0x728c('0x34')](_0x4d1a48[_0x728c('0x3b')],function(_0x418d2d){var _0x496fda={};_0x496fda[_0x418d2d]={'$like':'%'+_0x59f627[_0x728c('0x36')][_0x728c('0x42')]+'%'};return _0x496fda;})});}if(_0x59f627[_0x728c('0x36')][_0x728c('0x5d')]){var _0x5e3af5=_0x59f627[_0x728c('0x36')][_0x728c('0x5d')][_0x728c('0x5e')](',');var _0x15aafa={};_0x15aafa[_0x5e3af5[0x0]]={'$gte':moment(_0x5e3af5[0x1])[_0x728c('0x5f')](_0x728c('0x60'))};_0x4d1a48[_0x728c('0x41')]=_[_0x728c('0x43')](_0x4d1a48[_0x728c('0x41')],_0x15aafa);}_0x4d1a48=_[_0x728c('0x43')]({},_0x4d1a48,_0x59f627[_0x728c('0x44')]);return _0x4d2ac5[_0x728c('0x61')](_0x4d1a48);}})[_0x728c('0x2b')](function(_0xc795b2){if(_0xc795b2){_0x4484b3=_0xc795b2[_0x728c('0x3c')];if(!_0x59f627[_0x728c('0x36')][_0x728c('0x3d')](_0x728c('0x3e'))){_0x4d1a48[_0x728c('0x23')]=qs[_0x728c('0x23')](_0x59f627[_0x728c('0x36')][_0x728c('0x23')]);_0x4d1a48[_0x728c('0x21')]=qs[_0x728c('0x21')](_0x59f627[_0x728c('0x36')][_0x728c('0x21')]);}return _0x4d2ac5['getMessages'](_0x4d1a48);}})['then'](function(_0x19a3d2){if(_0x19a3d2){return _0x19a3d2?{'count':_0x4484b3,'rows':_0x19a3d2}:null;}})[_0x728c('0x2b')](respondWithResult(_0x25a662,null))[_0x728c('0x4a')](handleError(_0x25a662,null));};