b2bd26c247aee81bf305c3f6e731eeb5a823cbb0
[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 _0xbb34=['../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','status','end','json','undefined','count','offset','limit','set','Content-Range','save','update','then','destroy','sendStatus','error','stack','name','send','body','hasOwnProperty','text','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Sequelize','Missing\x20\x27recipients\x27\x20parameter','parse','recipients','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','user','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create','forEach','emit','userNotification:send','catch','Template','findOne','html','render','startCase','User','union','ids','queue','push','all','flatten','map','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x25cc6b,_0x1891e9){var _0x5a1479=function(_0x29c95d){while(--_0x29c95d){_0x25cc6b['push'](_0x25cc6b['shift']());}};_0x5a1479(++_0x1891e9);}(_0xbb34,0x110));var _0x4bb3=function(_0x23d2a0,_0x516174){_0x23d2a0=_0x23d2a0-0x0;var _0x409e80=_0xbb34[_0x23d2a0];return _0x409e80;};'use strict';var emlformat=require(_0x4bb3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4bb3('0x1'));var jsonpatch=require(_0x4bb3('0x2'));var rp=require('request-promise');var moment=require(_0x4bb3('0x3'));var BPromise=require(_0x4bb3('0x4'));var Mustache=require('mustache');var util=require(_0x4bb3('0x5'));var path=require(_0x4bb3('0x6'));var sox=require(_0x4bb3('0x7'));var csv=require('to-csv');var ejs=require(_0x4bb3('0x8'));var fs=require('fs');var fs_extra=require(_0x4bb3('0x9'));var _=require(_0x4bb3('0xa'));var squel=require(_0x4bb3('0xb'));var crypto=require(_0x4bb3('0xc'));var jsforce=require(_0x4bb3('0xd'));var deskjs=require(_0x4bb3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4bb3('0xf'));var Papa=require(_0x4bb3('0x10'));var Redis=require(_0x4bb3('0x11'));var authService=require(_0x4bb3('0x12'));var qs=require(_0x4bb3('0x13'));var as=require(_0x4bb3('0x14'));var hardwareService=require(_0x4bb3('0x15'));var logger=require(_0x4bb3('0x16'))(_0x4bb3('0x17'));var utils=require(_0x4bb3('0x18'));var config=require(_0x4bb3('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x4bb3('0x1a'))['db'];config[_0x4bb3('0x1b')]=_['defaults'](config[_0x4bb3('0x1b')],{'host':_0x4bb3('0x1c'),'port':0x18eb});var socket=require(_0x4bb3('0x1d'))(new Redis(config[_0x4bb3('0x1b')]));require(_0x4bb3('0x1e'))['register'](socket);function respondWithStatusCode(_0x20fea6,_0x490ad3){_0x490ad3=_0x490ad3||0xcc;return function(_0x5338d6){if(_0x5338d6){return _0x20fea6['sendStatus'](_0x490ad3);}return _0x20fea6[_0x4bb3('0x1f')](_0x490ad3)[_0x4bb3('0x20')]();};}function respondWithResult(_0x123440,_0x156eaf){_0x156eaf=_0x156eaf||0xc8;return function(_0xd133bb){if(_0xd133bb){return _0x123440[_0x4bb3('0x1f')](_0x156eaf)[_0x4bb3('0x21')](_0xd133bb);}};}function respondWithFilteredResult(_0x556b08,_0x1b2ec0){return function(_0x19c4a4){if(_0x19c4a4){var _0x2e7620=typeof _0x1b2ec0['offset']===_0x4bb3('0x22')&&typeof _0x1b2ec0['limit']===_0x4bb3('0x22');var _0x4c40d1=_0x19c4a4[_0x4bb3('0x23')];var _0x25944f=_0x2e7620?0x0:_0x1b2ec0[_0x4bb3('0x24')];var _0x3dc38d=_0x2e7620?_0x19c4a4[_0x4bb3('0x23')]:_0x1b2ec0[_0x4bb3('0x24')]+_0x1b2ec0[_0x4bb3('0x25')];var _0x2339b7;if(_0x3dc38d>=_0x4c40d1){_0x3dc38d=_0x4c40d1;_0x2339b7=0xc8;}else{_0x2339b7=0xce;}_0x556b08[_0x4bb3('0x1f')](_0x2339b7);return _0x556b08[_0x4bb3('0x26')](_0x4bb3('0x27'),_0x25944f+'-'+_0x3dc38d+'/'+_0x4c40d1)[_0x4bb3('0x21')](_0x19c4a4);}return null;};}function patchUpdates(_0x423cb4){return function(_0x5966bc){try{jsonpatch['apply'](_0x5966bc,_0x423cb4,!![]);}catch(_0x416874){return BPromise['reject'](_0x416874);}return _0x5966bc[_0x4bb3('0x28')]();};}function saveUpdates(_0x5762e7,_0x1a24e7){return function(_0x52f426){if(_0x52f426){return _0x52f426[_0x4bb3('0x29')](_0x5762e7)[_0x4bb3('0x2a')](function(_0x423135){return _0x423135;});}return null;};}function removeEntity(_0x132c1b,_0x275754){return function(_0x226d68){if(_0x226d68){return _0x226d68[_0x4bb3('0x2b')]()[_0x4bb3('0x2a')](function(){_0x132c1b[_0x4bb3('0x1f')](0xcc)[_0x4bb3('0x20')]();});}};}function handleEntityNotFound(_0x3f6775,_0x1fdc09){return function(_0x44182f){if(!_0x44182f){_0x3f6775[_0x4bb3('0x2c')](0x194);}return _0x44182f;};}function handleError(_0x3a22a1,_0x4d064d){_0x4d064d=_0x4d064d||0x1f4;return function(_0x58281a){logger[_0x4bb3('0x2d')](_0x58281a[_0x4bb3('0x2e')]);if(_0x58281a[_0x4bb3('0x2f')]){delete _0x58281a[_0x4bb3('0x2f')];}_0x3a22a1[_0x4bb3('0x1f')](_0x4d064d)[_0x4bb3('0x30')](_0x58281a);};}exports['sendUserNotification']=function(_0x3d68a0,_0x2f6d59,_0x91e304){if(!_0x3d68a0[_0x4bb3('0x31')][_0x4bb3('0x32')](_0x4bb3('0x33'))&&!_0x3d68a0[_0x4bb3('0x31')]['hasOwnProperty'](_0x4bb3('0x34'))){throw new db['Sequelize'][(_0x4bb3('0x35'))](_0x4bb3('0x36'));}else{if(_0x3d68a0['body'][_0x4bb3('0x32')](_0x4bb3('0x34'))&&!_0x3d68a0[_0x4bb3('0x31')][_0x4bb3('0x32')](_0x4bb3('0x37'))){throw new db[(_0x4bb3('0x38'))]['ValidationError']('Missing\x20\x27view\x27\x20parameter');}if(!_0x3d68a0[_0x4bb3('0x31')]['hasOwnProperty']('recipients')){throw new db[(_0x4bb3('0x38'))][(_0x4bb3('0x35'))](_0x4bb3('0x39'));}else{try{var _0x2b5a50=JSON[_0x4bb3('0x3a')](_0x3d68a0[_0x4bb3('0x31')][_0x4bb3('0x3b')]);}catch(_0x3fe2ee){logger['error'](_0x3fe2ee);throw new db[(_0x4bb3('0x38'))]['ValidationError']('Invalid\x20\x27recipients\x27\x20object');}var _0x216e9a=['chatqueue',_0x4bb3('0x3c'),_0x4bb3('0x3d'),_0x4bb3('0x3e'),_0x4bb3('0x3f'),'voicequeue',_0x4bb3('0x40'),'team',_0x4bb3('0x41')];if(_['some'](_0x2b5a50,function(_0x4dfc21){return!_['includes'](_0x216e9a,_0x4dfc21[_0x4bb3('0x42')][_0x4bb3('0x43')]());})){throw new db[(_0x4bb3('0x38'))]['ValidationError'](_0x4bb3('0x44'));}}}var _0x39edff={};_0x39edff[_0x4bb3('0x45')]=_0x3d68a0[_0x4bb3('0x31')][_0x4bb3('0x32')](_0x4bb3('0x45'))?_0x3d68a0['body'][_0x4bb3('0x45')]:_0x3d68a0[_0x4bb3('0x41')][_0x4bb3('0x46')];_0x39edff[_0x4bb3('0x47')]=_[_0x4bb3('0x48')](_0x3d68a0[_0x4bb3('0x31')]['recipientsDescription'])?null:_0x3d68a0['body']['recipientsDescription'];_0x39edff[_0x4bb3('0x49')]=_0x3d68a0[_0x4bb3('0x31')][_0x4bb3('0x49')]||![];_0x39edff[_0x4bb3('0x4a')]=_0x3d68a0[_0x4bb3('0x41')]['id'];return getContent(_0x3d68a0[_0x4bb3('0x31')])['then'](function(_0xaaaac5){_0x39edff[_0x4bb3('0x31')]=_0xaaaac5;return getRecipients(_0x2b5a50);})['then'](function(_0x46786a){_0x39edff[_0x4bb3('0x4b')]=_[_0x4bb3('0x4c')](_0x46786a)[_0x4bb3('0x4d')](',');return db['sequelize'][_0x4bb3('0x4e')](function(_0x1c8567){return db[_0x4bb3('0x4f')][_0x4bb3('0x50')](_0x39edff,{'raw':!![],'transaction':_0x1c8567})[_0x4bb3('0x2a')](function(_0x420c00){var _0x491c34={'sender':_0x39edff[_0x4bb3('0x45')],'description':_0x39edff['recipientsDescription'],'content':_0x39edff[_0x4bb3('0x31')],'beep':_0x39edff['beep']};_0x46786a[_0x4bb3('0x51')](function(_0x224b85){_0x491c34['recipient']=_0x224b85;socket[_0x4bb3('0x52')](_0x4bb3('0x53'),_0x491c34);});return _0x420c00;});});})['then'](respondWithResult(_0x2f6d59,0xc9))[_0x4bb3('0x54')](handleError(_0x2f6d59,null));};function getContent(_0x5eb469){return new BPromise(function(_0x54d915,_0xba0566){if(_0x5eb469[_0x4bb3('0x33')]){_0x54d915(_0x5eb469[_0x4bb3('0x33')]);return;}return db[_0x4bb3('0x55')][_0x4bb3('0x56')]({'attributes':[_0x4bb3('0x57')],'where':{'id':_0x5eb469['TemplateId']},'raw':!![]})['then'](function(_0x3e176c){if(!_0x3e176c)throw new db[(_0x4bb3('0x38'))][(_0x4bb3('0x35'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x35017d=Mustache[_0x4bb3('0x58')](_0x3e176c['html'],_0x5eb469[_0x4bb3('0x37')]);_0x54d915(_0x35017d);})['catch'](function(_0x2b51b8){_0xba0566(_0x2b51b8);});});}function getRecipients(_0x29f351){return new BPromise(function(_0x2099c3,_0x234bf8){var _0x40b642=[];var _0x5a9c4a=[];_0x29f351[_0x4bb3('0x51')](function(_0x37cbf3){var _0x352ff6=_[_0x4bb3('0x59')](_0x37cbf3[_0x4bb3('0x42')][_0x4bb3('0x43')]());if(_0x352ff6===_0x4bb3('0x5a')){_0x40b642=_[_0x4bb3('0x5b')](_0x40b642,_0x37cbf3[_0x4bb3('0x5c')]);}else{if(_['includes'](_0x352ff6,_0x4bb3('0x5d')))_0x352ff6=_0x352ff6['replace'](_0x4bb3('0x5d'),'Queue');_0x37cbf3['ids']['forEach'](function(_0x3b3b8f){_0x5a9c4a[_0x4bb3('0x5e')](getAgents(_0x352ff6,_0x3b3b8f));});}});return BPromise[_0x4bb3('0x5f')](_0x5a9c4a)[_0x4bb3('0x2a')](function(_0x254bab){_0x40b642=_[_0x4bb3('0x5b')](_0x40b642,_[_0x4bb3('0x60')](_0x254bab));_0x2099c3(_0x40b642);})['catch'](function(_0xf42c3e){_0x234bf8(_0xf42c3e);});});}function getAgents(_0x635c99,_0x3d738e){return new BPromise(function(_0x3d67f3,_0x557dbb){return db[_0x635c99][_0x4bb3('0x56')]({'where':{'id':_0x3d738e}})[_0x4bb3('0x2a')](function(_0x4e9297){return _0x4e9297['getAgents']({'attributes':['id'],'raw':!![]})[_0x4bb3('0x2a')](function(_0x52815f){var _0x149c4d=_[_0x4bb3('0x61')](_0x52815f,'id');_0x3d67f3(_0x149c4d);});})['catch'](function(_0x28dabc){_0x557dbb(_0x28dabc);});});}