c8ea67a7add7f6bfc976c950898ed28efa7826a3
[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 _0x4617=['lastPauseAt','unpause','LogoutUser','MemberReport','all','LoginUser','mobile','phone','loginInPause','count','../../config/license/util','getLicense','agents','upsert','UserVoiceQueue.penalty','LOGIN','LOGININPAUSE','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','defaults','redis','localhost','socket.io-emitter','./user.socket','GetUser','findAll','options','raw','where','attributes','limit','include','map','model','then','catch','error','message','ShowUser','User','find','info','debug','stringify','PauseUser','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','body','type','uniqueid','UnpauseUser','channel','isValidChannel','findOne','online','voicePause','mailPause','chatPause','openchannelPause','smsPause','pauseType'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x4617,0x67));var _0x7461=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x4617[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x7461('0x0'));var util=require(_0x7461('0x1'));var moment=require(_0x7461('0x2'));var BPromise=require(_0x7461('0x3'));var Redis=require(_0x7461('0x4'));var db=require(_0x7461('0x5'))['db'];var utils=require(_0x7461('0x6'));var logger=require(_0x7461('0x7'))(_0x7461('0x8'));var config=require('../../config/environment');config['redis']=_[_0x7461('0x9')](config[_0x7461('0xa')],{'host':_0x7461('0xb'),'port':0x18eb});var socket=require(_0x7461('0xc'))(new Redis(config[_0x7461('0xa')]));require(_0x7461('0xd'))['register'](socket);exports[_0x7461('0xe')]=function(_0x6d221e){var _0x2d926b=this;return new Promise(function(_0x4c3c04,_0x2460a6){return db['User'][_0x7461('0xf')]({'raw':_0x6d221e[_0x7461('0x10')]?_0x6d221e[_0x7461('0x10')][_0x7461('0x11')]===undefined?!![]:![]:!![],'where':_0x6d221e[_0x7461('0x10')]?_0x6d221e['options'][_0x7461('0x12')]||null:null,'attributes':_0x6d221e[_0x7461('0x10')]?_0x6d221e[_0x7461('0x10')][_0x7461('0x13')]||null:null,'limit':_0x6d221e[_0x7461('0x10')]?_0x6d221e[_0x7461('0x10')][_0x7461('0x14')]||null:null,'include':_0x6d221e[_0x7461('0x10')]?_0x6d221e[_0x7461('0x10')][_0x7461('0x15')]?_[_0x7461('0x16')](_0x6d221e[_0x7461('0x10')][_0x7461('0x15')],function(_0x51f19e){return{'model':db[_0x51f19e[_0x7461('0x17')]],'as':_0x51f19e['as'],'attributes':_0x51f19e[_0x7461('0x13')],'include':_0x51f19e[_0x7461('0x15')]?_[_0x7461('0x16')](_0x51f19e[_0x7461('0x15')],function(_0x25a28f){return{'model':db[_0x25a28f[_0x7461('0x17')]],'as':_0x25a28f['as'],'attributes':_0x25a28f[_0x7461('0x13')],'include':_0x25a28f[_0x7461('0x15')]?_[_0x7461('0x16')](_0x25a28f['include'],function(_0x2b318c){return{'model':db[_0x2b318c[_0x7461('0x17')]],'as':_0x2b318c['as'],'attributes':_0x2b318c['attributes']};}):[]};}):[]};}):[]:[]})[_0x7461('0x18')](function(_0x3735ef){logger['info'](_0x7461('0xe'),_0x6d221e);logger['debug'](_0x7461('0xe'),_0x6d221e,JSON['stringify'](_0x3735ef));_0x4c3c04(_0x3735ef);})[_0x7461('0x19')](function(_0x158f8c){logger[_0x7461('0x1a')]('GetUser',_0x158f8c[_0x7461('0x1b')],_0x6d221e);_0x2460a6(_0x2d926b[_0x7461('0x1a')](0x1f4,_0x158f8c[_0x7461('0x1b')]));});});};exports[_0x7461('0x1c')]=function(_0x3e1181){var _0xef14f8=this;return new Promise(function(_0x2a795e,_0x15a8f2){return db[_0x7461('0x1d')][_0x7461('0x1e')]({'raw':_0x3e1181[_0x7461('0x10')]?_0x3e1181[_0x7461('0x10')][_0x7461('0x11')]===undefined?!![]:![]:!![],'where':_0x3e1181['options']?_0x3e1181[_0x7461('0x10')]['where']||null:null,'attributes':_0x3e1181['options']?_0x3e1181[_0x7461('0x10')][_0x7461('0x13')]||null:null,'include':_0x3e1181[_0x7461('0x10')]?_0x3e1181['options'][_0x7461('0x15')]?_['map'](_0x3e1181['options'][_0x7461('0x15')],function(_0x322e00){return{'model':db[_0x322e00['model']],'as':_0x322e00['as'],'attributes':_0x322e00[_0x7461('0x13')],'include':_0x322e00[_0x7461('0x15')]?_['map'](_0x322e00[_0x7461('0x15')],function(_0x239db8){return{'model':db[_0x239db8[_0x7461('0x17')]],'as':_0x239db8['as'],'attributes':_0x239db8[_0x7461('0x13')],'include':_0x239db8[_0x7461('0x15')]?_[_0x7461('0x16')](_0x239db8[_0x7461('0x15')],function(_0x28e450){return{'model':db[_0x28e450[_0x7461('0x17')]],'as':_0x28e450['as'],'attributes':_0x28e450[_0x7461('0x13')]};}):[]};}):[]};}):[]:[]})[_0x7461('0x18')](function(_0x5561d7){logger[_0x7461('0x1f')]('ShowUser',_0x3e1181);logger[_0x7461('0x20')](_0x7461('0x1c'),_0x3e1181,JSON[_0x7461('0x21')](_0x5561d7));_0x2a795e(_0x5561d7);})[_0x7461('0x19')](function(_0x807a5e){logger[_0x7461('0x1a')]('ShowUser',_0x807a5e[_0x7461('0x1b')],_0x3e1181);_0x15a8f2(_0xef14f8[_0x7461('0x1a')](0x1f4,_0x807a5e[_0x7461('0x1b')]));});});};exports[_0x7461('0x22')]=function(_0x3412fb){var _0x3ccc2d;return db[_0x7461('0x1d')][_0x7461('0x1e')]({'where':_0x3412fb[_0x7461('0x10')]['where']||{},'attributes':['id',_0x7461('0x23'),_0x7461('0x24'),_0x7461('0x25'),_0x7461('0x26')]})[_0x7461('0x18')](function(_0x863eb2){if(!_0x863eb2){throw new Error(util[_0x7461('0x27')](_0x7461('0x28'),_0x3412fb[_0x7461('0x29')]['id']));}_0x3ccc2d=_0x863eb2;return db[_0x7461('0x2a')][_0x7461('0x2b')]({'paused':0x1},{'where':{'UserId':_0x3ccc2d['id']},'individualHooks':!![]});})[_0x7461('0x18')](function(){return db['MemberReport'][_0x7461('0xf')]({'where':{'membername':_0x3ccc2d['name'],'type':_0x7461('0x2c'),'exitAt':null}});})['then'](function(_0x355b57){if(_0x355b57&&_0x355b57[_0x7461('0x2d')]){var _0x38bf45=moment()[_0x7461('0x27')](_0x7461('0x2e'));for(var _0x1baf7d=0x0,_0x579eb8=_0x355b57[_0x7461('0x2d')];_0x1baf7d<_0x579eb8;_0x1baf7d++){_0x355b57[_0x1baf7d][_0x7461('0x2f')]({'exitAt':_0x38bf45});}}})[_0x7461('0x18')](function(){var _0x52fa33=[];var _0x16eb61=utils[_0x7461('0x30')]();_0x16eb61[_0x7461('0x31')](function(_0x234e0e){_0x52fa33[_0x7461('0x32')]({'channel':_0x234e0e,'membername':_0x3ccc2d[_0x7461('0x23')],'interface':_[_0x7461('0x33')](_0x3ccc2d[_0x7461('0x26')])?util[_0x7461('0x27')](_0x7461('0x34'),_0x3ccc2d[_0x7461('0x23')]):_0x3ccc2d['interface'],'type':'PAUSE','enterAt':moment()[_0x7461('0x27')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x3412fb[_0x7461('0x35')][_0x7461('0x36')]||'DEFAULT\x20PAUSE','role':_0x3ccc2d[_0x7461('0x24')],'internal':_0x3ccc2d[_0x7461('0x25')],'uniqueid':_0x3412fb[_0x7461('0x35')][_0x7461('0x37')]||null});});return db['MemberReport']['bulkCreate'](_0x52fa33,{'individualHooks':!![]});})[_0x7461('0x18')](function(){return _0x3ccc2d[_0x7461('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3412fb[_0x7461('0x35')][_0x7461('0x36')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x7461('0x27')](_0x7461('0x2e'))});})[_0x7461('0x19')](function(_0x4ff238){throw _0x4ff238;});};exports[_0x7461('0x38')]=function(_0x3a7b46){return Promise['resolve']()[_0x7461('0x18')](function(){if(_0x3a7b46['body'][_0x7461('0x39')]&&!utils[_0x7461('0x3a')](_0x3a7b46[_0x7461('0x35')][_0x7461('0x39')])){throw new Error(util[_0x7461('0x27')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x3a7b46[_0x7461('0x35')]['channel']));}return db[_0x7461('0x1d')][_0x7461('0x3b')]({'where':_0x3a7b46[_0x7461('0x10')]['where']||{},'attributes':['id',_0x7461('0x23'),_0x7461('0x24'),_0x7461('0x25'),_0x7461('0x26'),_0x7461('0x3c'),_0x7461('0x3d'),_0x7461('0x3e'),_0x7461('0x3f'),'faxPause',_0x7461('0x40'),_0x7461('0x41'),'whatsappPause',_0x7461('0x42'),_0x7461('0x43')]});})[_0x7461('0x18')](function(_0x3787a9){if(!_0x3787a9){throw new Error(util[_0x7461('0x27')](_0x7461('0x28'),_0x3a7b46[_0x7461('0x29')]['id']));}return _0x3787a9[_0x7461('0x44')](_0x3a7b46['body'][_0x7461('0x39')],'system');})[_0x7461('0x19')](function(_0xbdf1b8){throw _0xbdf1b8;});};exports[_0x7461('0x45')]=function(_0x275dee){var _0x4f8196=this;return new Promise(function(_0x5b4369,_0x38c77e){var _0x443cab;return db[_0x7461('0x1d')][_0x7461('0x3b')]({'where':_0x275dee[_0x7461('0x10')][_0x7461('0x12')]||{},'attributes':['id',_0x7461('0x23')]})[_0x7461('0x18')](function(_0x39d767){if(_0x39d767){_0x443cab=_0x39d767;return db[_0x7461('0x2a')]['destroy']({'where':{'membername':_0x443cab[_0x7461('0x23')]},'individualHooks':!![]});}})[_0x7461('0x18')](function(){if(_0x443cab){return db[_0x7461('0x46')][_0x7461('0xf')]({'where':{'membername':_0x443cab[_0x7461('0x23')],'exitAt':null}});}})[_0x7461('0x18')](function(_0xa0fd88){if(_0x443cab){if(_0xa0fd88&&_0xa0fd88[_0x7461('0x2d')]){var _0x208621=[];_0xa0fd88['forEach'](function(_0x19d56b){_0x208621[_0x7461('0x32')](_0x19d56b[_0x7461('0x2b')]({'exitAt':moment()[_0x7461('0x27')](_0x7461('0x2e'))}));});return BPromise[_0x7461('0x47')](_0x208621);}}})['then'](function(){if(_0x443cab){return _0x443cab[_0x7461('0x2b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x3c7bb6){_0x5b4369(_0x3c7bb6);})[_0x7461('0x19')](function(_0x3a6aa2){_0x38c77e(_0x4f8196[_0x7461('0x1a')](0x1f4,_0x3a6aa2['message']));});});};exports[_0x7461('0x48')]=function(_0x4dec7c){var _0xb29665=this;return new Promise(function(_0x2fa0dd,_0x4fe671){var _0x1e31dd;var _0x5cb3d8;var _0x1a8e9b;var _0x2f6291;return db[_0x7461('0x1d')]['findOne']({'where':_0x4dec7c[_0x7461('0x10')]['where']||{},'attributes':['id',_0x7461('0x23'),_0x7461('0x24'),_0x7461('0x49'),_0x7461('0x4a'),_0x7461('0x25'),_0x7461('0x4b'),_0x7461('0x26')]})[_0x7461('0x18')](function(_0x3c5c86){if(_0x3c5c86){_0x1e31dd=_0x3c5c86;_0x2f6291=_0x4dec7c[_0x7461('0x35')][_0x7461('0x26')]?_0x4dec7c[_0x7461('0x35')][_0x7461('0x26')]:util[_0x7461('0x27')](_0x7461('0x34'),_0x1e31dd[_0x7461('0x23')]);return db[_0x7461('0x1d')][_0x7461('0x4c')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1e31dd['id']}}});}})[_0x7461('0x18')](function(_0x3cd14e){if(_0x3cd14e){_0x1a8e9b=_0x3cd14e;return require(_0x7461('0x4d'))[_0x7461('0x4e')]();}})[_0x7461('0x18')](function(_0x4ff345){if(_0x4ff345&&_0x4ff345[_0x7461('0x4f')]&&_0x1a8e9b>=_0x4ff345[_0x7461('0x4f')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x7461('0x18')](function(){if(_0x1e31dd){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x1e31dd['name']},'individualHooks':!![]});}})[_0x7461('0x18')](function(){if(_0x1e31dd){return _0x1e31dd['getVoiceQueues']({'raw':!![]});}})[_0x7461('0x18')](function(_0x514855){if(_0x1e31dd){if(_0x514855){var _0x5708a4=[];_0x5cb3d8=_0x514855;if(_0x5cb3d8['length']){for(var _0x14cb75=0x0;_0x14cb75<_0x5cb3d8['length'];_0x14cb75++){_0x5708a4[_0x7461('0x32')](db[_0x7461('0x2a')][_0x7461('0x50')]({'membername':_0x1e31dd[_0x7461('0x23')],'UserId':_0x1e31dd['id'],'queue_name':_0x5cb3d8[_0x14cb75]['name'],'VoiceQueueId':_0x5cb3d8[_0x14cb75]['id'],'interface':_0x2f6291,'paused':_0x1e31dd[_0x7461('0x4b')]||![],'penalty':_0x5cb3d8[_0x14cb75][_0x7461('0x51')]||0x0}));}return BPromise[_0x7461('0x47')](_0x5708a4);}}}})[_0x7461('0x18')](function(){if(_0x1e31dd){return db[_0x7461('0x46')][_0x7461('0xf')]({'where':{'membername':_0x1e31dd[_0x7461('0x23')],'exitAt':null}});}})['then'](function(_0x512a66){if(_0x1e31dd){if(_0x512a66&&_0x512a66['length']){var _0x3652f0=[];_0x512a66[_0x7461('0x31')](function(_0x2ac989){_0x3652f0[_0x7461('0x32')](_0x2ac989[_0x7461('0x2b')]({'exitAt':moment()[_0x7461('0x27')](_0x7461('0x2e'))}));});return BPromise[_0x7461('0x47')](_0x3652f0);}}})[_0x7461('0x18')](function(){if(_0x1e31dd){var _0x1fd580=[];var _0x395b40=[];var _0x2edfe6=utils[_0x7461('0x30')]();var _0x15b6ef={'membername':_0x1e31dd[_0x7461('0x23')],'interface':_0x2f6291,'enterAt':moment()[_0x7461('0x27')](_0x7461('0x2e')),'role':_0x1e31dd[_0x7461('0x24')],'internal':_0x1e31dd[_0x7461('0x25')]};_0x2edfe6[_0x7461('0x31')](function(_0x403a9e){_0x1fd580['push'](_['merge']({'channel':_0x403a9e,'type':_0x7461('0x52'),'data1':'callysquare','data2':_0x2f6291},_0x15b6ef));if(_0x1e31dd[_0x7461('0x4b')]){_0x395b40[_0x7461('0x32')](_['merge']({'channel':_0x403a9e,'type':'PAUSE','data1':_0x7461('0x53')},_0x15b6ef));}});return db[_0x7461('0x46')]['bulkCreate'](_0x1fd580[_0x7461('0x54')](_0x395b40),{'individualHooks':!![]});}})[_0x7461('0x18')](function(){if(_0x1e31dd){return _0x1e31dd[_0x7461('0x2b')]({'online':!![],'lastLoginAt':moment()[_0x7461('0x27')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1e31dd[_0x7461('0x4b')]||![],'mailPause':_0x1e31dd[_0x7461('0x4b')]||![],'chatPause':_0x1e31dd[_0x7461('0x4b')]||![],'faxPause':_0x1e31dd[_0x7461('0x4b')]||![],'smsPause':_0x1e31dd[_0x7461('0x4b')]||![],'openchannelPause':_0x1e31dd[_0x7461('0x4b')]||![],'pauseType':_0x1e31dd[_0x7461('0x4b')]?_0x7461('0x53'):null,'lastPauseAt':moment()[_0x7461('0x27')](_0x7461('0x2e')),'interface':_0x2f6291});}})['then'](function(_0x19e271){_0x2fa0dd(_0x19e271);})['catch'](function(_0x42b910){_0x4fe671(_0xb29665[_0x7461('0x1a')](0x1f4,_0x42b910[_0x7461('0x1b')]));});});};