Built motion from commit 85328c08.|2.5.50
[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 _0x6809=['sequelize','transaction','UserNotification','create','forEach','recipient','emit','catch','text','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','model','toLowerCase','User','union','queue','replace','Queue','push','flatten','findOne','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./userNotification.socket','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','update','then','destroy','error','stack','name','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','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','team','user','some','includes','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','beep','SenderId','recipientsId','join'];(function(_0x127f6d,_0x55cce9){var _0x2246b2=function(_0x46c309){while(--_0x46c309){_0x127f6d['push'](_0x127f6d['shift']());}};_0x2246b2(++_0x55cce9);}(_0x6809,0x1ac));var _0x9680=function(_0x4c184d,_0x4278ab){_0x4c184d=_0x4c184d-0x0;var _0x23d997=_0x6809[_0x4c184d];return _0x23d997;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9680('0x0'));var zipdir=require(_0x9680('0x1'));var jsonpatch=require(_0x9680('0x2'));var rp=require(_0x9680('0x3'));var moment=require(_0x9680('0x4'));var BPromise=require(_0x9680('0x5'));var Mustache=require('mustache');var util=require(_0x9680('0x6'));var path=require(_0x9680('0x7'));var sox=require('sox');var csv=require(_0x9680('0x8'));var ejs=require(_0x9680('0x9'));var fs=require('fs');var fs_extra=require(_0x9680('0xa'));var _=require(_0x9680('0xb'));var squel=require(_0x9680('0xc'));var crypto=require(_0x9680('0xd'));var jsforce=require(_0x9680('0xe'));var deskjs=require(_0x9680('0xf'));var toCsv=require(_0x9680('0x8'));var querystring=require(_0x9680('0x10'));var Papa=require(_0x9680('0x11'));var Redis=require(_0x9680('0x12'));var authService=require(_0x9680('0x13'));var qs=require(_0x9680('0x14'));var as=require(_0x9680('0x15'));var hardwareService=require(_0x9680('0x16'));var logger=require(_0x9680('0x17'))(_0x9680('0x18'));var utils=require(_0x9680('0x19'));var config=require(_0x9680('0x1a'));var licenseUtil=require(_0x9680('0x1b'));var db=require(_0x9680('0x1c'))['db'];config[_0x9680('0x1d')]=_[_0x9680('0x1e')](config[_0x9680('0x1d')],{'host':_0x9680('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9680('0x1d')]));require(_0x9680('0x20'))['register'](socket);function respondWithStatusCode(_0x3614c2,_0x413392){_0x413392=_0x413392||0xcc;return function(_0x43d7db){if(_0x43d7db){return _0x3614c2[_0x9680('0x21')](_0x413392);}return _0x3614c2[_0x9680('0x22')](_0x413392)[_0x9680('0x23')]();};}function respondWithResult(_0x96a794,_0x1645f7){_0x1645f7=_0x1645f7||0xc8;return function(_0x382b8e){if(_0x382b8e){return _0x96a794[_0x9680('0x22')](_0x1645f7)[_0x9680('0x24')](_0x382b8e);}};}function respondWithFilteredResult(_0x210037,_0x368ff5){return function(_0x2b6b28){if(_0x2b6b28){var _0x1176d4=typeof _0x368ff5[_0x9680('0x25')]===_0x9680('0x26')&&typeof _0x368ff5[_0x9680('0x27')]==='undefined';var _0x5d6479=_0x2b6b28['count'];var _0x123707=_0x1176d4?0x0:_0x368ff5['offset'];var _0x414711=_0x1176d4?_0x2b6b28['count']:_0x368ff5[_0x9680('0x25')]+_0x368ff5[_0x9680('0x27')];var _0x36f80c;if(_0x414711>=_0x5d6479){_0x414711=_0x5d6479;_0x36f80c=0xc8;}else{_0x36f80c=0xce;}_0x210037[_0x9680('0x22')](_0x36f80c);return _0x210037['set'](_0x9680('0x28'),_0x123707+'-'+_0x414711+'/'+_0x5d6479)[_0x9680('0x24')](_0x2b6b28);}return null;};}function patchUpdates(_0x101710){return function(_0x4f624a){try{jsonpatch[_0x9680('0x29')](_0x4f624a,_0x101710,!![]);}catch(_0x22ee9f){return BPromise[_0x9680('0x2a')](_0x22ee9f);}return _0x4f624a['save']();};}function saveUpdates(_0x335cb0,_0x5e95d0){return function(_0x597451){if(_0x597451){return _0x597451[_0x9680('0x2b')](_0x335cb0)[_0x9680('0x2c')](function(_0xe74a88){return _0xe74a88;});}return null;};}function removeEntity(_0x1ab2fa,_0x2042c5){return function(_0x5bcf03){if(_0x5bcf03){return _0x5bcf03[_0x9680('0x2d')]()[_0x9680('0x2c')](function(){_0x1ab2fa[_0x9680('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a7aa1,_0x1a7a6e){return function(_0x54bf4f){if(!_0x54bf4f){_0x4a7aa1[_0x9680('0x21')](0x194);}return _0x54bf4f;};}function handleError(_0x1bd0c1,_0x4b38d8){_0x4b38d8=_0x4b38d8||0x1f4;return function(_0x41b56e){logger[_0x9680('0x2e')](_0x41b56e[_0x9680('0x2f')]);if(_0x41b56e[_0x9680('0x30')]){delete _0x41b56e[_0x9680('0x30')];}_0x1bd0c1[_0x9680('0x22')](_0x4b38d8)['send'](_0x41b56e);};}exports['sendUserNotification']=function(_0x5b4044,_0x12a85e,_0x282f5b){if(!_0x5b4044[_0x9680('0x31')]['hasOwnProperty']('text')&&!_0x5b4044['body'][_0x9680('0x32')](_0x9680('0x33'))){throw new db[(_0x9680('0x34'))][(_0x9680('0x35'))](_0x9680('0x36'));}else{if(_0x5b4044[_0x9680('0x31')][_0x9680('0x32')]('TemplateId')&&!_0x5b4044['body'][_0x9680('0x32')](_0x9680('0x37'))){throw new db[(_0x9680('0x34'))][(_0x9680('0x35'))](_0x9680('0x38'));}if(!_0x5b4044[_0x9680('0x31')][_0x9680('0x32')](_0x9680('0x39'))){throw new db[(_0x9680('0x34'))][(_0x9680('0x35'))](_0x9680('0x3a'));}else{try{var _0x256e91=JSON[_0x9680('0x3b')](_0x5b4044[_0x9680('0x31')][_0x9680('0x39')]);}catch(_0x50ec12){logger['error'](_0x50ec12);throw new db[(_0x9680('0x34'))]['ValidationError']('Invalid\x20\x27recipients\x27\x20object');}var _0x46a35e=['chatqueue',_0x9680('0x3c'),_0x9680('0x3d'),_0x9680('0x3e'),_0x9680('0x3f'),_0x9680('0x40'),'whatsappqueue',_0x9680('0x41'),_0x9680('0x42')];if(_[_0x9680('0x43')](_0x256e91,function(_0x5e5340){return!_[_0x9680('0x44')](_0x46a35e,_0x5e5340['model']['toLowerCase']());})){throw new db[(_0x9680('0x34'))]['ValidationError'](_0x9680('0x45'));}}}var _0x5b8be7={};_0x5b8be7[_0x9680('0x46')]=_0x5b4044[_0x9680('0x31')][_0x9680('0x32')](_0x9680('0x46'))?_0x5b4044[_0x9680('0x31')][_0x9680('0x46')]:_0x5b4044[_0x9680('0x42')][_0x9680('0x47')];_0x5b8be7[_0x9680('0x48')]=_['isEmpty'](_0x5b4044[_0x9680('0x31')]['recipientsDescription'])?null:_0x5b4044[_0x9680('0x31')][_0x9680('0x48')];_0x5b8be7['beep']=_0x5b4044['body'][_0x9680('0x49')]||![];_0x5b8be7[_0x9680('0x4a')]=_0x5b4044[_0x9680('0x42')]['id'];return getContent(_0x5b4044[_0x9680('0x31')])[_0x9680('0x2c')](function(_0x22c6e6){_0x5b8be7[_0x9680('0x31')]=_0x22c6e6;return getRecipients(_0x256e91);})['then'](function(_0x57e6fd){_0x5b8be7[_0x9680('0x4b')]=_['sortBy'](_0x57e6fd)[_0x9680('0x4c')](',');return db[_0x9680('0x4d')][_0x9680('0x4e')](function(_0x30d176){return db[_0x9680('0x4f')][_0x9680('0x50')](_0x5b8be7,{'raw':!![],'transaction':_0x30d176})[_0x9680('0x2c')](function(_0x3f06c6){var _0x3b89a9={'sender':_0x5b8be7[_0x9680('0x46')],'description':_0x5b8be7[_0x9680('0x48')],'content':_0x5b8be7[_0x9680('0x31')],'beep':_0x5b8be7[_0x9680('0x49')]};_0x57e6fd[_0x9680('0x51')](function(_0x38d5be){_0x3b89a9[_0x9680('0x52')]=_0x38d5be;socket[_0x9680('0x53')]('userNotification:send',_0x3b89a9);});return _0x3f06c6;});});})[_0x9680('0x2c')](respondWithResult(_0x12a85e,0xc9))[_0x9680('0x54')](handleError(_0x12a85e,null));};function getContent(_0x18de11){return new BPromise(function(_0x5a12bd,_0xa719df){if(_0x18de11['text']){_0x5a12bd(_0x18de11[_0x9680('0x55')]);return;}return db['Template']['findOne']({'attributes':[_0x9680('0x56')],'where':{'id':_0x18de11['TemplateId']},'raw':!![]})[_0x9680('0x2c')](function(_0x2ae227){if(!_0x2ae227)throw new db[(_0x9680('0x34'))][(_0x9680('0x35'))](_0x9680('0x57'));var _0xad5d1a=Mustache[_0x9680('0x58')](_0x2ae227[_0x9680('0x56')],_0x18de11[_0x9680('0x37')]);_0x5a12bd(_0xad5d1a);})['catch'](function(_0x1d4559){_0xa719df(_0x1d4559);});});}function getRecipients(_0x4ed750){return new BPromise(function(_0xab0fbb,_0x2969f1){var _0x1f428d=[];var _0x39976d=[];_0x4ed750[_0x9680('0x51')](function(_0x57f2e4){var _0x2b345d=_[_0x9680('0x59')](_0x57f2e4[_0x9680('0x5a')][_0x9680('0x5b')]());if(_0x2b345d===_0x9680('0x5c')){_0x1f428d=_[_0x9680('0x5d')](_0x1f428d,_0x57f2e4['ids']);}else{if(_[_0x9680('0x44')](_0x2b345d,_0x9680('0x5e')))_0x2b345d=_0x2b345d[_0x9680('0x5f')](_0x9680('0x5e'),_0x9680('0x60'));_0x57f2e4['ids']['forEach'](function(_0x32752b){_0x39976d[_0x9680('0x61')](getAgents(_0x2b345d,_0x32752b));});}});return BPromise['all'](_0x39976d)[_0x9680('0x2c')](function(_0x51f272){_0x1f428d=_[_0x9680('0x5d')](_0x1f428d,_[_0x9680('0x62')](_0x51f272));_0xab0fbb(_0x1f428d);})['catch'](function(_0x8392db){_0x2969f1(_0x8392db);});});}function getAgents(_0x8a0a74,_0x8fcf10){return new BPromise(function(_0x7c3601,_0x430950){return db[_0x8a0a74][_0x9680('0x63')]({'where':{'id':_0x8fcf10}})[_0x9680('0x2c')](function(_0x33d19d){return _0x33d19d[_0x9680('0x64')]({'attributes':['id'],'raw':!![]})[_0x9680('0x2c')](function(_0x4ed75d){var _0x424cda=_['map'](_0x4ed75d,'id');_0x7c3601(_0x424cda);});})[_0x9680('0x54')](function(_0x3d34f5){_0x430950(_0x3d34f5);});});}