700b5839b8295592243b2ff0d8376cb1f700c547
[motion2.git] / server / api / userNotification / userNotification.controller.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 _0x88f2=['sortBy','join','sequelize','transaction','create','forEach','recipient','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','union','ids','replace','push','all','flatten','getAgents','map','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','sendUserNotification','hasOwnProperty','text','body','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId'];(function(_0x487f45,_0x351377){var _0x80033e=function(_0x8b4537){while(--_0x8b4537){_0x487f45['push'](_0x487f45['shift']());}};_0x80033e(++_0x351377);}(_0x88f2,0x13d));var _0x288f=function(_0x5ca30a,_0x361f27){_0x5ca30a=_0x5ca30a-0x0;var _0x1af438=_0x88f2[_0x5ca30a];return _0x1af438;};'use strict';var emlformat=require(_0x288f('0x0'));var rimraf=require(_0x288f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x288f('0x2'));var rp=require(_0x288f('0x3'));var moment=require(_0x288f('0x4'));var BPromise=require(_0x288f('0x5'));var Mustache=require(_0x288f('0x6'));var util=require(_0x288f('0x7'));var path=require(_0x288f('0x8'));var sox=require(_0x288f('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x288f('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x288f('0xb'));var jsforce=require(_0x288f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x288f('0xd'));var querystring=require('querystring');var Papa=require(_0x288f('0xe'));var Redis=require(_0x288f('0xf'));var authService=require(_0x288f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x288f('0x11'));var hardwareService=require(_0x288f('0x12'));var logger=require(_0x288f('0x13'))(_0x288f('0x14'));var utils=require(_0x288f('0x15'));var config=require(_0x288f('0x16'));var licenseUtil=require(_0x288f('0x17'));var db=require(_0x288f('0x18'))['db'];config[_0x288f('0x19')]=_[_0x288f('0x1a')](config[_0x288f('0x19')],{'host':_0x288f('0x1b'),'port':0x18eb});var socket=require(_0x288f('0x1c'))(new Redis(config[_0x288f('0x19')]));require('./userNotification.socket')[_0x288f('0x1d')](socket);function respondWithStatusCode(_0x1a433b,_0x16fb4f){_0x16fb4f=_0x16fb4f||0xcc;return function(_0xb64cdf){if(_0xb64cdf){return _0x1a433b[_0x288f('0x1e')](_0x16fb4f);}return _0x1a433b['status'](_0x16fb4f)[_0x288f('0x1f')]();};}function respondWithResult(_0x41009d,_0x4ef948){_0x4ef948=_0x4ef948||0xc8;return function(_0x4ebafd){if(_0x4ebafd){return _0x41009d[_0x288f('0x20')](_0x4ef948)['json'](_0x4ebafd);}};}function respondWithFilteredResult(_0x32796c,_0x51071b){return function(_0x20e900){if(_0x20e900){var _0x4c56cb=typeof _0x51071b[_0x288f('0x21')]===_0x288f('0x22')&&typeof _0x51071b[_0x288f('0x23')]===_0x288f('0x22');var _0x248ef7=_0x20e900[_0x288f('0x24')];var _0x2ff1c3=_0x4c56cb?0x0:_0x51071b['offset'];var _0x1075cd=_0x4c56cb?_0x20e900[_0x288f('0x24')]:_0x51071b['offset']+_0x51071b[_0x288f('0x23')];var _0x4d6a48;if(_0x1075cd>=_0x248ef7){_0x1075cd=_0x248ef7;_0x4d6a48=0xc8;}else{_0x4d6a48=0xce;}_0x32796c[_0x288f('0x20')](_0x4d6a48);return _0x32796c[_0x288f('0x25')](_0x288f('0x26'),_0x2ff1c3+'-'+_0x1075cd+'/'+_0x248ef7)[_0x288f('0x27')](_0x20e900);}return null;};}function patchUpdates(_0x3fc3b2){return function(_0x1e568a){try{jsonpatch[_0x288f('0x28')](_0x1e568a,_0x3fc3b2,!![]);}catch(_0x1bf1b1){return BPromise[_0x288f('0x29')](_0x1bf1b1);}return _0x1e568a['save']();};}function saveUpdates(_0x9c1b32,_0x32f1a4){return function(_0x221e53){if(_0x221e53){return _0x221e53[_0x288f('0x2a')](_0x9c1b32)[_0x288f('0x2b')](function(_0x3ab02b){return _0x3ab02b;});}return null;};}function removeEntity(_0xf2d89b,_0x3d92b3){return function(_0x332eb8){if(_0x332eb8){return _0x332eb8[_0x288f('0x2c')]()['then'](function(){_0xf2d89b[_0x288f('0x20')](0xcc)[_0x288f('0x1f')]();});}};}function handleEntityNotFound(_0x214c93,_0x41de24){return function(_0x4f88f1){if(!_0x4f88f1){_0x214c93[_0x288f('0x1e')](0x194);}return _0x4f88f1;};}function handleError(_0x1edd41,_0x4f7f90){_0x4f7f90=_0x4f7f90||0x1f4;return function(_0x34b838){logger[_0x288f('0x2d')](_0x34b838[_0x288f('0x2e')]);if(_0x34b838[_0x288f('0x2f')]){delete _0x34b838[_0x288f('0x2f')];}_0x1edd41[_0x288f('0x20')](_0x4f7f90)['send'](_0x34b838);};}exports[_0x288f('0x30')]=function(_0x2a18a8,_0x28372e,_0x5a351e){if(!_0x2a18a8['body'][_0x288f('0x31')](_0x288f('0x32'))&&!_0x2a18a8[_0x288f('0x33')][_0x288f('0x31')](_0x288f('0x34'))){throw new db[(_0x288f('0x35'))][(_0x288f('0x36'))](_0x288f('0x37'));}else{if(_0x2a18a8[_0x288f('0x33')][_0x288f('0x31')](_0x288f('0x34'))&&!_0x2a18a8[_0x288f('0x33')][_0x288f('0x31')](_0x288f('0x38'))){throw new db[(_0x288f('0x35'))]['ValidationError'](_0x288f('0x39'));}if(!_0x2a18a8[_0x288f('0x33')][_0x288f('0x31')](_0x288f('0x3a'))){throw new db[(_0x288f('0x35'))][(_0x288f('0x36'))](_0x288f('0x3b'));}else{try{var _0xb215f4=JSON['parse'](_0x2a18a8[_0x288f('0x33')][_0x288f('0x3a')]);}catch(_0x2a875d){logger[_0x288f('0x2d')](_0x2a875d);throw new db[(_0x288f('0x35'))]['ValidationError']('Invalid\x20\x27recipients\x27\x20object');}var _0x485c3f=['chatqueue',_0x288f('0x3c'),_0x288f('0x3d'),_0x288f('0x3e'),_0x288f('0x3f'),_0x288f('0x40'),_0x288f('0x41'),_0x288f('0x42'),_0x288f('0x43')];if(_[_0x288f('0x44')](_0xb215f4,function(_0x5dbec8){return!_[_0x288f('0x45')](_0x485c3f,_0x5dbec8[_0x288f('0x46')][_0x288f('0x47')]());})){throw new db[(_0x288f('0x35'))][(_0x288f('0x36'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x2931a5={};_0x2931a5[_0x288f('0x48')]=_0x2a18a8[_0x288f('0x33')][_0x288f('0x31')](_0x288f('0x48'))?_0x2a18a8[_0x288f('0x33')][_0x288f('0x48')]:_0x2a18a8[_0x288f('0x43')][_0x288f('0x49')];_0x2931a5['recipientsDescription']=_[_0x288f('0x4a')](_0x2a18a8[_0x288f('0x33')][_0x288f('0x4b')])?null:_0x2a18a8['body'][_0x288f('0x4b')];_0x2931a5[_0x288f('0x4c')]=_0x2a18a8['body'][_0x288f('0x4c')]||![];_0x2931a5[_0x288f('0x4d')]=_0x2a18a8[_0x288f('0x43')]['id'];return getContent(_0x2a18a8[_0x288f('0x33')])[_0x288f('0x2b')](function(_0x1acd7d){_0x2931a5[_0x288f('0x33')]=_0x1acd7d;return getRecipients(_0xb215f4);})[_0x288f('0x2b')](function(_0x250847){_0x2931a5[_0x288f('0x4e')]=_[_0x288f('0x4f')](_0x250847)[_0x288f('0x50')](',');return db[_0x288f('0x51')][_0x288f('0x52')](function(_0x1b4345){return db['UserNotification'][_0x288f('0x53')](_0x2931a5,{'raw':!![],'transaction':_0x1b4345})[_0x288f('0x2b')](function(_0x405066){var _0x1f54f6={'sender':_0x2931a5[_0x288f('0x48')],'description':_0x2931a5[_0x288f('0x4b')],'content':_0x2931a5['body'],'beep':_0x2931a5[_0x288f('0x4c')]};_0x250847[_0x288f('0x54')](function(_0x22c87f){_0x1f54f6[_0x288f('0x55')]=_0x22c87f;socket['emit']('userNotification:send',_0x1f54f6);});return _0x405066;});});})[_0x288f('0x2b')](respondWithResult(_0x28372e,0xc9))[_0x288f('0x56')](handleError(_0x28372e,null));};function getContent(_0x342d50){return new BPromise(function(_0x201cbd,_0x445788){if(_0x342d50[_0x288f('0x32')]){_0x201cbd(_0x342d50[_0x288f('0x32')]);return;}return db[_0x288f('0x57')][_0x288f('0x58')]({'attributes':[_0x288f('0x59')],'where':{'id':_0x342d50[_0x288f('0x34')]},'raw':!![]})['then'](function(_0x1d7328){if(!_0x1d7328)throw new db['Sequelize'][(_0x288f('0x36'))](_0x288f('0x5a'));var _0x4addef=Mustache['render'](_0x1d7328[_0x288f('0x59')],_0x342d50[_0x288f('0x38')]);_0x201cbd(_0x4addef);})[_0x288f('0x56')](function(_0x1df1b8){_0x445788(_0x1df1b8);});});}function getRecipients(_0x198577){return new BPromise(function(_0x1e7c0d,_0x228cb3){var _0x205f2a=[];var _0x2dcd05=[];_0x198577['forEach'](function(_0x3a822b){var _0x496fd0=_['startCase'](_0x3a822b[_0x288f('0x46')]['toLowerCase']());if(_0x496fd0==='User'){_0x205f2a=_[_0x288f('0x5b')](_0x205f2a,_0x3a822b[_0x288f('0x5c')]);}else{if(_[_0x288f('0x45')](_0x496fd0,'queue'))_0x496fd0=_0x496fd0[_0x288f('0x5d')]('queue','Queue');_0x3a822b[_0x288f('0x5c')][_0x288f('0x54')](function(_0x390c6d){_0x2dcd05[_0x288f('0x5e')](getAgents(_0x496fd0,_0x390c6d));});}});return BPromise[_0x288f('0x5f')](_0x2dcd05)[_0x288f('0x2b')](function(_0x5aa73b){_0x205f2a=_[_0x288f('0x5b')](_0x205f2a,_[_0x288f('0x60')](_0x5aa73b));_0x1e7c0d(_0x205f2a);})[_0x288f('0x56')](function(_0x414058){_0x228cb3(_0x414058);});});}function getAgents(_0x5d816d,_0x127d35){return new BPromise(function(_0x44f962,_0x304fc7){return db[_0x5d816d][_0x288f('0x58')]({'where':{'id':_0x127d35}})['then'](function(_0x3e5039){return _0x3e5039[_0x288f('0x61')]({'attributes':['id'],'raw':!![]})['then'](function(_0x40ac6f){var _0x55babf=_[_0x288f('0x62')](_0x40ac6f,'id');_0x44f962(_0x55babf);});})[_0x288f('0x56')](function(_0x28c8a9){_0x304fc7(_0x28c8a9);});});}