76cf841574ed01888f4476c0659565493c0a3e7a
[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 _0x1a62=['format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','forEach','push','SIP/%s','body','type','DEFAULT\x20PAUSE','role','uniqueid','UnpauseUser','findOne','channel','Unknown\x20channel','voice','system','mail','chat','fax','sms','openchannel','whatsapp','set','%s%s','Pause','LogoutUser','destroy','LoginUser','phone','loginInPause','count','../../config/license/util','getLicense','agents','upsert','UserVoiceQueue.penalty','all','LOGIN','callysquare','merge','bulkCreate','concat','LOGININPAUSE','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetUser','User','options','raw','include','map','model','attributes','ShowUser','find','where','stringify','PauseUser','name','internal','interface','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE'];(function(_0x38e999,_0xfc3ec0){var _0x3b1b06=function(_0x47c7df){while(--_0x47c7df){_0x38e999['push'](_0x38e999['shift']());}};_0x3b1b06(++_0xfc3ec0);}(_0x1a62,0x151));var _0x21a6=function(_0x20d4c2,_0x578354){_0x20d4c2=_0x20d4c2-0x0;var _0x1d2044=_0x1a62[_0x20d4c2];return _0x1d2044;};'use strict';var _=require(_0x21a6('0x0'));var util=require(_0x21a6('0x1'));var moment=require(_0x21a6('0x2'));var BPromise=require(_0x21a6('0x3'));var rs=require(_0x21a6('0x4'));var fs=require('fs');var Redis=require(_0x21a6('0x5'));var db=require(_0x21a6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x21a6('0x7'))(_0x21a6('0x8'));var config=require(_0x21a6('0x9'));var jayson=require(_0x21a6('0xa'));var client=jayson[_0x21a6('0xb')][_0x21a6('0xc')]({'port':0x232a});config[_0x21a6('0xd')]=_[_0x21a6('0xe')](config[_0x21a6('0xd')],{'host':_0x21a6('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x21a6('0x10'))[_0x21a6('0x11')](socket);function respondWithRpcPromise(_0x236f94,_0x3c3e73,_0x3be8b5){return new BPromise(function(_0x3b511f,_0x4e102d){return client[_0x21a6('0x12')](_0x236f94,_0x3be8b5)[_0x21a6('0x13')](function(_0x406222){logger[_0x21a6('0x14')](_0x21a6('0x15'),_0x3c3e73,_0x21a6('0x16'));logger[_0x21a6('0x17')](_0x21a6('0x18'),_0x3c3e73,_0x21a6('0x16'),JSON['stringify'](_0x406222));if(_0x406222[_0x21a6('0x19')]){if(_0x406222['error'][_0x21a6('0x1a')]===0x1f4){logger[_0x21a6('0x19')](_0x21a6('0x15'),_0x3c3e73,_0x406222[_0x21a6('0x19')][_0x21a6('0x1b')]);return _0x4e102d(_0x406222[_0x21a6('0x19')][_0x21a6('0x1b')]);}logger[_0x21a6('0x19')](_0x21a6('0x15'),_0x3c3e73,_0x406222[_0x21a6('0x19')][_0x21a6('0x1b')]);return _0x3b511f(_0x406222[_0x21a6('0x19')][_0x21a6('0x1b')]);}else{logger[_0x21a6('0x14')]('User,\x20%s,\x20%s',_0x3c3e73,'request\x20sent');_0x3b511f(_0x406222[_0x21a6('0x1c')][_0x21a6('0x1b')]);}})[_0x21a6('0x1d')](function(_0x3477d5){logger['error'](_0x21a6('0x15'),_0x3c3e73,_0x3477d5);_0x4e102d(_0x3477d5);});});}exports[_0x21a6('0x1e')]=function(_0x4a2e2d){var _0x23bd1f=this;return new Promise(function(_0xc1c2ca,_0x5c6124){return db[_0x21a6('0x1f')]['findAll']({'raw':_0x4a2e2d[_0x21a6('0x20')]?_0x4a2e2d[_0x21a6('0x20')][_0x21a6('0x21')]===undefined?!![]:![]:!![],'where':_0x4a2e2d[_0x21a6('0x20')]?_0x4a2e2d['options']['where']||null:null,'attributes':_0x4a2e2d[_0x21a6('0x20')]?_0x4a2e2d['options']['attributes']||null:null,'limit':_0x4a2e2d['options']?_0x4a2e2d[_0x21a6('0x20')]['limit']||null:null,'include':_0x4a2e2d[_0x21a6('0x20')]?_0x4a2e2d[_0x21a6('0x20')][_0x21a6('0x22')]?_[_0x21a6('0x23')](_0x4a2e2d[_0x21a6('0x20')][_0x21a6('0x22')],function(_0x20b3f9){return{'model':db[_0x20b3f9[_0x21a6('0x24')]],'as':_0x20b3f9['as'],'attributes':_0x20b3f9[_0x21a6('0x25')],'include':_0x20b3f9[_0x21a6('0x22')]?_[_0x21a6('0x23')](_0x20b3f9['include'],function(_0x26538e){return{'model':db[_0x26538e[_0x21a6('0x24')]],'as':_0x26538e['as'],'attributes':_0x26538e['attributes'],'include':_0x26538e[_0x21a6('0x22')]?_[_0x21a6('0x23')](_0x26538e[_0x21a6('0x22')],function(_0x5b1d68){return{'model':db[_0x5b1d68[_0x21a6('0x24')]],'as':_0x5b1d68['as'],'attributes':_0x5b1d68[_0x21a6('0x25')]};}):[]};}):[]};}):[]:[]})[_0x21a6('0x13')](function(_0x236ca2){logger[_0x21a6('0x14')]('GetUser',_0x4a2e2d);logger['debug'](_0x21a6('0x1e'),_0x4a2e2d,JSON['stringify'](_0x236ca2));_0xc1c2ca(_0x236ca2);})[_0x21a6('0x1d')](function(_0x4007ea){logger[_0x21a6('0x19')](_0x21a6('0x1e'),_0x4007ea[_0x21a6('0x1b')],_0x4a2e2d);_0x5c6124(_0x23bd1f[_0x21a6('0x19')](0x1f4,_0x4007ea[_0x21a6('0x1b')]));});});};exports[_0x21a6('0x26')]=function(_0x13ee42){var _0x658f17=this;return new Promise(function(_0x1475fa,_0x71526c){return db['User'][_0x21a6('0x27')]({'raw':_0x13ee42[_0x21a6('0x20')]?_0x13ee42[_0x21a6('0x20')][_0x21a6('0x21')]===undefined?!![]:![]:!![],'where':_0x13ee42['options']?_0x13ee42['options'][_0x21a6('0x28')]||null:null,'attributes':_0x13ee42['options']?_0x13ee42[_0x21a6('0x20')][_0x21a6('0x25')]||null:null,'include':_0x13ee42[_0x21a6('0x20')]?_0x13ee42[_0x21a6('0x20')][_0x21a6('0x22')]?_[_0x21a6('0x23')](_0x13ee42[_0x21a6('0x20')][_0x21a6('0x22')],function(_0x50ff2d){return{'model':db[_0x50ff2d[_0x21a6('0x24')]],'as':_0x50ff2d['as'],'attributes':_0x50ff2d[_0x21a6('0x25')],'include':_0x50ff2d[_0x21a6('0x22')]?_['map'](_0x50ff2d['include'],function(_0xc40c24){return{'model':db[_0xc40c24[_0x21a6('0x24')]],'as':_0xc40c24['as'],'attributes':_0xc40c24[_0x21a6('0x25')],'include':_0xc40c24['include']?_['map'](_0xc40c24[_0x21a6('0x22')],function(_0x4c780a){return{'model':db[_0x4c780a[_0x21a6('0x24')]],'as':_0x4c780a['as'],'attributes':_0x4c780a['attributes']};}):[]};}):[]};}):[]:[]})[_0x21a6('0x13')](function(_0x36cbcd){logger['info'](_0x21a6('0x26'),_0x13ee42);logger['debug']('ShowUser',_0x13ee42,JSON[_0x21a6('0x29')](_0x36cbcd));_0x1475fa(_0x36cbcd);})['catch'](function(_0x17b187){logger['error'](_0x21a6('0x26'),_0x17b187[_0x21a6('0x1b')],_0x13ee42);_0x71526c(_0x658f17['error'](0x1f4,_0x17b187['message']));});});};exports[_0x21a6('0x2a')]=function(_0x169256){var _0x448f9c=this;return new Promise(function(_0x4d3e41,_0x24d860){var _0x437753;return db['User'][_0x21a6('0x27')]({'where':_0x169256[_0x21a6('0x20')][_0x21a6('0x28')]||{},'attributes':['id',_0x21a6('0x2b'),'role',_0x21a6('0x2c'),_0x21a6('0x2d')]})[_0x21a6('0x13')](function(_0x58df34){if(_0x58df34){_0x437753=_0x58df34;return db[_0x21a6('0x2e')][_0x21a6('0x2f')]({'paused':0x1},{'where':{'UserId':_0x437753['id']},'individualHooks':!![]});}})['then'](function(){if(_0x437753){return db[_0x21a6('0x30')][_0x21a6('0x31')]({'where':{'membername':_0x437753[_0x21a6('0x2b')],'type':_0x21a6('0x32'),'exitAt':null}});}})[_0x21a6('0x13')](function(_0xb30320){if(_0x437753){if(_0xb30320&&_0xb30320['length']){var _0x6b4a0d=moment()[_0x21a6('0x33')](_0x21a6('0x34'));for(var _0xd55c1d=0x0,_0x1508e1=_0xb30320[_0x21a6('0x35')];_0xd55c1d<_0x1508e1;_0xd55c1d++){_0xb30320[_0xd55c1d][_0x21a6('0x36')]({'exitAt':_0x6b4a0d});}}}})[_0x21a6('0x13')](function(){if(_0x437753){var _0x3e38b1=[];var _0x523e71=utils[_0x21a6('0x37')]();_0x523e71[_0x21a6('0x38')](function(_0x59513f){_0x3e38b1[_0x21a6('0x39')]({'channel':_0x59513f,'membername':_0x437753[_0x21a6('0x2b')],'interface':_['isNil'](_0x437753[_0x21a6('0x2d')])?util[_0x21a6('0x33')](_0x21a6('0x3a'),_0x437753['name']):_0x437753['interface'],'type':'PAUSE','enterAt':moment()['format'](_0x21a6('0x34')),'data1':_0x169256[_0x21a6('0x3b')][_0x21a6('0x3c')]||_0x21a6('0x3d'),'role':_0x437753[_0x21a6('0x3e')],'internal':_0x437753['internal'],'uniqueid':_0x169256[_0x21a6('0x3b')][_0x21a6('0x3f')]||null});});return db['MemberReport']['bulkCreate'](_0x3e38b1,{'individualHooks':!![]});}})[_0x21a6('0x13')](function(){if(_0x437753){return _0x437753['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x169256[_0x21a6('0x3b')][_0x21a6('0x3c')]||_0x21a6('0x3d'),'lastPauseAt':moment()['format'](_0x21a6('0x34'))});}})['then'](function(_0x10c1b7){_0x4d3e41(_0x10c1b7);})['catch'](function(_0x585c9b){_0x24d860(_0x448f9c[_0x21a6('0x19')](0x1f4,_0x585c9b[_0x21a6('0x1b')]));});});};exports[_0x21a6('0x40')]=function(_0x1e98e5){var _0x572f92=this;return new Promise(function(_0x21f950,_0x506c52){var _0x4d877b;return db[_0x21a6('0x1f')][_0x21a6('0x41')]({'where':_0x1e98e5[_0x21a6('0x20')][_0x21a6('0x28')]||{},'attributes':['id',_0x21a6('0x2b')]})[_0x21a6('0x13')](function(_0x5775eb){if(_0x5775eb){_0x4d877b=_0x5775eb;if(_0x1e98e5['body'][_0x21a6('0x42')]&&!utils['isValidChannel'](_0x1e98e5['body'][_0x21a6('0x42')])){throw new Error(_0x21a6('0x43'));}switch(_0x1e98e5[_0x21a6('0x3b')][_0x21a6('0x42')]){case _0x21a6('0x44'):return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x4d877b['id']}})['then'](function(){return db[_0x21a6('0x30')][_0x21a6('0x27')]({'where':{'channel':_0x1e98e5[_0x21a6('0x3b')]['channel'],'membername':_0x4d877b[_0x21a6('0x2b')],'type':'PAUSE','exitAt':null}});})[_0x21a6('0x13')](function(_0x4a74dd){if(_0x4a74dd){return _0x4a74dd[_0x21a6('0x2f')]({'exitAt':moment()['format'](_0x21a6('0x34')),'data2':_0x21a6('0x45')},{'individualHooks':!![]});}return null;})[_0x21a6('0x13')](function(){return _0x4d877b[_0x21a6('0x2f')]({'voicePause':![]});});case _0x21a6('0x46'):case _0x21a6('0x47'):case _0x21a6('0x48'):case _0x21a6('0x49'):case _0x21a6('0x4a'):case _0x21a6('0x4b'):return db[_0x21a6('0x30')]['find']({'where':{'channel':_0x1e98e5[_0x21a6('0x3b')][_0x21a6('0x42')],'membername':_0x4d877b['name'],'type':_0x21a6('0x32'),'exitAt':null}})['then'](function(_0x2906f5){return _0x2906f5[_0x21a6('0x2f')]({'exitAt':moment()[_0x21a6('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x21a6('0x45')},{'individualHooks':!![]});})['then'](function(){var _0x5b510d={};_[_0x21a6('0x4c')](_0x5b510d,util['format'](_0x21a6('0x4d'),_0x1e98e5[_0x21a6('0x3b')][_0x21a6('0x42')],_0x21a6('0x4e')),![]);return _0x4d877b['update'](_0x5b510d);});default:return db[_0x21a6('0x2e')][_0x21a6('0x2f')]({'paused':0x0},{'where':{'UserId':_0x4d877b['id']}})['then'](function(){return db[_0x21a6('0x30')]['findAll']({'where':{'membername':_0x4d877b['name'],'type':'PAUSE','exitAt':null}});})[_0x21a6('0x13')](function(_0x174a24){var _0x1912d2=[];_0x174a24[_0x21a6('0x38')](function(_0xac4f26){_0x1912d2[_0x21a6('0x39')](_0xac4f26['update']({'exitAt':moment()[_0x21a6('0x33')](_0x21a6('0x34')),'data2':_0x21a6('0x45')}));});return BPromise['all'](_0x1912d2);})[_0x21a6('0x13')](function(){return _0x4d877b[_0x21a6('0x2f')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x21a6('0x13')](function(_0x115495){_0x21f950(_0x115495);})[_0x21a6('0x1d')](function(_0x383fda){_0x506c52(_0x572f92[_0x21a6('0x19')](0x1f4,_0x383fda[_0x21a6('0x1b')]));});});};exports[_0x21a6('0x4f')]=function(_0x43bd31){var _0x4178ee=this;return new Promise(function(_0x5d4187,_0x274abb){var _0x557f9d;return db[_0x21a6('0x1f')][_0x21a6('0x41')]({'where':_0x43bd31['options']['where']||{},'attributes':['id',_0x21a6('0x2b')]})[_0x21a6('0x13')](function(_0x30e67a){if(_0x30e67a){_0x557f9d=_0x30e67a;return db['UserVoiceQueueRt'][_0x21a6('0x50')]({'where':{'membername':_0x557f9d[_0x21a6('0x2b')]},'individualHooks':!![]});}})[_0x21a6('0x13')](function(){if(_0x557f9d){return db[_0x21a6('0x30')][_0x21a6('0x31')]({'where':{'membername':_0x557f9d[_0x21a6('0x2b')],'exitAt':null}});}})[_0x21a6('0x13')](function(_0x39957b){if(_0x557f9d){if(_0x39957b&&_0x39957b[_0x21a6('0x35')]){var _0x3896ef=[];_0x39957b[_0x21a6('0x38')](function(_0x4671cd){_0x3896ef[_0x21a6('0x39')](_0x4671cd[_0x21a6('0x2f')]({'exitAt':moment()['format'](_0x21a6('0x34'))}));});return BPromise['all'](_0x3896ef);}}})[_0x21a6('0x13')](function(){if(_0x557f9d){return _0x557f9d[_0x21a6('0x2f')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x21a6('0x13')](function(_0x14e715){_0x5d4187(_0x14e715);})[_0x21a6('0x1d')](function(_0x4411f6){_0x274abb(_0x4178ee[_0x21a6('0x19')](0x1f4,_0x4411f6[_0x21a6('0x1b')]));});});};exports[_0x21a6('0x51')]=function(_0x57175c){var _0xe55040=this;return new Promise(function(_0x1d91a6,_0x5b26b1){var _0x1d4263;var _0x5e870b;var _0x2b7e44;var _0x4df1a9;return db[_0x21a6('0x1f')]['findOne']({'where':_0x57175c[_0x21a6('0x20')][_0x21a6('0x28')]||{},'attributes':['id',_0x21a6('0x2b'),'role','mobile',_0x21a6('0x52'),_0x21a6('0x2c'),_0x21a6('0x53'),'interface']})[_0x21a6('0x13')](function(_0x187eec){if(_0x187eec){_0x1d4263=_0x187eec;_0x4df1a9=_0x57175c[_0x21a6('0x3b')][_0x21a6('0x2d')]?_0x57175c[_0x21a6('0x3b')]['interface']:util['format'](_0x21a6('0x3a'),_0x1d4263['name']);return db['User'][_0x21a6('0x54')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1d4263['id']}}});}})[_0x21a6('0x13')](function(_0x28eae6){if(_0x28eae6){_0x2b7e44=_0x28eae6;return require(_0x21a6('0x55'))[_0x21a6('0x56')]();}})[_0x21a6('0x13')](function(_0xdfa4e7){if(_0xdfa4e7&&_0xdfa4e7[_0x21a6('0x57')]&&_0x2b7e44>=_0xdfa4e7[_0x21a6('0x57')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x21a6('0x13')](function(){if(_0x1d4263){return db[_0x21a6('0x2e')][_0x21a6('0x50')]({'where':{'membername':_0x1d4263[_0x21a6('0x2b')]},'individualHooks':!![]});}})[_0x21a6('0x13')](function(){if(_0x1d4263){return _0x1d4263['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x230bf2){if(_0x1d4263){if(_0x230bf2){var _0x2628c9=[];_0x5e870b=_0x230bf2;if(_0x5e870b[_0x21a6('0x35')]){for(var _0x5c193b=0x0;_0x5c193b<_0x5e870b[_0x21a6('0x35')];_0x5c193b++){_0x2628c9[_0x21a6('0x39')](db['UserVoiceQueueRt'][_0x21a6('0x58')]({'membername':_0x1d4263[_0x21a6('0x2b')],'UserId':_0x1d4263['id'],'queue_name':_0x5e870b[_0x5c193b][_0x21a6('0x2b')],'VoiceQueueId':_0x5e870b[_0x5c193b]['id'],'interface':_0x4df1a9,'paused':_0x1d4263[_0x21a6('0x53')]||![],'penalty':_0x5e870b[_0x5c193b][_0x21a6('0x59')]||0x0}));}return BPromise[_0x21a6('0x5a')](_0x2628c9);}}}})[_0x21a6('0x13')](function(){if(_0x1d4263){return db[_0x21a6('0x30')][_0x21a6('0x31')]({'where':{'membername':_0x1d4263[_0x21a6('0x2b')],'exitAt':null}});}})[_0x21a6('0x13')](function(_0x3935d9){if(_0x1d4263){if(_0x3935d9&&_0x3935d9[_0x21a6('0x35')]){var _0x2b0d49=[];_0x3935d9[_0x21a6('0x38')](function(_0x49c46a){_0x2b0d49['push'](_0x49c46a[_0x21a6('0x2f')]({'exitAt':moment()['format'](_0x21a6('0x34'))}));});return BPromise['all'](_0x2b0d49);}}})[_0x21a6('0x13')](function(_0x257522){if(_0x1d4263){var _0x51385f=[];var _0xbebcd3=[];var _0xdeec43=utils[_0x21a6('0x37')]();var _0x316407={'membername':_0x1d4263[_0x21a6('0x2b')],'interface':_0x4df1a9,'enterAt':moment()[_0x21a6('0x33')](_0x21a6('0x34')),'role':_0x1d4263['role'],'internal':_0x1d4263[_0x21a6('0x2c')]};_0xdeec43[_0x21a6('0x38')](function(_0xbd19b2){_0x51385f[_0x21a6('0x39')](_['merge']({'channel':_0xbd19b2,'type':_0x21a6('0x5b'),'data1':_0x21a6('0x5c'),'data2':_0x4df1a9},_0x316407));if(_0x1d4263['loginInPause']){_0xbebcd3[_0x21a6('0x39')](_[_0x21a6('0x5d')]({'channel':_0xbd19b2,'type':_0x21a6('0x32'),'data1':'LOGININPAUSE'},_0x316407));}});return db[_0x21a6('0x30')][_0x21a6('0x5e')](_0x51385f[_0x21a6('0x5f')](_0xbebcd3),{'individualHooks':!![]});}})[_0x21a6('0x13')](function(){if(_0x1d4263){return _0x1d4263[_0x21a6('0x2f')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1d4263[_0x21a6('0x53')]||![],'mailPause':_0x1d4263['loginInPause']||![],'chatPause':_0x1d4263[_0x21a6('0x53')]||![],'faxPause':_0x1d4263[_0x21a6('0x53')]||![],'smsPause':_0x1d4263[_0x21a6('0x53')]||![],'openchannelPause':_0x1d4263[_0x21a6('0x53')]||![],'pauseType':_0x1d4263['loginInPause']?_0x21a6('0x60'):null,'lastPauseAt':moment()[_0x21a6('0x33')](_0x21a6('0x34')),'interface':_0x4df1a9});}})[_0x21a6('0x13')](function(_0x5c5387){_0x1d91a6(_0x5c5387);})['catch'](function(_0x48d012){_0x5b26b1(_0xe55040[_0x21a6('0x19')](0x1f4,_0x48d012['message']));});});};