8d433a1358cc0fb22139c8001d53bb5e07b8affa
[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 _0x92be=['../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','offset','undefined','limit','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','ChatGroup','count','includeAll','rows','catch','options','find','create','body','params','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','keys','User','nolimit','removeMembers','addMessage','getMessages','pick','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x31295c,_0x2f2b82){var _0x2c150e=function(_0x957f1){while(--_0x957f1){_0x31295c['push'](_0x31295c['shift']());}};_0x2c150e(++_0x2f2b82);}(_0x92be,0x176));var _0xe92b=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x92be[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe92b('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe92b('0x1'));var moment=require(_0xe92b('0x2'));var BPromise=require(_0xe92b('0x3'));var Mustache=require(_0xe92b('0x4'));var util=require(_0xe92b('0x5'));var path=require('path');var sox=require(_0xe92b('0x6'));var csv=require(_0xe92b('0x7'));var ejs=require(_0xe92b('0x8'));var fs=require('fs');var fs_extra=require(_0xe92b('0x9'));var _=require(_0xe92b('0xa'));var squel=require(_0xe92b('0xb'));var crypto=require(_0xe92b('0xc'));var jsforce=require(_0xe92b('0xd'));var deskjs=require(_0xe92b('0xe'));var toCsv=require(_0xe92b('0x7'));var querystring=require(_0xe92b('0xf'));var Papa=require(_0xe92b('0x10'));var Redis=require(_0xe92b('0x11'));var authService=require(_0xe92b('0x12'));var qs=require(_0xe92b('0x13'));var as=require(_0xe92b('0x14'));var hardwareService=require(_0xe92b('0x15'));var logger=require(_0xe92b('0x16'))('api');var utils=require(_0xe92b('0x17'));var config=require(_0xe92b('0x18'));var licenseUtil=require(_0xe92b('0x19'));var db=require(_0xe92b('0x1a'))['db'];config['redis']=_[_0xe92b('0x1b')](config[_0xe92b('0x1c')],{'host':_0xe92b('0x1d'),'port':0x18eb});var socket=require(_0xe92b('0x1e'))(new Redis(config[_0xe92b('0x1c')]));require(_0xe92b('0x1f'))[_0xe92b('0x20')](socket);function respondWithStatusCode(_0x358dc0,_0x41d97a){_0x41d97a=_0x41d97a||0xcc;return function(_0x35122a){if(_0x35122a){return _0x358dc0[_0xe92b('0x21')](_0x41d97a);}return _0x358dc0[_0xe92b('0x22')](_0x41d97a)[_0xe92b('0x23')]();};}function respondWithResult(_0x677631,_0x309437){_0x309437=_0x309437||0xc8;return function(_0x13d5c0){if(_0x13d5c0){return _0x677631[_0xe92b('0x22')](_0x309437)['json'](_0x13d5c0);}};}function respondWithFilteredResult(_0x5a9c33,_0x11113c){return function(_0x554d24){if(_0x554d24){var _0x159803=typeof _0x11113c[_0xe92b('0x24')]===_0xe92b('0x25')&&typeof _0x11113c['limit']===_0xe92b('0x25');var _0x5a8a6a=_0x554d24['count'];var _0x16faea=_0x159803?0x0:_0x11113c[_0xe92b('0x24')];var _0x64eaa5=_0x159803?_0x554d24['count']:_0x11113c[_0xe92b('0x24')]+_0x11113c[_0xe92b('0x26')];var _0x261d9d;if(_0x64eaa5>=_0x5a8a6a){_0x64eaa5=_0x5a8a6a;_0x261d9d=0xc8;}else{_0x261d9d=0xce;}_0x5a9c33[_0xe92b('0x22')](_0x261d9d);return _0x5a9c33['set'](_0xe92b('0x27'),_0x16faea+'-'+_0x64eaa5+'/'+_0x5a8a6a)[_0xe92b('0x28')](_0x554d24);}return null;};}function patchUpdates(_0x42bfe7){return function(_0x134f75){try{jsonpatch['apply'](_0x134f75,_0x42bfe7,!![]);}catch(_0x37ec1d){return BPromise[_0xe92b('0x29')](_0x37ec1d);}return _0x134f75[_0xe92b('0x2a')]();};}function saveUpdates(_0x6ab9e8,_0x10ca9e){return function(_0xa22b04){if(_0xa22b04){return _0xa22b04[_0xe92b('0x2b')](_0x6ab9e8)[_0xe92b('0x2c')](function(_0x413703){return _0x413703;});}return null;};}function removeEntity(_0x1dd3ce,_0x128b8e){return function(_0x365bd9){if(_0x365bd9){return _0x365bd9[_0xe92b('0x2d')]()[_0xe92b('0x2c')](function(){_0x1dd3ce['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f289e,_0x3eab00){return function(_0x616901){if(!_0x616901){_0x1f289e[_0xe92b('0x21')](0x194);}return _0x616901;};}function handleError(_0x3576d8,_0x5597db){_0x5597db=_0x5597db||0x1f4;return function(_0x14c68a){logger[_0xe92b('0x2e')](_0x14c68a[_0xe92b('0x2f')]);if(_0x14c68a['name']){delete _0x14c68a[_0xe92b('0x30')];}_0x3576d8[_0xe92b('0x22')](_0x5597db)[_0xe92b('0x31')](_0x14c68a);};}exports[_0xe92b('0x32')]=function(_0x45aafb,_0x454e11){var _0x2aac2c={},_0x5b0e39={},_0x2ba16e={'count':0x0,'rows':[]};var _0x7647b3=_[_0xe92b('0x33')](db['ChatGroup'][_0xe92b('0x34')],function(_0x44bb2d){return{'name':_0x44bb2d['fieldName'],'type':_0x44bb2d['type'][_0xe92b('0x35')]};});_0x5b0e39[_0xe92b('0x36')]=_['map'](_0x7647b3,_0xe92b('0x30'));_0x5b0e39['query']=_['keys'](_0x45aafb[_0xe92b('0x37')]);_0x5b0e39[_0xe92b('0x38')]=_[_0xe92b('0x39')](_0x5b0e39[_0xe92b('0x36')],_0x5b0e39[_0xe92b('0x37')]);_0x2aac2c['attributes']=_[_0xe92b('0x39')](_0x5b0e39[_0xe92b('0x36')],qs['fields'](_0x45aafb['query'][_0xe92b('0x3a')]));_0x2aac2c[_0xe92b('0x3b')]=_0x2aac2c[_0xe92b('0x3b')][_0xe92b('0x3c')]?_0x2aac2c[_0xe92b('0x3b')]:_0x5b0e39[_0xe92b('0x36')];if(!_0x45aafb[_0xe92b('0x37')][_0xe92b('0x3d')]('nolimit')){_0x2aac2c[_0xe92b('0x26')]=qs[_0xe92b('0x26')](_0x45aafb['query']['limit']);_0x2aac2c[_0xe92b('0x24')]=qs[_0xe92b('0x24')](_0x45aafb[_0xe92b('0x37')]['offset']);}_0x2aac2c[_0xe92b('0x3e')]=qs['sort'](_0x45aafb[_0xe92b('0x37')][_0xe92b('0x3f')]);_0x2aac2c[_0xe92b('0x40')]=qs[_0xe92b('0x38')](_['pick'](_0x45aafb[_0xe92b('0x37')],_0x5b0e39['filters']),_0x7647b3);if(_0x45aafb['query'][_0xe92b('0x41')]){_0x2aac2c['where']=_[_0xe92b('0x42')](_0x2aac2c[_0xe92b('0x40')],{'$or':_[_0xe92b('0x33')](_0x7647b3,function(_0x19200a){if(_0x19200a['type']!==_0xe92b('0x43')){var _0x906ad7={};_0x906ad7[_0x19200a[_0xe92b('0x30')]]={'$like':'%'+_0x45aafb['query'][_0xe92b('0x41')]+'%'};return _0x906ad7;}})});}_0x2aac2c=_[_0xe92b('0x42')]({},_0x2aac2c,_0x45aafb['options']);var _0x3af383={'where':_0x2aac2c[_0xe92b('0x40')]};return db[_0xe92b('0x44')][_0xe92b('0x45')](_0x3af383)[_0xe92b('0x2c')](function(_0x322e9e){_0x2ba16e[_0xe92b('0x45')]=_0x322e9e;if(_0x45aafb[_0xe92b('0x37')][_0xe92b('0x46')]){_0x2aac2c['include']=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0x2aac2c);})[_0xe92b('0x2c')](function(_0x259ab){_0x2ba16e[_0xe92b('0x47')]=_0x259ab;return _0x2ba16e;})[_0xe92b('0x2c')](respondWithFilteredResult(_0x454e11,_0x2aac2c))[_0xe92b('0x48')](handleError(_0x454e11,null));};exports['show']=function(_0x5d5280,_0x5e1568){var _0x13ded7={'raw':!![],'where':{'id':_0x5d5280['params']['id']}},_0x1ea8dd={};_0x1ea8dd[_0xe92b('0x36')]=_['keys'](db[_0xe92b('0x44')][_0xe92b('0x34')]);_0x1ea8dd[_0xe92b('0x37')]=_['keys'](_0x5d5280['query']);_0x1ea8dd[_0xe92b('0x38')]=_[_0xe92b('0x39')](_0x1ea8dd[_0xe92b('0x36')],_0x1ea8dd['query']);_0x13ded7[_0xe92b('0x3b')]=_['intersection'](_0x1ea8dd[_0xe92b('0x36')],qs[_0xe92b('0x3a')](_0x5d5280[_0xe92b('0x37')][_0xe92b('0x3a')]));_0x13ded7['attributes']=_0x13ded7[_0xe92b('0x3b')][_0xe92b('0x3c')]?_0x13ded7['attributes']:_0x1ea8dd[_0xe92b('0x36')];if(_0x5d5280[_0xe92b('0x37')][_0xe92b('0x46')]){_0x13ded7['include']=[{'all':!![]}];}_0x13ded7=_['merge']({},_0x13ded7,_0x5d5280[_0xe92b('0x49')]);return db[_0xe92b('0x44')][_0xe92b('0x4a')](_0x13ded7)[_0xe92b('0x2c')](handleEntityNotFound(_0x5e1568,null))[_0xe92b('0x2c')](respondWithResult(_0x5e1568,null))[_0xe92b('0x48')](handleError(_0x5e1568,null));};exports[_0xe92b('0x4b')]=function(_0x488c20,_0x364141){return db[_0xe92b('0x44')][_0xe92b('0x4b')](_0x488c20[_0xe92b('0x4c')],{})[_0xe92b('0x2c')](respondWithResult(_0x364141,0xc9))[_0xe92b('0x48')](handleError(_0x364141,null));};exports[_0xe92b('0x2b')]=function(_0x58bad0,_0x5dabe4){if(_0x58bad0[_0xe92b('0x4c')]['id']){delete _0x58bad0[_0xe92b('0x4c')]['id'];}return db[_0xe92b('0x44')]['find']({'where':{'id':_0x58bad0[_0xe92b('0x4d')]['id']}})[_0xe92b('0x2c')](handleEntityNotFound(_0x5dabe4,null))[_0xe92b('0x2c')](saveUpdates(_0x58bad0[_0xe92b('0x4c')],null))[_0xe92b('0x2c')](respondWithResult(_0x5dabe4,null))['catch'](handleError(_0x5dabe4,null));};exports[_0xe92b('0x2d')]=function(_0x971cab,_0x4ff5f3){return db[_0xe92b('0x44')][_0xe92b('0x4a')]({'where':{'id':_0x971cab[_0xe92b('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4ff5f3,null))['then'](removeEntity(_0x4ff5f3,null))[_0xe92b('0x48')](handleError(_0x4ff5f3,null));};exports[_0xe92b('0x4e')]=function(_0x1c160b,_0x32f132){return db[_0xe92b('0x44')][_0xe92b('0x4e')]()[_0xe92b('0x2c')](respondWithResult(_0x32f132,null))[_0xe92b('0x48')](handleError(_0x32f132,null));};exports[_0xe92b('0x4f')]=function(_0x410e54,_0x7d4523,_0x5cbebe){return db[_0xe92b('0x50')][_0xe92b('0x45')]({'where':{'ChatGroupId':_0x410e54['params']['id'],'ToId':_0x410e54[_0xe92b('0x51')]['id'],'read':![]}})['then'](function(_0x3daa09){return{'id':_[_0xe92b('0x52')](_0x410e54[_0xe92b('0x4d')]['id']),'count':_0x3daa09};})['then'](respondWithResult(_0x7d4523,null))['catch'](handleError(_0x7d4523,null));};exports[_0xe92b('0x53')]=function(_0x34cf9e,_0x39fabc,_0x52b988){return db[_0xe92b('0x44')][_0xe92b('0x4a')]({'where':{'id':_0x34cf9e[_0xe92b('0x4d')]['id']}})[_0xe92b('0x2c')](handleEntityNotFound(_0x39fabc,null))[_0xe92b('0x2c')](function(_0x5efaa4){if(_0x5efaa4){return _0x5efaa4[_0xe92b('0x53')](_0x34cf9e[_0xe92b('0x4c')][_0xe92b('0x54')],_[_0xe92b('0x55')](_0x34cf9e[_0xe92b('0x4c')],[_0xe92b('0x54'),'id'])||{});}})[_0xe92b('0x2c')](respondWithResult(_0x39fabc,null))[_0xe92b('0x48')](handleError(_0x39fabc,null));};exports[_0xe92b('0x56')]=function(_0x30960b,_0x2a0485,_0x43045a){var _0x5dd75e={};var _0x4be839={};var _0xb1f058;var _0x3e3c25;return db['ChatGroup'][_0xe92b('0x57')]({'where':{'id':_0x30960b[_0xe92b('0x4d')]['id']}})[_0xe92b('0x2c')](handleEntityNotFound(_0x2a0485,null))[_0xe92b('0x2c')](function(_0x4411b7){if(_0x4411b7){_0xb1f058=_0x4411b7;_0x4be839[_0xe92b('0x36')]=_[_0xe92b('0x58')](db[_0xe92b('0x59')]['rawAttributes']);_0x4be839[_0xe92b('0x37')]=_['keys'](_0x30960b[_0xe92b('0x37')]);_0x4be839[_0xe92b('0x38')]=_[_0xe92b('0x39')](_0x4be839['model'],_0x4be839[_0xe92b('0x37')]);_0x5dd75e[_0xe92b('0x3b')]=_[_0xe92b('0x39')](_0x4be839['model'],qs[_0xe92b('0x3a')](_0x30960b['query'][_0xe92b('0x3a')]));_0x5dd75e[_0xe92b('0x3b')]=_0x5dd75e[_0xe92b('0x3b')][_0xe92b('0x3c')]?_0x5dd75e[_0xe92b('0x3b')]:_0x4be839[_0xe92b('0x36')];_0x5dd75e[_0xe92b('0x3e')]=qs['sort'](_0x30960b['query'][_0xe92b('0x3f')]);_0x5dd75e[_0xe92b('0x40')]=qs[_0xe92b('0x38')](_['pick'](_0x30960b[_0xe92b('0x37')],_0x4be839[_0xe92b('0x38')]));if(_0x30960b[_0xe92b('0x37')][_0xe92b('0x41')]){_0x5dd75e[_0xe92b('0x40')]=_[_0xe92b('0x42')](_0x5dd75e['where'],{'$or':_[_0xe92b('0x33')](_0x5dd75e[_0xe92b('0x3b')],function(_0x49cec3){var _0x2eb5f1={};_0x2eb5f1[_0x49cec3]={'$like':'%'+_0x30960b[_0xe92b('0x37')][_0xe92b('0x41')]+'%'};return _0x2eb5f1;})});}_0x5dd75e=_[_0xe92b('0x42')]({},_0x5dd75e,_0x30960b['options']);return _0xb1f058[_0xe92b('0x56')](_0x5dd75e);}})[_0xe92b('0x2c')](function(_0x303b34){if(_0x303b34){_0x3e3c25=_0x303b34['length'];if(!_0x30960b[_0xe92b('0x37')]['hasOwnProperty'](_0xe92b('0x5a'))){_0x5dd75e[_0xe92b('0x26')]=qs[_0xe92b('0x26')](_0x30960b['query']['limit']);_0x5dd75e[_0xe92b('0x24')]=qs[_0xe92b('0x24')](_0x30960b[_0xe92b('0x37')][_0xe92b('0x24')]);}return _0xb1f058[_0xe92b('0x56')](_0x5dd75e);}})[_0xe92b('0x2c')](function(_0xae9992){if(_0xae9992){return _0xae9992?{'count':_0x3e3c25,'rows':_0xae9992}:null;}})[_0xe92b('0x2c')](respondWithResult(_0x2a0485,null))[_0xe92b('0x48')](handleError(_0x2a0485,null));};exports['removeMembers']=function(_0x49aeea,_0x1d2900,_0x149293){return db['ChatGroup'][_0xe92b('0x4a')]({'where':{'id':_0x49aeea[_0xe92b('0x4d')]['id']}})[_0xe92b('0x2c')](handleEntityNotFound(_0x1d2900,null))['then'](function(_0x1b5ef0){if(_0x1b5ef0){return _0x1b5ef0[_0xe92b('0x5b')](_0x49aeea[_0xe92b('0x37')][_0xe92b('0x54')]);}})[_0xe92b('0x2c')](respondWithStatusCode(_0x1d2900,null))['catch'](handleError(_0x1d2900,null));};exports[_0xe92b('0x5c')]=function(_0x40adb5,_0x2394fc,_0x3775bd){if(_0x40adb5[_0xe92b('0x4c')]['id']){delete _0x40adb5[_0xe92b('0x4c')]['id'];}return db['ChatGroup'][_0xe92b('0x4a')]({'where':{'id':_0x40adb5['params']['id']}})['then'](handleEntityNotFound(_0x2394fc,null))['then'](function(_0x2e7f46){if(_0x2e7f46){_0x40adb5[_0xe92b('0x4c')]['ChatGroupId']=_0x2e7f46['id'];return db[_0xe92b('0x50')]['create'](_0x40adb5[_0xe92b('0x4c')]);}})[_0xe92b('0x2c')](respondWithResult(_0x2394fc,null))['catch'](handleError(_0x2394fc,null));};exports[_0xe92b('0x5d')]=function(_0x856165,_0x57bc81,_0x3fa0f3){var _0x110a06={};var _0x5a8c01={};var _0x4beec1;var _0x44d9dd;return db[_0xe92b('0x44')][_0xe92b('0x57')]({'where':{'id':_0x856165['params']['id']}})[_0xe92b('0x2c')](handleEntityNotFound(_0x57bc81,null))[_0xe92b('0x2c')](function(_0x184392){if(_0x184392){_0x4beec1=_0x184392;_0x5a8c01['model']=_[_0xe92b('0x58')](db[_0xe92b('0x50')][_0xe92b('0x34')]);_0x5a8c01['query']=_[_0xe92b('0x58')](_0x856165[_0xe92b('0x37')]);_0x5a8c01[_0xe92b('0x38')]=_['intersection'](_0x5a8c01[_0xe92b('0x36')],_0x5a8c01['query']);_0x110a06[_0xe92b('0x3b')]=_[_0xe92b('0x39')](_0x5a8c01[_0xe92b('0x36')],qs[_0xe92b('0x3a')](_0x856165[_0xe92b('0x37')][_0xe92b('0x3a')]));_0x110a06[_0xe92b('0x3b')]=_0x110a06[_0xe92b('0x3b')][_0xe92b('0x3c')]?_0x110a06[_0xe92b('0x3b')]:_0x5a8c01[_0xe92b('0x36')];_0x110a06['order']=qs[_0xe92b('0x3f')](_0x856165[_0xe92b('0x37')][_0xe92b('0x3f')]);_0x110a06[_0xe92b('0x40')]=qs[_0xe92b('0x38')](_[_0xe92b('0x5e')](_0x856165[_0xe92b('0x37')],_0x5a8c01['filters']));if(_0x856165['query'][_0xe92b('0x41')]){_0x110a06[_0xe92b('0x40')]=_[_0xe92b('0x42')](_0x110a06['where'],{'$or':_[_0xe92b('0x33')](_0x110a06['attributes'],function(_0x3c39bc){var _0x5d389d={};_0x5d389d[_0x3c39bc]={'$like':'%'+_0x856165[_0xe92b('0x37')][_0xe92b('0x41')]+'%'};return _0x5d389d;})});}if(_0x856165['query'][_0xe92b('0x5f')]){var _0x47b948=_0x856165[_0xe92b('0x37')][_0xe92b('0x5f')][_0xe92b('0x60')](',');var _0x2efb95={};_0x2efb95[_0x47b948[0x0]]={'$gte':moment(_0x47b948[0x1])[_0xe92b('0x61')](_0xe92b('0x62'))};_0x110a06['where']=_[_0xe92b('0x42')](_0x110a06['where'],_0x2efb95);}_0x110a06=_[_0xe92b('0x42')]({},_0x110a06,_0x856165['options']);return _0x4beec1['getMessages'](_0x110a06);}})[_0xe92b('0x2c')](function(_0x4e9e9d){if(_0x4e9e9d){_0x44d9dd=_0x4e9e9d[_0xe92b('0x3c')];if(!_0x856165['query'][_0xe92b('0x3d')](_0xe92b('0x5a'))){_0x110a06[_0xe92b('0x26')]=qs[_0xe92b('0x26')](_0x856165[_0xe92b('0x37')][_0xe92b('0x26')]);_0x110a06[_0xe92b('0x24')]=qs[_0xe92b('0x24')](_0x856165['query'][_0xe92b('0x24')]);}return _0x4beec1[_0xe92b('0x5d')](_0x110a06);}})[_0xe92b('0x2c')](function(_0x3a3319){if(_0x3a3319){return _0x3a3319?{'count':_0x44d9dd,'rows':_0x3a3319}:null;}})[_0xe92b('0x2c')](respondWithResult(_0x57bc81,null))['catch'](handleError(_0x57bc81,null));};