Merge pull request 'feature/master-date' (#108) from feature/master-date into master

Reviewed-on: #108
This commit is contained in:
Ильназ 2025-03-09 09:43:26 +03:00
commit 2f1e1dc040

View File

@ -1,13 +1,24 @@
const router = require('express').Router() const router = require("express").Router();
const {MasterModel} = require('./model/master') const { MasterModel } = require("./model/master");
const mongoose = require("mongoose") const mongoose = require("mongoose");
const {OrderModel} = require("./model/order") const { OrderModel } = require("./model/order");
router.get("/masters", async (req, res, next) => { router.get("/masters", async (req, res, next) => {
try { try {
const masters = await MasterModel.find({}); const masters = await MasterModel.find({});
const orders = await OrderModel.find({});
// Создаем объекты для начала и конца текущего дня
const today = new Date();
today.setHours(0, 0, 0, 0);
const tomorrow = new Date(today);
tomorrow.setDate(tomorrow.getDate() + 1);
const orders = await OrderModel.find({
startWashTime: {
$gte: today,
$lt: tomorrow,
},
});
const mastersWithOrders = masters.map((master) => { const mastersWithOrders = masters.map((master) => {
const masterOrders = orders.filter((order) => { const masterOrders = orders.filter((order) => {
@ -36,11 +47,11 @@ router.get("/masters", async (req, res, next) => {
} }
}); });
router.delete('/masters/:id', async (req, res,next) => { router.delete("/masters/:id", async (req, res, next) => {
const { id } = req.params; const { id } = req.params;
if (!mongoose.Types.ObjectId.isValid(id)){ if (!mongoose.Types.ObjectId.isValid(id)) {
throw new Error('ID is required') throw new Error("ID is required");
} }
try { try {
@ -48,58 +59,52 @@ router.delete('/masters/:id', async (req, res,next) => {
new: true, new: true,
}); });
if (!master) { if (!master) {
throw new Error('master not found') throw new Error("master not found");
} }
res.status(200).send({success: true, body: master}) res.status(200).send({ success: true, body: master });
} catch (error) { } catch (error) {
next(error) next(error);
} }
}) });
router.post("/masters", async (req, res, next) => {
const { name, phone } = req.body;
router.post('/masters', async (req, res,next) => { if (!name || !phone) {
throw new Error("Enter name and phone");
const {name, phone} = req.body
if (!name || !phone ){
throw new Error('Enter name and phone')
} }
try { try {
const master = await MasterModel.create({name, phone}) const master = await MasterModel.create({ name, phone });
res.status(200).send({success: true, body: master}) res.status(200).send({ success: true, body: master });
} catch (error) { } catch (error) {
next(error) next(error);
} }
}) });
router.patch("/masters/:id", async (req, res, next) => {
router.patch('/masters/:id', async (req, res, next) => {
const { id } = req.params; const { id } = req.params;
if (!mongoose.Types.ObjectId.isValid(id)) { if (!mongoose.Types.ObjectId.isValid(id)) {
throw new Error('ID is required') throw new Error("ID is required");
} }
const { name, phone } = req.body; const { name, phone } = req.body;
if (!name && !phone) { if (!name && !phone) {
throw new Error('Enter name and phone') throw new Error("Enter name and phone");
} }
try { try {
const updateData = {}; const updateData = {};
if (name) updateData.name = name; if (name) updateData.name = name;
if (phone) updateData.phone = phone; if (phone) updateData.phone = phone;
const master = await MasterModel.findByIdAndUpdate( const master = await MasterModel.findByIdAndUpdate(id, updateData, {
id, new: true,
updateData, });
{ new: true }
);
if (!master) { if (!master) {
throw new Error('master not found') throw new Error("master not found");
} }
res.status(200).send({ success: true, body: master }); res.status(200).send({ success: true, body: master });
@ -108,4 +113,4 @@ router.patch('/masters/:id', async (req, res, next) => {
} }
}); });
module.exports = router module.exports = router;