233 lines
5.6 KiB
TypeScript
233 lines
5.6 KiB
TypeScript
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<void> => {
|
|
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<void> => {
|
|
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<void> => {
|
|
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<void> => {
|
|
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;
|
|
}
|
|
};
|