4580ec0559329d70acc7980fefb1c101ceb18eb8
[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 _0x0ac0=['voice','system','mail','chat','fax','sms','openchannel','whatsapp','%s%s','all','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','SIP/%s','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','User,\x20%s,\x20%s','message','catch','findAll','options','raw','where','attributes','limit','include','map','model','GetUser','stringify','ShowUser','User','PauseUser','find','name','role','internal','UserVoiceQueueRt','update','MemberReport','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','forEach','push','isNil','interface','body','type','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel'];(function(_0x699ab0,_0x292661){var _0x9558bb=function(_0x4aac69){while(--_0x4aac69){_0x699ab0['push'](_0x699ab0['shift']());}};_0x9558bb(++_0x292661);}(_0x0ac0,0x130));var _0x00ac=function(_0x1a8ff0,_0x20788d){_0x1a8ff0=_0x1a8ff0-0x0;var _0x3588bf=_0x0ac0[_0x1a8ff0];return _0x3588bf;};'use strict';var _=require(_0x00ac('0x0'));var util=require(_0x00ac('0x1'));var moment=require(_0x00ac('0x2'));var BPromise=require('bluebird');var rs=require(_0x00ac('0x3'));var fs=require('fs');var Redis=require(_0x00ac('0x4'));var db=require(_0x00ac('0x5'))['db'];var utils=require(_0x00ac('0x6'));var logger=require(_0x00ac('0x7'))(_0x00ac('0x8'));var config=require(_0x00ac('0x9'));var jayson=require(_0x00ac('0xa'));var client=jayson['client'][_0x00ac('0xb')]({'port':0x232a});config[_0x00ac('0xc')]=_[_0x00ac('0xd')](config[_0x00ac('0xc')],{'host':_0x00ac('0xe'),'port':0x18eb});var socket=require(_0x00ac('0xf'))(new Redis(config[_0x00ac('0xc')]));require('./user.socket')['register'](socket);function respondWithRpcPromise(_0xfe2f8d,_0x402929,_0x89724f){return new BPromise(function(_0x2439db,_0x4223ca){return client['request'](_0xfe2f8d,_0x89724f)[_0x00ac('0x10')](function(_0x56d041){logger[_0x00ac('0x11')]('User,\x20%s,\x20%s',_0x402929,_0x00ac('0x12'));logger[_0x00ac('0x13')](_0x00ac('0x14'),_0x402929,_0x00ac('0x12'),JSON['stringify'](_0x56d041));if(_0x56d041['error']){if(_0x56d041[_0x00ac('0x15')]['code']===0x1f4){logger['error'](_0x00ac('0x16'),_0x402929,_0x56d041[_0x00ac('0x15')]['message']);return _0x4223ca(_0x56d041[_0x00ac('0x15')]['message']);}logger['error'](_0x00ac('0x16'),_0x402929,_0x56d041[_0x00ac('0x15')]['message']);return _0x2439db(_0x56d041[_0x00ac('0x15')][_0x00ac('0x17')]);}else{logger[_0x00ac('0x11')]('User,\x20%s,\x20%s',_0x402929,'request\x20sent');_0x2439db(_0x56d041['result'][_0x00ac('0x17')]);}})[_0x00ac('0x18')](function(_0x28b82f){logger[_0x00ac('0x15')]('User,\x20%s,\x20%s',_0x402929,_0x28b82f);_0x4223ca(_0x28b82f);});});}exports['GetUser']=function(_0x35538f){var _0x936e71=this;return new Promise(function(_0x5df92b,_0x4d032f){return db['User'][_0x00ac('0x19')]({'raw':_0x35538f[_0x00ac('0x1a')]?_0x35538f[_0x00ac('0x1a')][_0x00ac('0x1b')]===undefined?!![]:![]:!![],'where':_0x35538f['options']?_0x35538f[_0x00ac('0x1a')][_0x00ac('0x1c')]||null:null,'attributes':_0x35538f[_0x00ac('0x1a')]?_0x35538f[_0x00ac('0x1a')][_0x00ac('0x1d')]||null:null,'limit':_0x35538f[_0x00ac('0x1a')]?_0x35538f['options'][_0x00ac('0x1e')]||null:null,'include':_0x35538f[_0x00ac('0x1a')]?_0x35538f[_0x00ac('0x1a')][_0x00ac('0x1f')]?_[_0x00ac('0x20')](_0x35538f['options'][_0x00ac('0x1f')],function(_0x5b772e){return{'model':db[_0x5b772e[_0x00ac('0x21')]],'as':_0x5b772e['as'],'attributes':_0x5b772e[_0x00ac('0x1d')],'include':_0x5b772e[_0x00ac('0x1f')]?_['map'](_0x5b772e[_0x00ac('0x1f')],function(_0x2606c0){return{'model':db[_0x2606c0[_0x00ac('0x21')]],'as':_0x2606c0['as'],'attributes':_0x2606c0['attributes'],'include':_0x2606c0[_0x00ac('0x1f')]?_[_0x00ac('0x20')](_0x2606c0[_0x00ac('0x1f')],function(_0x3ff845){return{'model':db[_0x3ff845[_0x00ac('0x21')]],'as':_0x3ff845['as'],'attributes':_0x3ff845[_0x00ac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x00ac('0x10')](function(_0x1fba49){logger[_0x00ac('0x11')](_0x00ac('0x22'),_0x35538f);logger[_0x00ac('0x13')](_0x00ac('0x22'),_0x35538f,JSON[_0x00ac('0x23')](_0x1fba49));_0x5df92b(_0x1fba49);})[_0x00ac('0x18')](function(_0x288ceb){logger[_0x00ac('0x15')]('GetUser',_0x288ceb[_0x00ac('0x17')],_0x35538f);_0x4d032f(_0x936e71['error'](0x1f4,_0x288ceb['message']));});});};exports[_0x00ac('0x24')]=function(_0x1198cc){var _0x5c0480=this;return new Promise(function(_0x33e05f,_0x301c69){return db[_0x00ac('0x25')]['find']({'raw':_0x1198cc[_0x00ac('0x1a')]?_0x1198cc[_0x00ac('0x1a')][_0x00ac('0x1b')]===undefined?!![]:![]:!![],'where':_0x1198cc[_0x00ac('0x1a')]?_0x1198cc[_0x00ac('0x1a')][_0x00ac('0x1c')]||null:null,'attributes':_0x1198cc[_0x00ac('0x1a')]?_0x1198cc['options']['attributes']||null:null,'include':_0x1198cc[_0x00ac('0x1a')]?_0x1198cc[_0x00ac('0x1a')]['include']?_[_0x00ac('0x20')](_0x1198cc['options'][_0x00ac('0x1f')],function(_0x28b48d){return{'model':db[_0x28b48d[_0x00ac('0x21')]],'as':_0x28b48d['as'],'attributes':_0x28b48d[_0x00ac('0x1d')],'include':_0x28b48d['include']?_['map'](_0x28b48d[_0x00ac('0x1f')],function(_0x29a00c){return{'model':db[_0x29a00c[_0x00ac('0x21')]],'as':_0x29a00c['as'],'attributes':_0x29a00c[_0x00ac('0x1d')],'include':_0x29a00c[_0x00ac('0x1f')]?_[_0x00ac('0x20')](_0x29a00c[_0x00ac('0x1f')],function(_0x1797f9){return{'model':db[_0x1797f9['model']],'as':_0x1797f9['as'],'attributes':_0x1797f9[_0x00ac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x00ac('0x10')](function(_0x426279){logger['info'](_0x00ac('0x24'),_0x1198cc);logger[_0x00ac('0x13')](_0x00ac('0x24'),_0x1198cc,JSON[_0x00ac('0x23')](_0x426279));_0x33e05f(_0x426279);})[_0x00ac('0x18')](function(_0x23c9dc){logger['error']('ShowUser',_0x23c9dc[_0x00ac('0x17')],_0x1198cc);_0x301c69(_0x5c0480[_0x00ac('0x15')](0x1f4,_0x23c9dc[_0x00ac('0x17')]));});});};exports[_0x00ac('0x26')]=function(_0x26b9b4){var _0x28f277=this;return new Promise(function(_0x4250d9,_0x1b3597){var _0x59cd09;return db[_0x00ac('0x25')][_0x00ac('0x27')]({'where':_0x26b9b4[_0x00ac('0x1a')][_0x00ac('0x1c')]||{},'attributes':['id',_0x00ac('0x28'),_0x00ac('0x29'),_0x00ac('0x2a'),'interface']})[_0x00ac('0x10')](function(_0x1613d2){if(_0x1613d2){_0x59cd09=_0x1613d2;return db[_0x00ac('0x2b')][_0x00ac('0x2c')]({'paused':0x1},{'where':{'UserId':_0x59cd09['id']},'individualHooks':!![]});}})['then'](function(){if(_0x59cd09){return db[_0x00ac('0x2d')]['findAll']({'where':{'membername':_0x59cd09['name'],'type':_0x00ac('0x2e'),'exitAt':null}});}})[_0x00ac('0x10')](function(_0x1c9b2a){if(_0x59cd09){if(_0x1c9b2a&&_0x1c9b2a['length']){var _0x394739=moment()[_0x00ac('0x2f')](_0x00ac('0x30'));for(var _0xf234a4=0x0,_0x521188=_0x1c9b2a[_0x00ac('0x31')];_0xf234a4<_0x521188;_0xf234a4++){_0x1c9b2a[_0xf234a4]['updateAttributes']({'exitAt':_0x394739});}}}})[_0x00ac('0x10')](function(){if(_0x59cd09){var _0x136683=[];var _0x58d232=utils['getChannels']();_0x58d232[_0x00ac('0x32')](function(_0x153ca4){_0x136683[_0x00ac('0x33')]({'channel':_0x153ca4,'membername':_0x59cd09['name'],'interface':_[_0x00ac('0x34')](_0x59cd09[_0x00ac('0x35')])?util[_0x00ac('0x2f')]('SIP/%s',_0x59cd09[_0x00ac('0x28')]):_0x59cd09[_0x00ac('0x35')],'type':_0x00ac('0x2e'),'enterAt':moment()['format'](_0x00ac('0x30')),'data1':_0x26b9b4[_0x00ac('0x36')][_0x00ac('0x37')]||'DEFAULT\x20PAUSE','role':_0x59cd09[_0x00ac('0x29')],'internal':_0x59cd09['internal'],'uniqueid':_0x26b9b4['body'][_0x00ac('0x38')]||null});});return db[_0x00ac('0x2d')][_0x00ac('0x39')](_0x136683,{'individualHooks':!![]});}})[_0x00ac('0x10')](function(){if(_0x59cd09){return _0x59cd09[_0x00ac('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x26b9b4[_0x00ac('0x36')][_0x00ac('0x37')]||_0x00ac('0x3a'),'lastPauseAt':moment()[_0x00ac('0x2f')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x00ac('0x10')](function(_0x18095d){_0x4250d9(_0x18095d);})[_0x00ac('0x18')](function(_0x64339e){_0x1b3597(_0x28f277[_0x00ac('0x15')](0x1f4,_0x64339e[_0x00ac('0x17')]));});});};exports[_0x00ac('0x3b')]=function(_0x23da61){var _0x412901=this;return new Promise(function(_0x34a94c,_0x4fde6c){var _0x3f3a5e;return db[_0x00ac('0x25')][_0x00ac('0x3c')]({'where':_0x23da61[_0x00ac('0x1a')][_0x00ac('0x1c')]||{},'attributes':['id',_0x00ac('0x28')]})[_0x00ac('0x10')](function(_0xac25e0){if(_0xac25e0){_0x3f3a5e=_0xac25e0;if(_0x23da61[_0x00ac('0x36')][_0x00ac('0x3d')]&&!utils[_0x00ac('0x3e')](_0x23da61[_0x00ac('0x36')][_0x00ac('0x3d')])){throw new Error(_0x00ac('0x3f'));}switch(_0x23da61[_0x00ac('0x36')][_0x00ac('0x3d')]){case _0x00ac('0x40'):return db[_0x00ac('0x2b')][_0x00ac('0x2c')]({'paused':0x0},{'where':{'UserId':_0x3f3a5e['id']}})[_0x00ac('0x10')](function(){return db[_0x00ac('0x2d')]['find']({'where':{'channel':_0x23da61['body'][_0x00ac('0x3d')],'membername':_0x3f3a5e[_0x00ac('0x28')],'type':_0x00ac('0x2e'),'exitAt':null}});})[_0x00ac('0x10')](function(_0xd1f5a2){if(_0xd1f5a2){return _0xd1f5a2[_0x00ac('0x2c')]({'exitAt':moment()[_0x00ac('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x00ac('0x41')},{'individualHooks':!![]});}return null;})[_0x00ac('0x10')](function(){return _0x3f3a5e['update']({'voicePause':![]});});case _0x00ac('0x42'):case _0x00ac('0x43'):case _0x00ac('0x44'):case _0x00ac('0x45'):case _0x00ac('0x46'):case _0x00ac('0x47'):return db[_0x00ac('0x2d')][_0x00ac('0x27')]({'where':{'channel':_0x23da61[_0x00ac('0x36')][_0x00ac('0x3d')],'membername':_0x3f3a5e[_0x00ac('0x28')],'type':_0x00ac('0x2e'),'exitAt':null}})['then'](function(_0x1e347a){return _0x1e347a[_0x00ac('0x2c')]({'exitAt':moment()[_0x00ac('0x2f')](_0x00ac('0x30')),'data2':_0x00ac('0x41')},{'individualHooks':!![]});})[_0x00ac('0x10')](function(){var _0x43f397={};_['set'](_0x43f397,util[_0x00ac('0x2f')](_0x00ac('0x48'),_0x23da61[_0x00ac('0x36')]['channel'],'Pause'),![]);return _0x3f3a5e[_0x00ac('0x2c')](_0x43f397);});default:return db[_0x00ac('0x2b')][_0x00ac('0x2c')]({'paused':0x0},{'where':{'UserId':_0x3f3a5e['id']}})[_0x00ac('0x10')](function(){return db['MemberReport'][_0x00ac('0x19')]({'where':{'membername':_0x3f3a5e[_0x00ac('0x28')],'type':'PAUSE','exitAt':null}});})[_0x00ac('0x10')](function(_0x297dfc){var _0x937eeb=[];_0x297dfc[_0x00ac('0x32')](function(_0x5d93ad){_0x937eeb[_0x00ac('0x33')](_0x5d93ad[_0x00ac('0x2c')]({'exitAt':moment()[_0x00ac('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'}));});return BPromise[_0x00ac('0x49')](_0x937eeb);})[_0x00ac('0x10')](function(){return _0x3f3a5e['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x256d44){_0x34a94c(_0x256d44);})['catch'](function(_0x12abe5){_0x4fde6c(_0x412901[_0x00ac('0x15')](0x1f4,_0x12abe5['message']));});});};exports[_0x00ac('0x4a')]=function(_0x5080e5){var _0x4fefc3=this;return new Promise(function(_0x384f2a,_0x8c5c41){var _0x46b4c2;return db[_0x00ac('0x25')]['findOne']({'where':_0x5080e5[_0x00ac('0x1a')][_0x00ac('0x1c')]||{},'attributes':['id',_0x00ac('0x28')]})[_0x00ac('0x10')](function(_0x270ed0){if(_0x270ed0){_0x46b4c2=_0x270ed0;return db[_0x00ac('0x2b')][_0x00ac('0x4b')]({'where':{'membername':_0x46b4c2['name']},'individualHooks':!![]});}})['then'](function(){if(_0x46b4c2){return db[_0x00ac('0x2d')][_0x00ac('0x19')]({'where':{'membername':_0x46b4c2['name'],'exitAt':null}});}})['then'](function(_0x395790){if(_0x46b4c2){if(_0x395790&&_0x395790['length']){var _0x30f494=[];_0x395790[_0x00ac('0x32')](function(_0x830eb1){_0x30f494[_0x00ac('0x33')](_0x830eb1[_0x00ac('0x2c')]({'exitAt':moment()[_0x00ac('0x2f')](_0x00ac('0x30'))}));});return BPromise[_0x00ac('0x49')](_0x30f494);}}})[_0x00ac('0x10')](function(){if(_0x46b4c2){return _0x46b4c2['update']({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x00ac('0x10')](function(_0x1b622b){_0x384f2a(_0x1b622b);})[_0x00ac('0x18')](function(_0x178b3b){_0x8c5c41(_0x4fefc3[_0x00ac('0x15')](0x1f4,_0x178b3b['message']));});});};exports[_0x00ac('0x4c')]=function(_0x24eae7){var _0x204837=this;return new Promise(function(_0x5a336b,_0x376685){var _0x38b077;var _0x453d34;var _0x17466f;var _0x5c34e7;return db[_0x00ac('0x25')][_0x00ac('0x3c')]({'where':_0x24eae7['options'][_0x00ac('0x1c')]||{},'attributes':['id',_0x00ac('0x28'),'role',_0x00ac('0x4d'),_0x00ac('0x4e'),'internal',_0x00ac('0x4f'),_0x00ac('0x35')]})[_0x00ac('0x10')](function(_0x147da6){if(_0x147da6){_0x38b077=_0x147da6;_0x5c34e7=_0x24eae7['body'][_0x00ac('0x35')]?_0x24eae7['body'][_0x00ac('0x35')]:util[_0x00ac('0x2f')](_0x00ac('0x50'),_0x38b077['name']);return db['User']['count']({'where':{'role':_0x00ac('0x51'),'online':!![],'id':{'$ne':_0x38b077['id']}}});}})['then'](function(_0xe2d434){if(_0xe2d434){_0x17466f=_0xe2d434;return require('../../config/license/util')[_0x00ac('0x52')]();}})[_0x00ac('0x10')](function(_0x3372ec){if(_0x3372ec&&_0x3372ec[_0x00ac('0x53')]&&_0x17466f>=_0x3372ec[_0x00ac('0x53')]){throw new Error(_0x00ac('0x54'));}})[_0x00ac('0x10')](function(){if(_0x38b077){return db[_0x00ac('0x2b')][_0x00ac('0x4b')]({'where':{'membername':_0x38b077[_0x00ac('0x28')]},'individualHooks':!![]});}})['then'](function(){if(_0x38b077){return _0x38b077[_0x00ac('0x55')]({'raw':!![]});}})['then'](function(_0x237da5){if(_0x38b077){if(_0x237da5){var _0x4bc34a=[];_0x453d34=_0x237da5;if(_0x453d34[_0x00ac('0x31')]){for(var _0x3da0b3=0x0;_0x3da0b3<_0x453d34[_0x00ac('0x31')];_0x3da0b3++){_0x4bc34a[_0x00ac('0x33')](db['UserVoiceQueueRt'][_0x00ac('0x56')]({'membername':_0x38b077[_0x00ac('0x28')],'UserId':_0x38b077['id'],'queue_name':_0x453d34[_0x3da0b3][_0x00ac('0x28')],'VoiceQueueId':_0x453d34[_0x3da0b3]['id'],'interface':_0x5c34e7,'paused':_0x38b077[_0x00ac('0x4f')]||![],'penalty':_0x453d34[_0x3da0b3]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x00ac('0x49')](_0x4bc34a);}}}})[_0x00ac('0x10')](function(){if(_0x38b077){return db['MemberReport'][_0x00ac('0x19')]({'where':{'membername':_0x38b077[_0x00ac('0x28')],'exitAt':null}});}})[_0x00ac('0x10')](function(_0x2a7964){if(_0x38b077){if(_0x2a7964&&_0x2a7964[_0x00ac('0x31')]){var _0x4f5e7c=[];_0x2a7964[_0x00ac('0x32')](function(_0x24c153){_0x4f5e7c[_0x00ac('0x33')](_0x24c153[_0x00ac('0x2c')]({'exitAt':moment()[_0x00ac('0x2f')](_0x00ac('0x30'))}));});return BPromise[_0x00ac('0x49')](_0x4f5e7c);}}})[_0x00ac('0x10')](function(_0x43b82c){if(_0x38b077){var _0x376d55=[];var _0x5a8ca4=[];var _0xdaa580=utils[_0x00ac('0x57')]();var _0x39eb5b={'membername':_0x38b077['name'],'interface':_0x5c34e7,'enterAt':moment()['format'](_0x00ac('0x30')),'role':_0x38b077['role'],'internal':_0x38b077[_0x00ac('0x2a')]};_0xdaa580['forEach'](function(_0x398475){_0x376d55[_0x00ac('0x33')](_[_0x00ac('0x58')]({'channel':_0x398475,'type':_0x00ac('0x59'),'data1':_0x00ac('0x5a'),'data2':_0x5c34e7},_0x39eb5b));if(_0x38b077['loginInPause']){_0x5a8ca4[_0x00ac('0x33')](_['merge']({'channel':_0x398475,'type':_0x00ac('0x2e'),'data1':_0x00ac('0x5b')},_0x39eb5b));}});return db['MemberReport']['bulkCreate'](_0x376d55['concat'](_0x5a8ca4),{'individualHooks':!![]});}})[_0x00ac('0x10')](function(){if(_0x38b077){return _0x38b077[_0x00ac('0x2c')]({'online':!![],'lastLoginAt':moment()[_0x00ac('0x2f')](_0x00ac('0x30')),'voicePause':_0x38b077[_0x00ac('0x4f')]||![],'mailPause':_0x38b077[_0x00ac('0x4f')]||![],'chatPause':_0x38b077[_0x00ac('0x4f')]||![],'faxPause':_0x38b077[_0x00ac('0x4f')]||![],'smsPause':_0x38b077['loginInPause']||![],'openchannelPause':_0x38b077[_0x00ac('0x4f')]||![],'pauseType':_0x38b077['loginInPause']?_0x00ac('0x5b'):null,'lastPauseAt':moment()[_0x00ac('0x2f')](_0x00ac('0x30')),'interface':_0x5c34e7});}})['then'](function(_0x27c8e1){_0x5a336b(_0x27c8e1);})[_0x00ac('0x18')](function(_0x4bc247){_0x376685(_0x204837[_0x00ac('0x15')](0x1f4,_0x4bc247[_0x00ac('0x17')]));});});};