57b33cef1c16685ea40c6d3579aba9fc5ced67ec
[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 _0xb919=['localhost','socket.io-emitter','./chatGroup.socket','register','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','sendStatus','error','name','index','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','ChatGroup','includeAll','findAll','show','params','include','find','catch','create','body','update','describe','getUnread','user','toInteger','addMembers','ids','getMembers','findOne','length','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x58df23,_0x3e9eb9){var _0x2fcd18=function(_0x5f4e06){while(--_0x5f4e06){_0x58df23['push'](_0x58df23['shift']());}};_0x2fcd18(++_0x3e9eb9);}(_0xb919,0x10e));var _0x9b91=function(_0x2afbbc,_0x55324e){_0x2afbbc=_0x2afbbc-0x0;var _0x290ebd=_0xb919[_0x2afbbc];return _0x290ebd;};'use strict';var emlformat=require(_0x9b91('0x0'));var rimraf=require(_0x9b91('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9b91('0x2'));var moment=require(_0x9b91('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9b91('0x4'));var util=require(_0x9b91('0x5'));var path=require(_0x9b91('0x6'));var sox=require(_0x9b91('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9b91('0x8'));var _=require(_0x9b91('0x9'));var squel=require(_0x9b91('0xa'));var crypto=require(_0x9b91('0xb'));var jsforce=require(_0x9b91('0xc'));var deskjs=require(_0x9b91('0xd'));var toCsv=require(_0x9b91('0xe'));var querystring=require(_0x9b91('0xf'));var Papa=require(_0x9b91('0x10'));var Redis=require(_0x9b91('0x11'));var authService=require(_0x9b91('0x12'));var qs=require(_0x9b91('0x13'));var as=require(_0x9b91('0x14'));var hardwareService=require(_0x9b91('0x15'));var logger=require(_0x9b91('0x16'))(_0x9b91('0x17'));var utils=require(_0x9b91('0x18'));var config=require(_0x9b91('0x19'));var licenseUtil=require(_0x9b91('0x1a'));var db=require(_0x9b91('0x1b'))['db'];config[_0x9b91('0x1c')]=_[_0x9b91('0x1d')](config['redis'],{'host':_0x9b91('0x1e'),'port':0x18eb});var socket=require(_0x9b91('0x1f'))(new Redis(config['redis']));require(_0x9b91('0x20'))[_0x9b91('0x21')](socket);function respondWithStatusCode(_0x2fc165,_0x539bfc){_0x539bfc=_0x539bfc||0xcc;return function(_0x34fdc3){if(_0x34fdc3){return _0x2fc165['sendStatus'](_0x539bfc);}return _0x2fc165[_0x9b91('0x22')](_0x539bfc)['end']();};}function respondWithResult(_0x5b1f5f,_0x548985){_0x548985=_0x548985||0xc8;return function(_0x156414){if(_0x156414){return _0x5b1f5f[_0x9b91('0x22')](_0x548985)[_0x9b91('0x23')](_0x156414);}};}function respondWithFilteredResult(_0x56cb16,_0x1d089a){return function(_0x223aea){if(_0x223aea){var _0x5d80c4=typeof _0x1d089a[_0x9b91('0x24')]===_0x9b91('0x25')&&typeof _0x1d089a[_0x9b91('0x26')]===_0x9b91('0x25');var _0x55a30e=_0x223aea[_0x9b91('0x27')];var _0x2b324f=_0x5d80c4?0x0:_0x1d089a['offset'];var _0x54cecb=_0x5d80c4?_0x223aea[_0x9b91('0x27')]:_0x1d089a[_0x9b91('0x24')]+_0x1d089a[_0x9b91('0x26')];var _0x261c29;if(_0x54cecb>=_0x55a30e){_0x54cecb=_0x55a30e;_0x261c29=0xc8;}else{_0x261c29=0xce;}_0x56cb16['status'](_0x261c29);return _0x56cb16[_0x9b91('0x28')]('Content-Range',_0x2b324f+'-'+_0x54cecb+'/'+_0x55a30e)[_0x9b91('0x23')](_0x223aea);}return null;};}function patchUpdates(_0x34b99e){return function(_0x3709d4){try{jsonpatch[_0x9b91('0x29')](_0x3709d4,_0x34b99e,!![]);}catch(_0xe4c919){return BPromise[_0x9b91('0x2a')](_0xe4c919);}return _0x3709d4[_0x9b91('0x2b')]();};}function saveUpdates(_0x1f0b27,_0x460b47){return function(_0x3fb459){if(_0x3fb459){return _0x3fb459['update'](_0x1f0b27)['then'](function(_0x5e0b23){return _0x5e0b23;});}return null;};}function removeEntity(_0x259696,_0x133683){return function(_0x59459c){if(_0x59459c){return _0x59459c[_0x9b91('0x2c')]()[_0x9b91('0x2d')](function(){_0x259696[_0x9b91('0x22')](0xcc)[_0x9b91('0x2e')]();});}};}function handleEntityNotFound(_0x5ca84b,_0x597408){return function(_0xdabbe5){if(!_0xdabbe5){_0x5ca84b[_0x9b91('0x2f')](0x194);}return _0xdabbe5;};}function handleError(_0xf6d4fa,_0x672e82){_0x672e82=_0x672e82||0x1f4;return function(_0x19dbfb){logger[_0x9b91('0x30')](_0x19dbfb['stack']);if(_0x19dbfb['name']){delete _0x19dbfb[_0x9b91('0x31')];}_0xf6d4fa[_0x9b91('0x22')](_0x672e82)['send'](_0x19dbfb);};}exports[_0x9b91('0x32')]=function(_0x2b9d6b,_0x3c5c18){var _0x5b7086={},_0x2850d5={},_0x1e8b06={'count':0x0,'rows':[]};var _0x503bf9=_['map'](db['ChatGroup'][_0x9b91('0x33')],function(_0x4f4049){return{'name':_0x4f4049[_0x9b91('0x34')],'type':_0x4f4049['type']['key']};});_0x2850d5[_0x9b91('0x35')]=_[_0x9b91('0x36')](_0x503bf9,_0x9b91('0x31'));_0x2850d5[_0x9b91('0x37')]=_[_0x9b91('0x38')](_0x2b9d6b[_0x9b91('0x37')]);_0x2850d5[_0x9b91('0x39')]=_[_0x9b91('0x3a')](_0x2850d5['model'],_0x2850d5[_0x9b91('0x37')]);_0x5b7086[_0x9b91('0x3b')]=_['intersection'](_0x2850d5[_0x9b91('0x35')],qs[_0x9b91('0x3c')](_0x2b9d6b[_0x9b91('0x37')][_0x9b91('0x3c')]));_0x5b7086[_0x9b91('0x3b')]=_0x5b7086['attributes']['length']?_0x5b7086[_0x9b91('0x3b')]:_0x2850d5[_0x9b91('0x35')];if(!_0x2b9d6b[_0x9b91('0x37')][_0x9b91('0x3d')](_0x9b91('0x3e'))){_0x5b7086['limit']=qs[_0x9b91('0x26')](_0x2b9d6b[_0x9b91('0x37')][_0x9b91('0x26')]);_0x5b7086[_0x9b91('0x24')]=qs[_0x9b91('0x24')](_0x2b9d6b[_0x9b91('0x37')]['offset']);}_0x5b7086[_0x9b91('0x3f')]=qs[_0x9b91('0x40')](_0x2b9d6b['query'][_0x9b91('0x40')]);_0x5b7086[_0x9b91('0x41')]=qs['filters'](_[_0x9b91('0x42')](_0x2b9d6b[_0x9b91('0x37')],_0x2850d5[_0x9b91('0x39')]),_0x503bf9);if(_0x2b9d6b[_0x9b91('0x37')]['filter']){_0x5b7086[_0x9b91('0x41')]=_[_0x9b91('0x43')](_0x5b7086[_0x9b91('0x41')],{'$or':_[_0x9b91('0x36')](_0x503bf9,function(_0x37b908){if(_0x37b908[_0x9b91('0x44')]!==_0x9b91('0x45')){var _0xcfe278={};_0xcfe278[_0x37b908['name']]={'$like':'%'+_0x2b9d6b[_0x9b91('0x37')][_0x9b91('0x46')]+'%'};return _0xcfe278;}})});}_0x5b7086=_[_0x9b91('0x43')]({},_0x5b7086,_0x2b9d6b[_0x9b91('0x47')]);var _0x21e184={'where':_0x5b7086[_0x9b91('0x41')]};return db[_0x9b91('0x48')][_0x9b91('0x27')](_0x21e184)[_0x9b91('0x2d')](function(_0x24dfa7){_0x1e8b06[_0x9b91('0x27')]=_0x24dfa7;if(_0x2b9d6b[_0x9b91('0x37')][_0x9b91('0x49')]){_0x5b7086['include']=[{'all':!![]}];}return db['ChatGroup'][_0x9b91('0x4a')](_0x5b7086);})['then'](function(_0x4330b9){_0x1e8b06['rows']=_0x4330b9;return _0x1e8b06;})[_0x9b91('0x2d')](respondWithFilteredResult(_0x3c5c18,_0x5b7086))['catch'](handleError(_0x3c5c18,null));};exports[_0x9b91('0x4b')]=function(_0x3c7859,_0x51c259){var _0x24d521={'raw':!![],'where':{'id':_0x3c7859[_0x9b91('0x4c')]['id']}},_0x27ae92={};_0x27ae92[_0x9b91('0x35')]=_['keys'](db[_0x9b91('0x48')][_0x9b91('0x33')]);_0x27ae92[_0x9b91('0x37')]=_[_0x9b91('0x38')](_0x3c7859[_0x9b91('0x37')]);_0x27ae92[_0x9b91('0x39')]=_[_0x9b91('0x3a')](_0x27ae92[_0x9b91('0x35')],_0x27ae92[_0x9b91('0x37')]);_0x24d521[_0x9b91('0x3b')]=_[_0x9b91('0x3a')](_0x27ae92[_0x9b91('0x35')],qs['fields'](_0x3c7859[_0x9b91('0x37')][_0x9b91('0x3c')]));_0x24d521['attributes']=_0x24d521[_0x9b91('0x3b')]['length']?_0x24d521[_0x9b91('0x3b')]:_0x27ae92[_0x9b91('0x35')];if(_0x3c7859['query'][_0x9b91('0x49')]){_0x24d521[_0x9b91('0x4d')]=[{'all':!![]}];}_0x24d521=_[_0x9b91('0x43')]({},_0x24d521,_0x3c7859[_0x9b91('0x47')]);return db['ChatGroup'][_0x9b91('0x4e')](_0x24d521)['then'](handleEntityNotFound(_0x51c259,null))[_0x9b91('0x2d')](respondWithResult(_0x51c259,null))[_0x9b91('0x4f')](handleError(_0x51c259,null));};exports[_0x9b91('0x50')]=function(_0x312f04,_0x5edad1){return db[_0x9b91('0x48')][_0x9b91('0x50')](_0x312f04[_0x9b91('0x51')],{})[_0x9b91('0x2d')](respondWithResult(_0x5edad1,0xc9))['catch'](handleError(_0x5edad1,null));};exports[_0x9b91('0x52')]=function(_0x1251a5,_0x5684a0){if(_0x1251a5[_0x9b91('0x51')]['id']){delete _0x1251a5[_0x9b91('0x51')]['id'];}return db[_0x9b91('0x48')][_0x9b91('0x4e')]({'where':{'id':_0x1251a5['params']['id']}})[_0x9b91('0x2d')](handleEntityNotFound(_0x5684a0,null))[_0x9b91('0x2d')](saveUpdates(_0x1251a5['body'],null))[_0x9b91('0x2d')](respondWithResult(_0x5684a0,null))[_0x9b91('0x4f')](handleError(_0x5684a0,null));};exports['destroy']=function(_0x3e8bf1,_0x27a40b){return db[_0x9b91('0x48')]['find']({'where':{'id':_0x3e8bf1['params']['id']}})['then'](handleEntityNotFound(_0x27a40b,null))[_0x9b91('0x2d')](removeEntity(_0x27a40b,null))[_0x9b91('0x4f')](handleError(_0x27a40b,null));};exports[_0x9b91('0x53')]=function(_0x5581f4,_0x3d6024){return db[_0x9b91('0x48')][_0x9b91('0x53')]()[_0x9b91('0x2d')](respondWithResult(_0x3d6024,null))[_0x9b91('0x4f')](handleError(_0x3d6024,null));};exports[_0x9b91('0x54')]=function(_0x17487a,_0x47196d,_0x5e365b){return db['ChatInternalMessage'][_0x9b91('0x27')]({'where':{'ChatGroupId':_0x17487a[_0x9b91('0x4c')]['id'],'ToId':_0x17487a[_0x9b91('0x55')]['id'],'read':![]}})[_0x9b91('0x2d')](function(_0x206a86){return{'id':_[_0x9b91('0x56')](_0x17487a['params']['id']),'count':_0x206a86};})['then'](respondWithResult(_0x47196d,null))['catch'](handleError(_0x47196d,null));};exports[_0x9b91('0x57')]=function(_0x21c2b5,_0xc75009,_0x82f4d1){return db['ChatGroup'][_0x9b91('0x4e')]({'where':{'id':_0x21c2b5['params']['id']}})[_0x9b91('0x2d')](handleEntityNotFound(_0xc75009,null))['then'](function(_0x39a8b7){if(_0x39a8b7){return _0x39a8b7[_0x9b91('0x57')](_0x21c2b5[_0x9b91('0x51')]['ids'],_['omit'](_0x21c2b5[_0x9b91('0x51')],[_0x9b91('0x58'),'id'])||{});}})[_0x9b91('0x2d')](respondWithResult(_0xc75009,null))[_0x9b91('0x4f')](handleError(_0xc75009,null));};exports[_0x9b91('0x59')]=function(_0x1b7dc2,_0x2085c6,_0x165509){var _0x569a73={};var _0x1630a2={};var _0x238203;var _0x32881c;return db[_0x9b91('0x48')][_0x9b91('0x5a')]({'where':{'id':_0x1b7dc2[_0x9b91('0x4c')]['id']}})[_0x9b91('0x2d')](handleEntityNotFound(_0x2085c6,null))[_0x9b91('0x2d')](function(_0x3a2076){if(_0x3a2076){_0x238203=_0x3a2076;_0x1630a2[_0x9b91('0x35')]=_[_0x9b91('0x38')](db['User'][_0x9b91('0x33')]);_0x1630a2[_0x9b91('0x37')]=_[_0x9b91('0x38')](_0x1b7dc2[_0x9b91('0x37')]);_0x1630a2[_0x9b91('0x39')]=_[_0x9b91('0x3a')](_0x1630a2[_0x9b91('0x35')],_0x1630a2[_0x9b91('0x37')]);_0x569a73[_0x9b91('0x3b')]=_[_0x9b91('0x3a')](_0x1630a2[_0x9b91('0x35')],qs[_0x9b91('0x3c')](_0x1b7dc2[_0x9b91('0x37')][_0x9b91('0x3c')]));_0x569a73['attributes']=_0x569a73[_0x9b91('0x3b')][_0x9b91('0x5b')]?_0x569a73[_0x9b91('0x3b')]:_0x1630a2[_0x9b91('0x35')];_0x569a73['order']=qs[_0x9b91('0x40')](_0x1b7dc2['query'][_0x9b91('0x40')]);_0x569a73[_0x9b91('0x41')]=qs[_0x9b91('0x39')](_[_0x9b91('0x42')](_0x1b7dc2[_0x9b91('0x37')],_0x1630a2['filters']));if(_0x1b7dc2[_0x9b91('0x37')][_0x9b91('0x46')]){_0x569a73[_0x9b91('0x41')]=_[_0x9b91('0x43')](_0x569a73[_0x9b91('0x41')],{'$or':_[_0x9b91('0x36')](_0x569a73[_0x9b91('0x3b')],function(_0x4da358){var _0x2c1601={};_0x2c1601[_0x4da358]={'$like':'%'+_0x1b7dc2['query'][_0x9b91('0x46')]+'%'};return _0x2c1601;})});}_0x569a73=_[_0x9b91('0x43')]({},_0x569a73,_0x1b7dc2[_0x9b91('0x47')]);return _0x238203[_0x9b91('0x59')](_0x569a73);}})['then'](function(_0x49e5fd){if(_0x49e5fd){_0x32881c=_0x49e5fd[_0x9b91('0x5b')];if(!_0x1b7dc2[_0x9b91('0x37')]['hasOwnProperty']('nolimit')){_0x569a73[_0x9b91('0x26')]=qs[_0x9b91('0x26')](_0x1b7dc2[_0x9b91('0x37')]['limit']);_0x569a73['offset']=qs[_0x9b91('0x24')](_0x1b7dc2['query']['offset']);}return _0x238203[_0x9b91('0x59')](_0x569a73);}})[_0x9b91('0x2d')](function(_0x2be4ba){if(_0x2be4ba){return _0x2be4ba?{'count':_0x32881c,'rows':_0x2be4ba}:null;}})[_0x9b91('0x2d')](respondWithResult(_0x2085c6,null))[_0x9b91('0x4f')](handleError(_0x2085c6,null));};exports['removeMembers']=function(_0x62071e,_0x375f84,_0x3ebf44){return db[_0x9b91('0x48')][_0x9b91('0x4e')]({'where':{'id':_0x62071e[_0x9b91('0x4c')]['id']}})[_0x9b91('0x2d')](handleEntityNotFound(_0x375f84,null))[_0x9b91('0x2d')](function(_0x20f169){if(_0x20f169){return _0x20f169[_0x9b91('0x5c')](_0x62071e[_0x9b91('0x37')]['ids']);}})[_0x9b91('0x2d')](respondWithStatusCode(_0x375f84,null))[_0x9b91('0x4f')](handleError(_0x375f84,null));};exports[_0x9b91('0x5d')]=function(_0x52fee2,_0x4e885b,_0x15b192){if(_0x52fee2[_0x9b91('0x51')]['id']){delete _0x52fee2[_0x9b91('0x51')]['id'];}return db[_0x9b91('0x48')][_0x9b91('0x4e')]({'where':{'id':_0x52fee2[_0x9b91('0x4c')]['id']}})[_0x9b91('0x2d')](handleEntityNotFound(_0x4e885b,null))[_0x9b91('0x2d')](function(_0x335ed6){if(_0x335ed6){_0x52fee2[_0x9b91('0x51')][_0x9b91('0x5e')]=_0x335ed6['id'];return db[_0x9b91('0x5f')][_0x9b91('0x50')](_0x52fee2[_0x9b91('0x51')]);}})[_0x9b91('0x2d')](respondWithResult(_0x4e885b,null))['catch'](handleError(_0x4e885b,null));};exports[_0x9b91('0x60')]=function(_0xc7820b,_0x26d98e,_0x5d8bcc){var _0x2be5e7={};var _0x16280f={};var _0xaf7070;var _0x499131;return db[_0x9b91('0x48')][_0x9b91('0x5a')]({'where':{'id':_0xc7820b[_0x9b91('0x4c')]['id']}})[_0x9b91('0x2d')](handleEntityNotFound(_0x26d98e,null))['then'](function(_0x41f37c){if(_0x41f37c){_0xaf7070=_0x41f37c;_0x16280f['model']=_['keys'](db[_0x9b91('0x5f')][_0x9b91('0x33')]);_0x16280f[_0x9b91('0x37')]=_[_0x9b91('0x38')](_0xc7820b[_0x9b91('0x37')]);_0x16280f[_0x9b91('0x39')]=_[_0x9b91('0x3a')](_0x16280f[_0x9b91('0x35')],_0x16280f['query']);_0x2be5e7[_0x9b91('0x3b')]=_[_0x9b91('0x3a')](_0x16280f[_0x9b91('0x35')],qs[_0x9b91('0x3c')](_0xc7820b['query'][_0x9b91('0x3c')]));_0x2be5e7[_0x9b91('0x3b')]=_0x2be5e7[_0x9b91('0x3b')]['length']?_0x2be5e7[_0x9b91('0x3b')]:_0x16280f[_0x9b91('0x35')];_0x2be5e7[_0x9b91('0x3f')]=qs['sort'](_0xc7820b[_0x9b91('0x37')]['sort']);_0x2be5e7[_0x9b91('0x41')]=qs[_0x9b91('0x39')](_[_0x9b91('0x42')](_0xc7820b['query'],_0x16280f['filters']));if(_0xc7820b[_0x9b91('0x37')][_0x9b91('0x46')]){_0x2be5e7[_0x9b91('0x41')]=_['merge'](_0x2be5e7['where'],{'$or':_[_0x9b91('0x36')](_0x2be5e7['attributes'],function(_0x25ec16){var _0x2b1ca6={};_0x2b1ca6[_0x25ec16]={'$like':'%'+_0xc7820b['query'][_0x9b91('0x46')]+'%'};return _0x2b1ca6;})});}if(_0xc7820b[_0x9b91('0x37')][_0x9b91('0x61')]){var _0xe03d6=_0xc7820b['query']['$gte']['split'](',');var _0x2236a2={};_0x2236a2[_0xe03d6[0x0]]={'$gte':moment(_0xe03d6[0x1])[_0x9b91('0x62')](_0x9b91('0x63'))};_0x2be5e7[_0x9b91('0x41')]=_[_0x9b91('0x43')](_0x2be5e7[_0x9b91('0x41')],_0x2236a2);}_0x2be5e7=_[_0x9b91('0x43')]({},_0x2be5e7,_0xc7820b[_0x9b91('0x47')]);return _0xaf7070[_0x9b91('0x60')](_0x2be5e7);}})['then'](function(_0x37140c){if(_0x37140c){_0x499131=_0x37140c[_0x9b91('0x5b')];if(!_0xc7820b['query']['hasOwnProperty'](_0x9b91('0x3e'))){_0x2be5e7[_0x9b91('0x26')]=qs[_0x9b91('0x26')](_0xc7820b[_0x9b91('0x37')][_0x9b91('0x26')]);_0x2be5e7[_0x9b91('0x24')]=qs[_0x9b91('0x24')](_0xc7820b[_0x9b91('0x37')]['offset']);}return _0xaf7070[_0x9b91('0x60')](_0x2be5e7);}})[_0x9b91('0x2d')](function(_0x2cad7f){if(_0x2cad7f){return _0x2cad7f?{'count':_0x499131,'rows':_0x2cad7f}:null;}})['then'](respondWithResult(_0x26d98e,null))[_0x9b91('0x4f')](handleError(_0x26d98e,null));};