Built motion from commit f3da74b7.|2.5.36
[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 _0x85ab=['getVoiceQueues','UserVoiceQueue.penalty','callysquare','LOGININPAUSE','loginInPause','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','./user.socket','register','request','then','info','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','result','catch','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','debug','find','ShowUser','PauseUser','role','interface','UserVoiceQueueRt','update','MemberReport','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','forEach','push','name','isNil','SIP/%s','PAUSE','DEFAULT\x20PAUSE','internal','body','uniqueid','bulkCreate','type','findOne','channel','voice','system','mail','fax','sms','openchannel','set','%s%s','Pause','all','destroy','LoginUser','mobile','phone','count','agent','agents','Maximum\x20login\x20has\x20been\x20reached'];(function(_0x48f382,_0x5527f5){var _0x42fdbd=function(_0x23d828){while(--_0x23d828){_0x48f382['push'](_0x48f382['shift']());}};_0x42fdbd(++_0x5527f5);}(_0x85ab,0xb7));var _0xb85a=function(_0x505684,_0x2c1dc9){_0x505684=_0x505684-0x0;var _0x4389b0=_0x85ab[_0x505684];return _0x4389b0;};'use strict';var _=require(_0xb85a('0x0'));var util=require(_0xb85a('0x1'));var moment=require(_0xb85a('0x2'));var BPromise=require(_0xb85a('0x3'));var rs=require(_0xb85a('0x4'));var fs=require('fs');var Redis=require(_0xb85a('0x5'));var db=require(_0xb85a('0x6'))['db'];var utils=require(_0xb85a('0x7'));var logger=require(_0xb85a('0x8'))(_0xb85a('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb85a('0xa')]['http']({'port':0x232a});config[_0xb85a('0xb')]=_[_0xb85a('0xc')](config['redis'],{'host':_0xb85a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb85a('0xb')]));require(_0xb85a('0xe'))[_0xb85a('0xf')](socket);function respondWithRpcPromise(_0x15e6e2,_0x5cfbbb,_0x594080){return new BPromise(function(_0x5cf47f,_0x4db56a){return client[_0xb85a('0x10')](_0x15e6e2,_0x594080)[_0xb85a('0x11')](function(_0x420738){logger[_0xb85a('0x12')]('User,\x20%s,\x20%s',_0x5cfbbb,_0xb85a('0x13'));logger['debug'](_0xb85a('0x14'),_0x5cfbbb,_0xb85a('0x13'),JSON[_0xb85a('0x15')](_0x420738));if(_0x420738[_0xb85a('0x16')]){if(_0x420738['error'][_0xb85a('0x17')]===0x1f4){logger[_0xb85a('0x16')](_0xb85a('0x18'),_0x5cfbbb,_0x420738['error'][_0xb85a('0x19')]);return _0x4db56a(_0x420738['error'][_0xb85a('0x19')]);}logger[_0xb85a('0x16')](_0xb85a('0x18'),_0x5cfbbb,_0x420738[_0xb85a('0x16')][_0xb85a('0x19')]);return _0x5cf47f(_0x420738[_0xb85a('0x16')][_0xb85a('0x19')]);}else{logger[_0xb85a('0x12')](_0xb85a('0x18'),_0x5cfbbb,_0xb85a('0x13'));_0x5cf47f(_0x420738[_0xb85a('0x1a')][_0xb85a('0x19')]);}})[_0xb85a('0x1b')](function(_0x161c25){logger[_0xb85a('0x16')]('User,\x20%s,\x20%s',_0x5cfbbb,_0x161c25);_0x4db56a(_0x161c25);});});}exports[_0xb85a('0x1c')]=function(_0x54289a){var _0x2256a7=this;return new Promise(function(_0x4245c2,_0x23d816){return db[_0xb85a('0x1d')][_0xb85a('0x1e')]({'raw':_0x54289a[_0xb85a('0x1f')]?_0x54289a[_0xb85a('0x1f')][_0xb85a('0x20')]===undefined?!![]:![]:!![],'where':_0x54289a['options']?_0x54289a[_0xb85a('0x1f')][_0xb85a('0x21')]||null:null,'attributes':_0x54289a[_0xb85a('0x1f')]?_0x54289a[_0xb85a('0x1f')][_0xb85a('0x22')]||null:null,'limit':_0x54289a['options']?_0x54289a['options'][_0xb85a('0x23')]||null:null,'include':_0x54289a[_0xb85a('0x1f')]?_0x54289a[_0xb85a('0x1f')][_0xb85a('0x24')]?_[_0xb85a('0x25')](_0x54289a[_0xb85a('0x1f')][_0xb85a('0x24')],function(_0x44ea50){return{'model':db[_0x44ea50['model']],'as':_0x44ea50['as'],'attributes':_0x44ea50['attributes'],'include':_0x44ea50[_0xb85a('0x24')]?_['map'](_0x44ea50[_0xb85a('0x24')],function(_0x121792){return{'model':db[_0x121792[_0xb85a('0x26')]],'as':_0x121792['as'],'attributes':_0x121792['attributes'],'include':_0x121792[_0xb85a('0x24')]?_['map'](_0x121792['include'],function(_0x3add6b){return{'model':db[_0x3add6b['model']],'as':_0x3add6b['as'],'attributes':_0x3add6b[_0xb85a('0x22')]};}):[]};}):[]};}):[]:[]})[_0xb85a('0x11')](function(_0x36364c){logger[_0xb85a('0x12')](_0xb85a('0x1c'),_0x54289a);logger[_0xb85a('0x27')]('GetUser',_0x54289a,JSON['stringify'](_0x36364c));_0x4245c2(_0x36364c);})['catch'](function(_0x1bfea2){logger['error']('GetUser',_0x1bfea2[_0xb85a('0x19')],_0x54289a);_0x23d816(_0x2256a7[_0xb85a('0x16')](0x1f4,_0x1bfea2[_0xb85a('0x19')]));});});};exports['ShowUser']=function(_0x2cf992){var _0x343941=this;return new Promise(function(_0x42ff35,_0x5fd5cb){return db[_0xb85a('0x1d')][_0xb85a('0x28')]({'raw':_0x2cf992[_0xb85a('0x1f')]?_0x2cf992[_0xb85a('0x1f')][_0xb85a('0x20')]===undefined?!![]:![]:!![],'where':_0x2cf992[_0xb85a('0x1f')]?_0x2cf992[_0xb85a('0x1f')][_0xb85a('0x21')]||null:null,'attributes':_0x2cf992[_0xb85a('0x1f')]?_0x2cf992['options'][_0xb85a('0x22')]||null:null,'include':_0x2cf992['options']?_0x2cf992[_0xb85a('0x1f')][_0xb85a('0x24')]?_[_0xb85a('0x25')](_0x2cf992['options'][_0xb85a('0x24')],function(_0x14845d){return{'model':db[_0x14845d[_0xb85a('0x26')]],'as':_0x14845d['as'],'attributes':_0x14845d[_0xb85a('0x22')],'include':_0x14845d['include']?_[_0xb85a('0x25')](_0x14845d[_0xb85a('0x24')],function(_0xa0573f){return{'model':db[_0xa0573f['model']],'as':_0xa0573f['as'],'attributes':_0xa0573f[_0xb85a('0x22')],'include':_0xa0573f['include']?_[_0xb85a('0x25')](_0xa0573f[_0xb85a('0x24')],function(_0x1f44b5){return{'model':db[_0x1f44b5[_0xb85a('0x26')]],'as':_0x1f44b5['as'],'attributes':_0x1f44b5[_0xb85a('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xbdb392){logger[_0xb85a('0x12')](_0xb85a('0x29'),_0x2cf992);logger[_0xb85a('0x27')](_0xb85a('0x29'),_0x2cf992,JSON[_0xb85a('0x15')](_0xbdb392));_0x42ff35(_0xbdb392);})[_0xb85a('0x1b')](function(_0x3d8152){logger[_0xb85a('0x16')](_0xb85a('0x29'),_0x3d8152[_0xb85a('0x19')],_0x2cf992);_0x5fd5cb(_0x343941['error'](0x1f4,_0x3d8152[_0xb85a('0x19')]));});});};exports[_0xb85a('0x2a')]=function(_0x2a634c){var _0x42a6a0=this;return new Promise(function(_0x1d1dd5,_0x3a3cb0){var _0x14c719;return db[_0xb85a('0x1d')][_0xb85a('0x28')]({'where':_0x2a634c['options'][_0xb85a('0x21')]||{},'attributes':['id','name',_0xb85a('0x2b'),'internal',_0xb85a('0x2c')]})[_0xb85a('0x11')](function(_0x424ce9){if(_0x424ce9){_0x14c719=_0x424ce9;return db[_0xb85a('0x2d')][_0xb85a('0x2e')]({'paused':0x1},{'where':{'UserId':_0x14c719['id']},'individualHooks':!![]});}})[_0xb85a('0x11')](function(){if(_0x14c719){return db[_0xb85a('0x2f')][_0xb85a('0x1e')]({'where':{'membername':_0x14c719['name'],'type':'PAUSE','exitAt':null}});}})[_0xb85a('0x11')](function(_0x293fbc){if(_0x14c719){if(_0x293fbc&&_0x293fbc['length']){var _0x4d6e9e=moment()[_0xb85a('0x30')](_0xb85a('0x31'));for(var _0x296c77=0x0,_0x34cf92=_0x293fbc[_0xb85a('0x32')];_0x296c77<_0x34cf92;_0x296c77++){_0x293fbc[_0x296c77][_0xb85a('0x33')]({'exitAt':_0x4d6e9e});}}}})['then'](function(){if(_0x14c719){var _0x29b719=[];var _0xb4f609=utils['getChannels']();_0xb4f609[_0xb85a('0x34')](function(_0x11fadf){_0x29b719[_0xb85a('0x35')]({'channel':_0x11fadf,'membername':_0x14c719[_0xb85a('0x36')],'interface':_[_0xb85a('0x37')](_0x14c719[_0xb85a('0x2c')])?util[_0xb85a('0x30')](_0xb85a('0x38'),_0x14c719[_0xb85a('0x36')]):_0x14c719[_0xb85a('0x2c')],'type':_0xb85a('0x39'),'enterAt':moment()[_0xb85a('0x30')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x2a634c['body']['type']||_0xb85a('0x3a'),'role':_0x14c719[_0xb85a('0x2b')],'internal':_0x14c719[_0xb85a('0x3b')],'uniqueid':_0x2a634c[_0xb85a('0x3c')][_0xb85a('0x3d')]||null});});return db['MemberReport'][_0xb85a('0x3e')](_0x29b719,{'individualHooks':!![]});}})[_0xb85a('0x11')](function(){if(_0x14c719){return _0x14c719[_0xb85a('0x2e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2a634c[_0xb85a('0x3c')][_0xb85a('0x3f')]||_0xb85a('0x3a'),'lastPauseAt':moment()['format'](_0xb85a('0x31'))});}})[_0xb85a('0x11')](function(_0x183813){_0x1d1dd5(_0x183813);})['catch'](function(_0x581a71){_0x3a3cb0(_0x42a6a0['error'](0x1f4,_0x581a71[_0xb85a('0x19')]));});});};exports['UnpauseUser']=function(_0x522e23){var _0x255c85=this;return new Promise(function(_0x13f303,_0x497b10){var _0x474b6b;return db[_0xb85a('0x1d')][_0xb85a('0x40')]({'where':_0x522e23[_0xb85a('0x1f')][_0xb85a('0x21')]||{},'attributes':['id','name']})['then'](function(_0x15b4e4){if(_0x15b4e4){_0x474b6b=_0x15b4e4;if(_0x522e23[_0xb85a('0x3c')]['channel']&&!utils['isValidChannel'](_0x522e23[_0xb85a('0x3c')][_0xb85a('0x41')])){throw new Error('Unknown\x20channel');}switch(_0x522e23[_0xb85a('0x3c')][_0xb85a('0x41')]){case _0xb85a('0x42'):return db[_0xb85a('0x2d')][_0xb85a('0x2e')]({'paused':0x0},{'where':{'UserId':_0x474b6b['id']}})['then'](function(){return db[_0xb85a('0x2f')][_0xb85a('0x28')]({'where':{'channel':_0x522e23[_0xb85a('0x3c')][_0xb85a('0x41')],'membername':_0x474b6b[_0xb85a('0x36')],'type':_0xb85a('0x39'),'exitAt':null}});})[_0xb85a('0x11')](function(_0x44ba1){if(_0x44ba1){return _0x44ba1['update']({'exitAt':moment()[_0xb85a('0x30')](_0xb85a('0x31')),'data2':_0xb85a('0x43')},{'individualHooks':!![]});}return null;})[_0xb85a('0x11')](function(){return _0x474b6b['update']({'voicePause':![]});});case _0xb85a('0x44'):case'chat':case _0xb85a('0x45'):case _0xb85a('0x46'):case _0xb85a('0x47'):case'whatsapp':return db['MemberReport'][_0xb85a('0x28')]({'where':{'channel':_0x522e23[_0xb85a('0x3c')][_0xb85a('0x41')],'membername':_0x474b6b[_0xb85a('0x36')],'type':'PAUSE','exitAt':null}})[_0xb85a('0x11')](function(_0x22176a){return _0x22176a[_0xb85a('0x2e')]({'exitAt':moment()[_0xb85a('0x30')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xb85a('0x43')},{'individualHooks':!![]});})[_0xb85a('0x11')](function(){var _0x296b2b={};_[_0xb85a('0x48')](_0x296b2b,util[_0xb85a('0x30')](_0xb85a('0x49'),_0x522e23[_0xb85a('0x3c')][_0xb85a('0x41')],_0xb85a('0x4a')),![]);return _0x474b6b['update'](_0x296b2b);});default:return db[_0xb85a('0x2d')][_0xb85a('0x2e')]({'paused':0x0},{'where':{'UserId':_0x474b6b['id']}})[_0xb85a('0x11')](function(){return db[_0xb85a('0x2f')][_0xb85a('0x1e')]({'where':{'membername':_0x474b6b[_0xb85a('0x36')],'type':'PAUSE','exitAt':null}});})[_0xb85a('0x11')](function(_0x2ad7ca){var _0x4a8467=[];_0x2ad7ca[_0xb85a('0x34')](function(_0x4d6d94){_0x4a8467[_0xb85a('0x35')](_0x4d6d94['update']({'exitAt':moment()[_0xb85a('0x30')](_0xb85a('0x31')),'data2':_0xb85a('0x43')}));});return BPromise[_0xb85a('0x4b')](_0x4a8467);})[_0xb85a('0x11')](function(){return _0x474b6b['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xb85a('0x11')](function(_0x4fb124){_0x13f303(_0x4fb124);})[_0xb85a('0x1b')](function(_0xdd5054){_0x497b10(_0x255c85[_0xb85a('0x16')](0x1f4,_0xdd5054[_0xb85a('0x19')]));});});};exports['LogoutUser']=function(_0x193558){var _0xc8ab41=this;return new Promise(function(_0x1463f6,_0x54c384){var _0x1febc2;return db[_0xb85a('0x1d')][_0xb85a('0x40')]({'where':_0x193558[_0xb85a('0x1f')]['where']||{},'attributes':['id','name']})[_0xb85a('0x11')](function(_0x4acf65){if(_0x4acf65){_0x1febc2=_0x4acf65;return db[_0xb85a('0x2d')][_0xb85a('0x4c')]({'where':{'membername':_0x1febc2['name']},'individualHooks':!![]});}})[_0xb85a('0x11')](function(){if(_0x1febc2){return db[_0xb85a('0x2f')]['findAll']({'where':{'membername':_0x1febc2[_0xb85a('0x36')],'exitAt':null}});}})[_0xb85a('0x11')](function(_0x27fccc){if(_0x1febc2){if(_0x27fccc&&_0x27fccc['length']){var _0x14a181=[];_0x27fccc['forEach'](function(_0x2589cb){_0x14a181[_0xb85a('0x35')](_0x2589cb[_0xb85a('0x2e')]({'exitAt':moment()['format'](_0xb85a('0x31'))}));});return BPromise['all'](_0x14a181);}}})['then'](function(){if(_0x1febc2){return _0x1febc2['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xb85a('0x11')](function(_0x5d0e23){_0x1463f6(_0x5d0e23);})['catch'](function(_0x1c85d4){_0x54c384(_0xc8ab41[_0xb85a('0x16')](0x1f4,_0x1c85d4[_0xb85a('0x19')]));});});};exports[_0xb85a('0x4d')]=function(_0x273712){var _0x48f6b5=this;return new Promise(function(_0x148290,_0x3d9aee){var _0x177976;var _0x51a633;var _0x3028c3;var _0xef1c2e;return db[_0xb85a('0x1d')][_0xb85a('0x40')]({'where':_0x273712[_0xb85a('0x1f')]['where']||{},'attributes':['id',_0xb85a('0x36'),'role',_0xb85a('0x4e'),_0xb85a('0x4f'),_0xb85a('0x3b'),'loginInPause',_0xb85a('0x2c')]})[_0xb85a('0x11')](function(_0x3092c5){if(_0x3092c5){_0x177976=_0x3092c5;_0xef1c2e=_0x273712[_0xb85a('0x3c')][_0xb85a('0x2c')]?_0x273712[_0xb85a('0x3c')]['interface']:util[_0xb85a('0x30')]('SIP/%s',_0x177976[_0xb85a('0x36')]);return db[_0xb85a('0x1d')][_0xb85a('0x50')]({'where':{'role':_0xb85a('0x51'),'online':!![],'id':{'$ne':_0x177976['id']}}});}})[_0xb85a('0x11')](function(_0x47b148){if(_0x47b148){_0x3028c3=_0x47b148;return require('../../config/license/util')['getLicense']();}})[_0xb85a('0x11')](function(_0x1dfd51){if(_0x1dfd51&&_0x1dfd51['agents']&&_0x3028c3>=_0x1dfd51[_0xb85a('0x52')]){throw new Error(_0xb85a('0x53'));}})[_0xb85a('0x11')](function(){if(_0x177976){return db[_0xb85a('0x2d')]['destroy']({'where':{'membername':_0x177976['name']},'individualHooks':!![]});}})[_0xb85a('0x11')](function(){if(_0x177976){return _0x177976[_0xb85a('0x54')]({'raw':!![]});}})[_0xb85a('0x11')](function(_0x5518e5){if(_0x177976){if(_0x5518e5){var _0x1f4386=[];_0x51a633=_0x5518e5;if(_0x51a633[_0xb85a('0x32')]){for(var _0x3d1c20=0x0;_0x3d1c20<_0x51a633[_0xb85a('0x32')];_0x3d1c20++){_0x1f4386[_0xb85a('0x35')](db['UserVoiceQueueRt']['upsert']({'membername':_0x177976['name'],'UserId':_0x177976['id'],'queue_name':_0x51a633[_0x3d1c20][_0xb85a('0x36')],'VoiceQueueId':_0x51a633[_0x3d1c20]['id'],'interface':_0xef1c2e,'paused':_0x177976['loginInPause']||![],'penalty':_0x51a633[_0x3d1c20][_0xb85a('0x55')]||0x0}));}return BPromise[_0xb85a('0x4b')](_0x1f4386);}}}})[_0xb85a('0x11')](function(){if(_0x177976){return db['MemberReport'][_0xb85a('0x1e')]({'where':{'membername':_0x177976[_0xb85a('0x36')],'exitAt':null}});}})['then'](function(_0x18d6ed){if(_0x177976){if(_0x18d6ed&&_0x18d6ed['length']){var _0xf88cfd=[];_0x18d6ed[_0xb85a('0x34')](function(_0xca6d65){_0xf88cfd[_0xb85a('0x35')](_0xca6d65['update']({'exitAt':moment()[_0xb85a('0x30')](_0xb85a('0x31'))}));});return BPromise[_0xb85a('0x4b')](_0xf88cfd);}}})['then'](function(_0x265466){if(_0x177976){var _0x1d6e00=[];var _0x484508=[];var _0x43817d=utils['getChannels']();var _0x434c58={'membername':_0x177976[_0xb85a('0x36')],'interface':_0xef1c2e,'enterAt':moment()['format'](_0xb85a('0x31')),'role':_0x177976['role'],'internal':_0x177976['internal']};_0x43817d[_0xb85a('0x34')](function(_0x342ba3){_0x1d6e00[_0xb85a('0x35')](_['merge']({'channel':_0x342ba3,'type':'LOGIN','data1':_0xb85a('0x56'),'data2':_0xef1c2e},_0x434c58));if(_0x177976['loginInPause']){_0x484508[_0xb85a('0x35')](_['merge']({'channel':_0x342ba3,'type':_0xb85a('0x39'),'data1':_0xb85a('0x57')},_0x434c58));}});return db[_0xb85a('0x2f')][_0xb85a('0x3e')](_0x1d6e00['concat'](_0x484508),{'individualHooks':!![]});}})[_0xb85a('0x11')](function(){if(_0x177976){return _0x177976['update']({'online':!![],'lastLoginAt':moment()['format'](_0xb85a('0x31')),'voicePause':_0x177976['loginInPause']||![],'mailPause':_0x177976[_0xb85a('0x58')]||![],'chatPause':_0x177976['loginInPause']||![],'faxPause':_0x177976[_0xb85a('0x58')]||![],'smsPause':_0x177976[_0xb85a('0x58')]||![],'openchannelPause':_0x177976[_0xb85a('0x58')]||![],'pauseType':_0x177976[_0xb85a('0x58')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xb85a('0x30')](_0xb85a('0x31')),'interface':_0xef1c2e});}})[_0xb85a('0x11')](function(_0x518fbd){_0x148290(_0x518fbd);})[_0xb85a('0x1b')](function(_0xd134a3){_0x3d9aee(_0x48f6b5[_0xb85a('0x16')](0x1f4,_0xd134a3[_0xb85a('0x19')]));});});};