770bcef6693852d328a436feda91d44d573f6ea7
[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 _0x7081=['count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','UserVoiceQueueRt','upsert','LOGIN','callysquare','merge','LOGININPAUSE','concat','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','./user.socket','findAll','options','raw','where','attributes','limit','include','map','model','then','info','GetUser','debug','error','message','ShowUser','User','find','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','update','MemberReport','length','YYYY-MM-DD\x20HH:mm:ss','forEach','push','isNil','SIP/%s','PAUSE','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','catch','UnpauseUser','isValidChannel','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','voicePause','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','unpause','system','LogoutUser','all','LoginUser','mobile','loginInPause'];(function(_0x440b5b,_0x4d8ed2){var _0x57a9ee=function(_0xeecb8e){while(--_0xeecb8e){_0x440b5b['push'](_0x440b5b['shift']());}};_0x57a9ee(++_0x4d8ed2);}(_0x7081,0xb7));var _0x1708=function(_0x534617,_0x41a7ba){_0x534617=_0x534617-0x0;var _0x516e6a=_0x7081[_0x534617];return _0x516e6a;};'use strict';var _=require(_0x1708('0x0'));var util=require(_0x1708('0x1'));var moment=require(_0x1708('0x2'));var BPromise=require(_0x1708('0x3'));var Redis=require(_0x1708('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1708('0x5'))(_0x1708('0x6'));var config=require(_0x1708('0x7'));config[_0x1708('0x8')]=_[_0x1708('0x9')](config['redis'],{'host':_0x1708('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1708('0xb'))['register'](socket);exports['GetUser']=function(_0x5c6d6d){var _0x5ac00c=this;return new Promise(function(_0x464eed,_0xdda7f9){return db['User'][_0x1708('0xc')]({'raw':_0x5c6d6d[_0x1708('0xd')]?_0x5c6d6d['options'][_0x1708('0xe')]===undefined?!![]:![]:!![],'where':_0x5c6d6d['options']?_0x5c6d6d[_0x1708('0xd')][_0x1708('0xf')]||null:null,'attributes':_0x5c6d6d['options']?_0x5c6d6d['options'][_0x1708('0x10')]||null:null,'limit':_0x5c6d6d['options']?_0x5c6d6d[_0x1708('0xd')][_0x1708('0x11')]||null:null,'include':_0x5c6d6d[_0x1708('0xd')]?_0x5c6d6d[_0x1708('0xd')][_0x1708('0x12')]?_[_0x1708('0x13')](_0x5c6d6d[_0x1708('0xd')][_0x1708('0x12')],function(_0x300a85){return{'model':db[_0x300a85[_0x1708('0x14')]],'as':_0x300a85['as'],'attributes':_0x300a85['attributes'],'include':_0x300a85[_0x1708('0x12')]?_[_0x1708('0x13')](_0x300a85[_0x1708('0x12')],function(_0x5b263d){return{'model':db[_0x5b263d['model']],'as':_0x5b263d['as'],'attributes':_0x5b263d['attributes'],'include':_0x5b263d[_0x1708('0x12')]?_[_0x1708('0x13')](_0x5b263d[_0x1708('0x12')],function(_0x2fec5d){return{'model':db[_0x2fec5d[_0x1708('0x14')]],'as':_0x2fec5d['as'],'attributes':_0x2fec5d[_0x1708('0x10')]};}):[]};}):[]};}):[]:[]})[_0x1708('0x15')](function(_0x2e4e24){logger[_0x1708('0x16')](_0x1708('0x17'),_0x5c6d6d);logger[_0x1708('0x18')]('GetUser',_0x5c6d6d,JSON['stringify'](_0x2e4e24));_0x464eed(_0x2e4e24);})['catch'](function(_0x155144){logger[_0x1708('0x19')](_0x1708('0x17'),_0x155144[_0x1708('0x1a')],_0x5c6d6d);_0xdda7f9(_0x5ac00c[_0x1708('0x19')](0x1f4,_0x155144[_0x1708('0x1a')]));});});};exports[_0x1708('0x1b')]=function(_0x4a1786){var _0x561478=this;return new Promise(function(_0x55bccc,_0x183671){return db[_0x1708('0x1c')][_0x1708('0x1d')]({'raw':_0x4a1786[_0x1708('0xd')]?_0x4a1786['options'][_0x1708('0xe')]===undefined?!![]:![]:!![],'where':_0x4a1786[_0x1708('0xd')]?_0x4a1786[_0x1708('0xd')][_0x1708('0xf')]||null:null,'attributes':_0x4a1786[_0x1708('0xd')]?_0x4a1786[_0x1708('0xd')][_0x1708('0x10')]||null:null,'include':_0x4a1786[_0x1708('0xd')]?_0x4a1786['options'][_0x1708('0x12')]?_[_0x1708('0x13')](_0x4a1786['options'][_0x1708('0x12')],function(_0x1655c2){return{'model':db[_0x1655c2[_0x1708('0x14')]],'as':_0x1655c2['as'],'attributes':_0x1655c2[_0x1708('0x10')],'include':_0x1655c2['include']?_[_0x1708('0x13')](_0x1655c2[_0x1708('0x12')],function(_0x5b0c8e){return{'model':db[_0x5b0c8e[_0x1708('0x14')]],'as':_0x5b0c8e['as'],'attributes':_0x5b0c8e['attributes'],'include':_0x5b0c8e[_0x1708('0x12')]?_[_0x1708('0x13')](_0x5b0c8e[_0x1708('0x12')],function(_0x1e3023){return{'model':db[_0x1e3023[_0x1708('0x14')]],'as':_0x1e3023['as'],'attributes':_0x1e3023[_0x1708('0x10')]};}):[]};}):[]};}):[]:[]})[_0x1708('0x15')](function(_0x254d12){logger[_0x1708('0x16')](_0x1708('0x1b'),_0x4a1786);logger[_0x1708('0x18')](_0x1708('0x1b'),_0x4a1786,JSON['stringify'](_0x254d12));_0x55bccc(_0x254d12);})['catch'](function(_0x3b1bc7){logger['error'](_0x1708('0x1b'),_0x3b1bc7[_0x1708('0x1a')],_0x4a1786);_0x183671(_0x561478[_0x1708('0x19')](0x1f4,_0x3b1bc7[_0x1708('0x1a')]));});});};exports['PauseUser']=function(_0xf25e4a){var _0x4821b0;return db['User'][_0x1708('0x1d')]({'where':_0xf25e4a[_0x1708('0xd')][_0x1708('0xf')]||{},'attributes':['id',_0x1708('0x1e'),_0x1708('0x1f'),_0x1708('0x20'),_0x1708('0x21')]})[_0x1708('0x15')](function(_0xce7d9b){if(!_0xce7d9b){throw new Error(util[_0x1708('0x22')](_0x1708('0x23'),_0xf25e4a[_0x1708('0x24')]['id']));}_0x4821b0=_0xce7d9b;return db['UserVoiceQueueRt'][_0x1708('0x25')]({'paused':0x1},{'where':{'UserId':_0x4821b0['id']},'individualHooks':!![]});})[_0x1708('0x15')](function(){return db[_0x1708('0x26')][_0x1708('0xc')]({'where':{'membername':_0x4821b0[_0x1708('0x1e')],'type':'PAUSE','exitAt':null}});})['then'](function(_0x47f6d6){if(_0x47f6d6&&_0x47f6d6[_0x1708('0x27')]){var _0x29780a=moment()[_0x1708('0x22')](_0x1708('0x28'));for(var _0x2f4f79=0x0,_0x4e7fc=_0x47f6d6[_0x1708('0x27')];_0x2f4f79<_0x4e7fc;_0x2f4f79++){_0x47f6d6[_0x2f4f79]['updateAttributes']({'exitAt':_0x29780a});}}})[_0x1708('0x15')](function(){var _0xdd2969=[];var _0x122dc8=utils['getChannels']();_0x122dc8[_0x1708('0x29')](function(_0x16d9d2){_0xdd2969[_0x1708('0x2a')]({'channel':_0x16d9d2,'membername':_0x4821b0[_0x1708('0x1e')],'interface':_[_0x1708('0x2b')](_0x4821b0[_0x1708('0x21')])?util[_0x1708('0x22')](_0x1708('0x2c'),_0x4821b0[_0x1708('0x1e')]):_0x4821b0[_0x1708('0x21')],'type':_0x1708('0x2d'),'enterAt':moment()['format'](_0x1708('0x28')),'data1':_0xf25e4a[_0x1708('0x2e')][_0x1708('0x2f')]||_0x1708('0x30'),'role':_0x4821b0['role'],'internal':_0x4821b0[_0x1708('0x20')],'uniqueid':_0xf25e4a[_0x1708('0x2e')][_0x1708('0x31')]||null});});return db[_0x1708('0x26')][_0x1708('0x32')](_0xdd2969,{'individualHooks':!![]});})['then'](function(){return _0x4821b0['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0xf25e4a[_0x1708('0x2e')][_0x1708('0x2f')]||_0x1708('0x30'),'lastPauseAt':moment()['format'](_0x1708('0x28'))});})[_0x1708('0x33')](function(_0x4e5b39){throw _0x4e5b39;});};exports[_0x1708('0x34')]=function(_0x2d148b){return Promise['resolve']()[_0x1708('0x15')](function(){if(_0x2d148b[_0x1708('0x2e')]['channel']&&!utils[_0x1708('0x35')](_0x2d148b[_0x1708('0x2e')][_0x1708('0x36')])){throw new Error(util['format'](_0x1708('0x37'),_0x2d148b[_0x1708('0x2e')]['channel']));}return db[_0x1708('0x1c')][_0x1708('0x38')]({'where':_0x2d148b[_0x1708('0xd')][_0x1708('0xf')]||{},'attributes':['id',_0x1708('0x1e'),_0x1708('0x1f'),_0x1708('0x20'),_0x1708('0x21'),'online',_0x1708('0x39'),_0x1708('0x3a'),'chatPause',_0x1708('0x3b'),_0x1708('0x3c'),_0x1708('0x3d'),_0x1708('0x3e'),_0x1708('0x3f'),_0x1708('0x40')]});})[_0x1708('0x15')](function(_0x2766d5){if(!_0x2766d5){throw new Error(util[_0x1708('0x22')](_0x1708('0x23'),_0x2d148b[_0x1708('0x24')]['id']));}return _0x2766d5[_0x1708('0x41')](_0x2d148b[_0x1708('0x2e')][_0x1708('0x36')],_0x1708('0x42'));})[_0x1708('0x33')](function(_0x4a6bf1){throw _0x4a6bf1;});};exports[_0x1708('0x43')]=function(_0x2ca281){var _0x3ff733=this;return new Promise(function(_0x57b23f,_0x99a8d7){var _0x36bdd1;return db[_0x1708('0x1c')]['findOne']({'where':_0x2ca281[_0x1708('0xd')]['where']||{},'attributes':['id',_0x1708('0x1e')]})['then'](function(_0x20c754){if(_0x20c754){_0x36bdd1=_0x20c754;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x36bdd1[_0x1708('0x1e')]},'individualHooks':!![]});}})[_0x1708('0x15')](function(){if(_0x36bdd1){return db[_0x1708('0x26')][_0x1708('0xc')]({'where':{'membername':_0x36bdd1[_0x1708('0x1e')],'exitAt':null}});}})[_0x1708('0x15')](function(_0x216595){if(_0x36bdd1){if(_0x216595&&_0x216595[_0x1708('0x27')]){var _0x246e24=[];_0x216595[_0x1708('0x29')](function(_0x3e40f2){_0x246e24['push'](_0x3e40f2[_0x1708('0x25')]({'exitAt':moment()[_0x1708('0x22')](_0x1708('0x28'))}));});return BPromise[_0x1708('0x44')](_0x246e24);}}})[_0x1708('0x15')](function(){if(_0x36bdd1){return _0x36bdd1['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x1708('0x15')](function(_0x18d567){_0x57b23f(_0x18d567);})[_0x1708('0x33')](function(_0x29f59c){_0x99a8d7(_0x3ff733[_0x1708('0x19')](0x1f4,_0x29f59c[_0x1708('0x1a')]));});});};exports[_0x1708('0x45')]=function(_0x3dff4a){var _0x598ec6=this;return new Promise(function(_0x52ebea,_0x3009e3){var _0x415fed;var _0x2500fa;var _0x464d60;var _0x1c6df8;return db[_0x1708('0x1c')][_0x1708('0x38')]({'where':_0x3dff4a[_0x1708('0xd')]['where']||{},'attributes':['id',_0x1708('0x1e'),'role',_0x1708('0x46'),'phone',_0x1708('0x20'),_0x1708('0x47'),_0x1708('0x21')]})['then'](function(_0xf7d0ac){if(_0xf7d0ac){_0x415fed=_0xf7d0ac;_0x1c6df8=_0x3dff4a['body']['interface']?_0x3dff4a[_0x1708('0x2e')][_0x1708('0x21')]:util[_0x1708('0x22')](_0x1708('0x2c'),_0x415fed['name']);return db['User'][_0x1708('0x48')]({'where':{'role':_0x1708('0x49'),'online':!![],'id':{'$ne':_0x415fed['id']}}});}})['then'](function(_0x470fbb){if(_0x470fbb){_0x464d60=_0x470fbb;return require('../../config/license/util')[_0x1708('0x4a')]();}})[_0x1708('0x15')](function(_0xcc340e){if(_0xcc340e&&_0xcc340e['agents']&&_0x464d60>=_0xcc340e[_0x1708('0x4b')]){throw new Error(_0x1708('0x4c'));}})[_0x1708('0x15')](function(){if(_0x415fed){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x415fed[_0x1708('0x1e')]},'individualHooks':!![]});}})['then'](function(){if(_0x415fed){return _0x415fed[_0x1708('0x4d')]({'raw':!![]});}})['then'](function(_0x3d7809){if(_0x415fed){if(_0x3d7809){var _0x485d15=[];_0x2500fa=_0x3d7809;if(_0x2500fa[_0x1708('0x27')]){for(var _0x2415ac=0x0;_0x2415ac<_0x2500fa[_0x1708('0x27')];_0x2415ac++){_0x485d15[_0x1708('0x2a')](db[_0x1708('0x4e')][_0x1708('0x4f')]({'membername':_0x415fed[_0x1708('0x1e')],'UserId':_0x415fed['id'],'queue_name':_0x2500fa[_0x2415ac][_0x1708('0x1e')],'VoiceQueueId':_0x2500fa[_0x2415ac]['id'],'interface':_0x1c6df8,'paused':_0x415fed[_0x1708('0x47')]||![],'penalty':_0x2500fa[_0x2415ac]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x1708('0x44')](_0x485d15);}}}})[_0x1708('0x15')](function(){if(_0x415fed){return db[_0x1708('0x26')]['findAll']({'where':{'membername':_0x415fed[_0x1708('0x1e')],'exitAt':null}});}})[_0x1708('0x15')](function(_0xf7df8a){if(_0x415fed){if(_0xf7df8a&&_0xf7df8a[_0x1708('0x27')]){var _0x44b4e8=[];_0xf7df8a[_0x1708('0x29')](function(_0x160ddb){_0x44b4e8[_0x1708('0x2a')](_0x160ddb[_0x1708('0x25')]({'exitAt':moment()['format'](_0x1708('0x28'))}));});return BPromise[_0x1708('0x44')](_0x44b4e8);}}})[_0x1708('0x15')](function(){if(_0x415fed){var _0x57eea5=[];var _0x451f17=[];var _0x20bc3a=utils['getChannels']();var _0x27fefd={'membername':_0x415fed[_0x1708('0x1e')],'interface':_0x1c6df8,'enterAt':moment()[_0x1708('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x415fed[_0x1708('0x1f')],'internal':_0x415fed[_0x1708('0x20')]};_0x20bc3a[_0x1708('0x29')](function(_0x3ee27b){_0x57eea5[_0x1708('0x2a')](_['merge']({'channel':_0x3ee27b,'type':_0x1708('0x50'),'data1':_0x1708('0x51'),'data2':_0x1c6df8},_0x27fefd));if(_0x415fed[_0x1708('0x47')]){_0x451f17['push'](_[_0x1708('0x52')]({'channel':_0x3ee27b,'type':'PAUSE','data1':_0x1708('0x53')},_0x27fefd));}});return db[_0x1708('0x26')][_0x1708('0x32')](_0x57eea5[_0x1708('0x54')](_0x451f17),{'individualHooks':!![]});}})[_0x1708('0x15')](function(){if(_0x415fed){return _0x415fed[_0x1708('0x25')]({'online':!![],'lastLoginAt':moment()[_0x1708('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x415fed['loginInPause']||![],'mailPause':_0x415fed[_0x1708('0x47')]||![],'chatPause':_0x415fed[_0x1708('0x47')]||![],'faxPause':_0x415fed['loginInPause']||![],'smsPause':_0x415fed[_0x1708('0x47')]||![],'openchannelPause':_0x415fed[_0x1708('0x47')]||![],'pauseType':_0x415fed[_0x1708('0x47')]?_0x1708('0x53'):null,'lastPauseAt':moment()[_0x1708('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x1c6df8});}})['then'](function(_0x1f65ad){_0x52ebea(_0x1f65ad);})[_0x1708('0x33')](function(_0x548c46){_0x3009e3(_0x598ec6[_0x1708('0x19')](0x1f4,_0x548c46[_0x1708('0x1a')]));});});};