145fe0e4d64f5e5db0b7c75467cf5c42d266f85d
[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 _0xe939=['create','body','describe','getUnread','ChatInternalMessage','toInteger','addMembers','ids','getMembers','User','removeMembers','addMessage','ChatGroupId','getMessages','findOne','$gte','split','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatGroup.socket','register','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xe939,0xd5));var _0x9e93=function(_0xf09ae9,_0x2bd15c){_0xf09ae9=_0xf09ae9-0x0;var _0x4c718e=_0xe939[_0xf09ae9];return _0x4c718e;};'use strict';var emlformat=require(_0x9e93('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e93('0x1'));var jsonpatch=require(_0x9e93('0x2'));var rp=require(_0x9e93('0x3'));var moment=require(_0x9e93('0x4'));var BPromise=require(_0x9e93('0x5'));var Mustache=require('mustache');var util=require(_0x9e93('0x6'));var path=require(_0x9e93('0x7'));var sox=require(_0x9e93('0x8'));var csv=require(_0x9e93('0x9'));var ejs=require(_0x9e93('0xa'));var fs=require('fs');var fs_extra=require(_0x9e93('0xb'));var _=require(_0x9e93('0xc'));var squel=require(_0x9e93('0xd'));var crypto=require('crypto');var jsforce=require(_0x9e93('0xe'));var deskjs=require(_0x9e93('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9e93('0x10'));var Papa=require(_0x9e93('0x11'));var Redis=require(_0x9e93('0x12'));var authService=require(_0x9e93('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e93('0x14'));var logger=require(_0x9e93('0x15'))(_0x9e93('0x16'));var utils=require(_0x9e93('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9e93('0x18'));var db=require(_0x9e93('0x19'))['db'];config[_0x9e93('0x1a')]=_[_0x9e93('0x1b')](config[_0x9e93('0x1a')],{'host':_0x9e93('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9e93('0x1d'))[_0x9e93('0x1e')](socket);function respondWithStatusCode(_0x1cabbd,_0x48e43e){_0x48e43e=_0x48e43e||0xcc;return function(_0x519375){if(_0x519375){return _0x1cabbd[_0x9e93('0x1f')](_0x48e43e);}return _0x1cabbd[_0x9e93('0x20')](_0x48e43e)[_0x9e93('0x21')]();};}function respondWithResult(_0x33813a,_0x1d0ef3){_0x1d0ef3=_0x1d0ef3||0xc8;return function(_0x7bb1ee){if(_0x7bb1ee){return _0x33813a[_0x9e93('0x20')](_0x1d0ef3)[_0x9e93('0x22')](_0x7bb1ee);}};}function respondWithFilteredResult(_0x2fff1a,_0x8d9688){return function(_0xd5d644){if(_0xd5d644){var _0x28fc70=typeof _0x8d9688[_0x9e93('0x23')]==='undefined'&&typeof _0x8d9688['limit']==='undefined';var _0x55cb29=_0xd5d644[_0x9e93('0x24')];var _0x38687f=_0x28fc70?0x0:_0x8d9688[_0x9e93('0x23')];var _0x24c8f1=_0x28fc70?_0xd5d644['count']:_0x8d9688['offset']+_0x8d9688[_0x9e93('0x25')];var _0x5ca244;if(_0x24c8f1>=_0x55cb29){_0x24c8f1=_0x55cb29;_0x5ca244=0xc8;}else{_0x5ca244=0xce;}_0x2fff1a[_0x9e93('0x20')](_0x5ca244);return _0x2fff1a[_0x9e93('0x26')](_0x9e93('0x27'),_0x38687f+'-'+_0x24c8f1+'/'+_0x55cb29)[_0x9e93('0x22')](_0xd5d644);}return null;};}function patchUpdates(_0x16b035){return function(_0x1169f4){try{jsonpatch[_0x9e93('0x28')](_0x1169f4,_0x16b035,!![]);}catch(_0x29245e){return BPromise['reject'](_0x29245e);}return _0x1169f4[_0x9e93('0x29')]();};}function saveUpdates(_0x3eb962,_0x2c9879){return function(_0x6c187f){if(_0x6c187f){return _0x6c187f[_0x9e93('0x2a')](_0x3eb962)[_0x9e93('0x2b')](function(_0xc445ba){return _0xc445ba;});}return null;};}function removeEntity(_0x44851a,_0x6e31d3){return function(_0x355f5c){if(_0x355f5c){return _0x355f5c[_0x9e93('0x2c')]()[_0x9e93('0x2b')](function(){_0x44851a[_0x9e93('0x20')](0xcc)[_0x9e93('0x21')]();});}};}function handleEntityNotFound(_0xbb83b8,_0x2e5fb5){return function(_0x5a1441){if(!_0x5a1441){_0xbb83b8[_0x9e93('0x1f')](0x194);}return _0x5a1441;};}function handleError(_0x273b1f,_0xbdb96a){_0xbdb96a=_0xbdb96a||0x1f4;return function(_0x13fa2b){logger[_0x9e93('0x2d')](_0x13fa2b[_0x9e93('0x2e')]);if(_0x13fa2b['name']){delete _0x13fa2b[_0x9e93('0x2f')];}_0x273b1f['status'](_0xbdb96a)[_0x9e93('0x30')](_0x13fa2b);};}exports[_0x9e93('0x31')]=function(_0x188f0a,_0x42bd0c){var _0x1bc104={},_0x56316e={},_0x331678={'count':0x0,'rows':[]};var _0x55fdf9=_[_0x9e93('0x32')](db[_0x9e93('0x33')][_0x9e93('0x34')],function(_0x376a5a){return{'name':_0x376a5a[_0x9e93('0x35')],'type':_0x376a5a[_0x9e93('0x36')]['key']};});_0x56316e[_0x9e93('0x37')]=_['map'](_0x55fdf9,_0x9e93('0x2f'));_0x56316e['query']=_[_0x9e93('0x38')](_0x188f0a[_0x9e93('0x39')]);_0x56316e[_0x9e93('0x3a')]=_[_0x9e93('0x3b')](_0x56316e['model'],_0x56316e[_0x9e93('0x39')]);_0x1bc104['attributes']=_[_0x9e93('0x3b')](_0x56316e['model'],qs[_0x9e93('0x3c')](_0x188f0a[_0x9e93('0x39')][_0x9e93('0x3c')]));_0x1bc104[_0x9e93('0x3d')]=_0x1bc104[_0x9e93('0x3d')][_0x9e93('0x3e')]?_0x1bc104[_0x9e93('0x3d')]:_0x56316e[_0x9e93('0x37')];if(!_0x188f0a[_0x9e93('0x39')][_0x9e93('0x3f')](_0x9e93('0x40'))){_0x1bc104[_0x9e93('0x25')]=qs[_0x9e93('0x25')](_0x188f0a['query'][_0x9e93('0x25')]);_0x1bc104[_0x9e93('0x23')]=qs[_0x9e93('0x23')](_0x188f0a[_0x9e93('0x39')][_0x9e93('0x23')]);}_0x1bc104[_0x9e93('0x41')]=qs[_0x9e93('0x42')](_0x188f0a[_0x9e93('0x39')][_0x9e93('0x42')]);_0x1bc104['where']=qs[_0x9e93('0x3a')](_[_0x9e93('0x43')](_0x188f0a[_0x9e93('0x39')],_0x56316e[_0x9e93('0x3a')]),_0x55fdf9);if(_0x188f0a[_0x9e93('0x39')][_0x9e93('0x44')]){_0x1bc104[_0x9e93('0x45')]=_[_0x9e93('0x46')](_0x1bc104['where'],{'$or':_[_0x9e93('0x32')](_0x55fdf9,function(_0x5a409e){if(_0x5a409e[_0x9e93('0x36')]!==_0x9e93('0x47')){var _0x56e1d4={};_0x56e1d4[_0x5a409e[_0x9e93('0x2f')]]={'$like':'%'+_0x188f0a['query'][_0x9e93('0x44')]+'%'};return _0x56e1d4;}})});}_0x1bc104=_[_0x9e93('0x46')]({},_0x1bc104,_0x188f0a['options']);var _0x8eb265={'where':_0x1bc104[_0x9e93('0x45')]};return db['ChatGroup'][_0x9e93('0x24')](_0x8eb265)[_0x9e93('0x2b')](function(_0x23602d){_0x331678[_0x9e93('0x24')]=_0x23602d;if(_0x188f0a[_0x9e93('0x39')][_0x9e93('0x48')]){_0x1bc104[_0x9e93('0x49')]=[{'all':!![]}];}return db[_0x9e93('0x33')][_0x9e93('0x4a')](_0x1bc104);})[_0x9e93('0x2b')](function(_0x16410d){_0x331678[_0x9e93('0x4b')]=_0x16410d;return _0x331678;})[_0x9e93('0x2b')](respondWithFilteredResult(_0x42bd0c,_0x1bc104))[_0x9e93('0x4c')](handleError(_0x42bd0c,null));};exports[_0x9e93('0x4d')]=function(_0x438206,_0x3a4407){var _0x544be8={'raw':!![],'where':{'id':_0x438206[_0x9e93('0x4e')]['id']}},_0x3e221c={};_0x3e221c[_0x9e93('0x37')]=_['keys'](db['ChatGroup'][_0x9e93('0x34')]);_0x3e221c['query']=_[_0x9e93('0x38')](_0x438206['query']);_0x3e221c[_0x9e93('0x3a')]=_['intersection'](_0x3e221c[_0x9e93('0x37')],_0x3e221c['query']);_0x544be8['attributes']=_['intersection'](_0x3e221c[_0x9e93('0x37')],qs[_0x9e93('0x3c')](_0x438206[_0x9e93('0x39')]['fields']));_0x544be8[_0x9e93('0x3d')]=_0x544be8[_0x9e93('0x3d')][_0x9e93('0x3e')]?_0x544be8[_0x9e93('0x3d')]:_0x3e221c[_0x9e93('0x37')];if(_0x438206[_0x9e93('0x39')][_0x9e93('0x48')]){_0x544be8[_0x9e93('0x49')]=[{'all':!![]}];}_0x544be8=_['merge']({},_0x544be8,_0x438206[_0x9e93('0x4f')]);return db[_0x9e93('0x33')][_0x9e93('0x50')](_0x544be8)[_0x9e93('0x2b')](handleEntityNotFound(_0x3a4407,null))[_0x9e93('0x2b')](respondWithResult(_0x3a4407,null))[_0x9e93('0x4c')](handleError(_0x3a4407,null));};exports[_0x9e93('0x51')]=function(_0x2cecf8,_0x3bb605){return db[_0x9e93('0x33')]['create'](_0x2cecf8['body'],{})[_0x9e93('0x2b')](respondWithResult(_0x3bb605,0xc9))[_0x9e93('0x4c')](handleError(_0x3bb605,null));};exports['update']=function(_0x40a93b,_0x4d7a3c){if(_0x40a93b['body']['id']){delete _0x40a93b[_0x9e93('0x52')]['id'];}return db[_0x9e93('0x33')][_0x9e93('0x50')]({'where':{'id':_0x40a93b[_0x9e93('0x4e')]['id']}})[_0x9e93('0x2b')](handleEntityNotFound(_0x4d7a3c,null))[_0x9e93('0x2b')](saveUpdates(_0x40a93b[_0x9e93('0x52')],null))['then'](respondWithResult(_0x4d7a3c,null))[_0x9e93('0x4c')](handleError(_0x4d7a3c,null));};exports[_0x9e93('0x2c')]=function(_0x411e62,_0x58a6f2){return db[_0x9e93('0x33')]['find']({'where':{'id':_0x411e62[_0x9e93('0x4e')]['id']}})[_0x9e93('0x2b')](handleEntityNotFound(_0x58a6f2,null))[_0x9e93('0x2b')](removeEntity(_0x58a6f2,null))[_0x9e93('0x4c')](handleError(_0x58a6f2,null));};exports[_0x9e93('0x53')]=function(_0x39760d,_0x14a597){return db['ChatGroup'][_0x9e93('0x53')]()[_0x9e93('0x2b')](respondWithResult(_0x14a597,null))[_0x9e93('0x4c')](handleError(_0x14a597,null));};exports[_0x9e93('0x54')]=function(_0x3079ca,_0x36157c,_0x10426c){return db[_0x9e93('0x55')]['count']({'where':{'ChatGroupId':_0x3079ca[_0x9e93('0x4e')]['id'],'ToId':_0x3079ca['user']['id'],'read':![]}})[_0x9e93('0x2b')](function(_0x25de95){return{'id':_[_0x9e93('0x56')](_0x3079ca[_0x9e93('0x4e')]['id']),'count':_0x25de95};})['then'](respondWithResult(_0x36157c,null))[_0x9e93('0x4c')](handleError(_0x36157c,null));};exports[_0x9e93('0x57')]=function(_0x4a5495,_0x157746,_0x15de6a){return db[_0x9e93('0x33')][_0x9e93('0x50')]({'where':{'id':_0x4a5495['params']['id']}})[_0x9e93('0x2b')](handleEntityNotFound(_0x157746,null))['then'](function(_0x4a1b6d){if(_0x4a1b6d){return _0x4a1b6d[_0x9e93('0x57')](_0x4a5495['body'][_0x9e93('0x58')],_['omit'](_0x4a5495[_0x9e93('0x52')],[_0x9e93('0x58'),'id'])||{});}})[_0x9e93('0x2b')](respondWithResult(_0x157746,null))['catch'](handleError(_0x157746,null));};exports[_0x9e93('0x59')]=function(_0x4a3c12,_0x2bf441,_0x111a63){var _0x111b5a={};var _0x2e29aa={};var _0x2bbcbc;var _0x1c07fc;return db[_0x9e93('0x33')]['findOne']({'where':{'id':_0x4a3c12[_0x9e93('0x4e')]['id']}})[_0x9e93('0x2b')](handleEntityNotFound(_0x2bf441,null))['then'](function(_0x249b7c){if(_0x249b7c){_0x2bbcbc=_0x249b7c;_0x2e29aa[_0x9e93('0x37')]=_[_0x9e93('0x38')](db[_0x9e93('0x5a')][_0x9e93('0x34')]);_0x2e29aa['query']=_[_0x9e93('0x38')](_0x4a3c12['query']);_0x2e29aa[_0x9e93('0x3a')]=_[_0x9e93('0x3b')](_0x2e29aa[_0x9e93('0x37')],_0x2e29aa[_0x9e93('0x39')]);_0x111b5a['attributes']=_['intersection'](_0x2e29aa[_0x9e93('0x37')],qs['fields'](_0x4a3c12[_0x9e93('0x39')]['fields']));_0x111b5a[_0x9e93('0x3d')]=_0x111b5a[_0x9e93('0x3d')][_0x9e93('0x3e')]?_0x111b5a[_0x9e93('0x3d')]:_0x2e29aa[_0x9e93('0x37')];_0x111b5a[_0x9e93('0x41')]=qs[_0x9e93('0x42')](_0x4a3c12[_0x9e93('0x39')][_0x9e93('0x42')]);_0x111b5a[_0x9e93('0x45')]=qs['filters'](_[_0x9e93('0x43')](_0x4a3c12['query'],_0x2e29aa[_0x9e93('0x3a')]));if(_0x4a3c12['query'][_0x9e93('0x44')]){_0x111b5a[_0x9e93('0x45')]=_[_0x9e93('0x46')](_0x111b5a[_0x9e93('0x45')],{'$or':_[_0x9e93('0x32')](_0x111b5a['attributes'],function(_0x5c0064){var _0x33471f={};_0x33471f[_0x5c0064]={'$like':'%'+_0x4a3c12[_0x9e93('0x39')][_0x9e93('0x44')]+'%'};return _0x33471f;})});}_0x111b5a=_[_0x9e93('0x46')]({},_0x111b5a,_0x4a3c12[_0x9e93('0x4f')]);return _0x2bbcbc['getMembers'](_0x111b5a);}})[_0x9e93('0x2b')](function(_0x554ea2){if(_0x554ea2){_0x1c07fc=_0x554ea2[_0x9e93('0x3e')];if(!_0x4a3c12[_0x9e93('0x39')][_0x9e93('0x3f')](_0x9e93('0x40'))){_0x111b5a[_0x9e93('0x25')]=qs[_0x9e93('0x25')](_0x4a3c12[_0x9e93('0x39')][_0x9e93('0x25')]);_0x111b5a[_0x9e93('0x23')]=qs['offset'](_0x4a3c12['query'][_0x9e93('0x23')]);}return _0x2bbcbc[_0x9e93('0x59')](_0x111b5a);}})[_0x9e93('0x2b')](function(_0x4dbf47){if(_0x4dbf47){return _0x4dbf47?{'count':_0x1c07fc,'rows':_0x4dbf47}:null;}})[_0x9e93('0x2b')](respondWithResult(_0x2bf441,null))[_0x9e93('0x4c')](handleError(_0x2bf441,null));};exports[_0x9e93('0x5b')]=function(_0x1a81cd,_0x2073ff,_0x3d38a9){return db[_0x9e93('0x33')]['find']({'where':{'id':_0x1a81cd[_0x9e93('0x4e')]['id']}})[_0x9e93('0x2b')](handleEntityNotFound(_0x2073ff,null))[_0x9e93('0x2b')](function(_0x46f351){if(_0x46f351){return _0x46f351[_0x9e93('0x5b')](_0x1a81cd[_0x9e93('0x39')][_0x9e93('0x58')]);}})[_0x9e93('0x2b')](respondWithStatusCode(_0x2073ff,null))[_0x9e93('0x4c')](handleError(_0x2073ff,null));};exports[_0x9e93('0x5c')]=function(_0x125c19,_0x2d7252,_0x37fa2d){if(_0x125c19['body']['id']){delete _0x125c19[_0x9e93('0x52')]['id'];}return db[_0x9e93('0x33')][_0x9e93('0x50')]({'where':{'id':_0x125c19[_0x9e93('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2d7252,null))['then'](function(_0x15005b){if(_0x15005b){_0x125c19['body'][_0x9e93('0x5d')]=_0x15005b['id'];return db[_0x9e93('0x55')][_0x9e93('0x51')](_0x125c19[_0x9e93('0x52')]);}})['then'](respondWithResult(_0x2d7252,null))[_0x9e93('0x4c')](handleError(_0x2d7252,null));};exports[_0x9e93('0x5e')]=function(_0x557e72,_0x3a4a57,_0x14d877){var _0x11af5e={};var _0x5b549f={};var _0x316144;var _0x278c93;return db[_0x9e93('0x33')][_0x9e93('0x5f')]({'where':{'id':_0x557e72['params']['id']}})[_0x9e93('0x2b')](handleEntityNotFound(_0x3a4a57,null))[_0x9e93('0x2b')](function(_0x596a1e){if(_0x596a1e){_0x316144=_0x596a1e;_0x5b549f[_0x9e93('0x37')]=_['keys'](db['ChatInternalMessage'][_0x9e93('0x34')]);_0x5b549f[_0x9e93('0x39')]=_['keys'](_0x557e72[_0x9e93('0x39')]);_0x5b549f['filters']=_['intersection'](_0x5b549f[_0x9e93('0x37')],_0x5b549f[_0x9e93('0x39')]);_0x11af5e[_0x9e93('0x3d')]=_[_0x9e93('0x3b')](_0x5b549f[_0x9e93('0x37')],qs[_0x9e93('0x3c')](_0x557e72['query']['fields']));_0x11af5e[_0x9e93('0x3d')]=_0x11af5e['attributes'][_0x9e93('0x3e')]?_0x11af5e['attributes']:_0x5b549f[_0x9e93('0x37')];_0x11af5e[_0x9e93('0x41')]=qs[_0x9e93('0x42')](_0x557e72['query'][_0x9e93('0x42')]);_0x11af5e[_0x9e93('0x45')]=qs['filters'](_['pick'](_0x557e72[_0x9e93('0x39')],_0x5b549f[_0x9e93('0x3a')]));if(_0x557e72[_0x9e93('0x39')][_0x9e93('0x44')]){_0x11af5e[_0x9e93('0x45')]=_[_0x9e93('0x46')](_0x11af5e[_0x9e93('0x45')],{'$or':_['map'](_0x11af5e['attributes'],function(_0x2f6914){var _0x7f7a72={};_0x7f7a72[_0x2f6914]={'$like':'%'+_0x557e72[_0x9e93('0x39')][_0x9e93('0x44')]+'%'};return _0x7f7a72;})});}if(_0x557e72[_0x9e93('0x39')][_0x9e93('0x60')]){var _0x10cd13=_0x557e72[_0x9e93('0x39')][_0x9e93('0x60')][_0x9e93('0x61')](',');var _0x281a61={};_0x281a61[_0x10cd13[0x0]]={'$gte':moment(_0x10cd13[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x11af5e[_0x9e93('0x45')]=_[_0x9e93('0x46')](_0x11af5e[_0x9e93('0x45')],_0x281a61);}_0x11af5e=_[_0x9e93('0x46')]({},_0x11af5e,_0x557e72['options']);return _0x316144[_0x9e93('0x5e')](_0x11af5e);}})[_0x9e93('0x2b')](function(_0x2a3148){if(_0x2a3148){_0x278c93=_0x2a3148[_0x9e93('0x3e')];if(!_0x557e72[_0x9e93('0x39')][_0x9e93('0x3f')](_0x9e93('0x40'))){_0x11af5e[_0x9e93('0x25')]=qs[_0x9e93('0x25')](_0x557e72['query'][_0x9e93('0x25')]);_0x11af5e[_0x9e93('0x23')]=qs['offset'](_0x557e72[_0x9e93('0x39')]['offset']);}return _0x316144[_0x9e93('0x5e')](_0x11af5e);}})[_0x9e93('0x2b')](function(_0x2c2cb0){if(_0x2c2cb0){return _0x2c2cb0?{'count':_0x278c93,'rows':_0x2c2cb0}:null;}})[_0x9e93('0x2b')](respondWithResult(_0x3a4a57,null))[_0x9e93('0x4c')](handleError(_0x3a4a57,null));};