b1a501c8d66640a5a28f4a2ac508a2605b123882
[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 _0x9373=['include','map','model','attributes','ShowUser','find','role','internal','interface','MemberReport','name','PAUSE','length','format','updateAttributes','getChannels','push','isNil','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','update','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','UserVoiceQueueRt','system','mail','fax','sms','openchannel','whatsapp','%s%s','Pause','all','LogoutUser','forEach','LoginUser','phone','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','loginInPause','UserVoiceQueue.penalty','merge','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetUser','User','findAll','options','raw','where','limit'];(function(_0x30ab77,_0x2aab73){var _0x272c68=function(_0x27db4d){while(--_0x27db4d){_0x30ab77['push'](_0x30ab77['shift']());}};_0x272c68(++_0x2aab73);}(_0x9373,0x15b));var _0x3937=function(_0x4a782c,_0x2e29bf){_0x4a782c=_0x4a782c-0x0;var _0x1a9a09=_0x9373[_0x4a782c];return _0x1a9a09;};'use strict';var _=require(_0x3937('0x0'));var util=require(_0x3937('0x1'));var moment=require(_0x3937('0x2'));var BPromise=require(_0x3937('0x3'));var rs=require(_0x3937('0x4'));var fs=require('fs');var Redis=require(_0x3937('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3937('0x6'))(_0x3937('0x7'));var config=require(_0x3937('0x8'));var jayson=require(_0x3937('0x9'));var client=jayson[_0x3937('0xa')][_0x3937('0xb')]({'port':0x232a});config[_0x3937('0xc')]=_[_0x3937('0xd')](config[_0x3937('0xc')],{'host':_0x3937('0xe'),'port':0x18eb});var socket=require(_0x3937('0xf'))(new Redis(config[_0x3937('0xc')]));require(_0x3937('0x10'))[_0x3937('0x11')](socket);function respondWithRpcPromise(_0x14aeb1,_0x6512f4,_0x951c48){return new BPromise(function(_0x5ca4c1,_0x25a72d){return client[_0x3937('0x12')](_0x14aeb1,_0x951c48)[_0x3937('0x13')](function(_0x5cedae){logger[_0x3937('0x14')](_0x3937('0x15'),_0x6512f4,_0x3937('0x16'));logger[_0x3937('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x6512f4,_0x3937('0x16'),JSON[_0x3937('0x18')](_0x5cedae));if(_0x5cedae[_0x3937('0x19')]){if(_0x5cedae[_0x3937('0x19')][_0x3937('0x1a')]===0x1f4){logger['error'](_0x3937('0x15'),_0x6512f4,_0x5cedae[_0x3937('0x19')][_0x3937('0x1b')]);return _0x25a72d(_0x5cedae[_0x3937('0x19')][_0x3937('0x1b')]);}logger[_0x3937('0x19')](_0x3937('0x15'),_0x6512f4,_0x5cedae[_0x3937('0x19')][_0x3937('0x1b')]);return _0x5ca4c1(_0x5cedae[_0x3937('0x19')][_0x3937('0x1b')]);}else{logger[_0x3937('0x14')](_0x3937('0x15'),_0x6512f4,_0x3937('0x16'));_0x5ca4c1(_0x5cedae[_0x3937('0x1c')]['message']);}})[_0x3937('0x1d')](function(_0x47ec0c){logger[_0x3937('0x19')](_0x3937('0x15'),_0x6512f4,_0x47ec0c);_0x25a72d(_0x47ec0c);});});}exports[_0x3937('0x1e')]=function(_0x5d48a4){var _0x49af9e=this;return new Promise(function(_0x741196,_0x51d5bf){return db[_0x3937('0x1f')][_0x3937('0x20')]({'raw':_0x5d48a4[_0x3937('0x21')]?_0x5d48a4[_0x3937('0x21')][_0x3937('0x22')]===undefined?!![]:![]:!![],'where':_0x5d48a4[_0x3937('0x21')]?_0x5d48a4[_0x3937('0x21')][_0x3937('0x23')]||null:null,'attributes':_0x5d48a4[_0x3937('0x21')]?_0x5d48a4[_0x3937('0x21')]['attributes']||null:null,'limit':_0x5d48a4[_0x3937('0x21')]?_0x5d48a4[_0x3937('0x21')][_0x3937('0x24')]||null:null,'include':_0x5d48a4[_0x3937('0x21')]?_0x5d48a4[_0x3937('0x21')][_0x3937('0x25')]?_[_0x3937('0x26')](_0x5d48a4['options'][_0x3937('0x25')],function(_0x44f983){return{'model':db[_0x44f983['model']],'as':_0x44f983['as'],'attributes':_0x44f983['attributes'],'include':_0x44f983[_0x3937('0x25')]?_[_0x3937('0x26')](_0x44f983['include'],function(_0x13927d){return{'model':db[_0x13927d[_0x3937('0x27')]],'as':_0x13927d['as'],'attributes':_0x13927d[_0x3937('0x28')],'include':_0x13927d['include']?_[_0x3937('0x26')](_0x13927d[_0x3937('0x25')],function(_0x274739){return{'model':db[_0x274739[_0x3937('0x27')]],'as':_0x274739['as'],'attributes':_0x274739[_0x3937('0x28')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x37c289){logger[_0x3937('0x14')](_0x3937('0x1e'),_0x5d48a4);logger['debug'](_0x3937('0x1e'),_0x5d48a4,JSON[_0x3937('0x18')](_0x37c289));_0x741196(_0x37c289);})[_0x3937('0x1d')](function(_0x50f7e1){logger['error']('GetUser',_0x50f7e1[_0x3937('0x1b')],_0x5d48a4);_0x51d5bf(_0x49af9e['error'](0x1f4,_0x50f7e1[_0x3937('0x1b')]));});});};exports['ShowUser']=function(_0x5d3fd4){var _0x334663=this;return new Promise(function(_0x20dff6,_0x2b8834){return db['User']['find']({'raw':_0x5d3fd4[_0x3937('0x21')]?_0x5d3fd4[_0x3937('0x21')][_0x3937('0x22')]===undefined?!![]:![]:!![],'where':_0x5d3fd4[_0x3937('0x21')]?_0x5d3fd4[_0x3937('0x21')][_0x3937('0x23')]||null:null,'attributes':_0x5d3fd4[_0x3937('0x21')]?_0x5d3fd4[_0x3937('0x21')][_0x3937('0x28')]||null:null,'include':_0x5d3fd4[_0x3937('0x21')]?_0x5d3fd4[_0x3937('0x21')]['include']?_[_0x3937('0x26')](_0x5d3fd4[_0x3937('0x21')][_0x3937('0x25')],function(_0x553e03){return{'model':db[_0x553e03['model']],'as':_0x553e03['as'],'attributes':_0x553e03[_0x3937('0x28')],'include':_0x553e03[_0x3937('0x25')]?_[_0x3937('0x26')](_0x553e03[_0x3937('0x25')],function(_0x18f43d){return{'model':db[_0x18f43d['model']],'as':_0x18f43d['as'],'attributes':_0x18f43d['attributes'],'include':_0x18f43d['include']?_['map'](_0x18f43d[_0x3937('0x25')],function(_0x5b42cc){return{'model':db[_0x5b42cc[_0x3937('0x27')]],'as':_0x5b42cc['as'],'attributes':_0x5b42cc[_0x3937('0x28')]};}):[]};}):[]};}):[]:[]})[_0x3937('0x13')](function(_0x1510eb){logger[_0x3937('0x14')](_0x3937('0x29'),_0x5d3fd4);logger[_0x3937('0x17')]('ShowUser',_0x5d3fd4,JSON[_0x3937('0x18')](_0x1510eb));_0x20dff6(_0x1510eb);})[_0x3937('0x1d')](function(_0x23c714){logger['error'](_0x3937('0x29'),_0x23c714[_0x3937('0x1b')],_0x5d3fd4);_0x2b8834(_0x334663['error'](0x1f4,_0x23c714[_0x3937('0x1b')]));});});};exports['PauseUser']=function(_0x2d0e2b){var _0x2a6b27=this;return new Promise(function(_0xe20b6c,_0x13cd4e){var _0x2de444;return db[_0x3937('0x1f')][_0x3937('0x2a')]({'where':_0x2d0e2b[_0x3937('0x21')][_0x3937('0x23')]||{},'attributes':['id','name',_0x3937('0x2b'),_0x3937('0x2c'),_0x3937('0x2d')]})[_0x3937('0x13')](function(_0x44a246){if(_0x44a246){_0x2de444=_0x44a246;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x2de444['id']},'individualHooks':!![]});}})[_0x3937('0x13')](function(){if(_0x2de444){return db[_0x3937('0x2e')][_0x3937('0x20')]({'where':{'membername':_0x2de444[_0x3937('0x2f')],'type':_0x3937('0x30'),'exitAt':null}});}})[_0x3937('0x13')](function(_0x5a3718){if(_0x2de444){if(_0x5a3718&&_0x5a3718[_0x3937('0x31')]){var _0x2be87c=moment()[_0x3937('0x32')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x5a3061=0x0,_0x5bb7c0=_0x5a3718['length'];_0x5a3061<_0x5bb7c0;_0x5a3061++){_0x5a3718[_0x5a3061][_0x3937('0x33')]({'exitAt':_0x2be87c});}}}})[_0x3937('0x13')](function(){if(_0x2de444){var _0xd0b176=[];var _0x3b995e=utils[_0x3937('0x34')]();_0x3b995e['forEach'](function(_0x416886){_0xd0b176[_0x3937('0x35')]({'channel':_0x416886,'membername':_0x2de444[_0x3937('0x2f')],'interface':_[_0x3937('0x36')](_0x2de444[_0x3937('0x2d')])?util[_0x3937('0x32')](_0x3937('0x37'),_0x2de444[_0x3937('0x2f')]):_0x2de444[_0x3937('0x2d')],'type':_0x3937('0x30'),'enterAt':moment()[_0x3937('0x32')](_0x3937('0x38')),'data1':_0x2d0e2b[_0x3937('0x39')][_0x3937('0x3a')]||_0x3937('0x3b'),'role':_0x2de444['role'],'internal':_0x2de444[_0x3937('0x2c')],'uniqueid':_0x2d0e2b[_0x3937('0x39')][_0x3937('0x3c')]||null});});return db['MemberReport']['bulkCreate'](_0xd0b176,{'individualHooks':!![]});}})['then'](function(){if(_0x2de444){return _0x2de444[_0x3937('0x3d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2d0e2b['body'][_0x3937('0x3a')]||_0x3937('0x3b'),'lastPauseAt':moment()[_0x3937('0x32')](_0x3937('0x38'))});}})[_0x3937('0x13')](function(_0x386207){_0xe20b6c(_0x386207);})[_0x3937('0x1d')](function(_0x325238){_0x13cd4e(_0x2a6b27[_0x3937('0x19')](0x1f4,_0x325238['message']));});});};exports[_0x3937('0x3e')]=function(_0x2f818d){var _0x3ba81f=this;return new Promise(function(_0x523453,_0x1540e7){var _0x29b8e1;return db[_0x3937('0x1f')][_0x3937('0x3f')]({'where':_0x2f818d[_0x3937('0x21')][_0x3937('0x23')]||{},'attributes':['id',_0x3937('0x2f')]})[_0x3937('0x13')](function(_0x42ee1b){if(_0x42ee1b){_0x29b8e1=_0x42ee1b;if(_0x2f818d[_0x3937('0x39')][_0x3937('0x40')]&&!utils[_0x3937('0x41')](_0x2f818d[_0x3937('0x39')]['channel'])){throw new Error(_0x3937('0x42'));}switch(_0x2f818d[_0x3937('0x39')]['channel']){case _0x3937('0x43'):return db[_0x3937('0x44')][_0x3937('0x3d')]({'paused':0x0},{'where':{'UserId':_0x29b8e1['id']}})[_0x3937('0x13')](function(){return db[_0x3937('0x2e')][_0x3937('0x2a')]({'where':{'channel':_0x2f818d[_0x3937('0x39')][_0x3937('0x40')],'membername':_0x29b8e1['name'],'type':_0x3937('0x30'),'exitAt':null}});})[_0x3937('0x13')](function(_0x4c89c2){if(_0x4c89c2){return _0x4c89c2[_0x3937('0x3d')]({'exitAt':moment()[_0x3937('0x32')](_0x3937('0x38')),'data2':_0x3937('0x45')},{'individualHooks':!![]});}return null;})[_0x3937('0x13')](function(){return _0x29b8e1[_0x3937('0x3d')]({'voicePause':![]});});case _0x3937('0x46'):case'chat':case _0x3937('0x47'):case _0x3937('0x48'):case _0x3937('0x49'):case _0x3937('0x4a'):return db[_0x3937('0x2e')][_0x3937('0x2a')]({'where':{'channel':_0x2f818d[_0x3937('0x39')][_0x3937('0x40')],'membername':_0x29b8e1[_0x3937('0x2f')],'type':_0x3937('0x30'),'exitAt':null}})[_0x3937('0x13')](function(_0x1a4411){return _0x1a4411[_0x3937('0x3d')]({'exitAt':moment()[_0x3937('0x32')](_0x3937('0x38')),'data2':_0x3937('0x45')},{'individualHooks':!![]});})['then'](function(){var _0x567f0c={};_['set'](_0x567f0c,util[_0x3937('0x32')](_0x3937('0x4b'),_0x2f818d[_0x3937('0x39')][_0x3937('0x40')],_0x3937('0x4c')),![]);return _0x29b8e1[_0x3937('0x3d')](_0x567f0c);});default:return db[_0x3937('0x44')][_0x3937('0x3d')]({'paused':0x0},{'where':{'UserId':_0x29b8e1['id']}})['then'](function(){return db[_0x3937('0x2e')][_0x3937('0x20')]({'where':{'membername':_0x29b8e1['name'],'type':_0x3937('0x30'),'exitAt':null}});})[_0x3937('0x13')](function(_0x4820eb){var _0x29bcae=[];_0x4820eb['forEach'](function(_0x17db51){_0x29bcae['push'](_0x17db51[_0x3937('0x3d')]({'exitAt':moment()['format'](_0x3937('0x38')),'data2':'system'}));});return BPromise[_0x3937('0x4d')](_0x29bcae);})['then'](function(){return _0x29b8e1[_0x3937('0x3d')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x3937('0x13')](function(_0x24a5ec){_0x523453(_0x24a5ec);})[_0x3937('0x1d')](function(_0x15127a){_0x1540e7(_0x3ba81f[_0x3937('0x19')](0x1f4,_0x15127a[_0x3937('0x1b')]));});});};exports[_0x3937('0x4e')]=function(_0x3be8b5){var _0x5218e5=this;return new Promise(function(_0x10ad34,_0x57a5d5){var _0x33ebb1;return db['User']['findOne']({'where':_0x3be8b5['options']['where']||{},'attributes':['id',_0x3937('0x2f')]})[_0x3937('0x13')](function(_0x25eb3c){if(_0x25eb3c){_0x33ebb1=_0x25eb3c;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x33ebb1[_0x3937('0x2f')]},'individualHooks':!![]});}})['then'](function(){if(_0x33ebb1){return db[_0x3937('0x2e')][_0x3937('0x20')]({'where':{'membername':_0x33ebb1['name'],'exitAt':null}});}})[_0x3937('0x13')](function(_0x2ffea6){if(_0x33ebb1){if(_0x2ffea6&&_0x2ffea6['length']){var _0x49142c=[];_0x2ffea6[_0x3937('0x4f')](function(_0x5359da){_0x49142c['push'](_0x5359da[_0x3937('0x3d')]({'exitAt':moment()[_0x3937('0x32')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x3937('0x4d')](_0x49142c);}}})[_0x3937('0x13')](function(){if(_0x33ebb1){return _0x33ebb1['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x3e9682){_0x10ad34(_0x3e9682);})[_0x3937('0x1d')](function(_0x2a1aa4){_0x57a5d5(_0x5218e5[_0x3937('0x19')](0x1f4,_0x2a1aa4['message']));});});};exports[_0x3937('0x50')]=function(_0x2b749e){var _0x45254c=this;return new Promise(function(_0x3e034b,_0x355974){var _0x5008ef;var _0x42e17a;var _0x23204e;var _0x27fb7d;return db['User']['findOne']({'where':_0x2b749e['options']['where']||{},'attributes':['id','name','role','mobile',_0x3937('0x51'),_0x3937('0x2c'),'loginInPause',_0x3937('0x2d')]})[_0x3937('0x13')](function(_0x200223){if(_0x200223){_0x5008ef=_0x200223;_0x27fb7d=_0x2b749e[_0x3937('0x39')][_0x3937('0x2d')]?_0x2b749e[_0x3937('0x39')][_0x3937('0x2d')]:util[_0x3937('0x32')](_0x3937('0x37'),_0x5008ef[_0x3937('0x2f')]);return db['User'][_0x3937('0x52')]({'where':{'role':_0x3937('0x53'),'online':!![],'id':{'$ne':_0x5008ef['id']}}});}})['then'](function(_0x4bbfe8){if(_0x4bbfe8){_0x23204e=_0x4bbfe8;return require(_0x3937('0x54'))[_0x3937('0x55')]();}})[_0x3937('0x13')](function(_0x3c6441){if(_0x3c6441&&_0x3c6441[_0x3937('0x56')]&&_0x23204e>=_0x3c6441[_0x3937('0x56')]){throw new Error(_0x3937('0x57'));}})[_0x3937('0x13')](function(){if(_0x5008ef){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x5008ef[_0x3937('0x2f')]},'individualHooks':!![]});}})[_0x3937('0x13')](function(){if(_0x5008ef){return _0x5008ef[_0x3937('0x58')]({'raw':!![]});}})['then'](function(_0x3a64d4){if(_0x5008ef){if(_0x3a64d4){var _0x359914=[];_0x42e17a=_0x3a64d4;if(_0x42e17a['length']){for(var _0x286be7=0x0;_0x286be7<_0x42e17a[_0x3937('0x31')];_0x286be7++){_0x359914[_0x3937('0x35')](db['UserVoiceQueueRt'][_0x3937('0x59')]({'membername':_0x5008ef[_0x3937('0x2f')],'UserId':_0x5008ef['id'],'queue_name':_0x42e17a[_0x286be7][_0x3937('0x2f')],'VoiceQueueId':_0x42e17a[_0x286be7]['id'],'interface':_0x27fb7d,'paused':_0x5008ef[_0x3937('0x5a')]||![],'penalty':_0x42e17a[_0x286be7][_0x3937('0x5b')]||0x0}));}return BPromise['all'](_0x359914);}}}})[_0x3937('0x13')](function(){if(_0x5008ef){return db[_0x3937('0x2e')][_0x3937('0x20')]({'where':{'membername':_0x5008ef['name'],'exitAt':null}});}})[_0x3937('0x13')](function(_0x5645f3){if(_0x5008ef){if(_0x5645f3&&_0x5645f3['length']){var _0x437e46=[];_0x5645f3[_0x3937('0x4f')](function(_0x286794){_0x437e46[_0x3937('0x35')](_0x286794['update']({'exitAt':moment()['format'](_0x3937('0x38'))}));});return BPromise['all'](_0x437e46);}}})['then'](function(_0x408201){if(_0x5008ef){var _0x11bada=[];var _0x3a4f10=[];var _0x4e3625=utils[_0x3937('0x34')]();var _0x1f5d72={'membername':_0x5008ef['name'],'interface':_0x27fb7d,'enterAt':moment()[_0x3937('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x5008ef[_0x3937('0x2b')],'internal':_0x5008ef[_0x3937('0x2c')]};_0x4e3625[_0x3937('0x4f')](function(_0x20de05){_0x11bada[_0x3937('0x35')](_[_0x3937('0x5c')]({'channel':_0x20de05,'type':'LOGIN','data1':_0x3937('0x5d'),'data2':_0x27fb7d},_0x1f5d72));if(_0x5008ef[_0x3937('0x5a')]){_0x3a4f10[_0x3937('0x35')](_[_0x3937('0x5c')]({'channel':_0x20de05,'type':'PAUSE','data1':_0x3937('0x5e')},_0x1f5d72));}});return db[_0x3937('0x2e')]['bulkCreate'](_0x11bada[_0x3937('0x5f')](_0x3a4f10),{'individualHooks':!![]});}})['then'](function(){if(_0x5008ef){return _0x5008ef[_0x3937('0x3d')]({'online':!![],'lastLoginAt':moment()[_0x3937('0x32')](_0x3937('0x38')),'voicePause':_0x5008ef['loginInPause']||![],'mailPause':_0x5008ef[_0x3937('0x5a')]||![],'chatPause':_0x5008ef['loginInPause']||![],'faxPause':_0x5008ef[_0x3937('0x5a')]||![],'smsPause':_0x5008ef[_0x3937('0x5a')]||![],'openchannelPause':_0x5008ef[_0x3937('0x5a')]||![],'pauseType':_0x5008ef[_0x3937('0x5a')]?_0x3937('0x5e'):null,'lastPauseAt':moment()['format'](_0x3937('0x38')),'interface':_0x27fb7d});}})[_0x3937('0x13')](function(_0x251935){_0x3e034b(_0x251935);})[_0x3937('0x1d')](function(_0x10c78b){_0x355974(_0x45254c[_0x3937('0x19')](0x1f4,_0x10c78b[_0x3937('0x1b')]));});});};