You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
236 lines
7.4 KiB
236 lines
7.4 KiB
//const Connections = require("../models/CreateConnections");
|
|
//const Tank = require("../models/tanks");
|
|
const { Tank, MotorData } = require('../models/tanks')
|
|
|
|
|
|
const User = require("../models/User");
|
|
const boom = require("boom");
|
|
const fastify = require("fastify")({
|
|
logger: true,
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
exports.createConnections = async (req, res) => {
|
|
try {
|
|
const customerId = req.params.customerId;
|
|
const tankname = req.body.tankname;
|
|
const usertobeInserted = req.body;
|
|
|
|
|
|
// Find the current tank
|
|
const tankInfo = await Tank.findOne({
|
|
customerId: customerId.toString(),
|
|
tankName: tankname,
|
|
});
|
|
|
|
if (!tankInfo) throw new Error(`Tank ${tankname} not found`);
|
|
|
|
// Update source of connections
|
|
tankInfo.connections.source = tankInfo.tankName;
|
|
|
|
// Map inputConnections if provided
|
|
if (usertobeInserted.inputConnections) {
|
|
tankInfo.connections.inputConnections = usertobeInserted.inputConnections.map(
|
|
(connection) => ({
|
|
inputConnections: connection.inputConnections,
|
|
input_type: connection.input_type,
|
|
motor_id: connection.motor_id || null,
|
|
motor_status: connection.motor_status || "0",
|
|
motor_stop_status: connection.motor_stop_status || "1",
|
|
inputismotor: connection.hasOwnProperty("inputismotor")
|
|
? connection.inputismotor
|
|
: false,
|
|
capacity: connection.capacity || null,
|
|
water_level: connection.water_level || null,
|
|
})
|
|
);
|
|
}
|
|
|
|
// Map outputConnections if provided
|
|
if (usertobeInserted.outputConnections) {
|
|
tankInfo.connections.outputConnections = usertobeInserted.outputConnections.map(
|
|
(connection) => ({
|
|
outputConnections: connection.outputConnections,
|
|
output_type: connection.output_type,
|
|
motor_id: connection.motor_id || null,
|
|
motor_status: connection.motor_status || "0",
|
|
motor_stop_status: connection.motor_stop_status || "1",
|
|
outputismotor: connection.hasOwnProperty("outputismotor")
|
|
? connection.outputismotor
|
|
: false,
|
|
capacity: connection.capacity || null,
|
|
water_level: connection.water_level || null,
|
|
})
|
|
);
|
|
}
|
|
|
|
// Save the updated tank
|
|
const tankConnections = await tankInfo.save();
|
|
|
|
// Handle input-to-output and output-to-input logic
|
|
const { inputConnections = [], outputConnections = [] } = usertobeInserted;
|
|
|
|
// Process inputConnections
|
|
for (const input of inputConnections) {
|
|
const relatedTankName = input.inputConnections;
|
|
|
|
// Ensure the related tank exists
|
|
const relatedTank = await Tank.findOne({
|
|
customerId: customerId.toString(),
|
|
tankName: relatedTankName,
|
|
});
|
|
|
|
if (relatedTank) {
|
|
// Check if the current tank already exists in the related tank's outputConnections
|
|
const existsInOutput = relatedTank.connections.outputConnections.some(
|
|
(conn) => conn.outputConnections === tankname
|
|
);
|
|
|
|
if (!existsInOutput) {
|
|
relatedTank.connections.outputConnections.push({
|
|
outputConnections: tankname,
|
|
output_type: "sump",
|
|
motor_id: input.motor_id || null,
|
|
motor_status: input.motor_status || "0",
|
|
motor_stop_status: input.motor_stop_status || "1",
|
|
outputismotor: input.inputismotor || false,
|
|
capacity: tankInfo.capacity || null,
|
|
water_level: tankInfo.waterlevel || null,
|
|
});
|
|
|
|
await relatedTank.save();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Process outputConnections
|
|
for (const output of outputConnections) {
|
|
const relatedTankName = output.outputConnections;
|
|
|
|
// Ensure the related tank exists
|
|
const relatedTank = await Tank.findOne({
|
|
customerId: customerId.toString(),
|
|
tankName: relatedTankName,
|
|
});
|
|
|
|
if (relatedTank) {
|
|
// Check if the current tank already exists in the related tank's inputConnections
|
|
const existsInInput = relatedTank.connections.inputConnections.some(
|
|
(conn) => conn.inputConnections === tankname
|
|
);
|
|
|
|
if (!existsInInput) {
|
|
relatedTank.connections.inputConnections.push({
|
|
inputConnections: tankname,
|
|
input_type: "overhead",
|
|
motor_id: output.motor_id || null,
|
|
motor_status: output.motor_status || "0",
|
|
motor_stop_status: output.motor_stop_status || "1",
|
|
inputismotor: output.outputismotor || false,
|
|
capacity: tankInfo.capacity || null,
|
|
water_level: tankInfo.waterlevel || null,
|
|
});
|
|
|
|
await relatedTank.save();
|
|
}
|
|
}
|
|
}
|
|
|
|
return res.send({ success: true, data: tankConnections });
|
|
} catch (err) {
|
|
console.error(err);
|
|
throw boom.boomify(err);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.updateconnectionInfo = async (req, reply) => {
|
|
try {
|
|
//const username = loginObject.user.username;
|
|
const tankname = req.body.tankname
|
|
const customerId = req.params.customerId;
|
|
const tankInfo = await Tank.findOne({ customerId: customerId.toString(),tankName:tankname })
|
|
const updateData = req.body;
|
|
|
|
tankInfo.connections.source = tankInfo.tankName;
|
|
// if (updateData.inputConnections) tankInfo.connections.inputConnections = updateData.inputConnections;
|
|
// if (updateData.outputConnections) tankInfo.connections.outputConnections = updateData.outputConnections;
|
|
// Update the tank's input connections if provided
|
|
if (updateData.inputConnections) {
|
|
tankInfo.connections.inputConnections = updateData.inputConnections.map(connection => {
|
|
return {
|
|
inputConnections: connection.inputConnections,
|
|
input_type: connection.input_type,
|
|
motor_status: connection.motor_status || "0",
|
|
inputismotor: connection.inputismotor || false // default to false if not specified
|
|
};
|
|
});
|
|
}
|
|
|
|
// Update the tank's output connections if provided
|
|
if (updateData.outputConnections) {
|
|
tankInfo.connections.outputConnections = updateData.outputConnections.map(connection => {
|
|
return {
|
|
outputConnections: connection.outputConnections,
|
|
output_type: connection.output_type,
|
|
outputismotor: connection.outputismotor || false // default to false if not specified
|
|
};
|
|
});
|
|
}
|
|
|
|
const tank_connections = await tankInfo.save();
|
|
return tank_connections;
|
|
} catch (err) {
|
|
throw boom.boomify(err);
|
|
}
|
|
};
|
|
|
|
exports.getConnections = async (req, reply) => {
|
|
try {
|
|
var connectionsData=await Tank.find({customerId: req.query.customerId})
|
|
// var connection_data = connectionsData.connections
|
|
|
|
reply.send({ status_code: 200, data: connectionsData});
|
|
// return tank;
|
|
|
|
|
|
// return tank;
|
|
} catch (err) {
|
|
throw boom.boomify(err);
|
|
}
|
|
};
|
|
|
|
|
|
exports.deleteTankConnections = async (req, reply) => {
|
|
try {
|
|
const customerId = req.params.customerId;
|
|
const tankname = req.query.tankName;
|
|
|
|
const tankInfo = await Tank.findOne({ customerId: customerId.toString(),tankName:tankname })
|
|
console.log(tankInfo)
|
|
|
|
tankInfo.connections.source = tankInfo.tankName;
|
|
tankInfo.connections.inputConnections = [];
|
|
tankInfo.connections.outputConnections = [];
|
|
const tank_connections = await tankInfo.save();
|
|
return tank_connections;
|
|
} catch (err) {
|
|
throw boom.boomify(err);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|