ashok 10 months ago
commit 2c08172cc1

@ -105,7 +105,7 @@ exports.addTanks = async (req, reply) => {
if (existingTank) {
throw new Error('The combination of hardwareId and tankhardwareId already exists.');
}
const tankData = {
// InstallerId:InstallerId,
customerId: customerId,
@ -222,6 +222,64 @@ exports.getTank = async (req, reply) => {
}
};
exports.getTanksensorcount = async (req, reply) => {
try {
const { customerId } = req.params;
// Aggregate to count need_sensor values
const needSensorCounts = await Tank.aggregate([
{ $match: { customerId } },
{
$group: {
_id: "$need_sensor",
count: { $sum: 1 },
},
},
]);
const inputIsMotorCounts = await Tank.aggregate([
{ $match: { customerId } },
{ $unwind: "$connections.inputConnections" },
{
$group: {
_id: "$connections.inputConnections.inputismotor",
count: { $sum: 1 },
},
},
]);
// Format the results
const needSensorResult = needSensorCounts.reduce((acc, item) => {
acc[item._id] = item.count;
return acc;
}, {});
const inputIsMotorResult = inputIsMotorCounts.reduce((acc, item) => {
acc[item._id ? "true" : "false"] = item.count;
return acc;
}, {});
// Return the response
reply.send({
customerId,
needSensor: {
yes: needSensorResult["yes"] || 0,
no: needSensorResult["no"] || 0,
},
inputIsMotor: {
true: inputIsMotorResult["true"] || 0,
false: inputIsMotorResult["false"] || 0,
},
});
} catch (error) {
reply.status(500).send({ error: "An error occurred while fetching the data." });
}
};
exports.getTanksofParticularInstaller = async (req, reply) => {
try {
await Tank.find({InstallerId: req.query.InstallerId})
@ -3820,6 +3878,28 @@ exports.getLatestData = async (req, reply) => {
}
};
exports.changesurveystatus = async (req, reply) => {
try {
const customerId = req.params.customerId;
const result = await User.findOneAndUpdate(
{ customerId: customerId },
{ $set: { survey_status: req.body.survey_status } },
{ new: true }
);
reply.code(200).send({ result });
} catch (err) {
// send an error response
reply.code(500).send({ error: err.message });
}
};
exports.checkStatusofIot = async (req, reply) => {
try {
@ -4630,6 +4710,33 @@ client.on('message', async (topic, message) => {
exports.getPendingAndCompletedsurveyOfparticularInstaller = async (request, reply) => {
try {
const { installationId } = request.params;
const survey_status = request.body;
const surveydata = await User.find({
installationId,
survey_status,
});
// Send the response, including both total consumption and filtered consumption records
reply.send({
status_code: 200,
surveydata,
});
} catch (err) {
throw boom.boomify(err);
}
};
exports.consumptionofparticulartank = async (request, reply) => {
try {

@ -56,7 +56,7 @@ const userSchema = new mongoose.Schema(
oneTimePasswordSetFlag: { type: Boolean, default: false },
emails: [{ email: String, verified: { type: Boolean, default: false } }],
services: { password: { bcrypt: String } },
survey_status:{ type:String,default: "pending" },
profile: {
role: [{ type: String, default: "user" }],
firstName: { type: String, default: null },

@ -207,6 +207,37 @@ module.exports = function (fastify, opts, next) {
handler: tanksController.getTank,
});
fastify.get("/api/getTanksensorcount/:customerId", {
schema: {
tags: ["Tank"],
description: "This is to Get Tank Sensor Count and Switch Count",
summary: "This is to Get Tank Tank Sensor Count and Switch Count",
params: {
required: ["customerId"],
type: "object",
properties: {
customerId: {
type: "string",
description: "customerId",
},
},
},
security: [
{
basicAuth: [],
},
],
},
// preHandler: fastify.auth([fastify.authenticate]),
handler: tanksController.getTanksensorcount,
});
fastify.get("/api/getTanksofParticularInstaller", {
schema: {
tags: ["Install"],
@ -622,6 +653,42 @@ module.exports = function (fastify, opts, next) {
handler: tanksController.getLatestData,
});
fastify.route({
method: "GET",
url: "/api/changesurveystatus/:customerId",
schema: {
tags: ["Install"],
summary: "This is for changing survey status",
params: {
required: ["customerId"],
type: "object",
properties: {
customerId: {
type: "string",
description: "customerId",
},
},
},
// querystring: {
// tankName: {type: 'string'}
// },
body: {
type: 'object',
properties: {
survey_status: { type: 'string' },
},
required: ['survey_status'],
},
security: [
{
basicAuth: [],
},
],
},
// preHandler: fastify.auth([fastify.authenticate]),
handler: tanksController.changesurveystatus,
});
fastify.route({
method: "GET",
@ -1085,6 +1152,40 @@ module.exports = function (fastify, opts, next) {
// preHandler: fastify.auth([fastify.authenticate]),
handler: tanksController.consumptionofparticulartank,
});
fastify.route({
method: "PUT",
url: "/api/getPendingAndCompletedsurveyOfparticularInstaller/:installationId",
schema: {
tags: ["Install"],
summary: "This is for getting pending and completed surveys users of particular installer",
params: {
required: ["installationId"],
type: "object",
properties: {
installationId: {
type: "string",
description: "InstallationId",
},
},
},
body: {
type: "object",
properties: {
survey_status: { type: "string" },
},
},
security: [
{
basicAuth: [],
},
],
},
// preHandler: fastify.auth([fastify.authenticate]),
handler: tanksController.getPendingAndCompletedsurveyOfparticularInstaller,
});
next();

Loading…
Cancel
Save