ERP-node/backend-node/src/controllers/screenManagementController.ts

176 lines
5.2 KiB
TypeScript
Raw Normal View History

import { Response } from "express";
import { screenManagementService } from "../services/screenManagementService";
import { AuthenticatedRequest } from "../types/auth";
// 화면 목록 조회
export const getScreens = async (req: AuthenticatedRequest, res: Response) => {
try {
const { companyCode } = req.user as any;
const screens = await screenManagementService.getScreens(companyCode);
res.json({ success: true, data: screens });
} catch (error) {
console.error("화면 목록 조회 실패:", error);
res
.status(500)
.json({ success: false, message: "화면 목록 조회에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 화면 생성
export const createScreen = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { companyCode } = req.user as any;
const screenData = { ...req.body, companyCode };
const newScreen = await screenManagementService.createScreen(
screenData,
companyCode
);
res.status(201).json({ success: true, data: newScreen });
} catch (error) {
console.error("화면 생성 실패:", error);
res
.status(500)
.json({ success: false, message: "화면 생성에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 화면 수정
export const updateScreen = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { id } = req.params;
const { companyCode } = req.user as any;
const updateData = { ...req.body, companyCode };
const updatedScreen = await screenManagementService.updateScreen(
parseInt(id),
updateData,
companyCode
);
res.json({ success: true, data: updatedScreen });
} catch (error) {
console.error("화면 수정 실패:", error);
res
.status(500)
.json({ success: false, message: "화면 수정에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 화면 삭제
export const deleteScreen = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { id } = req.params;
const { companyCode } = req.user as any;
await screenManagementService.deleteScreen(parseInt(id), companyCode);
res.json({ success: true, message: "화면이 삭제되었습니다." });
} catch (error) {
console.error("화면 삭제 실패:", error);
res
.status(500)
.json({ success: false, message: "화면 삭제에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 테이블 목록 조회
export const getTables = async (req: AuthenticatedRequest, res: Response) => {
try {
const { companyCode } = req.user as any;
const tables = await screenManagementService.getTables(companyCode);
res.json({ success: true, data: tables });
} catch (error) {
console.error("테이블 목록 조회 실패:", error);
res
.status(500)
.json({ success: false, message: "테이블 목록 조회에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 테이블 컬럼 정보 조회
export const getTableColumns = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { tableName } = req.params;
const { companyCode } = req.user as any;
const columns = await screenManagementService.getTableColumns(
tableName,
companyCode
);
res.json({ success: true, data: columns });
} catch (error) {
console.error("테이블 컬럼 조회 실패:", error);
res
.status(500)
.json({ success: false, message: "테이블 컬럼 조회에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 레이아웃 저장
export const saveLayout = async (req: AuthenticatedRequest, res: Response) => {
try {
const { screenId } = req.params;
const { companyCode } = req.user as any;
const layoutData = req.body;
const savedLayout = await screenManagementService.saveLayout(
parseInt(screenId),
layoutData,
companyCode
);
res.json({ success: true, data: savedLayout });
} catch (error) {
console.error("레이아웃 저장 실패:", error);
res
.status(500)
.json({ success: false, message: "레이아웃 저장에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
// 레이아웃 조회
export const getLayout = async (req: AuthenticatedRequest, res: Response) => {
try {
const { screenId } = req.params;
const { companyCode } = req.user as any;
const layout = await screenManagementService.getLayout(
parseInt(screenId),
companyCode
);
res.json({ success: true, data: layout });
} catch (error) {
console.error("레이아웃 조회 실패:", error);
res
.status(500)
.json({ success: false, message: "레이아웃 조회에 실패했습니다." });
2025-09-01 11:48:12 +09:00
}
};
2025-09-01 17:57:52 +09:00
// 화면 코드 자동 생성
export const generateScreenCode = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { companyCode: paramCompanyCode } = req.params;
const { companyCode: userCompanyCode } = req.user as any;
// 사용자의 회사 코드 또는 파라미터의 회사 코드 사용
const targetCompanyCode = paramCompanyCode || userCompanyCode;
const generatedCode =
await screenManagementService.generateScreenCode(targetCompanyCode);
res.json({ success: true, data: { screenCode: generatedCode } });
} catch (error) {
console.error("화면 코드 생성 실패:", error);
res
.status(500)
.json({ success: false, message: "화면 코드 생성에 실패했습니다." });
}
};