89dc54f51bc0daf6f20f46dc34a72f4c9f0e9235
[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 _0x35c0=['role','internal','interface','User\x20with\x20id\x20%s\x20not\x20found','params','update','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','format','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','MemberReport','bulkCreate','UnpauseUser','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','online','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','unpause','system','findOne','UserVoiceQueueRt','destroy','all','LoginUser','mobile','phone','loginInPause','getLicense','agents','upsert','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','./user.socket','register','User','findAll','options','raw','attributes','limit','include','model','map','then','info','GetUser','debug','catch','message','ShowUser','find','where','error','PauseUser','name'];(function(_0x158b43,_0x4827ea){var _0x4e8459=function(_0x27fe5d){while(--_0x27fe5d){_0x158b43['push'](_0x158b43['shift']());}};_0x4e8459(++_0x4827ea);}(_0x35c0,0x12b));var _0x035c=function(_0x4bf27a,_0x435cc2){_0x4bf27a=_0x4bf27a-0x0;var _0x22a0ba=_0x35c0[_0x4bf27a];return _0x22a0ba;};'use strict';var _=require(_0x035c('0x0'));var util=require(_0x035c('0x1'));var moment=require('moment');var BPromise=require(_0x035c('0x2'));var Redis=require(_0x035c('0x3'));var db=require(_0x035c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x035c('0x5'))(_0x035c('0x6'));var config=require(_0x035c('0x7'));config[_0x035c('0x8')]=_[_0x035c('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x035c('0xa'))[_0x035c('0xb')](socket);exports['GetUser']=function(_0x12db9c){var _0x5cdf09=this;return new Promise(function(_0x3dbbed,_0x18976e){return db[_0x035c('0xc')][_0x035c('0xd')]({'raw':_0x12db9c['options']?_0x12db9c[_0x035c('0xe')][_0x035c('0xf')]===undefined?!![]:![]:!![],'where':_0x12db9c[_0x035c('0xe')]?_0x12db9c[_0x035c('0xe')]['where']||null:null,'attributes':_0x12db9c['options']?_0x12db9c[_0x035c('0xe')][_0x035c('0x10')]||null:null,'limit':_0x12db9c[_0x035c('0xe')]?_0x12db9c['options'][_0x035c('0x11')]||null:null,'include':_0x12db9c['options']?_0x12db9c[_0x035c('0xe')][_0x035c('0x12')]?_['map'](_0x12db9c['options'][_0x035c('0x12')],function(_0x430c5d){return{'model':db[_0x430c5d[_0x035c('0x13')]],'as':_0x430c5d['as'],'attributes':_0x430c5d[_0x035c('0x10')],'include':_0x430c5d[_0x035c('0x12')]?_[_0x035c('0x14')](_0x430c5d['include'],function(_0x154973){return{'model':db[_0x154973[_0x035c('0x13')]],'as':_0x154973['as'],'attributes':_0x154973[_0x035c('0x10')],'include':_0x154973[_0x035c('0x12')]?_['map'](_0x154973['include'],function(_0x4c3c68){return{'model':db[_0x4c3c68[_0x035c('0x13')]],'as':_0x4c3c68['as'],'attributes':_0x4c3c68[_0x035c('0x10')]};}):[]};}):[]};}):[]:[]})[_0x035c('0x15')](function(_0x1f8409){logger[_0x035c('0x16')](_0x035c('0x17'),_0x12db9c);logger[_0x035c('0x18')]('GetUser',_0x12db9c,JSON['stringify'](_0x1f8409));_0x3dbbed(_0x1f8409);})[_0x035c('0x19')](function(_0x2eaab3){logger['error'](_0x035c('0x17'),_0x2eaab3['message'],_0x12db9c);_0x18976e(_0x5cdf09['error'](0x1f4,_0x2eaab3[_0x035c('0x1a')]));});});};exports[_0x035c('0x1b')]=function(_0x4e3c3b){var _0x28ec8f=this;return new Promise(function(_0x5ce995,_0x20339d){return db[_0x035c('0xc')][_0x035c('0x1c')]({'raw':_0x4e3c3b[_0x035c('0xe')]?_0x4e3c3b[_0x035c('0xe')][_0x035c('0xf')]===undefined?!![]:![]:!![],'where':_0x4e3c3b[_0x035c('0xe')]?_0x4e3c3b[_0x035c('0xe')][_0x035c('0x1d')]||null:null,'attributes':_0x4e3c3b[_0x035c('0xe')]?_0x4e3c3b[_0x035c('0xe')]['attributes']||null:null,'include':_0x4e3c3b[_0x035c('0xe')]?_0x4e3c3b[_0x035c('0xe')][_0x035c('0x12')]?_['map'](_0x4e3c3b[_0x035c('0xe')]['include'],function(_0x57288e){return{'model':db[_0x57288e['model']],'as':_0x57288e['as'],'attributes':_0x57288e[_0x035c('0x10')],'include':_0x57288e[_0x035c('0x12')]?_[_0x035c('0x14')](_0x57288e[_0x035c('0x12')],function(_0x3b7df5){return{'model':db[_0x3b7df5[_0x035c('0x13')]],'as':_0x3b7df5['as'],'attributes':_0x3b7df5[_0x035c('0x10')],'include':_0x3b7df5[_0x035c('0x12')]?_[_0x035c('0x14')](_0x3b7df5[_0x035c('0x12')],function(_0x33a1e3){return{'model':db[_0x33a1e3[_0x035c('0x13')]],'as':_0x33a1e3['as'],'attributes':_0x33a1e3[_0x035c('0x10')]};}):[]};}):[]};}):[]:[]})[_0x035c('0x15')](function(_0x1aead4){logger[_0x035c('0x16')](_0x035c('0x1b'),_0x4e3c3b);logger[_0x035c('0x18')](_0x035c('0x1b'),_0x4e3c3b,JSON['stringify'](_0x1aead4));_0x5ce995(_0x1aead4);})[_0x035c('0x19')](function(_0x9ce2a2){logger[_0x035c('0x1e')](_0x035c('0x1b'),_0x9ce2a2[_0x035c('0x1a')],_0x4e3c3b);_0x20339d(_0x28ec8f['error'](0x1f4,_0x9ce2a2[_0x035c('0x1a')]));});});};exports[_0x035c('0x1f')]=function(_0x541065){var _0xf77b44;return db[_0x035c('0xc')]['find']({'where':_0x541065[_0x035c('0xe')][_0x035c('0x1d')]||{},'attributes':['id',_0x035c('0x20'),_0x035c('0x21'),_0x035c('0x22'),_0x035c('0x23')]})[_0x035c('0x15')](function(_0x1f075d){if(!_0x1f075d){throw new Error(util['format'](_0x035c('0x24'),_0x541065[_0x035c('0x25')]['id']));}_0xf77b44=_0x1f075d;return db['UserVoiceQueueRt'][_0x035c('0x26')]({'paused':0x1},{'where':{'UserId':_0xf77b44['id']},'individualHooks':!![]});})[_0x035c('0x15')](function(){return db['MemberReport'][_0x035c('0xd')]({'where':{'membername':_0xf77b44[_0x035c('0x20')],'type':_0x035c('0x27'),'exitAt':null}});})[_0x035c('0x15')](function(_0x4516bd){if(_0x4516bd&&_0x4516bd[_0x035c('0x28')]){var _0x59477f=moment()['format'](_0x035c('0x29'));for(var _0x2b11c1=0x0,_0x4d9f2e=_0x4516bd[_0x035c('0x28')];_0x2b11c1<_0x4d9f2e;_0x2b11c1++){_0x4516bd[_0x2b11c1][_0x035c('0x2a')]({'exitAt':_0x59477f});}}})['then'](function(){var _0x4876ea=[];var _0x5a5a0d=utils[_0x035c('0x2b')]();_0x5a5a0d[_0x035c('0x2c')](function(_0x3e6c58){_0x4876ea[_0x035c('0x2d')]({'channel':_0x3e6c58,'membername':_0xf77b44['name'],'interface':_['isNil'](_0xf77b44[_0x035c('0x23')])?util[_0x035c('0x2e')](_0x035c('0x2f'),_0xf77b44[_0x035c('0x20')]):_0xf77b44[_0x035c('0x23')],'type':_0x035c('0x27'),'enterAt':moment()['format'](_0x035c('0x29')),'data1':_0x541065[_0x035c('0x30')][_0x035c('0x31')]||_0x035c('0x32'),'role':_0xf77b44[_0x035c('0x21')],'internal':_0xf77b44[_0x035c('0x22')],'uniqueid':_0x541065[_0x035c('0x30')][_0x035c('0x33')]||null});});return db[_0x035c('0x34')][_0x035c('0x35')](_0x4876ea,{'individualHooks':!![]});})[_0x035c('0x15')](function(){return _0xf77b44[_0x035c('0x26')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x541065[_0x035c('0x30')][_0x035c('0x31')]||_0x035c('0x32'),'lastPauseAt':moment()[_0x035c('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x035c('0x19')](function(_0x32d432){throw _0x32d432;});};exports[_0x035c('0x36')]=function(_0x597986){return Promise['resolve']()[_0x035c('0x15')](function(){if(_0x597986[_0x035c('0x30')][_0x035c('0x37')]&&!utils[_0x035c('0x38')](_0x597986[_0x035c('0x30')][_0x035c('0x37')])){throw new Error(util[_0x035c('0x2e')](_0x035c('0x39'),_0x597986[_0x035c('0x30')][_0x035c('0x37')]));}return db[_0x035c('0xc')]['findOne']({'where':_0x597986['options'][_0x035c('0x1d')]||{},'attributes':['id','name',_0x035c('0x21'),_0x035c('0x22'),_0x035c('0x23'),_0x035c('0x3a'),'voicePause',_0x035c('0x3b'),'chatPause',_0x035c('0x3c'),_0x035c('0x3d'),_0x035c('0x3e'),_0x035c('0x3f'),_0x035c('0x40'),_0x035c('0x41')]});})[_0x035c('0x15')](function(_0x537b74){if(!_0x537b74){throw new Error(util[_0x035c('0x2e')]('User\x20with\x20id\x20%s\x20not\x20found',_0x597986[_0x035c('0x25')]['id']));}return _0x537b74[_0x035c('0x42')](_0x597986[_0x035c('0x30')][_0x035c('0x37')],_0x035c('0x43'));})['catch'](function(_0x297f03){throw _0x297f03;});};exports['LogoutUser']=function(_0x3246c6){var _0x1f2bcd=this;return new Promise(function(_0x2a32e7,_0x45ce9b){var _0x94b620;return db[_0x035c('0xc')][_0x035c('0x44')]({'where':_0x3246c6[_0x035c('0xe')][_0x035c('0x1d')]||{},'attributes':['id',_0x035c('0x20')]})['then'](function(_0x558b68){if(_0x558b68){_0x94b620=_0x558b68;return db[_0x035c('0x45')][_0x035c('0x46')]({'where':{'membername':_0x94b620[_0x035c('0x20')]},'individualHooks':!![]});}})[_0x035c('0x15')](function(){if(_0x94b620){return db[_0x035c('0x34')][_0x035c('0xd')]({'where':{'membername':_0x94b620[_0x035c('0x20')],'exitAt':null}});}})[_0x035c('0x15')](function(_0x450e9e){if(_0x94b620){if(_0x450e9e&&_0x450e9e[_0x035c('0x28')]){var _0x138d7c=[];_0x450e9e[_0x035c('0x2c')](function(_0x6f41f2){_0x138d7c[_0x035c('0x2d')](_0x6f41f2[_0x035c('0x26')]({'exitAt':moment()['format'](_0x035c('0x29'))}));});return BPromise[_0x035c('0x47')](_0x138d7c);}}})[_0x035c('0x15')](function(){if(_0x94b620){return _0x94b620[_0x035c('0x26')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x035c('0x15')](function(_0x31dfb2){_0x2a32e7(_0x31dfb2);})[_0x035c('0x19')](function(_0x500adc){_0x45ce9b(_0x1f2bcd[_0x035c('0x1e')](0x1f4,_0x500adc[_0x035c('0x1a')]));});});};exports[_0x035c('0x48')]=function(_0x28f5ed){var _0x1e1d00=this;return new Promise(function(_0x49ab71,_0x30a3a4){var _0x1c46fd;var _0x58547a;var _0x582264;var _0x55d3a2;return db[_0x035c('0xc')][_0x035c('0x44')]({'where':_0x28f5ed[_0x035c('0xe')]['where']||{},'attributes':['id',_0x035c('0x20'),_0x035c('0x21'),_0x035c('0x49'),_0x035c('0x4a'),_0x035c('0x22'),_0x035c('0x4b'),_0x035c('0x23')]})[_0x035c('0x15')](function(_0x4ba154){if(_0x4ba154){_0x1c46fd=_0x4ba154;_0x55d3a2=_0x28f5ed[_0x035c('0x30')][_0x035c('0x23')]?_0x28f5ed[_0x035c('0x30')]['interface']:util['format']('SIP/%s',_0x1c46fd['name']);return db['User']['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1c46fd['id']}}});}})[_0x035c('0x15')](function(_0x322a15){if(_0x322a15){_0x582264=_0x322a15;return require('../../config/license/util')[_0x035c('0x4c')]();}})[_0x035c('0x15')](function(_0x409a03){if(_0x409a03&&_0x409a03[_0x035c('0x4d')]&&_0x582264>=_0x409a03[_0x035c('0x4d')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x035c('0x15')](function(){if(_0x1c46fd){return db[_0x035c('0x45')]['destroy']({'where':{'membername':_0x1c46fd[_0x035c('0x20')]},'individualHooks':!![]});}})[_0x035c('0x15')](function(){if(_0x1c46fd){return _0x1c46fd['getVoiceQueues']({'raw':!![]});}})[_0x035c('0x15')](function(_0x37f1f7){if(_0x1c46fd){if(_0x37f1f7){var _0x53d724=[];_0x58547a=_0x37f1f7;if(_0x58547a[_0x035c('0x28')]){for(var _0x561e90=0x0;_0x561e90<_0x58547a[_0x035c('0x28')];_0x561e90++){_0x53d724[_0x035c('0x2d')](db['UserVoiceQueueRt'][_0x035c('0x4e')]({'membername':_0x1c46fd['name'],'UserId':_0x1c46fd['id'],'queue_name':_0x58547a[_0x561e90][_0x035c('0x20')],'VoiceQueueId':_0x58547a[_0x561e90]['id'],'interface':_0x55d3a2,'paused':_0x1c46fd[_0x035c('0x4b')]||![],'penalty':_0x58547a[_0x561e90]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x035c('0x47')](_0x53d724);}}}})[_0x035c('0x15')](function(){if(_0x1c46fd){return db[_0x035c('0x34')][_0x035c('0xd')]({'where':{'membername':_0x1c46fd['name'],'exitAt':null}});}})['then'](function(_0x1bac5c){if(_0x1c46fd){if(_0x1bac5c&&_0x1bac5c['length']){var _0x236aa9=[];_0x1bac5c[_0x035c('0x2c')](function(_0x360618){_0x236aa9['push'](_0x360618['update']({'exitAt':moment()[_0x035c('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x035c('0x47')](_0x236aa9);}}})['then'](function(){if(_0x1c46fd){var _0x32bbfc=[];var _0x56592c=[];var _0x44cb02=utils['getChannels']();var _0x122e35={'membername':_0x1c46fd[_0x035c('0x20')],'interface':_0x55d3a2,'enterAt':moment()[_0x035c('0x2e')](_0x035c('0x29')),'role':_0x1c46fd['role'],'internal':_0x1c46fd[_0x035c('0x22')]};_0x44cb02[_0x035c('0x2c')](function(_0x6c215){_0x32bbfc[_0x035c('0x2d')](_[_0x035c('0x4f')]({'channel':_0x6c215,'type':_0x035c('0x50'),'data1':_0x035c('0x51'),'data2':_0x55d3a2},_0x122e35));if(_0x1c46fd['loginInPause']){_0x56592c['push'](_[_0x035c('0x4f')]({'channel':_0x6c215,'type':'PAUSE','data1':_0x035c('0x52')},_0x122e35));}});return db[_0x035c('0x34')][_0x035c('0x35')](_0x32bbfc['concat'](_0x56592c),{'individualHooks':!![]});}})['then'](function(){if(_0x1c46fd){return _0x1c46fd[_0x035c('0x26')]({'online':!![],'lastLoginAt':moment()[_0x035c('0x2e')](_0x035c('0x29')),'voicePause':_0x1c46fd[_0x035c('0x4b')]||![],'mailPause':_0x1c46fd[_0x035c('0x4b')]||![],'chatPause':_0x1c46fd[_0x035c('0x4b')]||![],'faxPause':_0x1c46fd[_0x035c('0x4b')]||![],'smsPause':_0x1c46fd[_0x035c('0x4b')]||![],'openchannelPause':_0x1c46fd[_0x035c('0x4b')]||![],'pauseType':_0x1c46fd[_0x035c('0x4b')]?_0x035c('0x52'):null,'lastPauseAt':moment()[_0x035c('0x2e')](_0x035c('0x29')),'interface':_0x55d3a2});}})['then'](function(_0x367399){_0x49ab71(_0x367399);})[_0x035c('0x19')](function(_0x5b9c1e){_0x30a3a4(_0x1e1d00[_0x035c('0x1e')](0x1f4,_0x5b9c1e[_0x035c('0x1a')]));});});};