1c47f144cbfeb8e809a828e4eff6a446c7aec9be
[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 _0xdb37=['mobile','phone','loginInPause','count','agent','getLicense','agents','getVoiceQueues','upsert','all','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','GetUser','User','findAll','options','where','attributes','limit','include','map','model','info','debug','catch','error','message','find','ShowUser','stringify','PauseUser','role','internal','interface','then','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','name','PAUSE','length','updateAttributes','getChannels','forEach','push','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','bulkCreate','UnpauseUser','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','lastPauseAt','unpause','system','LogoutUser','LoginUser'];(function(_0x5c3834,_0x2f4bcc){var _0x415f97=function(_0x1a76ed){while(--_0x1a76ed){_0x5c3834['push'](_0x5c3834['shift']());}};_0x415f97(++_0x2f4bcc);}(_0xdb37,0xb9));var _0x7db3=function(_0x517488,_0x3072c6){_0x517488=_0x517488-0x0;var _0x47ef03=_0xdb37[_0x517488];return _0x47ef03;};'use strict';var _=require(_0x7db3('0x0'));var util=require(_0x7db3('0x1'));var moment=require('moment');var BPromise=require(_0x7db3('0x2'));var Redis=require('ioredis');var db=require(_0x7db3('0x3'))['db'];var utils=require(_0x7db3('0x4'));var logger=require('../../config/logger')(_0x7db3('0x5'));var config=require(_0x7db3('0x6'));config[_0x7db3('0x7')]=_[_0x7db3('0x8')](config[_0x7db3('0x7')],{'host':_0x7db3('0x9'),'port':0x18eb});var socket=require(_0x7db3('0xa'))(new Redis(config[_0x7db3('0x7')]));require('./user.socket')[_0x7db3('0xb')](socket);exports[_0x7db3('0xc')]=function(_0x172193){var _0x50cfc9=this;return new Promise(function(_0x19e114,_0x552e5f){return db[_0x7db3('0xd')][_0x7db3('0xe')]({'raw':_0x172193['options']?_0x172193[_0x7db3('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x172193[_0x7db3('0xf')]?_0x172193['options'][_0x7db3('0x10')]||null:null,'attributes':_0x172193[_0x7db3('0xf')]?_0x172193[_0x7db3('0xf')][_0x7db3('0x11')]||null:null,'limit':_0x172193[_0x7db3('0xf')]?_0x172193[_0x7db3('0xf')][_0x7db3('0x12')]||null:null,'include':_0x172193['options']?_0x172193[_0x7db3('0xf')][_0x7db3('0x13')]?_[_0x7db3('0x14')](_0x172193[_0x7db3('0xf')][_0x7db3('0x13')],function(_0x13d6c0){return{'model':db[_0x13d6c0[_0x7db3('0x15')]],'as':_0x13d6c0['as'],'attributes':_0x13d6c0[_0x7db3('0x11')],'include':_0x13d6c0[_0x7db3('0x13')]?_[_0x7db3('0x14')](_0x13d6c0[_0x7db3('0x13')],function(_0x8cc102){return{'model':db[_0x8cc102[_0x7db3('0x15')]],'as':_0x8cc102['as'],'attributes':_0x8cc102[_0x7db3('0x11')],'include':_0x8cc102[_0x7db3('0x13')]?_['map'](_0x8cc102[_0x7db3('0x13')],function(_0x415a81){return{'model':db[_0x415a81['model']],'as':_0x415a81['as'],'attributes':_0x415a81[_0x7db3('0x11')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5df5b8){logger[_0x7db3('0x16')](_0x7db3('0xc'),_0x172193);logger[_0x7db3('0x17')]('GetUser',_0x172193,JSON['stringify'](_0x5df5b8));_0x19e114(_0x5df5b8);})[_0x7db3('0x18')](function(_0x5c56ba){logger[_0x7db3('0x19')](_0x7db3('0xc'),_0x5c56ba[_0x7db3('0x1a')],_0x172193);_0x552e5f(_0x50cfc9[_0x7db3('0x19')](0x1f4,_0x5c56ba['message']));});});};exports['ShowUser']=function(_0x29067a){var _0x545b49=this;return new Promise(function(_0x2e6d0c,_0x49d30b){return db[_0x7db3('0xd')][_0x7db3('0x1b')]({'raw':_0x29067a[_0x7db3('0xf')]?_0x29067a[_0x7db3('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x29067a[_0x7db3('0xf')]?_0x29067a['options'][_0x7db3('0x10')]||null:null,'attributes':_0x29067a[_0x7db3('0xf')]?_0x29067a[_0x7db3('0xf')][_0x7db3('0x11')]||null:null,'include':_0x29067a[_0x7db3('0xf')]?_0x29067a[_0x7db3('0xf')]['include']?_[_0x7db3('0x14')](_0x29067a[_0x7db3('0xf')]['include'],function(_0x4385f6){return{'model':db[_0x4385f6[_0x7db3('0x15')]],'as':_0x4385f6['as'],'attributes':_0x4385f6['attributes'],'include':_0x4385f6[_0x7db3('0x13')]?_[_0x7db3('0x14')](_0x4385f6[_0x7db3('0x13')],function(_0x46c752){return{'model':db[_0x46c752[_0x7db3('0x15')]],'as':_0x46c752['as'],'attributes':_0x46c752[_0x7db3('0x11')],'include':_0x46c752[_0x7db3('0x13')]?_['map'](_0x46c752['include'],function(_0x1f86eb){return{'model':db[_0x1f86eb[_0x7db3('0x15')]],'as':_0x1f86eb['as'],'attributes':_0x1f86eb[_0x7db3('0x11')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8df3e8){logger[_0x7db3('0x16')](_0x7db3('0x1c'),_0x29067a);logger[_0x7db3('0x17')](_0x7db3('0x1c'),_0x29067a,JSON[_0x7db3('0x1d')](_0x8df3e8));_0x2e6d0c(_0x8df3e8);})[_0x7db3('0x18')](function(_0x4c233e){logger[_0x7db3('0x19')](_0x7db3('0x1c'),_0x4c233e[_0x7db3('0x1a')],_0x29067a);_0x49d30b(_0x545b49[_0x7db3('0x19')](0x1f4,_0x4c233e[_0x7db3('0x1a')]));});});};exports[_0x7db3('0x1e')]=function(_0x4e380c){var _0x4cf894;return db['User']['find']({'where':_0x4e380c[_0x7db3('0xf')][_0x7db3('0x10')]||{},'attributes':['id','name',_0x7db3('0x1f'),_0x7db3('0x20'),_0x7db3('0x21')]})[_0x7db3('0x22')](function(_0x19147f){if(!_0x19147f){throw new Error(util[_0x7db3('0x23')](_0x7db3('0x24'),_0x4e380c[_0x7db3('0x25')]['id']));}_0x4cf894=_0x19147f;return db[_0x7db3('0x26')][_0x7db3('0x27')]({'paused':0x1},{'where':{'UserId':_0x4cf894['id']},'individualHooks':!![]});})[_0x7db3('0x22')](function(){return db[_0x7db3('0x28')][_0x7db3('0xe')]({'where':{'membername':_0x4cf894[_0x7db3('0x29')],'type':_0x7db3('0x2a'),'exitAt':null}});})['then'](function(_0x821bb3){if(_0x821bb3&&_0x821bb3[_0x7db3('0x2b')]){var _0x4989d9=moment()[_0x7db3('0x23')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x40c1ca=0x0,_0x29db61=_0x821bb3[_0x7db3('0x2b')];_0x40c1ca<_0x29db61;_0x40c1ca++){_0x821bb3[_0x40c1ca][_0x7db3('0x2c')]({'exitAt':_0x4989d9});}}})['then'](function(){var _0x5af837=[];var _0x570039=utils[_0x7db3('0x2d')]();_0x570039[_0x7db3('0x2e')](function(_0x3cb22e){_0x5af837[_0x7db3('0x2f')]({'channel':_0x3cb22e,'membername':_0x4cf894[_0x7db3('0x29')],'interface':_['isNil'](_0x4cf894[_0x7db3('0x21')])?util[_0x7db3('0x23')]('SIP/%s',_0x4cf894[_0x7db3('0x29')]):_0x4cf894[_0x7db3('0x21')],'type':_0x7db3('0x2a'),'enterAt':moment()[_0x7db3('0x23')](_0x7db3('0x30')),'data1':_0x4e380c[_0x7db3('0x31')][_0x7db3('0x32')]||_0x7db3('0x33'),'role':_0x4cf894[_0x7db3('0x1f')],'internal':_0x4cf894['internal'],'uniqueid':_0x4e380c[_0x7db3('0x31')]['uniqueid']||null});});return db[_0x7db3('0x28')][_0x7db3('0x34')](_0x5af837,{'individualHooks':!![]});})['then'](function(){return _0x4cf894[_0x7db3('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4e380c[_0x7db3('0x31')]['type']||_0x7db3('0x33'),'lastPauseAt':moment()[_0x7db3('0x23')](_0x7db3('0x30'))});})[_0x7db3('0x18')](function(_0x37bc1a){throw _0x37bc1a;});};exports[_0x7db3('0x35')]=function(_0x5ad43b){return Promise['resolve']()[_0x7db3('0x22')](function(){if(_0x5ad43b[_0x7db3('0x31')][_0x7db3('0x36')]&&!utils[_0x7db3('0x37')](_0x5ad43b[_0x7db3('0x31')][_0x7db3('0x36')])){throw new Error(util['format'](_0x7db3('0x38'),_0x5ad43b[_0x7db3('0x31')][_0x7db3('0x36')]));}return db[_0x7db3('0xd')][_0x7db3('0x39')]({'where':_0x5ad43b[_0x7db3('0xf')][_0x7db3('0x10')]||{},'attributes':['id',_0x7db3('0x29'),_0x7db3('0x1f'),_0x7db3('0x20'),_0x7db3('0x21'),_0x7db3('0x3a'),_0x7db3('0x3b'),_0x7db3('0x3c'),_0x7db3('0x3d'),_0x7db3('0x3e'),_0x7db3('0x3f'),_0x7db3('0x40'),'whatsappPause','pauseType',_0x7db3('0x41')]});})['then'](function(_0x360825){if(!_0x360825){throw new Error(util['format'](_0x7db3('0x24'),_0x5ad43b[_0x7db3('0x25')]['id']));}return _0x360825[_0x7db3('0x42')](_0x5ad43b[_0x7db3('0x31')]['channel'],_0x7db3('0x43'));})[_0x7db3('0x18')](function(_0x13b6d3){throw _0x13b6d3;});};exports[_0x7db3('0x44')]=function(_0x74e77b){var _0x54aea2=this;return new Promise(function(_0x2f3264,_0x1fd82d){var _0x53b21b;return db[_0x7db3('0xd')]['findOne']({'where':_0x74e77b[_0x7db3('0xf')]['where']||{},'attributes':['id',_0x7db3('0x29')]})[_0x7db3('0x22')](function(_0x1c7016){if(_0x1c7016){_0x53b21b=_0x1c7016;return db[_0x7db3('0x26')]['destroy']({'where':{'membername':_0x53b21b['name']},'individualHooks':!![]});}})[_0x7db3('0x22')](function(){if(_0x53b21b){return db[_0x7db3('0x28')][_0x7db3('0xe')]({'where':{'membername':_0x53b21b[_0x7db3('0x29')],'exitAt':null}});}})[_0x7db3('0x22')](function(_0x39ea6e){if(_0x53b21b){if(_0x39ea6e&&_0x39ea6e[_0x7db3('0x2b')]){var _0x4b614b=[];_0x39ea6e[_0x7db3('0x2e')](function(_0x346877){_0x4b614b[_0x7db3('0x2f')](_0x346877['update']({'exitAt':moment()[_0x7db3('0x23')](_0x7db3('0x30'))}));});return BPromise['all'](_0x4b614b);}}})[_0x7db3('0x22')](function(){if(_0x53b21b){return _0x53b21b['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x7db3('0x22')](function(_0x41ce31){_0x2f3264(_0x41ce31);})[_0x7db3('0x18')](function(_0x283221){_0x1fd82d(_0x54aea2[_0x7db3('0x19')](0x1f4,_0x283221[_0x7db3('0x1a')]));});});};exports[_0x7db3('0x45')]=function(_0x69a9c4){var _0x354ad8=this;return new Promise(function(_0x58a4dc,_0xb5229e){var _0x463fe4;var _0xaf4a2e;var _0x222afa;var _0xcc08f6;return db['User']['findOne']({'where':_0x69a9c4[_0x7db3('0xf')]['where']||{},'attributes':['id',_0x7db3('0x29'),_0x7db3('0x1f'),_0x7db3('0x46'),_0x7db3('0x47'),_0x7db3('0x20'),_0x7db3('0x48'),_0x7db3('0x21')]})[_0x7db3('0x22')](function(_0x2ee1e9){if(_0x2ee1e9){_0x463fe4=_0x2ee1e9;_0xcc08f6=_0x69a9c4[_0x7db3('0x31')][_0x7db3('0x21')]?_0x69a9c4[_0x7db3('0x31')][_0x7db3('0x21')]:util['format']('SIP/%s',_0x463fe4[_0x7db3('0x29')]);return db[_0x7db3('0xd')][_0x7db3('0x49')]({'where':{'role':_0x7db3('0x4a'),'online':!![],'id':{'$ne':_0x463fe4['id']}}});}})[_0x7db3('0x22')](function(_0x28b319){if(_0x28b319){_0x222afa=_0x28b319;return require('../../config/license/util')[_0x7db3('0x4b')]();}})[_0x7db3('0x22')](function(_0x33b488){if(_0x33b488&&_0x33b488[_0x7db3('0x4c')]&&_0x222afa>=_0x33b488[_0x7db3('0x4c')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})['then'](function(){if(_0x463fe4){return db[_0x7db3('0x26')]['destroy']({'where':{'membername':_0x463fe4['name']},'individualHooks':!![]});}})[_0x7db3('0x22')](function(){if(_0x463fe4){return _0x463fe4[_0x7db3('0x4d')]({'raw':!![]});}})[_0x7db3('0x22')](function(_0x30f761){if(_0x463fe4){if(_0x30f761){var _0x59d3fc=[];_0xaf4a2e=_0x30f761;if(_0xaf4a2e['length']){for(var _0x16b15d=0x0;_0x16b15d<_0xaf4a2e[_0x7db3('0x2b')];_0x16b15d++){_0x59d3fc[_0x7db3('0x2f')](db['UserVoiceQueueRt'][_0x7db3('0x4e')]({'membername':_0x463fe4[_0x7db3('0x29')],'UserId':_0x463fe4['id'],'queue_name':_0xaf4a2e[_0x16b15d][_0x7db3('0x29')],'VoiceQueueId':_0xaf4a2e[_0x16b15d]['id'],'interface':_0xcc08f6,'paused':_0x463fe4[_0x7db3('0x48')]||![],'penalty':_0xaf4a2e[_0x16b15d]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x7db3('0x4f')](_0x59d3fc);}}}})[_0x7db3('0x22')](function(){if(_0x463fe4){return db[_0x7db3('0x28')][_0x7db3('0xe')]({'where':{'membername':_0x463fe4[_0x7db3('0x29')],'exitAt':null}});}})[_0x7db3('0x22')](function(_0x70e2d){if(_0x463fe4){if(_0x70e2d&&_0x70e2d[_0x7db3('0x2b')]){var _0x207ebd=[];_0x70e2d[_0x7db3('0x2e')](function(_0x2693d3){_0x207ebd['push'](_0x2693d3[_0x7db3('0x27')]({'exitAt':moment()['format'](_0x7db3('0x30'))}));});return BPromise[_0x7db3('0x4f')](_0x207ebd);}}})['then'](function(){if(_0x463fe4){var _0x260fb0=[];var _0x245560=[];var _0x1eb123=utils['getChannels']();var _0x8cc28a={'membername':_0x463fe4['name'],'interface':_0xcc08f6,'enterAt':moment()[_0x7db3('0x23')](_0x7db3('0x30')),'role':_0x463fe4[_0x7db3('0x1f')],'internal':_0x463fe4[_0x7db3('0x20')]};_0x1eb123[_0x7db3('0x2e')](function(_0x416524){_0x260fb0[_0x7db3('0x2f')](_[_0x7db3('0x50')]({'channel':_0x416524,'type':_0x7db3('0x51'),'data1':_0x7db3('0x52'),'data2':_0xcc08f6},_0x8cc28a));if(_0x463fe4[_0x7db3('0x48')]){_0x245560[_0x7db3('0x2f')](_[_0x7db3('0x50')]({'channel':_0x416524,'type':_0x7db3('0x2a'),'data1':_0x7db3('0x53')},_0x8cc28a));}});return db['MemberReport'][_0x7db3('0x34')](_0x260fb0[_0x7db3('0x54')](_0x245560),{'individualHooks':!![]});}})[_0x7db3('0x22')](function(){if(_0x463fe4){return _0x463fe4[_0x7db3('0x27')]({'online':!![],'lastLoginAt':moment()[_0x7db3('0x23')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x463fe4[_0x7db3('0x48')]||![],'mailPause':_0x463fe4[_0x7db3('0x48')]||![],'chatPause':_0x463fe4[_0x7db3('0x48')]||![],'faxPause':_0x463fe4['loginInPause']||![],'smsPause':_0x463fe4[_0x7db3('0x48')]||![],'openchannelPause':_0x463fe4[_0x7db3('0x48')]||![],'pauseType':_0x463fe4[_0x7db3('0x48')]?_0x7db3('0x53'):null,'lastPauseAt':moment()[_0x7db3('0x23')](_0x7db3('0x30')),'interface':_0xcc08f6});}})[_0x7db3('0x22')](function(_0x246117){_0x58a4dc(_0x246117);})[_0x7db3('0x18')](function(_0xbbebb0){_0xb5229e(_0x354ad8[_0x7db3('0x19')](0x1f4,_0xbbebb0[_0x7db3('0x1a')]));});});};