79 lines
2.1 KiB
JavaScript
79 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
var server = require('server');
|
|
|
|
var csrfProtection = require('*/cartridge/scripts/middleware/csrf');
|
|
var userLoggedIn = require('*/cartridge/scripts/middleware/userLoggedIn');
|
|
var consentTracking = require('*/cartridge/scripts/middleware/consentTracking');
|
|
|
|
var Logger = require('dw/system/Logger');
|
|
var log = Logger.getLogger('DevTest','Notifications');
|
|
|
|
server.get('Start',
|
|
server.middleware.https,
|
|
userLoggedIn.validateLoggedIn,
|
|
consentTracking.consent,
|
|
csrfProtection.generateToken,
|
|
function (req, res, next) {
|
|
|
|
var notificationsForm = server.forms.getForm('notifications');
|
|
notificationsForm.clear();
|
|
|
|
if(customer.profile.custom.notificationSales){
|
|
notificationsForm.notificationSales.checked = 'checked';
|
|
}
|
|
if(customer.profile.custom.notificationNew){
|
|
notificationsForm.notificationNew.checked = 'checked';
|
|
}
|
|
if(customer.profile.custom.notificationStock){
|
|
notificationsForm.notificationStock.checked = 'checked';
|
|
}
|
|
|
|
res.render('notificationsform', {
|
|
notificationsForm: notificationsForm
|
|
});
|
|
|
|
log.debug('Rendered Notifications Form');
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
server.post('HandleForm',
|
|
server.middleware.https,
|
|
csrfProtection.validateRequest,
|
|
function (req, res, next) {
|
|
|
|
var notificationsForm = server.forms.getForm('notifications');
|
|
|
|
var URLUtils = require('dw/web/URLUtils');
|
|
var Transaction = require('dw/system/Transaction');
|
|
|
|
Transaction.begin();
|
|
try {
|
|
|
|
customer.profile.custom.notificationSales = notificationsForm.notificationSales.value
|
|
customer.profile.custom.notificationNew = notificationsForm.notificationNew.value
|
|
customer.profile.custom.notificationStock = notificationsForm.notificationStock.value
|
|
|
|
Transaction.commit();
|
|
log.error('Saved notifications');
|
|
|
|
var HookMgr = require('dw/system/HookMgr');
|
|
var userEmail = customer.getProfile().getEmail();
|
|
HookMgr.callHook('app.notification.email', 'sendNotificationsChange', userEmail);
|
|
|
|
} catch (error) {
|
|
|
|
Transaction.rollback();
|
|
log.error(error);
|
|
}
|
|
|
|
// res.redirect( URLUtils.url('Notifications') ); //For testing
|
|
res.redirect( URLUtils.url('Account-Show') );
|
|
|
|
next();
|
|
|
|
})
|
|
|
|
module.exports = server.exports(); |