a3ad265256debb820165d87bef8f1eb616b38e78
[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 _0x31f3=['name','internal','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','isNil','interface','type','DEFAULT\x20PAUSE','role','body','uniqueid','bulkCreate','catch','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','online','voicePause','mailPause','chatPause','openchannelPause','smsPause','whatsappPause','lastPauseAt','system','LogoutUser','findOne','destroy','push','all','LoginUser','mobile','phone','SIP/%s','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','loginInPause','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','../../config/logger','rpc','redis','socket.io-emitter','./user.socket','register','GetUser','User','findAll','options','raw','where','limit','map','model','include','attributes','then','stringify','error','message','ShowUser','PauseUser'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x31f3,0x17f));var _0x331f=function(_0x435150,_0x591cd9){_0x435150=_0x435150-0x0;var _0x13b3a4=_0x31f3[_0x435150];return _0x13b3a4;};'use strict';var _=require(_0x331f('0x0'));var util=require(_0x331f('0x1'));var moment=require(_0x331f('0x2'));var BPromise=require(_0x331f('0x3'));var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x331f('0x4'))(_0x331f('0x5'));var config=require('../../config/environment');config['redis']=_['defaults'](config[_0x331f('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x331f('0x7'))(new Redis(config[_0x331f('0x6')]));require(_0x331f('0x8'))[_0x331f('0x9')](socket);exports[_0x331f('0xa')]=function(_0x21a4b8){var _0x5003b3=this;return new Promise(function(_0x40e258,_0x570e54){return db[_0x331f('0xb')][_0x331f('0xc')]({'raw':_0x21a4b8[_0x331f('0xd')]?_0x21a4b8['options'][_0x331f('0xe')]===undefined?!![]:![]:!![],'where':_0x21a4b8[_0x331f('0xd')]?_0x21a4b8[_0x331f('0xd')][_0x331f('0xf')]||null:null,'attributes':_0x21a4b8[_0x331f('0xd')]?_0x21a4b8[_0x331f('0xd')]['attributes']||null:null,'limit':_0x21a4b8[_0x331f('0xd')]?_0x21a4b8[_0x331f('0xd')][_0x331f('0x10')]||null:null,'include':_0x21a4b8[_0x331f('0xd')]?_0x21a4b8['options']['include']?_[_0x331f('0x11')](_0x21a4b8[_0x331f('0xd')]['include'],function(_0x15b045){return{'model':db[_0x15b045[_0x331f('0x12')]],'as':_0x15b045['as'],'attributes':_0x15b045['attributes'],'include':_0x15b045[_0x331f('0x13')]?_[_0x331f('0x11')](_0x15b045[_0x331f('0x13')],function(_0xf9c931){return{'model':db[_0xf9c931[_0x331f('0x12')]],'as':_0xf9c931['as'],'attributes':_0xf9c931[_0x331f('0x14')],'include':_0xf9c931['include']?_[_0x331f('0x11')](_0xf9c931[_0x331f('0x13')],function(_0x5d851b){return{'model':db[_0x5d851b['model']],'as':_0x5d851b['as'],'attributes':_0x5d851b[_0x331f('0x14')]};}):[]};}):[]};}):[]:[]})[_0x331f('0x15')](function(_0x3b6dd4){logger['info'](_0x331f('0xa'),_0x21a4b8);logger['debug'](_0x331f('0xa'),_0x21a4b8,JSON[_0x331f('0x16')](_0x3b6dd4));_0x40e258(_0x3b6dd4);})['catch'](function(_0x564820){logger[_0x331f('0x17')]('GetUser',_0x564820[_0x331f('0x18')],_0x21a4b8);_0x570e54(_0x5003b3[_0x331f('0x17')](0x1f4,_0x564820[_0x331f('0x18')]));});});};exports[_0x331f('0x19')]=function(_0x14f5e5){var _0x8d4d2e=this;return new Promise(function(_0x426969,_0x238964){return db[_0x331f('0xb')]['find']({'raw':_0x14f5e5[_0x331f('0xd')]?_0x14f5e5[_0x331f('0xd')][_0x331f('0xe')]===undefined?!![]:![]:!![],'where':_0x14f5e5[_0x331f('0xd')]?_0x14f5e5[_0x331f('0xd')]['where']||null:null,'attributes':_0x14f5e5[_0x331f('0xd')]?_0x14f5e5['options'][_0x331f('0x14')]||null:null,'include':_0x14f5e5[_0x331f('0xd')]?_0x14f5e5[_0x331f('0xd')]['include']?_['map'](_0x14f5e5[_0x331f('0xd')][_0x331f('0x13')],function(_0x27dc37){return{'model':db[_0x27dc37[_0x331f('0x12')]],'as':_0x27dc37['as'],'attributes':_0x27dc37[_0x331f('0x14')],'include':_0x27dc37[_0x331f('0x13')]?_[_0x331f('0x11')](_0x27dc37[_0x331f('0x13')],function(_0x5a2db9){return{'model':db[_0x5a2db9[_0x331f('0x12')]],'as':_0x5a2db9['as'],'attributes':_0x5a2db9['attributes'],'include':_0x5a2db9['include']?_[_0x331f('0x11')](_0x5a2db9[_0x331f('0x13')],function(_0x32ed4e){return{'model':db[_0x32ed4e[_0x331f('0x12')]],'as':_0x32ed4e['as'],'attributes':_0x32ed4e[_0x331f('0x14')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x48abd6){logger['info'](_0x331f('0x19'),_0x14f5e5);logger['debug'](_0x331f('0x19'),_0x14f5e5,JSON['stringify'](_0x48abd6));_0x426969(_0x48abd6);})['catch'](function(_0x5aaabe){logger['error'](_0x331f('0x19'),_0x5aaabe['message'],_0x14f5e5);_0x238964(_0x8d4d2e[_0x331f('0x17')](0x1f4,_0x5aaabe['message']));});});};exports[_0x331f('0x1a')]=function(_0x140da9){var _0x5728bc;return db[_0x331f('0xb')]['find']({'where':_0x140da9[_0x331f('0xd')][_0x331f('0xf')]||{},'attributes':['id',_0x331f('0x1b'),'role',_0x331f('0x1c'),'interface']})[_0x331f('0x15')](function(_0x3b9420){if(!_0x3b9420){throw new Error(util[_0x331f('0x1d')](_0x331f('0x1e'),_0x140da9[_0x331f('0x1f')]['id']));}_0x5728bc=_0x3b9420;return db[_0x331f('0x20')][_0x331f('0x21')]({'paused':0x1},{'where':{'UserId':_0x5728bc['id']},'individualHooks':!![]});})[_0x331f('0x15')](function(){return db[_0x331f('0x22')][_0x331f('0xc')]({'where':{'membername':_0x5728bc[_0x331f('0x1b')],'type':_0x331f('0x23'),'exitAt':null}});})[_0x331f('0x15')](function(_0x31b3fd){if(_0x31b3fd&&_0x31b3fd[_0x331f('0x24')]){var _0x26dae9=moment()[_0x331f('0x1d')](_0x331f('0x25'));for(var _0xe79bf6=0x0,_0x30db78=_0x31b3fd[_0x331f('0x24')];_0xe79bf6<_0x30db78;_0xe79bf6++){_0x31b3fd[_0xe79bf6]['updateAttributes']({'exitAt':_0x26dae9});}}})[_0x331f('0x15')](function(){var _0x4366cf=[];var _0x2ca2dc=utils[_0x331f('0x26')]();_0x2ca2dc[_0x331f('0x27')](function(_0x32897a){_0x4366cf['push']({'channel':_0x32897a,'membername':_0x5728bc[_0x331f('0x1b')],'interface':_[_0x331f('0x28')](_0x5728bc['interface'])?util[_0x331f('0x1d')]('SIP/%s',_0x5728bc[_0x331f('0x1b')]):_0x5728bc[_0x331f('0x29')],'type':'PAUSE','enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x140da9['body'][_0x331f('0x2a')]||_0x331f('0x2b'),'role':_0x5728bc[_0x331f('0x2c')],'internal':_0x5728bc[_0x331f('0x1c')],'uniqueid':_0x140da9[_0x331f('0x2d')][_0x331f('0x2e')]||null});});return db[_0x331f('0x22')][_0x331f('0x2f')](_0x4366cf,{'individualHooks':!![]});})[_0x331f('0x15')](function(){return _0x5728bc['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x140da9[_0x331f('0x2d')][_0x331f('0x2a')]||_0x331f('0x2b'),'lastPauseAt':moment()['format'](_0x331f('0x25'))});})[_0x331f('0x30')](function(_0x16d766){throw _0x16d766;});};exports['UnpauseUser']=function(_0x3bbdc8){return Promise['resolve']()['then'](function(){if(_0x3bbdc8[_0x331f('0x2d')][_0x331f('0x31')]&&!utils[_0x331f('0x32')](_0x3bbdc8['body']['channel'])){throw new Error(util['format'](_0x331f('0x33'),_0x3bbdc8[_0x331f('0x2d')]['channel']));}return db['User']['findOne']({'where':_0x3bbdc8[_0x331f('0xd')][_0x331f('0xf')]||{},'attributes':['id','name',_0x331f('0x2c'),'internal',_0x331f('0x29'),_0x331f('0x34'),_0x331f('0x35'),_0x331f('0x36'),_0x331f('0x37'),'faxPause',_0x331f('0x38'),_0x331f('0x39'),_0x331f('0x3a'),'pauseType',_0x331f('0x3b')]});})[_0x331f('0x15')](function(_0x2bbbb0){if(!_0x2bbbb0){throw new Error(util[_0x331f('0x1d')](_0x331f('0x1e'),_0x3bbdc8[_0x331f('0x1f')]['id']));}return _0x2bbbb0['unpause'](_0x3bbdc8['body'][_0x331f('0x31')],_0x331f('0x3c'));})[_0x331f('0x30')](function(_0x1f4c67){throw _0x1f4c67;});};exports[_0x331f('0x3d')]=function(_0x36ef5){var _0x58ecdd=this;return new Promise(function(_0x4d5f5b,_0xf29f85){var _0x262329;return db['User'][_0x331f('0x3e')]({'where':_0x36ef5[_0x331f('0xd')]['where']||{},'attributes':['id','name']})[_0x331f('0x15')](function(_0x38e0e2){if(_0x38e0e2){_0x262329=_0x38e0e2;return db[_0x331f('0x20')][_0x331f('0x3f')]({'where':{'membername':_0x262329[_0x331f('0x1b')]},'individualHooks':!![]});}})[_0x331f('0x15')](function(){if(_0x262329){return db['MemberReport']['findAll']({'where':{'membername':_0x262329[_0x331f('0x1b')],'exitAt':null}});}})[_0x331f('0x15')](function(_0x19ae39){if(_0x262329){if(_0x19ae39&&_0x19ae39[_0x331f('0x24')]){var _0x2576f9=[];_0x19ae39[_0x331f('0x27')](function(_0x3405fc){_0x2576f9[_0x331f('0x40')](_0x3405fc[_0x331f('0x21')]({'exitAt':moment()[_0x331f('0x1d')](_0x331f('0x25'))}));});return BPromise[_0x331f('0x41')](_0x2576f9);}}})[_0x331f('0x15')](function(){if(_0x262329){return _0x262329[_0x331f('0x21')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x331f('0x15')](function(_0x83b643){_0x4d5f5b(_0x83b643);})[_0x331f('0x30')](function(_0x4e01c5){_0xf29f85(_0x58ecdd['error'](0x1f4,_0x4e01c5[_0x331f('0x18')]));});});};exports[_0x331f('0x42')]=function(_0x3ebaee){var _0x389545=this;return new Promise(function(_0x3104a9,_0x5e1bd2){var _0x361c56;var _0x1e65aa;var _0x38482d;var _0x516655;return db[_0x331f('0xb')][_0x331f('0x3e')]({'where':_0x3ebaee[_0x331f('0xd')][_0x331f('0xf')]||{},'attributes':['id',_0x331f('0x1b'),_0x331f('0x2c'),_0x331f('0x43'),_0x331f('0x44'),_0x331f('0x1c'),'loginInPause','interface']})[_0x331f('0x15')](function(_0x2734da){if(_0x2734da){_0x361c56=_0x2734da;_0x516655=_0x3ebaee[_0x331f('0x2d')][_0x331f('0x29')]?_0x3ebaee[_0x331f('0x2d')][_0x331f('0x29')]:util[_0x331f('0x1d')](_0x331f('0x45'),_0x361c56['name']);return db[_0x331f('0xb')][_0x331f('0x46')]({'where':{'role':_0x331f('0x47'),'online':!![],'id':{'$ne':_0x361c56['id']}}});}})['then'](function(_0x3056e3){if(_0x3056e3){_0x38482d=_0x3056e3;return require('../../config/license/util')[_0x331f('0x48')]();}})['then'](function(_0x79aff){if(_0x79aff&&_0x79aff[_0x331f('0x49')]&&_0x38482d>=_0x79aff['agents']){throw new Error(_0x331f('0x4a'));}})[_0x331f('0x15')](function(){if(_0x361c56){return db['UserVoiceQueueRt'][_0x331f('0x3f')]({'where':{'membername':_0x361c56[_0x331f('0x1b')]},'individualHooks':!![]});}})[_0x331f('0x15')](function(){if(_0x361c56){return _0x361c56['getVoiceQueues']({'raw':!![]});}})[_0x331f('0x15')](function(_0x34ebac){if(_0x361c56){if(_0x34ebac){var _0x5a55a1=[];_0x1e65aa=_0x34ebac;if(_0x1e65aa[_0x331f('0x24')]){for(var _0x56ee0a=0x0;_0x56ee0a<_0x1e65aa[_0x331f('0x24')];_0x56ee0a++){_0x5a55a1[_0x331f('0x40')](db[_0x331f('0x20')][_0x331f('0x4b')]({'membername':_0x361c56[_0x331f('0x1b')],'UserId':_0x361c56['id'],'queue_name':_0x1e65aa[_0x56ee0a][_0x331f('0x1b')],'VoiceQueueId':_0x1e65aa[_0x56ee0a]['id'],'interface':_0x516655,'paused':_0x361c56[_0x331f('0x4c')]||![],'penalty':_0x1e65aa[_0x56ee0a]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x331f('0x41')](_0x5a55a1);}}}})[_0x331f('0x15')](function(){if(_0x361c56){return db['MemberReport']['findAll']({'where':{'membername':_0x361c56[_0x331f('0x1b')],'exitAt':null}});}})[_0x331f('0x15')](function(_0x1ee3e0){if(_0x361c56){if(_0x1ee3e0&&_0x1ee3e0[_0x331f('0x24')]){var _0x122dc3=[];_0x1ee3e0['forEach'](function(_0x4eeb9d){_0x122dc3[_0x331f('0x40')](_0x4eeb9d['update']({'exitAt':moment()['format'](_0x331f('0x25'))}));});return BPromise[_0x331f('0x41')](_0x122dc3);}}})[_0x331f('0x15')](function(){if(_0x361c56){var _0x372d0a=[];var _0x1cc29a=[];var _0x409d16=utils[_0x331f('0x26')]();var _0x49fc3c={'membername':_0x361c56['name'],'interface':_0x516655,'enterAt':moment()[_0x331f('0x1d')](_0x331f('0x25')),'role':_0x361c56[_0x331f('0x2c')],'internal':_0x361c56[_0x331f('0x1c')]};_0x409d16[_0x331f('0x27')](function(_0x3d13bb){_0x372d0a['push'](_[_0x331f('0x4d')]({'channel':_0x3d13bb,'type':_0x331f('0x4e'),'data1':_0x331f('0x4f'),'data2':_0x516655},_0x49fc3c));if(_0x361c56['loginInPause']){_0x1cc29a[_0x331f('0x40')](_[_0x331f('0x4d')]({'channel':_0x3d13bb,'type':_0x331f('0x23'),'data1':_0x331f('0x50')},_0x49fc3c));}});return db[_0x331f('0x22')][_0x331f('0x2f')](_0x372d0a[_0x331f('0x51')](_0x1cc29a),{'individualHooks':!![]});}})[_0x331f('0x15')](function(){if(_0x361c56){return _0x361c56[_0x331f('0x21')]({'online':!![],'lastLoginAt':moment()[_0x331f('0x1d')](_0x331f('0x25')),'voicePause':_0x361c56[_0x331f('0x4c')]||![],'mailPause':_0x361c56['loginInPause']||![],'chatPause':_0x361c56[_0x331f('0x4c')]||![],'faxPause':_0x361c56[_0x331f('0x4c')]||![],'smsPause':_0x361c56[_0x331f('0x4c')]||![],'openchannelPause':_0x361c56['loginInPause']||![],'pauseType':_0x361c56[_0x331f('0x4c')]?_0x331f('0x50'):null,'lastPauseAt':moment()[_0x331f('0x1d')](_0x331f('0x25')),'interface':_0x516655});}})[_0x331f('0x15')](function(_0x31c7e6){_0x3104a9(_0x31c7e6);})[_0x331f('0x30')](function(_0x57715b){_0x5e1bd2(_0x389545[_0x331f('0x17')](0x1f4,_0x57715b[_0x331f('0x18')]));});});};