e16e9c07e849c40c2b17417ee8eb055fd0620b45
[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 _0x4c50=['internal','loginInPause','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','UserVoiceQueue.penalty','all','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','User,\x20%s,\x20%s','User,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','User','findAll','options','where','limit','include','map','attributes','model','GetUser','debug','stringify','ShowUser','find','raw','catch','name','role','interface','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','SIP/%s','format','DEFAULT\x20PAUSE','MemberReport','bulkCreate','update','body','UnpauseUser','channel','Unknown\x20channel','voice','system','mail','chat','fax','sms','openchannel','whatsapp','%s%s','Pause','UserVoiceQueueRt','destroy','push','LoginUser','findOne','mobile','phone'];(function(_0x45f91f,_0x4f6e9e){var _0x3e5ca3=function(_0x233530){while(--_0x233530){_0x45f91f['push'](_0x45f91f['shift']());}};_0x3e5ca3(++_0x4f6e9e);}(_0x4c50,0x10f));var _0x04c5=function(_0x30f7e2,_0x53f59c){_0x30f7e2=_0x30f7e2-0x0;var _0x5963f1=_0x4c50[_0x30f7e2];return _0x5963f1;};'use strict';var _=require(_0x04c5('0x0'));var util=require(_0x04c5('0x1'));var moment=require(_0x04c5('0x2'));var BPromise=require(_0x04c5('0x3'));var rs=require(_0x04c5('0x4'));var fs=require('fs');var Redis=require(_0x04c5('0x5'));var db=require(_0x04c5('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x04c5('0x7'));var config=require(_0x04c5('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x04c5('0x9')][_0x04c5('0xa')]({'port':0x232a});config[_0x04c5('0xb')]=_[_0x04c5('0xc')](config[_0x04c5('0xb')],{'host':_0x04c5('0xd'),'port':0x18eb});var socket=require(_0x04c5('0xe'))(new Redis(config[_0x04c5('0xb')]));require('./user.socket')['register'](socket);function respondWithRpcPromise(_0x50d0ac,_0x24fc3d,_0x19cdc1){return new BPromise(function(_0x1f083e,_0x42d12e){return client[_0x04c5('0xf')](_0x50d0ac,_0x19cdc1)[_0x04c5('0x10')](function(_0xb0ae5d){logger[_0x04c5('0x11')](_0x04c5('0x12'),_0x24fc3d,'request\x20sent');logger['debug'](_0x04c5('0x13'),_0x24fc3d,_0x04c5('0x14'),JSON['stringify'](_0xb0ae5d));if(_0xb0ae5d[_0x04c5('0x15')]){if(_0xb0ae5d[_0x04c5('0x15')][_0x04c5('0x16')]===0x1f4){logger[_0x04c5('0x15')](_0x04c5('0x12'),_0x24fc3d,_0xb0ae5d['error']['message']);return _0x42d12e(_0xb0ae5d['error']['message']);}logger['error'](_0x04c5('0x12'),_0x24fc3d,_0xb0ae5d['error']['message']);return _0x1f083e(_0xb0ae5d[_0x04c5('0x15')][_0x04c5('0x17')]);}else{logger['info'](_0x04c5('0x12'),_0x24fc3d,_0x04c5('0x14'));_0x1f083e(_0xb0ae5d['result'][_0x04c5('0x17')]);}})['catch'](function(_0x390d52){logger[_0x04c5('0x15')](_0x04c5('0x12'),_0x24fc3d,_0x390d52);_0x42d12e(_0x390d52);});});}exports['GetUser']=function(_0x1a7da2){var _0x3bfe9b=this;return new Promise(function(_0x5a3531,_0x283e8f){return db[_0x04c5('0x18')][_0x04c5('0x19')]({'raw':_0x1a7da2[_0x04c5('0x1a')]?_0x1a7da2[_0x04c5('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1a7da2['options']?_0x1a7da2['options'][_0x04c5('0x1b')]||null:null,'attributes':_0x1a7da2[_0x04c5('0x1a')]?_0x1a7da2[_0x04c5('0x1a')]['attributes']||null:null,'limit':_0x1a7da2[_0x04c5('0x1a')]?_0x1a7da2['options'][_0x04c5('0x1c')]||null:null,'include':_0x1a7da2['options']?_0x1a7da2[_0x04c5('0x1a')][_0x04c5('0x1d')]?_[_0x04c5('0x1e')](_0x1a7da2['options'][_0x04c5('0x1d')],function(_0x521e46){return{'model':db[_0x521e46['model']],'as':_0x521e46['as'],'attributes':_0x521e46[_0x04c5('0x1f')],'include':_0x521e46[_0x04c5('0x1d')]?_[_0x04c5('0x1e')](_0x521e46[_0x04c5('0x1d')],function(_0x5759af){return{'model':db[_0x5759af[_0x04c5('0x20')]],'as':_0x5759af['as'],'attributes':_0x5759af[_0x04c5('0x1f')],'include':_0x5759af[_0x04c5('0x1d')]?_[_0x04c5('0x1e')](_0x5759af[_0x04c5('0x1d')],function(_0x2d0d6c){return{'model':db[_0x2d0d6c[_0x04c5('0x20')]],'as':_0x2d0d6c['as'],'attributes':_0x2d0d6c[_0x04c5('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x04c5('0x10')](function(_0x14a36){logger['info'](_0x04c5('0x21'),_0x1a7da2);logger[_0x04c5('0x22')](_0x04c5('0x21'),_0x1a7da2,JSON[_0x04c5('0x23')](_0x14a36));_0x5a3531(_0x14a36);})['catch'](function(_0x1d6249){logger['error'](_0x04c5('0x21'),_0x1d6249[_0x04c5('0x17')],_0x1a7da2);_0x283e8f(_0x3bfe9b[_0x04c5('0x15')](0x1f4,_0x1d6249[_0x04c5('0x17')]));});});};exports[_0x04c5('0x24')]=function(_0x45f8d3){var _0x5c63bf=this;return new Promise(function(_0x4905f1,_0x1b48e2){return db[_0x04c5('0x18')][_0x04c5('0x25')]({'raw':_0x45f8d3['options']?_0x45f8d3[_0x04c5('0x1a')][_0x04c5('0x26')]===undefined?!![]:![]:!![],'where':_0x45f8d3[_0x04c5('0x1a')]?_0x45f8d3[_0x04c5('0x1a')][_0x04c5('0x1b')]||null:null,'attributes':_0x45f8d3[_0x04c5('0x1a')]?_0x45f8d3[_0x04c5('0x1a')]['attributes']||null:null,'include':_0x45f8d3['options']?_0x45f8d3['options'][_0x04c5('0x1d')]?_[_0x04c5('0x1e')](_0x45f8d3[_0x04c5('0x1a')][_0x04c5('0x1d')],function(_0x5bd3fc){return{'model':db[_0x5bd3fc['model']],'as':_0x5bd3fc['as'],'attributes':_0x5bd3fc[_0x04c5('0x1f')],'include':_0x5bd3fc[_0x04c5('0x1d')]?_[_0x04c5('0x1e')](_0x5bd3fc['include'],function(_0x168565){return{'model':db[_0x168565['model']],'as':_0x168565['as'],'attributes':_0x168565[_0x04c5('0x1f')],'include':_0x168565[_0x04c5('0x1d')]?_[_0x04c5('0x1e')](_0x168565[_0x04c5('0x1d')],function(_0x35794d){return{'model':db[_0x35794d[_0x04c5('0x20')]],'as':_0x35794d['as'],'attributes':_0x35794d[_0x04c5('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x04c5('0x10')](function(_0x51c140){logger['info'](_0x04c5('0x24'),_0x45f8d3);logger[_0x04c5('0x22')](_0x04c5('0x24'),_0x45f8d3,JSON[_0x04c5('0x23')](_0x51c140));_0x4905f1(_0x51c140);})[_0x04c5('0x27')](function(_0x23e958){logger[_0x04c5('0x15')](_0x04c5('0x24'),_0x23e958[_0x04c5('0x17')],_0x45f8d3);_0x1b48e2(_0x5c63bf[_0x04c5('0x15')](0x1f4,_0x23e958[_0x04c5('0x17')]));});});};exports['PauseUser']=function(_0x5a885d){var _0x42e32d=this;return new Promise(function(_0xf94eec,_0x1b5560){var _0x2f6677;return db[_0x04c5('0x18')][_0x04c5('0x25')]({'where':_0x5a885d[_0x04c5('0x1a')][_0x04c5('0x1b')]||{},'attributes':['id',_0x04c5('0x28'),_0x04c5('0x29'),'internal',_0x04c5('0x2a')]})[_0x04c5('0x10')](function(_0x462541){if(_0x462541){_0x2f6677=_0x462541;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x2f6677['id']},'individualHooks':!![]});}})['then'](function(){if(_0x2f6677){return db['MemberReport'][_0x04c5('0x19')]({'where':{'membername':_0x2f6677[_0x04c5('0x28')],'type':_0x04c5('0x2b'),'exitAt':null}});}})[_0x04c5('0x10')](function(_0x2feb95){if(_0x2f6677){if(_0x2feb95&&_0x2feb95[_0x04c5('0x2c')]){var _0x4a620f=moment()['format'](_0x04c5('0x2d'));for(var _0x2754d7=0x0,_0x35b3c1=_0x2feb95['length'];_0x2754d7<_0x35b3c1;_0x2754d7++){_0x2feb95[_0x2754d7][_0x04c5('0x2e')]({'exitAt':_0x4a620f});}}}})[_0x04c5('0x10')](function(){if(_0x2f6677){var _0x3c6dcb=[];var _0x52eb34=utils[_0x04c5('0x2f')]();_0x52eb34[_0x04c5('0x30')](function(_0x11d0b2){_0x3c6dcb['push']({'channel':_0x11d0b2,'membername':_0x2f6677['name'],'interface':_[_0x04c5('0x31')](_0x2f6677['interface'])?util['format'](_0x04c5('0x32'),_0x2f6677[_0x04c5('0x28')]):_0x2f6677['interface'],'type':'PAUSE','enterAt':moment()[_0x04c5('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x5a885d['body']['type']||_0x04c5('0x34'),'role':_0x2f6677[_0x04c5('0x29')],'internal':_0x2f6677['internal'],'uniqueid':_0x5a885d['body']['uniqueid']||null});});return db[_0x04c5('0x35')][_0x04c5('0x36')](_0x3c6dcb,{'individualHooks':!![]});}})[_0x04c5('0x10')](function(){if(_0x2f6677){return _0x2f6677[_0x04c5('0x37')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x5a885d[_0x04c5('0x38')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x04c5('0x33')](_0x04c5('0x2d'))});}})[_0x04c5('0x10')](function(_0x3f3c60){_0xf94eec(_0x3f3c60);})[_0x04c5('0x27')](function(_0x16bbee){_0x1b5560(_0x42e32d[_0x04c5('0x15')](0x1f4,_0x16bbee[_0x04c5('0x17')]));});});};exports[_0x04c5('0x39')]=function(_0x43fe6b){var _0x3f6432=this;return new Promise(function(_0x1af14e,_0x82b373){var _0x2a4087;return db['User']['findOne']({'where':_0x43fe6b[_0x04c5('0x1a')][_0x04c5('0x1b')]||{},'attributes':['id',_0x04c5('0x28')]})['then'](function(_0x2ce8df){if(_0x2ce8df){_0x2a4087=_0x2ce8df;if(_0x43fe6b['body'][_0x04c5('0x3a')]&&!utils['isValidChannel'](_0x43fe6b[_0x04c5('0x38')][_0x04c5('0x3a')])){throw new Error(_0x04c5('0x3b'));}switch(_0x43fe6b[_0x04c5('0x38')]['channel']){case _0x04c5('0x3c'):return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x2a4087['id']}})[_0x04c5('0x10')](function(){return db[_0x04c5('0x35')]['find']({'where':{'channel':_0x43fe6b[_0x04c5('0x38')]['channel'],'membername':_0x2a4087[_0x04c5('0x28')],'type':'PAUSE','exitAt':null}});})[_0x04c5('0x10')](function(_0x5c8a6d){if(_0x5c8a6d){return _0x5c8a6d['update']({'exitAt':moment()[_0x04c5('0x33')](_0x04c5('0x2d')),'data2':_0x04c5('0x3d')},{'individualHooks':!![]});}return null;})[_0x04c5('0x10')](function(){return _0x2a4087['update']({'voicePause':![]});});case _0x04c5('0x3e'):case _0x04c5('0x3f'):case _0x04c5('0x40'):case _0x04c5('0x41'):case _0x04c5('0x42'):case _0x04c5('0x43'):return db[_0x04c5('0x35')][_0x04c5('0x25')]({'where':{'channel':_0x43fe6b['body']['channel'],'membername':_0x2a4087[_0x04c5('0x28')],'type':_0x04c5('0x2b'),'exitAt':null}})[_0x04c5('0x10')](function(_0x46b3cf){return _0x46b3cf['update']({'exitAt':moment()[_0x04c5('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x04c5('0x3d')},{'individualHooks':!![]});})[_0x04c5('0x10')](function(){var _0x6578={};_['set'](_0x6578,util[_0x04c5('0x33')](_0x04c5('0x44'),_0x43fe6b[_0x04c5('0x38')][_0x04c5('0x3a')],_0x04c5('0x45')),![]);return _0x2a4087[_0x04c5('0x37')](_0x6578);});default:return db[_0x04c5('0x46')][_0x04c5('0x37')]({'paused':0x0},{'where':{'UserId':_0x2a4087['id']}})[_0x04c5('0x10')](function(){return db['MemberReport'][_0x04c5('0x19')]({'where':{'membername':_0x2a4087['name'],'type':_0x04c5('0x2b'),'exitAt':null}});})['then'](function(_0x465206){var _0x26fe55=[];_0x465206[_0x04c5('0x30')](function(_0x1cfdd3){_0x26fe55['push'](_0x1cfdd3[_0x04c5('0x37')]({'exitAt':moment()[_0x04c5('0x33')](_0x04c5('0x2d')),'data2':_0x04c5('0x3d')}));});return BPromise['all'](_0x26fe55);})[_0x04c5('0x10')](function(){return _0x2a4087[_0x04c5('0x37')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x04c5('0x10')](function(_0x35b36d){_0x1af14e(_0x35b36d);})[_0x04c5('0x27')](function(_0x276651){_0x82b373(_0x3f6432[_0x04c5('0x15')](0x1f4,_0x276651[_0x04c5('0x17')]));});});};exports['LogoutUser']=function(_0x1b4257){var _0x54a226=this;return new Promise(function(_0x1a73b1,_0x416009){var _0x3aa607;return db['User']['findOne']({'where':_0x1b4257['options'][_0x04c5('0x1b')]||{},'attributes':['id',_0x04c5('0x28')]})[_0x04c5('0x10')](function(_0x2b350d){if(_0x2b350d){_0x3aa607=_0x2b350d;return db[_0x04c5('0x46')][_0x04c5('0x47')]({'where':{'membername':_0x3aa607['name']},'individualHooks':!![]});}})[_0x04c5('0x10')](function(){if(_0x3aa607){return db[_0x04c5('0x35')]['findAll']({'where':{'membername':_0x3aa607[_0x04c5('0x28')],'exitAt':null}});}})['then'](function(_0x1edcd7){if(_0x3aa607){if(_0x1edcd7&&_0x1edcd7[_0x04c5('0x2c')]){var _0x3f6c5a=[];_0x1edcd7[_0x04c5('0x30')](function(_0x3b176d){_0x3f6c5a[_0x04c5('0x48')](_0x3b176d['update']({'exitAt':moment()['format'](_0x04c5('0x2d'))}));});return BPromise['all'](_0x3f6c5a);}}})['then'](function(){if(_0x3aa607){return _0x3aa607[_0x04c5('0x37')]({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x04c5('0x10')](function(_0x262d1a){_0x1a73b1(_0x262d1a);})[_0x04c5('0x27')](function(_0x3734e7){_0x416009(_0x54a226['error'](0x1f4,_0x3734e7[_0x04c5('0x17')]));});});};exports[_0x04c5('0x49')]=function(_0xf16a4e){var _0x279064=this;return new Promise(function(_0x1ff70c,_0x53df4b){var _0xd995fb;var _0x5c7ecc;var _0x4f7d4c;var _0x42cb9e;return db[_0x04c5('0x18')][_0x04c5('0x4a')]({'where':_0xf16a4e[_0x04c5('0x1a')][_0x04c5('0x1b')]||{},'attributes':['id',_0x04c5('0x28'),_0x04c5('0x29'),_0x04c5('0x4b'),_0x04c5('0x4c'),_0x04c5('0x4d'),_0x04c5('0x4e'),_0x04c5('0x2a')]})[_0x04c5('0x10')](function(_0x1d577c){if(_0x1d577c){_0xd995fb=_0x1d577c;_0x42cb9e=_0xf16a4e[_0x04c5('0x38')][_0x04c5('0x2a')]?_0xf16a4e[_0x04c5('0x38')][_0x04c5('0x2a')]:util['format'](_0x04c5('0x32'),_0xd995fb['name']);return db['User']['count']({'where':{'role':_0x04c5('0x4f'),'online':!![],'id':{'$ne':_0xd995fb['id']}}});}})[_0x04c5('0x10')](function(_0x547741){if(_0x547741){_0x4f7d4c=_0x547741;return require(_0x04c5('0x50'))['getLicense']();}})['then'](function(_0x2e487a){if(_0x2e487a&&_0x2e487a['agents']&&_0x4f7d4c>=_0x2e487a[_0x04c5('0x51')]){throw new Error(_0x04c5('0x52'));}})['then'](function(){if(_0xd995fb){return db[_0x04c5('0x46')][_0x04c5('0x47')]({'where':{'membername':_0xd995fb[_0x04c5('0x28')]},'individualHooks':!![]});}})[_0x04c5('0x10')](function(){if(_0xd995fb){return _0xd995fb['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x1b4a2c){if(_0xd995fb){if(_0x1b4a2c){var _0x1a12a0=[];_0x5c7ecc=_0x1b4a2c;if(_0x5c7ecc[_0x04c5('0x2c')]){for(var _0x1a7b72=0x0;_0x1a7b72<_0x5c7ecc[_0x04c5('0x2c')];_0x1a7b72++){_0x1a12a0[_0x04c5('0x48')](db['UserVoiceQueueRt']['upsert']({'membername':_0xd995fb['name'],'UserId':_0xd995fb['id'],'queue_name':_0x5c7ecc[_0x1a7b72]['name'],'VoiceQueueId':_0x5c7ecc[_0x1a7b72]['id'],'interface':_0x42cb9e,'paused':_0xd995fb['loginInPause']||![],'penalty':_0x5c7ecc[_0x1a7b72][_0x04c5('0x53')]||0x0}));}return BPromise[_0x04c5('0x54')](_0x1a12a0);}}}})[_0x04c5('0x10')](function(){if(_0xd995fb){return db[_0x04c5('0x35')][_0x04c5('0x19')]({'where':{'membername':_0xd995fb[_0x04c5('0x28')],'exitAt':null}});}})['then'](function(_0xd4a6ea){if(_0xd995fb){if(_0xd4a6ea&&_0xd4a6ea['length']){var _0xaa9fff=[];_0xd4a6ea[_0x04c5('0x30')](function(_0x4ab416){_0xaa9fff[_0x04c5('0x48')](_0x4ab416['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x04c5('0x54')](_0xaa9fff);}}})['then'](function(_0x16cc92){if(_0xd995fb){var _0x3e751c=[];var _0x5b65c9=[];var _0x3ee841=utils[_0x04c5('0x2f')]();var _0x53bf5d={'membername':_0xd995fb[_0x04c5('0x28')],'interface':_0x42cb9e,'enterAt':moment()[_0x04c5('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xd995fb[_0x04c5('0x29')],'internal':_0xd995fb[_0x04c5('0x4d')]};_0x3ee841[_0x04c5('0x30')](function(_0x3e33a8){_0x3e751c['push'](_['merge']({'channel':_0x3e33a8,'type':'LOGIN','data1':'callysquare','data2':_0x42cb9e},_0x53bf5d));if(_0xd995fb['loginInPause']){_0x5b65c9['push'](_['merge']({'channel':_0x3e33a8,'type':_0x04c5('0x2b'),'data1':_0x04c5('0x55')},_0x53bf5d));}});return db[_0x04c5('0x35')][_0x04c5('0x36')](_0x3e751c[_0x04c5('0x56')](_0x5b65c9),{'individualHooks':!![]});}})[_0x04c5('0x10')](function(){if(_0xd995fb){return _0xd995fb[_0x04c5('0x37')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0xd995fb[_0x04c5('0x4e')]||![],'mailPause':_0xd995fb['loginInPause']||![],'chatPause':_0xd995fb[_0x04c5('0x4e')]||![],'faxPause':_0xd995fb[_0x04c5('0x4e')]||![],'smsPause':_0xd995fb[_0x04c5('0x4e')]||![],'openchannelPause':_0xd995fb[_0x04c5('0x4e')]||![],'pauseType':_0xd995fb[_0x04c5('0x4e')]?_0x04c5('0x55'):null,'lastPauseAt':moment()[_0x04c5('0x33')](_0x04c5('0x2d')),'interface':_0x42cb9e});}})['then'](function(_0x22b99d){_0x1ff70c(_0x22b99d);})[_0x04c5('0x27')](function(_0x222b33){_0x53df4b(_0x279064[_0x04c5('0x15')](0x1f4,_0x222b33[_0x04c5('0x17')]));});});};