49e2d9953ad59ac51dda116e799a83a8ec46fad4
[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 _0xebf9=['whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','unpause','system','findOne','destroy','all','LoginUser','mobile','phone','count','agent','../../config/license/util','getLicense','agents','getVoiceQueues','upsert','loginInPause','UserVoiceQueue.penalty','LOGIN','callysquare','concat','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','GetUser','User','options','raw','where','limit','include','map','model','attributes','then','info','debug','catch','message','ShowUser','stringify','error','PauseUser','find','role','internal','interface','UserVoiceQueueRt','update','MemberReport','findAll','name','PAUSE','length','updateAttributes','getChannels','forEach','push','format','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','YYYY-MM-DD\x20HH:mm:ss','UnpauseUser','channel','Channel\x20parameter\x20%s\x20is\x20invalid','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause'];(function(_0x109dbd,_0x290d2b){var _0x395644=function(_0x5a8c2d){while(--_0x5a8c2d){_0x109dbd['push'](_0x109dbd['shift']());}};_0x395644(++_0x290d2b);}(_0xebf9,0xce));var _0x9ebf=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xebf9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x9ebf('0x0'));var util=require(_0x9ebf('0x1'));var moment=require(_0x9ebf('0x2'));var BPromise=require(_0x9ebf('0x3'));var Redis=require(_0x9ebf('0x4'));var db=require(_0x9ebf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9ebf('0x6'))(_0x9ebf('0x7'));var config=require(_0x9ebf('0x8'));config[_0x9ebf('0x9')]=_[_0x9ebf('0xa')](config[_0x9ebf('0x9')],{'host':_0x9ebf('0xb'),'port':0x18eb});var socket=require(_0x9ebf('0xc'))(new Redis(config[_0x9ebf('0x9')]));require('./user.socket')['register'](socket);exports[_0x9ebf('0xd')]=function(_0x34bb2c){var _0x4a0104=this;return new Promise(function(_0x1a1d3e,_0x489c60){return db[_0x9ebf('0xe')]['findAll']({'raw':_0x34bb2c['options']?_0x34bb2c[_0x9ebf('0xf')][_0x9ebf('0x10')]===undefined?!![]:![]:!![],'where':_0x34bb2c['options']?_0x34bb2c[_0x9ebf('0xf')][_0x9ebf('0x11')]||null:null,'attributes':_0x34bb2c['options']?_0x34bb2c[_0x9ebf('0xf')]['attributes']||null:null,'limit':_0x34bb2c[_0x9ebf('0xf')]?_0x34bb2c['options'][_0x9ebf('0x12')]||null:null,'include':_0x34bb2c[_0x9ebf('0xf')]?_0x34bb2c[_0x9ebf('0xf')][_0x9ebf('0x13')]?_[_0x9ebf('0x14')](_0x34bb2c[_0x9ebf('0xf')][_0x9ebf('0x13')],function(_0x38221b){return{'model':db[_0x38221b[_0x9ebf('0x15')]],'as':_0x38221b['as'],'attributes':_0x38221b[_0x9ebf('0x16')],'include':_0x38221b[_0x9ebf('0x13')]?_[_0x9ebf('0x14')](_0x38221b[_0x9ebf('0x13')],function(_0x516c11){return{'model':db[_0x516c11['model']],'as':_0x516c11['as'],'attributes':_0x516c11[_0x9ebf('0x16')],'include':_0x516c11[_0x9ebf('0x13')]?_[_0x9ebf('0x14')](_0x516c11['include'],function(_0x12c7cb){return{'model':db[_0x12c7cb[_0x9ebf('0x15')]],'as':_0x12c7cb['as'],'attributes':_0x12c7cb[_0x9ebf('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9ebf('0x17')](function(_0x552977){logger[_0x9ebf('0x18')]('GetUser',_0x34bb2c);logger[_0x9ebf('0x19')]('GetUser',_0x34bb2c,JSON['stringify'](_0x552977));_0x1a1d3e(_0x552977);})[_0x9ebf('0x1a')](function(_0x56a334){logger['error'](_0x9ebf('0xd'),_0x56a334[_0x9ebf('0x1b')],_0x34bb2c);_0x489c60(_0x4a0104['error'](0x1f4,_0x56a334['message']));});});};exports[_0x9ebf('0x1c')]=function(_0x585878){var _0x35805a=this;return new Promise(function(_0x40a28c,_0x3a1993){return db[_0x9ebf('0xe')]['find']({'raw':_0x585878[_0x9ebf('0xf')]?_0x585878['options'][_0x9ebf('0x10')]===undefined?!![]:![]:!![],'where':_0x585878['options']?_0x585878['options'][_0x9ebf('0x11')]||null:null,'attributes':_0x585878[_0x9ebf('0xf')]?_0x585878[_0x9ebf('0xf')][_0x9ebf('0x16')]||null:null,'include':_0x585878[_0x9ebf('0xf')]?_0x585878[_0x9ebf('0xf')][_0x9ebf('0x13')]?_[_0x9ebf('0x14')](_0x585878[_0x9ebf('0xf')][_0x9ebf('0x13')],function(_0x125389){return{'model':db[_0x125389[_0x9ebf('0x15')]],'as':_0x125389['as'],'attributes':_0x125389[_0x9ebf('0x16')],'include':_0x125389[_0x9ebf('0x13')]?_[_0x9ebf('0x14')](_0x125389[_0x9ebf('0x13')],function(_0x4b4afd){return{'model':db[_0x4b4afd[_0x9ebf('0x15')]],'as':_0x4b4afd['as'],'attributes':_0x4b4afd[_0x9ebf('0x16')],'include':_0x4b4afd[_0x9ebf('0x13')]?_['map'](_0x4b4afd[_0x9ebf('0x13')],function(_0x1df371){return{'model':db[_0x1df371[_0x9ebf('0x15')]],'as':_0x1df371['as'],'attributes':_0x1df371[_0x9ebf('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9ebf('0x17')](function(_0x43b843){logger[_0x9ebf('0x18')](_0x9ebf('0x1c'),_0x585878);logger[_0x9ebf('0x19')](_0x9ebf('0x1c'),_0x585878,JSON[_0x9ebf('0x1d')](_0x43b843));_0x40a28c(_0x43b843);})['catch'](function(_0x3a5b89){logger[_0x9ebf('0x1e')](_0x9ebf('0x1c'),_0x3a5b89[_0x9ebf('0x1b')],_0x585878);_0x3a1993(_0x35805a['error'](0x1f4,_0x3a5b89['message']));});});};exports[_0x9ebf('0x1f')]=function(_0x23328e){var _0x46a048;return db['User'][_0x9ebf('0x20')]({'where':_0x23328e[_0x9ebf('0xf')]['where']||{},'attributes':['id','name',_0x9ebf('0x21'),_0x9ebf('0x22'),_0x9ebf('0x23')]})[_0x9ebf('0x17')](function(_0x4c3da6){if(!_0x4c3da6){throw new Error(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x23328e['params']['id']));}_0x46a048=_0x4c3da6;return db[_0x9ebf('0x24')][_0x9ebf('0x25')]({'paused':0x1},{'where':{'UserId':_0x46a048['id']},'individualHooks':!![]});})[_0x9ebf('0x17')](function(){return db[_0x9ebf('0x26')][_0x9ebf('0x27')]({'where':{'membername':_0x46a048[_0x9ebf('0x28')],'type':_0x9ebf('0x29'),'exitAt':null}});})[_0x9ebf('0x17')](function(_0x252d92){if(_0x252d92&&_0x252d92['length']){var _0x4f0fa2=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x4a1c8d=0x0,_0x102ef4=_0x252d92[_0x9ebf('0x2a')];_0x4a1c8d<_0x102ef4;_0x4a1c8d++){_0x252d92[_0x4a1c8d][_0x9ebf('0x2b')]({'exitAt':_0x4f0fa2});}}})['then'](function(){var _0x415145=[];var _0x1dd80f=utils[_0x9ebf('0x2c')]();_0x1dd80f[_0x9ebf('0x2d')](function(_0x3cbce2){_0x415145[_0x9ebf('0x2e')]({'channel':_0x3cbce2,'membername':_0x46a048[_0x9ebf('0x28')],'interface':_['isNil'](_0x46a048[_0x9ebf('0x23')])?util[_0x9ebf('0x2f')](_0x9ebf('0x30'),_0x46a048[_0x9ebf('0x28')]):_0x46a048[_0x9ebf('0x23')],'type':_0x9ebf('0x29'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x23328e[_0x9ebf('0x31')][_0x9ebf('0x32')]||_0x9ebf('0x33'),'role':_0x46a048[_0x9ebf('0x21')],'internal':_0x46a048[_0x9ebf('0x22')],'uniqueid':_0x23328e['body'][_0x9ebf('0x34')]||null});});return db[_0x9ebf('0x26')][_0x9ebf('0x35')](_0x415145,{'individualHooks':!![]});})['then'](function(){return _0x46a048['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x23328e[_0x9ebf('0x31')][_0x9ebf('0x32')]||_0x9ebf('0x33'),'lastPauseAt':moment()[_0x9ebf('0x2f')](_0x9ebf('0x36'))});})[_0x9ebf('0x1a')](function(_0x3a75dc){throw _0x3a75dc;});};exports[_0x9ebf('0x37')]=function(_0x3af814){return Promise['resolve']()[_0x9ebf('0x17')](function(){if(_0x3af814[_0x9ebf('0x31')][_0x9ebf('0x38')]&&!utils['isValidChannel'](_0x3af814[_0x9ebf('0x31')][_0x9ebf('0x38')])){throw new Error(util[_0x9ebf('0x2f')](_0x9ebf('0x39'),_0x3af814['body']['channel']));}return db['User']['findOne']({'where':_0x3af814[_0x9ebf('0xf')][_0x9ebf('0x11')]||{},'attributes':['id',_0x9ebf('0x28'),_0x9ebf('0x21'),_0x9ebf('0x22'),_0x9ebf('0x23'),'online',_0x9ebf('0x3a'),_0x9ebf('0x3b'),_0x9ebf('0x3c'),_0x9ebf('0x3d'),_0x9ebf('0x3e'),_0x9ebf('0x3f'),_0x9ebf('0x40'),_0x9ebf('0x41'),_0x9ebf('0x42')]});})[_0x9ebf('0x17')](function(_0x2da115){if(!_0x2da115){throw new Error(util[_0x9ebf('0x2f')](_0x9ebf('0x43'),_0x3af814[_0x9ebf('0x44')]['id']));}return _0x2da115[_0x9ebf('0x45')](_0x3af814['body'][_0x9ebf('0x38')],_0x9ebf('0x46'));})[_0x9ebf('0x1a')](function(_0x258caf){throw _0x258caf;});};exports['LogoutUser']=function(_0x22f3a6){var _0x27a46d=this;return new Promise(function(_0x4e2497,_0x3234fe){var _0x1a582f;return db[_0x9ebf('0xe')][_0x9ebf('0x47')]({'where':_0x22f3a6['options']['where']||{},'attributes':['id','name']})['then'](function(_0x1ca892){if(_0x1ca892){_0x1a582f=_0x1ca892;return db[_0x9ebf('0x24')][_0x9ebf('0x48')]({'where':{'membername':_0x1a582f[_0x9ebf('0x28')]},'individualHooks':!![]});}})[_0x9ebf('0x17')](function(){if(_0x1a582f){return db[_0x9ebf('0x26')][_0x9ebf('0x27')]({'where':{'membername':_0x1a582f[_0x9ebf('0x28')],'exitAt':null}});}})[_0x9ebf('0x17')](function(_0x1cb813){if(_0x1a582f){if(_0x1cb813&&_0x1cb813['length']){var _0x2edd17=[];_0x1cb813[_0x9ebf('0x2d')](function(_0x2ad6fc){_0x2edd17[_0x9ebf('0x2e')](_0x2ad6fc['update']({'exitAt':moment()[_0x9ebf('0x2f')](_0x9ebf('0x36'))}));});return BPromise[_0x9ebf('0x49')](_0x2edd17);}}})[_0x9ebf('0x17')](function(){if(_0x1a582f){return _0x1a582f[_0x9ebf('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9ebf('0x17')](function(_0xd7cac1){_0x4e2497(_0xd7cac1);})['catch'](function(_0x411c35){_0x3234fe(_0x27a46d[_0x9ebf('0x1e')](0x1f4,_0x411c35[_0x9ebf('0x1b')]));});});};exports[_0x9ebf('0x4a')]=function(_0x4dfe1b){var _0x94517c=this;return new Promise(function(_0x21c153,_0x282248){var _0x5d4fa8;var _0x1d1647;var _0x3738bc;var _0x26ca18;return db[_0x9ebf('0xe')][_0x9ebf('0x47')]({'where':_0x4dfe1b[_0x9ebf('0xf')][_0x9ebf('0x11')]||{},'attributes':['id',_0x9ebf('0x28'),'role',_0x9ebf('0x4b'),_0x9ebf('0x4c'),_0x9ebf('0x22'),'loginInPause',_0x9ebf('0x23')]})['then'](function(_0x6f69cb){if(_0x6f69cb){_0x5d4fa8=_0x6f69cb;_0x26ca18=_0x4dfe1b['body'][_0x9ebf('0x23')]?_0x4dfe1b[_0x9ebf('0x31')]['interface']:util[_0x9ebf('0x2f')]('SIP/%s',_0x5d4fa8[_0x9ebf('0x28')]);return db[_0x9ebf('0xe')][_0x9ebf('0x4d')]({'where':{'role':_0x9ebf('0x4e'),'online':!![],'id':{'$ne':_0x5d4fa8['id']}}});}})[_0x9ebf('0x17')](function(_0x5db9fd){if(_0x5db9fd){_0x3738bc=_0x5db9fd;return require(_0x9ebf('0x4f'))[_0x9ebf('0x50')]();}})[_0x9ebf('0x17')](function(_0x2239f5){if(_0x2239f5&&_0x2239f5[_0x9ebf('0x51')]&&_0x3738bc>=_0x2239f5[_0x9ebf('0x51')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x9ebf('0x17')](function(){if(_0x5d4fa8){return db[_0x9ebf('0x24')]['destroy']({'where':{'membername':_0x5d4fa8[_0x9ebf('0x28')]},'individualHooks':!![]});}})[_0x9ebf('0x17')](function(){if(_0x5d4fa8){return _0x5d4fa8[_0x9ebf('0x52')]({'raw':!![]});}})[_0x9ebf('0x17')](function(_0x372361){if(_0x5d4fa8){if(_0x372361){var _0xee7e4f=[];_0x1d1647=_0x372361;if(_0x1d1647[_0x9ebf('0x2a')]){for(var _0x5d1fed=0x0;_0x5d1fed<_0x1d1647['length'];_0x5d1fed++){_0xee7e4f[_0x9ebf('0x2e')](db[_0x9ebf('0x24')][_0x9ebf('0x53')]({'membername':_0x5d4fa8[_0x9ebf('0x28')],'UserId':_0x5d4fa8['id'],'queue_name':_0x1d1647[_0x5d1fed]['name'],'VoiceQueueId':_0x1d1647[_0x5d1fed]['id'],'interface':_0x26ca18,'paused':_0x5d4fa8[_0x9ebf('0x54')]||![],'penalty':_0x1d1647[_0x5d1fed][_0x9ebf('0x55')]||0x0}));}return BPromise['all'](_0xee7e4f);}}}})['then'](function(){if(_0x5d4fa8){return db[_0x9ebf('0x26')]['findAll']({'where':{'membername':_0x5d4fa8[_0x9ebf('0x28')],'exitAt':null}});}})[_0x9ebf('0x17')](function(_0x45891d){if(_0x5d4fa8){if(_0x45891d&&_0x45891d['length']){var _0x4ecac8=[];_0x45891d[_0x9ebf('0x2d')](function(_0x10f6fb){_0x4ecac8[_0x9ebf('0x2e')](_0x10f6fb['update']({'exitAt':moment()[_0x9ebf('0x2f')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x9ebf('0x49')](_0x4ecac8);}}})[_0x9ebf('0x17')](function(){if(_0x5d4fa8){var _0x13700e=[];var _0x58eff0=[];var _0xa10a8f=utils[_0x9ebf('0x2c')]();var _0x1cc270={'membername':_0x5d4fa8[_0x9ebf('0x28')],'interface':_0x26ca18,'enterAt':moment()[_0x9ebf('0x2f')](_0x9ebf('0x36')),'role':_0x5d4fa8['role'],'internal':_0x5d4fa8['internal']};_0xa10a8f[_0x9ebf('0x2d')](function(_0x47b66e){_0x13700e[_0x9ebf('0x2e')](_['merge']({'channel':_0x47b66e,'type':_0x9ebf('0x56'),'data1':_0x9ebf('0x57'),'data2':_0x26ca18},_0x1cc270));if(_0x5d4fa8[_0x9ebf('0x54')]){_0x58eff0[_0x9ebf('0x2e')](_['merge']({'channel':_0x47b66e,'type':_0x9ebf('0x29'),'data1':'LOGININPAUSE'},_0x1cc270));}});return db[_0x9ebf('0x26')][_0x9ebf('0x35')](_0x13700e[_0x9ebf('0x58')](_0x58eff0),{'individualHooks':!![]});}})[_0x9ebf('0x17')](function(){if(_0x5d4fa8){return _0x5d4fa8[_0x9ebf('0x25')]({'online':!![],'lastLoginAt':moment()['format'](_0x9ebf('0x36')),'voicePause':_0x5d4fa8['loginInPause']||![],'mailPause':_0x5d4fa8[_0x9ebf('0x54')]||![],'chatPause':_0x5d4fa8[_0x9ebf('0x54')]||![],'faxPause':_0x5d4fa8[_0x9ebf('0x54')]||![],'smsPause':_0x5d4fa8[_0x9ebf('0x54')]||![],'openchannelPause':_0x5d4fa8[_0x9ebf('0x54')]||![],'pauseType':_0x5d4fa8[_0x9ebf('0x54')]?_0x9ebf('0x59'):null,'lastPauseAt':moment()[_0x9ebf('0x2f')](_0x9ebf('0x36')),'interface':_0x26ca18});}})[_0x9ebf('0x17')](function(_0xa92e9b){_0x21c153(_0xa92e9b);})[_0x9ebf('0x1a')](function(_0x28cf03){_0x282248(_0x94517c[_0x9ebf('0x1e')](0x1f4,_0x28cf03[_0x9ebf('0x1b')]));});});};