1f226ae51329fd5893da3625faaa72d38ace8448
[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 _0x9c55=['sendStatus','end','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','send','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','user','recipientsDescription','isEmpty','beep','recipientsId','join','sequelize','transaction','UserNotification','create','recipient','emit','userNotification:send','catch','text','Template','findOne','html','render','forEach','startCase','User','ids','queue','replace','push','all','union','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x565fed,_0xb85768){var _0x3e018f=function(_0x104d8e){while(--_0x104d8e){_0x565fed['push'](_0x565fed['shift']());}};_0x3e018f(++_0xb85768);}(_0x9c55,0x179));var _0x59c5=function(_0x270dba,_0x1817d2){_0x270dba=_0x270dba-0x0;var _0x36b83b=_0x9c55[_0x270dba];return _0x36b83b;};'use strict';var emlformat=require(_0x59c5('0x0'));var rimraf=require(_0x59c5('0x1'));var zipdir=require(_0x59c5('0x2'));var jsonpatch=require(_0x59c5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x59c5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x59c5('0x5'));var sox=require(_0x59c5('0x6'));var csv=require(_0x59c5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x59c5('0x8'));var _=require(_0x59c5('0x9'));var squel=require(_0x59c5('0xa'));var crypto=require(_0x59c5('0xb'));var jsforce=require(_0x59c5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x59c5('0x7'));var querystring=require(_0x59c5('0xd'));var Papa=require('papaparse');var Redis=require(_0x59c5('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x59c5('0xf'));var as=require(_0x59c5('0x10'));var hardwareService=require(_0x59c5('0x11'));var logger=require(_0x59c5('0x12'))(_0x59c5('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x59c5('0x14'));var db=require(_0x59c5('0x15'))['db'];config[_0x59c5('0x16')]=_[_0x59c5('0x17')](config[_0x59c5('0x16')],{'host':_0x59c5('0x18'),'port':0x18eb});var socket=require(_0x59c5('0x19'))(new Redis(config[_0x59c5('0x16')]));require('./userNotification.socket')[_0x59c5('0x1a')](socket);function respondWithStatusCode(_0x1c27ea,_0x4b2068){_0x4b2068=_0x4b2068||0xcc;return function(_0x4bf1c8){if(_0x4bf1c8){return _0x1c27ea[_0x59c5('0x1b')](_0x4b2068);}return _0x1c27ea['status'](_0x4b2068)[_0x59c5('0x1c')]();};}function respondWithResult(_0x3d3ab9,_0x5d7ec8){_0x5d7ec8=_0x5d7ec8||0xc8;return function(_0x3c2869){if(_0x3c2869){return _0x3d3ab9[_0x59c5('0x1d')](_0x5d7ec8)['json'](_0x3c2869);}};}function respondWithFilteredResult(_0x1a1d86,_0x244301){return function(_0x3dabab){if(_0x3dabab){var _0x4c3786=typeof _0x244301['offset']===_0x59c5('0x1e')&&typeof _0x244301[_0x59c5('0x1f')]===_0x59c5('0x1e');var _0x8fbd1b=_0x3dabab[_0x59c5('0x20')];var _0x3006e2=_0x4c3786?0x0:_0x244301[_0x59c5('0x21')];var _0x582ca1=_0x4c3786?_0x3dabab[_0x59c5('0x20')]:_0x244301['offset']+_0x244301[_0x59c5('0x1f')];var _0x1dc7e8;if(_0x582ca1>=_0x8fbd1b){_0x582ca1=_0x8fbd1b;_0x1dc7e8=0xc8;}else{_0x1dc7e8=0xce;}_0x1a1d86[_0x59c5('0x1d')](_0x1dc7e8);return _0x1a1d86['set'](_0x59c5('0x22'),_0x3006e2+'-'+_0x582ca1+'/'+_0x8fbd1b)[_0x59c5('0x23')](_0x3dabab);}return null;};}function patchUpdates(_0x41b893){return function(_0x3e6366){try{jsonpatch[_0x59c5('0x24')](_0x3e6366,_0x41b893,!![]);}catch(_0x52f41f){return BPromise[_0x59c5('0x25')](_0x52f41f);}return _0x3e6366[_0x59c5('0x26')]();};}function saveUpdates(_0x1ef81e,_0x18de4a){return function(_0x4f4b3c){if(_0x4f4b3c){return _0x4f4b3c[_0x59c5('0x27')](_0x1ef81e)['then'](function(_0x378819){return _0x378819;});}return null;};}function removeEntity(_0xab66ac,_0x5ae06e){return function(_0x48107){if(_0x48107){return _0x48107[_0x59c5('0x28')]()[_0x59c5('0x29')](function(){_0xab66ac[_0x59c5('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42b8f0,_0x55e523){return function(_0x1734c8){if(!_0x1734c8){_0x42b8f0[_0x59c5('0x1b')](0x194);}return _0x1734c8;};}function handleError(_0x37fafb,_0x2795c5){_0x2795c5=_0x2795c5||0x1f4;return function(_0x4f4662){logger[_0x59c5('0x2a')](_0x4f4662[_0x59c5('0x2b')]);if(_0x4f4662[_0x59c5('0x2c')]){delete _0x4f4662['name'];}_0x37fafb['status'](_0x2795c5)[_0x59c5('0x2d')](_0x4f4662);};}exports[_0x59c5('0x2e')]=function(_0x1aa987,_0x1e7b83,_0x288bb2){if(!_0x1aa987[_0x59c5('0x2f')][_0x59c5('0x30')]('text')&&!_0x1aa987[_0x59c5('0x2f')]['hasOwnProperty'](_0x59c5('0x31'))){throw new db[(_0x59c5('0x32'))][(_0x59c5('0x33'))](_0x59c5('0x34'));}else{if(_0x1aa987[_0x59c5('0x2f')]['hasOwnProperty'](_0x59c5('0x31'))&&!_0x1aa987['body'][_0x59c5('0x30')](_0x59c5('0x35'))){throw new db[(_0x59c5('0x32'))][(_0x59c5('0x33'))](_0x59c5('0x36'));}if(!_0x1aa987[_0x59c5('0x2f')][_0x59c5('0x30')](_0x59c5('0x37'))){throw new db[(_0x59c5('0x32'))][(_0x59c5('0x33'))](_0x59c5('0x38'));}else{try{var _0x3cb2a2=JSON[_0x59c5('0x39')](_0x1aa987[_0x59c5('0x2f')]['recipients']);}catch(_0x1b67a3){logger[_0x59c5('0x2a')](_0x1b67a3);throw new db['Sequelize'][(_0x59c5('0x33'))](_0x59c5('0x3a'));}var _0x59d66c=[_0x59c5('0x3b'),_0x59c5('0x3c'),_0x59c5('0x3d'),_0x59c5('0x3e'),_0x59c5('0x3f'),_0x59c5('0x40'),_0x59c5('0x41'),_0x59c5('0x42'),'user'];if(_[_0x59c5('0x43')](_0x3cb2a2,function(_0x1e1621){return!_[_0x59c5('0x44')](_0x59d66c,_0x1e1621[_0x59c5('0x45')][_0x59c5('0x46')]());})){throw new db['Sequelize'][(_0x59c5('0x33'))](_0x59c5('0x47'));}}}var _0x218de2={};_0x218de2[_0x59c5('0x48')]=_0x1aa987[_0x59c5('0x2f')][_0x59c5('0x30')](_0x59c5('0x48'))?_0x1aa987[_0x59c5('0x2f')]['senderName']:_0x1aa987[_0x59c5('0x49')]['fullname'];_0x218de2[_0x59c5('0x4a')]=_[_0x59c5('0x4b')](_0x1aa987['body'][_0x59c5('0x4a')])?null:_0x1aa987[_0x59c5('0x2f')][_0x59c5('0x4a')];_0x218de2[_0x59c5('0x4c')]=_0x1aa987[_0x59c5('0x2f')][_0x59c5('0x4c')]||![];_0x218de2['SenderId']=_0x1aa987[_0x59c5('0x49')]['id'];return getContent(_0x1aa987[_0x59c5('0x2f')])[_0x59c5('0x29')](function(_0x4a88df){_0x218de2[_0x59c5('0x2f')]=_0x4a88df;return getRecipients(_0x3cb2a2);})[_0x59c5('0x29')](function(_0x3e6b6f){_0x218de2[_0x59c5('0x4d')]=_['sortBy'](_0x3e6b6f)[_0x59c5('0x4e')](',');return db[_0x59c5('0x4f')][_0x59c5('0x50')](function(_0x4fb840){return db[_0x59c5('0x51')][_0x59c5('0x52')](_0x218de2,{'raw':!![],'transaction':_0x4fb840})['then'](function(_0x42a609){var _0x11ff72={'sender':_0x218de2[_0x59c5('0x48')],'description':_0x218de2['recipientsDescription'],'content':_0x218de2[_0x59c5('0x2f')],'beep':_0x218de2[_0x59c5('0x4c')]};_0x3e6b6f['forEach'](function(_0x5596e1){_0x11ff72[_0x59c5('0x53')]=_0x5596e1;socket[_0x59c5('0x54')](_0x59c5('0x55'),_0x11ff72);});return _0x42a609;});});})[_0x59c5('0x29')](respondWithResult(_0x1e7b83,0xc9))[_0x59c5('0x56')](handleError(_0x1e7b83,null));};function getContent(_0x31ce17){return new BPromise(function(_0x11f6bb,_0x42dfad){if(_0x31ce17[_0x59c5('0x57')]){_0x11f6bb(_0x31ce17[_0x59c5('0x57')]);return;}return db[_0x59c5('0x58')][_0x59c5('0x59')]({'attributes':[_0x59c5('0x5a')],'where':{'id':_0x31ce17[_0x59c5('0x31')]},'raw':!![]})['then'](function(_0x3f418d){if(!_0x3f418d)throw new db[(_0x59c5('0x32'))][(_0x59c5('0x33'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x41f3ca=Mustache[_0x59c5('0x5b')](_0x3f418d[_0x59c5('0x5a')],_0x31ce17['view']);_0x11f6bb(_0x41f3ca);})[_0x59c5('0x56')](function(_0xf41471){_0x42dfad(_0xf41471);});});}function getRecipients(_0x2bddb3){return new BPromise(function(_0x5929f6,_0x27b4c6){var _0x521406=[];var _0x223caa=[];_0x2bddb3[_0x59c5('0x5c')](function(_0x31cf29){var _0x479ef6=_[_0x59c5('0x5d')](_0x31cf29[_0x59c5('0x45')][_0x59c5('0x46')]());if(_0x479ef6===_0x59c5('0x5e')){_0x521406=_['union'](_0x521406,_0x31cf29[_0x59c5('0x5f')]);}else{if(_[_0x59c5('0x44')](_0x479ef6,_0x59c5('0x60')))_0x479ef6=_0x479ef6[_0x59c5('0x61')](_0x59c5('0x60'),'Queue');_0x31cf29[_0x59c5('0x5f')][_0x59c5('0x5c')](function(_0x40fe48){_0x223caa[_0x59c5('0x62')](getAgents(_0x479ef6,_0x40fe48));});}});return BPromise[_0x59c5('0x63')](_0x223caa)[_0x59c5('0x29')](function(_0x374d06){_0x521406=_[_0x59c5('0x64')](_0x521406,_['flatten'](_0x374d06));_0x5929f6(_0x521406);})[_0x59c5('0x56')](function(_0x6748db){_0x27b4c6(_0x6748db);});});}function getAgents(_0x19def6,_0x16fe55){return new BPromise(function(_0x1e8cc8,_0x26820d){return db[_0x19def6][_0x59c5('0x59')]({'where':{'id':_0x16fe55}})[_0x59c5('0x29')](function(_0x5b0f57){return _0x5b0f57['getAgents']({'attributes':['id'],'raw':!![]})[_0x59c5('0x29')](function(_0x28715b){var _0x3c0c63=_['map'](_0x28715b,'id');_0x1e8cc8(_0x3c0c63);});})[_0x59c5('0x56')](function(_0x46aeb1){_0x26820d(_0x46aeb1);});});}