9a322347e59353888208b4f652dc31a923ae6009
[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 _0x3d0e=['api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./userNotification.socket','register','sendStatus','status','end','offset','undefined','count','limit','json','apply','reject','update','then','error','stack','name','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','recipients','chatqueue','faxqueue','openchannelqueue','voicequeue','team','user','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','recipientsId','sortBy','join','transaction','UserNotification','create','forEach','recipient','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','ids','queue','Queue','push','union','flatten','findOne','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x4c9220,_0x29ca2f){var _0x54142c=function(_0x1f17db){while(--_0x1f17db){_0x4c9220['push'](_0x4c9220['shift']());}};_0x54142c(++_0x29ca2f);}(_0x3d0e,0x165));var _0xe3d0=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x3d0e[_0x134c2e];return _0x2825db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe3d0('0x0'));var zipdir=require(_0xe3d0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe3d0('0x2'));var moment=require(_0xe3d0('0x3'));var BPromise=require(_0xe3d0('0x4'));var Mustache=require('mustache');var util=require(_0xe3d0('0x5'));var path=require(_0xe3d0('0x6'));var sox=require(_0xe3d0('0x7'));var csv=require(_0xe3d0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe3d0('0x9'));var _=require(_0xe3d0('0xa'));var squel=require(_0xe3d0('0xb'));var crypto=require(_0xe3d0('0xc'));var jsforce=require(_0xe3d0('0xd'));var deskjs=require(_0xe3d0('0xe'));var toCsv=require(_0xe3d0('0x8'));var querystring=require(_0xe3d0('0xf'));var Papa=require(_0xe3d0('0x10'));var Redis=require(_0xe3d0('0x11'));var authService=require(_0xe3d0('0x12'));var qs=require(_0xe3d0('0x13'));var as=require(_0xe3d0('0x14'));var hardwareService=require(_0xe3d0('0x15'));var logger=require(_0xe3d0('0x16'))(_0xe3d0('0x17'));var utils=require('../../config/utils');var config=require(_0xe3d0('0x18'));var licenseUtil=require(_0xe3d0('0x19'));var db=require(_0xe3d0('0x1a'))['db'];config[_0xe3d0('0x1b')]=_[_0xe3d0('0x1c')](config[_0xe3d0('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe3d0('0x1b')]));require(_0xe3d0('0x1d'))[_0xe3d0('0x1e')](socket);function respondWithStatusCode(_0x3f6bcd,_0x46e206){_0x46e206=_0x46e206||0xcc;return function(_0x400ca2){if(_0x400ca2){return _0x3f6bcd[_0xe3d0('0x1f')](_0x46e206);}return _0x3f6bcd[_0xe3d0('0x20')](_0x46e206)[_0xe3d0('0x21')]();};}function respondWithResult(_0x1a0d12,_0x40c2d7){_0x40c2d7=_0x40c2d7||0xc8;return function(_0x242e17){if(_0x242e17){return _0x1a0d12[_0xe3d0('0x20')](_0x40c2d7)['json'](_0x242e17);}};}function respondWithFilteredResult(_0x1653ea,_0x2e84dc){return function(_0x28e6f5){if(_0x28e6f5){var _0x2a00d6=typeof _0x2e84dc[_0xe3d0('0x22')]===_0xe3d0('0x23')&&typeof _0x2e84dc['limit']===_0xe3d0('0x23');var _0x57d23d=_0x28e6f5[_0xe3d0('0x24')];var _0x2f2999=_0x2a00d6?0x0:_0x2e84dc[_0xe3d0('0x22')];var _0xa547f2=_0x2a00d6?_0x28e6f5['count']:_0x2e84dc[_0xe3d0('0x22')]+_0x2e84dc[_0xe3d0('0x25')];var _0x350098;if(_0xa547f2>=_0x57d23d){_0xa547f2=_0x57d23d;_0x350098=0xc8;}else{_0x350098=0xce;}_0x1653ea[_0xe3d0('0x20')](_0x350098);return _0x1653ea['set']('Content-Range',_0x2f2999+'-'+_0xa547f2+'/'+_0x57d23d)[_0xe3d0('0x26')](_0x28e6f5);}return null;};}function patchUpdates(_0x3bb105){return function(_0x4b42e1){try{jsonpatch[_0xe3d0('0x27')](_0x4b42e1,_0x3bb105,!![]);}catch(_0x19c33a){return BPromise[_0xe3d0('0x28')](_0x19c33a);}return _0x4b42e1['save']();};}function saveUpdates(_0x1cd8e8,_0x49a5ec){return function(_0x334fa7){if(_0x334fa7){return _0x334fa7[_0xe3d0('0x29')](_0x1cd8e8)[_0xe3d0('0x2a')](function(_0x50b405){return _0x50b405;});}return null;};}function removeEntity(_0x67fe78,_0x35dddc){return function(_0x2d458d){if(_0x2d458d){return _0x2d458d['destroy']()[_0xe3d0('0x2a')](function(){_0x67fe78[_0xe3d0('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5385bd,_0xae20f5){return function(_0x34b6d3){if(!_0x34b6d3){_0x5385bd['sendStatus'](0x194);}return _0x34b6d3;};}function handleError(_0x1c302b,_0x729928){_0x729928=_0x729928||0x1f4;return function(_0x64b087){logger[_0xe3d0('0x2b')](_0x64b087[_0xe3d0('0x2c')]);if(_0x64b087[_0xe3d0('0x2d')]){delete _0x64b087[_0xe3d0('0x2d')];}_0x1c302b[_0xe3d0('0x20')](_0x729928)['send'](_0x64b087);};}exports[_0xe3d0('0x2e')]=function(_0x5a822d,_0x8d2e27,_0x272a0e){if(!_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x30')](_0xe3d0('0x31'))&&!_0x5a822d['body'][_0xe3d0('0x30')](_0xe3d0('0x32'))){throw new db[(_0xe3d0('0x33'))][(_0xe3d0('0x34'))](_0xe3d0('0x35'));}else{if(_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x30')]('TemplateId')&&!_0x5a822d['body'][_0xe3d0('0x30')](_0xe3d0('0x36'))){throw new db['Sequelize']['ValidationError'](_0xe3d0('0x37'));}if(!_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x30')]('recipients')){throw new db[(_0xe3d0('0x33'))][(_0xe3d0('0x34'))](_0xe3d0('0x38'));}else{try{var _0x5e32bc=JSON['parse'](_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x39')]);}catch(_0x2096f1){logger['error'](_0x2096f1);throw new db[(_0xe3d0('0x33'))][(_0xe3d0('0x34'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x22d64b=[_0xe3d0('0x3a'),_0xe3d0('0x3b'),'mailqueue',_0xe3d0('0x3c'),'smsqueue',_0xe3d0('0x3d'),'whatsappqueue',_0xe3d0('0x3e'),_0xe3d0('0x3f')];if(_['some'](_0x5e32bc,function(_0x2b4ff2){return!_[_0xe3d0('0x40')](_0x22d64b,_0x2b4ff2[_0xe3d0('0x41')][_0xe3d0('0x42')]());})){throw new db[(_0xe3d0('0x33'))][(_0xe3d0('0x34'))](_0xe3d0('0x43'));}}}var _0xbc7e49={};_0xbc7e49[_0xe3d0('0x44')]=_0x5a822d[_0xe3d0('0x2f')]['hasOwnProperty'](_0xe3d0('0x44'))?_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x44')]:_0x5a822d[_0xe3d0('0x3f')][_0xe3d0('0x45')];_0xbc7e49['recipientsDescription']=_[_0xe3d0('0x46')](_0x5a822d['body'][_0xe3d0('0x47')])?null:_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x47')];_0xbc7e49[_0xe3d0('0x48')]=_0x5a822d[_0xe3d0('0x2f')][_0xe3d0('0x48')]||![];_0xbc7e49['SenderId']=_0x5a822d[_0xe3d0('0x3f')]['id'];return getContent(_0x5a822d[_0xe3d0('0x2f')])[_0xe3d0('0x2a')](function(_0x36c3bb){_0xbc7e49[_0xe3d0('0x2f')]=_0x36c3bb;return getRecipients(_0x5e32bc);})['then'](function(_0x5152d7){_0xbc7e49[_0xe3d0('0x49')]=_[_0xe3d0('0x4a')](_0x5152d7)[_0xe3d0('0x4b')](',');return db['sequelize'][_0xe3d0('0x4c')](function(_0x1888fc){return db[_0xe3d0('0x4d')][_0xe3d0('0x4e')](_0xbc7e49,{'raw':!![],'transaction':_0x1888fc})['then'](function(_0x564de1){var _0x348d52={'sender':_0xbc7e49[_0xe3d0('0x44')],'description':_0xbc7e49['recipientsDescription'],'content':_0xbc7e49[_0xe3d0('0x2f')],'beep':_0xbc7e49[_0xe3d0('0x48')]};_0x5152d7[_0xe3d0('0x4f')](function(_0x5ecf1d){_0x348d52[_0xe3d0('0x50')]=_0x5ecf1d;socket['emit']('userNotification:send',_0x348d52);});return _0x564de1;});});})[_0xe3d0('0x2a')](respondWithResult(_0x8d2e27,0xc9))['catch'](handleError(_0x8d2e27,null));};function getContent(_0x2df07f){return new BPromise(function(_0x2eb06a,_0x3083b7){if(_0x2df07f['text']){_0x2eb06a(_0x2df07f['text']);return;}return db[_0xe3d0('0x51')]['findOne']({'attributes':[_0xe3d0('0x52')],'where':{'id':_0x2df07f[_0xe3d0('0x32')]},'raw':!![]})[_0xe3d0('0x2a')](function(_0x27a501){if(!_0x27a501)throw new db['Sequelize'][(_0xe3d0('0x34'))](_0xe3d0('0x53'));var _0x1f375e=Mustache[_0xe3d0('0x54')](_0x27a501[_0xe3d0('0x52')],_0x2df07f[_0xe3d0('0x36')]);_0x2eb06a(_0x1f375e);})[_0xe3d0('0x55')](function(_0x512b0d){_0x3083b7(_0x512b0d);});});}function getRecipients(_0x378b7d){return new BPromise(function(_0x5b632f,_0x40ca2a){var _0x5c81c6=[];var _0x2e1894=[];_0x378b7d['forEach'](function(_0x14c3f2){var _0x4e42e7=_[_0xe3d0('0x56')](_0x14c3f2[_0xe3d0('0x41')][_0xe3d0('0x42')]());if(_0x4e42e7==='User'){_0x5c81c6=_['union'](_0x5c81c6,_0x14c3f2[_0xe3d0('0x57')]);}else{if(_[_0xe3d0('0x40')](_0x4e42e7,_0xe3d0('0x58')))_0x4e42e7=_0x4e42e7['replace'](_0xe3d0('0x58'),_0xe3d0('0x59'));_0x14c3f2[_0xe3d0('0x57')]['forEach'](function(_0x5b9850){_0x2e1894[_0xe3d0('0x5a')](getAgents(_0x4e42e7,_0x5b9850));});}});return BPromise['all'](_0x2e1894)[_0xe3d0('0x2a')](function(_0x5c8981){_0x5c81c6=_[_0xe3d0('0x5b')](_0x5c81c6,_[_0xe3d0('0x5c')](_0x5c8981));_0x5b632f(_0x5c81c6);})[_0xe3d0('0x55')](function(_0x17111e){_0x40ca2a(_0x17111e);});});}function getAgents(_0x51e841,_0x57cba3){return new BPromise(function(_0x474eb1,_0x5d467b){return db[_0x51e841][_0xe3d0('0x5d')]({'where':{'id':_0x57cba3}})['then'](function(_0x367441){return _0x367441[_0xe3d0('0x5e')]({'attributes':['id'],'raw':!![]})[_0xe3d0('0x2a')](function(_0x5bb78){var _0x336453=_['map'](_0x5bb78,'id');_0x474eb1(_0x336453);});})['catch'](function(_0x530a0f){_0x5d467b(_0x530a0f);});});}