var express = require('express'); var router = new express.Router(); var config = require('../config.js'); var mail = require('../mail.js'); var template = require('../template.js'); var httpRequest = require('request'); var auth = require('../auth.js'); // Auth middleware var requestToken = function(request, response, next) { auth.init(request, response, next); }; // Printer setup router.get('/printer-setup/:clientId', requestToken, function(request, response) { mail.sendWithTemplate('printer-setup', {clientId: request.params.clientId}, error => { if (error) return response.status(400).json({message: error.message}); return response.json(); }); }); // Printer setup preview router.get('/printer-setup/:clientId/preview', requestToken, function(request, response) { template.get('printer-setup', {clientId: request.params.clientId, isPreview: true}, (error, result) => { if (error) return response.status(400).json({message: error.message}); response.send(result.body); }); }); // Client welcome router.get('/client-welcome/:clientId', requestToken, function(request, response) { mail.sendWithTemplate('client-welcome', {clientId: request.params.clientId}, error => { if (error) return response.status(400).json({message: error.message}); return response.json(); }); }); // Client welcome preview router.get('/client-welcome/:clientId/preview', requestToken, function(request, response) { template.get('client-welcome', {clientId: request.params.clientId, isPreview: true}, (error, result) => { if (error) return response.status(400).json({message: error.message}); response.send(result.body); }); }); // Client SEPA CORE router.get('/sepa-core/:companyId/:clientId', requestToken, function(request, response) { let params = { clientId: request.params.clientId, companyId: request.params.companyId }; let path = `${request.proxyHost}/print/manuscript/sepa-core/${params.companyId}/${params.clientId}`; let options = { url: path, method: 'GET', headers: { 'Authorization': request.headers.authorization } } let httpStream = httpRequest(options, function(error, httpResponse, body) { if (error || httpResponse.statusCode != 200) return response.status(400).json({message: error}); }); if (httpStream) params.attachments = [{filename: 'sepa-core.pdf', content: httpStream}]; mail.sendWithTemplate('sepa-core', params, error => { if (error) return response.status(400).json({message: error.message}); return response.json(); }); }); // Client SEPA CORE preview router.get('/sepa-core/:companyId/:clientId/preview', requestToken, function(request, response) { let params = { clientId: request.params.clientId, companyId: request.params.companyId, token: request.user.token, isPreview: true }; template.get('sepa-core', params, (error, result) => { if (error) return response.status(400).json({message: error.message}); response.send(result.body); }); }); // First debtor letter router.get('/letter-debtor-st/:companyId/:clientId', requestToken, function(request, response) { let params = { clientId: request.params.clientId, companyId: request.params.companyId, token: request.user.token }; let path = `${request.proxyHost}/print/manuscript/letter-debtor/${params.companyId}/${params.clientId}`; let options = { url: path, method: 'GET', headers: { 'Authorization': request.user.token } } let httpStream = httpRequest(options, function(error, httpResponse, body) { if (error || httpResponse.statusCode != 200) return response.status(400).json({message: error}); }); if (httpStream) params.attachments = [{filename: 'extracto.pdf', content: httpStream}]; mail.sendWithTemplate('letter-debtor-st', params, error => { if (error) return response.status(400).json({message: error.message}); return response.json(); }); }); // First debtor letter preview router.get('/letter-debtor-st/:companyId/:clientId/preview', requestToken, function(request, response) { template.get('letter-debtor-st', { clientId: request.params.clientId, companyId: request.params.companyId, token: request.user.token, isPreview: true }, (error, result) => { if (error) return response.status(400).json({message: error.message}); response.send(result.body); }); }); // Second debtor letter router.get('/letter-debtor-nd/:companyId/:clientId', requestToken, function(request, response) { let params = { clientId: request.params.clientId, companyId: request.params.companyId, token: request.user.token }; let path = `${request.proxyHost}/print/manuscript/letter-debtor/${params.companyId}/${params.clientId}`; let options = { url: path, method: 'GET', headers: { 'Authorization': request.headers.authorization } } let httpStream = httpRequest(options, function(error, httpResponse, body) { if (error || httpResponse.statusCode != 200) return response.status(400).json({message: error}); }); if (httpStream) params.attachments = [{filename: 'extracto.pdf', content: httpStream}]; mail.sendWithTemplate('letter-debtor-nd', params, error => { if (error) return response.status(400).json({message: error.message}); return response.json(); }); }); // Second debtor letter preview router.get('/letter-debtor-nd/:companyId/:clientId/preview', requestToken, function(request, response) { template.get('letter-debtor-nd', { clientId: request.params.clientId, companyId: request.params.companyId, token: request.user.token, isPreview: true }, (error, result) => { if (error) return response.status(400).json({message: error.message}); response.send(result.body); }); }); // Payment method changes router.get('/payment-update/:clientId', requestToken, function(request, response) { mail.sendWithTemplate('payment-update', {clientId: request.params.clientId}, error => { if (error) return response.status(400).json({message: error.message}); return response.json(); }); }); // Send notification to alias creditInsurance on client deactivate router.get('/client-deactivate/:clientId', requestToken, function(request, response) { var params = { alias: 'creditInsurance', code: 'clientDeactivate', bodyParams: { clientId: request.params.clientId } }; mail.sendWithTemplate('notification-alias', params, error => { if (error) response.status(400).json({message: error.message}); return response.json(); }); }); module.exports = router; // Single user notification /* router.post('/:recipient/noticeUserSend', function(request, response) { var params = { recipient: request.params.recipient, sender: request.body.sender, category: request.body.category, message: request.body.message }; if (params.sender == params.recipient) return; let query = `SELECT COUNT(*) isEnabled FROM noticeSubscription s JOIN noticeCategory c ON c.id = s.noticeCategoryFk AND c.isEnabled WHERE c.keyName = ? AND s.userFk = ?`; database.pool.query(query, [params.category, params.recipient, params.sender], (error, result) => { mail.sendWithTemplate('notification-notice', params, result => { return response.json(result); }); }); }); */ // Send notification to all user subscribed to category /* router.post('/:category/noticeCategorySend', function(request, response) { var params = { sender: request.body.sender, category: request.params.category, message: request.body.message }; let query = `SELECT s.userFk id FROM noticeSubscription s JOIN noticeCategory c ON c.id = s.noticeCategoryFk AND c.isEnabled WHERE c.keyName = ? AND s.userFk != ?`; database.pool.query(query, [params.category, params.sender], (error, result) => { result.forEach(function(user) { params.recipient = user.id; mail.sendWithTemplate('notification-notice', params, result => { return response.json(result); }); }, this); }); }); */ // Send system notification /* router.post('/:recipient/noticeSystemSend', function(request, response) { var params = { recipient: request.params.recipient, sender: settings.smtp().auth.id, category: request.body.category, message: request.body.message }; mail.sendWithTemplate('notification-notice', params, result => { return response.json(result); }); }); */