ee3fa91823bfd60af738a6eadc45aaf9e3eab827
[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 _0x25e6=['mobile','phone','loginInPause','SIP/%s','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','UserVoiceQueueRt','destroy','getVoiceQueues','UserVoiceQueue.penalty','all','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','redis','socket.io-emitter','register','options','raw','where','attributes','limit','include','map','model','then','debug','GetUser','stringify','catch','error','message','ShowUser','find','info','PauseUser','User','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','findAll','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','push','type','DEFAULT\x20PAUSE','body','uniqueid','MemberReport','bulkCreate','update','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','system','LogoutUser','forEach','LoginUser'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x25e6,0x1c0));var _0x625e=function(_0x3ac7bf,_0xfd44ca){_0x3ac7bf=_0x3ac7bf-0x0;var _0x252900=_0x25e6[_0x3ac7bf];return _0x252900;};'use strict';var _=require(_0x625e('0x0'));var util=require(_0x625e('0x1'));var moment=require(_0x625e('0x2'));var BPromise=require(_0x625e('0x3'));var Redis=require('ioredis');var db=require(_0x625e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x625e('0x5'))('rpc');var config=require('../../config/environment');config[_0x625e('0x6')]=_['defaults'](config[_0x625e('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x625e('0x7'))(new Redis(config[_0x625e('0x6')]));require('./user.socket')[_0x625e('0x8')](socket);exports['GetUser']=function(_0x30bf7f){var _0x55b75d=this;return new Promise(function(_0x2886e0,_0x8c5d6a){return db['User']['findAll']({'raw':_0x30bf7f[_0x625e('0x9')]?_0x30bf7f['options'][_0x625e('0xa')]===undefined?!![]:![]:!![],'where':_0x30bf7f['options']?_0x30bf7f[_0x625e('0x9')][_0x625e('0xb')]||null:null,'attributes':_0x30bf7f[_0x625e('0x9')]?_0x30bf7f['options'][_0x625e('0xc')]||null:null,'limit':_0x30bf7f[_0x625e('0x9')]?_0x30bf7f[_0x625e('0x9')][_0x625e('0xd')]||null:null,'include':_0x30bf7f[_0x625e('0x9')]?_0x30bf7f[_0x625e('0x9')][_0x625e('0xe')]?_[_0x625e('0xf')](_0x30bf7f['options'][_0x625e('0xe')],function(_0x27d617){return{'model':db[_0x27d617[_0x625e('0x10')]],'as':_0x27d617['as'],'attributes':_0x27d617[_0x625e('0xc')],'include':_0x27d617['include']?_['map'](_0x27d617[_0x625e('0xe')],function(_0x5790db){return{'model':db[_0x5790db['model']],'as':_0x5790db['as'],'attributes':_0x5790db[_0x625e('0xc')],'include':_0x5790db[_0x625e('0xe')]?_['map'](_0x5790db[_0x625e('0xe')],function(_0x3b2dc7){return{'model':db[_0x3b2dc7[_0x625e('0x10')]],'as':_0x3b2dc7['as'],'attributes':_0x3b2dc7[_0x625e('0xc')]};}):[]};}):[]};}):[]:[]})[_0x625e('0x11')](function(_0x55c863){logger['info']('GetUser',_0x30bf7f);logger[_0x625e('0x12')](_0x625e('0x13'),_0x30bf7f,JSON[_0x625e('0x14')](_0x55c863));_0x2886e0(_0x55c863);})[_0x625e('0x15')](function(_0x21b1d7){logger[_0x625e('0x16')](_0x625e('0x13'),_0x21b1d7[_0x625e('0x17')],_0x30bf7f);_0x8c5d6a(_0x55b75d[_0x625e('0x16')](0x1f4,_0x21b1d7['message']));});});};exports[_0x625e('0x18')]=function(_0x1d1632){var _0x4ac469=this;return new Promise(function(_0x14ef70,_0x5f3151){return db['User'][_0x625e('0x19')]({'raw':_0x1d1632[_0x625e('0x9')]?_0x1d1632[_0x625e('0x9')][_0x625e('0xa')]===undefined?!![]:![]:!![],'where':_0x1d1632[_0x625e('0x9')]?_0x1d1632[_0x625e('0x9')][_0x625e('0xb')]||null:null,'attributes':_0x1d1632[_0x625e('0x9')]?_0x1d1632['options'][_0x625e('0xc')]||null:null,'include':_0x1d1632[_0x625e('0x9')]?_0x1d1632['options'][_0x625e('0xe')]?_[_0x625e('0xf')](_0x1d1632[_0x625e('0x9')][_0x625e('0xe')],function(_0x694c5){return{'model':db[_0x694c5[_0x625e('0x10')]],'as':_0x694c5['as'],'attributes':_0x694c5[_0x625e('0xc')],'include':_0x694c5[_0x625e('0xe')]?_[_0x625e('0xf')](_0x694c5['include'],function(_0x4c021a){return{'model':db[_0x4c021a[_0x625e('0x10')]],'as':_0x4c021a['as'],'attributes':_0x4c021a['attributes'],'include':_0x4c021a[_0x625e('0xe')]?_['map'](_0x4c021a['include'],function(_0x2fc281){return{'model':db[_0x2fc281[_0x625e('0x10')]],'as':_0x2fc281['as'],'attributes':_0x2fc281[_0x625e('0xc')]};}):[]};}):[]};}):[]:[]})[_0x625e('0x11')](function(_0x118bb0){logger[_0x625e('0x1a')](_0x625e('0x18'),_0x1d1632);logger[_0x625e('0x12')](_0x625e('0x18'),_0x1d1632,JSON['stringify'](_0x118bb0));_0x14ef70(_0x118bb0);})[_0x625e('0x15')](function(_0x14b930){logger['error'](_0x625e('0x18'),_0x14b930[_0x625e('0x17')],_0x1d1632);_0x5f3151(_0x4ac469[_0x625e('0x16')](0x1f4,_0x14b930[_0x625e('0x17')]));});});};exports[_0x625e('0x1b')]=function(_0x3c8b0e){var _0x47f1f6;return db[_0x625e('0x1c')][_0x625e('0x19')]({'where':_0x3c8b0e[_0x625e('0x9')]['where']||{},'attributes':['id',_0x625e('0x1d'),_0x625e('0x1e'),_0x625e('0x1f'),_0x625e('0x20')]})[_0x625e('0x11')](function(_0x42a0ff){if(!_0x42a0ff){throw new Error(util[_0x625e('0x21')](_0x625e('0x22'),_0x3c8b0e[_0x625e('0x23')]['id']));}_0x47f1f6=_0x42a0ff;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x47f1f6['id']},'individualHooks':!![]});})[_0x625e('0x11')](function(){return db['MemberReport'][_0x625e('0x24')]({'where':{'membername':_0x47f1f6['name'],'type':_0x625e('0x25'),'exitAt':null}});})['then'](function(_0x4b96fb){if(_0x4b96fb&&_0x4b96fb[_0x625e('0x26')]){var _0x36bfb3=moment()['format'](_0x625e('0x27'));for(var _0x445b24=0x0,_0x5d4a63=_0x4b96fb[_0x625e('0x26')];_0x445b24<_0x5d4a63;_0x445b24++){_0x4b96fb[_0x445b24][_0x625e('0x28')]({'exitAt':_0x36bfb3});}}})[_0x625e('0x11')](function(){var _0x344606=[];var _0x5e99f1=utils[_0x625e('0x29')]();_0x5e99f1['forEach'](function(_0x1d4a51){_0x344606[_0x625e('0x2a')]({'channel':_0x1d4a51,'membername':_0x47f1f6[_0x625e('0x1d')],'interface':_['isNil'](_0x47f1f6['interface'])?util[_0x625e('0x21')]('SIP/%s',_0x47f1f6[_0x625e('0x1d')]):_0x47f1f6[_0x625e('0x20')],'type':_0x625e('0x25'),'enterAt':moment()['format'](_0x625e('0x27')),'data1':_0x3c8b0e['body'][_0x625e('0x2b')]||_0x625e('0x2c'),'role':_0x47f1f6[_0x625e('0x1e')],'internal':_0x47f1f6[_0x625e('0x1f')],'uniqueid':_0x3c8b0e[_0x625e('0x2d')][_0x625e('0x2e')]||null});});return db[_0x625e('0x2f')][_0x625e('0x30')](_0x344606,{'individualHooks':!![]});})[_0x625e('0x11')](function(){return _0x47f1f6[_0x625e('0x31')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3c8b0e[_0x625e('0x2d')]['type']||_0x625e('0x2c'),'lastPauseAt':moment()[_0x625e('0x21')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x625e('0x15')](function(_0x31ba1b){throw _0x31ba1b;});};exports['UnpauseUser']=function(_0x37b863){return Promise[_0x625e('0x32')]()['then'](function(){if(_0x37b863[_0x625e('0x2d')][_0x625e('0x33')]&&!utils[_0x625e('0x34')](_0x37b863[_0x625e('0x2d')]['channel'])){throw new Error(util[_0x625e('0x21')](_0x625e('0x35'),_0x37b863[_0x625e('0x2d')]['channel']));}return db[_0x625e('0x1c')][_0x625e('0x36')]({'where':_0x37b863['options']['where']||{},'attributes':['id',_0x625e('0x1d'),_0x625e('0x1e'),_0x625e('0x1f'),_0x625e('0x20'),_0x625e('0x37'),'voicePause',_0x625e('0x38'),_0x625e('0x39'),_0x625e('0x3a'),_0x625e('0x3b'),_0x625e('0x3c'),_0x625e('0x3d'),_0x625e('0x3e'),_0x625e('0x3f')]});})[_0x625e('0x11')](function(_0x42eb3f){if(!_0x42eb3f){throw new Error(util[_0x625e('0x21')](_0x625e('0x22'),_0x37b863[_0x625e('0x23')]['id']));}return _0x42eb3f['unpause'](_0x37b863[_0x625e('0x2d')][_0x625e('0x33')],_0x625e('0x40'));})[_0x625e('0x15')](function(_0x5f574a){throw _0x5f574a;});};exports[_0x625e('0x41')]=function(_0x1183d5){var _0x3a1ee1=this;return new Promise(function(_0x57be55,_0x48b73f){var _0x5a2865;return db['User']['findOne']({'where':_0x1183d5[_0x625e('0x9')][_0x625e('0xb')]||{},'attributes':['id','name']})[_0x625e('0x11')](function(_0x482c92){if(_0x482c92){_0x5a2865=_0x482c92;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x5a2865['name']},'individualHooks':!![]});}})['then'](function(){if(_0x5a2865){return db[_0x625e('0x2f')][_0x625e('0x24')]({'where':{'membername':_0x5a2865[_0x625e('0x1d')],'exitAt':null}});}})[_0x625e('0x11')](function(_0x562644){if(_0x5a2865){if(_0x562644&&_0x562644[_0x625e('0x26')]){var _0x559343=[];_0x562644[_0x625e('0x42')](function(_0x259f86){_0x559343['push'](_0x259f86[_0x625e('0x31')]({'exitAt':moment()[_0x625e('0x21')](_0x625e('0x27'))}));});return BPromise['all'](_0x559343);}}})[_0x625e('0x11')](function(){if(_0x5a2865){return _0x5a2865[_0x625e('0x31')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x625e('0x11')](function(_0x1da0f4){_0x57be55(_0x1da0f4);})[_0x625e('0x15')](function(_0x31cda1){_0x48b73f(_0x3a1ee1[_0x625e('0x16')](0x1f4,_0x31cda1['message']));});});};exports[_0x625e('0x43')]=function(_0x51203d){var _0x1c421c=this;return new Promise(function(_0x1046e5,_0x2875ac){var _0x44969a;var _0x462171;var _0x162593;var _0x16dcd3;return db[_0x625e('0x1c')]['findOne']({'where':_0x51203d[_0x625e('0x9')][_0x625e('0xb')]||{},'attributes':['id',_0x625e('0x1d'),'role',_0x625e('0x44'),_0x625e('0x45'),_0x625e('0x1f'),_0x625e('0x46'),'interface']})['then'](function(_0x15c8d9){if(_0x15c8d9){_0x44969a=_0x15c8d9;_0x16dcd3=_0x51203d[_0x625e('0x2d')][_0x625e('0x20')]?_0x51203d[_0x625e('0x2d')][_0x625e('0x20')]:util[_0x625e('0x21')](_0x625e('0x47'),_0x44969a[_0x625e('0x1d')]);return db['User']['count']({'where':{'role':_0x625e('0x48'),'online':!![],'id':{'$ne':_0x44969a['id']}}});}})[_0x625e('0x11')](function(_0xf8957a){if(_0xf8957a){_0x162593=_0xf8957a;return require(_0x625e('0x49'))[_0x625e('0x4a')]();}})[_0x625e('0x11')](function(_0x4cc190){if(_0x4cc190&&_0x4cc190[_0x625e('0x4b')]&&_0x162593>=_0x4cc190[_0x625e('0x4b')]){throw new Error(_0x625e('0x4c'));}})['then'](function(){if(_0x44969a){return db[_0x625e('0x4d')][_0x625e('0x4e')]({'where':{'membername':_0x44969a['name']},'individualHooks':!![]});}})['then'](function(){if(_0x44969a){return _0x44969a[_0x625e('0x4f')]({'raw':!![]});}})['then'](function(_0xb2409d){if(_0x44969a){if(_0xb2409d){var _0xc47858=[];_0x462171=_0xb2409d;if(_0x462171[_0x625e('0x26')]){for(var _0x6671fc=0x0;_0x6671fc<_0x462171['length'];_0x6671fc++){_0xc47858[_0x625e('0x2a')](db[_0x625e('0x4d')]['upsert']({'membername':_0x44969a[_0x625e('0x1d')],'UserId':_0x44969a['id'],'queue_name':_0x462171[_0x6671fc][_0x625e('0x1d')],'VoiceQueueId':_0x462171[_0x6671fc]['id'],'interface':_0x16dcd3,'paused':_0x44969a[_0x625e('0x46')]||![],'penalty':_0x462171[_0x6671fc][_0x625e('0x50')]||0x0}));}return BPromise[_0x625e('0x51')](_0xc47858);}}}})[_0x625e('0x11')](function(){if(_0x44969a){return db[_0x625e('0x2f')][_0x625e('0x24')]({'where':{'membername':_0x44969a[_0x625e('0x1d')],'exitAt':null}});}})['then'](function(_0x4c568c){if(_0x44969a){if(_0x4c568c&&_0x4c568c[_0x625e('0x26')]){var _0x484ed5=[];_0x4c568c[_0x625e('0x42')](function(_0x15f73d){_0x484ed5['push'](_0x15f73d[_0x625e('0x31')]({'exitAt':moment()[_0x625e('0x21')](_0x625e('0x27'))}));});return BPromise[_0x625e('0x51')](_0x484ed5);}}})[_0x625e('0x11')](function(){if(_0x44969a){var _0x373881=[];var _0x3e3a58=[];var _0x320bbf=utils[_0x625e('0x29')]();var _0x4a369a={'membername':_0x44969a['name'],'interface':_0x16dcd3,'enterAt':moment()[_0x625e('0x21')](_0x625e('0x27')),'role':_0x44969a[_0x625e('0x1e')],'internal':_0x44969a[_0x625e('0x1f')]};_0x320bbf[_0x625e('0x42')](function(_0x55391d){_0x373881['push'](_[_0x625e('0x52')]({'channel':_0x55391d,'type':_0x625e('0x53'),'data1':_0x625e('0x54'),'data2':_0x16dcd3},_0x4a369a));if(_0x44969a[_0x625e('0x46')]){_0x3e3a58[_0x625e('0x2a')](_[_0x625e('0x52')]({'channel':_0x55391d,'type':_0x625e('0x25'),'data1':_0x625e('0x55')},_0x4a369a));}});return db[_0x625e('0x2f')][_0x625e('0x30')](_0x373881['concat'](_0x3e3a58),{'individualHooks':!![]});}})[_0x625e('0x11')](function(){if(_0x44969a){return _0x44969a[_0x625e('0x31')]({'online':!![],'lastLoginAt':moment()[_0x625e('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x44969a['loginInPause']||![],'mailPause':_0x44969a['loginInPause']||![],'chatPause':_0x44969a[_0x625e('0x46')]||![],'faxPause':_0x44969a[_0x625e('0x46')]||![],'smsPause':_0x44969a[_0x625e('0x46')]||![],'openchannelPause':_0x44969a[_0x625e('0x46')]||![],'pauseType':_0x44969a[_0x625e('0x46')]?_0x625e('0x55'):null,'lastPauseAt':moment()[_0x625e('0x21')](_0x625e('0x27')),'interface':_0x16dcd3});}})[_0x625e('0x11')](function(_0x1be004){_0x1046e5(_0x1be004);})['catch'](function(_0x2ee562){_0x2875ac(_0x1c421c[_0x625e('0x16')](0x1f4,_0x2ee562[_0x625e('0x17')]));});});};