Built motion from commit ddca4d0d.|2.5.47
[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 _0xf741=['Maximum\x20login\x20has\x20been\x20reached','UserVoiceQueue.penalty','all','callysquare','LOGININPAUSE','concat','lodash','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./user.socket','register','request','info','request\x20sent','debug','error','code','message','User,\x20%s,\x20%s','User','findAll','options','raw','where','attributes','include','map','model','GetUser','stringify','ShowUser','find','then','PauseUser','name','role','MemberReport','PAUSE','format','length','updateAttributes','getChannels','isNil','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','update','catch','findOne','channel','Unknown\x20channel','system','mail','chat','fax','openchannel','whatsapp','set','%s%s','Pause','UserVoiceQueueRt','forEach','push','destroy','LoginUser','mobile','phone','internal','loginInPause','count','agent','agents'];(function(_0x5efc79,_0x40028c){var _0x5411f3=function(_0x229126){while(--_0x229126){_0x5efc79['push'](_0x5efc79['shift']());}};_0x5411f3(++_0x40028c);}(_0xf741,0x162));var _0x1f74=function(_0x541b39,_0x1c3c9e){_0x541b39=_0x541b39-0x0;var _0x346c91=_0xf741[_0x541b39];return _0x346c91;};'use strict';var _=require(_0x1f74('0x0'));var util=require(_0x1f74('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1f74('0x2'));var fs=require('fs');var Redis=require(_0x1f74('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1f74('0x4'))(_0x1f74('0x5'));var config=require(_0x1f74('0x6'));var jayson=require(_0x1f74('0x7'));var client=jayson[_0x1f74('0x8')][_0x1f74('0x9')]({'port':0x232a});config[_0x1f74('0xa')]=_[_0x1f74('0xb')](config[_0x1f74('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x1f74('0xc'))(new Redis(config['redis']));require(_0x1f74('0xd'))[_0x1f74('0xe')](socket);function respondWithRpcPromise(_0x1353e8,_0x19bc0c,_0x12027e){return new BPromise(function(_0x3f2727,_0x1b92d5){return client[_0x1f74('0xf')](_0x1353e8,_0x12027e)['then'](function(_0x38d153){logger[_0x1f74('0x10')]('User,\x20%s,\x20%s',_0x19bc0c,_0x1f74('0x11'));logger[_0x1f74('0x12')]('User,\x20%s,\x20%s,\x20%s',_0x19bc0c,'request\x20sent',JSON['stringify'](_0x38d153));if(_0x38d153['error']){if(_0x38d153[_0x1f74('0x13')][_0x1f74('0x14')]===0x1f4){logger[_0x1f74('0x13')]('User,\x20%s,\x20%s',_0x19bc0c,_0x38d153['error']['message']);return _0x1b92d5(_0x38d153[_0x1f74('0x13')][_0x1f74('0x15')]);}logger['error'](_0x1f74('0x16'),_0x19bc0c,_0x38d153[_0x1f74('0x13')][_0x1f74('0x15')]);return _0x3f2727(_0x38d153['error'][_0x1f74('0x15')]);}else{logger[_0x1f74('0x10')]('User,\x20%s,\x20%s',_0x19bc0c,_0x1f74('0x11'));_0x3f2727(_0x38d153['result'][_0x1f74('0x15')]);}})['catch'](function(_0x251689){logger[_0x1f74('0x13')](_0x1f74('0x16'),_0x19bc0c,_0x251689);_0x1b92d5(_0x251689);});});}exports['GetUser']=function(_0x2e2b73){var _0x2eba84=this;return new Promise(function(_0x38809a,_0x125316){return db[_0x1f74('0x17')][_0x1f74('0x18')]({'raw':_0x2e2b73[_0x1f74('0x19')]?_0x2e2b73[_0x1f74('0x19')][_0x1f74('0x1a')]===undefined?!![]:![]:!![],'where':_0x2e2b73[_0x1f74('0x19')]?_0x2e2b73[_0x1f74('0x19')][_0x1f74('0x1b')]||null:null,'attributes':_0x2e2b73[_0x1f74('0x19')]?_0x2e2b73[_0x1f74('0x19')][_0x1f74('0x1c')]||null:null,'limit':_0x2e2b73[_0x1f74('0x19')]?_0x2e2b73[_0x1f74('0x19')]['limit']||null:null,'include':_0x2e2b73[_0x1f74('0x19')]?_0x2e2b73[_0x1f74('0x19')][_0x1f74('0x1d')]?_[_0x1f74('0x1e')](_0x2e2b73[_0x1f74('0x19')][_0x1f74('0x1d')],function(_0x34198d){return{'model':db[_0x34198d[_0x1f74('0x1f')]],'as':_0x34198d['as'],'attributes':_0x34198d['attributes'],'include':_0x34198d[_0x1f74('0x1d')]?_[_0x1f74('0x1e')](_0x34198d[_0x1f74('0x1d')],function(_0xb41fe7){return{'model':db[_0xb41fe7[_0x1f74('0x1f')]],'as':_0xb41fe7['as'],'attributes':_0xb41fe7[_0x1f74('0x1c')],'include':_0xb41fe7[_0x1f74('0x1d')]?_['map'](_0xb41fe7['include'],function(_0x12045d){return{'model':db[_0x12045d[_0x1f74('0x1f')]],'as':_0x12045d['as'],'attributes':_0x12045d[_0x1f74('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x15845c){logger[_0x1f74('0x10')]('GetUser',_0x2e2b73);logger[_0x1f74('0x12')](_0x1f74('0x20'),_0x2e2b73,JSON[_0x1f74('0x21')](_0x15845c));_0x38809a(_0x15845c);})['catch'](function(_0x4bdd43){logger[_0x1f74('0x13')](_0x1f74('0x20'),_0x4bdd43['message'],_0x2e2b73);_0x125316(_0x2eba84['error'](0x1f4,_0x4bdd43['message']));});});};exports[_0x1f74('0x22')]=function(_0x130e5e){var _0x3c31d1=this;return new Promise(function(_0x3bf4bf,_0x281859){return db[_0x1f74('0x17')][_0x1f74('0x23')]({'raw':_0x130e5e[_0x1f74('0x19')]?_0x130e5e['options'][_0x1f74('0x1a')]===undefined?!![]:![]:!![],'where':_0x130e5e[_0x1f74('0x19')]?_0x130e5e[_0x1f74('0x19')][_0x1f74('0x1b')]||null:null,'attributes':_0x130e5e[_0x1f74('0x19')]?_0x130e5e['options']['attributes']||null:null,'include':_0x130e5e[_0x1f74('0x19')]?_0x130e5e[_0x1f74('0x19')][_0x1f74('0x1d')]?_[_0x1f74('0x1e')](_0x130e5e[_0x1f74('0x19')][_0x1f74('0x1d')],function(_0x2786d4){return{'model':db[_0x2786d4['model']],'as':_0x2786d4['as'],'attributes':_0x2786d4[_0x1f74('0x1c')],'include':_0x2786d4['include']?_[_0x1f74('0x1e')](_0x2786d4[_0x1f74('0x1d')],function(_0x25b89d){return{'model':db[_0x25b89d[_0x1f74('0x1f')]],'as':_0x25b89d['as'],'attributes':_0x25b89d[_0x1f74('0x1c')],'include':_0x25b89d['include']?_[_0x1f74('0x1e')](_0x25b89d[_0x1f74('0x1d')],function(_0x270218){return{'model':db[_0x270218[_0x1f74('0x1f')]],'as':_0x270218['as'],'attributes':_0x270218[_0x1f74('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x1f74('0x24')](function(_0x12f5cd){logger['info'](_0x1f74('0x22'),_0x130e5e);logger[_0x1f74('0x12')](_0x1f74('0x22'),_0x130e5e,JSON[_0x1f74('0x21')](_0x12f5cd));_0x3bf4bf(_0x12f5cd);})['catch'](function(_0x13c39d){logger['error'](_0x1f74('0x22'),_0x13c39d[_0x1f74('0x15')],_0x130e5e);_0x281859(_0x3c31d1[_0x1f74('0x13')](0x1f4,_0x13c39d[_0x1f74('0x15')]));});});};exports[_0x1f74('0x25')]=function(_0x4ecee5){var _0x2c6fd5=this;return new Promise(function(_0x31e3c8,_0x23224f){var _0x3867ac;return db['User'][_0x1f74('0x23')]({'where':_0x4ecee5['options'][_0x1f74('0x1b')]||{},'attributes':['id',_0x1f74('0x26'),_0x1f74('0x27'),'internal','interface']})['then'](function(_0x43e481){if(_0x43e481){_0x3867ac=_0x43e481;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x3867ac['id']},'individualHooks':!![]});}})[_0x1f74('0x24')](function(){if(_0x3867ac){return db[_0x1f74('0x28')]['findAll']({'where':{'membername':_0x3867ac[_0x1f74('0x26')],'type':_0x1f74('0x29'),'exitAt':null}});}})[_0x1f74('0x24')](function(_0x22d6f8){if(_0x3867ac){if(_0x22d6f8&&_0x22d6f8['length']){var _0x5e0847=moment()[_0x1f74('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x2bfd7d=0x0,_0x2f2b7b=_0x22d6f8[_0x1f74('0x2b')];_0x2bfd7d<_0x2f2b7b;_0x2bfd7d++){_0x22d6f8[_0x2bfd7d][_0x1f74('0x2c')]({'exitAt':_0x5e0847});}}}})[_0x1f74('0x24')](function(){if(_0x3867ac){var _0x583f74=[];var _0x329947=utils[_0x1f74('0x2d')]();_0x329947['forEach'](function(_0x361781){_0x583f74['push']({'channel':_0x361781,'membername':_0x3867ac[_0x1f74('0x26')],'interface':_[_0x1f74('0x2e')](_0x3867ac[_0x1f74('0x2f')])?util[_0x1f74('0x2a')](_0x1f74('0x30'),_0x3867ac[_0x1f74('0x26')]):_0x3867ac[_0x1f74('0x2f')],'type':_0x1f74('0x29'),'enterAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31')),'data1':_0x4ecee5[_0x1f74('0x32')][_0x1f74('0x33')]||_0x1f74('0x34'),'role':_0x3867ac[_0x1f74('0x27')],'internal':_0x3867ac['internal'],'uniqueid':_0x4ecee5[_0x1f74('0x32')][_0x1f74('0x35')]||null});});return db[_0x1f74('0x28')][_0x1f74('0x36')](_0x583f74,{'individualHooks':!![]});}})['then'](function(){if(_0x3867ac){return _0x3867ac[_0x1f74('0x37')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4ecee5[_0x1f74('0x32')][_0x1f74('0x33')]||_0x1f74('0x34'),'lastPauseAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31'))});}})['then'](function(_0xc1c8c4){_0x31e3c8(_0xc1c8c4);})[_0x1f74('0x38')](function(_0x3d35c8){_0x23224f(_0x2c6fd5[_0x1f74('0x13')](0x1f4,_0x3d35c8[_0x1f74('0x15')]));});});};exports['UnpauseUser']=function(_0x163410){var _0x28330e=this;return new Promise(function(_0x3605bc,_0x2c810e){var _0x33fa8b;return db['User'][_0x1f74('0x39')]({'where':_0x163410[_0x1f74('0x19')]['where']||{},'attributes':['id',_0x1f74('0x26')]})[_0x1f74('0x24')](function(_0x1c07a1){if(_0x1c07a1){_0x33fa8b=_0x1c07a1;if(_0x163410['body']['channel']&&!utils['isValidChannel'](_0x163410[_0x1f74('0x32')][_0x1f74('0x3a')])){throw new Error(_0x1f74('0x3b'));}switch(_0x163410[_0x1f74('0x32')][_0x1f74('0x3a')]){case'voice':return db['UserVoiceQueueRt'][_0x1f74('0x37')]({'paused':0x0},{'where':{'UserId':_0x33fa8b['id']}})[_0x1f74('0x24')](function(){return db[_0x1f74('0x28')][_0x1f74('0x23')]({'where':{'channel':_0x163410[_0x1f74('0x32')][_0x1f74('0x3a')],'membername':_0x33fa8b[_0x1f74('0x26')],'type':_0x1f74('0x29'),'exitAt':null}});})[_0x1f74('0x24')](function(_0x2469e5){if(_0x2469e5){return _0x2469e5[_0x1f74('0x37')]({'exitAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31')),'data2':_0x1f74('0x3c')},{'individualHooks':!![]});}return null;})[_0x1f74('0x24')](function(){return _0x33fa8b[_0x1f74('0x37')]({'voicePause':![]});});case _0x1f74('0x3d'):case _0x1f74('0x3e'):case _0x1f74('0x3f'):case'sms':case _0x1f74('0x40'):case _0x1f74('0x41'):return db[_0x1f74('0x28')][_0x1f74('0x23')]({'where':{'channel':_0x163410[_0x1f74('0x32')][_0x1f74('0x3a')],'membername':_0x33fa8b[_0x1f74('0x26')],'type':_0x1f74('0x29'),'exitAt':null}})[_0x1f74('0x24')](function(_0x30e2ad){return _0x30e2ad['update']({'exitAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31')),'data2':_0x1f74('0x3c')},{'individualHooks':!![]});})[_0x1f74('0x24')](function(){var _0x5239eb={};_[_0x1f74('0x42')](_0x5239eb,util[_0x1f74('0x2a')](_0x1f74('0x43'),_0x163410[_0x1f74('0x32')][_0x1f74('0x3a')],_0x1f74('0x44')),![]);return _0x33fa8b[_0x1f74('0x37')](_0x5239eb);});default:return db[_0x1f74('0x45')][_0x1f74('0x37')]({'paused':0x0},{'where':{'UserId':_0x33fa8b['id']}})[_0x1f74('0x24')](function(){return db[_0x1f74('0x28')][_0x1f74('0x18')]({'where':{'membername':_0x33fa8b['name'],'type':_0x1f74('0x29'),'exitAt':null}});})[_0x1f74('0x24')](function(_0x46d590){var _0x1155f8=[];_0x46d590[_0x1f74('0x46')](function(_0x2ad4ea){_0x1155f8[_0x1f74('0x47')](_0x2ad4ea[_0x1f74('0x37')]({'exitAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31')),'data2':'system'}));});return BPromise['all'](_0x1155f8);})['then'](function(){return _0x33fa8b[_0x1f74('0x37')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x1f74('0x24')](function(_0x395000){_0x3605bc(_0x395000);})['catch'](function(_0x2cb77f){_0x2c810e(_0x28330e['error'](0x1f4,_0x2cb77f['message']));});});};exports['LogoutUser']=function(_0x43ca0c){var _0x507132=this;return new Promise(function(_0x38830c,_0x568e42){var _0x11c24c;return db[_0x1f74('0x17')][_0x1f74('0x39')]({'where':_0x43ca0c['options'][_0x1f74('0x1b')]||{},'attributes':['id',_0x1f74('0x26')]})[_0x1f74('0x24')](function(_0x4f2871){if(_0x4f2871){_0x11c24c=_0x4f2871;return db[_0x1f74('0x45')][_0x1f74('0x48')]({'where':{'membername':_0x11c24c[_0x1f74('0x26')]},'individualHooks':!![]});}})[_0x1f74('0x24')](function(){if(_0x11c24c){return db['MemberReport'][_0x1f74('0x18')]({'where':{'membername':_0x11c24c[_0x1f74('0x26')],'exitAt':null}});}})[_0x1f74('0x24')](function(_0x4f29e5){if(_0x11c24c){if(_0x4f29e5&&_0x4f29e5[_0x1f74('0x2b')]){var _0x58ea06=[];_0x4f29e5[_0x1f74('0x46')](function(_0x4d861e){_0x58ea06[_0x1f74('0x47')](_0x4d861e[_0x1f74('0x37')]({'exitAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31'))}));});return BPromise['all'](_0x58ea06);}}})[_0x1f74('0x24')](function(){if(_0x11c24c){return _0x11c24c[_0x1f74('0x37')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x1f74('0x24')](function(_0x452887){_0x38830c(_0x452887);})[_0x1f74('0x38')](function(_0x41e869){_0x568e42(_0x507132['error'](0x1f4,_0x41e869[_0x1f74('0x15')]));});});};exports[_0x1f74('0x49')]=function(_0x3da2cd){var _0x2f86dc=this;return new Promise(function(_0x50989f,_0x54b42e){var _0x5bd762;var _0x1b30d3;var _0x27641a;var _0x111511;return db['User'][_0x1f74('0x39')]({'where':_0x3da2cd[_0x1f74('0x19')]['where']||{},'attributes':['id',_0x1f74('0x26'),_0x1f74('0x27'),_0x1f74('0x4a'),_0x1f74('0x4b'),_0x1f74('0x4c'),_0x1f74('0x4d'),'interface']})[_0x1f74('0x24')](function(_0xce7cae){if(_0xce7cae){_0x5bd762=_0xce7cae;_0x111511=_0x3da2cd[_0x1f74('0x32')][_0x1f74('0x2f')]?_0x3da2cd[_0x1f74('0x32')][_0x1f74('0x2f')]:util[_0x1f74('0x2a')](_0x1f74('0x30'),_0x5bd762[_0x1f74('0x26')]);return db[_0x1f74('0x17')][_0x1f74('0x4e')]({'where':{'role':_0x1f74('0x4f'),'online':!![],'id':{'$ne':_0x5bd762['id']}}});}})[_0x1f74('0x24')](function(_0x13be75){if(_0x13be75){_0x27641a=_0x13be75;return require('../../config/license/util')['getLicense']();}})[_0x1f74('0x24')](function(_0x58a855){if(_0x58a855&&_0x58a855['agents']&&_0x27641a>=_0x58a855[_0x1f74('0x50')]){throw new Error(_0x1f74('0x51'));}})[_0x1f74('0x24')](function(){if(_0x5bd762){return db[_0x1f74('0x45')][_0x1f74('0x48')]({'where':{'membername':_0x5bd762[_0x1f74('0x26')]},'individualHooks':!![]});}})[_0x1f74('0x24')](function(){if(_0x5bd762){return _0x5bd762['getVoiceQueues']({'raw':!![]});}})[_0x1f74('0x24')](function(_0x58a841){if(_0x5bd762){if(_0x58a841){var _0x37eba4=[];_0x1b30d3=_0x58a841;if(_0x1b30d3[_0x1f74('0x2b')]){for(var _0x22e6a4=0x0;_0x22e6a4<_0x1b30d3[_0x1f74('0x2b')];_0x22e6a4++){_0x37eba4[_0x1f74('0x47')](db['UserVoiceQueueRt']['upsert']({'membername':_0x5bd762[_0x1f74('0x26')],'UserId':_0x5bd762['id'],'queue_name':_0x1b30d3[_0x22e6a4][_0x1f74('0x26')],'VoiceQueueId':_0x1b30d3[_0x22e6a4]['id'],'interface':_0x111511,'paused':_0x5bd762[_0x1f74('0x4d')]||![],'penalty':_0x1b30d3[_0x22e6a4][_0x1f74('0x52')]||0x0}));}return BPromise[_0x1f74('0x53')](_0x37eba4);}}}})['then'](function(){if(_0x5bd762){return db[_0x1f74('0x28')]['findAll']({'where':{'membername':_0x5bd762[_0x1f74('0x26')],'exitAt':null}});}})[_0x1f74('0x24')](function(_0x22a623){if(_0x5bd762){if(_0x22a623&&_0x22a623[_0x1f74('0x2b')]){var _0x7c5e5a=[];_0x22a623[_0x1f74('0x46')](function(_0x3eb0e8){_0x7c5e5a[_0x1f74('0x47')](_0x3eb0e8[_0x1f74('0x37')]({'exitAt':moment()[_0x1f74('0x2a')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x1f74('0x53')](_0x7c5e5a);}}})['then'](function(_0x226a05){if(_0x5bd762){var _0x41e56e=[];var _0x191799=[];var _0x14cae8=utils[_0x1f74('0x2d')]();var _0x168d26={'membername':_0x5bd762['name'],'interface':_0x111511,'enterAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31')),'role':_0x5bd762[_0x1f74('0x27')],'internal':_0x5bd762['internal']};_0x14cae8[_0x1f74('0x46')](function(_0x5cd744){_0x41e56e[_0x1f74('0x47')](_['merge']({'channel':_0x5cd744,'type':'LOGIN','data1':_0x1f74('0x54'),'data2':_0x111511},_0x168d26));if(_0x5bd762[_0x1f74('0x4d')]){_0x191799[_0x1f74('0x47')](_['merge']({'channel':_0x5cd744,'type':_0x1f74('0x29'),'data1':_0x1f74('0x55')},_0x168d26));}});return db[_0x1f74('0x28')][_0x1f74('0x36')](_0x41e56e[_0x1f74('0x56')](_0x191799),{'individualHooks':!![]});}})[_0x1f74('0x24')](function(){if(_0x5bd762){return _0x5bd762[_0x1f74('0x37')]({'online':!![],'lastLoginAt':moment()[_0x1f74('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x5bd762[_0x1f74('0x4d')]||![],'mailPause':_0x5bd762[_0x1f74('0x4d')]||![],'chatPause':_0x5bd762['loginInPause']||![],'faxPause':_0x5bd762[_0x1f74('0x4d')]||![],'smsPause':_0x5bd762[_0x1f74('0x4d')]||![],'openchannelPause':_0x5bd762[_0x1f74('0x4d')]||![],'pauseType':_0x5bd762[_0x1f74('0x4d')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x1f74('0x2a')](_0x1f74('0x31')),'interface':_0x111511});}})[_0x1f74('0x24')](function(_0x4e59bc){_0x50989f(_0x4e59bc);})[_0x1f74('0x38')](function(_0x88ea30){_0x54b42e(_0x2f86dc[_0x1f74('0x13')](0x1f4,_0x88ea30['message']));});});};