Built motion from commit e0fa946e.|2.6.5
[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 _0x7a7f=['then','error','stack','name','send','index','ChatGroup','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','filter','where','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','find','create','body','params','describe','getUnread','ChatInternalMessage','toInteger','addMembers','ids','omit','User','pick','getMembers','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','destroy'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0x7a7f,0x1b8));var _0xf7a7=function(_0xd1fb8c,_0x4c9863){_0xd1fb8c=_0xd1fb8c-0x0;var _0x229650=_0x7a7f[_0xd1fb8c];return _0x229650;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf7a7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf7a7('0x1'));var rp=require(_0xf7a7('0x2'));var moment=require(_0xf7a7('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xf7a7('0x4'));var util=require(_0xf7a7('0x5'));var path=require(_0xf7a7('0x6'));var sox=require(_0xf7a7('0x7'));var csv=require(_0xf7a7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf7a7('0x9'));var _=require('lodash');var squel=require(_0xf7a7('0xa'));var crypto=require(_0xf7a7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf7a7('0xc'));var toCsv=require(_0xf7a7('0x8'));var querystring=require(_0xf7a7('0xd'));var Papa=require(_0xf7a7('0xe'));var Redis=require(_0xf7a7('0xf'));var authService=require(_0xf7a7('0x10'));var qs=require(_0xf7a7('0x11'));var as=require(_0xf7a7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf7a7('0x13'))(_0xf7a7('0x14'));var utils=require(_0xf7a7('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf7a7('0x16'))['db'];config[_0xf7a7('0x17')]=_['defaults'](config[_0xf7a7('0x17')],{'host':_0xf7a7('0x18'),'port':0x18eb});var socket=require(_0xf7a7('0x19'))(new Redis(config['redis']));require(_0xf7a7('0x1a'))[_0xf7a7('0x1b')](socket);function respondWithStatusCode(_0x5a5b8b,_0x567d4a){_0x567d4a=_0x567d4a||0xcc;return function(_0x214fd3){if(_0x214fd3){return _0x5a5b8b[_0xf7a7('0x1c')](_0x567d4a);}return _0x5a5b8b[_0xf7a7('0x1d')](_0x567d4a)[_0xf7a7('0x1e')]();};}function respondWithResult(_0x39cee8,_0x15f40a){_0x15f40a=_0x15f40a||0xc8;return function(_0x8bae84){if(_0x8bae84){return _0x39cee8[_0xf7a7('0x1d')](_0x15f40a)[_0xf7a7('0x1f')](_0x8bae84);}};}function respondWithFilteredResult(_0x43a0e9,_0x3946a2){return function(_0x384eaa){if(_0x384eaa){var _0x312409=typeof _0x3946a2[_0xf7a7('0x20')]==='undefined'&&typeof _0x3946a2[_0xf7a7('0x21')]===_0xf7a7('0x22');var _0x12cf32=_0x384eaa[_0xf7a7('0x23')];var _0x147739=_0x312409?0x0:_0x3946a2['offset'];var _0x28028b=_0x312409?_0x384eaa[_0xf7a7('0x23')]:_0x3946a2['offset']+_0x3946a2[_0xf7a7('0x21')];var _0x3ffff2;if(_0x28028b>=_0x12cf32){_0x28028b=_0x12cf32;_0x3ffff2=0xc8;}else{_0x3ffff2=0xce;}_0x43a0e9['status'](_0x3ffff2);return _0x43a0e9['set'](_0xf7a7('0x24'),_0x147739+'-'+_0x28028b+'/'+_0x12cf32)['json'](_0x384eaa);}return null;};}function patchUpdates(_0x3f75eb){return function(_0x4b244f){try{jsonpatch['apply'](_0x4b244f,_0x3f75eb,!![]);}catch(_0x1dace5){return BPromise[_0xf7a7('0x25')](_0x1dace5);}return _0x4b244f['save']();};}function saveUpdates(_0xaaa159,_0x2e8272){return function(_0x63e41e){if(_0x63e41e){return _0x63e41e[_0xf7a7('0x26')](_0xaaa159)['then'](function(_0x12b023){return _0x12b023;});}return null;};}function removeEntity(_0x4ae2f7,_0x4b67a9){return function(_0x121a33){if(_0x121a33){return _0x121a33[_0xf7a7('0x27')]()[_0xf7a7('0x28')](function(){_0x4ae2f7['status'](0xcc)[_0xf7a7('0x1e')]();});}};}function handleEntityNotFound(_0x4e7cec,_0x57d466){return function(_0x52813a){if(!_0x52813a){_0x4e7cec['sendStatus'](0x194);}return _0x52813a;};}function handleError(_0xb9a183,_0x133181){_0x133181=_0x133181||0x1f4;return function(_0x172e15){logger[_0xf7a7('0x29')](_0x172e15[_0xf7a7('0x2a')]);if(_0x172e15[_0xf7a7('0x2b')]){delete _0x172e15[_0xf7a7('0x2b')];}_0xb9a183[_0xf7a7('0x1d')](_0x133181)[_0xf7a7('0x2c')](_0x172e15);};}exports[_0xf7a7('0x2d')]=function(_0x3e51b7,_0x1a31a2){var _0xd87786={},_0x200767={},_0x45f915={'count':0x0,'rows':[]};var _0x215e63=_['map'](db[_0xf7a7('0x2e')][_0xf7a7('0x2f')],function(_0x2d5c6c){return{'name':_0x2d5c6c[_0xf7a7('0x30')],'type':_0x2d5c6c['type'][_0xf7a7('0x31')]};});_0x200767[_0xf7a7('0x32')]=_[_0xf7a7('0x33')](_0x215e63,_0xf7a7('0x2b'));_0x200767[_0xf7a7('0x34')]=_[_0xf7a7('0x35')](_0x3e51b7[_0xf7a7('0x34')]);_0x200767['filters']=_[_0xf7a7('0x36')](_0x200767[_0xf7a7('0x32')],_0x200767[_0xf7a7('0x34')]);_0xd87786[_0xf7a7('0x37')]=_[_0xf7a7('0x36')](_0x200767[_0xf7a7('0x32')],qs[_0xf7a7('0x38')](_0x3e51b7[_0xf7a7('0x34')]['fields']));_0xd87786[_0xf7a7('0x37')]=_0xd87786[_0xf7a7('0x37')][_0xf7a7('0x39')]?_0xd87786[_0xf7a7('0x37')]:_0x200767[_0xf7a7('0x32')];if(!_0x3e51b7[_0xf7a7('0x34')][_0xf7a7('0x3a')]('nolimit')){_0xd87786['limit']=qs[_0xf7a7('0x21')](_0x3e51b7[_0xf7a7('0x34')]['limit']);_0xd87786['offset']=qs[_0xf7a7('0x20')](_0x3e51b7[_0xf7a7('0x34')][_0xf7a7('0x20')]);}_0xd87786[_0xf7a7('0x3b')]=qs[_0xf7a7('0x3c')](_0x3e51b7[_0xf7a7('0x34')][_0xf7a7('0x3c')]);_0xd87786['where']=qs[_0xf7a7('0x3d')](_['pick'](_0x3e51b7[_0xf7a7('0x34')],_0x200767[_0xf7a7('0x3d')]),_0x215e63);if(_0x3e51b7[_0xf7a7('0x34')][_0xf7a7('0x3e')]){_0xd87786[_0xf7a7('0x3f')]=_[_0xf7a7('0x40')](_0xd87786[_0xf7a7('0x3f')],{'$or':_['map'](_0x215e63,function(_0x349358){if(_0x349358[_0xf7a7('0x41')]!==_0xf7a7('0x42')){var _0x3ca3ad={};_0x3ca3ad[_0x349358['name']]={'$like':'%'+_0x3e51b7[_0xf7a7('0x34')]['filter']+'%'};return _0x3ca3ad;}})});}_0xd87786=_[_0xf7a7('0x40')]({},_0xd87786,_0x3e51b7[_0xf7a7('0x43')]);var _0x23559c={'where':_0xd87786[_0xf7a7('0x3f')]};return db['ChatGroup'][_0xf7a7('0x23')](_0x23559c)[_0xf7a7('0x28')](function(_0x279159){_0x45f915[_0xf7a7('0x23')]=_0x279159;if(_0x3e51b7[_0xf7a7('0x34')][_0xf7a7('0x44')]){_0xd87786[_0xf7a7('0x45')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0xd87786);})[_0xf7a7('0x28')](function(_0x3646b9){_0x45f915[_0xf7a7('0x46')]=_0x3646b9;return _0x45f915;})[_0xf7a7('0x28')](respondWithFilteredResult(_0x1a31a2,_0xd87786))[_0xf7a7('0x47')](handleError(_0x1a31a2,null));};exports[_0xf7a7('0x48')]=function(_0x3ecca3,_0x38bebc){var _0x420272={'raw':!![],'where':{'id':_0x3ecca3['params']['id']}},_0x15496f={};_0x15496f['model']=_[_0xf7a7('0x35')](db['ChatGroup'][_0xf7a7('0x2f')]);_0x15496f[_0xf7a7('0x34')]=_[_0xf7a7('0x35')](_0x3ecca3['query']);_0x15496f[_0xf7a7('0x3d')]=_[_0xf7a7('0x36')](_0x15496f['model'],_0x15496f[_0xf7a7('0x34')]);_0x420272[_0xf7a7('0x37')]=_['intersection'](_0x15496f[_0xf7a7('0x32')],qs['fields'](_0x3ecca3['query'][_0xf7a7('0x38')]));_0x420272[_0xf7a7('0x37')]=_0x420272[_0xf7a7('0x37')][_0xf7a7('0x39')]?_0x420272[_0xf7a7('0x37')]:_0x15496f['model'];if(_0x3ecca3[_0xf7a7('0x34')][_0xf7a7('0x44')]){_0x420272['include']=[{'all':!![]}];}_0x420272=_['merge']({},_0x420272,_0x3ecca3[_0xf7a7('0x43')]);return db[_0xf7a7('0x2e')][_0xf7a7('0x49')](_0x420272)['then'](handleEntityNotFound(_0x38bebc,null))['then'](respondWithResult(_0x38bebc,null))[_0xf7a7('0x47')](handleError(_0x38bebc,null));};exports['create']=function(_0x2926d2,_0x1da62c){return db[_0xf7a7('0x2e')][_0xf7a7('0x4a')](_0x2926d2[_0xf7a7('0x4b')],{})[_0xf7a7('0x28')](respondWithResult(_0x1da62c,0xc9))[_0xf7a7('0x47')](handleError(_0x1da62c,null));};exports[_0xf7a7('0x26')]=function(_0x320c91,_0xc9738d){if(_0x320c91[_0xf7a7('0x4b')]['id']){delete _0x320c91[_0xf7a7('0x4b')]['id'];}return db[_0xf7a7('0x2e')][_0xf7a7('0x49')]({'where':{'id':_0x320c91[_0xf7a7('0x4c')]['id']}})['then'](handleEntityNotFound(_0xc9738d,null))['then'](saveUpdates(_0x320c91[_0xf7a7('0x4b')],null))[_0xf7a7('0x28')](respondWithResult(_0xc9738d,null))['catch'](handleError(_0xc9738d,null));};exports[_0xf7a7('0x27')]=function(_0x4f9aff,_0x3149d2){return db['ChatGroup']['find']({'where':{'id':_0x4f9aff[_0xf7a7('0x4c')]['id']}})[_0xf7a7('0x28')](handleEntityNotFound(_0x3149d2,null))[_0xf7a7('0x28')](removeEntity(_0x3149d2,null))[_0xf7a7('0x47')](handleError(_0x3149d2,null));};exports['describe']=function(_0x330705,_0x5a0690){return db[_0xf7a7('0x2e')][_0xf7a7('0x4d')]()['then'](respondWithResult(_0x5a0690,null))[_0xf7a7('0x47')](handleError(_0x5a0690,null));};exports[_0xf7a7('0x4e')]=function(_0x127be6,_0x48d72f,_0x190dbb){return db[_0xf7a7('0x4f')][_0xf7a7('0x23')]({'where':{'ChatGroupId':_0x127be6['params']['id'],'ToId':_0x127be6['user']['id'],'read':![]}})[_0xf7a7('0x28')](function(_0x56ffe3){return{'id':_[_0xf7a7('0x50')](_0x127be6[_0xf7a7('0x4c')]['id']),'count':_0x56ffe3};})['then'](respondWithResult(_0x48d72f,null))[_0xf7a7('0x47')](handleError(_0x48d72f,null));};exports[_0xf7a7('0x51')]=function(_0x282b2a,_0x49c60e,_0x46847f){return db[_0xf7a7('0x2e')]['find']({'where':{'id':_0x282b2a[_0xf7a7('0x4c')]['id']}})[_0xf7a7('0x28')](handleEntityNotFound(_0x49c60e,null))[_0xf7a7('0x28')](function(_0x5c074){if(_0x5c074){return _0x5c074['addMembers'](_0x282b2a[_0xf7a7('0x4b')][_0xf7a7('0x52')],_[_0xf7a7('0x53')](_0x282b2a[_0xf7a7('0x4b')],[_0xf7a7('0x52'),'id'])||{});}})[_0xf7a7('0x28')](respondWithResult(_0x49c60e,null))[_0xf7a7('0x47')](handleError(_0x49c60e,null));};exports['getMembers']=function(_0x11f451,_0x45773d,_0x4ed4a6){var _0x698584={};var _0xcf805f={};var _0x302f2e;var _0x2864fd;return db[_0xf7a7('0x2e')]['findOne']({'where':{'id':_0x11f451[_0xf7a7('0x4c')]['id']}})[_0xf7a7('0x28')](handleEntityNotFound(_0x45773d,null))['then'](function(_0xc99536){if(_0xc99536){_0x302f2e=_0xc99536;_0xcf805f[_0xf7a7('0x32')]=_['keys'](db[_0xf7a7('0x54')][_0xf7a7('0x2f')]);_0xcf805f[_0xf7a7('0x34')]=_['keys'](_0x11f451[_0xf7a7('0x34')]);_0xcf805f[_0xf7a7('0x3d')]=_[_0xf7a7('0x36')](_0xcf805f[_0xf7a7('0x32')],_0xcf805f[_0xf7a7('0x34')]);_0x698584[_0xf7a7('0x37')]=_[_0xf7a7('0x36')](_0xcf805f['model'],qs['fields'](_0x11f451[_0xf7a7('0x34')][_0xf7a7('0x38')]));_0x698584[_0xf7a7('0x37')]=_0x698584[_0xf7a7('0x37')][_0xf7a7('0x39')]?_0x698584[_0xf7a7('0x37')]:_0xcf805f[_0xf7a7('0x32')];_0x698584['order']=qs[_0xf7a7('0x3c')](_0x11f451['query'][_0xf7a7('0x3c')]);_0x698584['where']=qs['filters'](_[_0xf7a7('0x55')](_0x11f451[_0xf7a7('0x34')],_0xcf805f[_0xf7a7('0x3d')]));if(_0x11f451[_0xf7a7('0x34')][_0xf7a7('0x3e')]){_0x698584[_0xf7a7('0x3f')]=_[_0xf7a7('0x40')](_0x698584[_0xf7a7('0x3f')],{'$or':_[_0xf7a7('0x33')](_0x698584[_0xf7a7('0x37')],function(_0x48a99c){var _0x4b5f5f={};_0x4b5f5f[_0x48a99c]={'$like':'%'+_0x11f451[_0xf7a7('0x34')][_0xf7a7('0x3e')]+'%'};return _0x4b5f5f;})});}_0x698584=_[_0xf7a7('0x40')]({},_0x698584,_0x11f451['options']);return _0x302f2e[_0xf7a7('0x56')](_0x698584);}})['then'](function(_0x5b6a1e){if(_0x5b6a1e){_0x2864fd=_0x5b6a1e[_0xf7a7('0x39')];if(!_0x11f451[_0xf7a7('0x34')]['hasOwnProperty'](_0xf7a7('0x57'))){_0x698584['limit']=qs[_0xf7a7('0x21')](_0x11f451[_0xf7a7('0x34')][_0xf7a7('0x21')]);_0x698584[_0xf7a7('0x20')]=qs['offset'](_0x11f451['query'][_0xf7a7('0x20')]);}return _0x302f2e['getMembers'](_0x698584);}})[_0xf7a7('0x28')](function(_0x2c31be){if(_0x2c31be){return _0x2c31be?{'count':_0x2864fd,'rows':_0x2c31be}:null;}})[_0xf7a7('0x28')](respondWithResult(_0x45773d,null))[_0xf7a7('0x47')](handleError(_0x45773d,null));};exports[_0xf7a7('0x58')]=function(_0x38e18b,_0x37db99,_0x3333c2){return db[_0xf7a7('0x2e')][_0xf7a7('0x49')]({'where':{'id':_0x38e18b[_0xf7a7('0x4c')]['id']}})[_0xf7a7('0x28')](handleEntityNotFound(_0x37db99,null))[_0xf7a7('0x28')](function(_0x432728){if(_0x432728){return _0x432728[_0xf7a7('0x58')](_0x38e18b['query']['ids']);}})[_0xf7a7('0x28')](respondWithStatusCode(_0x37db99,null))[_0xf7a7('0x47')](handleError(_0x37db99,null));};exports[_0xf7a7('0x59')]=function(_0x2bd47a,_0x1af400,_0x4d741f){if(_0x2bd47a['body']['id']){delete _0x2bd47a[_0xf7a7('0x4b')]['id'];}return db[_0xf7a7('0x2e')][_0xf7a7('0x49')]({'where':{'id':_0x2bd47a[_0xf7a7('0x4c')]['id']}})[_0xf7a7('0x28')](handleEntityNotFound(_0x1af400,null))[_0xf7a7('0x28')](function(_0x313ee3){if(_0x313ee3){_0x2bd47a[_0xf7a7('0x4b')][_0xf7a7('0x5a')]=_0x313ee3['id'];return db[_0xf7a7('0x4f')]['create'](_0x2bd47a[_0xf7a7('0x4b')]);}})[_0xf7a7('0x28')](respondWithResult(_0x1af400,null))[_0xf7a7('0x47')](handleError(_0x1af400,null));};exports[_0xf7a7('0x5b')]=function(_0x27aa76,_0x59130c,_0x11a923){var _0x3bcbf4={};var _0x325b95={};var _0x221434;var _0x180633;return db[_0xf7a7('0x2e')][_0xf7a7('0x5c')]({'where':{'id':_0x27aa76[_0xf7a7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x59130c,null))[_0xf7a7('0x28')](function(_0xb6c971){if(_0xb6c971){_0x221434=_0xb6c971;_0x325b95[_0xf7a7('0x32')]=_[_0xf7a7('0x35')](db[_0xf7a7('0x4f')][_0xf7a7('0x2f')]);_0x325b95[_0xf7a7('0x34')]=_[_0xf7a7('0x35')](_0x27aa76[_0xf7a7('0x34')]);_0x325b95[_0xf7a7('0x3d')]=_[_0xf7a7('0x36')](_0x325b95[_0xf7a7('0x32')],_0x325b95[_0xf7a7('0x34')]);_0x3bcbf4[_0xf7a7('0x37')]=_[_0xf7a7('0x36')](_0x325b95['model'],qs['fields'](_0x27aa76['query']['fields']));_0x3bcbf4['attributes']=_0x3bcbf4['attributes'][_0xf7a7('0x39')]?_0x3bcbf4[_0xf7a7('0x37')]:_0x325b95['model'];_0x3bcbf4[_0xf7a7('0x3b')]=qs[_0xf7a7('0x3c')](_0x27aa76[_0xf7a7('0x34')][_0xf7a7('0x3c')]);_0x3bcbf4[_0xf7a7('0x3f')]=qs['filters'](_[_0xf7a7('0x55')](_0x27aa76['query'],_0x325b95[_0xf7a7('0x3d')]));if(_0x27aa76[_0xf7a7('0x34')][_0xf7a7('0x3e')]){_0x3bcbf4['where']=_[_0xf7a7('0x40')](_0x3bcbf4[_0xf7a7('0x3f')],{'$or':_[_0xf7a7('0x33')](_0x3bcbf4[_0xf7a7('0x37')],function(_0x587aa0){var _0x419c18={};_0x419c18[_0x587aa0]={'$like':'%'+_0x27aa76[_0xf7a7('0x34')][_0xf7a7('0x3e')]+'%'};return _0x419c18;})});}if(_0x27aa76['query'][_0xf7a7('0x5d')]){var _0x2abd49=_0x27aa76[_0xf7a7('0x34')]['$gte']['split'](',');var _0x5c8b6e={};_0x5c8b6e[_0x2abd49[0x0]]={'$gte':moment(_0x2abd49[0x1])[_0xf7a7('0x5e')](_0xf7a7('0x5f'))};_0x3bcbf4[_0xf7a7('0x3f')]=_['merge'](_0x3bcbf4['where'],_0x5c8b6e);}_0x3bcbf4=_[_0xf7a7('0x40')]({},_0x3bcbf4,_0x27aa76[_0xf7a7('0x43')]);return _0x221434[_0xf7a7('0x5b')](_0x3bcbf4);}})[_0xf7a7('0x28')](function(_0x17d9fe){if(_0x17d9fe){_0x180633=_0x17d9fe[_0xf7a7('0x39')];if(!_0x27aa76[_0xf7a7('0x34')][_0xf7a7('0x3a')]('nolimit')){_0x3bcbf4[_0xf7a7('0x21')]=qs[_0xf7a7('0x21')](_0x27aa76['query'][_0xf7a7('0x21')]);_0x3bcbf4['offset']=qs[_0xf7a7('0x20')](_0x27aa76[_0xf7a7('0x34')]['offset']);}return _0x221434[_0xf7a7('0x5b')](_0x3bcbf4);}})[_0xf7a7('0x28')](function(_0x1de587){if(_0x1de587){return _0x1de587?{'count':_0x180633,'rows':_0x1de587}:null;}})[_0xf7a7('0x28')](respondWithResult(_0x59130c,null))[_0xf7a7('0x47')](handleError(_0x59130c,null));};