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.

800 lines
27 KiB

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
});
7 months ago
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/getGsmCheckSupport/:hardwareId", {
schema: {
description: "Get GSM check details Support",
tags: ["Installation"],
summary: "Get GSM check details Support",
params: {
type: "object",
properties: {
hardwareId: { type: "string" },
},
required: ["hardwareId"],
},
},
handler: installationController.getByHardwareIdSupport,
});
fastify.get("/api/getGsmCheckSupportTeamMember/:hardwareId", {
schema: {
description: "Get GSM check details Support Team Member",
tags: ["Installation"],
summary: "Get GSM check details Support Team Member",
params: {
type: "object",
properties: {
hardwareId: { type: "string" },
},
required: ["hardwareId"],
},
},
handler: installationController.getByHardwareIdSupportTeamMember,
});
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/getLoraCheckSupport/:hardwareId/:tankhardwareId", {
schema: {
description: "Get LORA check details Support",
tags: ["Installation"],
summary: "Get LORA check details Support",
params: {
type: "object",
properties: {
hardwareId: { type: "string" },
tankhardwareId: { type : "string"},
},
required: ["hardwareId","tankhardwareId"],
},
},
handler: installationController.getByHardwareAndTankIdSupport,
});
7 months ago
fastify.get("/api/getLoraCheckSupportTeamMember/:hardwareId/:tankhardwareId", {
schema: {
description: "Get LORA check details Support Team Member",
tags: ["Installation"],
summary: "Get LORA check details Support Team Member",
params: {
type: "object",
properties: {
hardwareId: { type: "string" },
tankhardwareId: { type : "string"},
},
required: ["hardwareId","tankhardwareId"],
},
},
handler: installationController.getByHardwareAndTankIdSupportTeamMember,
});
7 months ago
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,
});
6 months ago
fastify.get("/api/getsinglemasterlistwithslaves/:customerId/:hardwareId", {
schema: {
description: "Get single check masrter connected slave data",
tags: ["Installation"],
summary: "Get single check masrter connected slave data",
params: {
type: "object",
properties: {
customerId: { type: "string" },
hardwareId: { type: "string" },
},
required: [ "customerId"],
},
},
handler: installationController.getIotDataByCustomerAndHardwareId,
});
fastify.get("/api/getraiseAticket/:customerId/:connected_to", {
schema: {
description: "Raise A Ticket for Support",
tags: ["Support"],
summary: "Raise A Ticket for Support",
params: {
type: "object",
properties: {
customerId: { type: "string" },
connected_to: { type: "string" },
},
required: [ "customerId"],
},
},
handler: installationController.raiseATicket,
});
fastify.get("/api/getraiseAticketBuildingDetails/:customerId/:connected_to/:installationId", {
schema: {
description: "Raise A Ticket for Support Building Details",
tags: ["Support"],
summary: "Raise A Ticket for Support Building Details",
params: {
type: "object",
properties: {
customerId: { type: "string" },
connected_to: { type: "string" },
installationId: { type: "string" },
},
required: [ "customerId"],
},
},
handler: installationController.raiseATicketBuildingDetails,
});
5 months ago
fastify.get("/api/getraiseAticketslave/:customerId/:connected_to/:tankHardwareId", {
schema: {
description: "Raise A Ticket particular slave for Support",
tags: ["Support"],
summary: "Raise A Ticket particular slave for Support",
params: {
type: "object",
properties: {
customerId: { type: "string" },
connected_to: { type: "string" },
tankHardwareId: { type: "string" },
},
required: [ "customerId"],
},
},
handler: installationController.raiseATicketSlave,
});
fastify.get("/api/getAllDisconnectedIsuues/:supportId", {
schema: {
description: "Get All disconnected list for Support",
tags: ["Support"],
summary: "Get All disconnected list for Support",
params: {
type: "object",
properties: {
supportId: { type: "string" },
},
required: [ "supportId"],
},
},
handler: installationController.getDisconnectedIssuesBySupportId,
});
5 months ago
fastify.get("/api/fetchthebuildingdetails/:supportId", {
schema: {
description: "Get building details for Support",
tags: ["Support"],
summary: "Get building details list for Support",
params: {
type: "object",
properties: {
supportId: { type: "string" },
},
required: [ "supportId"],
},
},
handler: installationController.getDisconnectedCustomerDetails,
});
fastify.get("/api/disconnectedCustomersbyTeamMember/:support_teamMemberId", {
schema: {
description: "Get disconnected customer details by team member ID",
tags: ["Support"],
summary: "Disconnected Customer Details by Team Member",
params: {
type: "object",
properties: {
support_teamMemberId: { type: "string" }
},
required: ["support_teamMemberId"]
}
},
handler: installationController.getDisconnectedCustomerDetailsByTeamMemberId
});
fastify.get("/api/moveisseshebuildingdetails/:supportId", {
schema: {
description: "Move the ticket Get building details move for Support",
tags: ["Support"],
summary: "Move the ticket Get building details move for Support",
params: {
type: "object",
properties: {
supportId: { type: "string" },
},
required: [ "supportId"],
},
},
handler: installationController.getDisconnectedMoveCustomerDetails,
});
fastify.route({
method: 'POST',
5 months ago
url: '/api/supportCreateTeamMember/:supportId',
schema: {
tags: ['Support'],
summary: 'Create a new team member under a support record',
params: {
type: 'object',
properties: {
supportId: { type: 'string', description: 'Support ID' },
},
required: ['supportId'],
},
body: {
type: 'object',
properties: {
name: { type: 'string' },
phone: { type: 'string' },
password: { type: 'string' },
email: { type: 'string' },
alternativePhone: { type: 'string' },
status: { type: 'string', enum: ['active', 'inactive'], default: 'active' }
},
required: [ 'name', 'phone']
},
},
handler: installationController.createTeamMemberSupport
});
fastify.get("/api/supportTeamMembersList/:supportId/", {
schema: {
description: "Get all team members for a support user",
tags: ["Support"],
summary: "Get all team members for a support user",
params: {
type: "object",
required: ["supportId"],
properties: {
supportId: { type: "string", description: "Support ID" }
}
}
},
handler: installationController.getAllTeamMembersListSupport
});
fastify.put("/api/supportUpdateTeamMember/:supportId/:teamMemberId", {
schema: {
description: "Update a support team member by ID",
tags: ["Support"],
summary: "Update a support team member by ID",
params: {
type: "object",
required: ["supportId", "teamMemberId"],
properties: {
supportId: { type: "string" },
teamMemberId: { type: "string" }
}
},
body: {
type: "object",
properties: {
name: { type: "string" },
phone: { type: "string" },
password: { type: "string" },
email: { type: "string" },
alternativePhone: { type: "string" },
status: { type: "string" }
}
}
},
handler: installationController.updateTeamMemberSupport
});
fastify.delete("/api/supportDeleteTeamMember/:supportId/:teamMemberId", {
schema: {
description: "Delete a support team member by ID",
tags: ["Support"],
summary: "Delete a support team member by ID",
params: {
type: "object",
required: ["supportId", "teamMemberId"],
properties: {
supportId: { type: "string" },
teamMemberId: { type: "string" }
}
}
},
handler: installationController.deleteTeamMemberSupport
});
5 months ago
fastify.post("/api/moveIssueToCategory/:supportId", {
schema: {
description: "Move specific issue to a categorized bucket",
tags: ["Support"],
summary: "Move disconnected issue to category and remove from issues list",
5 months ago
params: {
type: "object",
5 months ago
required: ["supportId"],
properties: {
supportId: { type: "string" },
5 months ago
},
},
body: {
type: "object",
required: ["category", "hardwareId"],
properties: {
category: { type: "string" },
hardwareId: { type: "string" },
},
},
},
handler: installationController.moveIssueToCategory
});
fastify.get('/api/support/categorizedIssues/:supportId/:category', {
schema: {
description: 'Get all issues in a particular category for a support record',
tags: ['Support'],
summary: 'Fetch issues by category',
params: {
type: 'object',
required: ['supportId', 'category'],
properties: {
supportId: { type: 'string' },
category: {
type: 'string',
enum: ['Power Outage', 'Level1', 'Pending', 'Onsite Issues'] // your allowed categories
}
}
},
},
handler: installationController.particularCategory
});
fastify.post("/api/assignTeamMemberIssueToCategory/:supportId", {
schema: {
5 months ago
description: "Assign a team member to a categorized issue",
tags: ["Support"],
5 months ago
summary: "Assign a team member to a categorized issue",
params: {
type: "object",
required: ["supportId"],
properties: {
supportId: { type: "string" },
},
},
body: {
type: "object",
5 months ago
//required: [ "support_teamMemberId", "startDate", "endDate", "category", "masterHardwareId"],
properties: {
support_teamMemberId: { type: "string" },
5 months ago
startDate: { type: "string", format: "date-time" },
endDate: { type: "string", format: "date-time" },
category: { type: "string" },
masterHardwareId: { type: "string" },
},
},
},
handler: installationController.assignCategorizeIssue
});
5 months ago
fastify.post("/api/my-categorized-issues/:support_teamMemberId", {
schema: {
description: "Get the categorized issues on particular team member",
tags: ["Support"],
summary: "Get the categorized issues on particular team member",
params: {
type: "object",
required: ["support_teamMemberId"],
properties: {
support_teamMemberId: { type: "string" },
},
},
},
handler: installationController.getCategorizedIssue
});
next();
}