3a32e1bc60cd15dbaace72b149358c762bdd06d2
[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 _0x1696=['mobile','phone','loginInPause','SIP/%s','count','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','length','upsert','UserVoiceQueue.penalty','all','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./user.socket','register','then','info','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','User,\x20%s,\x20%s','message','GetUser','options','where','attributes','limit','include','model','map','debug','catch','ShowUser','User','raw','PauseUser','find','name','role','internal','interface','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE','updateAttributes','getChannels','forEach','push','isNil','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','format','system','chat','fax','sms','openchannel','set','%s%s','Pause','LogoutUser','destroy','LoginUser'];(function(_0x32ae3b,_0x58303f){var _0x509912=function(_0x2e3190){while(--_0x2e3190){_0x32ae3b['push'](_0x32ae3b['shift']());}};_0x509912(++_0x58303f);}(_0x1696,0x72));var _0x6169=function(_0x36ea29,_0x5847e6){_0x36ea29=_0x36ea29-0x0;var _0x49e2bf=_0x1696[_0x36ea29];return _0x49e2bf;};'use strict';var _=require(_0x6169('0x0'));var util=require(_0x6169('0x1'));var moment=require(_0x6169('0x2'));var BPromise=require(_0x6169('0x3'));var rs=require(_0x6169('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6169('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6169('0x6'))(_0x6169('0x7'));var config=require(_0x6169('0x8'));var jayson=require(_0x6169('0x9'));var client=jayson[_0x6169('0xa')][_0x6169('0xb')]({'port':0x232a});config['redis']=_[_0x6169('0xc')](config[_0x6169('0xd')],{'host':_0x6169('0xe'),'port':0x18eb});var socket=require(_0x6169('0xf'))(new Redis(config['redis']));require(_0x6169('0x10'))[_0x6169('0x11')](socket);function respondWithRpcPromise(_0x3b0bbd,_0x3a9d11,_0x34241a){return new BPromise(function(_0x32c93e,_0x42725b){return client['request'](_0x3b0bbd,_0x34241a)[_0x6169('0x12')](function(_0x43639f){logger[_0x6169('0x13')]('User,\x20%s,\x20%s',_0x3a9d11,_0x6169('0x14'));logger['debug'](_0x6169('0x15'),_0x3a9d11,_0x6169('0x14'),JSON[_0x6169('0x16')](_0x43639f));if(_0x43639f[_0x6169('0x17')]){if(_0x43639f['error']['code']===0x1f4){logger[_0x6169('0x17')](_0x6169('0x18'),_0x3a9d11,_0x43639f[_0x6169('0x17')][_0x6169('0x19')]);return _0x42725b(_0x43639f[_0x6169('0x17')][_0x6169('0x19')]);}logger[_0x6169('0x17')](_0x6169('0x18'),_0x3a9d11,_0x43639f[_0x6169('0x17')][_0x6169('0x19')]);return _0x32c93e(_0x43639f[_0x6169('0x17')][_0x6169('0x19')]);}else{logger['info']('User,\x20%s,\x20%s',_0x3a9d11,_0x6169('0x14'));_0x32c93e(_0x43639f['result']['message']);}})['catch'](function(_0x451301){logger[_0x6169('0x17')](_0x6169('0x18'),_0x3a9d11,_0x451301);_0x42725b(_0x451301);});});}exports[_0x6169('0x1a')]=function(_0x3c67a2){var _0x352eb0=this;return new Promise(function(_0x40832b,_0x53cfc3){return db['User']['findAll']({'raw':_0x3c67a2[_0x6169('0x1b')]?_0x3c67a2[_0x6169('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3c67a2[_0x6169('0x1b')]?_0x3c67a2['options'][_0x6169('0x1c')]||null:null,'attributes':_0x3c67a2[_0x6169('0x1b')]?_0x3c67a2[_0x6169('0x1b')][_0x6169('0x1d')]||null:null,'limit':_0x3c67a2[_0x6169('0x1b')]?_0x3c67a2['options'][_0x6169('0x1e')]||null:null,'include':_0x3c67a2['options']?_0x3c67a2['options'][_0x6169('0x1f')]?_['map'](_0x3c67a2[_0x6169('0x1b')][_0x6169('0x1f')],function(_0x1d7687){return{'model':db[_0x1d7687[_0x6169('0x20')]],'as':_0x1d7687['as'],'attributes':_0x1d7687['attributes'],'include':_0x1d7687['include']?_[_0x6169('0x21')](_0x1d7687[_0x6169('0x1f')],function(_0x4de0c9){return{'model':db[_0x4de0c9['model']],'as':_0x4de0c9['as'],'attributes':_0x4de0c9[_0x6169('0x1d')],'include':_0x4de0c9[_0x6169('0x1f')]?_[_0x6169('0x21')](_0x4de0c9[_0x6169('0x1f')],function(_0x282bad){return{'model':db[_0x282bad[_0x6169('0x20')]],'as':_0x282bad['as'],'attributes':_0x282bad[_0x6169('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6169('0x12')](function(_0x3c8d82){logger[_0x6169('0x13')](_0x6169('0x1a'),_0x3c67a2);logger[_0x6169('0x22')](_0x6169('0x1a'),_0x3c67a2,JSON[_0x6169('0x16')](_0x3c8d82));_0x40832b(_0x3c8d82);})[_0x6169('0x23')](function(_0x516ea3){logger[_0x6169('0x17')](_0x6169('0x1a'),_0x516ea3[_0x6169('0x19')],_0x3c67a2);_0x53cfc3(_0x352eb0[_0x6169('0x17')](0x1f4,_0x516ea3['message']));});});};exports[_0x6169('0x24')]=function(_0x24d7ab){var _0x37f433=this;return new Promise(function(_0x50df70,_0x523288){return db[_0x6169('0x25')]['find']({'raw':_0x24d7ab[_0x6169('0x1b')]?_0x24d7ab[_0x6169('0x1b')][_0x6169('0x26')]===undefined?!![]:![]:!![],'where':_0x24d7ab[_0x6169('0x1b')]?_0x24d7ab[_0x6169('0x1b')][_0x6169('0x1c')]||null:null,'attributes':_0x24d7ab[_0x6169('0x1b')]?_0x24d7ab[_0x6169('0x1b')][_0x6169('0x1d')]||null:null,'include':_0x24d7ab[_0x6169('0x1b')]?_0x24d7ab[_0x6169('0x1b')]['include']?_['map'](_0x24d7ab[_0x6169('0x1b')][_0x6169('0x1f')],function(_0x94bba1){return{'model':db[_0x94bba1['model']],'as':_0x94bba1['as'],'attributes':_0x94bba1[_0x6169('0x1d')],'include':_0x94bba1[_0x6169('0x1f')]?_[_0x6169('0x21')](_0x94bba1[_0x6169('0x1f')],function(_0x280b29){return{'model':db[_0x280b29['model']],'as':_0x280b29['as'],'attributes':_0x280b29[_0x6169('0x1d')],'include':_0x280b29['include']?_[_0x6169('0x21')](_0x280b29[_0x6169('0x1f')],function(_0x199d4a){return{'model':db[_0x199d4a[_0x6169('0x20')]],'as':_0x199d4a['as'],'attributes':_0x199d4a[_0x6169('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6169('0x12')](function(_0x1b98a6){logger[_0x6169('0x13')](_0x6169('0x24'),_0x24d7ab);logger['debug'](_0x6169('0x24'),_0x24d7ab,JSON[_0x6169('0x16')](_0x1b98a6));_0x50df70(_0x1b98a6);})[_0x6169('0x23')](function(_0x5af692){logger['error'](_0x6169('0x24'),_0x5af692['message'],_0x24d7ab);_0x523288(_0x37f433['error'](0x1f4,_0x5af692[_0x6169('0x19')]));});});};exports[_0x6169('0x27')]=function(_0xfd1e14){var _0x322320=this;return new Promise(function(_0x46793f,_0x45ca32){var _0x2c78a8;return db[_0x6169('0x25')][_0x6169('0x28')]({'where':_0xfd1e14['options'][_0x6169('0x1c')]||{},'attributes':['id',_0x6169('0x29'),_0x6169('0x2a'),_0x6169('0x2b'),_0x6169('0x2c')]})['then'](function(_0x530785){if(_0x530785){_0x2c78a8=_0x530785;return db[_0x6169('0x2d')][_0x6169('0x2e')]({'paused':0x1},{'where':{'UserId':_0x2c78a8['id']},'individualHooks':!![]});}})[_0x6169('0x12')](function(){if(_0x2c78a8){return db[_0x6169('0x2f')][_0x6169('0x30')]({'where':{'membername':_0x2c78a8[_0x6169('0x29')],'type':_0x6169('0x31'),'exitAt':null}});}})[_0x6169('0x12')](function(_0x2d0271){if(_0x2c78a8){if(_0x2d0271&&_0x2d0271['length']){var _0x333faa=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x10f4c5=0x0,_0x5139fc=_0x2d0271['length'];_0x10f4c5<_0x5139fc;_0x10f4c5++){_0x2d0271[_0x10f4c5][_0x6169('0x32')]({'exitAt':_0x333faa});}}}})[_0x6169('0x12')](function(){if(_0x2c78a8){var _0x410eba=[];var _0x307d85=utils[_0x6169('0x33')]();_0x307d85[_0x6169('0x34')](function(_0x1faf5c){_0x410eba[_0x6169('0x35')]({'channel':_0x1faf5c,'membername':_0x2c78a8[_0x6169('0x29')],'interface':_[_0x6169('0x36')](_0x2c78a8[_0x6169('0x2c')])?util['format']('SIP/%s',_0x2c78a8[_0x6169('0x29')]):_0x2c78a8[_0x6169('0x2c')],'type':_0x6169('0x31'),'enterAt':moment()['format'](_0x6169('0x37')),'data1':_0xfd1e14[_0x6169('0x38')][_0x6169('0x39')]||_0x6169('0x3a'),'role':_0x2c78a8[_0x6169('0x2a')],'internal':_0x2c78a8[_0x6169('0x2b')],'uniqueid':_0xfd1e14[_0x6169('0x38')][_0x6169('0x3b')]||null});});return db[_0x6169('0x2f')]['bulkCreate'](_0x410eba,{'individualHooks':!![]});}})[_0x6169('0x12')](function(){if(_0x2c78a8){return _0x2c78a8[_0x6169('0x2e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'pauseType':_0xfd1e14['body'][_0x6169('0x39')]||_0x6169('0x3a'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x6169('0x12')](function(_0x3e1dbb){_0x46793f(_0x3e1dbb);})['catch'](function(_0x3ab515){_0x45ca32(_0x322320[_0x6169('0x17')](0x1f4,_0x3ab515['message']));});});};exports[_0x6169('0x3c')]=function(_0x300460){var _0x42c5bf=this;return new Promise(function(_0x53e6b1,_0x3b2202){var _0x32f783;return db[_0x6169('0x25')][_0x6169('0x3d')]({'where':_0x300460[_0x6169('0x1b')]['where']||{},'attributes':['id',_0x6169('0x29')]})[_0x6169('0x12')](function(_0x586b80){if(_0x586b80){_0x32f783=_0x586b80;if(_0x300460[_0x6169('0x38')][_0x6169('0x3e')]&&!utils[_0x6169('0x3f')](_0x300460[_0x6169('0x38')][_0x6169('0x3e')])){throw new Error(_0x6169('0x40'));}switch(_0x300460[_0x6169('0x38')][_0x6169('0x3e')]){case _0x6169('0x41'):return db['UserVoiceQueueRt'][_0x6169('0x2e')]({'paused':0x0},{'where':{'UserId':_0x32f783['id']}})[_0x6169('0x12')](function(){return db[_0x6169('0x2f')][_0x6169('0x28')]({'where':{'channel':_0x300460[_0x6169('0x38')][_0x6169('0x3e')],'membername':_0x32f783['name'],'type':'PAUSE','exitAt':null}});})[_0x6169('0x12')](function(_0x5f2bba){if(_0x5f2bba){return _0x5f2bba['update']({'exitAt':moment()[_0x6169('0x42')](_0x6169('0x37')),'data2':_0x6169('0x43')},{'individualHooks':!![]});}return null;})[_0x6169('0x12')](function(){return _0x32f783[_0x6169('0x2e')]({'voicePause':![]});});case'mail':case _0x6169('0x44'):case _0x6169('0x45'):case _0x6169('0x46'):case _0x6169('0x47'):return db[_0x6169('0x2f')][_0x6169('0x28')]({'where':{'channel':_0x300460[_0x6169('0x38')][_0x6169('0x3e')],'membername':_0x32f783[_0x6169('0x29')],'type':'PAUSE','exitAt':null}})['then'](function(_0x131d5f){return _0x131d5f[_0x6169('0x2e')]({'exitAt':moment()[_0x6169('0x42')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x6169('0x43')},{'individualHooks':!![]});})[_0x6169('0x12')](function(){var _0x204c2d={};_[_0x6169('0x48')](_0x204c2d,util[_0x6169('0x42')](_0x6169('0x49'),_0x300460[_0x6169('0x38')][_0x6169('0x3e')],_0x6169('0x4a')),![]);return _0x32f783['update'](_0x204c2d);});default:return db[_0x6169('0x2d')][_0x6169('0x2e')]({'paused':0x0},{'where':{'UserId':_0x32f783['id']}})[_0x6169('0x12')](function(){return db[_0x6169('0x2f')]['findAll']({'where':{'membername':_0x32f783[_0x6169('0x29')],'type':_0x6169('0x31'),'exitAt':null}});})[_0x6169('0x12')](function(_0x5d8198){var _0x5e5c61=[];_0x5d8198[_0x6169('0x34')](function(_0x3f2a0f){_0x5e5c61['push'](_0x3f2a0f[_0x6169('0x2e')]({'exitAt':moment()['format'](_0x6169('0x37')),'data2':_0x6169('0x43')}));});return BPromise['all'](_0x5e5c61);})['then'](function(){return _0x32f783[_0x6169('0x2e')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});});}}})['then'](function(_0x450862){_0x53e6b1(_0x450862);})[_0x6169('0x23')](function(_0x3d88c9){_0x3b2202(_0x42c5bf['error'](0x1f4,_0x3d88c9[_0x6169('0x19')]));});});};exports[_0x6169('0x4b')]=function(_0x12b0df){var _0x131e34=this;return new Promise(function(_0x5df100,_0x220427){var _0x28dabf;return db[_0x6169('0x25')][_0x6169('0x3d')]({'where':_0x12b0df[_0x6169('0x1b')][_0x6169('0x1c')]||{},'attributes':['id',_0x6169('0x29')]})['then'](function(_0x5093e7){if(_0x5093e7){_0x28dabf=_0x5093e7;return db['UserVoiceQueueRt'][_0x6169('0x4c')]({'where':{'membername':_0x28dabf[_0x6169('0x29')]},'individualHooks':!![]});}})[_0x6169('0x12')](function(){if(_0x28dabf){return db[_0x6169('0x2f')][_0x6169('0x30')]({'where':{'membername':_0x28dabf[_0x6169('0x29')],'exitAt':null}});}})[_0x6169('0x12')](function(_0x180f8c){if(_0x28dabf){if(_0x180f8c&&_0x180f8c['length']){var _0x2d9094=[];_0x180f8c['forEach'](function(_0x54d235){_0x2d9094[_0x6169('0x35')](_0x54d235[_0x6169('0x2e')]({'exitAt':moment()[_0x6169('0x42')](_0x6169('0x37'))}));});return BPromise['all'](_0x2d9094);}}})[_0x6169('0x12')](function(){if(_0x28dabf){return _0x28dabf[_0x6169('0x2e')]({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x6169('0x12')](function(_0x363691){_0x5df100(_0x363691);})[_0x6169('0x23')](function(_0xd6821f){_0x220427(_0x131e34[_0x6169('0x17')](0x1f4,_0xd6821f[_0x6169('0x19')]));});});};exports[_0x6169('0x4d')]=function(_0x21d732){var _0x2ff731=this;return new Promise(function(_0x563b62,_0x98a12b){var _0x5d163d;var _0x58ab7e;var _0x17ce7d;var _0x5a0a8b;return db[_0x6169('0x25')][_0x6169('0x3d')]({'where':_0x21d732[_0x6169('0x1b')][_0x6169('0x1c')]||{},'attributes':['id',_0x6169('0x29'),_0x6169('0x2a'),_0x6169('0x4e'),_0x6169('0x4f'),_0x6169('0x2b'),_0x6169('0x50'),_0x6169('0x2c')]})[_0x6169('0x12')](function(_0x41c82d){if(_0x41c82d){_0x5d163d=_0x41c82d;_0x5a0a8b=_0x21d732[_0x6169('0x38')][_0x6169('0x2c')]?_0x21d732[_0x6169('0x38')][_0x6169('0x2c')]:util[_0x6169('0x42')](_0x6169('0x51'),_0x5d163d['name']);return db[_0x6169('0x25')][_0x6169('0x52')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x5d163d['id']}}});}})[_0x6169('0x12')](function(_0x1974df){if(_0x1974df){_0x17ce7d=_0x1974df;return require(_0x6169('0x53'))[_0x6169('0x54')]();}})[_0x6169('0x12')](function(_0x419211){if(_0x419211&&_0x419211['agents']&&_0x17ce7d>=_0x419211[_0x6169('0x55')]){throw new Error(_0x6169('0x56'));}})[_0x6169('0x12')](function(){if(_0x5d163d){return db[_0x6169('0x2d')][_0x6169('0x4c')]({'where':{'membername':_0x5d163d[_0x6169('0x29')]},'individualHooks':!![]});}})[_0x6169('0x12')](function(){if(_0x5d163d){return _0x5d163d[_0x6169('0x57')]({'raw':!![]});}})[_0x6169('0x12')](function(_0x2af7f2){if(_0x5d163d){if(_0x2af7f2){var _0x151f9b=[];_0x58ab7e=_0x2af7f2;if(_0x58ab7e['length']){for(var _0x35289a=0x0;_0x35289a<_0x58ab7e[_0x6169('0x58')];_0x35289a++){_0x151f9b['push'](db[_0x6169('0x2d')][_0x6169('0x59')]({'membername':_0x5d163d[_0x6169('0x29')],'UserId':_0x5d163d['id'],'queue_name':_0x58ab7e[_0x35289a][_0x6169('0x29')],'VoiceQueueId':_0x58ab7e[_0x35289a]['id'],'interface':_0x5a0a8b,'paused':_0x5d163d[_0x6169('0x50')]||![],'penalty':_0x58ab7e[_0x35289a][_0x6169('0x5a')]||0x0}));}return BPromise[_0x6169('0x5b')](_0x151f9b);}}}})[_0x6169('0x12')](function(){if(_0x5d163d){return db[_0x6169('0x2f')][_0x6169('0x30')]({'where':{'membername':_0x5d163d['name'],'exitAt':null}});}})[_0x6169('0x12')](function(_0x21ad7c){if(_0x5d163d){if(_0x21ad7c&&_0x21ad7c[_0x6169('0x58')]){var _0x4c1496=[];_0x21ad7c[_0x6169('0x34')](function(_0x11016e){_0x4c1496[_0x6169('0x35')](_0x11016e[_0x6169('0x2e')]({'exitAt':moment()['format'](_0x6169('0x37'))}));});return BPromise[_0x6169('0x5b')](_0x4c1496);}}})['then'](function(_0x1bdb03){if(_0x5d163d){var _0x41e6e9=[];var _0x33dcc0=[];var _0x5b245d=utils['getChannels']();var _0x2fd2e2={'membername':_0x5d163d['name'],'interface':_0x5a0a8b,'enterAt':moment()[_0x6169('0x42')](_0x6169('0x37')),'role':_0x5d163d['role'],'internal':_0x5d163d[_0x6169('0x2b')]};_0x5b245d[_0x6169('0x34')](function(_0x5eb6ce){_0x41e6e9[_0x6169('0x35')](_[_0x6169('0x5c')]({'channel':_0x5eb6ce,'type':_0x6169('0x5d'),'data1':_0x6169('0x5e'),'data2':_0x5a0a8b},_0x2fd2e2));if(_0x5d163d[_0x6169('0x50')]){_0x33dcc0[_0x6169('0x35')](_[_0x6169('0x5c')]({'channel':_0x5eb6ce,'type':'PAUSE','data1':_0x6169('0x5f')},_0x2fd2e2));}});return db[_0x6169('0x2f')]['bulkCreate'](_0x41e6e9['concat'](_0x33dcc0),{'individualHooks':!![]});}})[_0x6169('0x12')](function(){if(_0x5d163d){return _0x5d163d[_0x6169('0x2e')]({'online':!![],'lastLoginAt':moment()[_0x6169('0x42')](_0x6169('0x37')),'voicePause':_0x5d163d[_0x6169('0x50')]||![],'mailPause':_0x5d163d[_0x6169('0x50')]||![],'chatPause':_0x5d163d['loginInPause']||![],'faxPause':_0x5d163d['loginInPause']||![],'smsPause':_0x5d163d['loginInPause']||![],'openchannelPause':_0x5d163d[_0x6169('0x50')]||![],'pauseType':_0x5d163d[_0x6169('0x50')]?_0x6169('0x5f'):null,'lastPauseAt':moment()[_0x6169('0x42')](_0x6169('0x37')),'interface':_0x5a0a8b});}})[_0x6169('0x12')](function(_0xdffdb8){_0x563b62(_0xdffdb8);})['catch'](function(_0x49f5fd){_0x98a12b(_0x2ff731['error'](0x1f4,_0x49f5fd[_0x6169('0x19')]));});});};