Built motion from commit 9d0783e6.|2.6.13
[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 _0xe882=['lastPauseAt','unpause','system','LogoutUser','forEach','all','LoginUser','User','mobile','phone','loginInPause','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','getChannels','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','socket.io-emitter','./user.socket','register','GetUser','findAll','options','raw','attributes','limit','include','model','map','then','debug','error','message','ShowUser','find','where','info','stringify','catch','name','role','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','SIP/%s','PAUSE','body','type','internal','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause'];(function(_0xcd4d13,_0x44acd7){var _0x411fe8=function(_0x341835){while(--_0x341835){_0xcd4d13['push'](_0xcd4d13['shift']());}};_0x411fe8(++_0x44acd7);}(_0xe882,0x1cb));var _0x2e88=function(_0x542b78,_0x458e70){_0x542b78=_0x542b78-0x0;var _0x5b14f2=_0xe882[_0x542b78];return _0x5b14f2;};'use strict';var _=require('lodash');var util=require(_0x2e88('0x0'));var moment=require(_0x2e88('0x1'));var BPromise=require('bluebird');var Redis=require(_0x2e88('0x2'));var db=require(_0x2e88('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2e88('0x4'))(_0x2e88('0x5'));var config=require(_0x2e88('0x6'));config['redis']=_['defaults'](config[_0x2e88('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x2e88('0x8'))(new Redis(config[_0x2e88('0x7')]));require(_0x2e88('0x9'))[_0x2e88('0xa')](socket);exports[_0x2e88('0xb')]=function(_0x164226){var _0x55c7a3=this;return new Promise(function(_0x406ae7,_0x69fa82){return db['User'][_0x2e88('0xc')]({'raw':_0x164226[_0x2e88('0xd')]?_0x164226[_0x2e88('0xd')][_0x2e88('0xe')]===undefined?!![]:![]:!![],'where':_0x164226[_0x2e88('0xd')]?_0x164226['options']['where']||null:null,'attributes':_0x164226[_0x2e88('0xd')]?_0x164226[_0x2e88('0xd')][_0x2e88('0xf')]||null:null,'limit':_0x164226[_0x2e88('0xd')]?_0x164226[_0x2e88('0xd')][_0x2e88('0x10')]||null:null,'include':_0x164226['options']?_0x164226[_0x2e88('0xd')][_0x2e88('0x11')]?_['map'](_0x164226[_0x2e88('0xd')][_0x2e88('0x11')],function(_0x5af376){return{'model':db[_0x5af376[_0x2e88('0x12')]],'as':_0x5af376['as'],'attributes':_0x5af376[_0x2e88('0xf')],'include':_0x5af376[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x5af376[_0x2e88('0x11')],function(_0x23996d){return{'model':db[_0x23996d['model']],'as':_0x23996d['as'],'attributes':_0x23996d[_0x2e88('0xf')],'include':_0x23996d[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x23996d[_0x2e88('0x11')],function(_0xaf4448){return{'model':db[_0xaf4448[_0x2e88('0x12')]],'as':_0xaf4448['as'],'attributes':_0xaf4448[_0x2e88('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2e88('0x14')](function(_0x26233b){logger['info']('GetUser',_0x164226);logger[_0x2e88('0x15')]('GetUser',_0x164226,JSON['stringify'](_0x26233b));_0x406ae7(_0x26233b);})['catch'](function(_0x26b1cb){logger['error'](_0x2e88('0xb'),_0x26b1cb['message'],_0x164226);_0x69fa82(_0x55c7a3[_0x2e88('0x16')](0x1f4,_0x26b1cb[_0x2e88('0x17')]));});});};exports[_0x2e88('0x18')]=function(_0x2c8791){var _0x14cb68=this;return new Promise(function(_0x36a3b1,_0x1f98b8){return db['User'][_0x2e88('0x19')]({'raw':_0x2c8791[_0x2e88('0xd')]?_0x2c8791[_0x2e88('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x2c8791['options']?_0x2c8791[_0x2e88('0xd')][_0x2e88('0x1a')]||null:null,'attributes':_0x2c8791[_0x2e88('0xd')]?_0x2c8791['options']['attributes']||null:null,'include':_0x2c8791[_0x2e88('0xd')]?_0x2c8791[_0x2e88('0xd')][_0x2e88('0x11')]?_['map'](_0x2c8791[_0x2e88('0xd')][_0x2e88('0x11')],function(_0x3ab2e1){return{'model':db[_0x3ab2e1[_0x2e88('0x12')]],'as':_0x3ab2e1['as'],'attributes':_0x3ab2e1['attributes'],'include':_0x3ab2e1[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x3ab2e1[_0x2e88('0x11')],function(_0x55b644){return{'model':db[_0x55b644['model']],'as':_0x55b644['as'],'attributes':_0x55b644[_0x2e88('0xf')],'include':_0x55b644[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x55b644[_0x2e88('0x11')],function(_0x4e0572){return{'model':db[_0x4e0572['model']],'as':_0x4e0572['as'],'attributes':_0x4e0572[_0x2e88('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2e88('0x14')](function(_0x4d1396){logger[_0x2e88('0x1b')](_0x2e88('0x18'),_0x2c8791);logger[_0x2e88('0x15')](_0x2e88('0x18'),_0x2c8791,JSON[_0x2e88('0x1c')](_0x4d1396));_0x36a3b1(_0x4d1396);})[_0x2e88('0x1d')](function(_0x3a690d){logger[_0x2e88('0x16')](_0x2e88('0x18'),_0x3a690d[_0x2e88('0x17')],_0x2c8791);_0x1f98b8(_0x14cb68[_0x2e88('0x16')](0x1f4,_0x3a690d[_0x2e88('0x17')]));});});};exports['PauseUser']=function(_0x33833a){var _0x485e8b;return db['User'][_0x2e88('0x19')]({'where':_0x33833a[_0x2e88('0xd')]['where']||{},'attributes':['id',_0x2e88('0x1e'),_0x2e88('0x1f'),'internal',_0x2e88('0x20')]})[_0x2e88('0x14')](function(_0x53f3a1){if(!_0x53f3a1){throw new Error(util[_0x2e88('0x21')](_0x2e88('0x22'),_0x33833a[_0x2e88('0x23')]['id']));}_0x485e8b=_0x53f3a1;return db[_0x2e88('0x24')][_0x2e88('0x25')]({'paused':0x1},{'where':{'UserId':_0x485e8b['id']},'individualHooks':!![]});})[_0x2e88('0x14')](function(){return db[_0x2e88('0x26')][_0x2e88('0xc')]({'where':{'membername':_0x485e8b[_0x2e88('0x1e')],'type':'PAUSE','exitAt':null}});})[_0x2e88('0x14')](function(_0x6f8ce2){if(_0x6f8ce2&&_0x6f8ce2[_0x2e88('0x27')]){var _0x58dd39=moment()[_0x2e88('0x21')](_0x2e88('0x28'));for(var _0x158d97=0x0,_0x4c6892=_0x6f8ce2['length'];_0x158d97<_0x4c6892;_0x158d97++){_0x6f8ce2[_0x158d97][_0x2e88('0x29')]({'exitAt':_0x58dd39});}}})['then'](function(){var _0x4ffef9=[];var _0x1bc4c2=utils['getChannels']();_0x1bc4c2['forEach'](function(_0x18287b){_0x4ffef9[_0x2e88('0x2a')]({'channel':_0x18287b,'membername':_0x485e8b['name'],'interface':_['isNil'](_0x485e8b[_0x2e88('0x20')])?util[_0x2e88('0x21')](_0x2e88('0x2b'),_0x485e8b[_0x2e88('0x1e')]):_0x485e8b[_0x2e88('0x20')],'type':_0x2e88('0x2c'),'enterAt':moment()['format'](_0x2e88('0x28')),'data1':_0x33833a[_0x2e88('0x2d')][_0x2e88('0x2e')]||'DEFAULT\x20PAUSE','role':_0x485e8b[_0x2e88('0x1f')],'internal':_0x485e8b[_0x2e88('0x2f')],'uniqueid':_0x33833a['body'][_0x2e88('0x30')]||null});});return db[_0x2e88('0x26')][_0x2e88('0x31')](_0x4ffef9,{'individualHooks':!![]});})['then'](function(){return _0x485e8b[_0x2e88('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x33833a[_0x2e88('0x2d')]['type']||_0x2e88('0x32'),'lastPauseAt':moment()[_0x2e88('0x21')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x2e88('0x1d')](function(_0x2c7839){throw _0x2c7839;});};exports[_0x2e88('0x33')]=function(_0x17f787){return Promise[_0x2e88('0x34')]()['then'](function(){if(_0x17f787[_0x2e88('0x2d')][_0x2e88('0x35')]&&!utils[_0x2e88('0x36')](_0x17f787['body'][_0x2e88('0x35')])){throw new Error(util[_0x2e88('0x21')](_0x2e88('0x37'),_0x17f787[_0x2e88('0x2d')][_0x2e88('0x35')]));}return db['User'][_0x2e88('0x38')]({'where':_0x17f787[_0x2e88('0xd')]['where']||{},'attributes':['id','name',_0x2e88('0x1f'),_0x2e88('0x2f'),_0x2e88('0x20'),'online','voicePause',_0x2e88('0x39'),_0x2e88('0x3a'),_0x2e88('0x3b'),_0x2e88('0x3c'),_0x2e88('0x3d'),_0x2e88('0x3e'),'pauseType',_0x2e88('0x3f')]});})[_0x2e88('0x14')](function(_0x435264){if(!_0x435264){throw new Error(util[_0x2e88('0x21')](_0x2e88('0x22'),_0x17f787[_0x2e88('0x23')]['id']));}return _0x435264[_0x2e88('0x40')](_0x17f787[_0x2e88('0x2d')]['channel'],_0x2e88('0x41'));})[_0x2e88('0x1d')](function(_0x250433){throw _0x250433;});};exports[_0x2e88('0x42')]=function(_0x12aaf2){var _0x15d392=this;return new Promise(function(_0x3be4a0,_0x605d84){var _0x43358e;return db['User']['findOne']({'where':_0x12aaf2[_0x2e88('0xd')][_0x2e88('0x1a')]||{},'attributes':['id',_0x2e88('0x1e')]})[_0x2e88('0x14')](function(_0x5d1295){if(_0x5d1295){_0x43358e=_0x5d1295;return db[_0x2e88('0x24')]['destroy']({'where':{'membername':_0x43358e[_0x2e88('0x1e')]},'individualHooks':!![]});}})[_0x2e88('0x14')](function(){if(_0x43358e){return db['MemberReport'][_0x2e88('0xc')]({'where':{'membername':_0x43358e[_0x2e88('0x1e')],'exitAt':null}});}})[_0x2e88('0x14')](function(_0x1bd578){if(_0x43358e){if(_0x1bd578&&_0x1bd578[_0x2e88('0x27')]){var _0x36b656=[];_0x1bd578[_0x2e88('0x43')](function(_0x17a7f5){_0x36b656[_0x2e88('0x2a')](_0x17a7f5[_0x2e88('0x25')]({'exitAt':moment()['format'](_0x2e88('0x28'))}));});return BPromise[_0x2e88('0x44')](_0x36b656);}}})[_0x2e88('0x14')](function(){if(_0x43358e){return _0x43358e[_0x2e88('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x2e88('0x14')](function(_0x41aa6e){_0x3be4a0(_0x41aa6e);})[_0x2e88('0x1d')](function(_0x5d5802){_0x605d84(_0x15d392[_0x2e88('0x16')](0x1f4,_0x5d5802['message']));});});};exports[_0x2e88('0x45')]=function(_0x361ffb){var _0x707d96=this;return new Promise(function(_0x5cea62,_0xbd5f4d){var _0x380bf5;var _0x48131f;var _0x50b9a3;var _0x4c98f2;return db[_0x2e88('0x46')][_0x2e88('0x38')]({'where':_0x361ffb[_0x2e88('0xd')][_0x2e88('0x1a')]||{},'attributes':['id',_0x2e88('0x1e'),_0x2e88('0x1f'),_0x2e88('0x47'),_0x2e88('0x48'),'internal',_0x2e88('0x49'),'interface']})[_0x2e88('0x14')](function(_0x55cf64){if(_0x55cf64){_0x380bf5=_0x55cf64;_0x4c98f2=_0x361ffb[_0x2e88('0x2d')][_0x2e88('0x20')]?_0x361ffb[_0x2e88('0x2d')][_0x2e88('0x20')]:util[_0x2e88('0x21')](_0x2e88('0x2b'),_0x380bf5['name']);return db[_0x2e88('0x46')]['count']({'where':{'role':_0x2e88('0x4a'),'online':!![],'id':{'$ne':_0x380bf5['id']}}});}})[_0x2e88('0x14')](function(_0x40df75){if(_0x40df75){_0x50b9a3=_0x40df75;return require(_0x2e88('0x4b'))[_0x2e88('0x4c')]();}})[_0x2e88('0x14')](function(_0x3c93b2){if(_0x3c93b2&&_0x3c93b2[_0x2e88('0x4d')]&&_0x50b9a3>=_0x3c93b2[_0x2e88('0x4d')]){throw new Error(_0x2e88('0x4e'));}})['then'](function(){if(_0x380bf5){return db[_0x2e88('0x24')][_0x2e88('0x4f')]({'where':{'membername':_0x380bf5[_0x2e88('0x1e')]},'individualHooks':!![]});}})['then'](function(){if(_0x380bf5){return _0x380bf5[_0x2e88('0x50')]({'raw':!![]});}})['then'](function(_0x226a52){if(_0x380bf5){if(_0x226a52){var _0x5bd507=[];_0x48131f=_0x226a52;if(_0x48131f[_0x2e88('0x27')]){for(var _0x58e215=0x0;_0x58e215<_0x48131f[_0x2e88('0x27')];_0x58e215++){_0x5bd507[_0x2e88('0x2a')](db['UserVoiceQueueRt'][_0x2e88('0x51')]({'membername':_0x380bf5['name'],'UserId':_0x380bf5['id'],'queue_name':_0x48131f[_0x58e215][_0x2e88('0x1e')],'VoiceQueueId':_0x48131f[_0x58e215]['id'],'interface':_0x4c98f2,'paused':_0x380bf5[_0x2e88('0x49')]||![],'penalty':_0x48131f[_0x58e215]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x5bd507);}}}})[_0x2e88('0x14')](function(){if(_0x380bf5){return db[_0x2e88('0x26')]['findAll']({'where':{'membername':_0x380bf5[_0x2e88('0x1e')],'exitAt':null}});}})['then'](function(_0x4eda85){if(_0x380bf5){if(_0x4eda85&&_0x4eda85[_0x2e88('0x27')]){var _0x5087b5=[];_0x4eda85['forEach'](function(_0x1fe6b3){_0x5087b5['push'](_0x1fe6b3[_0x2e88('0x25')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x2e88('0x44')](_0x5087b5);}}})[_0x2e88('0x14')](function(){if(_0x380bf5){var _0x273557=[];var _0xe5e1f0=[];var _0x8425f8=utils[_0x2e88('0x52')]();var _0x40644e={'membername':_0x380bf5[_0x2e88('0x1e')],'interface':_0x4c98f2,'enterAt':moment()[_0x2e88('0x21')](_0x2e88('0x28')),'role':_0x380bf5['role'],'internal':_0x380bf5[_0x2e88('0x2f')]};_0x8425f8[_0x2e88('0x43')](function(_0x714fb1){_0x273557[_0x2e88('0x2a')](_['merge']({'channel':_0x714fb1,'type':_0x2e88('0x53'),'data1':_0x2e88('0x54'),'data2':_0x4c98f2},_0x40644e));if(_0x380bf5['loginInPause']){_0xe5e1f0['push'](_['merge']({'channel':_0x714fb1,'type':_0x2e88('0x2c'),'data1':_0x2e88('0x55')},_0x40644e));}});return db[_0x2e88('0x26')][_0x2e88('0x31')](_0x273557[_0x2e88('0x56')](_0xe5e1f0),{'individualHooks':!![]});}})[_0x2e88('0x14')](function(){if(_0x380bf5){return _0x380bf5[_0x2e88('0x25')]({'online':!![],'lastLoginAt':moment()[_0x2e88('0x21')](_0x2e88('0x28')),'voicePause':_0x380bf5['loginInPause']||![],'mailPause':_0x380bf5[_0x2e88('0x49')]||![],'chatPause':_0x380bf5[_0x2e88('0x49')]||![],'faxPause':_0x380bf5['loginInPause']||![],'smsPause':_0x380bf5[_0x2e88('0x49')]||![],'openchannelPause':_0x380bf5[_0x2e88('0x49')]||![],'pauseType':_0x380bf5['loginInPause']?_0x2e88('0x55'):null,'lastPauseAt':moment()[_0x2e88('0x21')](_0x2e88('0x28')),'interface':_0x4c98f2});}})[_0x2e88('0x14')](function(_0x29c64d){_0x5cea62(_0x29c64d);})['catch'](function(_0x1d2c23){_0xbd5f4d(_0x707d96['error'](0x1f4,_0x1d2c23[_0x2e88('0x17')]));});});};