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({}); const mastersWithOrders = masters.map((master) => { const masterOrders = orders.filter((order) => { return ( order?.master && order.master.toString() === master._id.toString() ); }); const schedule = masterOrders.map((order) => ({ id: order._id, startWashTime: order.startWashTime, endWashTime: order.endWashTime, })); 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 } ); if (!master) { throw new Error('master not found') } res.status(200).send({ success: true, body: master }); } catch (error) { next(error); } }); module.exports = router