From ef3d927bb20ec9542888d9f3e4468effa13e4b90 Mon Sep 17 00:00:00 2001 From: cowsed Date: Thu, 30 Jul 2026 16:02:11 -0400 Subject: [PATCH] Only change hobbs time on instance edit if necessary. Don't require an access controller to set hobbs time --- .../equipment_pages/EquipmentInstanceRow.tsx | 5 ++- .../resolvers/equipmentInstanceResolver.ts | 37 ++++++++++--------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/client/src/pages/makerspace_page/equipment_pages/EquipmentInstanceRow.tsx b/client/src/pages/makerspace_page/equipment_pages/EquipmentInstanceRow.tsx index 9256b127..29dd53b7 100644 --- a/client/src/pages/makerspace_page/equipment_pages/EquipmentInstanceRow.tsx +++ b/client/src/pages/makerspace_page/equipment_pages/EquipmentInstanceRow.tsx @@ -57,7 +57,10 @@ export default function EquipmentInstanceRow(props: EquipmentInstanceRowProps) { async function handleSave() { setAllowEdit(false); - await updateInstanceHobbsTime({ variables: { id: props.instance.id, hobbsTime: hobbsTime } }) + + if (hobbsTime != props.instance.hobbsTime){ + await updateInstanceHobbsTime({ variables: { id: props.instance.id, hobbsTime: hobbsTime } }) + } await updateInstance({ variables: { id: props.instance.id, name: name, status: status } }) await updatePairing({ variables: { id: Number(props.instance.id), accessControllerID: pairedController?.id } }) } diff --git a/server/src/graphql/resolvers/equipmentInstanceResolver.ts b/server/src/graphql/resolvers/equipmentInstanceResolver.ts index 9a2ca064..bebd9fe5 100644 --- a/server/src/graphql/resolvers/equipmentInstanceResolver.ts +++ b/server/src/graphql/resolvers/equipmentInstanceResolver.ts @@ -151,20 +151,21 @@ const EquipmentInstanceResolver = { const equipment = await EquipmentRepo.getEquipmentByID(instance.equipmentID); if (!equipment) throw new GraphQLError("Instance does not have associated Machine"); - const room = await RoomRepo.getRoomByID(equipment.roomID) + const room = await RoomRepo.getRoomByID(equipment.roomID) if (!room) throw new GraphQLError("Instance does not have associated Room"); - - if (!instance.accessControllerID) throw new GraphQLError("Instance has no associated access controller") - - const accessController = await ACRepo.getAccessControllerByID(instance.accessControllerID) - if (!accessController) throw new GraphQLError("Instance has no associated access controller") - - const newInstance = await InstanceRepo.updateInstanceHobbsTime(args.id, args.hobbsTime); - ACSOrchestrator.handleSendCoreCommand(accessController.deviceID, { - hobbsTime: [{channelID: accessController.channelID, hobbsTime: args.hobbsTime}] - }) + if (instance.accessControllerID) { + const accessController = await ACRepo.getAccessControllerByID(instance.accessControllerID) + + if (accessController) { + ACSOrchestrator.handleSendCoreCommand(accessController.deviceID, { + hobbsTime: [{ channelID: accessController.channelID, hobbsTime: args.hobbsTime }] + }) + } else { + throw new GraphQLError("Could not find AccessController to update"); + } + } await createAuditLog(`{user} set hobbs time of instance '${instance?.name}' of equipment {equipment} to ${args.hobbsTime} seconds from ${instance.hobbsTime} seconds`, 'admin', room.makerspaceID ?? undefined, { id: user.id, label: getUsersFullName(user) }, { id: equipment.id, label: equipment.name }); @@ -172,13 +173,13 @@ const EquipmentInstanceResolver = { }), - /** - * Update the status field of an Equipment Instance - * @argument id ID of equipment instance to modify - * @argument status New Instance status - * @returns updated equipment instance - * @throws GraphQLError if not MENTOR or STAFF or is on hold or equipment instance does not exist - */ + /** + * Update the status field of an Equipment Instance + * @argument id ID of equipment instance to modify + * @argument status New Instance status + * @returns updated equipment instance + * @throws GraphQLError if not MENTOR or STAFF or is on hold or equipment instance does not exist + */ setInstanceStatus: async ( _parent: any, args: { id: number, status: string },