1feab29181ee56770a051391010722369a3b97e6
[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 _0x92d4=['message','catch','GetUser','User','options','include','map','model','attributes','ShowUser','find','raw','where','name','role','internal','UserVoiceQueueRt','update','MemberReport','length','format','updateAttributes','push','isNil','interface','PAUSE','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','system','fax','sms','whatsapp','set','%s%s','Pause','forEach','all','LogoutUser','destroy','findAll','LoginUser','mobile','SIP/%s','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','loginInPause','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./user.socket','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x92d4,0x95));var _0x492d=function(_0x28d1aa,_0x5b69c8){_0x28d1aa=_0x28d1aa-0x0;var _0x515909=_0x92d4[_0x28d1aa];return _0x515909;};'use strict';var _=require(_0x492d('0x0'));var util=require(_0x492d('0x1'));var moment=require(_0x492d('0x2'));var BPromise=require(_0x492d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x492d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x492d('0x5'));var logger=require(_0x492d('0x6'))(_0x492d('0x7'));var config=require('../../config/environment');var jayson=require(_0x492d('0x8'));var client=jayson[_0x492d('0x9')]['http']({'port':0x232a});config[_0x492d('0xa')]=_[_0x492d('0xb')](config[_0x492d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x492d('0xc'))(new Redis(config[_0x492d('0xa')]));require(_0x492d('0xd'))['register'](socket);function respondWithRpcPromise(_0x2c1416,_0x5a6dae,_0x5a954c){return new BPromise(function(_0x52467c,_0xe4ef07){return client[_0x492d('0xe')](_0x2c1416,_0x5a954c)[_0x492d('0xf')](function(_0x49312e){logger[_0x492d('0x10')](_0x492d('0x11'),_0x5a6dae,_0x492d('0x12'));logger[_0x492d('0x13')]('User,\x20%s,\x20%s,\x20%s',_0x5a6dae,'request\x20sent',JSON[_0x492d('0x14')](_0x49312e));if(_0x49312e[_0x492d('0x15')]){if(_0x49312e[_0x492d('0x15')][_0x492d('0x16')]===0x1f4){logger[_0x492d('0x15')](_0x492d('0x11'),_0x5a6dae,_0x49312e[_0x492d('0x15')][_0x492d('0x17')]);return _0xe4ef07(_0x49312e[_0x492d('0x15')][_0x492d('0x17')]);}logger['error'](_0x492d('0x11'),_0x5a6dae,_0x49312e[_0x492d('0x15')][_0x492d('0x17')]);return _0x52467c(_0x49312e[_0x492d('0x15')][_0x492d('0x17')]);}else{logger[_0x492d('0x10')]('User,\x20%s,\x20%s',_0x5a6dae,_0x492d('0x12'));_0x52467c(_0x49312e['result']['message']);}})[_0x492d('0x18')](function(_0x178b4c){logger[_0x492d('0x15')](_0x492d('0x11'),_0x5a6dae,_0x178b4c);_0xe4ef07(_0x178b4c);});});}exports[_0x492d('0x19')]=function(_0x216ecd){var _0x252bad=this;return new Promise(function(_0x4077e6,_0x12384c){return db[_0x492d('0x1a')]['findAll']({'raw':_0x216ecd[_0x492d('0x1b')]?_0x216ecd[_0x492d('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x216ecd[_0x492d('0x1b')]?_0x216ecd['options']['where']||null:null,'attributes':_0x216ecd['options']?_0x216ecd[_0x492d('0x1b')]['attributes']||null:null,'limit':_0x216ecd[_0x492d('0x1b')]?_0x216ecd['options']['limit']||null:null,'include':_0x216ecd[_0x492d('0x1b')]?_0x216ecd['options'][_0x492d('0x1c')]?_[_0x492d('0x1d')](_0x216ecd['options'][_0x492d('0x1c')],function(_0x25dbae){return{'model':db[_0x25dbae[_0x492d('0x1e')]],'as':_0x25dbae['as'],'attributes':_0x25dbae[_0x492d('0x1f')],'include':_0x25dbae[_0x492d('0x1c')]?_[_0x492d('0x1d')](_0x25dbae[_0x492d('0x1c')],function(_0xe702d){return{'model':db[_0xe702d['model']],'as':_0xe702d['as'],'attributes':_0xe702d['attributes'],'include':_0xe702d[_0x492d('0x1c')]?_[_0x492d('0x1d')](_0xe702d[_0x492d('0x1c')],function(_0x50d6fa){return{'model':db[_0x50d6fa[_0x492d('0x1e')]],'as':_0x50d6fa['as'],'attributes':_0x50d6fa['attributes']};}):[]};}):[]};}):[]:[]})[_0x492d('0xf')](function(_0x4e6f41){logger[_0x492d('0x10')](_0x492d('0x19'),_0x216ecd);logger[_0x492d('0x13')]('GetUser',_0x216ecd,JSON[_0x492d('0x14')](_0x4e6f41));_0x4077e6(_0x4e6f41);})[_0x492d('0x18')](function(_0x3fb517){logger['error'](_0x492d('0x19'),_0x3fb517[_0x492d('0x17')],_0x216ecd);_0x12384c(_0x252bad[_0x492d('0x15')](0x1f4,_0x3fb517[_0x492d('0x17')]));});});};exports[_0x492d('0x20')]=function(_0x5afcff){var _0x372e30=this;return new Promise(function(_0x2b6c8f,_0x14f720){return db[_0x492d('0x1a')][_0x492d('0x21')]({'raw':_0x5afcff[_0x492d('0x1b')]?_0x5afcff['options'][_0x492d('0x22')]===undefined?!![]:![]:!![],'where':_0x5afcff[_0x492d('0x1b')]?_0x5afcff[_0x492d('0x1b')][_0x492d('0x23')]||null:null,'attributes':_0x5afcff[_0x492d('0x1b')]?_0x5afcff['options'][_0x492d('0x1f')]||null:null,'include':_0x5afcff[_0x492d('0x1b')]?_0x5afcff[_0x492d('0x1b')]['include']?_[_0x492d('0x1d')](_0x5afcff['options'][_0x492d('0x1c')],function(_0x66d8f1){return{'model':db[_0x66d8f1[_0x492d('0x1e')]],'as':_0x66d8f1['as'],'attributes':_0x66d8f1[_0x492d('0x1f')],'include':_0x66d8f1[_0x492d('0x1c')]?_['map'](_0x66d8f1[_0x492d('0x1c')],function(_0x5a9d2d){return{'model':db[_0x5a9d2d[_0x492d('0x1e')]],'as':_0x5a9d2d['as'],'attributes':_0x5a9d2d[_0x492d('0x1f')],'include':_0x5a9d2d['include']?_[_0x492d('0x1d')](_0x5a9d2d[_0x492d('0x1c')],function(_0x4a22f0){return{'model':db[_0x4a22f0[_0x492d('0x1e')]],'as':_0x4a22f0['as'],'attributes':_0x4a22f0[_0x492d('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x441d3b){logger[_0x492d('0x10')](_0x492d('0x20'),_0x5afcff);logger['debug'](_0x492d('0x20'),_0x5afcff,JSON[_0x492d('0x14')](_0x441d3b));_0x2b6c8f(_0x441d3b);})['catch'](function(_0x43494a){logger[_0x492d('0x15')](_0x492d('0x20'),_0x43494a['message'],_0x5afcff);_0x14f720(_0x372e30[_0x492d('0x15')](0x1f4,_0x43494a[_0x492d('0x17')]));});});};exports['PauseUser']=function(_0x28dc8b){var _0x5f2ccd=this;return new Promise(function(_0x403860,_0x50874e){var _0x4627c5;return db[_0x492d('0x1a')][_0x492d('0x21')]({'where':_0x28dc8b[_0x492d('0x1b')][_0x492d('0x23')]||{},'attributes':['id',_0x492d('0x24'),_0x492d('0x25'),_0x492d('0x26'),'interface']})[_0x492d('0xf')](function(_0x4fa25d){if(_0x4fa25d){_0x4627c5=_0x4fa25d;return db[_0x492d('0x27')][_0x492d('0x28')]({'paused':0x1},{'where':{'UserId':_0x4627c5['id']},'individualHooks':!![]});}})[_0x492d('0xf')](function(){if(_0x4627c5){return db[_0x492d('0x29')]['findAll']({'where':{'membername':_0x4627c5[_0x492d('0x24')],'type':'PAUSE','exitAt':null}});}})[_0x492d('0xf')](function(_0x5e0dd8){if(_0x4627c5){if(_0x5e0dd8&&_0x5e0dd8[_0x492d('0x2a')]){var _0x2e94de=moment()[_0x492d('0x2b')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0xbd6e08=0x0,_0x513b16=_0x5e0dd8[_0x492d('0x2a')];_0xbd6e08<_0x513b16;_0xbd6e08++){_0x5e0dd8[_0xbd6e08][_0x492d('0x2c')]({'exitAt':_0x2e94de});}}}})['then'](function(){if(_0x4627c5){var _0x462e88=[];var _0x27aa46=utils['getChannels']();_0x27aa46['forEach'](function(_0x16046c){_0x462e88[_0x492d('0x2d')]({'channel':_0x16046c,'membername':_0x4627c5[_0x492d('0x24')],'interface':_[_0x492d('0x2e')](_0x4627c5[_0x492d('0x2f')])?util[_0x492d('0x2b')]('SIP/%s',_0x4627c5[_0x492d('0x24')]):_0x4627c5[_0x492d('0x2f')],'type':_0x492d('0x30'),'enterAt':moment()[_0x492d('0x2b')](_0x492d('0x31')),'data1':_0x28dc8b[_0x492d('0x32')][_0x492d('0x33')]||_0x492d('0x34'),'role':_0x4627c5[_0x492d('0x25')],'internal':_0x4627c5[_0x492d('0x26')],'uniqueid':_0x28dc8b[_0x492d('0x32')]['uniqueid']||null});});return db[_0x492d('0x29')]['bulkCreate'](_0x462e88,{'individualHooks':!![]});}})[_0x492d('0xf')](function(){if(_0x4627c5){return _0x4627c5[_0x492d('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x28dc8b['body'][_0x492d('0x33')]||_0x492d('0x34'),'lastPauseAt':moment()[_0x492d('0x2b')](_0x492d('0x31'))});}})[_0x492d('0xf')](function(_0x4438d2){_0x403860(_0x4438d2);})[_0x492d('0x18')](function(_0x559f18){_0x50874e(_0x5f2ccd[_0x492d('0x15')](0x1f4,_0x559f18[_0x492d('0x17')]));});});};exports[_0x492d('0x35')]=function(_0x49415c){var _0x2a207d=this;return new Promise(function(_0x3eba24,_0xb5d6f2){var _0x58b6b5;return db[_0x492d('0x1a')][_0x492d('0x36')]({'where':_0x49415c[_0x492d('0x1b')]['where']||{},'attributes':['id','name']})[_0x492d('0xf')](function(_0x218b0f){if(_0x218b0f){_0x58b6b5=_0x218b0f;if(_0x49415c[_0x492d('0x32')][_0x492d('0x37')]&&!utils[_0x492d('0x38')](_0x49415c[_0x492d('0x32')][_0x492d('0x37')])){throw new Error(_0x492d('0x39'));}switch(_0x49415c['body']['channel']){case'voice':return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x58b6b5['id']}})[_0x492d('0xf')](function(){return db['MemberReport'][_0x492d('0x21')]({'where':{'channel':_0x49415c[_0x492d('0x32')][_0x492d('0x37')],'membername':_0x58b6b5[_0x492d('0x24')],'type':_0x492d('0x30'),'exitAt':null}});})[_0x492d('0xf')](function(_0x1a0c3b){if(_0x1a0c3b){return _0x1a0c3b[_0x492d('0x28')]({'exitAt':moment()[_0x492d('0x2b')](_0x492d('0x31')),'data2':_0x492d('0x3a')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x58b6b5[_0x492d('0x28')]({'voicePause':![]});});case'mail':case'chat':case _0x492d('0x3b'):case _0x492d('0x3c'):case'openchannel':case _0x492d('0x3d'):return db[_0x492d('0x29')][_0x492d('0x21')]({'where':{'channel':_0x49415c['body'][_0x492d('0x37')],'membername':_0x58b6b5[_0x492d('0x24')],'type':_0x492d('0x30'),'exitAt':null}})['then'](function(_0x4f0b38){return _0x4f0b38[_0x492d('0x28')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x492d('0x3a')},{'individualHooks':!![]});})['then'](function(){var _0x50563a={};_[_0x492d('0x3e')](_0x50563a,util[_0x492d('0x2b')](_0x492d('0x3f'),_0x49415c[_0x492d('0x32')]['channel'],_0x492d('0x40')),![]);return _0x58b6b5[_0x492d('0x28')](_0x50563a);});default:return db['UserVoiceQueueRt'][_0x492d('0x28')]({'paused':0x0},{'where':{'UserId':_0x58b6b5['id']}})[_0x492d('0xf')](function(){return db[_0x492d('0x29')]['findAll']({'where':{'membername':_0x58b6b5['name'],'type':_0x492d('0x30'),'exitAt':null}});})[_0x492d('0xf')](function(_0xa8eed2){var _0x228727=[];_0xa8eed2[_0x492d('0x41')](function(_0x396ad5){_0x228727[_0x492d('0x2d')](_0x396ad5['update']({'exitAt':moment()[_0x492d('0x2b')](_0x492d('0x31')),'data2':'system'}));});return BPromise[_0x492d('0x42')](_0x228727);})[_0x492d('0xf')](function(){return _0x58b6b5[_0x492d('0x28')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x492d('0xf')](function(_0x478b89){_0x3eba24(_0x478b89);})[_0x492d('0x18')](function(_0x2834b6){_0xb5d6f2(_0x2a207d['error'](0x1f4,_0x2834b6['message']));});});};exports[_0x492d('0x43')]=function(_0x57ffa0){var _0x7e8a57=this;return new Promise(function(_0xdecb02,_0xeb2f34){var _0x20caab;return db[_0x492d('0x1a')][_0x492d('0x36')]({'where':_0x57ffa0[_0x492d('0x1b')]['where']||{},'attributes':['id',_0x492d('0x24')]})[_0x492d('0xf')](function(_0x38e403){if(_0x38e403){_0x20caab=_0x38e403;return db['UserVoiceQueueRt'][_0x492d('0x44')]({'where':{'membername':_0x20caab['name']},'individualHooks':!![]});}})[_0x492d('0xf')](function(){if(_0x20caab){return db['MemberReport'][_0x492d('0x45')]({'where':{'membername':_0x20caab[_0x492d('0x24')],'exitAt':null}});}})[_0x492d('0xf')](function(_0x3f0d4c){if(_0x20caab){if(_0x3f0d4c&&_0x3f0d4c['length']){var _0x5c31fe=[];_0x3f0d4c[_0x492d('0x41')](function(_0x2bbe2a){_0x5c31fe[_0x492d('0x2d')](_0x2bbe2a[_0x492d('0x28')]({'exitAt':moment()[_0x492d('0x2b')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x492d('0x42')](_0x5c31fe);}}})['then'](function(){if(_0x20caab){return _0x20caab[_0x492d('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x492d('0xf')](function(_0x2ef1b0){_0xdecb02(_0x2ef1b0);})[_0x492d('0x18')](function(_0x4bfa38){_0xeb2f34(_0x7e8a57['error'](0x1f4,_0x4bfa38[_0x492d('0x17')]));});});};exports[_0x492d('0x46')]=function(_0x40fb1c){var _0x56b698=this;return new Promise(function(_0x4335fc,_0xd52cbe){var _0x30f190;var _0x39b89b;var _0x56fa73;var _0x3c9eb3;return db['User'][_0x492d('0x36')]({'where':_0x40fb1c[_0x492d('0x1b')]['where']||{},'attributes':['id',_0x492d('0x24'),_0x492d('0x25'),_0x492d('0x47'),'phone','internal','loginInPause',_0x492d('0x2f')]})[_0x492d('0xf')](function(_0x44db51){if(_0x44db51){_0x30f190=_0x44db51;_0x3c9eb3=_0x40fb1c['body']['interface']?_0x40fb1c['body'][_0x492d('0x2f')]:util[_0x492d('0x2b')](_0x492d('0x48'),_0x30f190['name']);return db['User'][_0x492d('0x49')]({'where':{'role':_0x492d('0x4a'),'online':!![],'id':{'$ne':_0x30f190['id']}}});}})[_0x492d('0xf')](function(_0x3600b5){if(_0x3600b5){_0x56fa73=_0x3600b5;return require(_0x492d('0x4b'))['getLicense']();}})[_0x492d('0xf')](function(_0x284a97){if(_0x284a97&&_0x284a97['agents']&&_0x56fa73>=_0x284a97[_0x492d('0x4c')]){throw new Error(_0x492d('0x4d'));}})[_0x492d('0xf')](function(){if(_0x30f190){return db[_0x492d('0x27')][_0x492d('0x44')]({'where':{'membername':_0x30f190[_0x492d('0x24')]},'individualHooks':!![]});}})[_0x492d('0xf')](function(){if(_0x30f190){return _0x30f190['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x66a8cc){if(_0x30f190){if(_0x66a8cc){var _0x45851b=[];_0x39b89b=_0x66a8cc;if(_0x39b89b[_0x492d('0x2a')]){for(var _0x7dec2c=0x0;_0x7dec2c<_0x39b89b[_0x492d('0x2a')];_0x7dec2c++){_0x45851b[_0x492d('0x2d')](db[_0x492d('0x27')][_0x492d('0x4e')]({'membername':_0x30f190[_0x492d('0x24')],'UserId':_0x30f190['id'],'queue_name':_0x39b89b[_0x7dec2c][_0x492d('0x24')],'VoiceQueueId':_0x39b89b[_0x7dec2c]['id'],'interface':_0x3c9eb3,'paused':_0x30f190[_0x492d('0x4f')]||![],'penalty':_0x39b89b[_0x7dec2c][_0x492d('0x50')]||0x0}));}return BPromise[_0x492d('0x42')](_0x45851b);}}}})[_0x492d('0xf')](function(){if(_0x30f190){return db[_0x492d('0x29')]['findAll']({'where':{'membername':_0x30f190['name'],'exitAt':null}});}})[_0x492d('0xf')](function(_0x3247ba){if(_0x30f190){if(_0x3247ba&&_0x3247ba[_0x492d('0x2a')]){var _0x41f0df=[];_0x3247ba['forEach'](function(_0x54e794){_0x41f0df['push'](_0x54e794[_0x492d('0x28')]({'exitAt':moment()[_0x492d('0x2b')](_0x492d('0x31'))}));});return BPromise['all'](_0x41f0df);}}})['then'](function(_0x329092){if(_0x30f190){var _0x22896b=[];var _0x115558=[];var _0x28121c=utils['getChannels']();var _0x1797ed={'membername':_0x30f190['name'],'interface':_0x3c9eb3,'enterAt':moment()[_0x492d('0x2b')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x30f190[_0x492d('0x25')],'internal':_0x30f190[_0x492d('0x26')]};_0x28121c[_0x492d('0x41')](function(_0x38fcbc){_0x22896b[_0x492d('0x2d')](_[_0x492d('0x51')]({'channel':_0x38fcbc,'type':_0x492d('0x52'),'data1':_0x492d('0x53'),'data2':_0x3c9eb3},_0x1797ed));if(_0x30f190[_0x492d('0x4f')]){_0x115558[_0x492d('0x2d')](_['merge']({'channel':_0x38fcbc,'type':_0x492d('0x30'),'data1':_0x492d('0x54')},_0x1797ed));}});return db['MemberReport']['bulkCreate'](_0x22896b[_0x492d('0x55')](_0x115558),{'individualHooks':!![]});}})[_0x492d('0xf')](function(){if(_0x30f190){return _0x30f190[_0x492d('0x28')]({'online':!![],'lastLoginAt':moment()['format'](_0x492d('0x31')),'voicePause':_0x30f190[_0x492d('0x4f')]||![],'mailPause':_0x30f190['loginInPause']||![],'chatPause':_0x30f190[_0x492d('0x4f')]||![],'faxPause':_0x30f190[_0x492d('0x4f')]||![],'smsPause':_0x30f190['loginInPause']||![],'openchannelPause':_0x30f190[_0x492d('0x4f')]||![],'pauseType':_0x30f190['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x492d('0x2b')](_0x492d('0x31')),'interface':_0x3c9eb3});}})[_0x492d('0xf')](function(_0x3d5f26){_0x4335fc(_0x3d5f26);})[_0x492d('0x18')](function(_0x12c2f1){_0xd52cbe(_0x56b698['error'](0x1f4,_0x12c2f1[_0x492d('0x17')]));});});};