a8d5619cfd5dbc55a1d1b7841e6d0877930769a8
[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 _0xed4c=['../../config/utils','../../config/logger','rpc','jayson/promise','redis','localhost','socket.io-emitter','./user.socket','register','then','User,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','findAll','options','raw','where','attributes','limit','include','map','model','GetUser','ShowUser','User','find','PauseUser','name','role','internal','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','updateAttributes','getChannels','forEach','push','isNil','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','body','uniqueid','type','UnpauseUser','findOne','isValidChannel','channel','Unknown\x20channel','voice','system','mail','chat','fax','whatsapp','%s%s','Pause','all','LogoutUser','destroy','LoginUser','phone','count','agent','../../config/license/util','getLicense','agents','loginInPause','UserVoiceQueue.penalty','LOGIN','callysquare','merge','LOGININPAUSE','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x2da552,_0x19af97){var _0x238ef9=function(_0x2b034c){while(--_0x2b034c){_0x2da552['push'](_0x2da552['shift']());}};_0x238ef9(++_0x19af97);}(_0xed4c,0x157));var _0xced4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xed4c[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xced4('0x0'));var util=require('util');var moment=require(_0xced4('0x1'));var BPromise=require('bluebird');var rs=require(_0xced4('0x2'));var fs=require('fs');var Redis=require(_0xced4('0x3'));var db=require(_0xced4('0x4'))['db'];var utils=require(_0xced4('0x5'));var logger=require(_0xced4('0x6'))(_0xced4('0x7'));var config=require('../../config/environment');var jayson=require(_0xced4('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xced4('0x9')]=_['defaults'](config[_0xced4('0x9')],{'host':_0xced4('0xa'),'port':0x18eb});var socket=require(_0xced4('0xb'))(new Redis(config[_0xced4('0x9')]));require(_0xced4('0xc'))[_0xced4('0xd')](socket);function respondWithRpcPromise(_0x2b47b6,_0x1442d4,_0x19a7d5){return new BPromise(function(_0x575da2,_0x50ce49){return client['request'](_0x2b47b6,_0x19a7d5)[_0xced4('0xe')](function(_0x478482){logger['info'](_0xced4('0xf'),_0x1442d4,_0xced4('0x10'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x1442d4,'request\x20sent',JSON[_0xced4('0x11')](_0x478482));if(_0x478482[_0xced4('0x12')]){if(_0x478482['error'][_0xced4('0x13')]===0x1f4){logger['error'](_0xced4('0xf'),_0x1442d4,_0x478482[_0xced4('0x12')]['message']);return _0x50ce49(_0x478482[_0xced4('0x12')][_0xced4('0x14')]);}logger[_0xced4('0x12')](_0xced4('0xf'),_0x1442d4,_0x478482[_0xced4('0x12')][_0xced4('0x14')]);return _0x575da2(_0x478482[_0xced4('0x12')][_0xced4('0x14')]);}else{logger[_0xced4('0x15')](_0xced4('0xf'),_0x1442d4,'request\x20sent');_0x575da2(_0x478482[_0xced4('0x16')][_0xced4('0x14')]);}})[_0xced4('0x17')](function(_0x1ad00f){logger['error']('User,\x20%s,\x20%s',_0x1442d4,_0x1ad00f);_0x50ce49(_0x1ad00f);});});}exports['GetUser']=function(_0x2d877c){var _0xeb02fd=this;return new Promise(function(_0xe6ab43,_0x4c01d5){return db['User'][_0xced4('0x18')]({'raw':_0x2d877c[_0xced4('0x19')]?_0x2d877c[_0xced4('0x19')][_0xced4('0x1a')]===undefined?!![]:![]:!![],'where':_0x2d877c[_0xced4('0x19')]?_0x2d877c[_0xced4('0x19')][_0xced4('0x1b')]||null:null,'attributes':_0x2d877c[_0xced4('0x19')]?_0x2d877c[_0xced4('0x19')][_0xced4('0x1c')]||null:null,'limit':_0x2d877c[_0xced4('0x19')]?_0x2d877c['options'][_0xced4('0x1d')]||null:null,'include':_0x2d877c[_0xced4('0x19')]?_0x2d877c[_0xced4('0x19')][_0xced4('0x1e')]?_[_0xced4('0x1f')](_0x2d877c[_0xced4('0x19')]['include'],function(_0x2407fb){return{'model':db[_0x2407fb['model']],'as':_0x2407fb['as'],'attributes':_0x2407fb['attributes'],'include':_0x2407fb[_0xced4('0x1e')]?_[_0xced4('0x1f')](_0x2407fb['include'],function(_0x46a79f){return{'model':db[_0x46a79f['model']],'as':_0x46a79f['as'],'attributes':_0x46a79f[_0xced4('0x1c')],'include':_0x46a79f['include']?_[_0xced4('0x1f')](_0x46a79f[_0xced4('0x1e')],function(_0x58690d){return{'model':db[_0x58690d[_0xced4('0x20')]],'as':_0x58690d['as'],'attributes':_0x58690d[_0xced4('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xced4('0xe')](function(_0x9118b4){logger['info']('GetUser',_0x2d877c);logger['debug'](_0xced4('0x21'),_0x2d877c,JSON['stringify'](_0x9118b4));_0xe6ab43(_0x9118b4);})[_0xced4('0x17')](function(_0x95ef95){logger[_0xced4('0x12')](_0xced4('0x21'),_0x95ef95[_0xced4('0x14')],_0x2d877c);_0x4c01d5(_0xeb02fd[_0xced4('0x12')](0x1f4,_0x95ef95['message']));});});};exports[_0xced4('0x22')]=function(_0x322979){var _0x57f6b3=this;return new Promise(function(_0x22ed19,_0x1b0154){return db[_0xced4('0x23')][_0xced4('0x24')]({'raw':_0x322979[_0xced4('0x19')]?_0x322979['options'][_0xced4('0x1a')]===undefined?!![]:![]:!![],'where':_0x322979[_0xced4('0x19')]?_0x322979['options'][_0xced4('0x1b')]||null:null,'attributes':_0x322979['options']?_0x322979['options'][_0xced4('0x1c')]||null:null,'include':_0x322979[_0xced4('0x19')]?_0x322979[_0xced4('0x19')]['include']?_[_0xced4('0x1f')](_0x322979[_0xced4('0x19')]['include'],function(_0x307cd0){return{'model':db[_0x307cd0[_0xced4('0x20')]],'as':_0x307cd0['as'],'attributes':_0x307cd0[_0xced4('0x1c')],'include':_0x307cd0[_0xced4('0x1e')]?_['map'](_0x307cd0[_0xced4('0x1e')],function(_0x78897e){return{'model':db[_0x78897e[_0xced4('0x20')]],'as':_0x78897e['as'],'attributes':_0x78897e[_0xced4('0x1c')],'include':_0x78897e[_0xced4('0x1e')]?_['map'](_0x78897e[_0xced4('0x1e')],function(_0x3ed672){return{'model':db[_0x3ed672[_0xced4('0x20')]],'as':_0x3ed672['as'],'attributes':_0x3ed672[_0xced4('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1934d0){logger[_0xced4('0x15')]('ShowUser',_0x322979);logger['debug'](_0xced4('0x22'),_0x322979,JSON[_0xced4('0x11')](_0x1934d0));_0x22ed19(_0x1934d0);})[_0xced4('0x17')](function(_0x3decb0){logger[_0xced4('0x12')](_0xced4('0x22'),_0x3decb0[_0xced4('0x14')],_0x322979);_0x1b0154(_0x57f6b3[_0xced4('0x12')](0x1f4,_0x3decb0[_0xced4('0x14')]));});});};exports[_0xced4('0x25')]=function(_0x325272){var _0xfeab1f=this;return new Promise(function(_0x2b1c98,_0x3e62bd){var _0xf925ca;return db[_0xced4('0x23')][_0xced4('0x24')]({'where':_0x325272[_0xced4('0x19')]['where']||{},'attributes':['id',_0xced4('0x26'),_0xced4('0x27'),_0xced4('0x28'),'interface']})['then'](function(_0x16e3d2){if(_0x16e3d2){_0xf925ca=_0x16e3d2;return db[_0xced4('0x29')][_0xced4('0x2a')]({'paused':0x1},{'where':{'UserId':_0xf925ca['id']},'individualHooks':!![]});}})[_0xced4('0xe')](function(){if(_0xf925ca){return db[_0xced4('0x2b')][_0xced4('0x18')]({'where':{'membername':_0xf925ca['name'],'type':_0xced4('0x2c'),'exitAt':null}});}})['then'](function(_0x3030cf){if(_0xf925ca){if(_0x3030cf&&_0x3030cf[_0xced4('0x2d')]){var _0x37b711=moment()[_0xced4('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x189c30=0x0,_0x2f3845=_0x3030cf[_0xced4('0x2d')];_0x189c30<_0x2f3845;_0x189c30++){_0x3030cf[_0x189c30][_0xced4('0x2f')]({'exitAt':_0x37b711});}}}})[_0xced4('0xe')](function(){if(_0xf925ca){var _0x48003b=[];var _0x4626e9=utils[_0xced4('0x30')]();_0x4626e9[_0xced4('0x31')](function(_0x7c40c4){_0x48003b[_0xced4('0x32')]({'channel':_0x7c40c4,'membername':_0xf925ca[_0xced4('0x26')],'interface':_[_0xced4('0x33')](_0xf925ca[_0xced4('0x34')])?util[_0xced4('0x2e')](_0xced4('0x35'),_0xf925ca[_0xced4('0x26')]):_0xf925ca[_0xced4('0x34')],'type':_0xced4('0x2c'),'enterAt':moment()[_0xced4('0x2e')](_0xced4('0x36')),'data1':_0x325272['body']['type']||'DEFAULT\x20PAUSE','role':_0xf925ca[_0xced4('0x27')],'internal':_0xf925ca['internal'],'uniqueid':_0x325272[_0xced4('0x37')][_0xced4('0x38')]||null});});return db['MemberReport']['bulkCreate'](_0x48003b,{'individualHooks':!![]});}})[_0xced4('0xe')](function(){if(_0xf925ca){return _0xf925ca['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x325272[_0xced4('0x37')][_0xced4('0x39')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xced4('0x2e')](_0xced4('0x36'))});}})[_0xced4('0xe')](function(_0x1a87be){_0x2b1c98(_0x1a87be);})[_0xced4('0x17')](function(_0x3b2348){_0x3e62bd(_0xfeab1f[_0xced4('0x12')](0x1f4,_0x3b2348[_0xced4('0x14')]));});});};exports[_0xced4('0x3a')]=function(_0x328f20){var _0x31da22=this;return new Promise(function(_0x370730,_0xd62748){var _0x5e993f;return db[_0xced4('0x23')][_0xced4('0x3b')]({'where':_0x328f20[_0xced4('0x19')][_0xced4('0x1b')]||{},'attributes':['id',_0xced4('0x26')]})[_0xced4('0xe')](function(_0x155b40){if(_0x155b40){_0x5e993f=_0x155b40;if(_0x328f20[_0xced4('0x37')]['channel']&&!utils[_0xced4('0x3c')](_0x328f20[_0xced4('0x37')][_0xced4('0x3d')])){throw new Error(_0xced4('0x3e'));}switch(_0x328f20['body'][_0xced4('0x3d')]){case _0xced4('0x3f'):return db['UserVoiceQueueRt'][_0xced4('0x2a')]({'paused':0x0},{'where':{'UserId':_0x5e993f['id']}})[_0xced4('0xe')](function(){return db[_0xced4('0x2b')][_0xced4('0x24')]({'where':{'channel':_0x328f20[_0xced4('0x37')][_0xced4('0x3d')],'membername':_0x5e993f[_0xced4('0x26')],'type':_0xced4('0x2c'),'exitAt':null}});})[_0xced4('0xe')](function(_0x525391){if(_0x525391){return _0x525391[_0xced4('0x2a')]({'exitAt':moment()[_0xced4('0x2e')](_0xced4('0x36')),'data2':_0xced4('0x40')},{'individualHooks':!![]});}return null;})[_0xced4('0xe')](function(){return _0x5e993f[_0xced4('0x2a')]({'voicePause':![]});});case _0xced4('0x41'):case _0xced4('0x42'):case _0xced4('0x43'):case'sms':case'openchannel':case _0xced4('0x44'):return db[_0xced4('0x2b')][_0xced4('0x24')]({'where':{'channel':_0x328f20[_0xced4('0x37')][_0xced4('0x3d')],'membername':_0x5e993f['name'],'type':_0xced4('0x2c'),'exitAt':null}})['then'](function(_0x5b7d98){return _0x5b7d98[_0xced4('0x2a')]({'exitAt':moment()[_0xced4('0x2e')](_0xced4('0x36')),'data2':_0xced4('0x40')},{'individualHooks':!![]});})[_0xced4('0xe')](function(){var _0x124fa6={};_['set'](_0x124fa6,util[_0xced4('0x2e')](_0xced4('0x45'),_0x328f20[_0xced4('0x37')][_0xced4('0x3d')],_0xced4('0x46')),![]);return _0x5e993f[_0xced4('0x2a')](_0x124fa6);});default:return db[_0xced4('0x29')][_0xced4('0x2a')]({'paused':0x0},{'where':{'UserId':_0x5e993f['id']}})[_0xced4('0xe')](function(){return db[_0xced4('0x2b')][_0xced4('0x18')]({'where':{'membername':_0x5e993f[_0xced4('0x26')],'type':_0xced4('0x2c'),'exitAt':null}});})['then'](function(_0x14c6f2){var _0x58029a=[];_0x14c6f2[_0xced4('0x31')](function(_0x70ef5d){_0x58029a[_0xced4('0x32')](_0x70ef5d['update']({'exitAt':moment()[_0xced4('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xced4('0x40')}));});return BPromise[_0xced4('0x47')](_0x58029a);})[_0xced4('0xe')](function(){return _0x5e993f['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xced4('0xe')](function(_0xb7df14){_0x370730(_0xb7df14);})[_0xced4('0x17')](function(_0xa4d542){_0xd62748(_0x31da22['error'](0x1f4,_0xa4d542[_0xced4('0x14')]));});});};exports[_0xced4('0x48')]=function(_0x266c3e){var _0x4c6332=this;return new Promise(function(_0x252a39,_0x1122b1){var _0xc9b412;return db[_0xced4('0x23')][_0xced4('0x3b')]({'where':_0x266c3e[_0xced4('0x19')][_0xced4('0x1b')]||{},'attributes':['id',_0xced4('0x26')]})[_0xced4('0xe')](function(_0x3261a8){if(_0x3261a8){_0xc9b412=_0x3261a8;return db[_0xced4('0x29')][_0xced4('0x49')]({'where':{'membername':_0xc9b412[_0xced4('0x26')]},'individualHooks':!![]});}})['then'](function(){if(_0xc9b412){return db['MemberReport'][_0xced4('0x18')]({'where':{'membername':_0xc9b412[_0xced4('0x26')],'exitAt':null}});}})[_0xced4('0xe')](function(_0x1ba29d){if(_0xc9b412){if(_0x1ba29d&&_0x1ba29d[_0xced4('0x2d')]){var _0x3f0a49=[];_0x1ba29d[_0xced4('0x31')](function(_0x5a3be7){_0x3f0a49[_0xced4('0x32')](_0x5a3be7[_0xced4('0x2a')]({'exitAt':moment()[_0xced4('0x2e')](_0xced4('0x36'))}));});return BPromise[_0xced4('0x47')](_0x3f0a49);}}})['then'](function(){if(_0xc9b412){return _0xc9b412['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xced4('0xe')](function(_0x1552b6){_0x252a39(_0x1552b6);})['catch'](function(_0x4c7dd8){_0x1122b1(_0x4c6332[_0xced4('0x12')](0x1f4,_0x4c7dd8['message']));});});};exports[_0xced4('0x4a')]=function(_0x53fa43){var _0x3a688e=this;return new Promise(function(_0x2cf8c3,_0x3d1006){var _0x44f993;var _0x5869dd;var _0x2e1028;var _0x313109;return db[_0xced4('0x23')][_0xced4('0x3b')]({'where':_0x53fa43[_0xced4('0x19')][_0xced4('0x1b')]||{},'attributes':['id',_0xced4('0x26'),_0xced4('0x27'),'mobile',_0xced4('0x4b'),_0xced4('0x28'),'loginInPause','interface']})['then'](function(_0xf6db1c){if(_0xf6db1c){_0x44f993=_0xf6db1c;_0x313109=_0x53fa43[_0xced4('0x37')][_0xced4('0x34')]?_0x53fa43[_0xced4('0x37')]['interface']:util['format'](_0xced4('0x35'),_0x44f993[_0xced4('0x26')]);return db[_0xced4('0x23')][_0xced4('0x4c')]({'where':{'role':_0xced4('0x4d'),'online':!![],'id':{'$ne':_0x44f993['id']}}});}})[_0xced4('0xe')](function(_0x1e99c1){if(_0x1e99c1){_0x2e1028=_0x1e99c1;return require(_0xced4('0x4e'))[_0xced4('0x4f')]();}})[_0xced4('0xe')](function(_0x3516a1){if(_0x3516a1&&_0x3516a1[_0xced4('0x50')]&&_0x2e1028>=_0x3516a1[_0xced4('0x50')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0xced4('0xe')](function(){if(_0x44f993){return db[_0xced4('0x29')][_0xced4('0x49')]({'where':{'membername':_0x44f993['name']},'individualHooks':!![]});}})[_0xced4('0xe')](function(){if(_0x44f993){return _0x44f993['getVoiceQueues']({'raw':!![]});}})[_0xced4('0xe')](function(_0x5a8e87){if(_0x44f993){if(_0x5a8e87){var _0x6d5452=[];_0x5869dd=_0x5a8e87;if(_0x5869dd['length']){for(var _0x7e4f4c=0x0;_0x7e4f4c<_0x5869dd[_0xced4('0x2d')];_0x7e4f4c++){_0x6d5452[_0xced4('0x32')](db[_0xced4('0x29')]['upsert']({'membername':_0x44f993[_0xced4('0x26')],'UserId':_0x44f993['id'],'queue_name':_0x5869dd[_0x7e4f4c][_0xced4('0x26')],'VoiceQueueId':_0x5869dd[_0x7e4f4c]['id'],'interface':_0x313109,'paused':_0x44f993[_0xced4('0x51')]||![],'penalty':_0x5869dd[_0x7e4f4c][_0xced4('0x52')]||0x0}));}return BPromise[_0xced4('0x47')](_0x6d5452);}}}})[_0xced4('0xe')](function(){if(_0x44f993){return db[_0xced4('0x2b')][_0xced4('0x18')]({'where':{'membername':_0x44f993['name'],'exitAt':null}});}})['then'](function(_0x5bd518){if(_0x44f993){if(_0x5bd518&&_0x5bd518[_0xced4('0x2d')]){var _0x4f3309=[];_0x5bd518[_0xced4('0x31')](function(_0x19919b){_0x4f3309[_0xced4('0x32')](_0x19919b[_0xced4('0x2a')]({'exitAt':moment()['format'](_0xced4('0x36'))}));});return BPromise['all'](_0x4f3309);}}})[_0xced4('0xe')](function(_0x10667d){if(_0x44f993){var _0x40b37d=[];var _0x51e512=[];var _0x24a771=utils['getChannels']();var _0x5d0b2c={'membername':_0x44f993[_0xced4('0x26')],'interface':_0x313109,'enterAt':moment()['format'](_0xced4('0x36')),'role':_0x44f993['role'],'internal':_0x44f993['internal']};_0x24a771['forEach'](function(_0x143579){_0x40b37d['push'](_['merge']({'channel':_0x143579,'type':_0xced4('0x53'),'data1':_0xced4('0x54'),'data2':_0x313109},_0x5d0b2c));if(_0x44f993['loginInPause']){_0x51e512[_0xced4('0x32')](_[_0xced4('0x55')]({'channel':_0x143579,'type':_0xced4('0x2c'),'data1':_0xced4('0x56')},_0x5d0b2c));}});return db['MemberReport']['bulkCreate'](_0x40b37d['concat'](_0x51e512),{'individualHooks':!![]});}})[_0xced4('0xe')](function(){if(_0x44f993){return _0x44f993[_0xced4('0x2a')]({'online':!![],'lastLoginAt':moment()[_0xced4('0x2e')](_0xced4('0x36')),'voicePause':_0x44f993[_0xced4('0x51')]||![],'mailPause':_0x44f993[_0xced4('0x51')]||![],'chatPause':_0x44f993[_0xced4('0x51')]||![],'faxPause':_0x44f993[_0xced4('0x51')]||![],'smsPause':_0x44f993['loginInPause']||![],'openchannelPause':_0x44f993[_0xced4('0x51')]||![],'pauseType':_0x44f993[_0xced4('0x51')]?_0xced4('0x56'):null,'lastPauseAt':moment()['format'](_0xced4('0x36')),'interface':_0x313109});}})[_0xced4('0xe')](function(_0x3e9795){_0x2cf8c3(_0x3e9795);})['catch'](function(_0x55460b){_0x3d1006(_0x3a688e[_0xced4('0x12')](0x1f4,_0x55460b[_0xced4('0x14')]));});});};