Built motion from commit b0a9a629.|2.6.33
[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 _0x89d2=['count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','LOGIN','callysquare','loginInPause','LOGININPAUSE','lodash','util','moment','../../config/utils','rpc','redis','localhost','socket.io-emitter','./user.socket','register','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','then','info','debug','stringify','message','error','ShowUser','find','catch','PauseUser','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','update','MemberReport','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','isNil','SIP/%s','body','uniqueid','bulkCreate','type','DEFAULT\x20PAUSE','resolve','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','voicePause','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','lastPauseAt','unpause','system','UserVoiceQueueRt','destroy','forEach','LoginUser','mobile'];(function(_0x43776a,_0x4eb74c){var _0x18eb8f=function(_0x319afb){while(--_0x319afb){_0x43776a['push'](_0x43776a['shift']());}};_0x18eb8f(++_0x4eb74c);}(_0x89d2,0x109));var _0x289d=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x89d2[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x289d('0x0'));var util=require(_0x289d('0x1'));var moment=require(_0x289d('0x2'));var BPromise=require('bluebird');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x289d('0x3'));var logger=require('../../config/logger')(_0x289d('0x4'));var config=require('../../config/environment');config[_0x289d('0x5')]=_['defaults'](config['redis'],{'host':_0x289d('0x6'),'port':0x18eb});var socket=require(_0x289d('0x7'))(new Redis(config[_0x289d('0x5')]));require(_0x289d('0x8'))[_0x289d('0x9')](socket);exports[_0x289d('0xa')]=function(_0x52cc31){var _0x3e4230=this;return new Promise(function(_0x4943af,_0x3ac33f){return db[_0x289d('0xb')][_0x289d('0xc')]({'raw':_0x52cc31[_0x289d('0xd')]?_0x52cc31[_0x289d('0xd')][_0x289d('0xe')]===undefined?!![]:![]:!![],'where':_0x52cc31['options']?_0x52cc31[_0x289d('0xd')][_0x289d('0xf')]||null:null,'attributes':_0x52cc31['options']?_0x52cc31['options'][_0x289d('0x10')]||null:null,'limit':_0x52cc31[_0x289d('0xd')]?_0x52cc31['options'][_0x289d('0x11')]||null:null,'include':_0x52cc31[_0x289d('0xd')]?_0x52cc31[_0x289d('0xd')][_0x289d('0x12')]?_[_0x289d('0x13')](_0x52cc31[_0x289d('0xd')][_0x289d('0x12')],function(_0x2c559f){return{'model':db[_0x2c559f[_0x289d('0x14')]],'as':_0x2c559f['as'],'attributes':_0x2c559f[_0x289d('0x10')],'include':_0x2c559f[_0x289d('0x12')]?_[_0x289d('0x13')](_0x2c559f[_0x289d('0x12')],function(_0x7d128f){return{'model':db[_0x7d128f['model']],'as':_0x7d128f['as'],'attributes':_0x7d128f[_0x289d('0x10')],'include':_0x7d128f[_0x289d('0x12')]?_[_0x289d('0x13')](_0x7d128f[_0x289d('0x12')],function(_0x3e6036){return{'model':db[_0x3e6036['model']],'as':_0x3e6036['as'],'attributes':_0x3e6036[_0x289d('0x10')]};}):[]};}):[]};}):[]:[]})[_0x289d('0x15')](function(_0xdbd098){logger[_0x289d('0x16')](_0x289d('0xa'),_0x52cc31);logger[_0x289d('0x17')]('GetUser',_0x52cc31,JSON[_0x289d('0x18')](_0xdbd098));_0x4943af(_0xdbd098);})['catch'](function(_0x245254){logger['error'](_0x289d('0xa'),_0x245254[_0x289d('0x19')],_0x52cc31);_0x3ac33f(_0x3e4230[_0x289d('0x1a')](0x1f4,_0x245254[_0x289d('0x19')]));});});};exports[_0x289d('0x1b')]=function(_0x1a3ba2){var _0x2e086f=this;return new Promise(function(_0x21e4ec,_0x5a4518){return db[_0x289d('0xb')][_0x289d('0x1c')]({'raw':_0x1a3ba2[_0x289d('0xd')]?_0x1a3ba2[_0x289d('0xd')][_0x289d('0xe')]===undefined?!![]:![]:!![],'where':_0x1a3ba2[_0x289d('0xd')]?_0x1a3ba2['options']['where']||null:null,'attributes':_0x1a3ba2['options']?_0x1a3ba2[_0x289d('0xd')][_0x289d('0x10')]||null:null,'include':_0x1a3ba2[_0x289d('0xd')]?_0x1a3ba2[_0x289d('0xd')]['include']?_[_0x289d('0x13')](_0x1a3ba2[_0x289d('0xd')][_0x289d('0x12')],function(_0x55d6d3){return{'model':db[_0x55d6d3[_0x289d('0x14')]],'as':_0x55d6d3['as'],'attributes':_0x55d6d3[_0x289d('0x10')],'include':_0x55d6d3['include']?_[_0x289d('0x13')](_0x55d6d3['include'],function(_0x48283){return{'model':db[_0x48283['model']],'as':_0x48283['as'],'attributes':_0x48283[_0x289d('0x10')],'include':_0x48283[_0x289d('0x12')]?_[_0x289d('0x13')](_0x48283[_0x289d('0x12')],function(_0x2d392e){return{'model':db[_0x2d392e[_0x289d('0x14')]],'as':_0x2d392e['as'],'attributes':_0x2d392e[_0x289d('0x10')]};}):[]};}):[]};}):[]:[]})[_0x289d('0x15')](function(_0x56e6ba){logger[_0x289d('0x16')](_0x289d('0x1b'),_0x1a3ba2);logger[_0x289d('0x17')](_0x289d('0x1b'),_0x1a3ba2,JSON[_0x289d('0x18')](_0x56e6ba));_0x21e4ec(_0x56e6ba);})[_0x289d('0x1d')](function(_0x528c36){logger[_0x289d('0x1a')]('ShowUser',_0x528c36[_0x289d('0x19')],_0x1a3ba2);_0x5a4518(_0x2e086f[_0x289d('0x1a')](0x1f4,_0x528c36[_0x289d('0x19')]));});});};exports[_0x289d('0x1e')]=function(_0x3190dd){var _0x44c651;return db[_0x289d('0xb')][_0x289d('0x1c')]({'where':_0x3190dd['options'][_0x289d('0xf')]||{},'attributes':['id',_0x289d('0x1f'),_0x289d('0x20'),_0x289d('0x21'),_0x289d('0x22')]})['then'](function(_0x40b7c9){if(!_0x40b7c9){throw new Error(util[_0x289d('0x23')](_0x289d('0x24'),_0x3190dd[_0x289d('0x25')]['id']));}_0x44c651=_0x40b7c9;return db['UserVoiceQueueRt'][_0x289d('0x26')]({'paused':0x1},{'where':{'UserId':_0x44c651['id']},'individualHooks':!![]});})[_0x289d('0x15')](function(){return db[_0x289d('0x27')][_0x289d('0xc')]({'where':{'membername':_0x44c651[_0x289d('0x1f')],'type':_0x289d('0x28'),'exitAt':null}});})[_0x289d('0x15')](function(_0x3859df){if(_0x3859df&&_0x3859df[_0x289d('0x29')]){var _0x22059a=moment()[_0x289d('0x23')](_0x289d('0x2a'));for(var _0x2046b0=0x0,_0x478699=_0x3859df[_0x289d('0x29')];_0x2046b0<_0x478699;_0x2046b0++){_0x3859df[_0x2046b0][_0x289d('0x2b')]({'exitAt':_0x22059a});}}})[_0x289d('0x15')](function(){var _0x48297e=[];var _0xfb898c=utils['getChannels']();_0xfb898c['forEach'](function(_0x2ecca0){_0x48297e[_0x289d('0x2c')]({'channel':_0x2ecca0,'membername':_0x44c651['name'],'interface':_[_0x289d('0x2d')](_0x44c651[_0x289d('0x22')])?util[_0x289d('0x23')](_0x289d('0x2e'),_0x44c651[_0x289d('0x1f')]):_0x44c651[_0x289d('0x22')],'type':_0x289d('0x28'),'enterAt':moment()[_0x289d('0x23')](_0x289d('0x2a')),'data1':_0x3190dd['body']['type']||'DEFAULT\x20PAUSE','role':_0x44c651[_0x289d('0x20')],'internal':_0x44c651[_0x289d('0x21')],'uniqueid':_0x3190dd[_0x289d('0x2f')][_0x289d('0x30')]||null});});return db[_0x289d('0x27')][_0x289d('0x31')](_0x48297e,{'individualHooks':!![]});})[_0x289d('0x15')](function(){return _0x44c651[_0x289d('0x26')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3190dd[_0x289d('0x2f')][_0x289d('0x32')]||_0x289d('0x33'),'lastPauseAt':moment()[_0x289d('0x23')](_0x289d('0x2a'))});})[_0x289d('0x1d')](function(_0x5e5212){throw _0x5e5212;});};exports['UnpauseUser']=function(_0x4baaf){return Promise[_0x289d('0x34')]()[_0x289d('0x15')](function(){if(_0x4baaf[_0x289d('0x2f')][_0x289d('0x35')]&&!utils['isValidChannel'](_0x4baaf['body']['channel'])){throw new Error(util[_0x289d('0x23')](_0x289d('0x36'),_0x4baaf['body'][_0x289d('0x35')]));}return db[_0x289d('0xb')][_0x289d('0x37')]({'where':_0x4baaf[_0x289d('0xd')][_0x289d('0xf')]||{},'attributes':['id',_0x289d('0x1f'),_0x289d('0x20'),_0x289d('0x21'),'interface',_0x289d('0x38'),_0x289d('0x39'),_0x289d('0x3a'),'chatPause',_0x289d('0x3b'),_0x289d('0x3c'),_0x289d('0x3d'),_0x289d('0x3e'),'pauseType',_0x289d('0x3f')]});})[_0x289d('0x15')](function(_0x3a6f5f){if(!_0x3a6f5f){throw new Error(util[_0x289d('0x23')](_0x289d('0x24'),_0x4baaf[_0x289d('0x25')]['id']));}return _0x3a6f5f[_0x289d('0x40')](_0x4baaf[_0x289d('0x2f')]['channel'],_0x289d('0x41'));})[_0x289d('0x1d')](function(_0x147823){throw _0x147823;});};exports['LogoutUser']=function(_0xaa3384){var _0x5e1bdf=this;return new Promise(function(_0x323140,_0x62da89){var _0x73b6aa;return db[_0x289d('0xb')][_0x289d('0x37')]({'where':_0xaa3384[_0x289d('0xd')][_0x289d('0xf')]||{},'attributes':['id','name']})[_0x289d('0x15')](function(_0x49c9a5){if(_0x49c9a5){_0x73b6aa=_0x49c9a5;return db[_0x289d('0x42')][_0x289d('0x43')]({'where':{'membername':_0x73b6aa[_0x289d('0x1f')]},'individualHooks':!![]});}})['then'](function(){if(_0x73b6aa){return db['MemberReport'][_0x289d('0xc')]({'where':{'membername':_0x73b6aa['name'],'exitAt':null}});}})[_0x289d('0x15')](function(_0x23e27d){if(_0x73b6aa){if(_0x23e27d&&_0x23e27d['length']){var _0x573532=[];_0x23e27d[_0x289d('0x44')](function(_0x1c8e57){_0x573532['push'](_0x1c8e57[_0x289d('0x26')]({'exitAt':moment()[_0x289d('0x23')](_0x289d('0x2a'))}));});return BPromise['all'](_0x573532);}}})['then'](function(){if(_0x73b6aa){return _0x73b6aa['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x289d('0x15')](function(_0x3c5b4f){_0x323140(_0x3c5b4f);})['catch'](function(_0x28a9d6){_0x62da89(_0x5e1bdf[_0x289d('0x1a')](0x1f4,_0x28a9d6[_0x289d('0x19')]));});});};exports[_0x289d('0x45')]=function(_0x1057da){var _0x114c8f=this;return new Promise(function(_0xf6704e,_0x5d2ed2){var _0x2981ac;var _0x5a6065;var _0x39869a;var _0x2879ce;return db['User'][_0x289d('0x37')]({'where':_0x1057da[_0x289d('0xd')][_0x289d('0xf')]||{},'attributes':['id',_0x289d('0x1f'),_0x289d('0x20'),_0x289d('0x46'),'phone',_0x289d('0x21'),'loginInPause','interface']})[_0x289d('0x15')](function(_0x4ec75b){if(_0x4ec75b){_0x2981ac=_0x4ec75b;_0x2879ce=_0x1057da[_0x289d('0x2f')][_0x289d('0x22')]?_0x1057da['body'][_0x289d('0x22')]:util[_0x289d('0x23')]('SIP/%s',_0x2981ac[_0x289d('0x1f')]);return db[_0x289d('0xb')][_0x289d('0x47')]({'where':{'role':_0x289d('0x48'),'online':!![],'id':{'$ne':_0x2981ac['id']}}});}})['then'](function(_0x398ff7){if(_0x398ff7){_0x39869a=_0x398ff7;return require(_0x289d('0x49'))['getLicense']();}})[_0x289d('0x15')](function(_0x34087a){if(_0x34087a&&_0x34087a['agents']&&_0x39869a>=_0x34087a[_0x289d('0x4a')]){throw new Error(_0x289d('0x4b'));}})[_0x289d('0x15')](function(){if(_0x2981ac){return db[_0x289d('0x42')][_0x289d('0x43')]({'where':{'membername':_0x2981ac[_0x289d('0x1f')]},'individualHooks':!![]});}})[_0x289d('0x15')](function(){if(_0x2981ac){return _0x2981ac[_0x289d('0x4c')]({'raw':!![]});}})['then'](function(_0x59d73e){if(_0x2981ac){if(_0x59d73e){var _0x2dd65e=[];_0x5a6065=_0x59d73e;if(_0x5a6065[_0x289d('0x29')]){for(var _0x4302a9=0x0;_0x4302a9<_0x5a6065[_0x289d('0x29')];_0x4302a9++){_0x2dd65e[_0x289d('0x2c')](db[_0x289d('0x42')][_0x289d('0x4d')]({'membername':_0x2981ac[_0x289d('0x1f')],'UserId':_0x2981ac['id'],'queue_name':_0x5a6065[_0x4302a9][_0x289d('0x1f')],'VoiceQueueId':_0x5a6065[_0x4302a9]['id'],'interface':_0x2879ce,'paused':_0x2981ac['loginInPause']||![],'penalty':_0x5a6065[_0x4302a9][_0x289d('0x4e')]||0x0}));}return BPromise[_0x289d('0x4f')](_0x2dd65e);}}}})[_0x289d('0x15')](function(){if(_0x2981ac){return db[_0x289d('0x27')][_0x289d('0xc')]({'where':{'membername':_0x2981ac[_0x289d('0x1f')],'exitAt':null}});}})[_0x289d('0x15')](function(_0x214fa0){if(_0x2981ac){if(_0x214fa0&&_0x214fa0[_0x289d('0x29')]){var _0x25b91e=[];_0x214fa0[_0x289d('0x44')](function(_0x55e562){_0x25b91e[_0x289d('0x2c')](_0x55e562['update']({'exitAt':moment()['format'](_0x289d('0x2a'))}));});return BPromise[_0x289d('0x4f')](_0x25b91e);}}})[_0x289d('0x15')](function(){if(_0x2981ac){var _0x7542c2=[];var _0x1d8086=[];var _0xe66e7=utils['getChannels']();var _0x135988={'membername':_0x2981ac[_0x289d('0x1f')],'interface':_0x2879ce,'enterAt':moment()[_0x289d('0x23')](_0x289d('0x2a')),'role':_0x2981ac[_0x289d('0x20')],'internal':_0x2981ac[_0x289d('0x21')]};_0xe66e7[_0x289d('0x44')](function(_0x55a0c6){_0x7542c2[_0x289d('0x2c')](_['merge']({'channel':_0x55a0c6,'type':_0x289d('0x50'),'data1':_0x289d('0x51'),'data2':_0x2879ce},_0x135988));if(_0x2981ac[_0x289d('0x52')]){_0x1d8086['push'](_['merge']({'channel':_0x55a0c6,'type':_0x289d('0x28'),'data1':_0x289d('0x53')},_0x135988));}});return db[_0x289d('0x27')][_0x289d('0x31')](_0x7542c2['concat'](_0x1d8086),{'individualHooks':!![]});}})[_0x289d('0x15')](function(){if(_0x2981ac){return _0x2981ac['update']({'online':!![],'lastLoginAt':moment()[_0x289d('0x23')](_0x289d('0x2a')),'voicePause':_0x2981ac['loginInPause']||![],'mailPause':_0x2981ac['loginInPause']||![],'chatPause':_0x2981ac['loginInPause']||![],'faxPause':_0x2981ac[_0x289d('0x52')]||![],'smsPause':_0x2981ac[_0x289d('0x52')]||![],'openchannelPause':_0x2981ac[_0x289d('0x52')]||![],'pauseType':_0x2981ac[_0x289d('0x52')]?_0x289d('0x53'):null,'lastPauseAt':moment()['format'](_0x289d('0x2a')),'interface':_0x2879ce});}})[_0x289d('0x15')](function(_0x4017bf){_0xf6704e(_0x4017bf);})[_0x289d('0x1d')](function(_0x25049b){_0x5d2ed2(_0x114c8f[_0x289d('0x1a')](0x1f4,_0x25049b[_0x289d('0x19')]));});});};