Files
Dwinzo-Backend-V0.0/src/api-server/V1/v1Controllers/vizualizationController/v1panelController.ts

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;
}
};