905dd48a1357213b12ae7dd06bacd5571e10acb5
[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 _0x7758=['internal','interface','UserVoiceQueueRt','update','MemberReport','name','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','isNil','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','UnpauseUser','findOne','channel','Unknown\x20channel','voice','system','mail','chat','fax','sms','set','Pause','all','destroy','LoginUser','phone','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','loginInPause','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','message','User','findAll','options','raw','where','attributes','limit','map','include','model','GetUser','catch','ShowUser','PauseUser','find','role'];(function(_0x530d2a,_0x5b0892){var _0x447743=function(_0x14f4ed){while(--_0x14f4ed){_0x530d2a['push'](_0x530d2a['shift']());}};_0x447743(++_0x5b0892);}(_0x7758,0x8b));var _0x8775=function(_0x4f9ae7,_0x3a7b7f){_0x4f9ae7=_0x4f9ae7-0x0;var _0xb60823=_0x7758[_0x4f9ae7];return _0xb60823;};'use strict';var _=require(_0x8775('0x0'));var util=require(_0x8775('0x1'));var moment=require(_0x8775('0x2'));var BPromise=require(_0x8775('0x3'));var rs=require(_0x8775('0x4'));var fs=require('fs');var Redis=require(_0x8775('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8775('0x6'))(_0x8775('0x7'));var config=require(_0x8775('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8775('0x9')]['http']({'port':0x232a});config[_0x8775('0xa')]=_[_0x8775('0xb')](config[_0x8775('0xa')],{'host':_0x8775('0xc'),'port':0x18eb});var socket=require(_0x8775('0xd'))(new Redis(config[_0x8775('0xa')]));require('./user.socket')[_0x8775('0xe')](socket);function respondWithRpcPromise(_0x5a4f2c,_0x97b033,_0x1261ba){return new BPromise(function(_0x4397da,_0x11e605){return client[_0x8775('0xf')](_0x5a4f2c,_0x1261ba)[_0x8775('0x10')](function(_0x282358){logger[_0x8775('0x11')](_0x8775('0x12'),_0x97b033,_0x8775('0x13'));logger[_0x8775('0x14')](_0x8775('0x15'),_0x97b033,_0x8775('0x13'),JSON[_0x8775('0x16')](_0x282358));if(_0x282358[_0x8775('0x17')]){if(_0x282358[_0x8775('0x17')]['code']===0x1f4){logger[_0x8775('0x17')](_0x8775('0x12'),_0x97b033,_0x282358[_0x8775('0x17')][_0x8775('0x18')]);return _0x11e605(_0x282358[_0x8775('0x17')][_0x8775('0x18')]);}logger['error'](_0x8775('0x12'),_0x97b033,_0x282358[_0x8775('0x17')][_0x8775('0x18')]);return _0x4397da(_0x282358[_0x8775('0x17')][_0x8775('0x18')]);}else{logger[_0x8775('0x11')]('User,\x20%s,\x20%s',_0x97b033,_0x8775('0x13'));_0x4397da(_0x282358['result'][_0x8775('0x18')]);}})['catch'](function(_0x1221af){logger['error'](_0x8775('0x12'),_0x97b033,_0x1221af);_0x11e605(_0x1221af);});});}exports['GetUser']=function(_0x329c1f){var _0x58c666=this;return new Promise(function(_0x4e81e7,_0x305996){return db[_0x8775('0x19')][_0x8775('0x1a')]({'raw':_0x329c1f[_0x8775('0x1b')]?_0x329c1f[_0x8775('0x1b')][_0x8775('0x1c')]===undefined?!![]:![]:!![],'where':_0x329c1f[_0x8775('0x1b')]?_0x329c1f['options'][_0x8775('0x1d')]||null:null,'attributes':_0x329c1f[_0x8775('0x1b')]?_0x329c1f[_0x8775('0x1b')][_0x8775('0x1e')]||null:null,'limit':_0x329c1f[_0x8775('0x1b')]?_0x329c1f[_0x8775('0x1b')][_0x8775('0x1f')]||null:null,'include':_0x329c1f[_0x8775('0x1b')]?_0x329c1f[_0x8775('0x1b')]['include']?_[_0x8775('0x20')](_0x329c1f['options'][_0x8775('0x21')],function(_0x308878){return{'model':db[_0x308878[_0x8775('0x22')]],'as':_0x308878['as'],'attributes':_0x308878['attributes'],'include':_0x308878['include']?_['map'](_0x308878['include'],function(_0x79ff4b){return{'model':db[_0x79ff4b[_0x8775('0x22')]],'as':_0x79ff4b['as'],'attributes':_0x79ff4b[_0x8775('0x1e')],'include':_0x79ff4b[_0x8775('0x21')]?_['map'](_0x79ff4b['include'],function(_0x3c84c7){return{'model':db[_0x3c84c7[_0x8775('0x22')]],'as':_0x3c84c7['as'],'attributes':_0x3c84c7[_0x8775('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8775('0x10')](function(_0x25258b){logger['info']('GetUser',_0x329c1f);logger[_0x8775('0x14')](_0x8775('0x23'),_0x329c1f,JSON[_0x8775('0x16')](_0x25258b));_0x4e81e7(_0x25258b);})[_0x8775('0x24')](function(_0x1251a4){logger[_0x8775('0x17')]('GetUser',_0x1251a4[_0x8775('0x18')],_0x329c1f);_0x305996(_0x58c666[_0x8775('0x17')](0x1f4,_0x1251a4[_0x8775('0x18')]));});});};exports[_0x8775('0x25')]=function(_0x1528db){var _0x13207a=this;return new Promise(function(_0x49c4ea,_0x1a28ba){return db['User']['find']({'raw':_0x1528db[_0x8775('0x1b')]?_0x1528db['options'][_0x8775('0x1c')]===undefined?!![]:![]:!![],'where':_0x1528db['options']?_0x1528db['options'][_0x8775('0x1d')]||null:null,'attributes':_0x1528db[_0x8775('0x1b')]?_0x1528db[_0x8775('0x1b')]['attributes']||null:null,'include':_0x1528db[_0x8775('0x1b')]?_0x1528db[_0x8775('0x1b')][_0x8775('0x21')]?_[_0x8775('0x20')](_0x1528db[_0x8775('0x1b')][_0x8775('0x21')],function(_0x3e16fc){return{'model':db[_0x3e16fc['model']],'as':_0x3e16fc['as'],'attributes':_0x3e16fc['attributes'],'include':_0x3e16fc[_0x8775('0x21')]?_[_0x8775('0x20')](_0x3e16fc[_0x8775('0x21')],function(_0x6f4c14){return{'model':db[_0x6f4c14[_0x8775('0x22')]],'as':_0x6f4c14['as'],'attributes':_0x6f4c14['attributes'],'include':_0x6f4c14[_0x8775('0x21')]?_[_0x8775('0x20')](_0x6f4c14[_0x8775('0x21')],function(_0x22a6fb){return{'model':db[_0x22a6fb[_0x8775('0x22')]],'as':_0x22a6fb['as'],'attributes':_0x22a6fb[_0x8775('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8775('0x10')](function(_0x351f17){logger[_0x8775('0x11')](_0x8775('0x25'),_0x1528db);logger[_0x8775('0x14')](_0x8775('0x25'),_0x1528db,JSON['stringify'](_0x351f17));_0x49c4ea(_0x351f17);})[_0x8775('0x24')](function(_0x34df3d){logger['error'](_0x8775('0x25'),_0x34df3d['message'],_0x1528db);_0x1a28ba(_0x13207a['error'](0x1f4,_0x34df3d[_0x8775('0x18')]));});});};exports[_0x8775('0x26')]=function(_0x2e0e35){var _0xaef87e=this;return new Promise(function(_0x4832ac,_0x443bfe){var _0x42ff24;return db['User'][_0x8775('0x27')]({'where':_0x2e0e35[_0x8775('0x1b')][_0x8775('0x1d')]||{},'attributes':['id','name',_0x8775('0x28'),_0x8775('0x29'),_0x8775('0x2a')]})[_0x8775('0x10')](function(_0x19c751){if(_0x19c751){_0x42ff24=_0x19c751;return db[_0x8775('0x2b')][_0x8775('0x2c')]({'paused':0x1},{'where':{'UserId':_0x42ff24['id']},'individualHooks':!![]});}})['then'](function(){if(_0x42ff24){return db[_0x8775('0x2d')]['findAll']({'where':{'membername':_0x42ff24[_0x8775('0x2e')],'type':_0x8775('0x2f'),'exitAt':null}});}})[_0x8775('0x10')](function(_0x3b2b1e){if(_0x42ff24){if(_0x3b2b1e&&_0x3b2b1e[_0x8775('0x30')]){var _0x56a2ff=moment()[_0x8775('0x31')](_0x8775('0x32'));for(var _0x3945cf=0x0,_0x576197=_0x3b2b1e[_0x8775('0x30')];_0x3945cf<_0x576197;_0x3945cf++){_0x3b2b1e[_0x3945cf][_0x8775('0x33')]({'exitAt':_0x56a2ff});}}}})['then'](function(){if(_0x42ff24){var _0x3354ad=[];var _0x36d15a=utils['getChannels']();_0x36d15a[_0x8775('0x34')](function(_0x34f52e){_0x3354ad[_0x8775('0x35')]({'channel':_0x34f52e,'membername':_0x42ff24['name'],'interface':_[_0x8775('0x36')](_0x42ff24['interface'])?util['format'](_0x8775('0x37'),_0x42ff24[_0x8775('0x2e')]):_0x42ff24[_0x8775('0x2a')],'type':'PAUSE','enterAt':moment()[_0x8775('0x31')](_0x8775('0x32')),'data1':_0x2e0e35[_0x8775('0x38')][_0x8775('0x39')]||_0x8775('0x3a'),'role':_0x42ff24[_0x8775('0x28')],'internal':_0x42ff24[_0x8775('0x29')],'uniqueid':_0x2e0e35[_0x8775('0x38')][_0x8775('0x3b')]||null});});return db[_0x8775('0x2d')][_0x8775('0x3c')](_0x3354ad,{'individualHooks':!![]});}})['then'](function(){if(_0x42ff24){return _0x42ff24[_0x8775('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'pauseType':_0x2e0e35[_0x8775('0x38')][_0x8775('0x39')]||_0x8775('0x3a'),'lastPauseAt':moment()['format'](_0x8775('0x32'))});}})[_0x8775('0x10')](function(_0x3d3b2d){_0x4832ac(_0x3d3b2d);})[_0x8775('0x24')](function(_0x41af68){_0x443bfe(_0xaef87e[_0x8775('0x17')](0x1f4,_0x41af68[_0x8775('0x18')]));});});};exports[_0x8775('0x3d')]=function(_0x299035){var _0x157eae=this;return new Promise(function(_0x5a41f0,_0x3d4913){var _0x16f038;return db[_0x8775('0x19')][_0x8775('0x3e')]({'where':_0x299035[_0x8775('0x1b')][_0x8775('0x1d')]||{},'attributes':['id',_0x8775('0x2e')]})[_0x8775('0x10')](function(_0x2f54f3){if(_0x2f54f3){_0x16f038=_0x2f54f3;if(_0x299035[_0x8775('0x38')][_0x8775('0x3f')]&&!utils['isValidChannel'](_0x299035[_0x8775('0x38')][_0x8775('0x3f')])){throw new Error(_0x8775('0x40'));}switch(_0x299035['body']['channel']){case _0x8775('0x41'):return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x16f038['id']}})[_0x8775('0x10')](function(){return db[_0x8775('0x2d')]['find']({'where':{'channel':_0x299035[_0x8775('0x38')]['channel'],'membername':_0x16f038[_0x8775('0x2e')],'type':_0x8775('0x2f'),'exitAt':null}});})[_0x8775('0x10')](function(_0x4e2a94){if(_0x4e2a94){return _0x4e2a94[_0x8775('0x2c')]({'exitAt':moment()[_0x8775('0x31')](_0x8775('0x32')),'data2':_0x8775('0x42')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x16f038['update']({'voicePause':![]});});case _0x8775('0x43'):case _0x8775('0x44'):case _0x8775('0x45'):case _0x8775('0x46'):case'openchannel':return db[_0x8775('0x2d')][_0x8775('0x27')]({'where':{'channel':_0x299035[_0x8775('0x38')][_0x8775('0x3f')],'membername':_0x16f038['name'],'type':'PAUSE','exitAt':null}})[_0x8775('0x10')](function(_0x24ee57){return _0x24ee57[_0x8775('0x2c')]({'exitAt':moment()[_0x8775('0x31')](_0x8775('0x32')),'data2':_0x8775('0x42')},{'individualHooks':!![]});})[_0x8775('0x10')](function(){var _0x355610={};_[_0x8775('0x47')](_0x355610,util['format']('%s%s',_0x299035[_0x8775('0x38')][_0x8775('0x3f')],_0x8775('0x48')),![]);return _0x16f038['update'](_0x355610);});default:return db['UserVoiceQueueRt'][_0x8775('0x2c')]({'paused':0x0},{'where':{'UserId':_0x16f038['id']}})[_0x8775('0x10')](function(){return db[_0x8775('0x2d')][_0x8775('0x1a')]({'where':{'membername':_0x16f038[_0x8775('0x2e')],'type':'PAUSE','exitAt':null}});})[_0x8775('0x10')](function(_0xe6f5bd){var _0x3d7386=[];_0xe6f5bd[_0x8775('0x34')](function(_0x3647c3){_0x3d7386[_0x8775('0x35')](_0x3647c3[_0x8775('0x2c')]({'exitAt':moment()['format'](_0x8775('0x32')),'data2':_0x8775('0x42')}));});return BPromise[_0x8775('0x49')](_0x3d7386);})[_0x8775('0x10')](function(){return _0x16f038[_0x8775('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});});}}})[_0x8775('0x10')](function(_0x20e37c){_0x5a41f0(_0x20e37c);})['catch'](function(_0x2ac16a){_0x3d4913(_0x157eae[_0x8775('0x17')](0x1f4,_0x2ac16a[_0x8775('0x18')]));});});};exports['LogoutUser']=function(_0x25e729){var _0x3bd0ed=this;return new Promise(function(_0x5526bb,_0x1d328f){var _0xb86911;return db[_0x8775('0x19')]['findOne']({'where':_0x25e729[_0x8775('0x1b')]['where']||{},'attributes':['id','name']})['then'](function(_0x369acd){if(_0x369acd){_0xb86911=_0x369acd;return db[_0x8775('0x2b')][_0x8775('0x4a')]({'where':{'membername':_0xb86911['name']},'individualHooks':!![]});}})[_0x8775('0x10')](function(){if(_0xb86911){return db[_0x8775('0x2d')][_0x8775('0x1a')]({'where':{'membername':_0xb86911['name'],'exitAt':null}});}})[_0x8775('0x10')](function(_0x56f9e5){if(_0xb86911){if(_0x56f9e5&&_0x56f9e5[_0x8775('0x30')]){var _0x16d07d=[];_0x56f9e5[_0x8775('0x34')](function(_0x316f77){_0x16d07d[_0x8775('0x35')](_0x316f77[_0x8775('0x2c')]({'exitAt':moment()[_0x8775('0x31')](_0x8775('0x32'))}));});return BPromise['all'](_0x16d07d);}}})['then'](function(){if(_0xb86911){return _0xb86911['update']({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x8775('0x10')](function(_0x612a15){_0x5526bb(_0x612a15);})[_0x8775('0x24')](function(_0xe2a161){_0x1d328f(_0x3bd0ed['error'](0x1f4,_0xe2a161['message']));});});};exports[_0x8775('0x4b')]=function(_0x6ad462){var _0x571be1=this;return new Promise(function(_0x33c027,_0x3ab237){var _0x55605b;var _0x17f1fd;var _0x702374;var _0x55c647;return db[_0x8775('0x19')][_0x8775('0x3e')]({'where':_0x6ad462[_0x8775('0x1b')][_0x8775('0x1d')]||{},'attributes':['id',_0x8775('0x2e'),'role','mobile',_0x8775('0x4c'),_0x8775('0x29'),'loginInPause',_0x8775('0x2a')]})[_0x8775('0x10')](function(_0x1636b7){if(_0x1636b7){_0x55605b=_0x1636b7;_0x55c647=_0x6ad462[_0x8775('0x38')][_0x8775('0x2a')]?_0x6ad462[_0x8775('0x38')][_0x8775('0x2a')]:util['format'](_0x8775('0x37'),_0x55605b['name']);return db[_0x8775('0x19')][_0x8775('0x4d')]({'where':{'role':_0x8775('0x4e'),'online':!![],'id':{'$ne':_0x55605b['id']}}});}})['then'](function(_0x1b7dc1){if(_0x1b7dc1){_0x702374=_0x1b7dc1;return require(_0x8775('0x4f'))['getLicense']();}})[_0x8775('0x10')](function(_0x23528d){if(_0x23528d&&_0x23528d[_0x8775('0x50')]&&_0x702374>=_0x23528d[_0x8775('0x50')]){throw new Error(_0x8775('0x51'));}})[_0x8775('0x10')](function(){if(_0x55605b){return db[_0x8775('0x2b')]['destroy']({'where':{'membername':_0x55605b[_0x8775('0x2e')]},'individualHooks':!![]});}})['then'](function(){if(_0x55605b){return _0x55605b[_0x8775('0x52')]({'raw':!![]});}})[_0x8775('0x10')](function(_0x549c65){if(_0x55605b){if(_0x549c65){var _0x15354e=[];_0x17f1fd=_0x549c65;if(_0x17f1fd[_0x8775('0x30')]){for(var _0xfad761=0x0;_0xfad761<_0x17f1fd['length'];_0xfad761++){_0x15354e[_0x8775('0x35')](db[_0x8775('0x2b')]['upsert']({'membername':_0x55605b[_0x8775('0x2e')],'UserId':_0x55605b['id'],'queue_name':_0x17f1fd[_0xfad761][_0x8775('0x2e')],'VoiceQueueId':_0x17f1fd[_0xfad761]['id'],'interface':_0x55c647,'paused':_0x55605b[_0x8775('0x53')]||![],'penalty':_0x17f1fd[_0xfad761]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x8775('0x49')](_0x15354e);}}}})['then'](function(){if(_0x55605b){return db['MemberReport'][_0x8775('0x1a')]({'where':{'membername':_0x55605b[_0x8775('0x2e')],'exitAt':null}});}})[_0x8775('0x10')](function(_0x176fe5){if(_0x55605b){if(_0x176fe5&&_0x176fe5[_0x8775('0x30')]){var _0x1f6f5a=[];_0x176fe5['forEach'](function(_0x388a74){_0x1f6f5a[_0x8775('0x35')](_0x388a74[_0x8775('0x2c')]({'exitAt':moment()[_0x8775('0x31')](_0x8775('0x32'))}));});return BPromise[_0x8775('0x49')](_0x1f6f5a);}}})[_0x8775('0x10')](function(_0x4e95d3){if(_0x55605b){var _0x598e17=[];var _0x7618dd=[];var _0x1b8ecc=utils[_0x8775('0x54')]();var _0x4cb781={'membername':_0x55605b[_0x8775('0x2e')],'interface':_0x55c647,'enterAt':moment()[_0x8775('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x55605b['role'],'internal':_0x55605b[_0x8775('0x29')]};_0x1b8ecc[_0x8775('0x34')](function(_0x2b32e8){_0x598e17[_0x8775('0x35')](_[_0x8775('0x55')]({'channel':_0x2b32e8,'type':_0x8775('0x56'),'data1':_0x8775('0x57'),'data2':_0x55c647},_0x4cb781));if(_0x55605b['loginInPause']){_0x7618dd[_0x8775('0x35')](_[_0x8775('0x55')]({'channel':_0x2b32e8,'type':'PAUSE','data1':_0x8775('0x58')},_0x4cb781));}});return db[_0x8775('0x2d')][_0x8775('0x3c')](_0x598e17[_0x8775('0x59')](_0x7618dd),{'individualHooks':!![]});}})[_0x8775('0x10')](function(){if(_0x55605b){return _0x55605b['update']({'online':!![],'lastLoginAt':moment()[_0x8775('0x31')](_0x8775('0x32')),'voicePause':_0x55605b[_0x8775('0x53')]||![],'mailPause':_0x55605b[_0x8775('0x53')]||![],'chatPause':_0x55605b[_0x8775('0x53')]||![],'faxPause':_0x55605b[_0x8775('0x53')]||![],'smsPause':_0x55605b['loginInPause']||![],'openchannelPause':_0x55605b[_0x8775('0x53')]||![],'pauseType':_0x55605b[_0x8775('0x53')]?_0x8775('0x58'):null,'lastPauseAt':moment()[_0x8775('0x31')](_0x8775('0x32')),'interface':_0x55c647});}})[_0x8775('0x10')](function(_0x1e7f0d){_0x33c027(_0x1e7f0d);})[_0x8775('0x24')](function(_0x1f8017){_0x3ab237(_0x571be1[_0x8775('0x17')](0x1f4,_0x1f8017[_0x8775('0x18')]));});});};