62d1b8e595994bc8e5246e6d80e434004456e343
[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 _0x839e=['LoginUser','mobile','loginInPause','count','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','UserVoiceQueue.penalty','all','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','localhost','socket.io-emitter','./user.socket','register','GetUser','User','findAll','options','raw','attributes','limit','include','map','model','then','info','stringify','error','message','ShowUser','where','debug','find','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','PAUSE','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','catch','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','lastPauseAt','findOne','destroy','length','push'];(function(_0x20bf3a,_0x5f05c0){var _0x3c8cbb=function(_0x260acd){while(--_0x260acd){_0x20bf3a['push'](_0x20bf3a['shift']());}};_0x3c8cbb(++_0x5f05c0);}(_0x839e,0x114));var _0xe839=function(_0x48fb10,_0xa50a89){_0x48fb10=_0x48fb10-0x0;var _0x534251=_0x839e[_0x48fb10];return _0x534251;};'use strict';var _=require(_0xe839('0x0'));var util=require(_0xe839('0x1'));var moment=require(_0xe839('0x2'));var BPromise=require(_0xe839('0x3'));var Redis=require('ioredis');var db=require(_0xe839('0x4'))['db'];var utils=require(_0xe839('0x5'));var logger=require(_0xe839('0x6'))(_0xe839('0x7'));var config=require(_0xe839('0x8'));config[_0xe839('0x9')]=_['defaults'](config[_0xe839('0x9')],{'host':_0xe839('0xa'),'port':0x18eb});var socket=require(_0xe839('0xb'))(new Redis(config[_0xe839('0x9')]));require(_0xe839('0xc'))[_0xe839('0xd')](socket);exports[_0xe839('0xe')]=function(_0x50f02e){var _0x44f731=this;return new Promise(function(_0x190a26,_0x421f6b){return db[_0xe839('0xf')][_0xe839('0x10')]({'raw':_0x50f02e[_0xe839('0x11')]?_0x50f02e[_0xe839('0x11')][_0xe839('0x12')]===undefined?!![]:![]:!![],'where':_0x50f02e['options']?_0x50f02e[_0xe839('0x11')]['where']||null:null,'attributes':_0x50f02e[_0xe839('0x11')]?_0x50f02e[_0xe839('0x11')][_0xe839('0x13')]||null:null,'limit':_0x50f02e[_0xe839('0x11')]?_0x50f02e[_0xe839('0x11')][_0xe839('0x14')]||null:null,'include':_0x50f02e[_0xe839('0x11')]?_0x50f02e[_0xe839('0x11')][_0xe839('0x15')]?_[_0xe839('0x16')](_0x50f02e['options'][_0xe839('0x15')],function(_0x1b27a6){return{'model':db[_0x1b27a6[_0xe839('0x17')]],'as':_0x1b27a6['as'],'attributes':_0x1b27a6[_0xe839('0x13')],'include':_0x1b27a6[_0xe839('0x15')]?_[_0xe839('0x16')](_0x1b27a6[_0xe839('0x15')],function(_0x2dff1b){return{'model':db[_0x2dff1b[_0xe839('0x17')]],'as':_0x2dff1b['as'],'attributes':_0x2dff1b[_0xe839('0x13')],'include':_0x2dff1b[_0xe839('0x15')]?_[_0xe839('0x16')](_0x2dff1b[_0xe839('0x15')],function(_0x2ac53b){return{'model':db[_0x2ac53b[_0xe839('0x17')]],'as':_0x2ac53b['as'],'attributes':_0x2ac53b[_0xe839('0x13')]};}):[]};}):[]};}):[]:[]})[_0xe839('0x18')](function(_0x55a120){logger[_0xe839('0x19')](_0xe839('0xe'),_0x50f02e);logger['debug'](_0xe839('0xe'),_0x50f02e,JSON[_0xe839('0x1a')](_0x55a120));_0x190a26(_0x55a120);})['catch'](function(_0x438b27){logger[_0xe839('0x1b')](_0xe839('0xe'),_0x438b27[_0xe839('0x1c')],_0x50f02e);_0x421f6b(_0x44f731[_0xe839('0x1b')](0x1f4,_0x438b27[_0xe839('0x1c')]));});});};exports[_0xe839('0x1d')]=function(_0x2832cf){var _0x39097d=this;return new Promise(function(_0x1ead0f,_0x491c8b){return db[_0xe839('0xf')]['find']({'raw':_0x2832cf['options']?_0x2832cf[_0xe839('0x11')]['raw']===undefined?!![]:![]:!![],'where':_0x2832cf[_0xe839('0x11')]?_0x2832cf[_0xe839('0x11')][_0xe839('0x1e')]||null:null,'attributes':_0x2832cf['options']?_0x2832cf['options']['attributes']||null:null,'include':_0x2832cf[_0xe839('0x11')]?_0x2832cf[_0xe839('0x11')]['include']?_['map'](_0x2832cf['options'][_0xe839('0x15')],function(_0x3b00be){return{'model':db[_0x3b00be[_0xe839('0x17')]],'as':_0x3b00be['as'],'attributes':_0x3b00be[_0xe839('0x13')],'include':_0x3b00be[_0xe839('0x15')]?_[_0xe839('0x16')](_0x3b00be[_0xe839('0x15')],function(_0x3e4b4f){return{'model':db[_0x3e4b4f[_0xe839('0x17')]],'as':_0x3e4b4f['as'],'attributes':_0x3e4b4f[_0xe839('0x13')],'include':_0x3e4b4f[_0xe839('0x15')]?_[_0xe839('0x16')](_0x3e4b4f[_0xe839('0x15')],function(_0x58c9c6){return{'model':db[_0x58c9c6[_0xe839('0x17')]],'as':_0x58c9c6['as'],'attributes':_0x58c9c6[_0xe839('0x13')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c1cc9){logger[_0xe839('0x19')](_0xe839('0x1d'),_0x2832cf);logger[_0xe839('0x1f')](_0xe839('0x1d'),_0x2832cf,JSON[_0xe839('0x1a')](_0x1c1cc9));_0x1ead0f(_0x1c1cc9);})['catch'](function(_0x1e2fa0){logger[_0xe839('0x1b')](_0xe839('0x1d'),_0x1e2fa0[_0xe839('0x1c')],_0x2832cf);_0x491c8b(_0x39097d['error'](0x1f4,_0x1e2fa0[_0xe839('0x1c')]));});});};exports['PauseUser']=function(_0x13c214){var _0x166027;return db[_0xe839('0xf')][_0xe839('0x20')]({'where':_0x13c214[_0xe839('0x11')][_0xe839('0x1e')]||{},'attributes':['id',_0xe839('0x21'),_0xe839('0x22'),_0xe839('0x23'),_0xe839('0x24')]})[_0xe839('0x18')](function(_0x19b6f1){if(!_0x19b6f1){throw new Error(util[_0xe839('0x25')](_0xe839('0x26'),_0x13c214[_0xe839('0x27')]['id']));}_0x166027=_0x19b6f1;return db[_0xe839('0x28')][_0xe839('0x29')]({'paused':0x1},{'where':{'UserId':_0x166027['id']},'individualHooks':!![]});})[_0xe839('0x18')](function(){return db[_0xe839('0x2a')]['findAll']({'where':{'membername':_0x166027[_0xe839('0x21')],'type':_0xe839('0x2b'),'exitAt':null}});})['then'](function(_0x5c2b3b){if(_0x5c2b3b&&_0x5c2b3b['length']){var _0x8d8f4f=moment()[_0xe839('0x25')](_0xe839('0x2c'));for(var _0x482f22=0x0,_0xab945a=_0x5c2b3b['length'];_0x482f22<_0xab945a;_0x482f22++){_0x5c2b3b[_0x482f22][_0xe839('0x2d')]({'exitAt':_0x8d8f4f});}}})[_0xe839('0x18')](function(){var _0x5b2e45=[];var _0x3d736a=utils[_0xe839('0x2e')]();_0x3d736a[_0xe839('0x2f')](function(_0x4f1c14){_0x5b2e45['push']({'channel':_0x4f1c14,'membername':_0x166027[_0xe839('0x21')],'interface':_[_0xe839('0x30')](_0x166027['interface'])?util[_0xe839('0x25')]('SIP/%s',_0x166027[_0xe839('0x21')]):_0x166027[_0xe839('0x24')],'type':_0xe839('0x2b'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x13c214[_0xe839('0x31')][_0xe839('0x32')]||_0xe839('0x33'),'role':_0x166027[_0xe839('0x22')],'internal':_0x166027[_0xe839('0x23')],'uniqueid':_0x13c214[_0xe839('0x31')][_0xe839('0x34')]||null});});return db[_0xe839('0x2a')][_0xe839('0x35')](_0x5b2e45,{'individualHooks':!![]});})[_0xe839('0x18')](function(){return _0x166027['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x13c214[_0xe839('0x31')][_0xe839('0x32')]||_0xe839('0x33'),'lastPauseAt':moment()[_0xe839('0x25')](_0xe839('0x2c'))});})[_0xe839('0x36')](function(_0x39a535){throw _0x39a535;});};exports['UnpauseUser']=function(_0x60ab04){return Promise[_0xe839('0x37')]()[_0xe839('0x18')](function(){if(_0x60ab04[_0xe839('0x31')][_0xe839('0x38')]&&!utils[_0xe839('0x39')](_0x60ab04['body'][_0xe839('0x38')])){throw new Error(util[_0xe839('0x25')](_0xe839('0x3a'),_0x60ab04[_0xe839('0x31')][_0xe839('0x38')]));}return db[_0xe839('0xf')]['findOne']({'where':_0x60ab04['options']['where']||{},'attributes':['id',_0xe839('0x21'),'role',_0xe839('0x23'),_0xe839('0x24'),_0xe839('0x3b'),_0xe839('0x3c'),_0xe839('0x3d'),_0xe839('0x3e'),_0xe839('0x3f'),_0xe839('0x40'),_0xe839('0x41'),_0xe839('0x42'),'pauseType',_0xe839('0x43')]});})[_0xe839('0x18')](function(_0x5d4693){if(!_0x5d4693){throw new Error(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x60ab04[_0xe839('0x27')]['id']));}return _0x5d4693['unpause'](_0x60ab04[_0xe839('0x31')][_0xe839('0x38')],'system');})[_0xe839('0x36')](function(_0x1cb9ed){throw _0x1cb9ed;});};exports['LogoutUser']=function(_0x4b17a8){var _0x4a4e95=this;return new Promise(function(_0x48a0c4,_0x2cb82a){var _0xe72a45;return db['User'][_0xe839('0x44')]({'where':_0x4b17a8[_0xe839('0x11')][_0xe839('0x1e')]||{},'attributes':['id','name']})['then'](function(_0x16da80){if(_0x16da80){_0xe72a45=_0x16da80;return db['UserVoiceQueueRt'][_0xe839('0x45')]({'where':{'membername':_0xe72a45[_0xe839('0x21')]},'individualHooks':!![]});}})[_0xe839('0x18')](function(){if(_0xe72a45){return db[_0xe839('0x2a')][_0xe839('0x10')]({'where':{'membername':_0xe72a45[_0xe839('0x21')],'exitAt':null}});}})[_0xe839('0x18')](function(_0x228988){if(_0xe72a45){if(_0x228988&&_0x228988[_0xe839('0x46')]){var _0x58aba4=[];_0x228988[_0xe839('0x2f')](function(_0x19c8b8){_0x58aba4[_0xe839('0x47')](_0x19c8b8[_0xe839('0x29')]({'exitAt':moment()[_0xe839('0x25')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x58aba4);}}})[_0xe839('0x18')](function(){if(_0xe72a45){return _0xe72a45[_0xe839('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xe839('0x18')](function(_0x39fb0a){_0x48a0c4(_0x39fb0a);})[_0xe839('0x36')](function(_0x30546d){_0x2cb82a(_0x4a4e95[_0xe839('0x1b')](0x1f4,_0x30546d[_0xe839('0x1c')]));});});};exports[_0xe839('0x48')]=function(_0x21a586){var _0x1c4c51=this;return new Promise(function(_0x1a5846,_0x42687b){var _0x302697;var _0x78321d;var _0x4ce4b2;var _0x2a5f1c;return db[_0xe839('0xf')][_0xe839('0x44')]({'where':_0x21a586[_0xe839('0x11')][_0xe839('0x1e')]||{},'attributes':['id',_0xe839('0x21'),_0xe839('0x22'),_0xe839('0x49'),'phone','internal',_0xe839('0x4a'),'interface']})[_0xe839('0x18')](function(_0x504ac7){if(_0x504ac7){_0x302697=_0x504ac7;_0x2a5f1c=_0x21a586[_0xe839('0x31')][_0xe839('0x24')]?_0x21a586['body'][_0xe839('0x24')]:util[_0xe839('0x25')]('SIP/%s',_0x302697[_0xe839('0x21')]);return db[_0xe839('0xf')][_0xe839('0x4b')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x302697['id']}}});}})[_0xe839('0x18')](function(_0x3b9aa6){if(_0x3b9aa6){_0x4ce4b2=_0x3b9aa6;return require('../../config/license/util')[_0xe839('0x4c')]();}})[_0xe839('0x18')](function(_0x539c86){if(_0x539c86&&_0x539c86['agents']&&_0x4ce4b2>=_0x539c86[_0xe839('0x4d')]){throw new Error(_0xe839('0x4e'));}})[_0xe839('0x18')](function(){if(_0x302697){return db[_0xe839('0x28')][_0xe839('0x45')]({'where':{'membername':_0x302697[_0xe839('0x21')]},'individualHooks':!![]});}})[_0xe839('0x18')](function(){if(_0x302697){return _0x302697[_0xe839('0x4f')]({'raw':!![]});}})[_0xe839('0x18')](function(_0x301471){if(_0x302697){if(_0x301471){var _0x245fb5=[];_0x78321d=_0x301471;if(_0x78321d[_0xe839('0x46')]){for(var _0x4e7790=0x0;_0x4e7790<_0x78321d[_0xe839('0x46')];_0x4e7790++){_0x245fb5['push'](db[_0xe839('0x28')]['upsert']({'membername':_0x302697[_0xe839('0x21')],'UserId':_0x302697['id'],'queue_name':_0x78321d[_0x4e7790][_0xe839('0x21')],'VoiceQueueId':_0x78321d[_0x4e7790]['id'],'interface':_0x2a5f1c,'paused':_0x302697[_0xe839('0x4a')]||![],'penalty':_0x78321d[_0x4e7790][_0xe839('0x50')]||0x0}));}return BPromise['all'](_0x245fb5);}}}})['then'](function(){if(_0x302697){return db[_0xe839('0x2a')]['findAll']({'where':{'membername':_0x302697['name'],'exitAt':null}});}})['then'](function(_0x369288){if(_0x302697){if(_0x369288&&_0x369288[_0xe839('0x46')]){var _0x434967=[];_0x369288[_0xe839('0x2f')](function(_0x2b81a4){_0x434967[_0xe839('0x47')](_0x2b81a4[_0xe839('0x29')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe839('0x51')](_0x434967);}}})['then'](function(){if(_0x302697){var _0x3c980f=[];var _0x174ea5=[];var _0x1709f0=utils[_0xe839('0x2e')]();var _0x134b62={'membername':_0x302697[_0xe839('0x21')],'interface':_0x2a5f1c,'enterAt':moment()['format'](_0xe839('0x2c')),'role':_0x302697[_0xe839('0x22')],'internal':_0x302697[_0xe839('0x23')]};_0x1709f0['forEach'](function(_0x3da657){_0x3c980f[_0xe839('0x47')](_[_0xe839('0x52')]({'channel':_0x3da657,'type':_0xe839('0x53'),'data1':_0xe839('0x54'),'data2':_0x2a5f1c},_0x134b62));if(_0x302697['loginInPause']){_0x174ea5['push'](_[_0xe839('0x52')]({'channel':_0x3da657,'type':_0xe839('0x2b'),'data1':_0xe839('0x55')},_0x134b62));}});return db['MemberReport'][_0xe839('0x35')](_0x3c980f[_0xe839('0x56')](_0x174ea5),{'individualHooks':!![]});}})[_0xe839('0x18')](function(){if(_0x302697){return _0x302697[_0xe839('0x29')]({'online':!![],'lastLoginAt':moment()[_0xe839('0x25')](_0xe839('0x2c')),'voicePause':_0x302697[_0xe839('0x4a')]||![],'mailPause':_0x302697[_0xe839('0x4a')]||![],'chatPause':_0x302697[_0xe839('0x4a')]||![],'faxPause':_0x302697[_0xe839('0x4a')]||![],'smsPause':_0x302697[_0xe839('0x4a')]||![],'openchannelPause':_0x302697[_0xe839('0x4a')]||![],'pauseType':_0x302697[_0xe839('0x4a')]?_0xe839('0x55'):null,'lastPauseAt':moment()[_0xe839('0x25')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x2a5f1c});}})['then'](function(_0xc7b598){_0x1a5846(_0xc7b598);})[_0xe839('0x36')](function(_0x355f4e){_0x42687b(_0x1c4c51[_0xe839('0x1b')](0x1f4,_0x355f4e[_0xe839('0x1c')]));});});};