bec2e86d229d24d488b38b7817f0afe6f65db234
[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 _0x57b5=['user','some','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','join','sequelize','transaction','UserNotification','create','recipient','emit','userNotification:send','catch','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','forEach','User','union','ids','queue','replace','Queue','push','all','flatten','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','sendStatus','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\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','error','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0x57b5,0x14c));var _0x557b=function(_0x3d89ce,_0x5d5e4b){_0x3d89ce=_0x3d89ce-0x0;var _0x494a2e=_0x57b5[_0x3d89ce];return _0x494a2e;};'use strict';var emlformat=require(_0x557b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x557b('0x1'));var jsonpatch=require(_0x557b('0x2'));var rp=require('request-promise');var moment=require(_0x557b('0x3'));var BPromise=require(_0x557b('0x4'));var Mustache=require(_0x557b('0x5'));var util=require(_0x557b('0x6'));var path=require(_0x557b('0x7'));var sox=require(_0x557b('0x8'));var csv=require('to-csv');var ejs=require(_0x557b('0x9'));var fs=require('fs');var fs_extra=require(_0x557b('0xa'));var _=require(_0x557b('0xb'));var squel=require(_0x557b('0xc'));var crypto=require(_0x557b('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x557b('0xe'));var querystring=require('querystring');var Papa=require(_0x557b('0xf'));var Redis=require('ioredis');var authService=require(_0x557b('0x10'));var qs=require(_0x557b('0x11'));var as=require(_0x557b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x557b('0x13'))(_0x557b('0x14'));var utils=require(_0x557b('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x557b('0x16'));var db=require(_0x557b('0x17'))['db'];config[_0x557b('0x18')]=_['defaults'](config[_0x557b('0x18')],{'host':_0x557b('0x19'),'port':0x18eb});var socket=require(_0x557b('0x1a'))(new Redis(config['redis']));require('./userNotification.socket')[_0x557b('0x1b')](socket);function respondWithStatusCode(_0x2c9d94,_0x311ce7){_0x311ce7=_0x311ce7||0xcc;return function(_0x8d28d2){if(_0x8d28d2){return _0x2c9d94['sendStatus'](_0x311ce7);}return _0x2c9d94[_0x557b('0x1c')](_0x311ce7)[_0x557b('0x1d')]();};}function respondWithResult(_0x291fa1,_0x3be161){_0x3be161=_0x3be161||0xc8;return function(_0x2ce66b){if(_0x2ce66b){return _0x291fa1[_0x557b('0x1c')](_0x3be161)[_0x557b('0x1e')](_0x2ce66b);}};}function respondWithFilteredResult(_0xc5e5c2,_0x28251f){return function(_0x1ff48c){if(_0x1ff48c){var _0x34018c=typeof _0x28251f[_0x557b('0x1f')]===_0x557b('0x20')&&typeof _0x28251f[_0x557b('0x21')]===_0x557b('0x20');var _0x21f7ae=_0x1ff48c[_0x557b('0x22')];var _0x261c75=_0x34018c?0x0:_0x28251f[_0x557b('0x1f')];var _0xdb9db1=_0x34018c?_0x1ff48c['count']:_0x28251f[_0x557b('0x1f')]+_0x28251f[_0x557b('0x21')];var _0x2f6424;if(_0xdb9db1>=_0x21f7ae){_0xdb9db1=_0x21f7ae;_0x2f6424=0xc8;}else{_0x2f6424=0xce;}_0xc5e5c2[_0x557b('0x1c')](_0x2f6424);return _0xc5e5c2['set'](_0x557b('0x23'),_0x261c75+'-'+_0xdb9db1+'/'+_0x21f7ae)['json'](_0x1ff48c);}return null;};}function patchUpdates(_0x7afa0f){return function(_0x3e05f1){try{jsonpatch[_0x557b('0x24')](_0x3e05f1,_0x7afa0f,!![]);}catch(_0x152ab8){return BPromise[_0x557b('0x25')](_0x152ab8);}return _0x3e05f1['save']();};}function saveUpdates(_0x564268,_0x4cbba0){return function(_0x50cff2){if(_0x50cff2){return _0x50cff2[_0x557b('0x26')](_0x564268)[_0x557b('0x27')](function(_0x2ff8c1){return _0x2ff8c1;});}return null;};}function removeEntity(_0xcc7d21,_0x2de53a){return function(_0x5adb6a){if(_0x5adb6a){return _0x5adb6a['destroy']()['then'](function(){_0xcc7d21[_0x557b('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d8514,_0xa693ad){return function(_0x5d50a2){if(!_0x5d50a2){_0x4d8514[_0x557b('0x28')](0x194);}return _0x5d50a2;};}function handleError(_0x43dc82,_0xdc7b88){_0xdc7b88=_0xdc7b88||0x1f4;return function(_0x5206a7){logger['error'](_0x5206a7[_0x557b('0x29')]);if(_0x5206a7[_0x557b('0x2a')]){delete _0x5206a7[_0x557b('0x2a')];}_0x43dc82[_0x557b('0x1c')](_0xdc7b88)[_0x557b('0x2b')](_0x5206a7);};}exports['sendUserNotification']=function(_0x47c733,_0x702c18,_0x35991d){if(!_0x47c733[_0x557b('0x2c')][_0x557b('0x2d')](_0x557b('0x2e'))&&!_0x47c733[_0x557b('0x2c')][_0x557b('0x2d')](_0x557b('0x2f'))){throw new db['Sequelize'][(_0x557b('0x30'))](_0x557b('0x31'));}else{if(_0x47c733[_0x557b('0x2c')][_0x557b('0x2d')](_0x557b('0x2f'))&&!_0x47c733[_0x557b('0x2c')][_0x557b('0x2d')](_0x557b('0x32'))){throw new db[(_0x557b('0x33'))][(_0x557b('0x30'))](_0x557b('0x34'));}if(!_0x47c733[_0x557b('0x2c')]['hasOwnProperty'](_0x557b('0x35'))){throw new db[(_0x557b('0x33'))][(_0x557b('0x30'))](_0x557b('0x36'));}else{try{var _0x2c3fdc=JSON['parse'](_0x47c733[_0x557b('0x2c')]['recipients']);}catch(_0x44f715){logger[_0x557b('0x37')](_0x44f715);throw new db['Sequelize']['ValidationError'](_0x557b('0x38'));}var _0xb129ee=[_0x557b('0x39'),_0x557b('0x3a'),_0x557b('0x3b'),_0x557b('0x3c'),_0x557b('0x3d'),_0x557b('0x3e'),_0x557b('0x3f'),'team',_0x557b('0x40')];if(_[_0x557b('0x41')](_0x2c3fdc,function(_0x395608){return!_['includes'](_0xb129ee,_0x395608[_0x557b('0x42')][_0x557b('0x43')]());})){throw new db[(_0x557b('0x33'))][(_0x557b('0x30'))](_0x557b('0x44'));}}}var _0x3fd415={};_0x3fd415[_0x557b('0x45')]=_0x47c733['body'][_0x557b('0x2d')](_0x557b('0x45'))?_0x47c733[_0x557b('0x2c')][_0x557b('0x45')]:_0x47c733[_0x557b('0x40')][_0x557b('0x46')];_0x3fd415['recipientsDescription']=_[_0x557b('0x47')](_0x47c733[_0x557b('0x2c')]['recipientsDescription'])?null:_0x47c733['body'][_0x557b('0x48')];_0x3fd415[_0x557b('0x49')]=_0x47c733[_0x557b('0x2c')][_0x557b('0x49')]||![];_0x3fd415[_0x557b('0x4a')]=_0x47c733[_0x557b('0x40')]['id'];return getContent(_0x47c733[_0x557b('0x2c')])[_0x557b('0x27')](function(_0x1ddea2){_0x3fd415[_0x557b('0x2c')]=_0x1ddea2;return getRecipients(_0x2c3fdc);})['then'](function(_0x585725){_0x3fd415['recipientsId']=_['sortBy'](_0x585725)[_0x557b('0x4b')](',');return db[_0x557b('0x4c')][_0x557b('0x4d')](function(_0x6d781c){return db[_0x557b('0x4e')][_0x557b('0x4f')](_0x3fd415,{'raw':!![],'transaction':_0x6d781c})[_0x557b('0x27')](function(_0x34c584){var _0x278982={'sender':_0x3fd415[_0x557b('0x45')],'description':_0x3fd415[_0x557b('0x48')],'content':_0x3fd415['body'],'beep':_0x3fd415[_0x557b('0x49')]};_0x585725['forEach'](function(_0x3f9207){_0x278982[_0x557b('0x50')]=_0x3f9207;socket[_0x557b('0x51')](_0x557b('0x52'),_0x278982);});return _0x34c584;});});})[_0x557b('0x27')](respondWithResult(_0x702c18,0xc9))[_0x557b('0x53')](handleError(_0x702c18,null));};function getContent(_0xa21ecc){return new BPromise(function(_0x4af473,_0xd8f88f){if(_0xa21ecc['text']){_0x4af473(_0xa21ecc[_0x557b('0x2e')]);return;}return db['Template'][_0x557b('0x54')]({'attributes':[_0x557b('0x55')],'where':{'id':_0xa21ecc[_0x557b('0x2f')]},'raw':!![]})[_0x557b('0x27')](function(_0x5e6eac){if(!_0x5e6eac)throw new db['Sequelize'][(_0x557b('0x30'))](_0x557b('0x56'));var _0x1486fd=Mustache[_0x557b('0x57')](_0x5e6eac[_0x557b('0x55')],_0xa21ecc[_0x557b('0x32')]);_0x4af473(_0x1486fd);})[_0x557b('0x53')](function(_0x5d8d38){_0xd8f88f(_0x5d8d38);});});}function getRecipients(_0x54437e){return new BPromise(function(_0x12e77b,_0x51bfde){var _0x1f5937=[];var _0x7d28e6=[];_0x54437e[_0x557b('0x58')](function(_0x4d4104){var _0x2ae0fc=_['startCase'](_0x4d4104[_0x557b('0x42')][_0x557b('0x43')]());if(_0x2ae0fc===_0x557b('0x59')){_0x1f5937=_[_0x557b('0x5a')](_0x1f5937,_0x4d4104[_0x557b('0x5b')]);}else{if(_['includes'](_0x2ae0fc,_0x557b('0x5c')))_0x2ae0fc=_0x2ae0fc[_0x557b('0x5d')](_0x557b('0x5c'),_0x557b('0x5e'));_0x4d4104['ids'][_0x557b('0x58')](function(_0x312975){_0x7d28e6[_0x557b('0x5f')](getAgents(_0x2ae0fc,_0x312975));});}});return BPromise[_0x557b('0x60')](_0x7d28e6)['then'](function(_0xfa74d9){_0x1f5937=_['union'](_0x1f5937,_[_0x557b('0x61')](_0xfa74d9));_0x12e77b(_0x1f5937);})['catch'](function(_0x20dcd7){_0x51bfde(_0x20dcd7);});});}function getAgents(_0x42b50f,_0x3ce104){return new BPromise(function(_0x23a25b,_0x4854dc){return db[_0x42b50f][_0x557b('0x54')]({'where':{'id':_0x3ce104}})[_0x557b('0x27')](function(_0xa919d0){return _0xa919d0[_0x557b('0x62')]({'attributes':['id'],'raw':!![]})[_0x557b('0x27')](function(_0x3592a7){var _0x44486e=_['map'](_0x3592a7,'id');_0x23a25b(_0x44486e);});})[_0x557b('0x53')](function(_0x27967a){_0x4854dc(_0x27967a);});});}