22fab5bcd16387bdc3a9924d79877e8c86cd8cf9
[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 _0x2eef=['getMembers','User','order','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','error','stack','name','send','ChatGroup','rawAttributes','type','model','map','query','keys','attributes','length','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','rows','catch','show','params','intersection','fields','find','create','body','update','describe','getUnread','ChatInternalMessage','user','addMembers','ids','omit'];(function(_0xd1c894,_0x2a7fc5){var _0x41f4f0=function(_0x138327){while(--_0x138327){_0xd1c894['push'](_0xd1c894['shift']());}};_0x41f4f0(++_0x2a7fc5);}(_0x2eef,0x127));var _0xf2ee=function(_0xcebc6,_0x4d8162){_0xcebc6=_0xcebc6-0x0;var _0x530ca8=_0x2eef[_0xcebc6];return _0x530ca8;};'use strict';var emlformat=require(_0xf2ee('0x0'));var rimraf=require(_0xf2ee('0x1'));var zipdir=require(_0xf2ee('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf2ee('0x3'));var moment=require(_0xf2ee('0x4'));var BPromise=require(_0xf2ee('0x5'));var Mustache=require('mustache');var util=require(_0xf2ee('0x6'));var path=require(_0xf2ee('0x7'));var sox=require('sox');var csv=require(_0xf2ee('0x8'));var ejs=require(_0xf2ee('0x9'));var fs=require('fs');var fs_extra=require(_0xf2ee('0xa'));var _=require(_0xf2ee('0xb'));var squel=require(_0xf2ee('0xc'));var crypto=require('crypto');var jsforce=require(_0xf2ee('0xd'));var deskjs=require(_0xf2ee('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf2ee('0xf'));var Redis=require(_0xf2ee('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf2ee('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2ee('0x12'))('api');var utils=require(_0xf2ee('0x13'));var config=require(_0xf2ee('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf2ee('0x15'))['db'];config[_0xf2ee('0x16')]=_[_0xf2ee('0x17')](config[_0xf2ee('0x16')],{'host':_0xf2ee('0x18'),'port':0x18eb});var socket=require(_0xf2ee('0x19'))(new Redis(config['redis']));require(_0xf2ee('0x1a'))['register'](socket);function respondWithStatusCode(_0x343877,_0x4fb966){_0x4fb966=_0x4fb966||0xcc;return function(_0x594835){if(_0x594835){return _0x343877[_0xf2ee('0x1b')](_0x4fb966);}return _0x343877[_0xf2ee('0x1c')](_0x4fb966)[_0xf2ee('0x1d')]();};}function respondWithResult(_0x6f1927,_0x2505ba){_0x2505ba=_0x2505ba||0xc8;return function(_0x57edb3){if(_0x57edb3){return _0x6f1927[_0xf2ee('0x1c')](_0x2505ba)[_0xf2ee('0x1e')](_0x57edb3);}};}function respondWithFilteredResult(_0x1a5dc5,_0x3c1e6b){return function(_0x39d558){if(_0x39d558){var _0x34a20c=typeof _0x3c1e6b[_0xf2ee('0x1f')]===_0xf2ee('0x20')&&typeof _0x3c1e6b['limit']===_0xf2ee('0x20');var _0x23b609=_0x39d558[_0xf2ee('0x21')];var _0x218af1=_0x34a20c?0x0:_0x3c1e6b['offset'];var _0x3d49c0=_0x34a20c?_0x39d558[_0xf2ee('0x21')]:_0x3c1e6b[_0xf2ee('0x1f')]+_0x3c1e6b[_0xf2ee('0x22')];var _0x5c08ed;if(_0x3d49c0>=_0x23b609){_0x3d49c0=_0x23b609;_0x5c08ed=0xc8;}else{_0x5c08ed=0xce;}_0x1a5dc5[_0xf2ee('0x1c')](_0x5c08ed);return _0x1a5dc5[_0xf2ee('0x23')](_0xf2ee('0x24'),_0x218af1+'-'+_0x3d49c0+'/'+_0x23b609)[_0xf2ee('0x1e')](_0x39d558);}return null;};}function patchUpdates(_0x1c3922){return function(_0x3b7971){try{jsonpatch[_0xf2ee('0x25')](_0x3b7971,_0x1c3922,!![]);}catch(_0x5423cb){return BPromise['reject'](_0x5423cb);}return _0x3b7971[_0xf2ee('0x26')]();};}function saveUpdates(_0x2edc4d,_0x1c0185){return function(_0x1374e8){if(_0x1374e8){return _0x1374e8['update'](_0x2edc4d)[_0xf2ee('0x27')](function(_0xd3b7bb){return _0xd3b7bb;});}return null;};}function removeEntity(_0x2faa8c,_0x35bf6b){return function(_0x17c377){if(_0x17c377){return _0x17c377[_0xf2ee('0x28')]()[_0xf2ee('0x27')](function(){_0x2faa8c[_0xf2ee('0x1c')](0xcc)[_0xf2ee('0x1d')]();});}};}function handleEntityNotFound(_0x397e2c,_0x55b2fd){return function(_0x5f2084){if(!_0x5f2084){_0x397e2c['sendStatus'](0x194);}return _0x5f2084;};}function handleError(_0x2d0afd,_0x14d58c){_0x14d58c=_0x14d58c||0x1f4;return function(_0x6c6e69){logger[_0xf2ee('0x29')](_0x6c6e69[_0xf2ee('0x2a')]);if(_0x6c6e69[_0xf2ee('0x2b')]){delete _0x6c6e69['name'];}_0x2d0afd['status'](_0x14d58c)[_0xf2ee('0x2c')](_0x6c6e69);};}exports['index']=function(_0x4b175,_0x357f7d){var _0x2a1f3d={},_0x5840de={},_0x4d4edf={'count':0x0,'rows':[]};var _0x12fe27=_['map'](db[_0xf2ee('0x2d')][_0xf2ee('0x2e')],function(_0xe164b4){return{'name':_0xe164b4['fieldName'],'type':_0xe164b4[_0xf2ee('0x2f')]['key']};});_0x5840de[_0xf2ee('0x30')]=_[_0xf2ee('0x31')](_0x12fe27,_0xf2ee('0x2b'));_0x5840de[_0xf2ee('0x32')]=_[_0xf2ee('0x33')](_0x4b175[_0xf2ee('0x32')]);_0x5840de['filters']=_['intersection'](_0x5840de['model'],_0x5840de[_0xf2ee('0x32')]);_0x2a1f3d[_0xf2ee('0x34')]=_['intersection'](_0x5840de[_0xf2ee('0x30')],qs['fields'](_0x4b175[_0xf2ee('0x32')]['fields']));_0x2a1f3d[_0xf2ee('0x34')]=_0x2a1f3d[_0xf2ee('0x34')][_0xf2ee('0x35')]?_0x2a1f3d[_0xf2ee('0x34')]:_0x5840de[_0xf2ee('0x30')];if(!_0x4b175[_0xf2ee('0x32')][_0xf2ee('0x36')]('nolimit')){_0x2a1f3d[_0xf2ee('0x22')]=qs[_0xf2ee('0x22')](_0x4b175[_0xf2ee('0x32')][_0xf2ee('0x22')]);_0x2a1f3d['offset']=qs['offset'](_0x4b175['query']['offset']);}_0x2a1f3d['order']=qs['sort'](_0x4b175[_0xf2ee('0x32')][_0xf2ee('0x37')]);_0x2a1f3d[_0xf2ee('0x38')]=qs[_0xf2ee('0x39')](_[_0xf2ee('0x3a')](_0x4b175[_0xf2ee('0x32')],_0x5840de[_0xf2ee('0x39')]),_0x12fe27);if(_0x4b175[_0xf2ee('0x32')]['filter']){_0x2a1f3d['where']=_[_0xf2ee('0x3b')](_0x2a1f3d[_0xf2ee('0x38')],{'$or':_[_0xf2ee('0x31')](_0x12fe27,function(_0x1ab6d4){if(_0x1ab6d4[_0xf2ee('0x2f')]!==_0xf2ee('0x3c')){var _0x367369={};_0x367369[_0x1ab6d4[_0xf2ee('0x2b')]]={'$like':'%'+_0x4b175['query'][_0xf2ee('0x3d')]+'%'};return _0x367369;}})});}_0x2a1f3d=_[_0xf2ee('0x3b')]({},_0x2a1f3d,_0x4b175[_0xf2ee('0x3e')]);var _0x5d0b54={'where':_0x2a1f3d[_0xf2ee('0x38')]};return db[_0xf2ee('0x2d')][_0xf2ee('0x21')](_0x5d0b54)[_0xf2ee('0x27')](function(_0x312549){_0x4d4edf[_0xf2ee('0x21')]=_0x312549;if(_0x4b175[_0xf2ee('0x32')][_0xf2ee('0x3f')]){_0x2a1f3d['include']=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0x2a1f3d);})['then'](function(_0x690259){_0x4d4edf[_0xf2ee('0x40')]=_0x690259;return _0x4d4edf;})[_0xf2ee('0x27')](respondWithFilteredResult(_0x357f7d,_0x2a1f3d))[_0xf2ee('0x41')](handleError(_0x357f7d,null));};exports[_0xf2ee('0x42')]=function(_0x17c721,_0x46030a){var _0x16248c={'raw':!![],'where':{'id':_0x17c721[_0xf2ee('0x43')]['id']}},_0x5f534f={};_0x5f534f['model']=_['keys'](db[_0xf2ee('0x2d')][_0xf2ee('0x2e')]);_0x5f534f[_0xf2ee('0x32')]=_[_0xf2ee('0x33')](_0x17c721[_0xf2ee('0x32')]);_0x5f534f['filters']=_['intersection'](_0x5f534f['model'],_0x5f534f[_0xf2ee('0x32')]);_0x16248c[_0xf2ee('0x34')]=_[_0xf2ee('0x44')](_0x5f534f[_0xf2ee('0x30')],qs[_0xf2ee('0x45')](_0x17c721['query']['fields']));_0x16248c[_0xf2ee('0x34')]=_0x16248c['attributes'][_0xf2ee('0x35')]?_0x16248c[_0xf2ee('0x34')]:_0x5f534f[_0xf2ee('0x30')];if(_0x17c721[_0xf2ee('0x32')][_0xf2ee('0x3f')]){_0x16248c['include']=[{'all':!![]}];}_0x16248c=_[_0xf2ee('0x3b')]({},_0x16248c,_0x17c721[_0xf2ee('0x3e')]);return db[_0xf2ee('0x2d')][_0xf2ee('0x46')](_0x16248c)['then'](handleEntityNotFound(_0x46030a,null))[_0xf2ee('0x27')](respondWithResult(_0x46030a,null))[_0xf2ee('0x41')](handleError(_0x46030a,null));};exports[_0xf2ee('0x47')]=function(_0xbaf195,_0x5ce34d){return db['ChatGroup'][_0xf2ee('0x47')](_0xbaf195[_0xf2ee('0x48')],{})[_0xf2ee('0x27')](respondWithResult(_0x5ce34d,0xc9))[_0xf2ee('0x41')](handleError(_0x5ce34d,null));};exports[_0xf2ee('0x49')]=function(_0x4def69,_0x156d6c){if(_0x4def69[_0xf2ee('0x48')]['id']){delete _0x4def69[_0xf2ee('0x48')]['id'];}return db[_0xf2ee('0x2d')]['find']({'where':{'id':_0x4def69['params']['id']}})['then'](handleEntityNotFound(_0x156d6c,null))[_0xf2ee('0x27')](saveUpdates(_0x4def69['body'],null))['then'](respondWithResult(_0x156d6c,null))[_0xf2ee('0x41')](handleError(_0x156d6c,null));};exports[_0xf2ee('0x28')]=function(_0x5523eb,_0x5f46a9){return db['ChatGroup'][_0xf2ee('0x46')]({'where':{'id':_0x5523eb[_0xf2ee('0x43')]['id']}})[_0xf2ee('0x27')](handleEntityNotFound(_0x5f46a9,null))[_0xf2ee('0x27')](removeEntity(_0x5f46a9,null))['catch'](handleError(_0x5f46a9,null));};exports[_0xf2ee('0x4a')]=function(_0x9de24c,_0x57c3bc){return db[_0xf2ee('0x2d')][_0xf2ee('0x4a')]()[_0xf2ee('0x27')](respondWithResult(_0x57c3bc,null))[_0xf2ee('0x41')](handleError(_0x57c3bc,null));};exports[_0xf2ee('0x4b')]=function(_0x5392dd,_0x48c591,_0x49ed61){return db[_0xf2ee('0x4c')][_0xf2ee('0x21')]({'where':{'ChatGroupId':_0x5392dd[_0xf2ee('0x43')]['id'],'ToId':_0x5392dd[_0xf2ee('0x4d')]['id'],'read':![]}})[_0xf2ee('0x27')](function(_0x3df21a){return{'id':_['toInteger'](_0x5392dd[_0xf2ee('0x43')]['id']),'count':_0x3df21a};})['then'](respondWithResult(_0x48c591,null))[_0xf2ee('0x41')](handleError(_0x48c591,null));};exports['addMembers']=function(_0x2e3ad8,_0x30637b,_0x5d998b){return db[_0xf2ee('0x2d')]['find']({'where':{'id':_0x2e3ad8[_0xf2ee('0x43')]['id']}})['then'](handleEntityNotFound(_0x30637b,null))['then'](function(_0x117789){if(_0x117789){return _0x117789[_0xf2ee('0x4e')](_0x2e3ad8[_0xf2ee('0x48')][_0xf2ee('0x4f')],_[_0xf2ee('0x50')](_0x2e3ad8[_0xf2ee('0x48')],[_0xf2ee('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x30637b,null))[_0xf2ee('0x41')](handleError(_0x30637b,null));};exports[_0xf2ee('0x51')]=function(_0x125322,_0x365626,_0x18bdac){var _0x1ff680={};var _0x18922e={};var _0xc332ee;var _0x57391e;return db['ChatGroup']['findOne']({'where':{'id':_0x125322[_0xf2ee('0x43')]['id']}})['then'](handleEntityNotFound(_0x365626,null))['then'](function(_0x470e60){if(_0x470e60){_0xc332ee=_0x470e60;_0x18922e[_0xf2ee('0x30')]=_[_0xf2ee('0x33')](db[_0xf2ee('0x52')][_0xf2ee('0x2e')]);_0x18922e[_0xf2ee('0x32')]=_[_0xf2ee('0x33')](_0x125322[_0xf2ee('0x32')]);_0x18922e[_0xf2ee('0x39')]=_[_0xf2ee('0x44')](_0x18922e[_0xf2ee('0x30')],_0x18922e[_0xf2ee('0x32')]);_0x1ff680['attributes']=_['intersection'](_0x18922e[_0xf2ee('0x30')],qs[_0xf2ee('0x45')](_0x125322[_0xf2ee('0x32')]['fields']));_0x1ff680['attributes']=_0x1ff680['attributes']['length']?_0x1ff680[_0xf2ee('0x34')]:_0x18922e[_0xf2ee('0x30')];_0x1ff680[_0xf2ee('0x53')]=qs[_0xf2ee('0x37')](_0x125322[_0xf2ee('0x32')][_0xf2ee('0x37')]);_0x1ff680['where']=qs[_0xf2ee('0x39')](_[_0xf2ee('0x3a')](_0x125322[_0xf2ee('0x32')],_0x18922e[_0xf2ee('0x39')]));if(_0x125322[_0xf2ee('0x32')][_0xf2ee('0x3d')]){_0x1ff680['where']=_[_0xf2ee('0x3b')](_0x1ff680['where'],{'$or':_[_0xf2ee('0x31')](_0x1ff680['attributes'],function(_0x1ae4ec){var _0x353d01={};_0x353d01[_0x1ae4ec]={'$like':'%'+_0x125322[_0xf2ee('0x32')][_0xf2ee('0x3d')]+'%'};return _0x353d01;})});}_0x1ff680=_[_0xf2ee('0x3b')]({},_0x1ff680,_0x125322[_0xf2ee('0x3e')]);return _0xc332ee['getMembers'](_0x1ff680);}})[_0xf2ee('0x27')](function(_0x450e85){if(_0x450e85){_0x57391e=_0x450e85['length'];if(!_0x125322[_0xf2ee('0x32')][_0xf2ee('0x36')](_0xf2ee('0x54'))){_0x1ff680[_0xf2ee('0x22')]=qs[_0xf2ee('0x22')](_0x125322[_0xf2ee('0x32')]['limit']);_0x1ff680[_0xf2ee('0x1f')]=qs[_0xf2ee('0x1f')](_0x125322[_0xf2ee('0x32')][_0xf2ee('0x1f')]);}return _0xc332ee[_0xf2ee('0x51')](_0x1ff680);}})['then'](function(_0x163157){if(_0x163157){return _0x163157?{'count':_0x57391e,'rows':_0x163157}:null;}})[_0xf2ee('0x27')](respondWithResult(_0x365626,null))[_0xf2ee('0x41')](handleError(_0x365626,null));};exports[_0xf2ee('0x55')]=function(_0x14e5cb,_0x16924d,_0x5dba93){return db[_0xf2ee('0x2d')]['find']({'where':{'id':_0x14e5cb[_0xf2ee('0x43')]['id']}})['then'](handleEntityNotFound(_0x16924d,null))[_0xf2ee('0x27')](function(_0x166b3f){if(_0x166b3f){return _0x166b3f[_0xf2ee('0x55')](_0x14e5cb['query'][_0xf2ee('0x4f')]);}})[_0xf2ee('0x27')](respondWithStatusCode(_0x16924d,null))[_0xf2ee('0x41')](handleError(_0x16924d,null));};exports[_0xf2ee('0x56')]=function(_0x235835,_0x538609,_0x1997d8){if(_0x235835[_0xf2ee('0x48')]['id']){delete _0x235835[_0xf2ee('0x48')]['id'];}return db['ChatGroup'][_0xf2ee('0x46')]({'where':{'id':_0x235835[_0xf2ee('0x43')]['id']}})[_0xf2ee('0x27')](handleEntityNotFound(_0x538609,null))[_0xf2ee('0x27')](function(_0x410528){if(_0x410528){_0x235835['body'][_0xf2ee('0x57')]=_0x410528['id'];return db[_0xf2ee('0x4c')][_0xf2ee('0x47')](_0x235835[_0xf2ee('0x48')]);}})[_0xf2ee('0x27')](respondWithResult(_0x538609,null))[_0xf2ee('0x41')](handleError(_0x538609,null));};exports[_0xf2ee('0x58')]=function(_0xe43de4,_0x34fc03,_0x8122df){var _0x58c07a={};var _0x5ced05={};var _0x2f6d97;var _0x30bfcf;return db[_0xf2ee('0x2d')][_0xf2ee('0x59')]({'where':{'id':_0xe43de4[_0xf2ee('0x43')]['id']}})[_0xf2ee('0x27')](handleEntityNotFound(_0x34fc03,null))[_0xf2ee('0x27')](function(_0x157ac5){if(_0x157ac5){_0x2f6d97=_0x157ac5;_0x5ced05[_0xf2ee('0x30')]=_['keys'](db[_0xf2ee('0x4c')]['rawAttributes']);_0x5ced05[_0xf2ee('0x32')]=_[_0xf2ee('0x33')](_0xe43de4[_0xf2ee('0x32')]);_0x5ced05[_0xf2ee('0x39')]=_['intersection'](_0x5ced05['model'],_0x5ced05['query']);_0x58c07a[_0xf2ee('0x34')]=_[_0xf2ee('0x44')](_0x5ced05[_0xf2ee('0x30')],qs['fields'](_0xe43de4[_0xf2ee('0x32')]['fields']));_0x58c07a[_0xf2ee('0x34')]=_0x58c07a['attributes'][_0xf2ee('0x35')]?_0x58c07a[_0xf2ee('0x34')]:_0x5ced05[_0xf2ee('0x30')];_0x58c07a['order']=qs[_0xf2ee('0x37')](_0xe43de4['query'][_0xf2ee('0x37')]);_0x58c07a['where']=qs[_0xf2ee('0x39')](_['pick'](_0xe43de4[_0xf2ee('0x32')],_0x5ced05['filters']));if(_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x3d')]){_0x58c07a[_0xf2ee('0x38')]=_['merge'](_0x58c07a[_0xf2ee('0x38')],{'$or':_[_0xf2ee('0x31')](_0x58c07a[_0xf2ee('0x34')],function(_0x3217e1){var _0x1410f7={};_0x1410f7[_0x3217e1]={'$like':'%'+_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x3d')]+'%'};return _0x1410f7;})});}if(_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x5a')]){var _0x54fa41=_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x5a')][_0xf2ee('0x5b')](',');var _0x308a34={};_0x308a34[_0x54fa41[0x0]]={'$gte':moment(_0x54fa41[0x1])[_0xf2ee('0x5c')](_0xf2ee('0x5d'))};_0x58c07a[_0xf2ee('0x38')]=_[_0xf2ee('0x3b')](_0x58c07a['where'],_0x308a34);}_0x58c07a=_[_0xf2ee('0x3b')]({},_0x58c07a,_0xe43de4[_0xf2ee('0x3e')]);return _0x2f6d97[_0xf2ee('0x58')](_0x58c07a);}})[_0xf2ee('0x27')](function(_0x522bfd){if(_0x522bfd){_0x30bfcf=_0x522bfd[_0xf2ee('0x35')];if(!_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x36')]('nolimit')){_0x58c07a[_0xf2ee('0x22')]=qs[_0xf2ee('0x22')](_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x22')]);_0x58c07a[_0xf2ee('0x1f')]=qs[_0xf2ee('0x1f')](_0xe43de4[_0xf2ee('0x32')][_0xf2ee('0x1f')]);}return _0x2f6d97['getMessages'](_0x58c07a);}})[_0xf2ee('0x27')](function(_0x2e1c38){if(_0x2e1c38){return _0x2e1c38?{'count':_0x30bfcf,'rows':_0x2e1c38}:null;}})[_0xf2ee('0x27')](respondWithResult(_0x34fc03,null))[_0xf2ee('0x41')](handleError(_0x34fc03,null));};