c3804303974e0b7f27090d408cdd0bb19dd797ef
[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 _0xb798=['findOne','keys','User','removeMembers','addMessage','getMessages','$gte','format','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','end','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','ids','omit','getMembers'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xb798,0xcc));var _0x8b79=function(_0x23648d,_0x593c56){_0x23648d=_0x23648d-0x0;var _0x1f7500=_0xb798[_0x23648d];return _0x1f7500;};'use strict';var emlformat=require(_0x8b79('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8b79('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8b79('0x2'));var moment=require('moment');var BPromise=require(_0x8b79('0x3'));var Mustache=require(_0x8b79('0x4'));var util=require(_0x8b79('0x5'));var path=require(_0x8b79('0x6'));var sox=require(_0x8b79('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b79('0x8'));var _=require(_0x8b79('0x9'));var squel=require(_0x8b79('0xa'));var crypto=require(_0x8b79('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8b79('0xc'));var toCsv=require(_0x8b79('0xd'));var querystring=require(_0x8b79('0xe'));var Papa=require(_0x8b79('0xf'));var Redis=require(_0x8b79('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8b79('0x11'));var hardwareService=require(_0x8b79('0x12'));var logger=require(_0x8b79('0x13'))(_0x8b79('0x14'));var utils=require(_0x8b79('0x15'));var config=require(_0x8b79('0x16'));var licenseUtil=require(_0x8b79('0x17'));var db=require(_0x8b79('0x18'))['db'];config[_0x8b79('0x19')]=_['defaults'](config[_0x8b79('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x8b79('0x1a'))(new Redis(config['redis']));require(_0x8b79('0x1b'))[_0x8b79('0x1c')](socket);function respondWithStatusCode(_0x4218b1,_0x377369){_0x377369=_0x377369||0xcc;return function(_0x20bcef){if(_0x20bcef){return _0x4218b1[_0x8b79('0x1d')](_0x377369);}return _0x4218b1[_0x8b79('0x1e')](_0x377369)['end']();};}function respondWithResult(_0x49fe46,_0x194559){_0x194559=_0x194559||0xc8;return function(_0xefc887){if(_0xefc887){return _0x49fe46[_0x8b79('0x1e')](_0x194559)[_0x8b79('0x1f')](_0xefc887);}};}function respondWithFilteredResult(_0x55331f,_0x346acf){return function(_0x450dab){if(_0x450dab){var _0x49e097=typeof _0x346acf[_0x8b79('0x20')]===_0x8b79('0x21')&&typeof _0x346acf['limit']===_0x8b79('0x21');var _0x19387f=_0x450dab[_0x8b79('0x22')];var _0x3bcd78=_0x49e097?0x0:_0x346acf['offset'];var _0x1ae3ab=_0x49e097?_0x450dab[_0x8b79('0x22')]:_0x346acf['offset']+_0x346acf[_0x8b79('0x23')];var _0x5b6b03;if(_0x1ae3ab>=_0x19387f){_0x1ae3ab=_0x19387f;_0x5b6b03=0xc8;}else{_0x5b6b03=0xce;}_0x55331f[_0x8b79('0x1e')](_0x5b6b03);return _0x55331f[_0x8b79('0x24')](_0x8b79('0x25'),_0x3bcd78+'-'+_0x1ae3ab+'/'+_0x19387f)[_0x8b79('0x1f')](_0x450dab);}return null;};}function patchUpdates(_0xe983eb){return function(_0x30a39f){try{jsonpatch[_0x8b79('0x26')](_0x30a39f,_0xe983eb,!![]);}catch(_0x5c8ada){return BPromise[_0x8b79('0x27')](_0x5c8ada);}return _0x30a39f['save']();};}function saveUpdates(_0x5e9a68,_0x178715){return function(_0x59eb9b){if(_0x59eb9b){return _0x59eb9b[_0x8b79('0x28')](_0x5e9a68)['then'](function(_0x116bf5){return _0x116bf5;});}return null;};}function removeEntity(_0x172534,_0x30b3cc){return function(_0x13575d){if(_0x13575d){return _0x13575d[_0x8b79('0x29')]()['then'](function(){_0x172534[_0x8b79('0x1e')](0xcc)[_0x8b79('0x2a')]();});}};}function handleEntityNotFound(_0x57955b,_0x1000f6){return function(_0x32322c){if(!_0x32322c){_0x57955b['sendStatus'](0x194);}return _0x32322c;};}function handleError(_0x177b45,_0x49bd97){_0x49bd97=_0x49bd97||0x1f4;return function(_0x2688b4){logger[_0x8b79('0x2b')](_0x2688b4[_0x8b79('0x2c')]);if(_0x2688b4[_0x8b79('0x2d')]){delete _0x2688b4[_0x8b79('0x2d')];}_0x177b45['status'](_0x49bd97)[_0x8b79('0x2e')](_0x2688b4);};}exports[_0x8b79('0x2f')]=function(_0x414abd,_0x58eb6e){var _0x58ce15={},_0x459500={},_0x541665={'count':0x0,'rows':[]};var _0x5bec69=_[_0x8b79('0x30')](db[_0x8b79('0x31')][_0x8b79('0x32')],function(_0x110361){return{'name':_0x110361[_0x8b79('0x33')],'type':_0x110361['type'][_0x8b79('0x34')]};});_0x459500[_0x8b79('0x35')]=_[_0x8b79('0x30')](_0x5bec69,_0x8b79('0x2d'));_0x459500[_0x8b79('0x36')]=_['keys'](_0x414abd['query']);_0x459500['filters']=_[_0x8b79('0x37')](_0x459500[_0x8b79('0x35')],_0x459500[_0x8b79('0x36')]);_0x58ce15[_0x8b79('0x38')]=_[_0x8b79('0x37')](_0x459500['model'],qs[_0x8b79('0x39')](_0x414abd[_0x8b79('0x36')]['fields']));_0x58ce15[_0x8b79('0x38')]=_0x58ce15[_0x8b79('0x38')]['length']?_0x58ce15[_0x8b79('0x38')]:_0x459500['model'];if(!_0x414abd[_0x8b79('0x36')][_0x8b79('0x3a')](_0x8b79('0x3b'))){_0x58ce15[_0x8b79('0x23')]=qs[_0x8b79('0x23')](_0x414abd[_0x8b79('0x36')][_0x8b79('0x23')]);_0x58ce15[_0x8b79('0x20')]=qs['offset'](_0x414abd[_0x8b79('0x36')][_0x8b79('0x20')]);}_0x58ce15[_0x8b79('0x3c')]=qs[_0x8b79('0x3d')](_0x414abd[_0x8b79('0x36')][_0x8b79('0x3d')]);_0x58ce15[_0x8b79('0x3e')]=qs[_0x8b79('0x3f')](_[_0x8b79('0x40')](_0x414abd[_0x8b79('0x36')],_0x459500[_0x8b79('0x3f')]),_0x5bec69);if(_0x414abd[_0x8b79('0x36')][_0x8b79('0x41')]){_0x58ce15[_0x8b79('0x3e')]=_[_0x8b79('0x42')](_0x58ce15[_0x8b79('0x3e')],{'$or':_['map'](_0x5bec69,function(_0x40bcd5){if(_0x40bcd5[_0x8b79('0x43')]!==_0x8b79('0x44')){var _0x1bd943={};_0x1bd943[_0x40bcd5[_0x8b79('0x2d')]]={'$like':'%'+_0x414abd[_0x8b79('0x36')][_0x8b79('0x41')]+'%'};return _0x1bd943;}})});}_0x58ce15=_[_0x8b79('0x42')]({},_0x58ce15,_0x414abd[_0x8b79('0x45')]);var _0x481c7c={'where':_0x58ce15['where']};return db[_0x8b79('0x31')][_0x8b79('0x22')](_0x481c7c)[_0x8b79('0x46')](function(_0x5419f3){_0x541665[_0x8b79('0x22')]=_0x5419f3;if(_0x414abd[_0x8b79('0x36')][_0x8b79('0x47')]){_0x58ce15[_0x8b79('0x48')]=[{'all':!![]}];}return db[_0x8b79('0x31')][_0x8b79('0x49')](_0x58ce15);})[_0x8b79('0x46')](function(_0x5deee3){_0x541665[_0x8b79('0x4a')]=_0x5deee3;return _0x541665;})[_0x8b79('0x46')](respondWithFilteredResult(_0x58eb6e,_0x58ce15))[_0x8b79('0x4b')](handleError(_0x58eb6e,null));};exports[_0x8b79('0x4c')]=function(_0x5d4bad,_0x161f8c){var _0x23c609={'raw':!![],'where':{'id':_0x5d4bad[_0x8b79('0x4d')]['id']}},_0x21ebd4={};_0x21ebd4[_0x8b79('0x35')]=_['keys'](db[_0x8b79('0x31')][_0x8b79('0x32')]);_0x21ebd4[_0x8b79('0x36')]=_['keys'](_0x5d4bad[_0x8b79('0x36')]);_0x21ebd4[_0x8b79('0x3f')]=_[_0x8b79('0x37')](_0x21ebd4['model'],_0x21ebd4[_0x8b79('0x36')]);_0x23c609[_0x8b79('0x38')]=_[_0x8b79('0x37')](_0x21ebd4[_0x8b79('0x35')],qs[_0x8b79('0x39')](_0x5d4bad[_0x8b79('0x36')][_0x8b79('0x39')]));_0x23c609['attributes']=_0x23c609[_0x8b79('0x38')][_0x8b79('0x4e')]?_0x23c609[_0x8b79('0x38')]:_0x21ebd4[_0x8b79('0x35')];if(_0x5d4bad[_0x8b79('0x36')]['includeAll']){_0x23c609[_0x8b79('0x48')]=[{'all':!![]}];}_0x23c609=_[_0x8b79('0x42')]({},_0x23c609,_0x5d4bad[_0x8b79('0x45')]);return db[_0x8b79('0x31')][_0x8b79('0x4f')](_0x23c609)['then'](handleEntityNotFound(_0x161f8c,null))[_0x8b79('0x46')](respondWithResult(_0x161f8c,null))[_0x8b79('0x4b')](handleError(_0x161f8c,null));};exports[_0x8b79('0x50')]=function(_0x55472f,_0x3ce74e){return db[_0x8b79('0x31')][_0x8b79('0x50')](_0x55472f[_0x8b79('0x51')],{})['then'](respondWithResult(_0x3ce74e,0xc9))['catch'](handleError(_0x3ce74e,null));};exports[_0x8b79('0x28')]=function(_0x1b2ec0,_0x21def){if(_0x1b2ec0[_0x8b79('0x51')]['id']){delete _0x1b2ec0['body']['id'];}return db[_0x8b79('0x31')][_0x8b79('0x4f')]({'where':{'id':_0x1b2ec0[_0x8b79('0x4d')]['id']}})[_0x8b79('0x46')](handleEntityNotFound(_0x21def,null))['then'](saveUpdates(_0x1b2ec0[_0x8b79('0x51')],null))[_0x8b79('0x46')](respondWithResult(_0x21def,null))[_0x8b79('0x4b')](handleError(_0x21def,null));};exports['destroy']=function(_0x2cdc05,_0x3ce29e){return db[_0x8b79('0x31')][_0x8b79('0x4f')]({'where':{'id':_0x2cdc05[_0x8b79('0x4d')]['id']}})[_0x8b79('0x46')](handleEntityNotFound(_0x3ce29e,null))['then'](removeEntity(_0x3ce29e,null))[_0x8b79('0x4b')](handleError(_0x3ce29e,null));};exports['describe']=function(_0x46bfef,_0x278939){return db[_0x8b79('0x31')][_0x8b79('0x52')]()['then'](respondWithResult(_0x278939,null))[_0x8b79('0x4b')](handleError(_0x278939,null));};exports[_0x8b79('0x53')]=function(_0x21df45,_0x3e35e6,_0x1dc777){return db[_0x8b79('0x54')][_0x8b79('0x22')]({'where':{'ChatGroupId':_0x21df45['params']['id'],'ToId':_0x21df45[_0x8b79('0x55')]['id'],'read':![]}})['then'](function(_0x6031ec){return{'id':_[_0x8b79('0x56')](_0x21df45[_0x8b79('0x4d')]['id']),'count':_0x6031ec};})[_0x8b79('0x46')](respondWithResult(_0x3e35e6,null))[_0x8b79('0x4b')](handleError(_0x3e35e6,null));};exports['addMembers']=function(_0x21a9ef,_0x493b35,_0x13b774){return db[_0x8b79('0x31')][_0x8b79('0x4f')]({'where':{'id':_0x21a9ef[_0x8b79('0x4d')]['id']}})[_0x8b79('0x46')](handleEntityNotFound(_0x493b35,null))[_0x8b79('0x46')](function(_0x204710){if(_0x204710){return _0x204710['addMembers'](_0x21a9ef[_0x8b79('0x51')][_0x8b79('0x57')],_[_0x8b79('0x58')](_0x21a9ef['body'],['ids','id'])||{});}})[_0x8b79('0x46')](respondWithResult(_0x493b35,null))['catch'](handleError(_0x493b35,null));};exports[_0x8b79('0x59')]=function(_0x5d493e,_0x515319,_0x3d2c8a){var _0x4cc60b={};var _0x503d3f={};var _0xb07e5a;var _0x33a469;return db[_0x8b79('0x31')][_0x8b79('0x5a')]({'where':{'id':_0x5d493e[_0x8b79('0x4d')]['id']}})[_0x8b79('0x46')](handleEntityNotFound(_0x515319,null))[_0x8b79('0x46')](function(_0x390bda){if(_0x390bda){_0xb07e5a=_0x390bda;_0x503d3f['model']=_[_0x8b79('0x5b')](db[_0x8b79('0x5c')][_0x8b79('0x32')]);_0x503d3f[_0x8b79('0x36')]=_[_0x8b79('0x5b')](_0x5d493e['query']);_0x503d3f['filters']=_[_0x8b79('0x37')](_0x503d3f[_0x8b79('0x35')],_0x503d3f[_0x8b79('0x36')]);_0x4cc60b[_0x8b79('0x38')]=_[_0x8b79('0x37')](_0x503d3f['model'],qs['fields'](_0x5d493e[_0x8b79('0x36')][_0x8b79('0x39')]));_0x4cc60b[_0x8b79('0x38')]=_0x4cc60b[_0x8b79('0x38')][_0x8b79('0x4e')]?_0x4cc60b[_0x8b79('0x38')]:_0x503d3f[_0x8b79('0x35')];_0x4cc60b['order']=qs[_0x8b79('0x3d')](_0x5d493e[_0x8b79('0x36')]['sort']);_0x4cc60b[_0x8b79('0x3e')]=qs[_0x8b79('0x3f')](_[_0x8b79('0x40')](_0x5d493e['query'],_0x503d3f[_0x8b79('0x3f')]));if(_0x5d493e[_0x8b79('0x36')][_0x8b79('0x41')]){_0x4cc60b[_0x8b79('0x3e')]=_[_0x8b79('0x42')](_0x4cc60b[_0x8b79('0x3e')],{'$or':_[_0x8b79('0x30')](_0x4cc60b[_0x8b79('0x38')],function(_0x12f65b){var _0x377ae1={};_0x377ae1[_0x12f65b]={'$like':'%'+_0x5d493e['query']['filter']+'%'};return _0x377ae1;})});}_0x4cc60b=_[_0x8b79('0x42')]({},_0x4cc60b,_0x5d493e[_0x8b79('0x45')]);return _0xb07e5a[_0x8b79('0x59')](_0x4cc60b);}})[_0x8b79('0x46')](function(_0x1c7a85){if(_0x1c7a85){_0x33a469=_0x1c7a85['length'];if(!_0x5d493e[_0x8b79('0x36')][_0x8b79('0x3a')](_0x8b79('0x3b'))){_0x4cc60b[_0x8b79('0x23')]=qs[_0x8b79('0x23')](_0x5d493e[_0x8b79('0x36')]['limit']);_0x4cc60b[_0x8b79('0x20')]=qs[_0x8b79('0x20')](_0x5d493e['query']['offset']);}return _0xb07e5a[_0x8b79('0x59')](_0x4cc60b);}})[_0x8b79('0x46')](function(_0x5775f1){if(_0x5775f1){return _0x5775f1?{'count':_0x33a469,'rows':_0x5775f1}:null;}})[_0x8b79('0x46')](respondWithResult(_0x515319,null))[_0x8b79('0x4b')](handleError(_0x515319,null));};exports[_0x8b79('0x5d')]=function(_0x4be273,_0xde1e74,_0x542c01){return db[_0x8b79('0x31')][_0x8b79('0x4f')]({'where':{'id':_0x4be273[_0x8b79('0x4d')]['id']}})['then'](handleEntityNotFound(_0xde1e74,null))[_0x8b79('0x46')](function(_0xbcb892){if(_0xbcb892){return _0xbcb892[_0x8b79('0x5d')](_0x4be273[_0x8b79('0x36')][_0x8b79('0x57')]);}})['then'](respondWithStatusCode(_0xde1e74,null))[_0x8b79('0x4b')](handleError(_0xde1e74,null));};exports[_0x8b79('0x5e')]=function(_0x3d730b,_0x2d51ce,_0x1742af){if(_0x3d730b[_0x8b79('0x51')]['id']){delete _0x3d730b['body']['id'];}return db[_0x8b79('0x31')][_0x8b79('0x4f')]({'where':{'id':_0x3d730b[_0x8b79('0x4d')]['id']}})[_0x8b79('0x46')](handleEntityNotFound(_0x2d51ce,null))[_0x8b79('0x46')](function(_0x4ee762){if(_0x4ee762){_0x3d730b[_0x8b79('0x51')]['ChatGroupId']=_0x4ee762['id'];return db[_0x8b79('0x54')][_0x8b79('0x50')](_0x3d730b[_0x8b79('0x51')]);}})[_0x8b79('0x46')](respondWithResult(_0x2d51ce,null))[_0x8b79('0x4b')](handleError(_0x2d51ce,null));};exports[_0x8b79('0x5f')]=function(_0x1035d1,_0x26e4e1,_0x46930c){var _0x56507c={};var _0x8ee065={};var _0x5b53b5;var _0x4158ce;return db['ChatGroup'][_0x8b79('0x5a')]({'where':{'id':_0x1035d1[_0x8b79('0x4d')]['id']}})[_0x8b79('0x46')](handleEntityNotFound(_0x26e4e1,null))[_0x8b79('0x46')](function(_0x261779){if(_0x261779){_0x5b53b5=_0x261779;_0x8ee065[_0x8b79('0x35')]=_[_0x8b79('0x5b')](db['ChatInternalMessage'][_0x8b79('0x32')]);_0x8ee065[_0x8b79('0x36')]=_['keys'](_0x1035d1['query']);_0x8ee065['filters']=_[_0x8b79('0x37')](_0x8ee065['model'],_0x8ee065[_0x8b79('0x36')]);_0x56507c[_0x8b79('0x38')]=_[_0x8b79('0x37')](_0x8ee065[_0x8b79('0x35')],qs[_0x8b79('0x39')](_0x1035d1[_0x8b79('0x36')][_0x8b79('0x39')]));_0x56507c['attributes']=_0x56507c[_0x8b79('0x38')][_0x8b79('0x4e')]?_0x56507c[_0x8b79('0x38')]:_0x8ee065[_0x8b79('0x35')];_0x56507c[_0x8b79('0x3c')]=qs['sort'](_0x1035d1['query'][_0x8b79('0x3d')]);_0x56507c['where']=qs[_0x8b79('0x3f')](_['pick'](_0x1035d1['query'],_0x8ee065['filters']));if(_0x1035d1[_0x8b79('0x36')]['filter']){_0x56507c[_0x8b79('0x3e')]=_[_0x8b79('0x42')](_0x56507c[_0x8b79('0x3e')],{'$or':_['map'](_0x56507c[_0x8b79('0x38')],function(_0x4adbd7){var _0x5e4fc5={};_0x5e4fc5[_0x4adbd7]={'$like':'%'+_0x1035d1[_0x8b79('0x36')][_0x8b79('0x41')]+'%'};return _0x5e4fc5;})});}if(_0x1035d1[_0x8b79('0x36')][_0x8b79('0x60')]){var _0x520603=_0x1035d1[_0x8b79('0x36')][_0x8b79('0x60')]['split'](',');var _0x2e6764={};_0x2e6764[_0x520603[0x0]]={'$gte':moment(_0x520603[0x1])[_0x8b79('0x61')]('YYYY-MM-DD\x20HH:mm:ss')};_0x56507c[_0x8b79('0x3e')]=_[_0x8b79('0x42')](_0x56507c[_0x8b79('0x3e')],_0x2e6764);}_0x56507c=_[_0x8b79('0x42')]({},_0x56507c,_0x1035d1[_0x8b79('0x45')]);return _0x5b53b5[_0x8b79('0x5f')](_0x56507c);}})['then'](function(_0x257c9d){if(_0x257c9d){_0x4158ce=_0x257c9d[_0x8b79('0x4e')];if(!_0x1035d1[_0x8b79('0x36')][_0x8b79('0x3a')](_0x8b79('0x3b'))){_0x56507c[_0x8b79('0x23')]=qs[_0x8b79('0x23')](_0x1035d1[_0x8b79('0x36')][_0x8b79('0x23')]);_0x56507c[_0x8b79('0x20')]=qs['offset'](_0x1035d1[_0x8b79('0x36')][_0x8b79('0x20')]);}return _0x5b53b5['getMessages'](_0x56507c);}})[_0x8b79('0x46')](function(_0x3f3b09){if(_0x3f3b09){return _0x3f3b09?{'count':_0x4158ce,'rows':_0x3f3b09}:null;}})[_0x8b79('0x46')](respondWithResult(_0x26e4e1,null))[_0x8b79('0x4b')](handleError(_0x26e4e1,null));};