From c828718498bdfd17f1bd78589265b6f0d2525d26 Mon Sep 17 00:00:00 2001 From: ilnaz <237x237@gmail.com> Date: Mon, 3 Mar 2025 19:36:56 +0300 Subject: [PATCH] feat: add today filter --- server/routers/dry-wash/arm-master.js | 207 +++++++++++++------------- 1 file changed, 106 insertions(+), 101 deletions(-) diff --git a/server/routers/dry-wash/arm-master.js b/server/routers/dry-wash/arm-master.js index ce1af19..5403a43 100644 --- a/server/routers/dry-wash/arm-master.js +++ b/server/routers/dry-wash/arm-master.js @@ -1,111 +1,116 @@ -const router = require('express').Router() -const {MasterModel} = require('./model/master') -const mongoose = require("mongoose") -const {OrderModel} = require("./model/order") - +const router = require("express").Router(); +const { MasterModel } = require("./model/master"); +const mongoose = require("mongoose"); +const { OrderModel } = require("./model/order"); router.get("/masters", async (req, res, next) => { - try { - const masters = await MasterModel.find({}); - const orders = await OrderModel.find({}); + try { + const masters = await MasterModel.find({}); - const mastersWithOrders = masters.map((master) => { - const masterOrders = orders.filter((order) => { - return ( - order?.master && order.master.toString() === master._id.toString() - ); - }); + // Создаем объекты для начала и конца текущего дня + const today = new Date(); + today.setHours(0, 0, 0, 0); + const tomorrow = new Date(today); + tomorrow.setDate(tomorrow.getDate() + 1); - const schedule = masterOrders.map((order) => ({ - id: order._id, - startWashTime: order.startWashTime, - endWashTime: order.endWashTime, - })); + const orders = await OrderModel.find({ + startWashTime: { + $gte: today, + $lt: tomorrow, + }, + }); - return { - id: master._id, - name: master.name, - schedule: schedule, - phone: master.phone, - }; - }); - - res.status(200).send({ success: true, body: mastersWithOrders }); - } catch (error) { - next(error); - } -}); - -router.delete('/masters/:id', async (req, res,next) => { - const { id } = req.params; - - if (!mongoose.Types.ObjectId.isValid(id)){ - throw new Error('ID is required') - } - - try { - const master = await MasterModel.findByIdAndDelete(id, { - new: true, - }); - if (!master) { - throw new Error('master not found') - } - res.status(200).send({success: true, body: master}) - } catch (error) { - next(error) - } -}) - - -router.post('/masters', async (req, res,next) => { - - const {name, phone} = req.body - - if (!name || !phone ){ - throw new Error('Enter name and phone') - } - try { - const master = await MasterModel.create({name, phone}) - res.status(200).send({success: true, body: master}) - } catch (error) { - next(error) - } -}) - - -router.patch('/masters/:id', async (req, res, next) => { - const { id } = req.params; - - if (!mongoose.Types.ObjectId.isValid(id)) { - throw new Error('ID is required') - } - - const { name, phone } = req.body; - - if (!name && !phone) { - throw new Error('Enter name and phone') - } - - - try { - const updateData = {}; - if (name) updateData.name = name; - if (phone) updateData.phone = phone; - - const master = await MasterModel.findByIdAndUpdate( - id, - updateData, - { new: true } + const mastersWithOrders = masters.map((master) => { + const masterOrders = orders.filter((order) => { + return ( + order?.master && order.master.toString() === master._id.toString() ); + }); - if (!master) { - throw new Error('master not found') - } + const schedule = masterOrders.map((order) => ({ + id: order._id, + startWashTime: order.startWashTime, + endWashTime: order.endWashTime, + })); - res.status(200).send({ success: true, body: master }); - } catch (error) { - next(error); - } + return { + id: master._id, + name: master.name, + schedule: schedule, + phone: master.phone, + }; + }); + + res.status(200).send({ success: true, body: mastersWithOrders }); + } catch (error) { + next(error); + } }); -module.exports = router +router.delete("/masters/:id", async (req, res, next) => { + const { id } = req.params; + + if (!mongoose.Types.ObjectId.isValid(id)) { + throw new Error("ID is required"); + } + + try { + const master = await MasterModel.findByIdAndDelete(id, { + new: true, + }); + if (!master) { + throw new Error("master not found"); + } + res.status(200).send({ success: true, body: master }); + } catch (error) { + next(error); + } +}); + +router.post("/masters", async (req, res, next) => { + const { name, phone } = req.body; + + if (!name || !phone) { + throw new Error("Enter name and phone"); + } + try { + const master = await MasterModel.create({ name, phone }); + res.status(200).send({ success: true, body: master }); + } catch (error) { + next(error); + } +}); + +router.patch("/masters/:id", async (req, res, next) => { + const { id } = req.params; + + if (!mongoose.Types.ObjectId.isValid(id)) { + throw new Error("ID is required"); + } + + const { name, phone } = req.body; + + if (!name && !phone) { + throw new Error("Enter name and phone"); + } + + try { + const updateData = {}; + if (name) updateData.name = name; + if (phone) updateData.phone = phone; + + const master = await MasterModel.findByIdAndUpdate(id, updateData, { + new: true, + }); + + if (!master) { + throw new Error("master not found"); + } + + res.status(200).send({ success: true, body: master }); + } catch (error) { + next(error); + } +}); + +module.exports = router;