diff --git a/src/controllers/ordersControllers.ts b/src/controllers/ordersControllers.ts index dc6e923..7acd0ed 100644 --- a/src/controllers/ordersControllers.ts +++ b/src/controllers/ordersControllers.ts @@ -35,7 +35,7 @@ const getOrder = async (req: Request, res: Response) => { } else if (status) { allOrders = await Order.find({ status: status }); } else { - return res.status(400).send("Invalid search query"); + allOrders = await Order.find({}).populate("partner", "firstName lastName"); } return res.status(200).json(allOrders); @@ -66,8 +66,35 @@ const editOrder = async (req: Request, res: Response) => { } } +const getAnnualOrders = async (req: Request, res: Response) => { + console.log("got here at least"); + try { + const orders = await Order.find({status: "FILLED"}); + + const ordersByMonth: number[] = new Array(12) + for (let i:number = 0; i < 12; i++) { + ordersByMonth[i] = 0; + } + + const currYear = new Date().getFullYear(); + + orders.forEach((order: typeof Order) => { + if (order.dateCompleted.getFullYear() == currYear) { + const orderMonth = order.dateCompleted.getMonth(); + ordersByMonth[orderMonth] += order.numDiapers; + } + }) + + return res.status(200).json(ordersByMonth); + } catch (err: any) { + console.error(err.message); + return res.status(500).send({ message: err.message }); + } +} + module.exports = { createOrder, getOrder, editOrder, + getAnnualOrders }; diff --git a/src/routes/orderRouter.ts b/src/routes/orderRouter.ts index 38db429..22fffe6 100644 --- a/src/routes/orderRouter.ts +++ b/src/routes/orderRouter.ts @@ -1,8 +1,10 @@ import express, { type Request, type Response } from "express"; + const { getOrder, createOrder, - editOrder + editOrder, + getAnnualOrders } = require("../controllers/ordersControllers"); const orderRouter = express.Router(); // Creates a new router object @@ -20,5 +22,8 @@ orderRouter.put("/", (req: Request, res: Response) => { editOrder(req, res); }); +orderRouter.get("/annual", (req: Request, res: Response) => { + getAnnualOrders(req, res); +}); export { orderRouter };