ashok 3 months ago
commit a394d5ebf0

@ -2780,6 +2780,71 @@ exports.getPendingOrdersByInstallationAndTeamMember = async (req, reply) => {
}
};
exports.getManagerPendingOrdersByInstallationId = async (req, reply) => {
try {
const { installationId } = req.params;
if (!installationId) {
return reply.status(400).send({ error: "installationId is required" });
}
// Step 1: Fetch orders matching installationId
const orders = await Order.find({ installationId });
if (!orders.length) {
return reply.send({
status_code: 200,
message: "No orders found for this installation",
data: [],
});
}
// Step 2: Filter orders to keep only those having at least one master_connection with work_status === 'pending'
const ordersWithPendingMasters = [];
for (const order of orders) {
const pendingMasters = (order.master_connections || []).filter(mc => mc.work_status === 'pending');
if (pendingMasters.length) {
// Fetch customer details
const customer = await User.findOne({ customerId: order.customerId }).lean();
// Fetch allocated sensors (status blocked)
const allocatedSensors = await Insensors.find({
storeId: order.storeId,
customerId: order.customerId,
status: "blocked",
}).lean();
// Build response object
ordersWithPendingMasters.push({
...order.toObject(),
master_connections: pendingMasters, // keep only pending masters
customer: customer || null,
allocated_sensors: allocatedSensors,
});
}
}
if (!ordersWithPendingMasters.length) {
return reply.send({
status_code: 200,
message: "No pending master connections found for this installation",
data: [],
});
}
return reply.send({
status_code: 200,
message: "Pending orders fetched successfully",
data: ordersWithPendingMasters,
});
} catch (err) {
console.error("Error fetching pending orders:", err);
return reply.status(500).send({ error: "Internal server error" });
}
};
exports.getCompleteOrdersByInstallationId = async (req, reply) => {

@ -2015,6 +2015,28 @@ fastify.get("/api/Pendingordersofinstall/:installationId/:teamMemberId", {
handler: storeController.getPendingOrdersByInstallationAndTeamMember,
});
fastify.get("/api/ManagerPendingordersofinstall/:installationId", {
schema: {
tags: ["Installation"],
description: "Fetches orders based on installationId",
summary: "Get Manager Pending orders by installationId",
params: {
type: "object",
properties: {
installationId: { type: "string" },
//teamMemberId: { type: "string"},
//customerId: { type: "string"},
},
// required: ["installationId"],
},
security: [
{
basicAuth: [],
},
],
},
handler: storeController.getManagerPendingOrdersByInstallationId,
});
fastify.get("/api/Completeordersofinstall/:installationId", {
schema: {

Loading…
Cancel
Save