|
|
|
const fastify = require("fastify");
|
|
|
|
const tanksController = require("../controllers/tanksController");
|
|
|
|
const { Tank } = require('../models/tanks')
|
|
|
|
|
|
|
|
module.exports = function (fastify, opts, next) {
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "POST",
|
|
|
|
url: "/api/addTanks/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
description: "This is for cretae New Tank",
|
|
|
|
summary: "This is for Create New Tank.",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
hardwareId: { type: "string" },
|
|
|
|
tankName: { type: "string" },
|
|
|
|
blockName: { type: "string"},
|
|
|
|
capacity: { type: "string" },
|
|
|
|
typeOfWater: { type: "string" },
|
|
|
|
|
|
|
|
tankLocation: { type: "string" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.addTanks,
|
|
|
|
// onResponse: (request, reply) => {
|
|
|
|
// validationHandler.sendPhoneVerificationCode(request, reply);
|
|
|
|
// },
|
|
|
|
//onResponse: validationHandler.sendPhoneVerificationCode,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "PUT",
|
|
|
|
url: "/api/updateTanks/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for update tank",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
querystring: {
|
|
|
|
tankName: {type: 'string'}
|
|
|
|
},
|
|
|
|
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
// required: ['phone'],
|
|
|
|
properties: {
|
|
|
|
|
|
|
|
tankName: { type: "string", default: null },
|
|
|
|
blockName: { type: "string", default: null },
|
|
|
|
capacity: { type: "string" },
|
|
|
|
typeOfWater: { type: "string", default: null },
|
|
|
|
type: { type: "string" },
|
|
|
|
tankLocation: { type: "string", default: null },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
// preHandler: [
|
|
|
|
// fastify.auth([fastify.operatorAuthenticate]),
|
|
|
|
// validationHandler.validatePhoneFormat,
|
|
|
|
// ],
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.updateTanksInfo,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "PUT",
|
|
|
|
url: "/api/deleteTank/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for delete tank",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
querystring: {
|
|
|
|
tankName: {type: 'string'}
|
|
|
|
},
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
// required: ['phone'],
|
|
|
|
properties: {
|
|
|
|
|
|
|
|
|
|
|
|
tankLocation: { type: "string", default: null },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.deleteTanksInfo,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.get("/api/getTanks", {
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
description: "This is for Get Tank Data",
|
|
|
|
summary: "This is for to Get Tank Data",
|
|
|
|
querystring: {
|
|
|
|
customerId: {type: 'string'}
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.getTank,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "PUT",
|
|
|
|
url: "/api/updateTanklevels/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for updating tank levels",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
// querystring: {
|
|
|
|
// tankName: {type: 'string'}
|
|
|
|
// },
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.updateTanklevels,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/getTanklevels/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for getting tank levels",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// querystring: {
|
|
|
|
// tankName: {type: 'string'}
|
|
|
|
// },
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.getTanklevels,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "PUT",
|
|
|
|
url: "/api/motorAction/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for start and stop",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
// required: ['phone'],
|
|
|
|
properties: {
|
|
|
|
|
|
|
|
to: { type: "string", default: null },
|
|
|
|
from: { type: "string", default: null },
|
|
|
|
from_type: { type: "string" },
|
|
|
|
to_type: { type: "string" },
|
|
|
|
action: { type: "string" },
|
|
|
|
percentage: { type: "string",default: "100" },
|
|
|
|
startTime:{ type: "string" },
|
|
|
|
stopTime:{ type: "string" },
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
// preHandler: [
|
|
|
|
// fastify.auth([fastify.operatorAuthenticate]),
|
|
|
|
// validationHandler.validatePhoneFormat,
|
|
|
|
// ],
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.motorAction,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/consumption/:customerId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for getting consumption",
|
|
|
|
params: {
|
|
|
|
required: ["customerId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: {
|
|
|
|
type: "string",
|
|
|
|
description: "customerId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// querystring: {
|
|
|
|
// tankName: {type: 'string'}
|
|
|
|
// },
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.consumption,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "PUT",
|
|
|
|
url: "/api/calculateCapacity",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for calculating the capacity",
|
|
|
|
|
|
|
|
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
// required: ['phone'],
|
|
|
|
properties: {
|
|
|
|
shape: { type: "string", default: null },
|
|
|
|
length: { type: "string", default: null },
|
|
|
|
width: { type: "string", default: null },
|
|
|
|
height: { type: "string" },
|
|
|
|
diameter:{ type: "string" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
// preHandler: [
|
|
|
|
// fastify.auth([fastify.operatorAuthenticate]),
|
|
|
|
// validationHandler.validatePhoneFormat,
|
|
|
|
// ],
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.calculateCapacity,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "POST",
|
|
|
|
url: "/api/APIWrite",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
description: "This is for cretae IOT Device",
|
|
|
|
summary: "This is for Create IOT Device.",
|
|
|
|
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
hardwareId: { type: "string" },
|
|
|
|
tankHeight: { type: "string"},
|
|
|
|
maxLevel: { type: "string" },
|
|
|
|
minLevel: { type: "string" },
|
|
|
|
|
|
|
|
mode: { type: "string" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
// preHandler: [
|
|
|
|
// fastify.auth([fastify.operatorAuthenticate]),
|
|
|
|
// validationHandler.validatePhoneFormat,
|
|
|
|
// ],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
handler: tanksController.IotDevice,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/APIRead", {
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
description: "This is for Get IOT Data",
|
|
|
|
summary: "This is for to Get IOT Data",
|
|
|
|
querystring: {
|
|
|
|
hardwareId: {type: 'string'}
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.getIotD,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/calculateTimedifference/:hardwareId",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for calculating the time gap between iot data",
|
|
|
|
params: {
|
|
|
|
required: ["hardwareId"],
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
hardwareId: {
|
|
|
|
type: "string",
|
|
|
|
description: "hardwareId",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// querystring: {
|
|
|
|
// tankName: {type: 'string'}
|
|
|
|
// },
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.getLatestData,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/checkStatusofIot",
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
summary: "This is for checking the status of iots",
|
|
|
|
|
|
|
|
// querystring: {
|
|
|
|
// tankName: {type: 'string'}
|
|
|
|
// },
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
preHandler: fastify.auth([fastify.authenticate]),
|
|
|
|
handler: tanksController.checkStatusofIot,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: 'GET',
|
|
|
|
url: '/waterlevel-sum',
|
|
|
|
|
|
|
|
schema: {
|
|
|
|
tags: ["Tank"],
|
|
|
|
description: "This is for water level sum",
|
|
|
|
summary: "This is forwater level sum.",
|
|
|
|
querystring: {
|
|
|
|
type: 'object',
|
|
|
|
properties: {
|
|
|
|
tankLocation: { type: 'string' },
|
|
|
|
typeOfWater: { type: 'string' }
|
|
|
|
},
|
|
|
|
required: ['tankLocation', 'typeOfWater']
|
|
|
|
},
|
|
|
|
response: {
|
|
|
|
200: {
|
|
|
|
type: 'object',
|
|
|
|
properties: {
|
|
|
|
waterlevelSum: { type: 'integer' }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
handler: tanksController.totalwaterLevelSum
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.route({
|
|
|
|
method: 'POST',
|
|
|
|
url: '/update-waterlevel',
|
|
|
|
schema: {
|
|
|
|
tags: ['Tank'],
|
|
|
|
description: 'This is for updating waterlevel of a tank based on its IOTtank document',
|
|
|
|
summary: 'This is for updating waterlevel of a tank',
|
|
|
|
body: {
|
|
|
|
type: 'object',
|
|
|
|
properties: {
|
|
|
|
hardwareId: { type: 'string' },
|
|
|
|
},
|
|
|
|
required: ['hardwareId'],
|
|
|
|
},
|
|
|
|
response: {
|
|
|
|
200: {
|
|
|
|
type: 'object',
|
|
|
|
properties: {
|
|
|
|
message: { type: 'string' },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
404: {
|
|
|
|
type: 'object',
|
|
|
|
properties: {
|
|
|
|
message: { type: 'string' },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
500: {
|
|
|
|
type: 'object',
|
|
|
|
properties: {
|
|
|
|
message: { type: 'string' },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
security: [
|
|
|
|
{
|
|
|
|
basicAuth: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
handler: tanksController.startUpdateLoop,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
next();
|
|
|
|
}
|
|
|
|
|
|
|
|
|