Built motion from commit 37e1ed56.|2.6.29
[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 _0xa7c3=['count','agent','getLicense','agents','destroy','getVoiceQueues','upsert','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','defaults','redis','localhost','socket.io-emitter','./user.socket','register','User','options','raw','attributes','limit','include','map','model','then','GetUser','debug','stringify','catch','error','message','ShowUser','find','where','info','PauseUser','name','internal','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','MemberReport','findAll','PAUSE','length','format','updateAttributes','forEach','push','isNil','interface','YYYY-MM-DD\x20HH:mm:ss','body','type','uniqueid','update','UnpauseUser','isValidChannel','channel','Channel\x20parameter\x20%s\x20is\x20invalid','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','unpause','system','LogoutUser','findOne','all','LoginUser','role','mobile','phone','loginInPause'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xa7c3,0x1ca));var _0x3a7c=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xa7c3[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x3a7c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3a7c('0x1'));var Redis=require('ioredis');var db=require(_0x3a7c('0x2'))['db'];var utils=require(_0x3a7c('0x3'));var logger=require(_0x3a7c('0x4'))(_0x3a7c('0x5'));var config=require(_0x3a7c('0x6'));config['redis']=_[_0x3a7c('0x7')](config[_0x3a7c('0x8')],{'host':_0x3a7c('0x9'),'port':0x18eb});var socket=require(_0x3a7c('0xa'))(new Redis(config[_0x3a7c('0x8')]));require(_0x3a7c('0xb'))[_0x3a7c('0xc')](socket);exports['GetUser']=function(_0x128825){var _0x5e8b50=this;return new Promise(function(_0x5d20b7,_0xc6232e){return db[_0x3a7c('0xd')]['findAll']({'raw':_0x128825[_0x3a7c('0xe')]?_0x128825['options'][_0x3a7c('0xf')]===undefined?!![]:![]:!![],'where':_0x128825[_0x3a7c('0xe')]?_0x128825['options']['where']||null:null,'attributes':_0x128825[_0x3a7c('0xe')]?_0x128825['options'][_0x3a7c('0x10')]||null:null,'limit':_0x128825[_0x3a7c('0xe')]?_0x128825[_0x3a7c('0xe')][_0x3a7c('0x11')]||null:null,'include':_0x128825[_0x3a7c('0xe')]?_0x128825[_0x3a7c('0xe')][_0x3a7c('0x12')]?_[_0x3a7c('0x13')](_0x128825['options'][_0x3a7c('0x12')],function(_0x31c274){return{'model':db[_0x31c274[_0x3a7c('0x14')]],'as':_0x31c274['as'],'attributes':_0x31c274[_0x3a7c('0x10')],'include':_0x31c274[_0x3a7c('0x12')]?_[_0x3a7c('0x13')](_0x31c274[_0x3a7c('0x12')],function(_0x41cf78){return{'model':db[_0x41cf78['model']],'as':_0x41cf78['as'],'attributes':_0x41cf78['attributes'],'include':_0x41cf78['include']?_[_0x3a7c('0x13')](_0x41cf78[_0x3a7c('0x12')],function(_0x181cf9){return{'model':db[_0x181cf9[_0x3a7c('0x14')]],'as':_0x181cf9['as'],'attributes':_0x181cf9[_0x3a7c('0x10')]};}):[]};}):[]};}):[]:[]})[_0x3a7c('0x15')](function(_0x2ba940){logger['info'](_0x3a7c('0x16'),_0x128825);logger[_0x3a7c('0x17')]('GetUser',_0x128825,JSON[_0x3a7c('0x18')](_0x2ba940));_0x5d20b7(_0x2ba940);})[_0x3a7c('0x19')](function(_0x5cfb7d){logger[_0x3a7c('0x1a')](_0x3a7c('0x16'),_0x5cfb7d[_0x3a7c('0x1b')],_0x128825);_0xc6232e(_0x5e8b50[_0x3a7c('0x1a')](0x1f4,_0x5cfb7d[_0x3a7c('0x1b')]));});});};exports[_0x3a7c('0x1c')]=function(_0x3126d9){var _0xb6f1b7=this;return new Promise(function(_0x33343a,_0x4747c6){return db[_0x3a7c('0xd')][_0x3a7c('0x1d')]({'raw':_0x3126d9[_0x3a7c('0xe')]?_0x3126d9['options']['raw']===undefined?!![]:![]:!![],'where':_0x3126d9['options']?_0x3126d9[_0x3a7c('0xe')][_0x3a7c('0x1e')]||null:null,'attributes':_0x3126d9['options']?_0x3126d9[_0x3a7c('0xe')]['attributes']||null:null,'include':_0x3126d9[_0x3a7c('0xe')]?_0x3126d9['options'][_0x3a7c('0x12')]?_[_0x3a7c('0x13')](_0x3126d9[_0x3a7c('0xe')][_0x3a7c('0x12')],function(_0x501551){return{'model':db[_0x501551[_0x3a7c('0x14')]],'as':_0x501551['as'],'attributes':_0x501551[_0x3a7c('0x10')],'include':_0x501551[_0x3a7c('0x12')]?_[_0x3a7c('0x13')](_0x501551[_0x3a7c('0x12')],function(_0x1d2eb4){return{'model':db[_0x1d2eb4[_0x3a7c('0x14')]],'as':_0x1d2eb4['as'],'attributes':_0x1d2eb4['attributes'],'include':_0x1d2eb4['include']?_[_0x3a7c('0x13')](_0x1d2eb4[_0x3a7c('0x12')],function(_0x3d5bbd){return{'model':db[_0x3d5bbd[_0x3a7c('0x14')]],'as':_0x3d5bbd['as'],'attributes':_0x3d5bbd[_0x3a7c('0x10')]};}):[]};}):[]};}):[]:[]})[_0x3a7c('0x15')](function(_0x116fd0){logger[_0x3a7c('0x1f')](_0x3a7c('0x1c'),_0x3126d9);logger[_0x3a7c('0x17')](_0x3a7c('0x1c'),_0x3126d9,JSON[_0x3a7c('0x18')](_0x116fd0));_0x33343a(_0x116fd0);})[_0x3a7c('0x19')](function(_0x5b2e06){logger['error'](_0x3a7c('0x1c'),_0x5b2e06['message'],_0x3126d9);_0x4747c6(_0xb6f1b7[_0x3a7c('0x1a')](0x1f4,_0x5b2e06[_0x3a7c('0x1b')]));});});};exports[_0x3a7c('0x20')]=function(_0x5a78f1){var _0x183fc0;return db[_0x3a7c('0xd')][_0x3a7c('0x1d')]({'where':_0x5a78f1['options']['where']||{},'attributes':['id',_0x3a7c('0x21'),'role',_0x3a7c('0x22'),'interface']})[_0x3a7c('0x15')](function(_0x2737af){if(!_0x2737af){throw new Error(util['format'](_0x3a7c('0x23'),_0x5a78f1[_0x3a7c('0x24')]['id']));}_0x183fc0=_0x2737af;return db[_0x3a7c('0x25')]['update']({'paused':0x1},{'where':{'UserId':_0x183fc0['id']},'individualHooks':!![]});})['then'](function(){return db[_0x3a7c('0x26')][_0x3a7c('0x27')]({'where':{'membername':_0x183fc0[_0x3a7c('0x21')],'type':_0x3a7c('0x28'),'exitAt':null}});})['then'](function(_0x549f94){if(_0x549f94&&_0x549f94[_0x3a7c('0x29')]){var _0x3851f3=moment()[_0x3a7c('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x26ecd1=0x0,_0x4041c2=_0x549f94[_0x3a7c('0x29')];_0x26ecd1<_0x4041c2;_0x26ecd1++){_0x549f94[_0x26ecd1][_0x3a7c('0x2b')]({'exitAt':_0x3851f3});}}})['then'](function(){var _0x201555=[];var _0x36a6d2=utils['getChannels']();_0x36a6d2[_0x3a7c('0x2c')](function(_0x5dc532){_0x201555[_0x3a7c('0x2d')]({'channel':_0x5dc532,'membername':_0x183fc0[_0x3a7c('0x21')],'interface':_[_0x3a7c('0x2e')](_0x183fc0[_0x3a7c('0x2f')])?util[_0x3a7c('0x2a')]('SIP/%s',_0x183fc0['name']):_0x183fc0[_0x3a7c('0x2f')],'type':_0x3a7c('0x28'),'enterAt':moment()['format'](_0x3a7c('0x30')),'data1':_0x5a78f1[_0x3a7c('0x31')][_0x3a7c('0x32')]||'DEFAULT\x20PAUSE','role':_0x183fc0['role'],'internal':_0x183fc0[_0x3a7c('0x22')],'uniqueid':_0x5a78f1[_0x3a7c('0x31')][_0x3a7c('0x33')]||null});});return db[_0x3a7c('0x26')]['bulkCreate'](_0x201555,{'individualHooks':!![]});})[_0x3a7c('0x15')](function(){return _0x183fc0[_0x3a7c('0x34')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x5a78f1[_0x3a7c('0x31')][_0x3a7c('0x32')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x3a7c('0x2a')](_0x3a7c('0x30'))});})['catch'](function(_0x36fcb6){throw _0x36fcb6;});};exports[_0x3a7c('0x35')]=function(_0x44f802){return Promise['resolve']()['then'](function(){if(_0x44f802[_0x3a7c('0x31')]['channel']&&!utils[_0x3a7c('0x36')](_0x44f802['body'][_0x3a7c('0x37')])){throw new Error(util[_0x3a7c('0x2a')](_0x3a7c('0x38'),_0x44f802[_0x3a7c('0x31')][_0x3a7c('0x37')]));}return db[_0x3a7c('0xd')]['findOne']({'where':_0x44f802[_0x3a7c('0xe')][_0x3a7c('0x1e')]||{},'attributes':['id',_0x3a7c('0x21'),'role',_0x3a7c('0x22'),_0x3a7c('0x2f'),_0x3a7c('0x39'),_0x3a7c('0x3a'),_0x3a7c('0x3b'),_0x3a7c('0x3c'),_0x3a7c('0x3d'),_0x3a7c('0x3e'),_0x3a7c('0x3f'),_0x3a7c('0x40'),_0x3a7c('0x41'),'lastPauseAt']});})[_0x3a7c('0x15')](function(_0x1a7d90){if(!_0x1a7d90){throw new Error(util[_0x3a7c('0x2a')]('User\x20with\x20id\x20%s\x20not\x20found',_0x44f802[_0x3a7c('0x24')]['id']));}return _0x1a7d90[_0x3a7c('0x42')](_0x44f802[_0x3a7c('0x31')]['channel'],_0x3a7c('0x43'));})[_0x3a7c('0x19')](function(_0x448e52){throw _0x448e52;});};exports[_0x3a7c('0x44')]=function(_0xcae540){var _0x28c8f9=this;return new Promise(function(_0x83a924,_0x154991){var _0x5d9a14;return db[_0x3a7c('0xd')][_0x3a7c('0x45')]({'where':_0xcae540['options'][_0x3a7c('0x1e')]||{},'attributes':['id',_0x3a7c('0x21')]})[_0x3a7c('0x15')](function(_0x4eb436){if(_0x4eb436){_0x5d9a14=_0x4eb436;return db[_0x3a7c('0x25')]['destroy']({'where':{'membername':_0x5d9a14[_0x3a7c('0x21')]},'individualHooks':!![]});}})['then'](function(){if(_0x5d9a14){return db[_0x3a7c('0x26')][_0x3a7c('0x27')]({'where':{'membername':_0x5d9a14[_0x3a7c('0x21')],'exitAt':null}});}})[_0x3a7c('0x15')](function(_0x15193e){if(_0x5d9a14){if(_0x15193e&&_0x15193e[_0x3a7c('0x29')]){var _0x19ea56=[];_0x15193e[_0x3a7c('0x2c')](function(_0x2dac80){_0x19ea56[_0x3a7c('0x2d')](_0x2dac80[_0x3a7c('0x34')]({'exitAt':moment()[_0x3a7c('0x2a')](_0x3a7c('0x30'))}));});return BPromise[_0x3a7c('0x46')](_0x19ea56);}}})[_0x3a7c('0x15')](function(){if(_0x5d9a14){return _0x5d9a14[_0x3a7c('0x34')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x3a7c('0x15')](function(_0x3a2ca1){_0x83a924(_0x3a2ca1);})[_0x3a7c('0x19')](function(_0x2eac01){_0x154991(_0x28c8f9['error'](0x1f4,_0x2eac01[_0x3a7c('0x1b')]));});});};exports[_0x3a7c('0x47')]=function(_0x4ffb8e){var _0x20de4e=this;return new Promise(function(_0x30402f,_0x2aedd9){var _0x448750;var _0x3432eb;var _0x22c950;var _0x528fab;return db[_0x3a7c('0xd')][_0x3a7c('0x45')]({'where':_0x4ffb8e['options'][_0x3a7c('0x1e')]||{},'attributes':['id',_0x3a7c('0x21'),_0x3a7c('0x48'),_0x3a7c('0x49'),_0x3a7c('0x4a'),_0x3a7c('0x22'),_0x3a7c('0x4b'),_0x3a7c('0x2f')]})[_0x3a7c('0x15')](function(_0x490157){if(_0x490157){_0x448750=_0x490157;_0x528fab=_0x4ffb8e[_0x3a7c('0x31')][_0x3a7c('0x2f')]?_0x4ffb8e[_0x3a7c('0x31')][_0x3a7c('0x2f')]:util[_0x3a7c('0x2a')]('SIP/%s',_0x448750[_0x3a7c('0x21')]);return db[_0x3a7c('0xd')][_0x3a7c('0x4c')]({'where':{'role':_0x3a7c('0x4d'),'online':!![],'id':{'$ne':_0x448750['id']}}});}})[_0x3a7c('0x15')](function(_0x3dbf65){if(_0x3dbf65){_0x22c950=_0x3dbf65;return require('../../config/license/util')[_0x3a7c('0x4e')]();}})[_0x3a7c('0x15')](function(_0x8b5315){if(_0x8b5315&&_0x8b5315[_0x3a7c('0x4f')]&&_0x22c950>=_0x8b5315['agents']){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})['then'](function(){if(_0x448750){return db[_0x3a7c('0x25')][_0x3a7c('0x50')]({'where':{'membername':_0x448750['name']},'individualHooks':!![]});}})[_0x3a7c('0x15')](function(){if(_0x448750){return _0x448750[_0x3a7c('0x51')]({'raw':!![]});}})[_0x3a7c('0x15')](function(_0x25f664){if(_0x448750){if(_0x25f664){var _0x526832=[];_0x3432eb=_0x25f664;if(_0x3432eb[_0x3a7c('0x29')]){for(var _0x177fa3=0x0;_0x177fa3<_0x3432eb[_0x3a7c('0x29')];_0x177fa3++){_0x526832[_0x3a7c('0x2d')](db[_0x3a7c('0x25')][_0x3a7c('0x52')]({'membername':_0x448750['name'],'UserId':_0x448750['id'],'queue_name':_0x3432eb[_0x177fa3][_0x3a7c('0x21')],'VoiceQueueId':_0x3432eb[_0x177fa3]['id'],'interface':_0x528fab,'paused':_0x448750[_0x3a7c('0x4b')]||![],'penalty':_0x3432eb[_0x177fa3]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x3a7c('0x46')](_0x526832);}}}})[_0x3a7c('0x15')](function(){if(_0x448750){return db['MemberReport'][_0x3a7c('0x27')]({'where':{'membername':_0x448750[_0x3a7c('0x21')],'exitAt':null}});}})[_0x3a7c('0x15')](function(_0x16ac6b){if(_0x448750){if(_0x16ac6b&&_0x16ac6b[_0x3a7c('0x29')]){var _0x5ad331=[];_0x16ac6b[_0x3a7c('0x2c')](function(_0x2a6d63){_0x5ad331[_0x3a7c('0x2d')](_0x2a6d63[_0x3a7c('0x34')]({'exitAt':moment()['format'](_0x3a7c('0x30'))}));});return BPromise[_0x3a7c('0x46')](_0x5ad331);}}})['then'](function(){if(_0x448750){var _0x364d3f=[];var _0x26ceb3=[];var _0x4ecd1b=utils[_0x3a7c('0x53')]();var _0x209b36={'membername':_0x448750[_0x3a7c('0x21')],'interface':_0x528fab,'enterAt':moment()[_0x3a7c('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x448750[_0x3a7c('0x48')],'internal':_0x448750[_0x3a7c('0x22')]};_0x4ecd1b[_0x3a7c('0x2c')](function(_0x20bda4){_0x364d3f[_0x3a7c('0x2d')](_[_0x3a7c('0x54')]({'channel':_0x20bda4,'type':_0x3a7c('0x55'),'data1':_0x3a7c('0x56'),'data2':_0x528fab},_0x209b36));if(_0x448750[_0x3a7c('0x4b')]){_0x26ceb3[_0x3a7c('0x2d')](_[_0x3a7c('0x54')]({'channel':_0x20bda4,'type':_0x3a7c('0x28'),'data1':_0x3a7c('0x57')},_0x209b36));}});return db[_0x3a7c('0x26')]['bulkCreate'](_0x364d3f[_0x3a7c('0x58')](_0x26ceb3),{'individualHooks':!![]});}})[_0x3a7c('0x15')](function(){if(_0x448750){return _0x448750[_0x3a7c('0x34')]({'online':!![],'lastLoginAt':moment()[_0x3a7c('0x2a')](_0x3a7c('0x30')),'voicePause':_0x448750['loginInPause']||![],'mailPause':_0x448750[_0x3a7c('0x4b')]||![],'chatPause':_0x448750['loginInPause']||![],'faxPause':_0x448750[_0x3a7c('0x4b')]||![],'smsPause':_0x448750[_0x3a7c('0x4b')]||![],'openchannelPause':_0x448750[_0x3a7c('0x4b')]||![],'pauseType':_0x448750[_0x3a7c('0x4b')]?_0x3a7c('0x57'):null,'lastPauseAt':moment()[_0x3a7c('0x2a')](_0x3a7c('0x30')),'interface':_0x528fab});}})['then'](function(_0x280dc8){_0x30402f(_0x280dc8);})[_0x3a7c('0x19')](function(_0x348b82){_0x2aedd9(_0x20de4e[_0x3a7c('0x1a')](0x1f4,_0x348b82[_0x3a7c('0x1b')]));});});};