|
|
|
const installationController = require("../controllers/installationController")
|
|
|
|
|
|
|
|
module.exports = function (fastify, opts, next) {
|
|
|
|
|
|
|
|
fastify.post("/api/createTeamMember", {
|
|
|
|
schema: {
|
|
|
|
description: "Create a new team member under an installation",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Create Team Member",
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
required: ["departmentId", "firstName", "phone", "password"],
|
|
|
|
properties: {
|
|
|
|
departmentId: { type: "string", description: "Installation ID to associate the team member with" },
|
|
|
|
firstName: { type: "string", description: "Full name of the team member" },
|
|
|
|
phone: { type: "string", description: "Phone number of the team member" },
|
|
|
|
password: { type: "string", description: "Password for the team member" },
|
|
|
|
alternativePhone: { type: "string", },
|
|
|
|
email: { type: "string", },
|
|
|
|
status: { type: "string", },
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
handler: installationController.createTeamMember,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getTeamMembers/:departmentId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get all team members under a specific department",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get Team Members by Department ID",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
departmentId: {
|
|
|
|
type: "string",
|
|
|
|
description: "Department ID to fetch team members from"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
required: ["departmentId"]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getTeamMembers
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getQuations/:installationId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get all quatations under a specific installation",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get all quatations under a specific installation",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
installationId: {
|
|
|
|
type: "string",
|
|
|
|
description: "Installation ID to fetch team members from"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
required: ["installationId"]
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
handler: installationController.getQuotationsByInstallationId
|
|
|
|
});
|
|
|
|
fastify.get("/api/getQuations/:installationId/:teamMemberId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get all quatations under a specific installation and team member",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get all quatations under a specific installation and team member",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
installationId: {
|
|
|
|
type: "string",
|
|
|
|
description: "Installation ID to fetch team members from"
|
|
|
|
},
|
|
|
|
teamMemberId: {
|
|
|
|
type: "string",
|
|
|
|
description: "teamMember ID to fetch team members from"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// required: ["installationId"]
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
handler: installationController.getQuotationsByInstallationAndTeamMember
|
|
|
|
});
|
|
|
|
fastify.post("/api/assignTeammember/:installationId", {
|
|
|
|
schema: {
|
|
|
|
description: "Assign a team member to an installation's quotation",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Assign a team member based on installationId",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
installationId: {
|
|
|
|
type: "string",
|
|
|
|
description: "Installation ID to fetch team members from"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
required: ["installationId"]
|
|
|
|
},
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
teamMemberId: {
|
|
|
|
type: "string",
|
|
|
|
description: "The team member ID to assign"
|
|
|
|
},
|
|
|
|
quotationId: {
|
|
|
|
type: "string",
|
|
|
|
description: "The team member ID to assign"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// required: ["teamMemberId"]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.assignTeamMemberToQuotation
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
fastify.get("/api/getAllInstallers/:departmentName", {
|
|
|
|
schema: {
|
|
|
|
description: "Get All Installtion list",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get All Installtion list",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
departmentName: {
|
|
|
|
type: "string",
|
|
|
|
description: "departmentName to fetch Installation list"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
required: ["departmentName"]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getAllInstallers
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.put("/api/editTeamMember/:installationId/:teamMemberId", {
|
|
|
|
schema: {
|
|
|
|
description: "Update an existing team member's details",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Edit Team Member",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
installationId: { type: "string", description: "Installation ID" },
|
|
|
|
teamMemberId: { type: "string", description: "Team Member ID" }
|
|
|
|
},
|
|
|
|
required: ["installationId", "teamMemberId"]
|
|
|
|
},
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
name: { type: "string" },
|
|
|
|
phone: { type: "string" },
|
|
|
|
email: { type: "string" },
|
|
|
|
alternativePhone: { type: "string" },
|
|
|
|
status: { type: "string" }
|
|
|
|
}
|
|
|
|
},
|
|
|
|
response: {
|
|
|
|
200: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
simplydata: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
error: { type: "boolean" },
|
|
|
|
message: { type: "string" }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
handler: installationController.editTeamMember
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.delete("/api/deleteTeamMember/:installationId/:teamMemberId", {
|
|
|
|
schema: {
|
|
|
|
description: "Delete a team member from an installation",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Delete Team Member",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
installationId: { type: "string", description: "Installation ID" },
|
|
|
|
teamMemberId: { type: "string", description: "Team Member ID" }
|
|
|
|
},
|
|
|
|
required: ["installationId", "teamMemberId"]
|
|
|
|
},
|
|
|
|
response: {
|
|
|
|
200: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
simplydata: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
error: { type: "boolean" },
|
|
|
|
message: { type: "string" }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
handler: installationController.deleteTeamMember
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getDepartmentByFirstName/:firstName", {
|
|
|
|
schema: {
|
|
|
|
description: "Get department details by first name",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Fetch department's firstName and phone",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
firstName: { type: "string", description: "Department's first name" },
|
|
|
|
},
|
|
|
|
required: ["firstName"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getDepartmentByFirstName,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getGsmCheck/:hardwareId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get GSM check details",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get GSM check details",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
hardwareId: { type: "string" },
|
|
|
|
},
|
|
|
|
required: ["hardwareId"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getByHardwareId,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getLoraCheck/:hardwareId/:tankhardwareId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get LORA check details",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get LORA check details",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
hardwareId: { type: "string" },
|
|
|
|
tankhardwareId: { type : "string"},
|
|
|
|
},
|
|
|
|
required: ["hardwareId","tankhardwareId"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getByHardwareAndTankId,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getAllocatedSensorsByTank/:customerId/:tankName", {
|
|
|
|
schema: {
|
|
|
|
description: "Get allocated sensors by installationId, customerId, and tankName",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Fetch allocated sensors for a given tank",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
// installationId: { type: "string" },
|
|
|
|
customerId: { type: "string" },
|
|
|
|
tankName: { type: "string" },
|
|
|
|
},
|
|
|
|
required: [ "customerId", "tankName"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getAllocatedSensorsByTank,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.post("/api/createMasterSlaveData/:installationId", {
|
|
|
|
schema: {
|
|
|
|
description: "Create a new Master-Slave data entry under an installation",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Save Master-Slave Data",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
required: ["installationId"],
|
|
|
|
properties: {
|
|
|
|
installationId: { type: "string", description: "Installation ID" }
|
|
|
|
}
|
|
|
|
},
|
|
|
|
body: {
|
|
|
|
type: "object",
|
|
|
|
required: ["hardwareId", "masterId"],
|
|
|
|
properties: {
|
|
|
|
type: { type: "string" },
|
|
|
|
customerId: { type: "string" },
|
|
|
|
hardwareId: { type: "string" },
|
|
|
|
batchno: { type: "string" },
|
|
|
|
masterId: { type: "string" },
|
|
|
|
tankName: { type: "string" },
|
|
|
|
tankLocation: { type: "string" },
|
|
|
|
materialRecived: { type: "string" },
|
|
|
|
electricityWork: { type: "string" },
|
|
|
|
plumbingWork: { type: "string" },
|
|
|
|
loraCheck: { type: "string" },
|
|
|
|
materialRecievedPictures: {
|
|
|
|
type: "array",
|
|
|
|
items: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
url: { type: "string", description: "Image URL" }, // No format validation
|
|
|
|
uploadedAt: { type: "string", format: "date-time", description: "Upload timestamp" }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
electricityWorkPictures: {
|
|
|
|
type: "array",
|
|
|
|
items: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
url: { type: "string", description: "Image URL" }, // No format validation
|
|
|
|
uploadedAt: { type: "string", format: "date-time", description: "Upload timestamp" }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
plumbingWorkPictures: {
|
|
|
|
type: "array",
|
|
|
|
items: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
url: { type: "string", description: "Image URL" }, // No format validation
|
|
|
|
uploadedAt: { type: "string", format: "date-time", description: "Upload timestamp" }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
handler: installationController.createMasterSlaveData
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getmasterConnectedSlaveData/:connectedTo", {
|
|
|
|
schema: {
|
|
|
|
description: "Get masrter connected slave data",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get masrter connected slave data",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
connectedTo: { type: "string" },
|
|
|
|
|
|
|
|
},
|
|
|
|
required: [ "connectedTo"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.masterConnectedSlaveList,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getmasterList/:customerId/:installationId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get masrter connected slave data",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get masrter List",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: { type: "string" },
|
|
|
|
installationId: { type: "string" },
|
|
|
|
},
|
|
|
|
required: [ "customerId","installationId"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.mastrerList,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getmasterlistwithslaves/:customerId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get masrter connected slave data with full info",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get masrter connected slave data with full info",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: { type: "string" },
|
|
|
|
|
|
|
|
},
|
|
|
|
required: [ "customerId"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getMasterSlaveSummary,
|
|
|
|
});
|
|
|
|
|
|
|
|
fastify.get("/api/getAllmasterlistwithslaves/:customerId", {
|
|
|
|
schema: {
|
|
|
|
description: "Get All check masrter connected slave data with full info",
|
|
|
|
tags: ["Installation"],
|
|
|
|
summary: "Get All check masrter connected slave data with full info",
|
|
|
|
params: {
|
|
|
|
type: "object",
|
|
|
|
properties: {
|
|
|
|
customerId: { type: "string" },
|
|
|
|
|
|
|
|
},
|
|
|
|
required: [ "customerId"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handler: installationController.getIotDataByCustomer,
|
|
|
|
});
|
|
|
|
|
|
|
|
next();
|
|
|
|
|
|
|
|
}
|