Inventory

This commit is contained in:
Sibunnayak 2024-08-14 18:36:19 +05:30
parent 01e12dedaf
commit 5ee70e765c

View File

@ -66,14 +66,62 @@ export const getDistributors = async (req, res) => {
export const getAllInventories = async (req, res) => {
try {
const inventories = await Inventory.find();
const {
page = 1,
show = 10,
startDate,
endDate
} = req.query;
// Build query
const query = {};
if (startDate && endDate) {
const start = new Date(startDate);
const end = new Date(endDate);
if (start.toDateString() === end.toDateString()) {
// If startDate and endDate are the same, fetch records for that day
query.createdAt = {
$gte: new Date(startDate),
$lt: new Date(startDate).setDate(new Date(startDate).getDate() + 1) // Until the end of that day
};
} else {
// If startDate and endDate are different, fetch records between these dates
query.createdAt = {
$gte: start,
$lte:new Date(end).setDate(new Date(end).getDate() + 1)
};
}
} else if (startDate) {
// Only startDate is provided
query.createdAt = {
$gte: new Date(startDate),
$lte: new Date() // Up to today's date
};
} else if (endDate) {
// Only endDate is provided
query.createdAt = {
$lte: new Date(endDate)
};
}
// Fetch total count of documents matching the query
const total_data = await Inventory.countDocuments(query);
// Fetch inventory data with pagination
const inventories = await Inventory.find(query)
.skip((page - 1) * show)
.limit(Number(show))
.sort({ createdAt: -1 }); // Optional: Sort by createdAt date in descending order
// Populate additional details
const populatedInventories = await Promise.all(inventories.map(async (inventory) => {
// Populate user details based on userType
let user = null;
if (inventory.userType === 'TerritoryManager') {
user = await TerritoryManager.findById(inventory.userId);
} else if (inventory.userType === 'SalesCoOrdinator') {
} else if (inventory.userType === 'SalesCoordinator') {
user = await SalesCoordinator.findById(inventory.userId);
}
@ -89,7 +137,6 @@ export const getAllInventories = async (req, res) => {
} else if (inventory.addedFor === 'RetailDistributor') {
addedForData = await KYC.findById(inventory.addedForId);
}
return {
...inventory.toObject(),
user,
@ -97,7 +144,11 @@ export const getAllInventories = async (req, res) => {
};
}));
res.status(200).json(populatedInventories);
// Send response with pagination info
res.status(200).json({
total_data,
inventories: populatedInventories
});
} catch (error) {
res.status(500).json({ message: error.message });
}