Built motion from commit 994c64e1.|2.6.1
[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 _0x7332=['crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./userNotification.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','text','body','hasOwnProperty','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Sequelize','ValidationError','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','some','includes','model','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','user','recipientsId','sortBy','join','sequelize','UserNotification','create','recipient','emit','userNotification:send','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','render','html','catch','User','union','queue','Queue','push','all','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x439ba1,_0x249fd4){var _0x2bf452=function(_0x2e7d47){while(--_0x2e7d47){_0x439ba1['push'](_0x439ba1['shift']());}};_0x2bf452(++_0x249fd4);}(_0x7332,0xb8));var _0x2733=function(_0x4ab5d1,_0x288fb0){_0x4ab5d1=_0x4ab5d1-0x0;var _0x28e629=_0x7332[_0x4ab5d1];return _0x28e629;};'use strict';var emlformat=require(_0x2733('0x0'));var rimraf=require(_0x2733('0x1'));var zipdir=require(_0x2733('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2733('0x3'));var moment=require(_0x2733('0x4'));var BPromise=require(_0x2733('0x5'));var Mustache=require('mustache');var util=require(_0x2733('0x6'));var path=require(_0x2733('0x7'));var sox=require(_0x2733('0x8'));var csv=require(_0x2733('0x9'));var ejs=require(_0x2733('0xa'));var fs=require('fs');var fs_extra=require(_0x2733('0xb'));var _=require(_0x2733('0xc'));var squel=require(_0x2733('0xd'));var crypto=require(_0x2733('0xe'));var jsforce=require(_0x2733('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2733('0x10'));var Papa=require(_0x2733('0x11'));var Redis=require(_0x2733('0x12'));var authService=require(_0x2733('0x13'));var qs=require(_0x2733('0x14'));var as=require(_0x2733('0x15'));var hardwareService=require(_0x2733('0x16'));var logger=require(_0x2733('0x17'))('api');var utils=require(_0x2733('0x18'));var config=require(_0x2733('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x2733('0x1a')],{'host':_0x2733('0x1b'),'port':0x18eb});var socket=require(_0x2733('0x1c'))(new Redis(config[_0x2733('0x1a')]));require(_0x2733('0x1d'))['register'](socket);function respondWithStatusCode(_0x3efb1f,_0x2841a7){_0x2841a7=_0x2841a7||0xcc;return function(_0x26e7c0){if(_0x26e7c0){return _0x3efb1f['sendStatus'](_0x2841a7);}return _0x3efb1f[_0x2733('0x1e')](_0x2841a7)[_0x2733('0x1f')]();};}function respondWithResult(_0x459b6e,_0x5e50cb){_0x5e50cb=_0x5e50cb||0xc8;return function(_0x288f10){if(_0x288f10){return _0x459b6e[_0x2733('0x1e')](_0x5e50cb)[_0x2733('0x20')](_0x288f10);}};}function respondWithFilteredResult(_0x52780d,_0xdb8df2){return function(_0x5559b8){if(_0x5559b8){var _0x32281d=typeof _0xdb8df2[_0x2733('0x21')]===_0x2733('0x22')&&typeof _0xdb8df2[_0x2733('0x23')]==='undefined';var _0xb30c96=_0x5559b8[_0x2733('0x24')];var _0x38212e=_0x32281d?0x0:_0xdb8df2[_0x2733('0x21')];var _0x96e8c2=_0x32281d?_0x5559b8['count']:_0xdb8df2[_0x2733('0x21')]+_0xdb8df2[_0x2733('0x23')];var _0x521291;if(_0x96e8c2>=_0xb30c96){_0x96e8c2=_0xb30c96;_0x521291=0xc8;}else{_0x521291=0xce;}_0x52780d[_0x2733('0x1e')](_0x521291);return _0x52780d[_0x2733('0x25')](_0x2733('0x26'),_0x38212e+'-'+_0x96e8c2+'/'+_0xb30c96)[_0x2733('0x20')](_0x5559b8);}return null;};}function patchUpdates(_0x427d75){return function(_0x2b1499){try{jsonpatch[_0x2733('0x27')](_0x2b1499,_0x427d75,!![]);}catch(_0x127eaf){return BPromise[_0x2733('0x28')](_0x127eaf);}return _0x2b1499[_0x2733('0x29')]();};}function saveUpdates(_0x11a42c,_0x1d7f95){return function(_0x14feef){if(_0x14feef){return _0x14feef[_0x2733('0x2a')](_0x11a42c)[_0x2733('0x2b')](function(_0x5c9d61){return _0x5c9d61;});}return null;};}function removeEntity(_0x33efb9,_0x22584a){return function(_0x9cb2a1){if(_0x9cb2a1){return _0x9cb2a1[_0x2733('0x2c')]()[_0x2733('0x2b')](function(){_0x33efb9[_0x2733('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa85052,_0x46366a){return function(_0x5d19e3){if(!_0x5d19e3){_0xa85052['sendStatus'](0x194);}return _0x5d19e3;};}function handleError(_0x15a9f5,_0x363c9d){_0x363c9d=_0x363c9d||0x1f4;return function(_0x57e513){logger[_0x2733('0x2d')](_0x57e513['stack']);if(_0x57e513[_0x2733('0x2e')]){delete _0x57e513[_0x2733('0x2e')];}_0x15a9f5[_0x2733('0x1e')](_0x363c9d)[_0x2733('0x2f')](_0x57e513);};}exports['sendUserNotification']=function(_0xfe2d8d,_0x3ff638,_0x2e8a0f){if(!_0xfe2d8d['body']['hasOwnProperty'](_0x2733('0x30'))&&!_0xfe2d8d[_0x2733('0x31')][_0x2733('0x32')]('TemplateId')){throw new db['Sequelize']['ValidationError'](_0x2733('0x33'));}else{if(_0xfe2d8d['body'][_0x2733('0x32')](_0x2733('0x34'))&&!_0xfe2d8d[_0x2733('0x31')]['hasOwnProperty'](_0x2733('0x35'))){throw new db['Sequelize']['ValidationError'](_0x2733('0x36'));}if(!_0xfe2d8d[_0x2733('0x31')][_0x2733('0x32')](_0x2733('0x37'))){throw new db[(_0x2733('0x38'))][(_0x2733('0x39'))](_0x2733('0x3a'));}else{try{var _0x50103a=JSON[_0x2733('0x3b')](_0xfe2d8d[_0x2733('0x31')][_0x2733('0x37')]);}catch(_0x1405f5){logger['error'](_0x1405f5);throw new db[(_0x2733('0x38'))][(_0x2733('0x39'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x52bdfa=[_0x2733('0x3c'),_0x2733('0x3d'),_0x2733('0x3e'),_0x2733('0x3f'),_0x2733('0x40'),_0x2733('0x41'),_0x2733('0x42'),_0x2733('0x43'),'user'];if(_[_0x2733('0x44')](_0x50103a,function(_0x419269){return!_[_0x2733('0x45')](_0x52bdfa,_0x419269[_0x2733('0x46')][_0x2733('0x47')]());})){throw new db[(_0x2733('0x38'))]['ValidationError']('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x52be30={};_0x52be30[_0x2733('0x48')]=_0xfe2d8d[_0x2733('0x31')]['hasOwnProperty'](_0x2733('0x48'))?_0xfe2d8d[_0x2733('0x31')][_0x2733('0x48')]:_0xfe2d8d['user'][_0x2733('0x49')];_0x52be30[_0x2733('0x4a')]=_[_0x2733('0x4b')](_0xfe2d8d[_0x2733('0x31')][_0x2733('0x4a')])?null:_0xfe2d8d[_0x2733('0x31')][_0x2733('0x4a')];_0x52be30['beep']=_0xfe2d8d['body'][_0x2733('0x4c')]||![];_0x52be30[_0x2733('0x4d')]=_0xfe2d8d[_0x2733('0x4e')]['id'];return getContent(_0xfe2d8d['body'])[_0x2733('0x2b')](function(_0x28b9e7){_0x52be30[_0x2733('0x31')]=_0x28b9e7;return getRecipients(_0x50103a);})[_0x2733('0x2b')](function(_0x57ccaf){_0x52be30[_0x2733('0x4f')]=_[_0x2733('0x50')](_0x57ccaf)[_0x2733('0x51')](',');return db[_0x2733('0x52')]['transaction'](function(_0x426fc3){return db[_0x2733('0x53')][_0x2733('0x54')](_0x52be30,{'raw':!![],'transaction':_0x426fc3})[_0x2733('0x2b')](function(_0x45a619){var _0x153f0e={'sender':_0x52be30[_0x2733('0x48')],'description':_0x52be30[_0x2733('0x4a')],'content':_0x52be30['body'],'beep':_0x52be30[_0x2733('0x4c')]};_0x57ccaf['forEach'](function(_0x2b7e1d){_0x153f0e[_0x2733('0x55')]=_0x2b7e1d;socket[_0x2733('0x56')](_0x2733('0x57'),_0x153f0e);});return _0x45a619;});});})[_0x2733('0x2b')](respondWithResult(_0x3ff638,0xc9))['catch'](handleError(_0x3ff638,null));};function getContent(_0x213efe){return new BPromise(function(_0x2965d6,_0x58e893){if(_0x213efe[_0x2733('0x30')]){_0x2965d6(_0x213efe['text']);return;}return db['Template'][_0x2733('0x58')]({'attributes':['html'],'where':{'id':_0x213efe[_0x2733('0x34')]},'raw':!![]})[_0x2733('0x2b')](function(_0x290610){if(!_0x290610)throw new db[(_0x2733('0x38'))][(_0x2733('0x39'))](_0x2733('0x59'));var _0x180e35=Mustache[_0x2733('0x5a')](_0x290610[_0x2733('0x5b')],_0x213efe[_0x2733('0x35')]);_0x2965d6(_0x180e35);})[_0x2733('0x5c')](function(_0x4d4c65){_0x58e893(_0x4d4c65);});});}function getRecipients(_0x1e3802){return new BPromise(function(_0x285332,_0x473776){var _0x454a8c=[];var _0x16e0f1=[];_0x1e3802['forEach'](function(_0x385f93){var _0x4939fe=_['startCase'](_0x385f93[_0x2733('0x46')][_0x2733('0x47')]());if(_0x4939fe===_0x2733('0x5d')){_0x454a8c=_[_0x2733('0x5e')](_0x454a8c,_0x385f93['ids']);}else{if(_[_0x2733('0x45')](_0x4939fe,_0x2733('0x5f')))_0x4939fe=_0x4939fe['replace'](_0x2733('0x5f'),_0x2733('0x60'));_0x385f93['ids']['forEach'](function(_0x21fd7d){_0x16e0f1[_0x2733('0x61')](getAgents(_0x4939fe,_0x21fd7d));});}});return BPromise[_0x2733('0x62')](_0x16e0f1)['then'](function(_0x4ba1c1){_0x454a8c=_[_0x2733('0x5e')](_0x454a8c,_['flatten'](_0x4ba1c1));_0x285332(_0x454a8c);})['catch'](function(_0x32f632){_0x473776(_0x32f632);});});}function getAgents(_0x1b0d60,_0x41bdf4){return new BPromise(function(_0x5bdd18,_0x4d461b){return db[_0x1b0d60]['findOne']({'where':{'id':_0x41bdf4}})[_0x2733('0x2b')](function(_0x4fa4b9){return _0x4fa4b9['getAgents']({'attributes':['id'],'raw':!![]})[_0x2733('0x2b')](function(_0xdc5808){var _0x3ef26c=_['map'](_0xdc5808,'id');_0x5bdd18(_0x3ef26c);});})[_0x2733('0x5c')](function(_0x9bde76){_0x4d461b(_0x9bde76);});});}