Built motion from commit 47436d59.|2.6.7
[motion2.git] / server / api / user / user.rpc.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 _0x891d=['role','mailPause','faxPause','openchannelPause','lastPauseAt','params','system','LogoutUser','destroy','all','mobile','phone','loginInPause','count','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','LOGIN','merge','LOGININPAUSE','concat','lodash','util','moment','bluebird','../../config/utils','rpc','defaults','redis','localhost','GetUser','User','findAll','options','raw','where','limit','include','map','model','attributes','then','info','stringify','catch','error','message','ShowUser','find','PauseUser','name','internal','interface','UserVoiceQueueRt','update','MemberReport','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','isNil','SIP/%s','PAUSE','body','type','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne'];(function(_0xf4a942,_0x18ae8c){var _0x526f6d=function(_0x23d820){while(--_0x23d820){_0xf4a942['push'](_0xf4a942['shift']());}};_0x526f6d(++_0x18ae8c);}(_0x891d,0x67));var _0xd891=function(_0x4efe13,_0x1dbd83){_0x4efe13=_0x4efe13-0x0;var _0x2d9c95=_0x891d[_0x4efe13];return _0x2d9c95;};'use strict';var _=require(_0xd891('0x0'));var util=require(_0xd891('0x1'));var moment=require(_0xd891('0x2'));var BPromise=require(_0xd891('0x3'));var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd891('0x4'));var logger=require('../../config/logger')(_0xd891('0x5'));var config=require('../../config/environment');config['redis']=_[_0xd891('0x6')](config[_0xd891('0x7')],{'host':_0xd891('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd891('0x7')]));require('./user.socket')['register'](socket);exports[_0xd891('0x9')]=function(_0x2cddfa){var _0x26a4bb=this;return new Promise(function(_0xd6204e,_0xfd5ce8){return db[_0xd891('0xa')][_0xd891('0xb')]({'raw':_0x2cddfa['options']?_0x2cddfa[_0xd891('0xc')][_0xd891('0xd')]===undefined?!![]:![]:!![],'where':_0x2cddfa['options']?_0x2cddfa[_0xd891('0xc')][_0xd891('0xe')]||null:null,'attributes':_0x2cddfa[_0xd891('0xc')]?_0x2cddfa[_0xd891('0xc')]['attributes']||null:null,'limit':_0x2cddfa[_0xd891('0xc')]?_0x2cddfa[_0xd891('0xc')][_0xd891('0xf')]||null:null,'include':_0x2cddfa[_0xd891('0xc')]?_0x2cddfa[_0xd891('0xc')][_0xd891('0x10')]?_[_0xd891('0x11')](_0x2cddfa[_0xd891('0xc')][_0xd891('0x10')],function(_0x1852a5){return{'model':db[_0x1852a5[_0xd891('0x12')]],'as':_0x1852a5['as'],'attributes':_0x1852a5[_0xd891('0x13')],'include':_0x1852a5[_0xd891('0x10')]?_['map'](_0x1852a5[_0xd891('0x10')],function(_0x56c629){return{'model':db[_0x56c629['model']],'as':_0x56c629['as'],'attributes':_0x56c629[_0xd891('0x13')],'include':_0x56c629[_0xd891('0x10')]?_[_0xd891('0x11')](_0x56c629[_0xd891('0x10')],function(_0x5c20c7){return{'model':db[_0x5c20c7['model']],'as':_0x5c20c7['as'],'attributes':_0x5c20c7[_0xd891('0x13')]};}):[]};}):[]};}):[]:[]})[_0xd891('0x14')](function(_0x4f6ca4){logger[_0xd891('0x15')](_0xd891('0x9'),_0x2cddfa);logger['debug'](_0xd891('0x9'),_0x2cddfa,JSON[_0xd891('0x16')](_0x4f6ca4));_0xd6204e(_0x4f6ca4);})[_0xd891('0x17')](function(_0x80eed){logger[_0xd891('0x18')](_0xd891('0x9'),_0x80eed[_0xd891('0x19')],_0x2cddfa);_0xfd5ce8(_0x26a4bb[_0xd891('0x18')](0x1f4,_0x80eed[_0xd891('0x19')]));});});};exports[_0xd891('0x1a')]=function(_0x2b0d27){var _0xdd3849=this;return new Promise(function(_0x67a849,_0x54afb5){return db[_0xd891('0xa')][_0xd891('0x1b')]({'raw':_0x2b0d27['options']?_0x2b0d27[_0xd891('0xc')][_0xd891('0xd')]===undefined?!![]:![]:!![],'where':_0x2b0d27[_0xd891('0xc')]?_0x2b0d27[_0xd891('0xc')][_0xd891('0xe')]||null:null,'attributes':_0x2b0d27[_0xd891('0xc')]?_0x2b0d27[_0xd891('0xc')]['attributes']||null:null,'include':_0x2b0d27[_0xd891('0xc')]?_0x2b0d27['options']['include']?_['map'](_0x2b0d27['options'][_0xd891('0x10')],function(_0x2c510f){return{'model':db[_0x2c510f[_0xd891('0x12')]],'as':_0x2c510f['as'],'attributes':_0x2c510f[_0xd891('0x13')],'include':_0x2c510f[_0xd891('0x10')]?_[_0xd891('0x11')](_0x2c510f[_0xd891('0x10')],function(_0x2eda87){return{'model':db[_0x2eda87[_0xd891('0x12')]],'as':_0x2eda87['as'],'attributes':_0x2eda87[_0xd891('0x13')],'include':_0x2eda87[_0xd891('0x10')]?_[_0xd891('0x11')](_0x2eda87[_0xd891('0x10')],function(_0x26180a){return{'model':db[_0x26180a[_0xd891('0x12')]],'as':_0x26180a['as'],'attributes':_0x26180a[_0xd891('0x13')]};}):[]};}):[]};}):[]:[]})[_0xd891('0x14')](function(_0x2408ef){logger[_0xd891('0x15')](_0xd891('0x1a'),_0x2b0d27);logger['debug'](_0xd891('0x1a'),_0x2b0d27,JSON[_0xd891('0x16')](_0x2408ef));_0x67a849(_0x2408ef);})['catch'](function(_0x68b139){logger[_0xd891('0x18')](_0xd891('0x1a'),_0x68b139['message'],_0x2b0d27);_0x54afb5(_0xdd3849[_0xd891('0x18')](0x1f4,_0x68b139[_0xd891('0x19')]));});});};exports[_0xd891('0x1c')]=function(_0x5f09c1){var _0x152364=this;return new Promise(function(_0x257e58,_0x3bb735){var _0x41ba28;return db['User'][_0xd891('0x1b')]({'where':_0x5f09c1[_0xd891('0xc')][_0xd891('0xe')]||{},'attributes':['id',_0xd891('0x1d'),'role',_0xd891('0x1e'),_0xd891('0x1f')]})['then'](function(_0x5b94a5){if(_0x5b94a5){_0x41ba28=_0x5b94a5;return db[_0xd891('0x20')][_0xd891('0x21')]({'paused':0x1},{'where':{'UserId':_0x41ba28['id']},'individualHooks':!![]});}})[_0xd891('0x14')](function(){if(_0x41ba28){return db[_0xd891('0x22')][_0xd891('0xb')]({'where':{'membername':_0x41ba28[_0xd891('0x1d')],'type':'PAUSE','exitAt':null}});}})[_0xd891('0x14')](function(_0x55c3b9){if(_0x41ba28){if(_0x55c3b9&&_0x55c3b9[_0xd891('0x23')]){var _0x4ec2fb=moment()[_0xd891('0x24')](_0xd891('0x25'));for(var _0x4a3c17=0x0,_0x27ec1a=_0x55c3b9[_0xd891('0x23')];_0x4a3c17<_0x27ec1a;_0x4a3c17++){_0x55c3b9[_0x4a3c17][_0xd891('0x26')]({'exitAt':_0x4ec2fb});}}}})['then'](function(){if(_0x41ba28){var _0xb4b1a7=[];var _0x97e21c=utils['getChannels']();_0x97e21c[_0xd891('0x27')](function(_0x1b6e97){_0xb4b1a7[_0xd891('0x28')]({'channel':_0x1b6e97,'membername':_0x41ba28[_0xd891('0x1d')],'interface':_[_0xd891('0x29')](_0x41ba28[_0xd891('0x1f')])?util[_0xd891('0x24')](_0xd891('0x2a'),_0x41ba28[_0xd891('0x1d')]):_0x41ba28[_0xd891('0x1f')],'type':_0xd891('0x2b'),'enterAt':moment()[_0xd891('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x5f09c1[_0xd891('0x2c')][_0xd891('0x2d')]||'DEFAULT\x20PAUSE','role':_0x41ba28['role'],'internal':_0x41ba28[_0xd891('0x1e')],'uniqueid':_0x5f09c1['body'][_0xd891('0x2e')]||null});});return db['MemberReport'][_0xd891('0x2f')](_0xb4b1a7,{'individualHooks':!![]});}})[_0xd891('0x14')](function(){if(_0x41ba28){return _0x41ba28[_0xd891('0x21')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x5f09c1[_0xd891('0x2c')][_0xd891('0x2d')]||_0xd891('0x30'),'lastPauseAt':moment()['format'](_0xd891('0x25'))});}})[_0xd891('0x14')](function(_0x1e72e4){_0x257e58(_0x1e72e4);})[_0xd891('0x17')](function(_0x1f97ba){_0x3bb735(_0x152364[_0xd891('0x18')](0x1f4,_0x1f97ba[_0xd891('0x19')]));});});};exports[_0xd891('0x31')]=function(_0x553df0){var _0x3bc962=this;return new Promise(function(_0x5a5987,_0x2b4c48){if(_0x553df0[_0xd891('0x2c')][_0xd891('0x32')]&&!utils['isValidChannel'](_0x553df0['body'][_0xd891('0x32')])){throw new Error(util[_0xd891('0x24')](_0xd891('0x33'),_0x553df0[_0xd891('0x2c')][_0xd891('0x32')]));}return db[_0xd891('0xa')][_0xd891('0x34')]({'where':_0x553df0[_0xd891('0xc')][_0xd891('0xe')]||{},'attributes':['id',_0xd891('0x1d'),_0xd891('0x35'),_0xd891('0x1e'),'interface','online','voicePause',_0xd891('0x36'),'chatPause',_0xd891('0x37'),_0xd891('0x38'),'smsPause','whatsappPause','pauseType',_0xd891('0x39')]})['then'](function(_0x352265){if(!_0x352265){throw new Error(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x553df0[_0xd891('0x3a')]['id']));}return _0x352265['unpause'](_0x553df0[_0xd891('0x2c')]['channel'],_0xd891('0x3b'));})['then'](function(_0x3c12e6){_0x5a5987(_0x3c12e6);})[_0xd891('0x17')](function(_0x4b07fe){_0x2b4c48(_0x3bc962['error'](0x1f4,_0x4b07fe[_0xd891('0x19')]));});});};exports[_0xd891('0x3c')]=function(_0x1d2815){var _0x2b2ae2=this;return new Promise(function(_0x3ac8bd,_0x5a13f7){var _0x4002bd;return db[_0xd891('0xa')][_0xd891('0x34')]({'where':_0x1d2815['options'][_0xd891('0xe')]||{},'attributes':['id',_0xd891('0x1d')]})[_0xd891('0x14')](function(_0x5396d8){if(_0x5396d8){_0x4002bd=_0x5396d8;return db['UserVoiceQueueRt'][_0xd891('0x3d')]({'where':{'membername':_0x4002bd[_0xd891('0x1d')]},'individualHooks':!![]});}})['then'](function(){if(_0x4002bd){return db[_0xd891('0x22')]['findAll']({'where':{'membername':_0x4002bd[_0xd891('0x1d')],'exitAt':null}});}})[_0xd891('0x14')](function(_0x19da7d){if(_0x4002bd){if(_0x19da7d&&_0x19da7d['length']){var _0x3f805e=[];_0x19da7d[_0xd891('0x27')](function(_0x1a5e12){_0x3f805e[_0xd891('0x28')](_0x1a5e12[_0xd891('0x21')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xd891('0x3e')](_0x3f805e);}}})[_0xd891('0x14')](function(){if(_0x4002bd){return _0x4002bd[_0xd891('0x21')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xd891('0x14')](function(_0x5cd102){_0x3ac8bd(_0x5cd102);})[_0xd891('0x17')](function(_0x491988){_0x5a13f7(_0x2b2ae2[_0xd891('0x18')](0x1f4,_0x491988[_0xd891('0x19')]));});});};exports['LoginUser']=function(_0x354469){var _0x156973=this;return new Promise(function(_0x5d5e7b,_0x1e370b){var _0x21d308;var _0x1d6bf8;var _0x47b1f9;var _0x59b2f6;return db[_0xd891('0xa')][_0xd891('0x34')]({'where':_0x354469[_0xd891('0xc')][_0xd891('0xe')]||{},'attributes':['id','name',_0xd891('0x35'),_0xd891('0x3f'),_0xd891('0x40'),_0xd891('0x1e'),_0xd891('0x41'),_0xd891('0x1f')]})[_0xd891('0x14')](function(_0x573a62){if(_0x573a62){_0x21d308=_0x573a62;_0x59b2f6=_0x354469[_0xd891('0x2c')][_0xd891('0x1f')]?_0x354469[_0xd891('0x2c')]['interface']:util['format'](_0xd891('0x2a'),_0x21d308[_0xd891('0x1d')]);return db['User'][_0xd891('0x42')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x21d308['id']}}});}})[_0xd891('0x14')](function(_0x3e9659){if(_0x3e9659){_0x47b1f9=_0x3e9659;return require(_0xd891('0x43'))['getLicense']();}})[_0xd891('0x14')](function(_0x3f8148){if(_0x3f8148&&_0x3f8148['agents']&&_0x47b1f9>=_0x3f8148[_0xd891('0x44')]){throw new Error(_0xd891('0x45'));}})[_0xd891('0x14')](function(){if(_0x21d308){return db[_0xd891('0x20')][_0xd891('0x3d')]({'where':{'membername':_0x21d308[_0xd891('0x1d')]},'individualHooks':!![]});}})[_0xd891('0x14')](function(){if(_0x21d308){return _0x21d308[_0xd891('0x46')]({'raw':!![]});}})['then'](function(_0x587fd0){if(_0x21d308){if(_0x587fd0){var _0x235d80=[];_0x1d6bf8=_0x587fd0;if(_0x1d6bf8['length']){for(var _0x422bac=0x0;_0x422bac<_0x1d6bf8['length'];_0x422bac++){_0x235d80[_0xd891('0x28')](db[_0xd891('0x20')][_0xd891('0x47')]({'membername':_0x21d308[_0xd891('0x1d')],'UserId':_0x21d308['id'],'queue_name':_0x1d6bf8[_0x422bac]['name'],'VoiceQueueId':_0x1d6bf8[_0x422bac]['id'],'interface':_0x59b2f6,'paused':_0x21d308['loginInPause']||![],'penalty':_0x1d6bf8[_0x422bac][_0xd891('0x48')]||0x0}));}return BPromise[_0xd891('0x3e')](_0x235d80);}}}})[_0xd891('0x14')](function(){if(_0x21d308){return db[_0xd891('0x22')][_0xd891('0xb')]({'where':{'membername':_0x21d308['name'],'exitAt':null}});}})['then'](function(_0x294585){if(_0x21d308){if(_0x294585&&_0x294585[_0xd891('0x23')]){var _0x43096a=[];_0x294585[_0xd891('0x27')](function(_0x2bd417){_0x43096a[_0xd891('0x28')](_0x2bd417[_0xd891('0x21')]({'exitAt':moment()[_0xd891('0x24')](_0xd891('0x25'))}));});return BPromise[_0xd891('0x3e')](_0x43096a);}}})[_0xd891('0x14')](function(){if(_0x21d308){var _0x33168a=[];var _0x44c129=[];var _0xdac9dd=utils[_0xd891('0x49')]();var _0x2aa7d9={'membername':_0x21d308[_0xd891('0x1d')],'interface':_0x59b2f6,'enterAt':moment()[_0xd891('0x24')](_0xd891('0x25')),'role':_0x21d308[_0xd891('0x35')],'internal':_0x21d308['internal']};_0xdac9dd[_0xd891('0x27')](function(_0x23e41d){_0x33168a[_0xd891('0x28')](_['merge']({'channel':_0x23e41d,'type':_0xd891('0x4a'),'data1':'callysquare','data2':_0x59b2f6},_0x2aa7d9));if(_0x21d308[_0xd891('0x41')]){_0x44c129[_0xd891('0x28')](_[_0xd891('0x4b')]({'channel':_0x23e41d,'type':_0xd891('0x2b'),'data1':_0xd891('0x4c')},_0x2aa7d9));}});return db[_0xd891('0x22')][_0xd891('0x2f')](_0x33168a[_0xd891('0x4d')](_0x44c129),{'individualHooks':!![]});}})[_0xd891('0x14')](function(){if(_0x21d308){return _0x21d308[_0xd891('0x21')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x21d308[_0xd891('0x41')]||![],'mailPause':_0x21d308[_0xd891('0x41')]||![],'chatPause':_0x21d308['loginInPause']||![],'faxPause':_0x21d308[_0xd891('0x41')]||![],'smsPause':_0x21d308['loginInPause']||![],'openchannelPause':_0x21d308[_0xd891('0x41')]||![],'pauseType':_0x21d308[_0xd891('0x41')]?_0xd891('0x4c'):null,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x59b2f6});}})['then'](function(_0x1fa8ef){_0x5d5e7b(_0x1fa8ef);})[_0xd891('0x17')](function(_0x316c7f){_0x1e370b(_0x156973['error'](0x1f4,_0x316c7f[_0xd891('0x19')]));});});};