Linting
parent
a4e0f03b70
commit
e68be9aa14
137
routes/index.js
137
routes/index.js
|
@ -3,7 +3,19 @@ const router = express.Router();
|
|||
const colors = require('colors');
|
||||
const async = require('async');
|
||||
const _ = require('lodash');
|
||||
const common = require('../lib/common');
|
||||
const {
|
||||
getId,
|
||||
hooker,
|
||||
showCartCloseBtn,
|
||||
clearSessionValue,
|
||||
sortMenu,
|
||||
getMenu,
|
||||
getPaymentConfig,
|
||||
getImages,
|
||||
updateTotalCartAmount,
|
||||
getData,
|
||||
addSitemapProducts
|
||||
} = require('../lib/common');
|
||||
|
||||
// These is the customer facing routes
|
||||
router.get('/payment/:orderId', async (req, res, next) => {
|
||||
|
@ -11,7 +23,7 @@ router.get('/payment/:orderId', async (req, res, next) => {
|
|||
let config = req.app.config;
|
||||
|
||||
// render the payment complete message
|
||||
db.orders.findOne({ _id: common.getId(req.params.orderId) }, async (err, order) => {
|
||||
db.orders.findOne({ _id: getId(req.params.orderId) }, async (err, order) => {
|
||||
if(err){
|
||||
console.info(err.stack);
|
||||
}
|
||||
|
@ -19,7 +31,7 @@ router.get('/payment/:orderId', async (req, res, next) => {
|
|||
// If stock management is turned on payment approved update stock level
|
||||
if(config.trackStock && req.session.paymentApproved){
|
||||
order.orderProducts.forEach(async (product) => {
|
||||
const dbProduct = await db.products.findOne({ _id: common.getId(product.productId) });
|
||||
const dbProduct = await db.products.findOne({ _id: getId(product.productId) });
|
||||
let newStockLevel = dbProduct.productStock - product.quantity;
|
||||
if(newStockLevel < 1){
|
||||
newStockLevel = 0;
|
||||
|
@ -27,7 +39,7 @@ router.get('/payment/:orderId', async (req, res, next) => {
|
|||
|
||||
// Update product stock
|
||||
await db.products.update({
|
||||
_id: common.getId(product.productId)
|
||||
_id: getId(product.productId)
|
||||
}, {
|
||||
$set: {
|
||||
productStock: newStockLevel
|
||||
|
@ -36,17 +48,22 @@ router.get('/payment/:orderId', async (req, res, next) => {
|
|||
});
|
||||
}
|
||||
|
||||
// If hooks are configured, send hook
|
||||
if(config.orderHook){
|
||||
await hooker(order);
|
||||
};
|
||||
|
||||
res.render(`${config.themeViews}payment_complete`, {
|
||||
title: 'Payment complete',
|
||||
config: req.app.config,
|
||||
session: req.session,
|
||||
pageCloseBtn: common.showCartCloseBtn('payment'),
|
||||
pageCloseBtn: showCartCloseBtn('payment'),
|
||||
result: order,
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter',
|
||||
menu: common.sortMenu(await common.getMenu(db))
|
||||
menu: sortMenu(await getMenu(db))
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -67,11 +84,11 @@ router.get('/checkout', async (req, res, next) => {
|
|||
title: 'Checkout',
|
||||
config: req.app.config,
|
||||
session: req.session,
|
||||
pageCloseBtn: common.showCartCloseBtn('checkout'),
|
||||
pageCloseBtn: showCartCloseBtn('checkout'),
|
||||
checkout: 'hidden',
|
||||
page: 'checkout',
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter'
|
||||
});
|
||||
|
@ -92,13 +109,13 @@ router.get('/pay', async (req, res, next) => {
|
|||
res.render(`${config.themeViews}pay`, {
|
||||
title: 'Pay',
|
||||
config: req.app.config,
|
||||
paymentConfig: common.getPaymentConfig(),
|
||||
pageCloseBtn: common.showCartCloseBtn('pay'),
|
||||
paymentConfig: getPaymentConfig(),
|
||||
pageCloseBtn: showCartCloseBtn('pay'),
|
||||
session: req.session,
|
||||
paymentPage: true,
|
||||
page: 'pay',
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter'
|
||||
});
|
||||
|
@ -108,7 +125,7 @@ router.get('/cartPartial', (req, res) => {
|
|||
const config = req.app.config;
|
||||
|
||||
res.render(`${config.themeViews}cart`, {
|
||||
pageCloseBtn: common.showCartCloseBtn(req.query.path),
|
||||
pageCloseBtn: showCartCloseBtn(req.query.path),
|
||||
page: req.query.path,
|
||||
layout: false,
|
||||
helpers: req.handlebars.helpers,
|
||||
|
@ -122,7 +139,7 @@ router.get('/product/:id', (req, res) => {
|
|||
let db = req.app.db;
|
||||
let config = req.app.config;
|
||||
|
||||
db.products.findOne({ $or: [{ _id: common.getId(req.params.id) }, { productPermalink: req.params.id }] }, (err, result) => {
|
||||
db.products.findOne({ $or: [{ _id: getId(req.params.id) }, { productPermalink: req.params.id }] }, (err, result) => {
|
||||
// render 404 if page is not published
|
||||
if(err){
|
||||
res.render('error', { title: 'Not found', message: 'Product not found', helpers: req.handlebars.helpers, config });
|
||||
|
@ -142,7 +159,7 @@ router.get('/product/:id', (req, res) => {
|
|||
}
|
||||
|
||||
// show the view
|
||||
common.getImages(result._id, req, res, async (images) => {
|
||||
getImages(result._id, req, res, async (images) => {
|
||||
res.render(`${config.themeViews}product`, {
|
||||
title: result.productTitle,
|
||||
result: result,
|
||||
|
@ -150,15 +167,15 @@ router.get('/product/:id', (req, res) => {
|
|||
images: images,
|
||||
productDescription: result.productDescription,
|
||||
metaDescription: config.cartTitle + ' - ' + result.productTitle,
|
||||
pageCloseBtn: common.showCartCloseBtn('product'),
|
||||
pageCloseBtn: showCartCloseBtn('product'),
|
||||
config: config,
|
||||
session: req.session,
|
||||
pageUrl: config.baseUrl + req.originalUrl,
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter',
|
||||
menu: common.sortMenu(await common.getMenu(db))
|
||||
menu: sortMenu(await getMenu(db))
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -180,7 +197,7 @@ router.post('/product/updatecart', (req, res, next) => {
|
|||
req.session.cart.splice(cartItem.cartIndex, 1);
|
||||
callback(null);
|
||||
}else{
|
||||
db.products.findOne({ _id: common.getId(cartItem.productId) }, (err, product) => {
|
||||
db.products.findOne({ _id: getId(cartItem.productId) }, (err, product) => {
|
||||
if(err){
|
||||
console.error(colors.red('Error updating cart', err));
|
||||
}
|
||||
|
@ -209,7 +226,7 @@ router.post('/product/updatecart', (req, res, next) => {
|
|||
}
|
||||
}, async () => {
|
||||
// update total cart amount
|
||||
common.updateTotalCartAmount(req, res);
|
||||
updateTotalCartAmount(req, res);
|
||||
|
||||
// Update cart to the DB
|
||||
await db.cart.update({ sessionId: req.session.id }, {
|
||||
|
@ -249,7 +266,7 @@ router.post('/product/removefromcart', (req, res, next) => {
|
|||
$set: { cart: req.session.cart }
|
||||
});
|
||||
// update total cart amount
|
||||
common.updateTotalCartAmount(req, res);
|
||||
updateTotalCartAmount(req, res);
|
||||
|
||||
if(itemRemoved === false){
|
||||
return res.status(400).json({ message: 'Product not found in cart' });
|
||||
|
@ -270,7 +287,7 @@ router.post('/product/emptycart', async (req, res, next) => {
|
|||
await db.cart.removeOne({ sessionId: req.session.id });
|
||||
|
||||
// update total cart amount
|
||||
common.updateTotalCartAmount(req, res);
|
||||
updateTotalCartAmount(req, res);
|
||||
res.status(200).json({ message: 'Cart successfully emptied', totalCartItems: 0 });
|
||||
});
|
||||
|
||||
|
@ -292,7 +309,7 @@ router.post('/product/addtocart', (req, res, next) => {
|
|||
}
|
||||
|
||||
// Get the item from the DB
|
||||
db.products.findOne({ _id: common.getId(req.body.productId) }, async (err, product) => {
|
||||
db.products.findOne({ _id: getId(req.body.productId) }, async (err, product) => {
|
||||
if(err){
|
||||
console.error(colors.red('Error adding to cart', err));
|
||||
return res.status(400).json({ message: 'Error updating cart. Please try again.' });
|
||||
|
@ -388,7 +405,7 @@ router.post('/product/addtocart', (req, res, next) => {
|
|||
}, { upsert: true });
|
||||
|
||||
// update total cart amount
|
||||
common.updateTotalCartAmount(req, res);
|
||||
updateTotalCartAmount(req, res);
|
||||
|
||||
// update how many products in the shopping cart
|
||||
req.session.cartTotalItems = req.session.cart.reduce((a, b) => +a + +b.quantity, 0);
|
||||
|
@ -406,7 +423,7 @@ router.get('/search/:searchTerm/:pageNum?', (req, res) => {
|
|||
|
||||
let lunrIdArray = [];
|
||||
productsIndex.search(searchTerm).forEach((id) => {
|
||||
lunrIdArray.push(common.getId(id.ref));
|
||||
lunrIdArray.push(getId(id.ref));
|
||||
});
|
||||
|
||||
let pageNum = 1;
|
||||
|
@ -415,8 +432,8 @@ router.get('/search/:searchTerm/:pageNum?', (req, res) => {
|
|||
}
|
||||
|
||||
Promise.all([
|
||||
common.getData(req, pageNum, { _id: { $in: lunrIdArray } }),
|
||||
common.getMenu(db)
|
||||
getData(req, pageNum, { _id: { $in: lunrIdArray } }),
|
||||
getMenu(db)
|
||||
])
|
||||
.then(([results, menu]) => {
|
||||
// If JSON query param return json instead
|
||||
|
@ -432,15 +449,15 @@ router.get('/search/:searchTerm/:pageNum?', (req, res) => {
|
|||
session: req.session,
|
||||
metaDescription: req.app.config.cartTitle + ' - Search term: ' + searchTerm,
|
||||
searchTerm: searchTerm,
|
||||
pageCloseBtn: common.showCartCloseBtn('search'),
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
pageCloseBtn: showCartCloseBtn('search'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
productsPerPage: numberProducts,
|
||||
totalProductCount: results.totalProducts,
|
||||
pageNum: pageNum,
|
||||
paginateUrl: 'search',
|
||||
config: config,
|
||||
menu: common.sortMenu(menu),
|
||||
menu: sortMenu(menu),
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter'
|
||||
});
|
||||
|
@ -460,7 +477,7 @@ router.get('/category/:cat/:pageNum?', (req, res) => {
|
|||
|
||||
let lunrIdArray = [];
|
||||
productsIndex.search(searchTerm).forEach((id) => {
|
||||
lunrIdArray.push(common.getId(id.ref));
|
||||
lunrIdArray.push(getId(id.ref));
|
||||
});
|
||||
|
||||
let pageNum = 1;
|
||||
|
@ -469,11 +486,11 @@ router.get('/category/:cat/:pageNum?', (req, res) => {
|
|||
}
|
||||
|
||||
Promise.all([
|
||||
common.getData(req, pageNum, { _id: { $in: lunrIdArray } }),
|
||||
common.getMenu(db)
|
||||
getData(req, pageNum, { _id: { $in: lunrIdArray } }),
|
||||
getMenu(db)
|
||||
])
|
||||
.then(([results, menu]) => {
|
||||
const sortedMenu = common.sortMenu(menu);
|
||||
const sortedMenu = sortMenu(menu);
|
||||
|
||||
// If JSON query param return json instead
|
||||
if(req.query.json === 'true'){
|
||||
|
@ -488,9 +505,9 @@ router.get('/category/:cat/:pageNum?', (req, res) => {
|
|||
session: req.session,
|
||||
searchTerm: searchTerm,
|
||||
metaDescription: req.app.config.cartTitle + ' - Category: ' + searchTerm,
|
||||
pageCloseBtn: common.showCartCloseBtn('category'),
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
pageCloseBtn: showCartCloseBtn('category'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
productsPerPage: numberProducts,
|
||||
totalProductCount: results.totalProducts,
|
||||
pageNum: pageNum,
|
||||
|
@ -512,7 +529,7 @@ router.get('/sitemap.xml', (req, res, next) => {
|
|||
let sm = require('sitemap');
|
||||
let config = req.app.config;
|
||||
|
||||
common.addSitemapProducts(req, res, (err, products) => {
|
||||
addSitemapProducts(req, res, (err, products) => {
|
||||
if(err){
|
||||
console.error(colors.red('Error generating sitemap.xml', err));
|
||||
}
|
||||
|
@ -546,8 +563,8 @@ router.get('/page/:pageNum', (req, res, next) => {
|
|||
let numberProducts = config.productsPerPage ? config.productsPerPage : 6;
|
||||
|
||||
Promise.all([
|
||||
common.getData(req, req.params.pageNum),
|
||||
common.getMenu(db)
|
||||
getData(req, req.params.pageNum),
|
||||
getMenu(db)
|
||||
])
|
||||
.then(([results, menu]) => {
|
||||
// If JSON query param return json instead
|
||||
|
@ -560,10 +577,10 @@ router.get('/page/:pageNum', (req, res, next) => {
|
|||
title: 'Shop',
|
||||
results: results.data,
|
||||
session: req.session,
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
metaDescription: req.app.config.cartTitle + ' - Products page: ' + req.params.pageNum,
|
||||
pageCloseBtn: common.showCartCloseBtn('page'),
|
||||
pageCloseBtn: showCartCloseBtn('page'),
|
||||
config: req.app.config,
|
||||
productsPerPage: numberProducts,
|
||||
totalProductCount: results.totalProducts,
|
||||
|
@ -571,7 +588,7 @@ router.get('/page/:pageNum', (req, res, next) => {
|
|||
paginateUrl: 'page',
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter',
|
||||
menu: common.sortMenu(menu)
|
||||
menu: sortMenu(menu)
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
|
@ -588,8 +605,8 @@ router.get('/:page?', (req, res, next) => {
|
|||
// if no page is specified, just render page 1 of the cart
|
||||
if(!req.params.page){
|
||||
Promise.all([
|
||||
common.getData(req, 1, {}),
|
||||
common.getMenu(db)
|
||||
getData(req, 1, {}),
|
||||
getMenu(db)
|
||||
])
|
||||
.then(([results, menu]) => {
|
||||
// If JSON query param return json instead
|
||||
|
@ -603,9 +620,9 @@ router.get('/:page?', (req, res, next) => {
|
|||
theme: config.theme,
|
||||
results: results.data,
|
||||
session: req.session,
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
pageCloseBtn: common.showCartCloseBtn('page'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
pageCloseBtn: showCartCloseBtn('page'),
|
||||
config: req.app.config,
|
||||
productsPerPage: numberProducts,
|
||||
totalProductCount: results.totalProducts,
|
||||
|
@ -613,7 +630,7 @@ router.get('/:page?', (req, res, next) => {
|
|||
paginateUrl: 'page',
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter',
|
||||
menu: common.sortMenu(menu)
|
||||
menu: sortMenu(menu)
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
|
@ -636,14 +653,14 @@ router.get('/:page?', (req, res, next) => {
|
|||
page: page,
|
||||
searchTerm: req.params.page,
|
||||
session: req.session,
|
||||
message: common.clearSessionValue(req.session, 'message'),
|
||||
messageType: common.clearSessionValue(req.session, 'messageType'),
|
||||
pageCloseBtn: common.showCartCloseBtn('page'),
|
||||
message: clearSessionValue(req.session, 'message'),
|
||||
messageType: clearSessionValue(req.session, 'messageType'),
|
||||
pageCloseBtn: showCartCloseBtn('page'),
|
||||
config: req.app.config,
|
||||
metaDescription: req.app.config.cartTitle + ' - ' + page,
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter',
|
||||
menu: common.sortMenu(await common.getMenu(db))
|
||||
menu: sortMenu(await getMenu(db))
|
||||
});
|
||||
}else{
|
||||
res.status(404).render('error', {
|
||||
|
@ -652,7 +669,7 @@ router.get('/:page?', (req, res, next) => {
|
|||
message: '404 Error - Page not found',
|
||||
helpers: req.handlebars.helpers,
|
||||
showFooter: 'showFooter',
|
||||
menu: common.sortMenu(await common.getMenu(db))
|
||||
menu: sortMenu(await getMenu(db))
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue