d77707a375802ca46d5c7c667aa6692d5bc0eb4c
[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 _0x05f5=['update','then','destroy','status','error','stack','name','index','map','ChatGroup','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','ChatInternalMessage','toInteger','addMembers','omit','ids','getMembers','findOne','User','addMessage','ChatGroupId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','request-promise','moment','bluebird','util','path','fs-extra','lodash','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','reject','save'];(function(_0x4235b3,_0x4295b9){var _0x5a6cc9=function(_0x3cd80d){while(--_0x3cd80d){_0x4235b3['push'](_0x4235b3['shift']());}};_0x5a6cc9(++_0x4295b9);}(_0x05f5,0xef));var _0x505f=function(_0x8be9fb,_0x2f90d9){_0x8be9fb=_0x8be9fb-0x0;var _0x3b41ac=_0x05f5[_0x8be9fb];return _0x3b41ac;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x505f('0x0'));var moment=require(_0x505f('0x1'));var BPromise=require(_0x505f('0x2'));var Mustache=require('mustache');var util=require(_0x505f('0x3'));var path=require(_0x505f('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x505f('0x5'));var _=require(_0x505f('0x6'));var squel=require('squel');var crypto=require(_0x505f('0x7'));var jsforce=require('jsforce');var deskjs=require(_0x505f('0x8'));var toCsv=require(_0x505f('0x9'));var querystring=require('querystring');var Papa=require(_0x505f('0xa'));var Redis=require(_0x505f('0xb'));var authService=require(_0x505f('0xc'));var qs=require(_0x505f('0xd'));var as=require(_0x505f('0xe'));var hardwareService=require(_0x505f('0xf'));var logger=require(_0x505f('0x10'))('api');var utils=require(_0x505f('0x11'));var config=require(_0x505f('0x12'));var licenseUtil=require(_0x505f('0x13'));var db=require(_0x505f('0x14'))['db'];config[_0x505f('0x15')]=_[_0x505f('0x16')](config[_0x505f('0x15')],{'host':_0x505f('0x17'),'port':0x18eb});var socket=require(_0x505f('0x18'))(new Redis(config[_0x505f('0x15')]));require(_0x505f('0x19'))['register'](socket);function respondWithStatusCode(_0x120aec,_0x146ae1){_0x146ae1=_0x146ae1||0xcc;return function(_0x1c73d1){if(_0x1c73d1){return _0x120aec[_0x505f('0x1a')](_0x146ae1);}return _0x120aec['status'](_0x146ae1)[_0x505f('0x1b')]();};}function respondWithResult(_0x224880,_0x1cf1df){_0x1cf1df=_0x1cf1df||0xc8;return function(_0x27bd0d){if(_0x27bd0d){return _0x224880['status'](_0x1cf1df)[_0x505f('0x1c')](_0x27bd0d);}};}function respondWithFilteredResult(_0x51788f,_0x4310ff){return function(_0x4f0fbb){if(_0x4f0fbb){var _0x3a60da=typeof _0x4310ff[_0x505f('0x1d')]===_0x505f('0x1e')&&typeof _0x4310ff[_0x505f('0x1f')]===_0x505f('0x1e');var _0xf30b09=_0x4f0fbb[_0x505f('0x20')];var _0x2b5ff1=_0x3a60da?0x0:_0x4310ff['offset'];var _0x40ab6c=_0x3a60da?_0x4f0fbb[_0x505f('0x20')]:_0x4310ff[_0x505f('0x1d')]+_0x4310ff[_0x505f('0x1f')];var _0x1dbb7d;if(_0x40ab6c>=_0xf30b09){_0x40ab6c=_0xf30b09;_0x1dbb7d=0xc8;}else{_0x1dbb7d=0xce;}_0x51788f['status'](_0x1dbb7d);return _0x51788f[_0x505f('0x21')](_0x505f('0x22'),_0x2b5ff1+'-'+_0x40ab6c+'/'+_0xf30b09)[_0x505f('0x1c')](_0x4f0fbb);}return null;};}function patchUpdates(_0x49890d){return function(_0x8eba52){try{jsonpatch['apply'](_0x8eba52,_0x49890d,!![]);}catch(_0x429115){return BPromise[_0x505f('0x23')](_0x429115);}return _0x8eba52[_0x505f('0x24')]();};}function saveUpdates(_0x554b8a,_0x47a099){return function(_0x427cf6){if(_0x427cf6){return _0x427cf6[_0x505f('0x25')](_0x554b8a)[_0x505f('0x26')](function(_0x1d1f32){return _0x1d1f32;});}return null;};}function removeEntity(_0x36553f,_0x1bb627){return function(_0x422c5d){if(_0x422c5d){return _0x422c5d[_0x505f('0x27')]()[_0x505f('0x26')](function(){_0x36553f[_0x505f('0x28')](0xcc)[_0x505f('0x1b')]();});}};}function handleEntityNotFound(_0x47f26a,_0x1bcfe4){return function(_0xbe8fea){if(!_0xbe8fea){_0x47f26a[_0x505f('0x1a')](0x194);}return _0xbe8fea;};}function handleError(_0x39cbbe,_0x2b49c1){_0x2b49c1=_0x2b49c1||0x1f4;return function(_0x4486cb){logger[_0x505f('0x29')](_0x4486cb[_0x505f('0x2a')]);if(_0x4486cb['name']){delete _0x4486cb[_0x505f('0x2b')];}_0x39cbbe[_0x505f('0x28')](_0x2b49c1)['send'](_0x4486cb);};}exports[_0x505f('0x2c')]=function(_0xf4a081,_0x3975f7){var _0xe7ad9={},_0x250d25={},_0x57d4d7={'count':0x0,'rows':[]};var _0x2bc6a1=_[_0x505f('0x2d')](db[_0x505f('0x2e')][_0x505f('0x2f')],function(_0xe2a68d){return{'name':_0xe2a68d[_0x505f('0x30')],'type':_0xe2a68d[_0x505f('0x31')]['key']};});_0x250d25[_0x505f('0x32')]=_[_0x505f('0x2d')](_0x2bc6a1,_0x505f('0x2b'));_0x250d25[_0x505f('0x33')]=_[_0x505f('0x34')](_0xf4a081[_0x505f('0x33')]);_0x250d25[_0x505f('0x35')]=_[_0x505f('0x36')](_0x250d25[_0x505f('0x32')],_0x250d25['query']);_0xe7ad9['attributes']=_[_0x505f('0x36')](_0x250d25[_0x505f('0x32')],qs[_0x505f('0x37')](_0xf4a081[_0x505f('0x33')][_0x505f('0x37')]));_0xe7ad9['attributes']=_0xe7ad9[_0x505f('0x38')][_0x505f('0x39')]?_0xe7ad9[_0x505f('0x38')]:_0x250d25['model'];if(!_0xf4a081['query'][_0x505f('0x3a')](_0x505f('0x3b'))){_0xe7ad9[_0x505f('0x1f')]=qs[_0x505f('0x1f')](_0xf4a081[_0x505f('0x33')][_0x505f('0x1f')]);_0xe7ad9[_0x505f('0x1d')]=qs[_0x505f('0x1d')](_0xf4a081[_0x505f('0x33')]['offset']);}_0xe7ad9['order']=qs[_0x505f('0x3c')](_0xf4a081['query'][_0x505f('0x3c')]);_0xe7ad9[_0x505f('0x3d')]=qs['filters'](_[_0x505f('0x3e')](_0xf4a081['query'],_0x250d25[_0x505f('0x35')]),_0x2bc6a1);if(_0xf4a081[_0x505f('0x33')][_0x505f('0x3f')]){_0xe7ad9[_0x505f('0x3d')]=_[_0x505f('0x40')](_0xe7ad9[_0x505f('0x3d')],{'$or':_[_0x505f('0x2d')](_0x2bc6a1,function(_0x5a96fb){if(_0x5a96fb[_0x505f('0x31')]!==_0x505f('0x41')){var _0x42aece={};_0x42aece[_0x5a96fb[_0x505f('0x2b')]]={'$like':'%'+_0xf4a081[_0x505f('0x33')]['filter']+'%'};return _0x42aece;}})});}_0xe7ad9=_[_0x505f('0x40')]({},_0xe7ad9,_0xf4a081[_0x505f('0x42')]);var _0x430471={'where':_0xe7ad9[_0x505f('0x3d')]};return db[_0x505f('0x2e')][_0x505f('0x20')](_0x430471)[_0x505f('0x26')](function(_0x52877b){_0x57d4d7[_0x505f('0x20')]=_0x52877b;if(_0xf4a081[_0x505f('0x33')][_0x505f('0x43')]){_0xe7ad9[_0x505f('0x44')]=[{'all':!![]}];}return db['ChatGroup'][_0x505f('0x45')](_0xe7ad9);})['then'](function(_0x83925c){_0x57d4d7[_0x505f('0x46')]=_0x83925c;return _0x57d4d7;})[_0x505f('0x26')](respondWithFilteredResult(_0x3975f7,_0xe7ad9))[_0x505f('0x47')](handleError(_0x3975f7,null));};exports[_0x505f('0x48')]=function(_0x35cd3d,_0x22d1e2){var _0x5778e9={'raw':!![],'where':{'id':_0x35cd3d['params']['id']}},_0x58247d={};_0x58247d['model']=_[_0x505f('0x34')](db[_0x505f('0x2e')][_0x505f('0x2f')]);_0x58247d[_0x505f('0x33')]=_[_0x505f('0x34')](_0x35cd3d[_0x505f('0x33')]);_0x58247d[_0x505f('0x35')]=_['intersection'](_0x58247d[_0x505f('0x32')],_0x58247d[_0x505f('0x33')]);_0x5778e9[_0x505f('0x38')]=_['intersection'](_0x58247d['model'],qs[_0x505f('0x37')](_0x35cd3d[_0x505f('0x33')]['fields']));_0x5778e9[_0x505f('0x38')]=_0x5778e9[_0x505f('0x38')][_0x505f('0x39')]?_0x5778e9[_0x505f('0x38')]:_0x58247d[_0x505f('0x32')];if(_0x35cd3d[_0x505f('0x33')]['includeAll']){_0x5778e9[_0x505f('0x44')]=[{'all':!![]}];}_0x5778e9=_[_0x505f('0x40')]({},_0x5778e9,_0x35cd3d[_0x505f('0x42')]);return db['ChatGroup'][_0x505f('0x49')](_0x5778e9)[_0x505f('0x26')](handleEntityNotFound(_0x22d1e2,null))[_0x505f('0x26')](respondWithResult(_0x22d1e2,null))[_0x505f('0x47')](handleError(_0x22d1e2,null));};exports[_0x505f('0x4a')]=function(_0x1d7de7,_0x5af503){return db[_0x505f('0x2e')][_0x505f('0x4a')](_0x1d7de7[_0x505f('0x4b')],{})[_0x505f('0x26')](respondWithResult(_0x5af503,0xc9))[_0x505f('0x47')](handleError(_0x5af503,null));};exports[_0x505f('0x25')]=function(_0x25d113,_0x66646f){if(_0x25d113[_0x505f('0x4b')]['id']){delete _0x25d113[_0x505f('0x4b')]['id'];}return db[_0x505f('0x2e')]['find']({'where':{'id':_0x25d113[_0x505f('0x4c')]['id']}})[_0x505f('0x26')](handleEntityNotFound(_0x66646f,null))[_0x505f('0x26')](saveUpdates(_0x25d113[_0x505f('0x4b')],null))[_0x505f('0x26')](respondWithResult(_0x66646f,null))[_0x505f('0x47')](handleError(_0x66646f,null));};exports[_0x505f('0x27')]=function(_0xb07408,_0x501061){return db[_0x505f('0x2e')][_0x505f('0x49')]({'where':{'id':_0xb07408[_0x505f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x501061,null))[_0x505f('0x26')](removeEntity(_0x501061,null))[_0x505f('0x47')](handleError(_0x501061,null));};exports[_0x505f('0x4d')]=function(_0x39af19,_0x1d7743){return db[_0x505f('0x2e')][_0x505f('0x4d')]()[_0x505f('0x26')](respondWithResult(_0x1d7743,null))['catch'](handleError(_0x1d7743,null));};exports['getUnread']=function(_0x452848,_0x194ced,_0x56ae4a){return db[_0x505f('0x4e')]['count']({'where':{'ChatGroupId':_0x452848[_0x505f('0x4c')]['id'],'ToId':_0x452848['user']['id'],'read':![]}})[_0x505f('0x26')](function(_0x57b051){return{'id':_[_0x505f('0x4f')](_0x452848['params']['id']),'count':_0x57b051};})['then'](respondWithResult(_0x194ced,null))[_0x505f('0x47')](handleError(_0x194ced,null));};exports[_0x505f('0x50')]=function(_0x530e43,_0x45241f,_0x5de6d2){return db[_0x505f('0x2e')][_0x505f('0x49')]({'where':{'id':_0x530e43[_0x505f('0x4c')]['id']}})[_0x505f('0x26')](handleEntityNotFound(_0x45241f,null))['then'](function(_0x3cec53){if(_0x3cec53){return _0x3cec53[_0x505f('0x50')](_0x530e43['body']['ids'],_[_0x505f('0x51')](_0x530e43[_0x505f('0x4b')],[_0x505f('0x52'),'id'])||{});}})[_0x505f('0x26')](respondWithResult(_0x45241f,null))[_0x505f('0x47')](handleError(_0x45241f,null));};exports[_0x505f('0x53')]=function(_0x40b288,_0x5c7c96,_0x5835b1){var _0x302e49={};var _0xeb2712={};var _0x6a5467;var _0x4e70c1;return db[_0x505f('0x2e')][_0x505f('0x54')]({'where':{'id':_0x40b288['params']['id']}})[_0x505f('0x26')](handleEntityNotFound(_0x5c7c96,null))[_0x505f('0x26')](function(_0x116231){if(_0x116231){_0x6a5467=_0x116231;_0xeb2712['model']=_[_0x505f('0x34')](db[_0x505f('0x55')]['rawAttributes']);_0xeb2712[_0x505f('0x33')]=_['keys'](_0x40b288[_0x505f('0x33')]);_0xeb2712[_0x505f('0x35')]=_[_0x505f('0x36')](_0xeb2712[_0x505f('0x32')],_0xeb2712['query']);_0x302e49['attributes']=_[_0x505f('0x36')](_0xeb2712[_0x505f('0x32')],qs[_0x505f('0x37')](_0x40b288[_0x505f('0x33')][_0x505f('0x37')]));_0x302e49['attributes']=_0x302e49[_0x505f('0x38')][_0x505f('0x39')]?_0x302e49['attributes']:_0xeb2712['model'];_0x302e49['order']=qs[_0x505f('0x3c')](_0x40b288[_0x505f('0x33')]['sort']);_0x302e49[_0x505f('0x3d')]=qs[_0x505f('0x35')](_[_0x505f('0x3e')](_0x40b288[_0x505f('0x33')],_0xeb2712[_0x505f('0x35')]));if(_0x40b288[_0x505f('0x33')][_0x505f('0x3f')]){_0x302e49[_0x505f('0x3d')]=_[_0x505f('0x40')](_0x302e49[_0x505f('0x3d')],{'$or':_[_0x505f('0x2d')](_0x302e49[_0x505f('0x38')],function(_0x321783){var _0x18b4cf={};_0x18b4cf[_0x321783]={'$like':'%'+_0x40b288[_0x505f('0x33')][_0x505f('0x3f')]+'%'};return _0x18b4cf;})});}_0x302e49=_[_0x505f('0x40')]({},_0x302e49,_0x40b288[_0x505f('0x42')]);return _0x6a5467[_0x505f('0x53')](_0x302e49);}})[_0x505f('0x26')](function(_0x1e5210){if(_0x1e5210){_0x4e70c1=_0x1e5210[_0x505f('0x39')];if(!_0x40b288[_0x505f('0x33')][_0x505f('0x3a')](_0x505f('0x3b'))){_0x302e49['limit']=qs[_0x505f('0x1f')](_0x40b288[_0x505f('0x33')][_0x505f('0x1f')]);_0x302e49[_0x505f('0x1d')]=qs['offset'](_0x40b288[_0x505f('0x33')][_0x505f('0x1d')]);}return _0x6a5467[_0x505f('0x53')](_0x302e49);}})[_0x505f('0x26')](function(_0x579b61){if(_0x579b61){return _0x579b61?{'count':_0x4e70c1,'rows':_0x579b61}:null;}})[_0x505f('0x26')](respondWithResult(_0x5c7c96,null))[_0x505f('0x47')](handleError(_0x5c7c96,null));};exports['removeMembers']=function(_0x35b752,_0x3b2491,_0x35418d){return db['ChatGroup'][_0x505f('0x49')]({'where':{'id':_0x35b752['params']['id']}})[_0x505f('0x26')](handleEntityNotFound(_0x3b2491,null))[_0x505f('0x26')](function(_0x41d8b6){if(_0x41d8b6){return _0x41d8b6['removeMembers'](_0x35b752[_0x505f('0x33')][_0x505f('0x52')]);}})[_0x505f('0x26')](respondWithStatusCode(_0x3b2491,null))[_0x505f('0x47')](handleError(_0x3b2491,null));};exports[_0x505f('0x56')]=function(_0x57693a,_0x24b96e,_0x366d0c){if(_0x57693a['body']['id']){delete _0x57693a['body']['id'];}return db[_0x505f('0x2e')][_0x505f('0x49')]({'where':{'id':_0x57693a[_0x505f('0x4c')]['id']}})[_0x505f('0x26')](handleEntityNotFound(_0x24b96e,null))[_0x505f('0x26')](function(_0x5aacac){if(_0x5aacac){_0x57693a[_0x505f('0x4b')][_0x505f('0x57')]=_0x5aacac['id'];return db[_0x505f('0x4e')][_0x505f('0x4a')](_0x57693a[_0x505f('0x4b')]);}})['then'](respondWithResult(_0x24b96e,null))[_0x505f('0x47')](handleError(_0x24b96e,null));};exports['getMessages']=function(_0x31d722,_0x34691d,_0x32b891){var _0x12c4e4={};var _0x3d1c17={};var _0x5a678e;var _0x40e51f;return db[_0x505f('0x2e')]['findOne']({'where':{'id':_0x31d722[_0x505f('0x4c')]['id']}})[_0x505f('0x26')](handleEntityNotFound(_0x34691d,null))[_0x505f('0x26')](function(_0x4e22e2){if(_0x4e22e2){_0x5a678e=_0x4e22e2;_0x3d1c17[_0x505f('0x32')]=_['keys'](db[_0x505f('0x4e')][_0x505f('0x2f')]);_0x3d1c17['query']=_[_0x505f('0x34')](_0x31d722[_0x505f('0x33')]);_0x3d1c17[_0x505f('0x35')]=_['intersection'](_0x3d1c17['model'],_0x3d1c17[_0x505f('0x33')]);_0x12c4e4['attributes']=_['intersection'](_0x3d1c17[_0x505f('0x32')],qs[_0x505f('0x37')](_0x31d722[_0x505f('0x33')][_0x505f('0x37')]));_0x12c4e4[_0x505f('0x38')]=_0x12c4e4['attributes']['length']?_0x12c4e4[_0x505f('0x38')]:_0x3d1c17['model'];_0x12c4e4['order']=qs[_0x505f('0x3c')](_0x31d722[_0x505f('0x33')][_0x505f('0x3c')]);_0x12c4e4['where']=qs[_0x505f('0x35')](_['pick'](_0x31d722[_0x505f('0x33')],_0x3d1c17[_0x505f('0x35')]));if(_0x31d722['query'][_0x505f('0x3f')]){_0x12c4e4[_0x505f('0x3d')]=_['merge'](_0x12c4e4[_0x505f('0x3d')],{'$or':_[_0x505f('0x2d')](_0x12c4e4[_0x505f('0x38')],function(_0x3f1c7b){var _0x510546={};_0x510546[_0x3f1c7b]={'$like':'%'+_0x31d722[_0x505f('0x33')][_0x505f('0x3f')]+'%'};return _0x510546;})});}if(_0x31d722[_0x505f('0x33')][_0x505f('0x58')]){var _0x132b4d=_0x31d722[_0x505f('0x33')][_0x505f('0x58')]['split'](',');var _0x5d95f3={};_0x5d95f3[_0x132b4d[0x0]]={'$gte':moment(_0x132b4d[0x1])[_0x505f('0x59')](_0x505f('0x5a'))};_0x12c4e4['where']=_[_0x505f('0x40')](_0x12c4e4[_0x505f('0x3d')],_0x5d95f3);}_0x12c4e4=_[_0x505f('0x40')]({},_0x12c4e4,_0x31d722[_0x505f('0x42')]);return _0x5a678e[_0x505f('0x5b')](_0x12c4e4);}})[_0x505f('0x26')](function(_0x401f68){if(_0x401f68){_0x40e51f=_0x401f68[_0x505f('0x39')];if(!_0x31d722[_0x505f('0x33')]['hasOwnProperty'](_0x505f('0x3b'))){_0x12c4e4[_0x505f('0x1f')]=qs[_0x505f('0x1f')](_0x31d722['query'][_0x505f('0x1f')]);_0x12c4e4['offset']=qs[_0x505f('0x1d')](_0x31d722[_0x505f('0x33')]['offset']);}return _0x5a678e[_0x505f('0x5b')](_0x12c4e4);}})['then'](function(_0x1dbc48){if(_0x1dbc48){return _0x1dbc48?{'count':_0x40e51f,'rows':_0x1dbc48}:null;}})[_0x505f('0x26')](respondWithResult(_0x34691d,null))[_0x505f('0x47')](handleError(_0x34691d,null));};