diff --git a/src/controllers/userController.js b/src/controllers/userController.js index f7172089..7ff9af9c 100644 --- a/src/controllers/userController.js +++ b/src/controllers/userController.js @@ -13,7 +13,7 @@ const { Tankerbooking} = require("../models/tankers") const {EstimationOrder} = require("../models/store"); // Get Data Models -const { RequestedBooking,Supplier, generateSupplierId, FriendRequest,DeliveryBoy} = require("../models/supplier") +const { RecurringRequestedBooking,RequestedBooking,Supplier, generateSupplierId, FriendRequest,DeliveryBoy} = require("../models/supplier") const { User,Counter, generateBookingId,resetCounter,generateCustomerId,ProfilePicture, AddTeamMembers,Cart} = require('../models/User') //const User = require("../models/User"); @@ -1589,6 +1589,59 @@ exports.getuserRequestbookingsForSupplier = async (req, reply) => { }; +exports.getuserRequestbookingsforplansforsupplier = async (req, reply) => { + try { + const { supplierId } = req.params; + + if (!supplierId) { + return reply.code(400).send({ + status_code: 400, + message: "supplierId is required", + }); + } + + // 1) Find all bookings that include this supplier + const bookings = await RecurringRequestedBooking.find({ + "requested_suppliers.supplierId": supplierId, + }) + .sort({ createdAt: -1 }) + .lean(); + + // 2) For each booking, expose only this supplier's subdocument + const data = bookings.map((b) => { + const mySupplierEntry = (b.requested_suppliers || []).find( + (s) => s.supplierId === supplierId + ) || null; + + return { + _id: b._id, + customerId: b.customerId, + type_of_water: b.type_of_water, + capacity: b.capacity, + quantity: b.quantity, + total_required_capacity: b.total_required_capacity, + date: b.date, + time: b.time, + // booking-wide status (e.g., pending/confirmed/cancelled) + booking_status: b.status, + createdAt: b.createdAt, + updatedAt: b.updatedAt, + + // only the supplier's own requested_suppliers entry + my_supplier_entry: mySupplierEntry, // { supplierId, quoted_amount, time, status } + }; + }); + + return reply.send({ + status_code: 200, + message: `Orders for supplier ${supplierId} fetched successfully`, + data, + }); + } catch (err) { + console.error(err); + throw boom.boomify(err); + } +}; const mongoose = require('mongoose'); diff --git a/src/routes/installationRoute.js b/src/routes/installationRoute.js index cd46810f..9c06e1bd 100644 --- a/src/routes/installationRoute.js +++ b/src/routes/installationRoute.js @@ -764,7 +764,7 @@ fastify.post( }, handler: installationController.getIotDataByCustomer, }); - fastify.get("/api/getsinglemasterlistwithslaves/:customerId", { + fastify.get("/api/getsinglemasterlistwithslaves/:customerId/:hardwareId", { schema: { description: "Get single check masrter connected slave data", tags: ["Installation"], @@ -777,6 +777,14 @@ fastify.post( }, required: [ "customerId"], }, + // querystring: { // ✅ allow customerId in query string + // type: 'object', + // required: ['customerId'], + // properties: { + // customerId: { type: 'string' }, + // hardwareId: { type: "string" }, + // } + // } }, handler: installationController.getIotDataByCustomerAndHardwareId, }); diff --git a/src/routes/usersRoute.js b/src/routes/usersRoute.js index 5545d45a..736bdd16 100644 --- a/src/routes/usersRoute.js +++ b/src/routes/usersRoute.js @@ -1200,6 +1200,27 @@ fastify.route({ }); +fastify.route({ + method: "GET", + url: "/api/getuserRequestbookingsforplansforsupplier/:supplierId", + schema: { + description: "Get request plans for a particular supplier", + tags: ["Supplier"], + summary: "Fetch plans where the supplier is requested", + params: { + type: "object", + properties: { + supplierId: { type: "string", description: "Supplier ID" }, + }, + required: ["supplierId"], + }, + security: [{ basicAuth: [] }], + }, + // preHandler: fastify.auth([fastify.authenticate]), + handler: userController.getuserRequestbookingsforplansforsupplier, +}); + + fastify.route({ method: "POST",