25e31f84253bdc20ad50dcdda7042495c3261884
[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 _0xc6e9=['mailPause','smsPause','whatsappPause','pauseType','lastPauseAt','system','LogoutUser','destroy','forEach','all','LoginUser','mobile','phone','loginInPause','SIP/%s','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','callysquare','LOGININPAUSE','bulkCreate','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','defaults','redis','localhost','socket.io-emitter','./user.socket','register','GetUser','User','options','raw','attributes','map','model','include','then','debug','stringify','catch','error','message','ShowUser','find','where','info','PauseUser','name','role','internal','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','push','isNil','interface','type','body','uniqueid','DEFAULT\x20PAUSE','resolve','isValidChannel','channel','findOne','voicePause'];(function(_0x34c2d4,_0x418ed2){var _0x38796a=function(_0xf017c5){while(--_0xf017c5){_0x34c2d4['push'](_0x34c2d4['shift']());}};_0x38796a(++_0x418ed2);}(_0xc6e9,0x76));var _0x9c6e=function(_0x22aac4,_0x13ab22){_0x22aac4=_0x22aac4-0x0;var _0x31ebf9=_0xc6e9[_0x22aac4];return _0x31ebf9;};'use strict';var _=require(_0x9c6e('0x0'));var util=require(_0x9c6e('0x1'));var moment=require(_0x9c6e('0x2'));var BPromise=require(_0x9c6e('0x3'));var Redis=require(_0x9c6e('0x4'));var db=require(_0x9c6e('0x5'))['db'];var utils=require(_0x9c6e('0x6'));var logger=require(_0x9c6e('0x7'))(_0x9c6e('0x8'));var config=require(_0x9c6e('0x9'));config['redis']=_[_0x9c6e('0xa')](config[_0x9c6e('0xb')],{'host':_0x9c6e('0xc'),'port':0x18eb});var socket=require(_0x9c6e('0xd'))(new Redis(config['redis']));require(_0x9c6e('0xe'))[_0x9c6e('0xf')](socket);exports[_0x9c6e('0x10')]=function(_0x47214b){var _0x4ad6fb=this;return new Promise(function(_0x172081,_0x3c6b49){return db[_0x9c6e('0x11')]['findAll']({'raw':_0x47214b[_0x9c6e('0x12')]?_0x47214b[_0x9c6e('0x12')][_0x9c6e('0x13')]===undefined?!![]:![]:!![],'where':_0x47214b[_0x9c6e('0x12')]?_0x47214b['options']['where']||null:null,'attributes':_0x47214b[_0x9c6e('0x12')]?_0x47214b[_0x9c6e('0x12')][_0x9c6e('0x14')]||null:null,'limit':_0x47214b['options']?_0x47214b['options']['limit']||null:null,'include':_0x47214b[_0x9c6e('0x12')]?_0x47214b[_0x9c6e('0x12')]['include']?_[_0x9c6e('0x15')](_0x47214b[_0x9c6e('0x12')]['include'],function(_0x4a07de){return{'model':db[_0x4a07de[_0x9c6e('0x16')]],'as':_0x4a07de['as'],'attributes':_0x4a07de['attributes'],'include':_0x4a07de[_0x9c6e('0x17')]?_[_0x9c6e('0x15')](_0x4a07de['include'],function(_0x542167){return{'model':db[_0x542167['model']],'as':_0x542167['as'],'attributes':_0x542167[_0x9c6e('0x14')],'include':_0x542167[_0x9c6e('0x17')]?_[_0x9c6e('0x15')](_0x542167[_0x9c6e('0x17')],function(_0x587d93){return{'model':db[_0x587d93['model']],'as':_0x587d93['as'],'attributes':_0x587d93[_0x9c6e('0x14')]};}):[]};}):[]};}):[]:[]})[_0x9c6e('0x18')](function(_0x33de23){logger['info'](_0x9c6e('0x10'),_0x47214b);logger[_0x9c6e('0x19')]('GetUser',_0x47214b,JSON[_0x9c6e('0x1a')](_0x33de23));_0x172081(_0x33de23);})[_0x9c6e('0x1b')](function(_0x2fde3a){logger[_0x9c6e('0x1c')](_0x9c6e('0x10'),_0x2fde3a[_0x9c6e('0x1d')],_0x47214b);_0x3c6b49(_0x4ad6fb[_0x9c6e('0x1c')](0x1f4,_0x2fde3a['message']));});});};exports[_0x9c6e('0x1e')]=function(_0x1e26f2){var _0x196413=this;return new Promise(function(_0x2b026c,_0x4b072c){return db['User'][_0x9c6e('0x1f')]({'raw':_0x1e26f2[_0x9c6e('0x12')]?_0x1e26f2[_0x9c6e('0x12')][_0x9c6e('0x13')]===undefined?!![]:![]:!![],'where':_0x1e26f2['options']?_0x1e26f2[_0x9c6e('0x12')][_0x9c6e('0x20')]||null:null,'attributes':_0x1e26f2['options']?_0x1e26f2[_0x9c6e('0x12')][_0x9c6e('0x14')]||null:null,'include':_0x1e26f2[_0x9c6e('0x12')]?_0x1e26f2[_0x9c6e('0x12')][_0x9c6e('0x17')]?_[_0x9c6e('0x15')](_0x1e26f2[_0x9c6e('0x12')][_0x9c6e('0x17')],function(_0x943eaa){return{'model':db[_0x943eaa[_0x9c6e('0x16')]],'as':_0x943eaa['as'],'attributes':_0x943eaa[_0x9c6e('0x14')],'include':_0x943eaa[_0x9c6e('0x17')]?_[_0x9c6e('0x15')](_0x943eaa[_0x9c6e('0x17')],function(_0x271959){return{'model':db[_0x271959[_0x9c6e('0x16')]],'as':_0x271959['as'],'attributes':_0x271959['attributes'],'include':_0x271959[_0x9c6e('0x17')]?_['map'](_0x271959[_0x9c6e('0x17')],function(_0x510dc0){return{'model':db[_0x510dc0[_0x9c6e('0x16')]],'as':_0x510dc0['as'],'attributes':_0x510dc0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x18947a){logger[_0x9c6e('0x21')](_0x9c6e('0x1e'),_0x1e26f2);logger[_0x9c6e('0x19')](_0x9c6e('0x1e'),_0x1e26f2,JSON[_0x9c6e('0x1a')](_0x18947a));_0x2b026c(_0x18947a);})['catch'](function(_0x32c752){logger['error'](_0x9c6e('0x1e'),_0x32c752[_0x9c6e('0x1d')],_0x1e26f2);_0x4b072c(_0x196413['error'](0x1f4,_0x32c752[_0x9c6e('0x1d')]));});});};exports[_0x9c6e('0x22')]=function(_0x37d1a4){var _0x10bc3f;return db[_0x9c6e('0x11')][_0x9c6e('0x1f')]({'where':_0x37d1a4[_0x9c6e('0x12')][_0x9c6e('0x20')]||{},'attributes':['id',_0x9c6e('0x23'),_0x9c6e('0x24'),_0x9c6e('0x25'),'interface']})['then'](function(_0x26c133){if(!_0x26c133){throw new Error(util[_0x9c6e('0x26')](_0x9c6e('0x27'),_0x37d1a4[_0x9c6e('0x28')]['id']));}_0x10bc3f=_0x26c133;return db[_0x9c6e('0x29')][_0x9c6e('0x2a')]({'paused':0x1},{'where':{'UserId':_0x10bc3f['id']},'individualHooks':!![]});})['then'](function(){return db[_0x9c6e('0x2b')][_0x9c6e('0x2c')]({'where':{'membername':_0x10bc3f[_0x9c6e('0x23')],'type':_0x9c6e('0x2d'),'exitAt':null}});})[_0x9c6e('0x18')](function(_0x4475d4){if(_0x4475d4&&_0x4475d4[_0x9c6e('0x2e')]){var _0x11f7e9=moment()['format'](_0x9c6e('0x2f'));for(var _0x3495e4=0x0,_0x59d92b=_0x4475d4[_0x9c6e('0x2e')];_0x3495e4<_0x59d92b;_0x3495e4++){_0x4475d4[_0x3495e4][_0x9c6e('0x30')]({'exitAt':_0x11f7e9});}}})[_0x9c6e('0x18')](function(){var _0x6dfbc3=[];var _0x19a583=utils[_0x9c6e('0x31')]();_0x19a583['forEach'](function(_0x3f60b1){_0x6dfbc3[_0x9c6e('0x32')]({'channel':_0x3f60b1,'membername':_0x10bc3f[_0x9c6e('0x23')],'interface':_[_0x9c6e('0x33')](_0x10bc3f[_0x9c6e('0x34')])?util[_0x9c6e('0x26')]('SIP/%s',_0x10bc3f[_0x9c6e('0x23')]):_0x10bc3f[_0x9c6e('0x34')],'type':_0x9c6e('0x2d'),'enterAt':moment()[_0x9c6e('0x26')](_0x9c6e('0x2f')),'data1':_0x37d1a4['body'][_0x9c6e('0x35')]||'DEFAULT\x20PAUSE','role':_0x10bc3f['role'],'internal':_0x10bc3f[_0x9c6e('0x25')],'uniqueid':_0x37d1a4[_0x9c6e('0x36')][_0x9c6e('0x37')]||null});});return db[_0x9c6e('0x2b')]['bulkCreate'](_0x6dfbc3,{'individualHooks':!![]});})[_0x9c6e('0x18')](function(){return _0x10bc3f[_0x9c6e('0x2a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x37d1a4[_0x9c6e('0x36')][_0x9c6e('0x35')]||_0x9c6e('0x38'),'lastPauseAt':moment()[_0x9c6e('0x26')](_0x9c6e('0x2f'))});})['catch'](function(_0x12c463){throw _0x12c463;});};exports['UnpauseUser']=function(_0x22f304){return Promise[_0x9c6e('0x39')]()[_0x9c6e('0x18')](function(){if(_0x22f304[_0x9c6e('0x36')]['channel']&&!utils[_0x9c6e('0x3a')](_0x22f304[_0x9c6e('0x36')][_0x9c6e('0x3b')])){throw new Error(util[_0x9c6e('0x26')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x22f304['body'][_0x9c6e('0x3b')]));}return db[_0x9c6e('0x11')][_0x9c6e('0x3c')]({'where':_0x22f304['options'][_0x9c6e('0x20')]||{},'attributes':['id',_0x9c6e('0x23'),'role',_0x9c6e('0x25'),_0x9c6e('0x34'),'online',_0x9c6e('0x3d'),_0x9c6e('0x3e'),'chatPause','faxPause','openchannelPause',_0x9c6e('0x3f'),_0x9c6e('0x40'),_0x9c6e('0x41'),_0x9c6e('0x42')]});})[_0x9c6e('0x18')](function(_0x3edb1c){if(!_0x3edb1c){throw new Error(util[_0x9c6e('0x26')]('User\x20with\x20id\x20%s\x20not\x20found',_0x22f304[_0x9c6e('0x28')]['id']));}return _0x3edb1c['unpause'](_0x22f304['body'][_0x9c6e('0x3b')],_0x9c6e('0x43'));})[_0x9c6e('0x1b')](function(_0x2a186e){throw _0x2a186e;});};exports[_0x9c6e('0x44')]=function(_0x280d28){var _0x1a161f=this;return new Promise(function(_0x604d66,_0x337fb8){var _0x564fd8;return db[_0x9c6e('0x11')][_0x9c6e('0x3c')]({'where':_0x280d28['options'][_0x9c6e('0x20')]||{},'attributes':['id',_0x9c6e('0x23')]})[_0x9c6e('0x18')](function(_0x95db71){if(_0x95db71){_0x564fd8=_0x95db71;return db[_0x9c6e('0x29')][_0x9c6e('0x45')]({'where':{'membername':_0x564fd8[_0x9c6e('0x23')]},'individualHooks':!![]});}})[_0x9c6e('0x18')](function(){if(_0x564fd8){return db['MemberReport'][_0x9c6e('0x2c')]({'where':{'membername':_0x564fd8[_0x9c6e('0x23')],'exitAt':null}});}})[_0x9c6e('0x18')](function(_0x26315b){if(_0x564fd8){if(_0x26315b&&_0x26315b[_0x9c6e('0x2e')]){var _0x5a8e73=[];_0x26315b[_0x9c6e('0x46')](function(_0x34c69d){_0x5a8e73[_0x9c6e('0x32')](_0x34c69d[_0x9c6e('0x2a')]({'exitAt':moment()[_0x9c6e('0x26')](_0x9c6e('0x2f'))}));});return BPromise[_0x9c6e('0x47')](_0x5a8e73);}}})[_0x9c6e('0x18')](function(){if(_0x564fd8){return _0x564fd8[_0x9c6e('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9c6e('0x18')](function(_0x2749a6){_0x604d66(_0x2749a6);})[_0x9c6e('0x1b')](function(_0x338cf2){_0x337fb8(_0x1a161f[_0x9c6e('0x1c')](0x1f4,_0x338cf2['message']));});});};exports[_0x9c6e('0x48')]=function(_0x1d5df0){var _0x3b7af2=this;return new Promise(function(_0x514ee5,_0x134304){var _0x1d5967;var _0x534710;var _0x49e2a3;var _0x4dd3ee;return db[_0x9c6e('0x11')][_0x9c6e('0x3c')]({'where':_0x1d5df0[_0x9c6e('0x12')][_0x9c6e('0x20')]||{},'attributes':['id',_0x9c6e('0x23'),'role',_0x9c6e('0x49'),_0x9c6e('0x4a'),_0x9c6e('0x25'),_0x9c6e('0x4b'),'interface']})[_0x9c6e('0x18')](function(_0x2331e0){if(_0x2331e0){_0x1d5967=_0x2331e0;_0x4dd3ee=_0x1d5df0[_0x9c6e('0x36')]['interface']?_0x1d5df0[_0x9c6e('0x36')][_0x9c6e('0x34')]:util[_0x9c6e('0x26')](_0x9c6e('0x4c'),_0x1d5967['name']);return db[_0x9c6e('0x11')][_0x9c6e('0x4d')]({'where':{'role':_0x9c6e('0x4e'),'online':!![],'id':{'$ne':_0x1d5967['id']}}});}})[_0x9c6e('0x18')](function(_0x35139c){if(_0x35139c){_0x49e2a3=_0x35139c;return require('../../config/license/util')[_0x9c6e('0x4f')]();}})['then'](function(_0x25f046){if(_0x25f046&&_0x25f046[_0x9c6e('0x50')]&&_0x49e2a3>=_0x25f046[_0x9c6e('0x50')]){throw new Error(_0x9c6e('0x51'));}})[_0x9c6e('0x18')](function(){if(_0x1d5967){return db[_0x9c6e('0x29')][_0x9c6e('0x45')]({'where':{'membername':_0x1d5967['name']},'individualHooks':!![]});}})[_0x9c6e('0x18')](function(){if(_0x1d5967){return _0x1d5967[_0x9c6e('0x52')]({'raw':!![]});}})[_0x9c6e('0x18')](function(_0x4c5574){if(_0x1d5967){if(_0x4c5574){var _0x3144ba=[];_0x534710=_0x4c5574;if(_0x534710[_0x9c6e('0x2e')]){for(var _0x4fca20=0x0;_0x4fca20<_0x534710[_0x9c6e('0x2e')];_0x4fca20++){_0x3144ba[_0x9c6e('0x32')](db[_0x9c6e('0x29')][_0x9c6e('0x53')]({'membername':_0x1d5967[_0x9c6e('0x23')],'UserId':_0x1d5967['id'],'queue_name':_0x534710[_0x4fca20][_0x9c6e('0x23')],'VoiceQueueId':_0x534710[_0x4fca20]['id'],'interface':_0x4dd3ee,'paused':_0x1d5967[_0x9c6e('0x4b')]||![],'penalty':_0x534710[_0x4fca20][_0x9c6e('0x54')]||0x0}));}return BPromise[_0x9c6e('0x47')](_0x3144ba);}}}})[_0x9c6e('0x18')](function(){if(_0x1d5967){return db[_0x9c6e('0x2b')][_0x9c6e('0x2c')]({'where':{'membername':_0x1d5967[_0x9c6e('0x23')],'exitAt':null}});}})['then'](function(_0x4b616c){if(_0x1d5967){if(_0x4b616c&&_0x4b616c[_0x9c6e('0x2e')]){var _0x4970dc=[];_0x4b616c['forEach'](function(_0x152476){_0x4970dc[_0x9c6e('0x32')](_0x152476['update']({'exitAt':moment()[_0x9c6e('0x26')](_0x9c6e('0x2f'))}));});return BPromise['all'](_0x4970dc);}}})[_0x9c6e('0x18')](function(){if(_0x1d5967){var _0x25fd3e=[];var _0x179c70=[];var _0x45ab4d=utils[_0x9c6e('0x31')]();var _0x37917c={'membername':_0x1d5967[_0x9c6e('0x23')],'interface':_0x4dd3ee,'enterAt':moment()[_0x9c6e('0x26')](_0x9c6e('0x2f')),'role':_0x1d5967['role'],'internal':_0x1d5967[_0x9c6e('0x25')]};_0x45ab4d[_0x9c6e('0x46')](function(_0x2a2836){_0x25fd3e[_0x9c6e('0x32')](_[_0x9c6e('0x55')]({'channel':_0x2a2836,'type':'LOGIN','data1':_0x9c6e('0x56'),'data2':_0x4dd3ee},_0x37917c));if(_0x1d5967['loginInPause']){_0x179c70[_0x9c6e('0x32')](_['merge']({'channel':_0x2a2836,'type':'PAUSE','data1':_0x9c6e('0x57')},_0x37917c));}});return db['MemberReport'][_0x9c6e('0x58')](_0x25fd3e[_0x9c6e('0x59')](_0x179c70),{'individualHooks':!![]});}})[_0x9c6e('0x18')](function(){if(_0x1d5967){return _0x1d5967[_0x9c6e('0x2a')]({'online':!![],'lastLoginAt':moment()['format'](_0x9c6e('0x2f')),'voicePause':_0x1d5967['loginInPause']||![],'mailPause':_0x1d5967[_0x9c6e('0x4b')]||![],'chatPause':_0x1d5967[_0x9c6e('0x4b')]||![],'faxPause':_0x1d5967[_0x9c6e('0x4b')]||![],'smsPause':_0x1d5967[_0x9c6e('0x4b')]||![],'openchannelPause':_0x1d5967['loginInPause']||![],'pauseType':_0x1d5967[_0x9c6e('0x4b')]?_0x9c6e('0x57'):null,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x4dd3ee});}})['then'](function(_0x3db007){_0x514ee5(_0x3db007);})[_0x9c6e('0x1b')](function(_0x2a26f6){_0x134304(_0x3b7af2['error'](0x1f4,_0x2a26f6['message']));});});};