acfd94efd2db09f5dbd75b13e5af95da11b6dc26
[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 _0xdb7c=['Missing\x20\x27recipients\x27\x20parameter','ValidationError','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','smsqueue','voicequeue','team','user','some','model','senderName','recipientsDescription','isEmpty','beep','recipientsId','sortBy','sequelize','transaction','create','recipient','userNotification:send','catch','text','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','User','union','includes','queue','ids','forEach','push','all','flatten','findOne','map','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients'];(function(_0x5c0a18,_0x3da6ce){var _0x202b18=function(_0x4f56a9){while(--_0x4f56a9){_0x5c0a18['push'](_0x5c0a18['shift']());}};_0x202b18(++_0x3da6ce);}(_0xdb7c,0x1a9));var _0xcdb7=function(_0x403f5f,_0x283f67){_0x403f5f=_0x403f5f-0x0;var _0x15b1cd=_0xdb7c[_0x403f5f];return _0x15b1cd;};'use strict';var emlformat=require(_0xcdb7('0x0'));var rimraf=require(_0xcdb7('0x1'));var zipdir=require(_0xcdb7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcdb7('0x3'));var moment=require(_0xcdb7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xcdb7('0x5'));var util=require(_0xcdb7('0x6'));var path=require(_0xcdb7('0x7'));var sox=require(_0xcdb7('0x8'));var csv=require('to-csv');var ejs=require(_0xcdb7('0x9'));var fs=require('fs');var fs_extra=require(_0xcdb7('0xa'));var _=require('lodash');var squel=require(_0xcdb7('0xb'));var crypto=require(_0xcdb7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcdb7('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcdb7('0xe'));var Redis=require(_0xcdb7('0xf'));var authService=require(_0xcdb7('0x10'));var qs=require(_0xcdb7('0x11'));var as=require(_0xcdb7('0x12'));var hardwareService=require(_0xcdb7('0x13'));var logger=require(_0xcdb7('0x14'))(_0xcdb7('0x15'));var utils=require('../../config/utils');var config=require(_0xcdb7('0x16'));var licenseUtil=require(_0xcdb7('0x17'));var db=require(_0xcdb7('0x18'))['db'];config['redis']=_[_0xcdb7('0x19')](config[_0xcdb7('0x1a')],{'host':_0xcdb7('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcdb7('0x1a')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x161a38,_0x222e30){_0x222e30=_0x222e30||0xcc;return function(_0x1f5820){if(_0x1f5820){return _0x161a38[_0xcdb7('0x1c')](_0x222e30);}return _0x161a38[_0xcdb7('0x1d')](_0x222e30)[_0xcdb7('0x1e')]();};}function respondWithResult(_0x337f55,_0x14c89c){_0x14c89c=_0x14c89c||0xc8;return function(_0x18155a){if(_0x18155a){return _0x337f55['status'](_0x14c89c)[_0xcdb7('0x1f')](_0x18155a);}};}function respondWithFilteredResult(_0xac04c0,_0x57942d){return function(_0x3991ea){if(_0x3991ea){var _0x2fb476=typeof _0x57942d['offset']===_0xcdb7('0x20')&&typeof _0x57942d[_0xcdb7('0x21')]===_0xcdb7('0x20');var _0x5e86b0=_0x3991ea[_0xcdb7('0x22')];var _0x5b8b44=_0x2fb476?0x0:_0x57942d['offset'];var _0x284e57=_0x2fb476?_0x3991ea[_0xcdb7('0x22')]:_0x57942d[_0xcdb7('0x23')]+_0x57942d[_0xcdb7('0x21')];var _0xfacc2d;if(_0x284e57>=_0x5e86b0){_0x284e57=_0x5e86b0;_0xfacc2d=0xc8;}else{_0xfacc2d=0xce;}_0xac04c0['status'](_0xfacc2d);return _0xac04c0[_0xcdb7('0x24')](_0xcdb7('0x25'),_0x5b8b44+'-'+_0x284e57+'/'+_0x5e86b0)[_0xcdb7('0x1f')](_0x3991ea);}return null;};}function patchUpdates(_0x258ccc){return function(_0x3adfe8){try{jsonpatch[_0xcdb7('0x26')](_0x3adfe8,_0x258ccc,!![]);}catch(_0x12fc40){return BPromise[_0xcdb7('0x27')](_0x12fc40);}return _0x3adfe8['save']();};}function saveUpdates(_0x590c6f,_0xdb4097){return function(_0x31ee92){if(_0x31ee92){return _0x31ee92[_0xcdb7('0x28')](_0x590c6f)[_0xcdb7('0x29')](function(_0x4424b4){return _0x4424b4;});}return null;};}function removeEntity(_0x585355,_0x6c9882){return function(_0x26dc84){if(_0x26dc84){return _0x26dc84[_0xcdb7('0x2a')]()[_0xcdb7('0x29')](function(){_0x585355[_0xcdb7('0x1d')](0xcc)[_0xcdb7('0x1e')]();});}};}function handleEntityNotFound(_0x44890b,_0x3766b0){return function(_0x1050a5){if(!_0x1050a5){_0x44890b[_0xcdb7('0x1c')](0x194);}return _0x1050a5;};}function handleError(_0x3ea48d,_0x5933fc){_0x5933fc=_0x5933fc||0x1f4;return function(_0x37a99a){logger[_0xcdb7('0x2b')](_0x37a99a[_0xcdb7('0x2c')]);if(_0x37a99a[_0xcdb7('0x2d')]){delete _0x37a99a['name'];}_0x3ea48d[_0xcdb7('0x1d')](_0x5933fc)['send'](_0x37a99a);};}exports[_0xcdb7('0x2e')]=function(_0x30878b,_0x40c860,_0xa2d6a2){if(!_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')]('text')&&!_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')](_0xcdb7('0x31'))){throw new db[(_0xcdb7('0x32'))]['ValidationError'](_0xcdb7('0x33'));}else{if(_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')](_0xcdb7('0x31'))&&!_0x30878b[_0xcdb7('0x2f')]['hasOwnProperty'](_0xcdb7('0x34'))){throw new db[(_0xcdb7('0x32'))]['ValidationError'](_0xcdb7('0x35'));}if(!_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')](_0xcdb7('0x36'))){throw new db[(_0xcdb7('0x32'))]['ValidationError'](_0xcdb7('0x37'));}else{try{var _0x5172f7=JSON['parse'](_0x30878b[_0xcdb7('0x2f')]['recipients']);}catch(_0x2ebb46){logger['error'](_0x2ebb46);throw new db[(_0xcdb7('0x32'))][(_0xcdb7('0x38'))](_0xcdb7('0x39'));}var _0x2375be=['chatqueue',_0xcdb7('0x3a'),_0xcdb7('0x3b'),'openchannelqueue',_0xcdb7('0x3c'),_0xcdb7('0x3d'),'whatsappqueue',_0xcdb7('0x3e'),_0xcdb7('0x3f')];if(_[_0xcdb7('0x40')](_0x5172f7,function(_0x56ba30){return!_['includes'](_0x2375be,_0x56ba30[_0xcdb7('0x41')]['toLowerCase']());})){throw new db[(_0xcdb7('0x32'))][(_0xcdb7('0x38'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x54b853={};_0x54b853[_0xcdb7('0x42')]=_0x30878b[_0xcdb7('0x2f')]['hasOwnProperty'](_0xcdb7('0x42'))?_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x42')]:_0x30878b['user']['fullname'];_0x54b853[_0xcdb7('0x43')]=_[_0xcdb7('0x44')](_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x43')])?null:_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x43')];_0x54b853['beep']=_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x45')]||![];_0x54b853['SenderId']=_0x30878b[_0xcdb7('0x3f')]['id'];return getContent(_0x30878b[_0xcdb7('0x2f')])[_0xcdb7('0x29')](function(_0x1819d2){_0x54b853['body']=_0x1819d2;return getRecipients(_0x5172f7);})[_0xcdb7('0x29')](function(_0x59e67b){_0x54b853[_0xcdb7('0x46')]=_[_0xcdb7('0x47')](_0x59e67b)['join'](',');return db[_0xcdb7('0x48')][_0xcdb7('0x49')](function(_0x524616){return db['UserNotification'][_0xcdb7('0x4a')](_0x54b853,{'raw':!![],'transaction':_0x524616})['then'](function(_0x36aa61){var _0x3f957a={'sender':_0x54b853[_0xcdb7('0x42')],'description':_0x54b853['recipientsDescription'],'content':_0x54b853['body'],'beep':_0x54b853['beep']};_0x59e67b['forEach'](function(_0x1c90dd){_0x3f957a[_0xcdb7('0x4b')]=_0x1c90dd;socket['emit'](_0xcdb7('0x4c'),_0x3f957a);});return _0x36aa61;});});})[_0xcdb7('0x29')](respondWithResult(_0x40c860,0xc9))[_0xcdb7('0x4d')](handleError(_0x40c860,null));};function getContent(_0x1deffe){return new BPromise(function(_0x14eb17,_0x404d97){if(_0x1deffe[_0xcdb7('0x4e')]){_0x14eb17(_0x1deffe[_0xcdb7('0x4e')]);return;}return db[_0xcdb7('0x4f')]['findOne']({'attributes':[_0xcdb7('0x50')],'where':{'id':_0x1deffe[_0xcdb7('0x31')]},'raw':!![]})['then'](function(_0x4a22cb){if(!_0x4a22cb)throw new db[(_0xcdb7('0x32'))][(_0xcdb7('0x38'))](_0xcdb7('0x51'));var _0x1a156e=Mustache[_0xcdb7('0x52')](_0x4a22cb[_0xcdb7('0x50')],_0x1deffe[_0xcdb7('0x34')]);_0x14eb17(_0x1a156e);})[_0xcdb7('0x4d')](function(_0x88ae5d){_0x404d97(_0x88ae5d);});});}function getRecipients(_0x2a0a19){return new BPromise(function(_0x4c1360,_0x384b8c){var _0x595526=[];var _0x2c96f9=[];_0x2a0a19['forEach'](function(_0x4f697c){var _0x280953=_[_0xcdb7('0x53')](_0x4f697c[_0xcdb7('0x41')][_0xcdb7('0x54')]());if(_0x280953===_0xcdb7('0x55')){_0x595526=_[_0xcdb7('0x56')](_0x595526,_0x4f697c['ids']);}else{if(_[_0xcdb7('0x57')](_0x280953,'queue'))_0x280953=_0x280953['replace'](_0xcdb7('0x58'),'Queue');_0x4f697c[_0xcdb7('0x59')][_0xcdb7('0x5a')](function(_0x49e7dd){_0x2c96f9[_0xcdb7('0x5b')](getAgents(_0x280953,_0x49e7dd));});}});return BPromise[_0xcdb7('0x5c')](_0x2c96f9)[_0xcdb7('0x29')](function(_0x5094b2){_0x595526=_['union'](_0x595526,_[_0xcdb7('0x5d')](_0x5094b2));_0x4c1360(_0x595526);})['catch'](function(_0xed1c42){_0x384b8c(_0xed1c42);});});}function getAgents(_0x3e1d41,_0x194906){return new BPromise(function(_0x4e1c96,_0x21350a){return db[_0x3e1d41][_0xcdb7('0x5e')]({'where':{'id':_0x194906}})[_0xcdb7('0x29')](function(_0x417c63){return _0x417c63['getAgents']({'attributes':['id'],'raw':!![]})[_0xcdb7('0x29')](function(_0x53c76c){var _0x3742f6=_[_0xcdb7('0x5f')](_0x53c76c,'id');_0x4e1c96(_0x3742f6);});})[_0xcdb7('0x4d')](function(_0x13c418){_0x21350a(_0x13c418);});});}