Built motion from commit 932cf0d0.|2.5.42
[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 _0x6ac2=['format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','interface','SIP/%s','body','type','uniqueid','DEFAULT\x20PAUSE','UnpauseUser','channel','isValidChannel','voice','system','chat','fax','sms','whatsapp','set','%s%s','Pause','all','LogoutUser','destroy','LoginUser','findOne','mobile','phone','internal','loginInPause','count','../../config/license/util','getLicense','agents','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','User','findAll','options','raw','where','attributes','include','map','model','GetUser','ShowUser','find','PauseUser','name','role','UserVoiceQueueRt','update','MemberReport','PAUSE','length'];(function(_0x368efd,_0x145f1e){var _0x2ad819=function(_0x383828){while(--_0x383828){_0x368efd['push'](_0x368efd['shift']());}};_0x2ad819(++_0x145f1e);}(_0x6ac2,0x8d));var _0x26ac=function(_0x2aaabb,_0x2c7819){_0x2aaabb=_0x2aaabb-0x0;var _0x21b1e9=_0x6ac2[_0x2aaabb];return _0x21b1e9;};'use strict';var _=require('lodash');var util=require(_0x26ac('0x0'));var moment=require(_0x26ac('0x1'));var BPromise=require(_0x26ac('0x2'));var rs=require(_0x26ac('0x3'));var fs=require('fs');var Redis=require(_0x26ac('0x4'));var db=require(_0x26ac('0x5'))['db'];var utils=require(_0x26ac('0x6'));var logger=require(_0x26ac('0x7'))(_0x26ac('0x8'));var config=require('../../config/environment');var jayson=require(_0x26ac('0x9'));var client=jayson[_0x26ac('0xa')][_0x26ac('0xb')]({'port':0x232a});config[_0x26ac('0xc')]=_[_0x26ac('0xd')](config[_0x26ac('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x26ac('0xe'))(new Redis(config[_0x26ac('0xc')]));require(_0x26ac('0xf'))[_0x26ac('0x10')](socket);function respondWithRpcPromise(_0x4b4020,_0xced423,_0x24800c){return new BPromise(function(_0x49d41c,_0x70a8df){return client[_0x26ac('0x11')](_0x4b4020,_0x24800c)[_0x26ac('0x12')](function(_0x409656){logger[_0x26ac('0x13')](_0x26ac('0x14'),_0xced423,_0x26ac('0x15'));logger[_0x26ac('0x16')](_0x26ac('0x17'),_0xced423,'request\x20sent',JSON[_0x26ac('0x18')](_0x409656));if(_0x409656[_0x26ac('0x19')]){if(_0x409656[_0x26ac('0x19')][_0x26ac('0x1a')]===0x1f4){logger['error'](_0x26ac('0x14'),_0xced423,_0x409656[_0x26ac('0x19')]['message']);return _0x70a8df(_0x409656['error']['message']);}logger[_0x26ac('0x19')](_0x26ac('0x14'),_0xced423,_0x409656[_0x26ac('0x19')][_0x26ac('0x1b')]);return _0x49d41c(_0x409656['error'][_0x26ac('0x1b')]);}else{logger[_0x26ac('0x13')](_0x26ac('0x14'),_0xced423,_0x26ac('0x15'));_0x49d41c(_0x409656['result']['message']);}})[_0x26ac('0x1c')](function(_0x191f0d){logger[_0x26ac('0x19')](_0x26ac('0x14'),_0xced423,_0x191f0d);_0x70a8df(_0x191f0d);});});}exports['GetUser']=function(_0x373712){var _0x1d1e1e=this;return new Promise(function(_0x27c96c,_0x403cfb){return db[_0x26ac('0x1d')][_0x26ac('0x1e')]({'raw':_0x373712[_0x26ac('0x1f')]?_0x373712[_0x26ac('0x1f')][_0x26ac('0x20')]===undefined?!![]:![]:!![],'where':_0x373712[_0x26ac('0x1f')]?_0x373712['options'][_0x26ac('0x21')]||null:null,'attributes':_0x373712[_0x26ac('0x1f')]?_0x373712[_0x26ac('0x1f')][_0x26ac('0x22')]||null:null,'limit':_0x373712['options']?_0x373712[_0x26ac('0x1f')]['limit']||null:null,'include':_0x373712[_0x26ac('0x1f')]?_0x373712['options'][_0x26ac('0x23')]?_[_0x26ac('0x24')](_0x373712['options']['include'],function(_0x1d329c){return{'model':db[_0x1d329c[_0x26ac('0x25')]],'as':_0x1d329c['as'],'attributes':_0x1d329c['attributes'],'include':_0x1d329c[_0x26ac('0x23')]?_[_0x26ac('0x24')](_0x1d329c['include'],function(_0x5506ef){return{'model':db[_0x5506ef[_0x26ac('0x25')]],'as':_0x5506ef['as'],'attributes':_0x5506ef[_0x26ac('0x22')],'include':_0x5506ef['include']?_[_0x26ac('0x24')](_0x5506ef[_0x26ac('0x23')],function(_0x167470){return{'model':db[_0x167470[_0x26ac('0x25')]],'as':_0x167470['as'],'attributes':_0x167470['attributes']};}):[]};}):[]};}):[]:[]})[_0x26ac('0x12')](function(_0x374288){logger[_0x26ac('0x13')]('GetUser',_0x373712);logger[_0x26ac('0x16')](_0x26ac('0x26'),_0x373712,JSON[_0x26ac('0x18')](_0x374288));_0x27c96c(_0x374288);})[_0x26ac('0x1c')](function(_0x2f7f6c){logger[_0x26ac('0x19')](_0x26ac('0x26'),_0x2f7f6c['message'],_0x373712);_0x403cfb(_0x1d1e1e[_0x26ac('0x19')](0x1f4,_0x2f7f6c[_0x26ac('0x1b')]));});});};exports[_0x26ac('0x27')]=function(_0x1add71){var _0x15797a=this;return new Promise(function(_0x15c078,_0x70d39c){return db['User'][_0x26ac('0x28')]({'raw':_0x1add71['options']?_0x1add71[_0x26ac('0x1f')][_0x26ac('0x20')]===undefined?!![]:![]:!![],'where':_0x1add71[_0x26ac('0x1f')]?_0x1add71[_0x26ac('0x1f')][_0x26ac('0x21')]||null:null,'attributes':_0x1add71[_0x26ac('0x1f')]?_0x1add71[_0x26ac('0x1f')][_0x26ac('0x22')]||null:null,'include':_0x1add71[_0x26ac('0x1f')]?_0x1add71[_0x26ac('0x1f')][_0x26ac('0x23')]?_[_0x26ac('0x24')](_0x1add71[_0x26ac('0x1f')]['include'],function(_0x11f8b0){return{'model':db[_0x11f8b0['model']],'as':_0x11f8b0['as'],'attributes':_0x11f8b0['attributes'],'include':_0x11f8b0[_0x26ac('0x23')]?_[_0x26ac('0x24')](_0x11f8b0[_0x26ac('0x23')],function(_0x1c9234){return{'model':db[_0x1c9234['model']],'as':_0x1c9234['as'],'attributes':_0x1c9234[_0x26ac('0x22')],'include':_0x1c9234[_0x26ac('0x23')]?_[_0x26ac('0x24')](_0x1c9234[_0x26ac('0x23')],function(_0x3d0154){return{'model':db[_0x3d0154[_0x26ac('0x25')]],'as':_0x3d0154['as'],'attributes':_0x3d0154[_0x26ac('0x22')]};}):[]};}):[]};}):[]:[]})[_0x26ac('0x12')](function(_0x182913){logger[_0x26ac('0x13')]('ShowUser',_0x1add71);logger[_0x26ac('0x16')](_0x26ac('0x27'),_0x1add71,JSON[_0x26ac('0x18')](_0x182913));_0x15c078(_0x182913);})[_0x26ac('0x1c')](function(_0x46802c){logger['error']('ShowUser',_0x46802c['message'],_0x1add71);_0x70d39c(_0x15797a[_0x26ac('0x19')](0x1f4,_0x46802c['message']));});});};exports[_0x26ac('0x29')]=function(_0x1b1960){var _0x466c9d=this;return new Promise(function(_0x12b3ea,_0x335bcf){var _0x2e4ad2;return db[_0x26ac('0x1d')][_0x26ac('0x28')]({'where':_0x1b1960[_0x26ac('0x1f')][_0x26ac('0x21')]||{},'attributes':['id',_0x26ac('0x2a'),_0x26ac('0x2b'),'internal','interface']})['then'](function(_0x8c2bb0){if(_0x8c2bb0){_0x2e4ad2=_0x8c2bb0;return db[_0x26ac('0x2c')][_0x26ac('0x2d')]({'paused':0x1},{'where':{'UserId':_0x2e4ad2['id']},'individualHooks':!![]});}})[_0x26ac('0x12')](function(){if(_0x2e4ad2){return db[_0x26ac('0x2e')]['findAll']({'where':{'membername':_0x2e4ad2[_0x26ac('0x2a')],'type':_0x26ac('0x2f'),'exitAt':null}});}})['then'](function(_0x43680f){if(_0x2e4ad2){if(_0x43680f&&_0x43680f[_0x26ac('0x30')]){var _0x5e2584=moment()[_0x26ac('0x31')](_0x26ac('0x32'));for(var _0x15d94a=0x0,_0xcb36d=_0x43680f['length'];_0x15d94a<_0xcb36d;_0x15d94a++){_0x43680f[_0x15d94a][_0x26ac('0x33')]({'exitAt':_0x5e2584});}}}})[_0x26ac('0x12')](function(){if(_0x2e4ad2){var _0x44ca1d=[];var _0x5a0d0b=utils[_0x26ac('0x34')]();_0x5a0d0b[_0x26ac('0x35')](function(_0x4d2132){_0x44ca1d[_0x26ac('0x36')]({'channel':_0x4d2132,'membername':_0x2e4ad2['name'],'interface':_[_0x26ac('0x37')](_0x2e4ad2[_0x26ac('0x38')])?util[_0x26ac('0x31')](_0x26ac('0x39'),_0x2e4ad2[_0x26ac('0x2a')]):_0x2e4ad2[_0x26ac('0x38')],'type':_0x26ac('0x2f'),'enterAt':moment()['format'](_0x26ac('0x32')),'data1':_0x1b1960[_0x26ac('0x3a')][_0x26ac('0x3b')]||'DEFAULT\x20PAUSE','role':_0x2e4ad2[_0x26ac('0x2b')],'internal':_0x2e4ad2['internal'],'uniqueid':_0x1b1960[_0x26ac('0x3a')][_0x26ac('0x3c')]||null});});return db[_0x26ac('0x2e')]['bulkCreate'](_0x44ca1d,{'individualHooks':!![]});}})['then'](function(){if(_0x2e4ad2){return _0x2e4ad2[_0x26ac('0x2d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1b1960[_0x26ac('0x3a')][_0x26ac('0x3b')]||_0x26ac('0x3d'),'lastPauseAt':moment()[_0x26ac('0x31')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x179df0){_0x12b3ea(_0x179df0);})[_0x26ac('0x1c')](function(_0x9bbd2d){_0x335bcf(_0x466c9d['error'](0x1f4,_0x9bbd2d[_0x26ac('0x1b')]));});});};exports[_0x26ac('0x3e')]=function(_0x3a9e85){var _0x329b74=this;return new Promise(function(_0x32a3e8,_0x2b4d99){var _0x38c8f4;return db[_0x26ac('0x1d')]['findOne']({'where':_0x3a9e85[_0x26ac('0x1f')][_0x26ac('0x21')]||{},'attributes':['id',_0x26ac('0x2a')]})[_0x26ac('0x12')](function(_0x23ba37){if(_0x23ba37){_0x38c8f4=_0x23ba37;if(_0x3a9e85[_0x26ac('0x3a')][_0x26ac('0x3f')]&&!utils[_0x26ac('0x40')](_0x3a9e85[_0x26ac('0x3a')][_0x26ac('0x3f')])){throw new Error('Unknown\x20channel');}switch(_0x3a9e85['body']['channel']){case _0x26ac('0x41'):return db[_0x26ac('0x2c')][_0x26ac('0x2d')]({'paused':0x0},{'where':{'UserId':_0x38c8f4['id']}})['then'](function(){return db['MemberReport'][_0x26ac('0x28')]({'where':{'channel':_0x3a9e85[_0x26ac('0x3a')]['channel'],'membername':_0x38c8f4[_0x26ac('0x2a')],'type':_0x26ac('0x2f'),'exitAt':null}});})[_0x26ac('0x12')](function(_0x403203){if(_0x403203){return _0x403203[_0x26ac('0x2d')]({'exitAt':moment()[_0x26ac('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x26ac('0x42')},{'individualHooks':!![]});}return null;})[_0x26ac('0x12')](function(){return _0x38c8f4[_0x26ac('0x2d')]({'voicePause':![]});});case'mail':case _0x26ac('0x43'):case _0x26ac('0x44'):case _0x26ac('0x45'):case'openchannel':case _0x26ac('0x46'):return db[_0x26ac('0x2e')][_0x26ac('0x28')]({'where':{'channel':_0x3a9e85[_0x26ac('0x3a')]['channel'],'membername':_0x38c8f4['name'],'type':'PAUSE','exitAt':null}})[_0x26ac('0x12')](function(_0xed5084){return _0xed5084['update']({'exitAt':moment()[_0x26ac('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});})[_0x26ac('0x12')](function(){var _0x3d877b={};_[_0x26ac('0x47')](_0x3d877b,util[_0x26ac('0x31')](_0x26ac('0x48'),_0x3a9e85[_0x26ac('0x3a')][_0x26ac('0x3f')],_0x26ac('0x49')),![]);return _0x38c8f4[_0x26ac('0x2d')](_0x3d877b);});default:return db[_0x26ac('0x2c')]['update']({'paused':0x0},{'where':{'UserId':_0x38c8f4['id']}})['then'](function(){return db[_0x26ac('0x2e')][_0x26ac('0x1e')]({'where':{'membername':_0x38c8f4[_0x26ac('0x2a')],'type':_0x26ac('0x2f'),'exitAt':null}});})[_0x26ac('0x12')](function(_0x35fccd){var _0x3407fd=[];_0x35fccd['forEach'](function(_0x3716ab){_0x3407fd[_0x26ac('0x36')](_0x3716ab['update']({'exitAt':moment()[_0x26ac('0x31')](_0x26ac('0x32')),'data2':_0x26ac('0x42')}));});return BPromise[_0x26ac('0x4a')](_0x3407fd);})[_0x26ac('0x12')](function(){return _0x38c8f4['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x1cbc58){_0x32a3e8(_0x1cbc58);})[_0x26ac('0x1c')](function(_0x29d0a5){_0x2b4d99(_0x329b74[_0x26ac('0x19')](0x1f4,_0x29d0a5['message']));});});};exports[_0x26ac('0x4b')]=function(_0x2fa202){var _0x3accf4=this;return new Promise(function(_0x1d8df3,_0x344e8c){var _0x421e1b;return db['User']['findOne']({'where':_0x2fa202['options'][_0x26ac('0x21')]||{},'attributes':['id','name']})[_0x26ac('0x12')](function(_0x12cc8b){if(_0x12cc8b){_0x421e1b=_0x12cc8b;return db[_0x26ac('0x2c')][_0x26ac('0x4c')]({'where':{'membername':_0x421e1b[_0x26ac('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x421e1b){return db[_0x26ac('0x2e')][_0x26ac('0x1e')]({'where':{'membername':_0x421e1b['name'],'exitAt':null}});}})[_0x26ac('0x12')](function(_0x10533d){if(_0x421e1b){if(_0x10533d&&_0x10533d[_0x26ac('0x30')]){var _0x5215b0=[];_0x10533d[_0x26ac('0x35')](function(_0x29dcc4){_0x5215b0[_0x26ac('0x36')](_0x29dcc4[_0x26ac('0x2d')]({'exitAt':moment()[_0x26ac('0x31')](_0x26ac('0x32'))}));});return BPromise['all'](_0x5215b0);}}})[_0x26ac('0x12')](function(){if(_0x421e1b){return _0x421e1b[_0x26ac('0x2d')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x26ac('0x12')](function(_0x57f717){_0x1d8df3(_0x57f717);})[_0x26ac('0x1c')](function(_0x15cac9){_0x344e8c(_0x3accf4[_0x26ac('0x19')](0x1f4,_0x15cac9[_0x26ac('0x1b')]));});});};exports[_0x26ac('0x4d')]=function(_0x4a48ba){var _0x4e1043=this;return new Promise(function(_0xc81169,_0x450e63){var _0x5f6e71;var _0x427eed;var _0x229922;var _0x2252a4;return db[_0x26ac('0x1d')][_0x26ac('0x4e')]({'where':_0x4a48ba[_0x26ac('0x1f')]['where']||{},'attributes':['id','name',_0x26ac('0x2b'),_0x26ac('0x4f'),_0x26ac('0x50'),_0x26ac('0x51'),_0x26ac('0x52'),_0x26ac('0x38')]})[_0x26ac('0x12')](function(_0xfd35a5){if(_0xfd35a5){_0x5f6e71=_0xfd35a5;_0x2252a4=_0x4a48ba[_0x26ac('0x3a')][_0x26ac('0x38')]?_0x4a48ba[_0x26ac('0x3a')][_0x26ac('0x38')]:util[_0x26ac('0x31')](_0x26ac('0x39'),_0x5f6e71['name']);return db[_0x26ac('0x1d')][_0x26ac('0x53')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x5f6e71['id']}}});}})[_0x26ac('0x12')](function(_0x3b2383){if(_0x3b2383){_0x229922=_0x3b2383;return require(_0x26ac('0x54'))[_0x26ac('0x55')]();}})[_0x26ac('0x12')](function(_0x51128f){if(_0x51128f&&_0x51128f[_0x26ac('0x56')]&&_0x229922>=_0x51128f[_0x26ac('0x56')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x26ac('0x12')](function(){if(_0x5f6e71){return db['UserVoiceQueueRt'][_0x26ac('0x4c')]({'where':{'membername':_0x5f6e71['name']},'individualHooks':!![]});}})[_0x26ac('0x12')](function(){if(_0x5f6e71){return _0x5f6e71[_0x26ac('0x57')]({'raw':!![]});}})[_0x26ac('0x12')](function(_0x5c7ae8){if(_0x5f6e71){if(_0x5c7ae8){var _0x4a799c=[];_0x427eed=_0x5c7ae8;if(_0x427eed['length']){for(var _0x1cd152=0x0;_0x1cd152<_0x427eed[_0x26ac('0x30')];_0x1cd152++){_0x4a799c['push'](db[_0x26ac('0x2c')][_0x26ac('0x58')]({'membername':_0x5f6e71[_0x26ac('0x2a')],'UserId':_0x5f6e71['id'],'queue_name':_0x427eed[_0x1cd152][_0x26ac('0x2a')],'VoiceQueueId':_0x427eed[_0x1cd152]['id'],'interface':_0x2252a4,'paused':_0x5f6e71[_0x26ac('0x52')]||![],'penalty':_0x427eed[_0x1cd152][_0x26ac('0x59')]||0x0}));}return BPromise[_0x26ac('0x4a')](_0x4a799c);}}}})[_0x26ac('0x12')](function(){if(_0x5f6e71){return db[_0x26ac('0x2e')][_0x26ac('0x1e')]({'where':{'membername':_0x5f6e71[_0x26ac('0x2a')],'exitAt':null}});}})['then'](function(_0x8e5aeb){if(_0x5f6e71){if(_0x8e5aeb&&_0x8e5aeb['length']){var _0x14f4e3=[];_0x8e5aeb['forEach'](function(_0x67e35d){_0x14f4e3['push'](_0x67e35d['update']({'exitAt':moment()['format'](_0x26ac('0x32'))}));});return BPromise[_0x26ac('0x4a')](_0x14f4e3);}}})[_0x26ac('0x12')](function(_0x153b86){if(_0x5f6e71){var _0x2537e0=[];var _0x57e15c=[];var _0xc352b9=utils[_0x26ac('0x34')]();var _0x3980bd={'membername':_0x5f6e71['name'],'interface':_0x2252a4,'enterAt':moment()[_0x26ac('0x31')](_0x26ac('0x32')),'role':_0x5f6e71[_0x26ac('0x2b')],'internal':_0x5f6e71[_0x26ac('0x51')]};_0xc352b9['forEach'](function(_0x531708){_0x2537e0[_0x26ac('0x36')](_[_0x26ac('0x5a')]({'channel':_0x531708,'type':_0x26ac('0x5b'),'data1':_0x26ac('0x5c'),'data2':_0x2252a4},_0x3980bd));if(_0x5f6e71['loginInPause']){_0x57e15c[_0x26ac('0x36')](_['merge']({'channel':_0x531708,'type':_0x26ac('0x2f'),'data1':_0x26ac('0x5d')},_0x3980bd));}});return db[_0x26ac('0x2e')]['bulkCreate'](_0x2537e0[_0x26ac('0x5e')](_0x57e15c),{'individualHooks':!![]});}})['then'](function(){if(_0x5f6e71){return _0x5f6e71[_0x26ac('0x2d')]({'online':!![],'lastLoginAt':moment()['format'](_0x26ac('0x32')),'voicePause':_0x5f6e71[_0x26ac('0x52')]||![],'mailPause':_0x5f6e71[_0x26ac('0x52')]||![],'chatPause':_0x5f6e71[_0x26ac('0x52')]||![],'faxPause':_0x5f6e71[_0x26ac('0x52')]||![],'smsPause':_0x5f6e71['loginInPause']||![],'openchannelPause':_0x5f6e71[_0x26ac('0x52')]||![],'pauseType':_0x5f6e71[_0x26ac('0x52')]?_0x26ac('0x5d'):null,'lastPauseAt':moment()[_0x26ac('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x2252a4});}})[_0x26ac('0x12')](function(_0x161640){_0xc81169(_0x161640);})[_0x26ac('0x1c')](function(_0x1b91fa){_0x450e63(_0x4e1043['error'](0x1f4,_0x1b91fa[_0x26ac('0x1b')]));});});};