Files
dlearn-api/plugins/HelperFunctions.js
T
Mr Swift ee6bd01224 Init
2024-04-27 20:10:55 +03:30

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
}