24a2399e0039d08840279284ba73e7e0904b2427
[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 _0xd7da=['name','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','isNil','interface','DEFAULT\x20PAUSE','uniqueid','bulkCreate','type','UnpauseUser','body','channel','isValidChannel','system','mail','chat','openchannel','set','%s%s','Pause','forEach','push','findOne','all','mobile','phone','loginInPause','SIP/%s','count','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','callysquare','LOGININPAUSE','concat','lodash','util','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','request','then','info','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','User','findAll','options','where','attributes','limit','include','map','model','GetUser','debug','ShowUser','raw','PauseUser','find','role','internal','UserVoiceQueueRt','update','MemberReport'];(function(_0x26679b,_0x3bcdfb){var _0x1e9030=function(_0x3cf3dd){while(--_0x3cf3dd){_0x26679b['push'](_0x26679b['shift']());}};_0x1e9030(++_0x3bcdfb);}(_0xd7da,0x140));var _0xad7d=function(_0x4f90af,_0x14b70c){_0x4f90af=_0x4f90af-0x0;var _0x5e62c0=_0xd7da[_0x4f90af];return _0x5e62c0;};'use strict';var _=require(_0xad7d('0x0'));var util=require(_0xad7d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xad7d('0x2'));var fs=require('fs');var Redis=require(_0xad7d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xad7d('0x4'));var logger=require('../../config/logger')(_0xad7d('0x5'));var config=require(_0xad7d('0x6'));var jayson=require(_0xad7d('0x7'));var client=jayson[_0xad7d('0x8')][_0xad7d('0x9')]({'port':0x232a});config[_0xad7d('0xa')]=_[_0xad7d('0xb')](config['redis'],{'host':_0xad7d('0xc'),'port':0x18eb});var socket=require(_0xad7d('0xd'))(new Redis(config[_0xad7d('0xa')]));require(_0xad7d('0xe'))[_0xad7d('0xf')](socket);function respondWithRpcPromise(_0x269a33,_0x290235,_0x1a0b04){return new BPromise(function(_0x5d0db0,_0x2857fc){return client[_0xad7d('0x10')](_0x269a33,_0x1a0b04)[_0xad7d('0x11')](function(_0x3b3fbc){logger[_0xad7d('0x12')]('User,\x20%s,\x20%s',_0x290235,_0xad7d('0x13'));logger['debug'](_0xad7d('0x14'),_0x290235,_0xad7d('0x13'),JSON[_0xad7d('0x15')](_0x3b3fbc));if(_0x3b3fbc[_0xad7d('0x16')]){if(_0x3b3fbc[_0xad7d('0x16')][_0xad7d('0x17')]===0x1f4){logger[_0xad7d('0x16')]('User,\x20%s,\x20%s',_0x290235,_0x3b3fbc[_0xad7d('0x16')][_0xad7d('0x18')]);return _0x2857fc(_0x3b3fbc[_0xad7d('0x16')][_0xad7d('0x18')]);}logger[_0xad7d('0x16')](_0xad7d('0x19'),_0x290235,_0x3b3fbc[_0xad7d('0x16')][_0xad7d('0x18')]);return _0x5d0db0(_0x3b3fbc[_0xad7d('0x16')]['message']);}else{logger[_0xad7d('0x12')](_0xad7d('0x19'),_0x290235,_0xad7d('0x13'));_0x5d0db0(_0x3b3fbc[_0xad7d('0x1a')][_0xad7d('0x18')]);}})[_0xad7d('0x1b')](function(_0x511679){logger[_0xad7d('0x16')](_0xad7d('0x19'),_0x290235,_0x511679);_0x2857fc(_0x511679);});});}exports['GetUser']=function(_0x42c515){var _0x4b1aa8=this;return new Promise(function(_0x282b9f,_0x3fd87a){return db[_0xad7d('0x1c')][_0xad7d('0x1d')]({'raw':_0x42c515['options']?_0x42c515[_0xad7d('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x42c515[_0xad7d('0x1e')]?_0x42c515[_0xad7d('0x1e')][_0xad7d('0x1f')]||null:null,'attributes':_0x42c515['options']?_0x42c515[_0xad7d('0x1e')][_0xad7d('0x20')]||null:null,'limit':_0x42c515['options']?_0x42c515[_0xad7d('0x1e')][_0xad7d('0x21')]||null:null,'include':_0x42c515[_0xad7d('0x1e')]?_0x42c515[_0xad7d('0x1e')][_0xad7d('0x22')]?_[_0xad7d('0x23')](_0x42c515[_0xad7d('0x1e')][_0xad7d('0x22')],function(_0x227386){return{'model':db[_0x227386[_0xad7d('0x24')]],'as':_0x227386['as'],'attributes':_0x227386['attributes'],'include':_0x227386['include']?_[_0xad7d('0x23')](_0x227386['include'],function(_0x10a4f1){return{'model':db[_0x10a4f1[_0xad7d('0x24')]],'as':_0x10a4f1['as'],'attributes':_0x10a4f1[_0xad7d('0x20')],'include':_0x10a4f1['include']?_[_0xad7d('0x23')](_0x10a4f1['include'],function(_0x5b4f87){return{'model':db[_0x5b4f87['model']],'as':_0x5b4f87['as'],'attributes':_0x5b4f87[_0xad7d('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x56d022){logger['info'](_0xad7d('0x25'),_0x42c515);logger[_0xad7d('0x26')](_0xad7d('0x25'),_0x42c515,JSON[_0xad7d('0x15')](_0x56d022));_0x282b9f(_0x56d022);})['catch'](function(_0x263202){logger[_0xad7d('0x16')]('GetUser',_0x263202[_0xad7d('0x18')],_0x42c515);_0x3fd87a(_0x4b1aa8['error'](0x1f4,_0x263202[_0xad7d('0x18')]));});});};exports[_0xad7d('0x27')]=function(_0x4134f3){var _0x30afa8=this;return new Promise(function(_0x5e83d8,_0x82db15){return db[_0xad7d('0x1c')]['find']({'raw':_0x4134f3['options']?_0x4134f3[_0xad7d('0x1e')][_0xad7d('0x28')]===undefined?!![]:![]:!![],'where':_0x4134f3[_0xad7d('0x1e')]?_0x4134f3[_0xad7d('0x1e')][_0xad7d('0x1f')]||null:null,'attributes':_0x4134f3[_0xad7d('0x1e')]?_0x4134f3[_0xad7d('0x1e')][_0xad7d('0x20')]||null:null,'include':_0x4134f3[_0xad7d('0x1e')]?_0x4134f3['options'][_0xad7d('0x22')]?_['map'](_0x4134f3['options'][_0xad7d('0x22')],function(_0x175006){return{'model':db[_0x175006[_0xad7d('0x24')]],'as':_0x175006['as'],'attributes':_0x175006[_0xad7d('0x20')],'include':_0x175006[_0xad7d('0x22')]?_['map'](_0x175006[_0xad7d('0x22')],function(_0x5970d9){return{'model':db[_0x5970d9[_0xad7d('0x24')]],'as':_0x5970d9['as'],'attributes':_0x5970d9['attributes'],'include':_0x5970d9[_0xad7d('0x22')]?_[_0xad7d('0x23')](_0x5970d9[_0xad7d('0x22')],function(_0x1ab615){return{'model':db[_0x1ab615['model']],'as':_0x1ab615['as'],'attributes':_0x1ab615['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x40066f){logger[_0xad7d('0x12')](_0xad7d('0x27'),_0x4134f3);logger[_0xad7d('0x26')](_0xad7d('0x27'),_0x4134f3,JSON[_0xad7d('0x15')](_0x40066f));_0x5e83d8(_0x40066f);})[_0xad7d('0x1b')](function(_0x1ded70){logger[_0xad7d('0x16')]('ShowUser',_0x1ded70[_0xad7d('0x18')],_0x4134f3);_0x82db15(_0x30afa8['error'](0x1f4,_0x1ded70[_0xad7d('0x18')]));});});};exports[_0xad7d('0x29')]=function(_0x12e60b){var _0x4b5d83=this;return new Promise(function(_0x3c7c45,_0x919b5d){var _0x23d8e3;return db[_0xad7d('0x1c')][_0xad7d('0x2a')]({'where':_0x12e60b[_0xad7d('0x1e')]['where']||{},'attributes':['id','name',_0xad7d('0x2b'),_0xad7d('0x2c'),'interface']})['then'](function(_0x26b841){if(_0x26b841){_0x23d8e3=_0x26b841;return db[_0xad7d('0x2d')][_0xad7d('0x2e')]({'paused':0x1},{'where':{'UserId':_0x23d8e3['id']},'individualHooks':!![]});}})[_0xad7d('0x11')](function(){if(_0x23d8e3){return db[_0xad7d('0x2f')][_0xad7d('0x1d')]({'where':{'membername':_0x23d8e3[_0xad7d('0x30')],'type':_0xad7d('0x31'),'exitAt':null}});}})[_0xad7d('0x11')](function(_0x48a479){if(_0x23d8e3){if(_0x48a479&&_0x48a479[_0xad7d('0x32')]){var _0x1db753=moment()[_0xad7d('0x33')](_0xad7d('0x34'));for(var _0x3a76d4=0x0,_0x2f5158=_0x48a479[_0xad7d('0x32')];_0x3a76d4<_0x2f5158;_0x3a76d4++){_0x48a479[_0x3a76d4][_0xad7d('0x35')]({'exitAt':_0x1db753});}}}})[_0xad7d('0x11')](function(){if(_0x23d8e3){var _0x59fe76=[];var _0x2e18b6=utils['getChannels']();_0x2e18b6['forEach'](function(_0x1a4224){_0x59fe76['push']({'channel':_0x1a4224,'membername':_0x23d8e3[_0xad7d('0x30')],'interface':_[_0xad7d('0x36')](_0x23d8e3[_0xad7d('0x37')])?util[_0xad7d('0x33')]('SIP/%s',_0x23d8e3[_0xad7d('0x30')]):_0x23d8e3['interface'],'type':_0xad7d('0x31'),'enterAt':moment()[_0xad7d('0x33')](_0xad7d('0x34')),'data1':_0x12e60b['body']['type']||_0xad7d('0x38'),'role':_0x23d8e3['role'],'internal':_0x23d8e3[_0xad7d('0x2c')],'uniqueid':_0x12e60b['body'][_0xad7d('0x39')]||null});});return db[_0xad7d('0x2f')][_0xad7d('0x3a')](_0x59fe76,{'individualHooks':!![]});}})[_0xad7d('0x11')](function(){if(_0x23d8e3){return _0x23d8e3[_0xad7d('0x2e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x12e60b['body'][_0xad7d('0x3b')]||_0xad7d('0x38'),'lastPauseAt':moment()[_0xad7d('0x33')](_0xad7d('0x34'))});}})[_0xad7d('0x11')](function(_0x17c4de){_0x3c7c45(_0x17c4de);})[_0xad7d('0x1b')](function(_0x33db4a){_0x919b5d(_0x4b5d83['error'](0x1f4,_0x33db4a[_0xad7d('0x18')]));});});};exports[_0xad7d('0x3c')]=function(_0xb1e2f5){var _0x3d659f=this;return new Promise(function(_0x5ed05f,_0x5c8e71){var _0x1586c4;return db['User']['findOne']({'where':_0xb1e2f5[_0xad7d('0x1e')]['where']||{},'attributes':['id',_0xad7d('0x30')]})['then'](function(_0x3ed643){if(_0x3ed643){_0x1586c4=_0x3ed643;if(_0xb1e2f5[_0xad7d('0x3d')][_0xad7d('0x3e')]&&!utils[_0xad7d('0x3f')](_0xb1e2f5[_0xad7d('0x3d')][_0xad7d('0x3e')])){throw new Error('Unknown\x20channel');}switch(_0xb1e2f5[_0xad7d('0x3d')][_0xad7d('0x3e')]){case'voice':return db[_0xad7d('0x2d')][_0xad7d('0x2e')]({'paused':0x0},{'where':{'UserId':_0x1586c4['id']}})[_0xad7d('0x11')](function(){return db[_0xad7d('0x2f')][_0xad7d('0x2a')]({'where':{'channel':_0xb1e2f5[_0xad7d('0x3d')][_0xad7d('0x3e')],'membername':_0x1586c4['name'],'type':_0xad7d('0x31'),'exitAt':null}});})['then'](function(_0x16451d){if(_0x16451d){return _0x16451d[_0xad7d('0x2e')]({'exitAt':moment()[_0xad7d('0x33')](_0xad7d('0x34')),'data2':_0xad7d('0x40')},{'individualHooks':!![]});}return null;})[_0xad7d('0x11')](function(){return _0x1586c4['update']({'voicePause':![]});});case _0xad7d('0x41'):case _0xad7d('0x42'):case'fax':case'sms':case _0xad7d('0x43'):case'whatsapp':return db['MemberReport'][_0xad7d('0x2a')]({'where':{'channel':_0xb1e2f5['body'][_0xad7d('0x3e')],'membername':_0x1586c4[_0xad7d('0x30')],'type':_0xad7d('0x31'),'exitAt':null}})[_0xad7d('0x11')](function(_0x593690){return _0x593690[_0xad7d('0x2e')]({'exitAt':moment()[_0xad7d('0x33')](_0xad7d('0x34')),'data2':_0xad7d('0x40')},{'individualHooks':!![]});})[_0xad7d('0x11')](function(){var _0x107a36={};_[_0xad7d('0x44')](_0x107a36,util[_0xad7d('0x33')](_0xad7d('0x45'),_0xb1e2f5[_0xad7d('0x3d')][_0xad7d('0x3e')],_0xad7d('0x46')),![]);return _0x1586c4[_0xad7d('0x2e')](_0x107a36);});default:return db['UserVoiceQueueRt'][_0xad7d('0x2e')]({'paused':0x0},{'where':{'UserId':_0x1586c4['id']}})[_0xad7d('0x11')](function(){return db[_0xad7d('0x2f')][_0xad7d('0x1d')]({'where':{'membername':_0x1586c4[_0xad7d('0x30')],'type':_0xad7d('0x31'),'exitAt':null}});})[_0xad7d('0x11')](function(_0x125a47){var _0xc4f881=[];_0x125a47[_0xad7d('0x47')](function(_0x1b65e6){_0xc4f881[_0xad7d('0x48')](_0x1b65e6['update']({'exitAt':moment()[_0xad7d('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xad7d('0x40')}));});return BPromise['all'](_0xc4f881);})['then'](function(){return _0x1586c4['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xad7d('0x11')](function(_0x4b560d){_0x5ed05f(_0x4b560d);})[_0xad7d('0x1b')](function(_0x1bc1fa){_0x5c8e71(_0x3d659f[_0xad7d('0x16')](0x1f4,_0x1bc1fa[_0xad7d('0x18')]));});});};exports['LogoutUser']=function(_0x208b40){var _0x5ca31b=this;return new Promise(function(_0x5b94b9,_0xa35fc4){var _0x302f29;return db[_0xad7d('0x1c')][_0xad7d('0x49')]({'where':_0x208b40['options']['where']||{},'attributes':['id','name']})[_0xad7d('0x11')](function(_0x5f0201){if(_0x5f0201){_0x302f29=_0x5f0201;return db[_0xad7d('0x2d')]['destroy']({'where':{'membername':_0x302f29[_0xad7d('0x30')]},'individualHooks':!![]});}})['then'](function(){if(_0x302f29){return db[_0xad7d('0x2f')][_0xad7d('0x1d')]({'where':{'membername':_0x302f29[_0xad7d('0x30')],'exitAt':null}});}})[_0xad7d('0x11')](function(_0x383c13){if(_0x302f29){if(_0x383c13&&_0x383c13[_0xad7d('0x32')]){var _0x28c9b9=[];_0x383c13['forEach'](function(_0x354879){_0x28c9b9[_0xad7d('0x48')](_0x354879['update']({'exitAt':moment()[_0xad7d('0x33')](_0xad7d('0x34'))}));});return BPromise[_0xad7d('0x4a')](_0x28c9b9);}}})[_0xad7d('0x11')](function(){if(_0x302f29){return _0x302f29[_0xad7d('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xad7d('0x11')](function(_0x58f831){_0x5b94b9(_0x58f831);})[_0xad7d('0x1b')](function(_0x3a1c6b){_0xa35fc4(_0x5ca31b[_0xad7d('0x16')](0x1f4,_0x3a1c6b['message']));});});};exports['LoginUser']=function(_0x18cd87){var _0x1e119a=this;return new Promise(function(_0x766c04,_0x4a3767){var _0x18c88d;var _0xdd90ec;var _0x22511f;var _0x41137d;return db['User'][_0xad7d('0x49')]({'where':_0x18cd87[_0xad7d('0x1e')]['where']||{},'attributes':['id',_0xad7d('0x30'),'role',_0xad7d('0x4b'),_0xad7d('0x4c'),_0xad7d('0x2c'),_0xad7d('0x4d'),_0xad7d('0x37')]})[_0xad7d('0x11')](function(_0x1c8427){if(_0x1c8427){_0x18c88d=_0x1c8427;_0x41137d=_0x18cd87[_0xad7d('0x3d')][_0xad7d('0x37')]?_0x18cd87['body'][_0xad7d('0x37')]:util[_0xad7d('0x33')](_0xad7d('0x4e'),_0x18c88d[_0xad7d('0x30')]);return db['User'][_0xad7d('0x4f')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x18c88d['id']}}});}})['then'](function(_0x5cbc2c){if(_0x5cbc2c){_0x22511f=_0x5cbc2c;return require(_0xad7d('0x50'))[_0xad7d('0x51')]();}})[_0xad7d('0x11')](function(_0x1054bb){if(_0x1054bb&&_0x1054bb[_0xad7d('0x52')]&&_0x22511f>=_0x1054bb[_0xad7d('0x52')]){throw new Error(_0xad7d('0x53'));}})[_0xad7d('0x11')](function(){if(_0x18c88d){return db[_0xad7d('0x2d')][_0xad7d('0x54')]({'where':{'membername':_0x18c88d[_0xad7d('0x30')]},'individualHooks':!![]});}})[_0xad7d('0x11')](function(){if(_0x18c88d){return _0x18c88d[_0xad7d('0x55')]({'raw':!![]});}})[_0xad7d('0x11')](function(_0x41b159){if(_0x18c88d){if(_0x41b159){var _0x29a471=[];_0xdd90ec=_0x41b159;if(_0xdd90ec[_0xad7d('0x32')]){for(var _0x408eb1=0x0;_0x408eb1<_0xdd90ec[_0xad7d('0x32')];_0x408eb1++){_0x29a471[_0xad7d('0x48')](db['UserVoiceQueueRt'][_0xad7d('0x56')]({'membername':_0x18c88d[_0xad7d('0x30')],'UserId':_0x18c88d['id'],'queue_name':_0xdd90ec[_0x408eb1][_0xad7d('0x30')],'VoiceQueueId':_0xdd90ec[_0x408eb1]['id'],'interface':_0x41137d,'paused':_0x18c88d[_0xad7d('0x4d')]||![],'penalty':_0xdd90ec[_0x408eb1][_0xad7d('0x57')]||0x0}));}return BPromise[_0xad7d('0x4a')](_0x29a471);}}}})[_0xad7d('0x11')](function(){if(_0x18c88d){return db[_0xad7d('0x2f')]['findAll']({'where':{'membername':_0x18c88d[_0xad7d('0x30')],'exitAt':null}});}})[_0xad7d('0x11')](function(_0xab4f3e){if(_0x18c88d){if(_0xab4f3e&&_0xab4f3e[_0xad7d('0x32')]){var _0x2718b5=[];_0xab4f3e[_0xad7d('0x47')](function(_0x4acb8b){_0x2718b5[_0xad7d('0x48')](_0x4acb8b[_0xad7d('0x2e')]({'exitAt':moment()['format'](_0xad7d('0x34'))}));});return BPromise[_0xad7d('0x4a')](_0x2718b5);}}})['then'](function(_0x3ff540){if(_0x18c88d){var _0x43a80d=[];var _0x462f0=[];var _0x2c1f20=utils['getChannels']();var _0x334d38={'membername':_0x18c88d[_0xad7d('0x30')],'interface':_0x41137d,'enterAt':moment()[_0xad7d('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x18c88d[_0xad7d('0x2b')],'internal':_0x18c88d[_0xad7d('0x2c')]};_0x2c1f20[_0xad7d('0x47')](function(_0x3e0e30){_0x43a80d[_0xad7d('0x48')](_[_0xad7d('0x58')]({'channel':_0x3e0e30,'type':'LOGIN','data1':_0xad7d('0x59'),'data2':_0x41137d},_0x334d38));if(_0x18c88d['loginInPause']){_0x462f0['push'](_['merge']({'channel':_0x3e0e30,'type':_0xad7d('0x31'),'data1':_0xad7d('0x5a')},_0x334d38));}});return db[_0xad7d('0x2f')][_0xad7d('0x3a')](_0x43a80d[_0xad7d('0x5b')](_0x462f0),{'individualHooks':!![]});}})[_0xad7d('0x11')](function(){if(_0x18c88d){return _0x18c88d[_0xad7d('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xad7d('0x33')](_0xad7d('0x34')),'voicePause':_0x18c88d[_0xad7d('0x4d')]||![],'mailPause':_0x18c88d[_0xad7d('0x4d')]||![],'chatPause':_0x18c88d[_0xad7d('0x4d')]||![],'faxPause':_0x18c88d['loginInPause']||![],'smsPause':_0x18c88d[_0xad7d('0x4d')]||![],'openchannelPause':_0x18c88d[_0xad7d('0x4d')]||![],'pauseType':_0x18c88d[_0xad7d('0x4d')]?_0xad7d('0x5a'):null,'lastPauseAt':moment()[_0xad7d('0x33')](_0xad7d('0x34')),'interface':_0x41137d});}})[_0xad7d('0x11')](function(_0x2422f3){_0x766c04(_0x2422f3);})[_0xad7d('0x1b')](function(_0x290fed){_0x4a3767(_0x1e119a[_0xad7d('0x16')](0x1f4,_0x290fed[_0xad7d('0x18')]));});});};