From e50b7db1d6cb7739ccaf75b754a868b27f2f0a03 Mon Sep 17 00:00:00 2001 From: ROSHAN GARG Date: Fri, 18 Oct 2024 12:05:32 +0530 Subject: [PATCH] dashboard api done --- resources/RD_Ordes/rdOrderController.js | 43 +++++++++++++++++++++++-- resources/RD_Ordes/rdOrderRoutes.js | 3 ++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/resources/RD_Ordes/rdOrderController.js b/resources/RD_Ordes/rdOrderController.js index 1d2b24c..3151570 100644 --- a/resources/RD_Ordes/rdOrderController.js +++ b/resources/RD_Ordes/rdOrderController.js @@ -7,7 +7,7 @@ import { PDStock } from "../Stock/PdStockModel.js"; import { createKYC } from "../../Utils/rejectKyc.js"; import { Notification } from "../Notification/notificationModal.js"; import { sendPushNotification } from "../../Utils/sendPushNotification.js"; -import {RDStock} from "../Stock/RdStockModel.js"; +import { RDStock } from "../Stock/RdStockModel.js"; // Controller to create a new order by RD export const createOrderRD = async (req, res) => { try { @@ -975,7 +975,7 @@ export const updateCourierStatusToDeliveredForPD = async (req, res) => { } // Check if RDStock exists for the user let rdStock = await RDStock.findOne({ userId }); - + if (!rdStock) { // If no stock record exists, create a new one rdStock = new RDStock({ @@ -1636,3 +1636,42 @@ export const gettotalorderandvalueofrd = async (req, res) => { res.status(500).json({ message: "Server error", error }); } }; +export const getOrderCounts = async (req, res) => { + try { + // console.log(req.user._id,""); + const userId = req.user._id; + const statusCounts = await RdOrder.aggregate([ + { + $match: { + addedBy: userId, // Only match orders added by the current user + }, + }, + { + $group: { + _id: "$status", // Group by status + count: { $sum: 1 }, // Count the number of orders per status + }, + }, + ]); + + // Restructure the result to make it easier to consume + const result = { + new: 0, + dispatched: 0, + cancelled: 0, + processing: 0, + delivered: 0, + }; + + statusCounts.forEach((status) => { + result[status._id] = status.count; + }); + + res.status(200).json({ counts: result }); + } catch (error) { + console.log(error.message); + res + .status(500) + .json({ message: error?.message || "Something went wrong!" }); + } +}; diff --git a/resources/RD_Ordes/rdOrderRoutes.js b/resources/RD_Ordes/rdOrderRoutes.js index e023e68..7ac11d2 100644 --- a/resources/RD_Ordes/rdOrderRoutes.js +++ b/resources/RD_Ordes/rdOrderRoutes.js @@ -8,6 +8,7 @@ import { getDispatchedInvoicesForPd, getInvoiceDetailsByIdForPD, getNewOrders, + getOrderCounts, getPendignOrders, getPlacedOrderById, getPlacedOrdersForPD, @@ -84,4 +85,6 @@ router.route("/pd-invoice/delivered/:invoiceId").put( router .route("/single-rd-ordercount/:distributorId") .get(isAuthenticatedUser, authorizeRoles("admin"), gettotalorderandvalueofrd); +router.route("/get-counts-rdOrders").get(isAuthenticatedRD, getOrderCounts); + export default router;