137fb29cd1b1a67639c285d64d7bc9f2360d3e93
[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 _0xd126=['online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','system','findOne','destroy','MemberReport','all','mobile','phone','loginInPause','SIP/%s','count','agent','agents','getVoiceQueues','upsert','callysquare','LOGININPAUSE','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','./user.socket','register','User','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','GetUser','catch','message','error','ShowUser','find','info','PauseUser','name','role','interface','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','PAUSE','length','getChannels','forEach','push','format','YYYY-MM-DD\x20HH:mm:ss','body','internal','uniqueid','bulkCreate','update','DEFAULT\x20PAUSE','resolve','isValidChannel','channel','Channel\x20parameter\x20%s\x20is\x20invalid'];(function(_0x11b76d,_0xbbebb8){var _0x567ac3=function(_0x5d8929){while(--_0x5d8929){_0x11b76d['push'](_0x11b76d['shift']());}};_0x567ac3(++_0xbbebb8);}(_0xd126,0x1b4));var _0x6d12=function(_0x5b04a3,_0xfda4fd){_0x5b04a3=_0x5b04a3-0x0;var _0x1adf11=_0xd126[_0x5b04a3];return _0x1adf11;};'use strict';var _=require(_0x6d12('0x0'));var util=require(_0x6d12('0x1'));var moment=require(_0x6d12('0x2'));var BPromise=require('bluebird');var Redis=require(_0x6d12('0x3'));var db=require(_0x6d12('0x4'))['db'];var utils=require(_0x6d12('0x5'));var logger=require(_0x6d12('0x6'))('rpc');var config=require(_0x6d12('0x7'));config[_0x6d12('0x8')]=_['defaults'](config[_0x6d12('0x8')],{'host':_0x6d12('0x9'),'port':0x18eb});var socket=require(_0x6d12('0xa'))(new Redis(config[_0x6d12('0x8')]));require(_0x6d12('0xb'))[_0x6d12('0xc')](socket);exports['GetUser']=function(_0x1778da){var _0x55bb4c=this;return new Promise(function(_0x15b0f1,_0x3503ad){return db[_0x6d12('0xd')][_0x6d12('0xe')]({'raw':_0x1778da[_0x6d12('0xf')]?_0x1778da[_0x6d12('0xf')][_0x6d12('0x10')]===undefined?!![]:![]:!![],'where':_0x1778da[_0x6d12('0xf')]?_0x1778da[_0x6d12('0xf')][_0x6d12('0x11')]||null:null,'attributes':_0x1778da['options']?_0x1778da['options'][_0x6d12('0x12')]||null:null,'limit':_0x1778da[_0x6d12('0xf')]?_0x1778da['options'][_0x6d12('0x13')]||null:null,'include':_0x1778da['options']?_0x1778da['options'][_0x6d12('0x14')]?_[_0x6d12('0x15')](_0x1778da[_0x6d12('0xf')][_0x6d12('0x14')],function(_0x573b00){return{'model':db[_0x573b00['model']],'as':_0x573b00['as'],'attributes':_0x573b00[_0x6d12('0x12')],'include':_0x573b00[_0x6d12('0x14')]?_[_0x6d12('0x15')](_0x573b00[_0x6d12('0x14')],function(_0xc89184){return{'model':db[_0xc89184[_0x6d12('0x16')]],'as':_0xc89184['as'],'attributes':_0xc89184['attributes'],'include':_0xc89184['include']?_[_0x6d12('0x15')](_0xc89184[_0x6d12('0x14')],function(_0x5a6eb1){return{'model':db[_0x5a6eb1[_0x6d12('0x16')]],'as':_0x5a6eb1['as'],'attributes':_0x5a6eb1['attributes']};}):[]};}):[]};}):[]:[]})[_0x6d12('0x17')](function(_0x3cc44f){logger['info']('GetUser',_0x1778da);logger[_0x6d12('0x18')](_0x6d12('0x19'),_0x1778da,JSON['stringify'](_0x3cc44f));_0x15b0f1(_0x3cc44f);})[_0x6d12('0x1a')](function(_0x3df65a){logger['error'](_0x6d12('0x19'),_0x3df65a[_0x6d12('0x1b')],_0x1778da);_0x3503ad(_0x55bb4c[_0x6d12('0x1c')](0x1f4,_0x3df65a['message']));});});};exports[_0x6d12('0x1d')]=function(_0x213895){var _0x1dd1a9=this;return new Promise(function(_0x531303,_0x49a179){return db[_0x6d12('0xd')][_0x6d12('0x1e')]({'raw':_0x213895['options']?_0x213895[_0x6d12('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x213895[_0x6d12('0xf')]?_0x213895[_0x6d12('0xf')][_0x6d12('0x11')]||null:null,'attributes':_0x213895[_0x6d12('0xf')]?_0x213895[_0x6d12('0xf')][_0x6d12('0x12')]||null:null,'include':_0x213895['options']?_0x213895[_0x6d12('0xf')]['include']?_[_0x6d12('0x15')](_0x213895[_0x6d12('0xf')][_0x6d12('0x14')],function(_0x4b6039){return{'model':db[_0x4b6039[_0x6d12('0x16')]],'as':_0x4b6039['as'],'attributes':_0x4b6039[_0x6d12('0x12')],'include':_0x4b6039[_0x6d12('0x14')]?_[_0x6d12('0x15')](_0x4b6039[_0x6d12('0x14')],function(_0x1dafe0){return{'model':db[_0x1dafe0['model']],'as':_0x1dafe0['as'],'attributes':_0x1dafe0[_0x6d12('0x12')],'include':_0x1dafe0['include']?_[_0x6d12('0x15')](_0x1dafe0['include'],function(_0x2a4085){return{'model':db[_0x2a4085[_0x6d12('0x16')]],'as':_0x2a4085['as'],'attributes':_0x2a4085['attributes']};}):[]};}):[]};}):[]:[]})[_0x6d12('0x17')](function(_0x3b066d){logger[_0x6d12('0x1f')]('ShowUser',_0x213895);logger['debug'](_0x6d12('0x1d'),_0x213895,JSON['stringify'](_0x3b066d));_0x531303(_0x3b066d);})[_0x6d12('0x1a')](function(_0x2f4d87){logger[_0x6d12('0x1c')](_0x6d12('0x1d'),_0x2f4d87[_0x6d12('0x1b')],_0x213895);_0x49a179(_0x1dd1a9[_0x6d12('0x1c')](0x1f4,_0x2f4d87[_0x6d12('0x1b')]));});});};exports[_0x6d12('0x20')]=function(_0x30425c){var _0x58b69e;return db[_0x6d12('0xd')]['find']({'where':_0x30425c['options'][_0x6d12('0x11')]||{},'attributes':['id',_0x6d12('0x21'),_0x6d12('0x22'),'internal',_0x6d12('0x23')]})[_0x6d12('0x17')](function(_0xc01188){if(!_0xc01188){throw new Error(util['format'](_0x6d12('0x24'),_0x30425c[_0x6d12('0x25')]['id']));}_0x58b69e=_0xc01188;return db[_0x6d12('0x26')]['update']({'paused':0x1},{'where':{'UserId':_0x58b69e['id']},'individualHooks':!![]});})[_0x6d12('0x17')](function(){return db['MemberReport'][_0x6d12('0xe')]({'where':{'membername':_0x58b69e['name'],'type':_0x6d12('0x27'),'exitAt':null}});})[_0x6d12('0x17')](function(_0x213794){if(_0x213794&&_0x213794[_0x6d12('0x28')]){var _0xd10e4a=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x32a0f7=0x0,_0x4ff23a=_0x213794[_0x6d12('0x28')];_0x32a0f7<_0x4ff23a;_0x32a0f7++){_0x213794[_0x32a0f7]['updateAttributes']({'exitAt':_0xd10e4a});}}})['then'](function(){var _0x53f8c0=[];var _0x397bb1=utils[_0x6d12('0x29')]();_0x397bb1[_0x6d12('0x2a')](function(_0xf26e9e){_0x53f8c0[_0x6d12('0x2b')]({'channel':_0xf26e9e,'membername':_0x58b69e[_0x6d12('0x21')],'interface':_['isNil'](_0x58b69e[_0x6d12('0x23')])?util[_0x6d12('0x2c')]('SIP/%s',_0x58b69e[_0x6d12('0x21')]):_0x58b69e[_0x6d12('0x23')],'type':_0x6d12('0x27'),'enterAt':moment()[_0x6d12('0x2c')](_0x6d12('0x2d')),'data1':_0x30425c[_0x6d12('0x2e')]['type']||'DEFAULT\x20PAUSE','role':_0x58b69e[_0x6d12('0x22')],'internal':_0x58b69e[_0x6d12('0x2f')],'uniqueid':_0x30425c[_0x6d12('0x2e')][_0x6d12('0x30')]||null});});return db['MemberReport'][_0x6d12('0x31')](_0x53f8c0,{'individualHooks':!![]});})['then'](function(){return _0x58b69e[_0x6d12('0x32')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x30425c['body']['type']||_0x6d12('0x33'),'lastPauseAt':moment()[_0x6d12('0x2c')](_0x6d12('0x2d'))});})['catch'](function(_0x183bc1){throw _0x183bc1;});};exports['UnpauseUser']=function(_0x2dc882){return Promise[_0x6d12('0x34')]()[_0x6d12('0x17')](function(){if(_0x2dc882[_0x6d12('0x2e')]['channel']&&!utils[_0x6d12('0x35')](_0x2dc882['body'][_0x6d12('0x36')])){throw new Error(util[_0x6d12('0x2c')](_0x6d12('0x37'),_0x2dc882['body'][_0x6d12('0x36')]));}return db[_0x6d12('0xd')]['findOne']({'where':_0x2dc882['options']['where']||{},'attributes':['id',_0x6d12('0x21'),_0x6d12('0x22'),_0x6d12('0x2f'),'interface',_0x6d12('0x38'),_0x6d12('0x39'),_0x6d12('0x3a'),_0x6d12('0x3b'),_0x6d12('0x3c'),_0x6d12('0x3d'),_0x6d12('0x3e'),_0x6d12('0x3f'),_0x6d12('0x40'),_0x6d12('0x41')]});})['then'](function(_0x2960d6){if(!_0x2960d6){throw new Error(util[_0x6d12('0x2c')](_0x6d12('0x24'),_0x2dc882[_0x6d12('0x25')]['id']));}return _0x2960d6['unpause'](_0x2dc882[_0x6d12('0x2e')][_0x6d12('0x36')],_0x6d12('0x42'));})[_0x6d12('0x1a')](function(_0x247fe3){throw _0x247fe3;});};exports['LogoutUser']=function(_0x435de7){var _0x4c246e=this;return new Promise(function(_0x470bd9,_0x497a2a){var _0x4f3692;return db[_0x6d12('0xd')][_0x6d12('0x43')]({'where':_0x435de7[_0x6d12('0xf')]['where']||{},'attributes':['id',_0x6d12('0x21')]})['then'](function(_0x2a853e){if(_0x2a853e){_0x4f3692=_0x2a853e;return db[_0x6d12('0x26')][_0x6d12('0x44')]({'where':{'membername':_0x4f3692[_0x6d12('0x21')]},'individualHooks':!![]});}})['then'](function(){if(_0x4f3692){return db[_0x6d12('0x45')]['findAll']({'where':{'membername':_0x4f3692[_0x6d12('0x21')],'exitAt':null}});}})[_0x6d12('0x17')](function(_0x51323c){if(_0x4f3692){if(_0x51323c&&_0x51323c[_0x6d12('0x28')]){var _0x4daccb=[];_0x51323c['forEach'](function(_0x5a355b){_0x4daccb['push'](_0x5a355b[_0x6d12('0x32')]({'exitAt':moment()['format'](_0x6d12('0x2d'))}));});return BPromise[_0x6d12('0x46')](_0x4daccb);}}})[_0x6d12('0x17')](function(){if(_0x4f3692){return _0x4f3692[_0x6d12('0x32')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x6d12('0x17')](function(_0x3c10b9){_0x470bd9(_0x3c10b9);})[_0x6d12('0x1a')](function(_0x1477bd){_0x497a2a(_0x4c246e['error'](0x1f4,_0x1477bd[_0x6d12('0x1b')]));});});};exports['LoginUser']=function(_0xc24c1c){var _0xbf0d5d=this;return new Promise(function(_0x551af9,_0x5c9c87){var _0x29e99d;var _0x300faa;var _0xbb2c1f;var _0x1f187a;return db[_0x6d12('0xd')]['findOne']({'where':_0xc24c1c[_0x6d12('0xf')][_0x6d12('0x11')]||{},'attributes':['id',_0x6d12('0x21'),_0x6d12('0x22'),_0x6d12('0x47'),_0x6d12('0x48'),_0x6d12('0x2f'),_0x6d12('0x49'),_0x6d12('0x23')]})[_0x6d12('0x17')](function(_0x1d86f2){if(_0x1d86f2){_0x29e99d=_0x1d86f2;_0x1f187a=_0xc24c1c['body']['interface']?_0xc24c1c[_0x6d12('0x2e')][_0x6d12('0x23')]:util[_0x6d12('0x2c')](_0x6d12('0x4a'),_0x29e99d[_0x6d12('0x21')]);return db['User'][_0x6d12('0x4b')]({'where':{'role':_0x6d12('0x4c'),'online':!![],'id':{'$ne':_0x29e99d['id']}}});}})[_0x6d12('0x17')](function(_0x344611){if(_0x344611){_0xbb2c1f=_0x344611;return require('../../config/license/util')['getLicense']();}})[_0x6d12('0x17')](function(_0x33033e){if(_0x33033e&&_0x33033e[_0x6d12('0x4d')]&&_0xbb2c1f>=_0x33033e[_0x6d12('0x4d')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x6d12('0x17')](function(){if(_0x29e99d){return db[_0x6d12('0x26')][_0x6d12('0x44')]({'where':{'membername':_0x29e99d['name']},'individualHooks':!![]});}})['then'](function(){if(_0x29e99d){return _0x29e99d[_0x6d12('0x4e')]({'raw':!![]});}})['then'](function(_0x61b1b0){if(_0x29e99d){if(_0x61b1b0){var _0x32503c=[];_0x300faa=_0x61b1b0;if(_0x300faa[_0x6d12('0x28')]){for(var _0x16b1cf=0x0;_0x16b1cf<_0x300faa['length'];_0x16b1cf++){_0x32503c[_0x6d12('0x2b')](db[_0x6d12('0x26')][_0x6d12('0x4f')]({'membername':_0x29e99d[_0x6d12('0x21')],'UserId':_0x29e99d['id'],'queue_name':_0x300faa[_0x16b1cf][_0x6d12('0x21')],'VoiceQueueId':_0x300faa[_0x16b1cf]['id'],'interface':_0x1f187a,'paused':_0x29e99d[_0x6d12('0x49')]||![],'penalty':_0x300faa[_0x16b1cf]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x32503c);}}}})['then'](function(){if(_0x29e99d){return db[_0x6d12('0x45')][_0x6d12('0xe')]({'where':{'membername':_0x29e99d['name'],'exitAt':null}});}})['then'](function(_0x3cd49f){if(_0x29e99d){if(_0x3cd49f&&_0x3cd49f['length']){var _0x5f2c3b=[];_0x3cd49f[_0x6d12('0x2a')](function(_0x5a0617){_0x5f2c3b[_0x6d12('0x2b')](_0x5a0617[_0x6d12('0x32')]({'exitAt':moment()[_0x6d12('0x2c')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x6d12('0x46')](_0x5f2c3b);}}})[_0x6d12('0x17')](function(){if(_0x29e99d){var _0x5867c8=[];var _0x121a2a=[];var _0xdc9e50=utils[_0x6d12('0x29')]();var _0x551ca8={'membername':_0x29e99d[_0x6d12('0x21')],'interface':_0x1f187a,'enterAt':moment()[_0x6d12('0x2c')](_0x6d12('0x2d')),'role':_0x29e99d[_0x6d12('0x22')],'internal':_0x29e99d[_0x6d12('0x2f')]};_0xdc9e50[_0x6d12('0x2a')](function(_0x15538d){_0x5867c8[_0x6d12('0x2b')](_['merge']({'channel':_0x15538d,'type':'LOGIN','data1':_0x6d12('0x50'),'data2':_0x1f187a},_0x551ca8));if(_0x29e99d[_0x6d12('0x49')]){_0x121a2a[_0x6d12('0x2b')](_['merge']({'channel':_0x15538d,'type':_0x6d12('0x27'),'data1':'LOGININPAUSE'},_0x551ca8));}});return db['MemberReport']['bulkCreate'](_0x5867c8['concat'](_0x121a2a),{'individualHooks':!![]});}})[_0x6d12('0x17')](function(){if(_0x29e99d){return _0x29e99d[_0x6d12('0x32')]({'online':!![],'lastLoginAt':moment()[_0x6d12('0x2c')](_0x6d12('0x2d')),'voicePause':_0x29e99d[_0x6d12('0x49')]||![],'mailPause':_0x29e99d['loginInPause']||![],'chatPause':_0x29e99d[_0x6d12('0x49')]||![],'faxPause':_0x29e99d[_0x6d12('0x49')]||![],'smsPause':_0x29e99d[_0x6d12('0x49')]||![],'openchannelPause':_0x29e99d[_0x6d12('0x49')]||![],'pauseType':_0x29e99d[_0x6d12('0x49')]?_0x6d12('0x51'):null,'lastPauseAt':moment()['format'](_0x6d12('0x2d')),'interface':_0x1f187a});}})['then'](function(_0x2293dc){_0x551af9(_0x2293dc);})[_0x6d12('0x1a')](function(_0x550e01){_0x5c9c87(_0xbf0d5d[_0x6d12('0x1c')](0x1f4,_0x550e01[_0x6d12('0x1b')]));});});};