340c1859c20082bc433725a2d1c03e6e359dad5d
[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 _0x867b=['querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','register','sendStatus','end','status','json','offset','limit','undefined','count','set','reject','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','team','user','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','UserNotification','create','forEach','recipient','emit','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','toLowerCase','ids','queue','replace','Queue','all','union','flatten','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js'];(function(_0x5ab2fe,_0x207f6d){var _0x525cc6=function(_0x2bce8a){while(--_0x2bce8a){_0x5ab2fe['push'](_0x5ab2fe['shift']());}};_0x525cc6(++_0x207f6d);}(_0x867b,0x188));var _0xb867=function(_0x300f81,_0x24e338){_0x300f81=_0x300f81-0x0;var _0x35b26f=_0x867b[_0x300f81];return _0x35b26f;};'use strict';var emlformat=require(_0xb867('0x0'));var rimraf=require(_0xb867('0x1'));var zipdir=require(_0xb867('0x2'));var jsonpatch=require(_0xb867('0x3'));var rp=require(_0xb867('0x4'));var moment=require(_0xb867('0x5'));var BPromise=require(_0xb867('0x6'));var Mustache=require(_0xb867('0x7'));var util=require('util');var path=require(_0xb867('0x8'));var sox=require(_0xb867('0x9'));var csv=require(_0xb867('0xa'));var ejs=require(_0xb867('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb867('0xc'));var squel=require(_0xb867('0xd'));var crypto=require('crypto');var jsforce=require(_0xb867('0xe'));var deskjs=require(_0xb867('0xf'));var toCsv=require(_0xb867('0xa'));var querystring=require(_0xb867('0x10'));var Papa=require('papaparse');var Redis=require(_0xb867('0x11'));var authService=require(_0xb867('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb867('0x13'));var hardwareService=require(_0xb867('0x14'));var logger=require(_0xb867('0x15'))('api');var utils=require(_0xb867('0x16'));var config=require(_0xb867('0x17'));var licenseUtil=require(_0xb867('0x18'));var db=require(_0xb867('0x19'))['db'];config['redis']=_[_0xb867('0x1a')](config['redis'],{'host':_0xb867('0x1b'),'port':0x18eb});var socket=require(_0xb867('0x1c'))(new Redis(config[_0xb867('0x1d')]));require(_0xb867('0x1e'))[_0xb867('0x1f')](socket);function respondWithStatusCode(_0x26ea19,_0x67b47e){_0x67b47e=_0x67b47e||0xcc;return function(_0x1c3aa1){if(_0x1c3aa1){return _0x26ea19[_0xb867('0x20')](_0x67b47e);}return _0x26ea19['status'](_0x67b47e)[_0xb867('0x21')]();};}function respondWithResult(_0x53943d,_0x4adbad){_0x4adbad=_0x4adbad||0xc8;return function(_0x3c92b9){if(_0x3c92b9){return _0x53943d[_0xb867('0x22')](_0x4adbad)[_0xb867('0x23')](_0x3c92b9);}};}function respondWithFilteredResult(_0x52e57d,_0x334c68){return function(_0x552098){if(_0x552098){var _0x49b7fe=typeof _0x334c68[_0xb867('0x24')]==='undefined'&&typeof _0x334c68[_0xb867('0x25')]===_0xb867('0x26');var _0x87c313=_0x552098[_0xb867('0x27')];var _0x3d816b=_0x49b7fe?0x0:_0x334c68[_0xb867('0x24')];var _0xf804c1=_0x49b7fe?_0x552098[_0xb867('0x27')]:_0x334c68[_0xb867('0x24')]+_0x334c68[_0xb867('0x25')];var _0x2c0946;if(_0xf804c1>=_0x87c313){_0xf804c1=_0x87c313;_0x2c0946=0xc8;}else{_0x2c0946=0xce;}_0x52e57d['status'](_0x2c0946);return _0x52e57d[_0xb867('0x28')]('Content-Range',_0x3d816b+'-'+_0xf804c1+'/'+_0x87c313)[_0xb867('0x23')](_0x552098);}return null;};}function patchUpdates(_0x265abd){return function(_0x1163ef){try{jsonpatch['apply'](_0x1163ef,_0x265abd,!![]);}catch(_0x1b5a24){return BPromise[_0xb867('0x29')](_0x1b5a24);}return _0x1163ef['save']();};}function saveUpdates(_0x448af0,_0x4f1d54){return function(_0x68fbf9){if(_0x68fbf9){return _0x68fbf9[_0xb867('0x2a')](_0x448af0)[_0xb867('0x2b')](function(_0x18c72f){return _0x18c72f;});}return null;};}function removeEntity(_0x273c48,_0x4b82f1){return function(_0x1b81a5){if(_0x1b81a5){return _0x1b81a5[_0xb867('0x2c')]()[_0xb867('0x2b')](function(){_0x273c48[_0xb867('0x22')](0xcc)[_0xb867('0x21')]();});}};}function handleEntityNotFound(_0x2251a3,_0x3f5a8b){return function(_0x407199){if(!_0x407199){_0x2251a3[_0xb867('0x20')](0x194);}return _0x407199;};}function handleError(_0x3665cc,_0x18b45c){_0x18b45c=_0x18b45c||0x1f4;return function(_0x23e016){logger[_0xb867('0x2d')](_0x23e016[_0xb867('0x2e')]);if(_0x23e016[_0xb867('0x2f')]){delete _0x23e016[_0xb867('0x2f')];}_0x3665cc[_0xb867('0x22')](_0x18b45c)[_0xb867('0x30')](_0x23e016);};}exports[_0xb867('0x31')]=function(_0x327efc,_0x258681,_0x583207){if(!_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x34'))&&!_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x35'))){throw new db[(_0xb867('0x36'))]['ValidationError']('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x327efc['body']['hasOwnProperty'](_0xb867('0x35'))&&!_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x37'))){throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x39'));}if(!_0x327efc['body'][_0xb867('0x33')](_0xb867('0x3a'))){throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x3b'));}else{try{var _0x2b183b=JSON[_0xb867('0x3c')](_0x327efc[_0xb867('0x32')][_0xb867('0x3a')]);}catch(_0x38a9ce){logger['error'](_0x38a9ce);throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x3d'));}var _0x1e463a=['chatqueue',_0xb867('0x3e'),_0xb867('0x3f'),_0xb867('0x40'),_0xb867('0x41'),'voicequeue',_0xb867('0x42'),_0xb867('0x43'),_0xb867('0x44')];if(_['some'](_0x2b183b,function(_0x177081){return!_[_0xb867('0x45')](_0x1e463a,_0x177081[_0xb867('0x46')]['toLowerCase']());})){throw new db[(_0xb867('0x36'))]['ValidationError'](_0xb867('0x47'));}}}var _0x100b67={};_0x100b67[_0xb867('0x48')]=_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x48'))?_0x327efc[_0xb867('0x32')][_0xb867('0x48')]:_0x327efc[_0xb867('0x44')][_0xb867('0x49')];_0x100b67[_0xb867('0x4a')]=_[_0xb867('0x4b')](_0x327efc[_0xb867('0x32')][_0xb867('0x4a')])?null:_0x327efc[_0xb867('0x32')]['recipientsDescription'];_0x100b67[_0xb867('0x4c')]=_0x327efc[_0xb867('0x32')]['beep']||![];_0x100b67[_0xb867('0x4d')]=_0x327efc[_0xb867('0x44')]['id'];return getContent(_0x327efc[_0xb867('0x32')])[_0xb867('0x2b')](function(_0x35a2e6){_0x100b67[_0xb867('0x32')]=_0x35a2e6;return getRecipients(_0x2b183b);})[_0xb867('0x2b')](function(_0x1ef104){_0x100b67[_0xb867('0x4e')]=_[_0xb867('0x4f')](_0x1ef104)[_0xb867('0x50')](',');return db[_0xb867('0x51')]['transaction'](function(_0x2b5574){return db[_0xb867('0x52')][_0xb867('0x53')](_0x100b67,{'raw':!![],'transaction':_0x2b5574})[_0xb867('0x2b')](function(_0x2e3d60){var _0x558c4a={'sender':_0x100b67[_0xb867('0x48')],'description':_0x100b67[_0xb867('0x4a')],'content':_0x100b67[_0xb867('0x32')],'beep':_0x100b67[_0xb867('0x4c')]};_0x1ef104[_0xb867('0x54')](function(_0x4f1c4b){_0x558c4a[_0xb867('0x55')]=_0x4f1c4b;socket[_0xb867('0x56')]('userNotification:send',_0x558c4a);});return _0x2e3d60;});});})[_0xb867('0x2b')](respondWithResult(_0x258681,0xc9))[_0xb867('0x57')](handleError(_0x258681,null));};function getContent(_0x33b6cd){return new BPromise(function(_0x2c8da4,_0x40552a){if(_0x33b6cd[_0xb867('0x34')]){_0x2c8da4(_0x33b6cd[_0xb867('0x34')]);return;}return db[_0xb867('0x58')][_0xb867('0x59')]({'attributes':[_0xb867('0x5a')],'where':{'id':_0x33b6cd[_0xb867('0x35')]},'raw':!![]})[_0xb867('0x2b')](function(_0x549ee4){if(!_0x549ee4)throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x5b'));var _0x550bc9=Mustache['render'](_0x549ee4[_0xb867('0x5a')],_0x33b6cd[_0xb867('0x37')]);_0x2c8da4(_0x550bc9);})[_0xb867('0x57')](function(_0x66c026){_0x40552a(_0x66c026);});});}function getRecipients(_0x166b98){return new BPromise(function(_0xac78a9,_0x53d848){var _0x56448e=[];var _0xac5a94=[];_0x166b98['forEach'](function(_0x311c75){var _0x1feae7=_['startCase'](_0x311c75[_0xb867('0x46')][_0xb867('0x5c')]());if(_0x1feae7==='User'){_0x56448e=_['union'](_0x56448e,_0x311c75[_0xb867('0x5d')]);}else{if(_['includes'](_0x1feae7,_0xb867('0x5e')))_0x1feae7=_0x1feae7[_0xb867('0x5f')]('queue',_0xb867('0x60'));_0x311c75[_0xb867('0x5d')][_0xb867('0x54')](function(_0x49dab0){_0xac5a94['push'](getAgents(_0x1feae7,_0x49dab0));});}});return BPromise[_0xb867('0x61')](_0xac5a94)[_0xb867('0x2b')](function(_0x264898){_0x56448e=_[_0xb867('0x62')](_0x56448e,_[_0xb867('0x63')](_0x264898));_0xac78a9(_0x56448e);})[_0xb867('0x57')](function(_0x48700a){_0x53d848(_0x48700a);});});}function getAgents(_0x394be5,_0x30fbe5){return new BPromise(function(_0x432541,_0x221647){return db[_0x394be5][_0xb867('0x59')]({'where':{'id':_0x30fbe5}})[_0xb867('0x2b')](function(_0x3b4d81){return _0x3b4d81[_0xb867('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0x127588){var _0x5d9d55=_[_0xb867('0x65')](_0x127588,'id');_0x432541(_0x5d9d55);});})[_0xb867('0x57')](function(_0x3c7980){_0x221647(_0x3c7980);});});}