From 6e95d28e2706407659dd31b22f56de3d4d26a563 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 9 Oct 2024 14:28:44 +0800 Subject: [PATCH] Implement pausing/resuming maintenance windows --- .../MaintenanceTable/ActionsMenu/index.jsx | 25 +++++++++++++++++-- .../maintenanceWindowController.js | 8 ++++-- .../mongo/modules/maintenanceWindowModule.js | 1 + 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Client/src/Pages/Maintenance/MaintenanceTable/ActionsMenu/index.jsx b/Client/src/Pages/Maintenance/MaintenanceTable/ActionsMenu/index.jsx index 5f71cdc39..ba8082504 100644 --- a/Client/src/Pages/Maintenance/MaintenanceTable/ActionsMenu/index.jsx +++ b/Client/src/Pages/Maintenance/MaintenanceTable/ActionsMenu/index.jsx @@ -19,6 +19,7 @@ import { networkService } from "../../../../main"; import { createToast } from "../../../../Utils/toastUtils"; const ActionsMenu = ({ isAdmin, maintenanceWindow, updateCallback }) => { + maintenanceWindow; const { authToken } = useSelector((state) => state.auth); const [anchorEl, setAnchorEl] = useState(null); const [isOpen, setIsOpen] = useState(false); @@ -46,6 +47,26 @@ const ActionsMenu = ({ isAdmin, maintenanceWindow, updateCallback }) => { setIsOpen(false); }; + const handlePause = async () => { + try { + setIsLoading(true); + const data = { + active: !maintenanceWindow.active, + }; + await networkService.editMaintenanceWindow({ + authToken, + maintenanceWindowId: maintenanceWindow._id, + maintenanceWindow: data, + }); + updateCallback(); + } catch (error) { + logger.error(error); + createToast({ body: "Failed to pause maintenance window." }); + } finally { + setIsLoading(false); + } + }; + const handleEdit = () => { navigate(`/maintenance/create/${maintenanceWindow._id}`); }; @@ -117,12 +138,12 @@ const ActionsMenu = ({ isAdmin, maintenanceWindow, updateCallback }) => { { + handlePause(); closeMenu(e); e.stopPropagation(); - console.log("Pause"); }} > - Pause + {`${maintenanceWindow.active === true ? "Pause" : "Resume"}`} { return; } try { - await req.db.editMaintenanceWindowById(req.params.id, req.body); - return res.status(201).json({ + const editedMaintenanceWindow = await req.db.editMaintenanceWindowById( + req.params.id, + req.body + ); + return res.status(200).json({ success: true, msg: successMessages.MAINTENANCE_WINDOW_EDIT, + data: editedMaintenanceWindow, }); } catch (error) { error.service === undefined ? (error.service = SERVICE_NAME) : null; diff --git a/Server/db/mongo/modules/maintenanceWindowModule.js b/Server/db/mongo/modules/maintenanceWindowModule.js index 0f7f7bd0a..5eb3e1ea7 100644 --- a/Server/db/mongo/modules/maintenanceWindowModule.js +++ b/Server/db/mongo/modules/maintenanceWindowModule.js @@ -205,6 +205,7 @@ const editMaintenanceWindowById = async ( maintenanceWindowId, maintenanceWindowData ) => { + console.log(maintenanceWindowData); try { const editedMaintenanceWindow = MaintenanceWindow.findByIdAndUpdate( maintenanceWindowId,