ecommerce-express-utils
Version:
A collection of handy express utilities for ecommerce
41 lines (33 loc) • 1.39 kB
JavaScript
const getPromoCode = async (model, req, res, orderModel) => {
try {
const { promoCode } = req.params;
const promotion = await model.findOne({ promoCode });
if (!promotion || promotion.uses >= promotion.maxlimit) {
return res.status(400).json({ message: 'This promo code does not exist or has reached its usage limit', });
}
const currentDate = new Date();
const validStartDate = new Date(promotion.validStartDate);
const validEndDate = new Date(promotion.validEndDate);
if (currentDate < validStartDate || currentDate > validEndDate) {
return res.status(400).json({ message: 'This promo code is not valid at the moment', });
}
if (promotion.promoType === 'unlimited') {
return res.status(200).json(promotion);
}
let checkPromoCode;
if (promotion.promoType === 'oneTime') {
checkPromoCode = await orderModel.find({
customer: req.customer._id,
promoCode,
});
}
if (checkPromoCode.length > 0) {
return res.status(400).json({ message: 'This promo code has already been used' });
} else {
res.status(200).json(promotion);
}
} catch (error) {
res.status(400).json({ error: error.message });
}
};
export { getPromoCode };