Built motion from commit efa66e19.|2.6.22
[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 _0x11e8=['Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','join','sequelize','transaction','UserNotification','recipient','emit','catch','text','html','TemplateId','Invalid\x20\x27TemplateId\x27\x20parameter','forEach','startCase','model','union','ids','queue','replace','push','all','flatten','findOne','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','name','send','body','hasOwnProperty','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','parse','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','user','some','toLowerCase'];(function(_0x3409ae,_0x34a098){var _0x5c736d=function(_0x4800a0){while(--_0x4800a0){_0x3409ae['push'](_0x3409ae['shift']());}};_0x5c736d(++_0x34a098);}(_0x11e8,0x129));var _0x811e=function(_0x225f4f,_0xae43e8){_0x225f4f=_0x225f4f-0x0;var _0x3d0a36=_0x11e8[_0x225f4f];return _0x3d0a36;};'use strict';var emlformat=require(_0x811e('0x0'));var rimraf=require(_0x811e('0x1'));var zipdir=require(_0x811e('0x2'));var jsonpatch=require(_0x811e('0x3'));var rp=require('request-promise');var moment=require(_0x811e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x811e('0x5'));var path=require('path');var sox=require(_0x811e('0x6'));var csv=require(_0x811e('0x7'));var ejs=require(_0x811e('0x8'));var fs=require('fs');var fs_extra=require(_0x811e('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x811e('0xa'));var deskjs=require(_0x811e('0xb'));var toCsv=require(_0x811e('0x7'));var querystring=require(_0x811e('0xc'));var Papa=require(_0x811e('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x811e('0xe'));var as=require(_0x811e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x811e('0x10'));var licenseUtil=require(_0x811e('0x11'));var db=require(_0x811e('0x12'))['db'];config['redis']=_[_0x811e('0x13')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x811e('0x14'))(new Redis(config[_0x811e('0x15')]));require(_0x811e('0x16'))[_0x811e('0x17')](socket);function respondWithStatusCode(_0x4696ed,_0x5d9eb2){_0x5d9eb2=_0x5d9eb2||0xcc;return function(_0x369341){if(_0x369341){return _0x4696ed[_0x811e('0x18')](_0x5d9eb2);}return _0x4696ed[_0x811e('0x19')](_0x5d9eb2)[_0x811e('0x1a')]();};}function respondWithResult(_0x310e23,_0x4b7c92){_0x4b7c92=_0x4b7c92||0xc8;return function(_0x4927c9){if(_0x4927c9){return _0x310e23[_0x811e('0x19')](_0x4b7c92)[_0x811e('0x1b')](_0x4927c9);}};}function respondWithFilteredResult(_0x2892db,_0x1440d0){return function(_0x3f1612){if(_0x3f1612){var _0x363250=typeof _0x1440d0[_0x811e('0x1c')]===_0x811e('0x1d')&&typeof _0x1440d0[_0x811e('0x1e')]===_0x811e('0x1d');var _0x49985d=_0x3f1612[_0x811e('0x1f')];var _0x4697f=_0x363250?0x0:_0x1440d0[_0x811e('0x1c')];var _0x530b62=_0x363250?_0x3f1612[_0x811e('0x1f')]:_0x1440d0['offset']+_0x1440d0[_0x811e('0x1e')];var _0x5efca5;if(_0x530b62>=_0x49985d){_0x530b62=_0x49985d;_0x5efca5=0xc8;}else{_0x5efca5=0xce;}_0x2892db[_0x811e('0x19')](_0x5efca5);return _0x2892db[_0x811e('0x20')]('Content-Range',_0x4697f+'-'+_0x530b62+'/'+_0x49985d)[_0x811e('0x1b')](_0x3f1612);}return null;};}function patchUpdates(_0x3cf79b){return function(_0x3f3c95){try{jsonpatch['apply'](_0x3f3c95,_0x3cf79b,!![]);}catch(_0xd4a2d1){return BPromise[_0x811e('0x21')](_0xd4a2d1);}return _0x3f3c95[_0x811e('0x22')]();};}function saveUpdates(_0x5b356a,_0x405d67){return function(_0x331209){if(_0x331209){return _0x331209['update'](_0x5b356a)[_0x811e('0x23')](function(_0x2b0d00){return _0x2b0d00;});}return null;};}function removeEntity(_0x2a14c0,_0x16686a){return function(_0x46eac4){if(_0x46eac4){return _0x46eac4[_0x811e('0x24')]()[_0x811e('0x23')](function(){_0x2a14c0[_0x811e('0x19')](0xcc)[_0x811e('0x1a')]();});}};}function handleEntityNotFound(_0x48b786,_0x4b9397){return function(_0x243f4f){if(!_0x243f4f){_0x48b786[_0x811e('0x18')](0x194);}return _0x243f4f;};}function handleError(_0x303ba3,_0x3c9fc1){_0x3c9fc1=_0x3c9fc1||0x1f4;return function(_0x541cb2){logger[_0x811e('0x25')](_0x541cb2[_0x811e('0x26')]);if(_0x541cb2[_0x811e('0x27')]){delete _0x541cb2[_0x811e('0x27')];}_0x303ba3[_0x811e('0x19')](_0x3c9fc1)[_0x811e('0x28')](_0x541cb2);};}exports['sendUserNotification']=function(_0x5ab6b6,_0x2cd807,_0x23653d){if(!_0x5ab6b6[_0x811e('0x29')][_0x811e('0x2a')]('text')&&!_0x5ab6b6[_0x811e('0x29')][_0x811e('0x2a')]('TemplateId')){throw new db[(_0x811e('0x2b'))][(_0x811e('0x2c'))](_0x811e('0x2d'));}else{if(_0x5ab6b6['body'][_0x811e('0x2a')]('TemplateId')&&!_0x5ab6b6[_0x811e('0x29')][_0x811e('0x2a')](_0x811e('0x2e'))){throw new db[(_0x811e('0x2b'))][(_0x811e('0x2c'))](_0x811e('0x2f'));}if(!_0x5ab6b6[_0x811e('0x29')][_0x811e('0x2a')](_0x811e('0x30'))){throw new db[(_0x811e('0x2b'))][(_0x811e('0x2c'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x81178c=JSON[_0x811e('0x31')](_0x5ab6b6[_0x811e('0x29')][_0x811e('0x30')]);}catch(_0x3bf70a){logger[_0x811e('0x25')](_0x3bf70a);throw new db[(_0x811e('0x2b'))][(_0x811e('0x2c'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x85002=[_0x811e('0x32'),_0x811e('0x33'),_0x811e('0x34'),'openchannelqueue',_0x811e('0x35'),_0x811e('0x36'),_0x811e('0x37'),'team',_0x811e('0x38')];if(_[_0x811e('0x39')](_0x81178c,function(_0x3a371a){return!_['includes'](_0x85002,_0x3a371a['model'][_0x811e('0x3a')]());})){throw new db['Sequelize'][(_0x811e('0x2c'))](_0x811e('0x3b'));}}}var _0x34ce21={};_0x34ce21[_0x811e('0x3c')]=_0x5ab6b6[_0x811e('0x29')][_0x811e('0x2a')]('senderName')?_0x5ab6b6[_0x811e('0x29')]['senderName']:_0x5ab6b6['user'][_0x811e('0x3d')];_0x34ce21['recipientsDescription']=_[_0x811e('0x3e')](_0x5ab6b6[_0x811e('0x29')][_0x811e('0x3f')])?null:_0x5ab6b6['body']['recipientsDescription'];_0x34ce21[_0x811e('0x40')]=_0x5ab6b6[_0x811e('0x29')][_0x811e('0x40')]||![];_0x34ce21['SenderId']=_0x5ab6b6[_0x811e('0x38')]['id'];return getContent(_0x5ab6b6[_0x811e('0x29')])[_0x811e('0x23')](function(_0x2673ef){_0x34ce21[_0x811e('0x29')]=_0x2673ef;return getRecipients(_0x81178c);})[_0x811e('0x23')](function(_0x22cec6){_0x34ce21['recipientsId']=_['sortBy'](_0x22cec6)[_0x811e('0x41')](',');return db[_0x811e('0x42')][_0x811e('0x43')](function(_0x5148e2){return db[_0x811e('0x44')]['create'](_0x34ce21,{'raw':!![],'transaction':_0x5148e2})['then'](function(_0x4de75f){var _0x46b4c0={'sender':_0x34ce21[_0x811e('0x3c')],'description':_0x34ce21['recipientsDescription'],'content':_0x34ce21[_0x811e('0x29')],'beep':_0x34ce21[_0x811e('0x40')]};_0x22cec6['forEach'](function(_0x23a092){_0x46b4c0[_0x811e('0x45')]=_0x23a092;socket[_0x811e('0x46')]('userNotification:send',_0x46b4c0);});return _0x4de75f;});});})[_0x811e('0x23')](respondWithResult(_0x2cd807,0xc9))[_0x811e('0x47')](handleError(_0x2cd807,null));};function getContent(_0x89bb71){return new BPromise(function(_0x39fad5,_0x50d210){if(_0x89bb71[_0x811e('0x48')]){_0x39fad5(_0x89bb71[_0x811e('0x48')]);return;}return db['Template']['findOne']({'attributes':[_0x811e('0x49')],'where':{'id':_0x89bb71[_0x811e('0x4a')]},'raw':!![]})['then'](function(_0x3552b3){if(!_0x3552b3)throw new db['Sequelize'][(_0x811e('0x2c'))](_0x811e('0x4b'));var _0x26738a=Mustache['render'](_0x3552b3[_0x811e('0x49')],_0x89bb71['view']);_0x39fad5(_0x26738a);})[_0x811e('0x47')](function(_0x2aab38){_0x50d210(_0x2aab38);});});}function getRecipients(_0x295782){return new BPromise(function(_0xe9cf15,_0x4b6bf1){var _0x417c07=[];var _0x12e718=[];_0x295782[_0x811e('0x4c')](function(_0x2dacef){var _0x7a165d=_[_0x811e('0x4d')](_0x2dacef[_0x811e('0x4e')]['toLowerCase']());if(_0x7a165d==='User'){_0x417c07=_[_0x811e('0x4f')](_0x417c07,_0x2dacef[_0x811e('0x50')]);}else{if(_['includes'](_0x7a165d,_0x811e('0x51')))_0x7a165d=_0x7a165d[_0x811e('0x52')](_0x811e('0x51'),'Queue');_0x2dacef['ids'][_0x811e('0x4c')](function(_0x46eda8){_0x12e718[_0x811e('0x53')](getAgents(_0x7a165d,_0x46eda8));});}});return BPromise[_0x811e('0x54')](_0x12e718)[_0x811e('0x23')](function(_0x2b36b0){_0x417c07=_[_0x811e('0x4f')](_0x417c07,_[_0x811e('0x55')](_0x2b36b0));_0xe9cf15(_0x417c07);})['catch'](function(_0x107f0b){_0x4b6bf1(_0x107f0b);});});}function getAgents(_0x4eacef,_0x3a29b5){return new BPromise(function(_0x1038fd,_0x275961){return db[_0x4eacef][_0x811e('0x56')]({'where':{'id':_0x3a29b5}})[_0x811e('0x23')](function(_0x567ded){return _0x567ded[_0x811e('0x57')]({'attributes':['id'],'raw':!![]})[_0x811e('0x23')](function(_0x3663c1){var _0x577c1d=_[_0x811e('0x58')](_0x3663c1,'id');_0x1038fd(_0x577c1d);});})[_0x811e('0x47')](function(_0x16d35d){_0x275961(_0x16d35d);});});}