6306d4e8a310174b6a60cfac0313956dafc91d0c
[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 _0xd209=['to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./userNotification.socket','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','includes','model','toLowerCase','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','emit','Template','findOne','TemplateId','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','User','union','ids','queue','replace','push','all','flatten','catch','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox'];(function(_0x307ded,_0x175553){var _0x32ccff=function(_0x7f77db){while(--_0x7f77db){_0x307ded['push'](_0x307ded['shift']());}};_0x32ccff(++_0x175553);}(_0xd209,0x12f));var _0x9d20=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xd209[_0x37c22c];return _0x119d79;};'use strict';var emlformat=require(_0x9d20('0x0'));var rimraf=require(_0x9d20('0x1'));var zipdir=require(_0x9d20('0x2'));var jsonpatch=require(_0x9d20('0x3'));var rp=require(_0x9d20('0x4'));var moment=require('moment');var BPromise=require(_0x9d20('0x5'));var Mustache=require(_0x9d20('0x6'));var util=require('util');var path=require(_0x9d20('0x7'));var sox=require(_0x9d20('0x8'));var csv=require(_0x9d20('0x9'));var ejs=require(_0x9d20('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d20('0xb'));var squel=require(_0x9d20('0xc'));var crypto=require('crypto');var jsforce=require(_0x9d20('0xd'));var deskjs=require(_0x9d20('0xe'));var toCsv=require(_0x9d20('0x9'));var querystring=require(_0x9d20('0xf'));var Papa=require('papaparse');var Redis=require(_0x9d20('0x10'));var authService=require(_0x9d20('0x11'));var qs=require(_0x9d20('0x12'));var as=require(_0x9d20('0x13'));var hardwareService=require(_0x9d20('0x14'));var logger=require(_0x9d20('0x15'))(_0x9d20('0x16'));var utils=require(_0x9d20('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9d20('0x18'));var db=require('../../mysqldb')['db'];config[_0x9d20('0x19')]=_[_0x9d20('0x1a')](config[_0x9d20('0x19')],{'host':_0x9d20('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9d20('0x19')]));require(_0x9d20('0x1c'))['register'](socket);function respondWithStatusCode(_0x237faa,_0x55d41d){_0x55d41d=_0x55d41d||0xcc;return function(_0x7c6518){if(_0x7c6518){return _0x237faa[_0x9d20('0x1d')](_0x55d41d);}return _0x237faa[_0x9d20('0x1e')](_0x55d41d)[_0x9d20('0x1f')]();};}function respondWithResult(_0x5ef3ab,_0x4efa58){_0x4efa58=_0x4efa58||0xc8;return function(_0x1b6ceb){if(_0x1b6ceb){return _0x5ef3ab[_0x9d20('0x1e')](_0x4efa58)[_0x9d20('0x20')](_0x1b6ceb);}};}function respondWithFilteredResult(_0x285383,_0x39fd1c){return function(_0x1e71f9){if(_0x1e71f9){var _0x2a144f=typeof _0x39fd1c[_0x9d20('0x21')]===_0x9d20('0x22')&&typeof _0x39fd1c[_0x9d20('0x23')]==='undefined';var _0x53cc4d=_0x1e71f9['count'];var _0x18e102=_0x2a144f?0x0:_0x39fd1c[_0x9d20('0x21')];var _0x32438a=_0x2a144f?_0x1e71f9['count']:_0x39fd1c['offset']+_0x39fd1c[_0x9d20('0x23')];var _0x331885;if(_0x32438a>=_0x53cc4d){_0x32438a=_0x53cc4d;_0x331885=0xc8;}else{_0x331885=0xce;}_0x285383[_0x9d20('0x1e')](_0x331885);return _0x285383[_0x9d20('0x24')](_0x9d20('0x25'),_0x18e102+'-'+_0x32438a+'/'+_0x53cc4d)[_0x9d20('0x20')](_0x1e71f9);}return null;};}function patchUpdates(_0x35733f){return function(_0x53de4d){try{jsonpatch[_0x9d20('0x26')](_0x53de4d,_0x35733f,!![]);}catch(_0x4552ef){return BPromise[_0x9d20('0x27')](_0x4552ef);}return _0x53de4d[_0x9d20('0x28')]();};}function saveUpdates(_0x1cead5,_0x577cff){return function(_0x499627){if(_0x499627){return _0x499627[_0x9d20('0x29')](_0x1cead5)[_0x9d20('0x2a')](function(_0x4955d6){return _0x4955d6;});}return null;};}function removeEntity(_0x350921,_0x26c8a3){return function(_0x3ebad2){if(_0x3ebad2){return _0x3ebad2[_0x9d20('0x2b')]()[_0x9d20('0x2a')](function(){_0x350921[_0x9d20('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ff1d8,_0x4510af){return function(_0x1cf078){if(!_0x1cf078){_0x2ff1d8[_0x9d20('0x1d')](0x194);}return _0x1cf078;};}function handleError(_0x56d4af,_0x318948){_0x318948=_0x318948||0x1f4;return function(_0x759020){logger[_0x9d20('0x2c')](_0x759020[_0x9d20('0x2d')]);if(_0x759020[_0x9d20('0x2e')]){delete _0x759020[_0x9d20('0x2e')];}_0x56d4af['status'](_0x318948)[_0x9d20('0x2f')](_0x759020);};}exports[_0x9d20('0x30')]=function(_0x587bb0,_0x38d577,_0x1769d3){if(!_0x587bb0[_0x9d20('0x31')][_0x9d20('0x32')](_0x9d20('0x33'))&&!_0x587bb0['body'][_0x9d20('0x32')]('TemplateId')){throw new db[(_0x9d20('0x34'))]['ValidationError'](_0x9d20('0x35'));}else{if(_0x587bb0[_0x9d20('0x31')][_0x9d20('0x32')]('TemplateId')&&!_0x587bb0[_0x9d20('0x31')][_0x9d20('0x32')](_0x9d20('0x36'))){throw new db[(_0x9d20('0x34'))][(_0x9d20('0x37'))](_0x9d20('0x38'));}if(!_0x587bb0[_0x9d20('0x31')]['hasOwnProperty'](_0x9d20('0x39'))){throw new db[(_0x9d20('0x34'))]['ValidationError'](_0x9d20('0x3a'));}else{try{var _0x439c15=JSON[_0x9d20('0x3b')](_0x587bb0[_0x9d20('0x31')][_0x9d20('0x39')]);}catch(_0x193aba){logger[_0x9d20('0x2c')](_0x193aba);throw new db[(_0x9d20('0x34'))][(_0x9d20('0x37'))](_0x9d20('0x3c'));}var _0x59e7ef=[_0x9d20('0x3d'),_0x9d20('0x3e'),'mailqueue',_0x9d20('0x3f'),_0x9d20('0x40'),_0x9d20('0x41'),_0x9d20('0x42'),_0x9d20('0x43'),_0x9d20('0x44')];if(_['some'](_0x439c15,function(_0x401390){return!_[_0x9d20('0x45')](_0x59e7ef,_0x401390[_0x9d20('0x46')][_0x9d20('0x47')]());})){throw new db[(_0x9d20('0x34'))][(_0x9d20('0x37'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x32c682={};_0x32c682[_0x9d20('0x48')]=_0x587bb0['body'][_0x9d20('0x32')](_0x9d20('0x48'))?_0x587bb0[_0x9d20('0x31')]['senderName']:_0x587bb0[_0x9d20('0x44')][_0x9d20('0x49')];_0x32c682['recipientsDescription']=_[_0x9d20('0x4a')](_0x587bb0[_0x9d20('0x31')][_0x9d20('0x4b')])?null:_0x587bb0['body']['recipientsDescription'];_0x32c682[_0x9d20('0x4c')]=_0x587bb0[_0x9d20('0x31')]['beep']||![];_0x32c682[_0x9d20('0x4d')]=_0x587bb0[_0x9d20('0x44')]['id'];return getContent(_0x587bb0[_0x9d20('0x31')])[_0x9d20('0x2a')](function(_0x35f005){_0x32c682[_0x9d20('0x31')]=_0x35f005;return getRecipients(_0x439c15);})['then'](function(_0x47469d){_0x32c682[_0x9d20('0x4e')]=_[_0x9d20('0x4f')](_0x47469d)[_0x9d20('0x50')](',');return db[_0x9d20('0x51')][_0x9d20('0x52')](function(_0x137565){return db[_0x9d20('0x53')][_0x9d20('0x54')](_0x32c682,{'raw':!![],'transaction':_0x137565})[_0x9d20('0x2a')](function(_0x23ddd6){var _0x24f316={'sender':_0x32c682[_0x9d20('0x48')],'description':_0x32c682['recipientsDescription'],'content':_0x32c682['body'],'beep':_0x32c682[_0x9d20('0x4c')]};_0x47469d[_0x9d20('0x55')](function(_0x578219){_0x24f316['recipient']=_0x578219;socket[_0x9d20('0x56')]('userNotification:send',_0x24f316);});return _0x23ddd6;});});})[_0x9d20('0x2a')](respondWithResult(_0x38d577,0xc9))['catch'](handleError(_0x38d577,null));};function getContent(_0x45120c){return new BPromise(function(_0x222611,_0x2ae0f2){if(_0x45120c['text']){_0x222611(_0x45120c[_0x9d20('0x33')]);return;}return db[_0x9d20('0x57')][_0x9d20('0x58')]({'attributes':['html'],'where':{'id':_0x45120c[_0x9d20('0x59')]},'raw':!![]})[_0x9d20('0x2a')](function(_0x46dbf0){if(!_0x46dbf0)throw new db['Sequelize'][(_0x9d20('0x37'))](_0x9d20('0x5a'));var _0x1acfef=Mustache[_0x9d20('0x5b')](_0x46dbf0['html'],_0x45120c[_0x9d20('0x36')]);_0x222611(_0x1acfef);})['catch'](function(_0x502d97){_0x2ae0f2(_0x502d97);});});}function getRecipients(_0x5002f2){return new BPromise(function(_0x54b6ce,_0x97c948){var _0x2f6c17=[];var _0x504924=[];_0x5002f2[_0x9d20('0x55')](function(_0x1305f5){var _0x28cbbe=_[_0x9d20('0x5c')](_0x1305f5[_0x9d20('0x46')][_0x9d20('0x47')]());if(_0x28cbbe===_0x9d20('0x5d')){_0x2f6c17=_[_0x9d20('0x5e')](_0x2f6c17,_0x1305f5[_0x9d20('0x5f')]);}else{if(_[_0x9d20('0x45')](_0x28cbbe,_0x9d20('0x60')))_0x28cbbe=_0x28cbbe[_0x9d20('0x61')]('queue','Queue');_0x1305f5[_0x9d20('0x5f')][_0x9d20('0x55')](function(_0x5aff6c){_0x504924[_0x9d20('0x62')](getAgents(_0x28cbbe,_0x5aff6c));});}});return BPromise[_0x9d20('0x63')](_0x504924)[_0x9d20('0x2a')](function(_0x2131b3){_0x2f6c17=_[_0x9d20('0x5e')](_0x2f6c17,_[_0x9d20('0x64')](_0x2131b3));_0x54b6ce(_0x2f6c17);})[_0x9d20('0x65')](function(_0xf5ff0f){_0x97c948(_0xf5ff0f);});});}function getAgents(_0x57bc3c,_0x423153){return new BPromise(function(_0x2b789f,_0x24401f){return db[_0x57bc3c][_0x9d20('0x58')]({'where':{'id':_0x423153}})['then'](function(_0x29e5eb){return _0x29e5eb[_0x9d20('0x66')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2c3e52){var _0xc1a83e=_[_0x9d20('0x67')](_0x2c3e52,'id');_0x2b789f(_0xc1a83e);});})['catch'](function(_0xa6d825){_0x24401f(_0xa6d825);});});}