8191614a8c5e2f707f590b2c48e628df08f94d1b
[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 _0x234e=['socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','GetUser','User','findAll','options','raw','where','attributes','include','model','catch','ShowUser','find','map','PauseUser','role','internal','interface','UserVoiceQueueRt','update','MemberReport','name','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','format','body','type','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','findOne','channel','isValidChannel','voice','system','fax','openchannel','whatsapp','set','%s%s','all','LogoutUser','phone','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','loginInPause','UserVoiceQueue.penalty','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x227e24,_0x573dd6){var _0x2ccc99=function(_0x177963){while(--_0x177963){_0x227e24['push'](_0x227e24['shift']());}};_0x2ccc99(++_0x573dd6);}(_0x234e,0xf7));var _0xe234=function(_0x5bcc91,_0x201579){_0x5bcc91=_0x5bcc91-0x0;var _0x7024d6=_0x234e[_0x5bcc91];return _0x7024d6;};'use strict';var _=require(_0xe234('0x0'));var util=require(_0xe234('0x1'));var moment=require('moment');var BPromise=require(_0xe234('0x2'));var rs=require(_0xe234('0x3'));var fs=require('fs');var Redis=require(_0xe234('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe234('0x5'));var logger=require(_0xe234('0x6'))('rpc');var config=require(_0xe234('0x7'));var jayson=require(_0xe234('0x8'));var client=jayson[_0xe234('0x9')][_0xe234('0xa')]({'port':0x232a});config[_0xe234('0xb')]=_[_0xe234('0xc')](config[_0xe234('0xb')],{'host':_0xe234('0xd'),'port':0x18eb});var socket=require(_0xe234('0xe'))(new Redis(config['redis']));require(_0xe234('0xf'))[_0xe234('0x10')](socket);function respondWithRpcPromise(_0x24df06,_0x9061a4,_0x2a47f2){return new BPromise(function(_0x177f7d,_0x3a6c1f){return client[_0xe234('0x11')](_0x24df06,_0x2a47f2)[_0xe234('0x12')](function(_0x33bba3){logger[_0xe234('0x13')](_0xe234('0x14'),_0x9061a4,_0xe234('0x15'));logger[_0xe234('0x16')]('User,\x20%s,\x20%s,\x20%s',_0x9061a4,_0xe234('0x15'),JSON[_0xe234('0x17')](_0x33bba3));if(_0x33bba3[_0xe234('0x18')]){if(_0x33bba3[_0xe234('0x18')]['code']===0x1f4){logger[_0xe234('0x18')](_0xe234('0x14'),_0x9061a4,_0x33bba3[_0xe234('0x18')][_0xe234('0x19')]);return _0x3a6c1f(_0x33bba3[_0xe234('0x18')]['message']);}logger['error'](_0xe234('0x14'),_0x9061a4,_0x33bba3[_0xe234('0x18')][_0xe234('0x19')]);return _0x177f7d(_0x33bba3['error'][_0xe234('0x19')]);}else{logger[_0xe234('0x13')](_0xe234('0x14'),_0x9061a4,'request\x20sent');_0x177f7d(_0x33bba3[_0xe234('0x1a')][_0xe234('0x19')]);}})['catch'](function(_0x2641ea){logger[_0xe234('0x18')](_0xe234('0x14'),_0x9061a4,_0x2641ea);_0x3a6c1f(_0x2641ea);});});}exports[_0xe234('0x1b')]=function(_0x2fe999){var _0xb8ea9e=this;return new Promise(function(_0x5f5829,_0x3872e1){return db[_0xe234('0x1c')][_0xe234('0x1d')]({'raw':_0x2fe999['options']?_0x2fe999[_0xe234('0x1e')][_0xe234('0x1f')]===undefined?!![]:![]:!![],'where':_0x2fe999['options']?_0x2fe999[_0xe234('0x1e')][_0xe234('0x20')]||null:null,'attributes':_0x2fe999[_0xe234('0x1e')]?_0x2fe999[_0xe234('0x1e')][_0xe234('0x21')]||null:null,'limit':_0x2fe999[_0xe234('0x1e')]?_0x2fe999[_0xe234('0x1e')]['limit']||null:null,'include':_0x2fe999[_0xe234('0x1e')]?_0x2fe999['options'][_0xe234('0x22')]?_['map'](_0x2fe999['options'][_0xe234('0x22')],function(_0xcf95e7){return{'model':db[_0xcf95e7['model']],'as':_0xcf95e7['as'],'attributes':_0xcf95e7[_0xe234('0x21')],'include':_0xcf95e7[_0xe234('0x22')]?_['map'](_0xcf95e7[_0xe234('0x22')],function(_0x35a8c2){return{'model':db[_0x35a8c2[_0xe234('0x23')]],'as':_0x35a8c2['as'],'attributes':_0x35a8c2[_0xe234('0x21')],'include':_0x35a8c2['include']?_['map'](_0x35a8c2[_0xe234('0x22')],function(_0x235f73){return{'model':db[_0x235f73['model']],'as':_0x235f73['as'],'attributes':_0x235f73['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x8069b){logger[_0xe234('0x13')](_0xe234('0x1b'),_0x2fe999);logger[_0xe234('0x16')](_0xe234('0x1b'),_0x2fe999,JSON[_0xe234('0x17')](_0x8069b));_0x5f5829(_0x8069b);})[_0xe234('0x24')](function(_0x596266){logger[_0xe234('0x18')](_0xe234('0x1b'),_0x596266[_0xe234('0x19')],_0x2fe999);_0x3872e1(_0xb8ea9e[_0xe234('0x18')](0x1f4,_0x596266[_0xe234('0x19')]));});});};exports[_0xe234('0x25')]=function(_0x5d6a09){var _0x256d9a=this;return new Promise(function(_0xe338f,_0x16b76f){return db['User'][_0xe234('0x26')]({'raw':_0x5d6a09[_0xe234('0x1e')]?_0x5d6a09[_0xe234('0x1e')][_0xe234('0x1f')]===undefined?!![]:![]:!![],'where':_0x5d6a09[_0xe234('0x1e')]?_0x5d6a09[_0xe234('0x1e')][_0xe234('0x20')]||null:null,'attributes':_0x5d6a09['options']?_0x5d6a09[_0xe234('0x1e')][_0xe234('0x21')]||null:null,'include':_0x5d6a09[_0xe234('0x1e')]?_0x5d6a09[_0xe234('0x1e')][_0xe234('0x22')]?_[_0xe234('0x27')](_0x5d6a09[_0xe234('0x1e')]['include'],function(_0x4c0b24){return{'model':db[_0x4c0b24[_0xe234('0x23')]],'as':_0x4c0b24['as'],'attributes':_0x4c0b24['attributes'],'include':_0x4c0b24[_0xe234('0x22')]?_[_0xe234('0x27')](_0x4c0b24[_0xe234('0x22')],function(_0x29d81c){return{'model':db[_0x29d81c[_0xe234('0x23')]],'as':_0x29d81c['as'],'attributes':_0x29d81c[_0xe234('0x21')],'include':_0x29d81c['include']?_[_0xe234('0x27')](_0x29d81c[_0xe234('0x22')],function(_0x23abc8){return{'model':db[_0x23abc8[_0xe234('0x23')]],'as':_0x23abc8['as'],'attributes':_0x23abc8[_0xe234('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2391a1){logger[_0xe234('0x13')](_0xe234('0x25'),_0x5d6a09);logger[_0xe234('0x16')](_0xe234('0x25'),_0x5d6a09,JSON[_0xe234('0x17')](_0x2391a1));_0xe338f(_0x2391a1);})[_0xe234('0x24')](function(_0x5a945b){logger[_0xe234('0x18')]('ShowUser',_0x5a945b['message'],_0x5d6a09);_0x16b76f(_0x256d9a[_0xe234('0x18')](0x1f4,_0x5a945b[_0xe234('0x19')]));});});};exports[_0xe234('0x28')]=function(_0x17b737){var _0x5cd34f=this;return new Promise(function(_0x2a8fe0,_0x42c052){var _0x5055da;return db['User'][_0xe234('0x26')]({'where':_0x17b737['options'][_0xe234('0x20')]||{},'attributes':['id','name',_0xe234('0x29'),_0xe234('0x2a'),_0xe234('0x2b')]})['then'](function(_0x56b76b){if(_0x56b76b){_0x5055da=_0x56b76b;return db[_0xe234('0x2c')][_0xe234('0x2d')]({'paused':0x1},{'where':{'UserId':_0x5055da['id']},'individualHooks':!![]});}})[_0xe234('0x12')](function(){if(_0x5055da){return db[_0xe234('0x2e')][_0xe234('0x1d')]({'where':{'membername':_0x5055da[_0xe234('0x2f')],'type':_0xe234('0x30'),'exitAt':null}});}})[_0xe234('0x12')](function(_0x5d1748){if(_0x5055da){if(_0x5d1748&&_0x5d1748[_0xe234('0x31')]){var _0xaca4f4=moment()['format'](_0xe234('0x32'));for(var _0x38b9bb=0x0,_0x12b643=_0x5d1748[_0xe234('0x31')];_0x38b9bb<_0x12b643;_0x38b9bb++){_0x5d1748[_0x38b9bb][_0xe234('0x33')]({'exitAt':_0xaca4f4});}}}})[_0xe234('0x12')](function(){if(_0x5055da){var _0x23b3e9=[];var _0x20f66c=utils['getChannels']();_0x20f66c[_0xe234('0x34')](function(_0x9efa57){_0x23b3e9[_0xe234('0x35')]({'channel':_0x9efa57,'membername':_0x5055da[_0xe234('0x2f')],'interface':_['isNil'](_0x5055da['interface'])?util['format']('SIP/%s',_0x5055da[_0xe234('0x2f')]):_0x5055da[_0xe234('0x2b')],'type':_0xe234('0x30'),'enterAt':moment()[_0xe234('0x36')](_0xe234('0x32')),'data1':_0x17b737[_0xe234('0x37')][_0xe234('0x38')]||'DEFAULT\x20PAUSE','role':_0x5055da[_0xe234('0x29')],'internal':_0x5055da[_0xe234('0x2a')],'uniqueid':_0x17b737['body']['uniqueid']||null});});return db[_0xe234('0x2e')][_0xe234('0x39')](_0x23b3e9,{'individualHooks':!![]});}})['then'](function(){if(_0x5055da){return _0x5055da[_0xe234('0x2d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x17b737[_0xe234('0x37')][_0xe234('0x38')]||_0xe234('0x3a'),'lastPauseAt':moment()['format'](_0xe234('0x32'))});}})[_0xe234('0x12')](function(_0x2e2b02){_0x2a8fe0(_0x2e2b02);})['catch'](function(_0xe121dd){_0x42c052(_0x5cd34f['error'](0x1f4,_0xe121dd[_0xe234('0x19')]));});});};exports[_0xe234('0x3b')]=function(_0x356a20){var _0x113c07=this;return new Promise(function(_0xe7b5c0,_0x2b6e2c){var _0x57cea1;return db[_0xe234('0x1c')][_0xe234('0x3c')]({'where':_0x356a20['options'][_0xe234('0x20')]||{},'attributes':['id',_0xe234('0x2f')]})[_0xe234('0x12')](function(_0x222119){if(_0x222119){_0x57cea1=_0x222119;if(_0x356a20[_0xe234('0x37')][_0xe234('0x3d')]&&!utils[_0xe234('0x3e')](_0x356a20[_0xe234('0x37')]['channel'])){throw new Error('Unknown\x20channel');}switch(_0x356a20[_0xe234('0x37')][_0xe234('0x3d')]){case _0xe234('0x3f'):return db['UserVoiceQueueRt'][_0xe234('0x2d')]({'paused':0x0},{'where':{'UserId':_0x57cea1['id']}})[_0xe234('0x12')](function(){return db['MemberReport'][_0xe234('0x26')]({'where':{'channel':_0x356a20[_0xe234('0x37')][_0xe234('0x3d')],'membername':_0x57cea1[_0xe234('0x2f')],'type':_0xe234('0x30'),'exitAt':null}});})['then'](function(_0x19f249){if(_0x19f249){return _0x19f249[_0xe234('0x2d')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe234('0x40')},{'individualHooks':!![]});}return null;})[_0xe234('0x12')](function(){return _0x57cea1[_0xe234('0x2d')]({'voicePause':![]});});case'mail':case'chat':case _0xe234('0x41'):case'sms':case _0xe234('0x42'):case _0xe234('0x43'):return db[_0xe234('0x2e')][_0xe234('0x26')]({'where':{'channel':_0x356a20[_0xe234('0x37')][_0xe234('0x3d')],'membername':_0x57cea1[_0xe234('0x2f')],'type':_0xe234('0x30'),'exitAt':null}})[_0xe234('0x12')](function(_0x211701){return _0x211701[_0xe234('0x2d')]({'exitAt':moment()[_0xe234('0x36')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe234('0x40')},{'individualHooks':!![]});})['then'](function(){var _0x4a069f={};_[_0xe234('0x44')](_0x4a069f,util[_0xe234('0x36')](_0xe234('0x45'),_0x356a20[_0xe234('0x37')]['channel'],'Pause'),![]);return _0x57cea1[_0xe234('0x2d')](_0x4a069f);});default:return db[_0xe234('0x2c')][_0xe234('0x2d')]({'paused':0x0},{'where':{'UserId':_0x57cea1['id']}})[_0xe234('0x12')](function(){return db['MemberReport'][_0xe234('0x1d')]({'where':{'membername':_0x57cea1[_0xe234('0x2f')],'type':_0xe234('0x30'),'exitAt':null}});})[_0xe234('0x12')](function(_0xc92a0b){var _0x2cb20e=[];_0xc92a0b[_0xe234('0x34')](function(_0x2cba82){_0x2cb20e['push'](_0x2cba82[_0xe234('0x2d')]({'exitAt':moment()[_0xe234('0x36')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe234('0x40')}));});return BPromise[_0xe234('0x46')](_0x2cb20e);})[_0xe234('0x12')](function(){return _0x57cea1['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xe234('0x12')](function(_0x1f4229){_0xe7b5c0(_0x1f4229);})['catch'](function(_0x1515d0){_0x2b6e2c(_0x113c07['error'](0x1f4,_0x1515d0['message']));});});};exports[_0xe234('0x47')]=function(_0x247a34){var _0xfc8e18=this;return new Promise(function(_0xeb3b2d,_0x5001ad){var _0x4aae9b;return db[_0xe234('0x1c')][_0xe234('0x3c')]({'where':_0x247a34[_0xe234('0x1e')]['where']||{},'attributes':['id',_0xe234('0x2f')]})[_0xe234('0x12')](function(_0x1bd248){if(_0x1bd248){_0x4aae9b=_0x1bd248;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x4aae9b[_0xe234('0x2f')]},'individualHooks':!![]});}})[_0xe234('0x12')](function(){if(_0x4aae9b){return db[_0xe234('0x2e')][_0xe234('0x1d')]({'where':{'membername':_0x4aae9b[_0xe234('0x2f')],'exitAt':null}});}})['then'](function(_0x463e2d){if(_0x4aae9b){if(_0x463e2d&&_0x463e2d[_0xe234('0x31')]){var _0x94c566=[];_0x463e2d[_0xe234('0x34')](function(_0x56d426){_0x94c566[_0xe234('0x35')](_0x56d426[_0xe234('0x2d')]({'exitAt':moment()[_0xe234('0x36')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe234('0x46')](_0x94c566);}}})['then'](function(){if(_0x4aae9b){return _0x4aae9b[_0xe234('0x2d')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xe234('0x12')](function(_0x1c5b9e){_0xeb3b2d(_0x1c5b9e);})[_0xe234('0x24')](function(_0x3a86c2){_0x5001ad(_0xfc8e18[_0xe234('0x18')](0x1f4,_0x3a86c2['message']));});});};exports['LoginUser']=function(_0xdc7e5d){var _0x18d657=this;return new Promise(function(_0x36f16b,_0x111ebb){var _0x222442;var _0x28183f;var _0xb10bc2;var _0x3e9e88;return db[_0xe234('0x1c')][_0xe234('0x3c')]({'where':_0xdc7e5d[_0xe234('0x1e')]['where']||{},'attributes':['id',_0xe234('0x2f'),_0xe234('0x29'),'mobile',_0xe234('0x48'),_0xe234('0x2a'),'loginInPause',_0xe234('0x2b')]})['then'](function(_0x2664c7){if(_0x2664c7){_0x222442=_0x2664c7;_0x3e9e88=_0xdc7e5d[_0xe234('0x37')]['interface']?_0xdc7e5d[_0xe234('0x37')][_0xe234('0x2b')]:util[_0xe234('0x36')]('SIP/%s',_0x222442[_0xe234('0x2f')]);return db['User'][_0xe234('0x49')]({'where':{'role':_0xe234('0x4a'),'online':!![],'id':{'$ne':_0x222442['id']}}});}})[_0xe234('0x12')](function(_0x4b2e74){if(_0x4b2e74){_0xb10bc2=_0x4b2e74;return require(_0xe234('0x4b'))['getLicense']();}})[_0xe234('0x12')](function(_0x510b74){if(_0x510b74&&_0x510b74[_0xe234('0x4c')]&&_0xb10bc2>=_0x510b74[_0xe234('0x4c')]){throw new Error(_0xe234('0x4d'));}})[_0xe234('0x12')](function(){if(_0x222442){return db[_0xe234('0x2c')]['destroy']({'where':{'membername':_0x222442[_0xe234('0x2f')]},'individualHooks':!![]});}})[_0xe234('0x12')](function(){if(_0x222442){return _0x222442[_0xe234('0x4e')]({'raw':!![]});}})[_0xe234('0x12')](function(_0x299ce0){if(_0x222442){if(_0x299ce0){var _0x3c5f12=[];_0x28183f=_0x299ce0;if(_0x28183f['length']){for(var _0x1d43bd=0x0;_0x1d43bd<_0x28183f[_0xe234('0x31')];_0x1d43bd++){_0x3c5f12[_0xe234('0x35')](db[_0xe234('0x2c')]['upsert']({'membername':_0x222442[_0xe234('0x2f')],'UserId':_0x222442['id'],'queue_name':_0x28183f[_0x1d43bd][_0xe234('0x2f')],'VoiceQueueId':_0x28183f[_0x1d43bd]['id'],'interface':_0x3e9e88,'paused':_0x222442[_0xe234('0x4f')]||![],'penalty':_0x28183f[_0x1d43bd][_0xe234('0x50')]||0x0}));}return BPromise[_0xe234('0x46')](_0x3c5f12);}}}})[_0xe234('0x12')](function(){if(_0x222442){return db[_0xe234('0x2e')][_0xe234('0x1d')]({'where':{'membername':_0x222442[_0xe234('0x2f')],'exitAt':null}});}})[_0xe234('0x12')](function(_0x1f7cce){if(_0x222442){if(_0x1f7cce&&_0x1f7cce[_0xe234('0x31')]){var _0x38ac89=[];_0x1f7cce[_0xe234('0x34')](function(_0x28de5b){_0x38ac89['push'](_0x28de5b[_0xe234('0x2d')]({'exitAt':moment()[_0xe234('0x36')](_0xe234('0x32'))}));});return BPromise[_0xe234('0x46')](_0x38ac89);}}})['then'](function(_0x753153){if(_0x222442){var _0x47eb7e=[];var _0x409804=[];var _0x5949c1=utils[_0xe234('0x51')]();var _0x92e7e8={'membername':_0x222442[_0xe234('0x2f')],'interface':_0x3e9e88,'enterAt':moment()['format'](_0xe234('0x32')),'role':_0x222442[_0xe234('0x29')],'internal':_0x222442[_0xe234('0x2a')]};_0x5949c1['forEach'](function(_0x401a45){_0x47eb7e[_0xe234('0x35')](_[_0xe234('0x52')]({'channel':_0x401a45,'type':_0xe234('0x53'),'data1':_0xe234('0x54'),'data2':_0x3e9e88},_0x92e7e8));if(_0x222442[_0xe234('0x4f')]){_0x409804['push'](_[_0xe234('0x52')]({'channel':_0x401a45,'type':_0xe234('0x30'),'data1':_0xe234('0x55')},_0x92e7e8));}});return db[_0xe234('0x2e')]['bulkCreate'](_0x47eb7e[_0xe234('0x56')](_0x409804),{'individualHooks':!![]});}})[_0xe234('0x12')](function(){if(_0x222442){return _0x222442['update']({'online':!![],'lastLoginAt':moment()[_0xe234('0x36')](_0xe234('0x32')),'voicePause':_0x222442[_0xe234('0x4f')]||![],'mailPause':_0x222442[_0xe234('0x4f')]||![],'chatPause':_0x222442[_0xe234('0x4f')]||![],'faxPause':_0x222442['loginInPause']||![],'smsPause':_0x222442[_0xe234('0x4f')]||![],'openchannelPause':_0x222442[_0xe234('0x4f')]||![],'pauseType':_0x222442[_0xe234('0x4f')]?_0xe234('0x55'):null,'lastPauseAt':moment()[_0xe234('0x36')](_0xe234('0x32')),'interface':_0x3e9e88});}})[_0xe234('0x12')](function(_0x5ae673){_0x36f16b(_0x5ae673);})[_0xe234('0x24')](function(_0x3cbba9){_0x111ebb(_0x18d657[_0xe234('0x18')](0x1f4,_0x3cbba9[_0xe234('0x19')]));});});};