91 lines
2.0 KiB
JavaScript
91 lines
2.0 KiB
JavaScript
|
|
|
|
const checkValidations = validationResult => {
|
|
return (req, res, next) => {
|
|
const errors = validationResult(req)
|
|
if (!errors.isEmpty()) {
|
|
const msg = {}
|
|
errors.errors.forEach(err => {
|
|
msg[err.path] = err.msg
|
|
});
|
|
res.status(422).json(msg)
|
|
} else next()
|
|
}
|
|
}
|
|
|
|
|
|
function filterDatesWithinDays(data, days, status) {
|
|
const currentDate = new Date();
|
|
const sevenDaysAgo = new Date(currentDate.getTime() - days * 24 * 60 * 60 * 1000);
|
|
if (status) {
|
|
return data.orders.filter(item => {
|
|
const itemDate = new Date(item.orderDate);
|
|
return itemDate >= sevenDaysAgo && itemDate <= currentDate && item.status == status;
|
|
});
|
|
} else {
|
|
return data.orders.filter(item => {
|
|
const itemDate = new Date(item.orderDate);
|
|
return itemDate >= sevenDaysAgo && itemDate <= currentDate;
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
function filterWithStatus(data, status) {
|
|
return data.orders.filter(item => {
|
|
return item.status == status;
|
|
});
|
|
}
|
|
|
|
const sumProductsById = (data) => {
|
|
const sumArray = [];
|
|
const map = {};
|
|
|
|
data.forEach(item => {
|
|
item.products.forEach(pd=>{
|
|
const productId = pd.product.uid;
|
|
const product = pd.product;
|
|
const price = pd.price;
|
|
|
|
if (!map[productId]) {
|
|
map[productId] = { product, total: 0, quantity: 0 };
|
|
sumArray.push(map[productId]);
|
|
}
|
|
|
|
map[productId].total += price;
|
|
map[productId].quantity = product.stockQuantity;
|
|
|
|
})
|
|
});
|
|
|
|
return (sumArray.sort((a, b) => a - b)).slice(0, 5);
|
|
};
|
|
|
|
function filterQuantityHigh3(data) {
|
|
return data.products.filter(item => {
|
|
return item.stockQuantity > 0
|
|
});
|
|
}
|
|
|
|
function filterQuantityLow3(data) {
|
|
return data.products.filter(item => {
|
|
return item.stockQuantity <= 3
|
|
});
|
|
}
|
|
|
|
function filterZeroStock(data) {
|
|
return data.products.filter(item => {
|
|
return item.stockQuantity == 0
|
|
});
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
filterDatesWithinDays,
|
|
sumProductsById,
|
|
filterWithStatus,
|
|
filterQuantityHigh3,
|
|
filterQuantityLow3,
|
|
filterZeroStock,
|
|
checkValidations
|
|
} |