import { Response } from "express"; import { AuthenticatedRequest } from "../../../../shared/utils/token.ts"; import { AddPanel, ClearPanel, DelPanel, LockedPanel, } from "../../../../shared/services/visualization/panelService.ts"; export const AddPanelController = async ( req: AuthenticatedRequest, res: Response ): Promise => { try { const { userId, organization } = req.user || {}; const { panelOrder, zoneId, projectId } = req.body; if (!userId || !organization || !panelOrder || !zoneId || !projectId) { res.status(400).json({ message: "All fields are required", }); return; } const result = await AddPanel({ organization, panelOrder, zoneId, projectId, userId, }); switch (result.status) { case "User not found": res.status(404).json({ message: "User not found", }); break; case "Zone not found": res.status(404).json({ message: "Zone not found", }); break; case "No new panels were created. All panels already exist": res.status(200).json({ message: "No new panels were created. All panels already exist", }); break; case "Success": res.status(200).json({ message: "Panels created successfully", panelID: result.data, }); break; default: res.status(500).json({ message: "Internal server error", }); break; } } catch (error) { res.status(500).json({ message: "Unknown error", }); return; } }; export const DeletePanelController = async ( req: AuthenticatedRequest, res: Response ): Promise => { try { const { userId, organization } = req.user || {}; const { panelName, projectId, zoneId } = req.body; if (!userId || !organization || !panelName || !projectId || !zoneId) { res.status(400).json({ message: "All fields are required", }); return; } const result = await DelPanel({ organization, panelName, zoneId, projectId, userId, }); switch (result.status) { case "User not found": res.status(404).json({ message: "User not found", }); break; case "Zone not found": res.status(404).json({ message: "Zone not found", }); break; case "Panel Already Deleted": res.status(409).json({ message: "Panel Already Deleted", }); break; case "Success": res.status(200).json({ message: "Panel deleted successfully", }); break; default: res.status(500).json({ message: "Internal server error", }); break; } } catch (error) { res.status(500).json({ message: "Unknown error", }); return; } }; export const ClearPanelController = async ( req: AuthenticatedRequest, res: Response ): Promise => { try { const { userId, organization } = req.user || {}; const { panelName, projectId, zoneId } = req.body; if (!userId || !organization || !panelName || !projectId || !zoneId) { res.status(400).json({ message: "All fields are required", }); return; } const result = await ClearPanel({ organization, panelName, zoneId, projectId, userId, }); switch (result.status) { case "User not found": res.status(404).json({ message: "User not found", }); break; case "Zone not found": res.status(404).json({ message: "Zone not found", }); break; case "Requested Panel not found": res.status(200).json({ message: "Requested Panel not found", }); break; case "No widgets to clear": res.status(200).json({ message: "No widgets to clear", }); break; case "Success": res.status(200).json({ message: "PanelWidgets cleared successfully", }); break; default: res.status(500).json({ message: "Internal server error", }); break; } } catch (error) { res.status(500).json({ message: "Unknown error", }); return; } }; export const LockedPanelController = async ( req: AuthenticatedRequest, res: Response ): Promise => { try { const { userId, organization } = req.user || {}; const { projectId, zoneId, lockedPanel } = req.body; if (!userId || !organization || !projectId || !zoneId || !lockedPanel) { res.status(400).json({ message: "All fields are required", }); return; } const result = await LockedPanel({ organization, zoneId, lockedPanel, userId, projectId, }); switch (result.status) { case "User not found": res.status(404).json({ message: "User not found", }); break; case "Zone not found": res.status(404).json({ message: "Zone not found", }); break; case "locked panel not updated": res.status(200).json({ message: "locked panel not updated", }); break; case "Success": res.status(200).json({ message: "locked panel updated successfully", }); break; default: res.status(500).json({ message: "Internal server error", }); break; } } catch (error) { res.status(500).json({ message: "Unknown error", }); return; } };