From 632d05f6565c9335d41281a92d5a8975bd84d441 Mon Sep 17 00:00:00 2001 From: Sibunnayak Date: Fri, 11 Oct 2024 10:16:21 +0530 Subject: [PATCH] fixing --- resources/Inventory/InventoryModel.js | 1 - resources/Stock/StockController.js | 92 +-------------------------- resources/Stock/StockRoute.js | 3 +- 3 files changed, 2 insertions(+), 94 deletions(-) diff --git a/resources/Inventory/InventoryModel.js b/resources/Inventory/InventoryModel.js index d8003e3..b8610d7 100644 --- a/resources/Inventory/InventoryModel.js +++ b/resources/Inventory/InventoryModel.js @@ -30,7 +30,6 @@ const InventorySchema = new mongoose.Schema( { uniqueId: { type: String, - required: true, unique: true, }, userId: { diff --git a/resources/Stock/StockController.js b/resources/Stock/StockController.js index 7bfe281..ca45b65 100644 --- a/resources/Stock/StockController.js +++ b/resources/Stock/StockController.js @@ -104,7 +104,7 @@ export const getProductsAndStockByPD = async (req, res) => { export const getProductsAndStockByRD = async (req, res) => { try { - const { userId } = req.params; + const userId = req.params.userId || req.user._id; // Pagination parameters const PAGE_SIZE = parseInt(req.query.show) || 10; @@ -200,93 +200,3 @@ export const getProductsAndStockByRD = async (req, res) => { }); } }; - -export const getProductsAndStockForRD = async (req, res) => { - try { - const { userId } = req.user._id; - - // Filtering criteria - const filter = {}; - if (req.query.name) { - filter.name = { - $regex: new RegExp(req.query.name, "i"), - }; - } - if (req.query.category) { - filter.category = mongoose.Types.ObjectId(req.query.category); - } - if (req.query.brand) { - filter.brand = mongoose.Types.ObjectId(req.query.brand); - } - - // Fetch user's RDStock data and products concurrently - const [userStock, products] = await Promise.all([ - RDStock.findOne({ userId: mongoose.Types.ObjectId(userId) }), - Product.aggregate([ - { $match: filter }, - { - $lookup: { - from: "categorymodels", - localField: "category", - foreignField: "_id", - as: "categoryDetails", - }, - }, - { - $lookup: { - from: "brandmodels", - localField: "brand", - foreignField: "_id", - as: "brandDetails", - }, - }, - { - $project: { - category: { $arrayElemAt: ["$categoryDetails.categoryName", 0] }, - brand: { $arrayElemAt: ["$brandDetails.brandName", 0] }, - GST: 1, - HSN_Code: 1, - SKU: 1, - addedBy: 1, - createdAt: 1, - description: 1, - image: 1, - name: 1, - price: 1, - product_Status: 1, - updatedAt: 1, - }, - }, - ]), - ]); - - // Create a stock map for easy lookup - const stockMap = {}; - if (userStock && userStock.products) { - userStock.products.forEach((product) => { - stockMap[product.productid.toString()] = product.Stock; - }); - } - - // Combine products with their respective stock - const productsWithStock = products.map((product) => ({ - ...product, - stock: stockMap[product._id.toString()] || 0, - })); - - // Get total count for pagination purposes - const total = await Product.countDocuments(filter); - - return res.status(200).json({ - success: true, - totalProducts: total, - products: productsWithStock, - }); - } catch (error) { - console.error("Error fetching products with stock:", error); - return res.status(500).json({ - success: false, - message: "Error fetching products and stock", - }); - } -}; \ No newline at end of file diff --git a/resources/Stock/StockRoute.js b/resources/Stock/StockRoute.js index e5e674b..4e21b56 100644 --- a/resources/Stock/StockRoute.js +++ b/resources/Stock/StockRoute.js @@ -2,7 +2,6 @@ import express from "express"; import { getProductsAndStockByPD, getProductsAndStockByRD, - getProductsAndStockForRD, } from "./StockController.js"; import { authorizeRoles, isAuthenticatedUser } from "../../middlewares/auth.js"; import {isAuthenticatedRD} from "../../middlewares/rdAuth.js"; @@ -20,5 +19,5 @@ router.get( authorizeRoles("admin"), getProductsAndStockByRD ); -router.get("/stock", isAuthenticatedRD, getProductsAndStockForRD); +router.get("/stock", isAuthenticatedRD, getProductsAndStockByRD); export default router;